Coder Eval

面向编码 Agent 的“Playwright”:用声明式 YAML 任务在沙箱里跑真实 Agent,给出可加权评分并接入 CI 门禁。

Star 数
★ 141
最近更新
今天
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具Agent 插件 / 技能
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Python 3.13+uv 0.8+Claude Code CLINode.js 20Docker(仅容器隔离驱动需要)Shell / 命令行网络访问本地文件系统MCP Server
典型场景
要在自己业务领域的任务集上对比 Claude Code、Codex、Gemini(Antigravity)、OpenCode、Pi 哪个更靠谱的基准测试作者。
不适合
  • 只想直接跑一套固定榜单、不想自己写任务和评分标准的人
  • 不愿安装并单独配置 agent 运行时(如 Claude Code、OpenCode)的用户

这个 Agent 能做什么,适合哪些场景?

Coder Eval 是 UiPath 开源的、与 Agent 无关的编码 Agent 评估与基准框架,以 PyPI 包 coder-eval 发布,可用 pip install coder-eval 或 uv tool install coder-eval 安装,要求 Python 3.13+。它把评测定义写成 YAML 任务文件:一段 initial_prompt、一个 agent 配置、一个 sandbox 驱动,以及一组 success_criteria;运行时真正启动一个编码 Agent(Claude Code、OpenAI Codex、Google Antigravity/Gemini、OpenCode、Pi)在隔离环境里执行任务,然后对它实际产出的文件和命令打分。评分是 0.0–1.0 的连续加权分,支持 file_exists、run_command、代码相似度、LLM 评分量表等多种判据,并额外提供 skill_triggered 激活检查,用来验证某个 Skill 是否真的被触发。框架还包含 A/B 实验层、逐次工具调用的 token 与成本遥测、run.json/variant.json/task.json 报告,以及 GitHub Actions 复合 Action 和 Claude Code 插件市场两种交付形态;它不提供模型访问,Agent 运行时和模型凭证由使用者自备。

使用者先写一个 YAML 任务(task_id、description、initial_prompt、agent、sandbox、success_criteria),再用 CLI 执行 coder-eval plan tasks/hello_date.yaml 做不消耗 token 的校验,用 coder-eval run tasks/hello_date.yaml 在 tempdir 或 Docker 沙箱中启动指定 Agent 完成任务,最后用 coder-eval report runs/latest 查看结果。agent.type 是唯一与 harness 相关的字段,切换成 codex、antigravity、opencode 即可换运行时,也可以用 -D agent.type=opencode 在单次运行中覆盖。判定阶段按 success_criteria 逐条评估沙箱内实际生成的文件与命令,输出加权分数和通过/失败阈值。A/B 实验层让同一批任务并行跑不同模型、工具或提示词;遥测记录每次工具调用、token 数与成本并以流式方式输出。CI 侧通过 UiPath/coder_eval 复合 Action 安装固定版本的 CLI、执行任务、写出 JUnit XML 和 run.md,并在任一任务失败时让步骤退出码非零。在 Claude Code 中,仓库同时是插件市场,安装后提供 /coder-eval:init、/coder-eval:check-skill、/coder-eval:task、/coder-eval:lint-tasks、/coder-eval:analyze、/coder-eval:ci 六个斜杠命令来驱动同一个 CLI。

  1. 要在自己业务领域的任务集上对比 Claude Code、Codex、Gemini(Antigravity)、OpenCode、Pi 哪个更靠谱的基准测试作者。
  2. 发布 Claude Code Skill 或插件的团队,想用 skill_triggered 判据确认技能在目标 Agent 中真的会被触发。
  3. 想让技能在上游模型或提示词变化后不再悄悄失效,用定时 GitHub Actions 任务持续回归验证的 Skill 维护者。
  4. 需要把编码 Agent 的质量做成 CI 门禁、在回归时直接让构建失败的平台或基础设施团队。
  5. 做 A/B 实验比较模型 vs 模型、工具开 vs 关、提示词 A vs B,并希望拿到逐工具 token 与成本数据的研究或产品团队。
  6. 已经有一定量任务数据、想通过 Bring Your Own Dataset 把单个任务在多行数据上展开成更大评测集的团队。

如何安装或部署这个 Agent?

前置条件:Python 3.13+、uv 0.8+,以及至少一个编码 Agent 的运行时和它自己的模型凭证。开发用克隆安装:

uv sync                      # 安装框架(需要 codex / antigravity 时追加 --extra codex / --extra antigravity)
cp .env.example .env         # 设置 ANTHROPIC_API_KEY;已有 claude login 时会自动复用

只要 CLI、不克隆仓库时:

uv tool install coder-eval
uv tool install "coder-eval[codex,antigravity]"   # 带上 agent extras
coder-eval --version                              # 验证安装

作为项目依赖时用 uv add coder-eval 或 pip install coder-eval。两种 Agent 需要自行安装运行时:

brew install claude                     # Claude Code
npm install -g opencode-ai              # OpenCode

如何使用这个 Agent?

第一个完整流程(默认 claude-code Agent):

uv run coder-eval plan tasks/hello_date.yaml   # 只校验、不消耗 token
uv run coder-eval run  tasks/hello_date.yaml   # 运行第一次评测
uv run coder-eval report runs/latest           # 查看结果

一个最小任务定义 tasks/hello_world.yaml:

task_id: "hello_world"
description: "Create a Python script that prints Hello, World!"
initial_prompt: "Create hello.py that prints 'Hello, World!'"

agent:
  type: "claude-code"
  permission_mode: "acceptEdits"
  allowed_tools: ["Read", "Write", "Bash"]

sandbox:
  driver: "tempdir"
  python: {}

success_criteria:
  - type: "file_exists"
    path: "hello.py"
    description: "hello.py must be created"
  - type: "run_command"
    command: "python hello.py"
    timeout: 10
    description: "Script must execute successfully"

在 Claude Code 内安装插件前端(六个斜杠命令):

/plugin marketplace add UiPath/coder_eval
/plugin install coder-eval@coder-eval

作为 GitHub Actions 门禁(默认 claude-code Agent 需要先准备 claude CLI):

- uses: actions/setup-node@v4
  with: { node-version: '20' }
- run: npm install -g @anthropic-ai/claude-code

- uses: UiPath/coder_eval@v0
  id: eval
  with:
    args: |
      tests/tasks/**/*.yaml
      --model
      claude-sonnet-5
    env: |
      ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY }}

- if: always()
  run: cat "${{ steps.eval.outputs.run-md-path }}" >> "$GITHUB_STEP_SUMMARY"
- uses: mikepenz/action-junit-report@v5
  if: always()
  with:
    report_paths: ${{ steps.eval.outputs.junit-path }}

不要在使用 pull_request_target 且把密钥暴露给不可信 fork PR 的场景下运行该 Action。使用遥测时如需关闭,在 .env 或环境中设置 TELEMETRY_ENABLED=false。

这个 Agent 有哪些优点和局限?

优点
  • 任务、判据、评分、遥测和报告与 harness 解耦:agent.type 是唯一 Agent 相关行,换 Claude Code/Codex/Antigravity/OpenCode/Pi 不用改任务。
  • 评分是带分数与阈值的连续加权分(0.0–1.0),还提供 skill_triggered 判据,专门验证技能是否真被触发。
  • 同时提供 CLI、GitHub Actions 复合 Action(JUnit XML + run.md 输出)和 Claude Code 插件市场三种落地方式,CI 门禁开箱可用。
  • 逐次工具调用、token 数与成本的完整遥测,加上 A/B 实验层,可直接对比模型、工具开关与提示词。
  • 沙箱支持 tempdir 与 Docker 容器驱动,任务依赖可固定版本,便于复现。
局限
  • 只支持 Python 3.13+,对仍停留在旧版本 Python 的团队是硬性门槛。
  • 不提供模型访问:Agent 运行时(Claude Code、OpenCode 等)和模型凭证需自备,实际使用会产生 API 费用。
  • 默认开启匿名使用遥测,需要在 .env 或环境中显式设置 TELEMETRY_ENABLED=false 才能关闭。
  • 任务会执行 Agent 生成的代码,官方明确 tempdir 驱动不是安全边界,运行不可信任务必须改用容器驱动。
  • GitHub Action 有 8 个输入但都不是 run 的 CLI 标志位,标志和任务 glob 必须全部走 args;引用 tag 未定义的输入会被 GitHub 静默忽略,容易造成“测了别的东西却仍返回 0”。

这个 Agent 与同类方案有什么区别?

官方文档明确对比了若干替代方案:相对 SWE-bench、SkillsBench 这类固定榜单,它们跑一份标准数据集,而 Coder Eval 评的是你自己的任务,用 0.0–1.0 连续加权判据(也可通过 Bring Your Own Dataset 包一层固定数据集);相对 Harbor 这类大规模/RL harness,Harbor 面向规模化与 RL rollout,Coder Eval 面向可加权的 skill-aware 套件并在 CI 中门禁;相对 OpenAI Evals 这类模型输出评测工具,后者给模型文本打分,Coder Eval 在沙箱里跑完整 Agent 并对它产出的文件和命令打分;相对手写脚本,它自带可复现沙箱、加权判据、成本/token 遥测、A/B 实验与 CI 通过的失败门禁。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Coder Eval 当前 86 · 表现良好 命令行工具免费 + 模型费 ★ 141 今天 Python Codex · Claude Code · OpenAI API · Claude API
Loop Engineering 69 · 存在缺口 命令行工具免费 + 模型费 ★ 11k 1 天前 TypeScript Codex · Claude Code
Helmor 本地多智能体工作台 52 · 缺口较多 桌面应用免费 + 模型费 ★ 1.3k 2 个月前 TypeScript Codex · Claude Code
PRO-LONG 57 · 缺口较多 命令行工具免费 ★ 458 1 个月前 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
表现良好
86/ 100 五分制 4.3 / 5
信任安全 24/29
可靠稳定 12/14
适用触发 15/18
规范维护 16/18
有效结果 13/13
证据核验 6/8
查看各维度的扣分理由
信任安全24 / 29 · 4.1/5

证据充分:CI 工作流默认零权限、按需提升、persist-credentials: false、工具白名单限制注入面、凭据仅经 env 传递;依赖有 CVE 注释与约束、pip-audit/bandit/CodeQL。扣分项:telemetry 默认开启(仅一次性提示+可关闭,属 opt-out 而非 opt-in);执行真实 agent 代码属固有外部效应且文档已警示 tempdir 非安全边界;无显式回滚机制(仅建议 pin 版本);维护者身份不可独立验证(注册表未认证)。

可靠稳定12 / 14 · 4.3/5

README、pyproject、工作流之间高度一致(空 extras 的理由、版本号、入口点均有解释);缺失依赖在 dispatch/start 处给出明确指引而非崩溃。扣分项:失败消息质量主要来自注释断言('fail with a clear hint'),静态评审未见具体实现文本。

适用触发15 / 18 · 4.2/5

明确列出目标受众(benchmark 作者、CLI/skill 构建者)与场景(A/B、CI 门禁、skill 验证),agent.type 一字段切换 harness,'Known limits & non-goals' 与 tempdir 非安全边界警示清晰。扣分项:skill 触发判定本身的精度无法静态验证;仅支持 Python 3.13+、主要开发在 macOS,环境适配面窄(虽已声明)。

规范维护16 / 18 · 4.4/5

文档索引完整(教程、用户指南、schema、对比),安装说明覆盖 clone/CLI/CI 三路径,限制、许可证(LICENSE+NOTICE)、语义化版本与 CHANGELOG 齐备。扣分项:naming_stability 上 GitHub Action 仍处 @v0('@v1 once 1.0.0 ships'),接口有漂移风险;pre-1.0 无旧版支持,维护承诺限于最新 release 与邮箱渠道,无可见维护节奏证据。

有效结果13 / 13 · 5.0/5

输出可用性证据充分:JUnit XML、run.md、report schema 文档、evalboard;相对 SWE-bench/Harbor/OpenAI Evals 的差异化论证具体;plan 命令免 token 验证、逐工具成本遥测、按 pin 安装避免结果漂移,成本收益意识到位。

证据核验6 / 8 · 3.8/5

README 声明与 pyproject extras、工作流配置、SECURITY.md 范围多处互相印证,交叉一致性好。扣分项:性能/比较类声明指向外部站点(coder-eval.com),本仓内不可复核;部分技术判断(如 '1.0.0 already proved…'、glibc 分析)混合事实与推断,属作者自述而非可独立验证的证据。

风险与缓解建议
  • 用量遥测默认开启:若不接受,务必在 .env 或环境变量中设置 TELEMETRY_ENABLED=false。
  • tempdir 沙箱驱动不是安全边界:运行不可信任务必须使用容器(Docker)驱动;被评测的 agent 代码会真实执行。
  • GitHub Action 仍为 @v0:请 pin 到具体版本,且勿在 pull_request_target 下暴露 secrets(README 自身已警示)。
  • agent_judge 判据会以评测者凭据启动带工具权限的 Claude Code agent —— SECURITY.md 已将其列为信任边界,使用时应视为执行不可信输入。
  • 仅支持 Python 3.13+,且 publisher 未经注册表验证:企业采购前应另行核验发布方身份与供应链。
证据充分度:低 评估于 2026年9月28日 审查版本 101bb5c85c5a
查看完整评分方法 →

常见问题

它自带模型或榜单数据吗?
不带。Coder Eval 从不提供模型访问,Agent 运行时只在有 extra 时才附带(codex、antigravity),Claude Code 和 OpenCode 是需自行安装的独立 CLI;模型凭证和费用由使用者负责。它也不是固定榜单,任务与评分都由你提供,仓库只附带示例任务。
跑一次评测大概要花多少钱?
软件本身免费(Apache-2.0),成本来自 Agent 调用模型的 API 费用,框架会通过遥测记录每次工具调用、token 数和成本,便于核算。先用 coder-eval plan <task>.yaml 校验任务可以不消耗 token。
任务里的代码会被真的执行吗?会不会有安全风险?
会。任务执行的是 Agent 生成的代码,官方明确说明 tempdir 驱动不是安全边界,不可信任务必须使用 Docker 容器隔离驱动;在 GitHub Actions 中也不要在 pull_request_target 下把密钥暴露给不可信 fork PR。
怎么在不改任务的情况下换 Agent 或模型?
改 agent.type 字段即可(claude-code、codex、antigravity、opencode、pi),或在单次运行时用 -D agent.type=opencode 覆盖;任务、判据、评分、遥测和报告都保持不变。
它和 Claude Code 是什么关系?
Claude Code 既是可被评测的 Agent 之一(默认 agent.type),也是仓库提供的作者前端:本仓库同时是 Claude Code 插件市场,安装后提供 init、check-skill、task、lint-tasks、analyze、ci 六个斜杠命令来驱动同一个 coder-eval CLI,但这些命令需要额外安装 CLI 才能工作。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents