Coder Eval
面向编码 Agent 的“Playwright”:用声明式 YAML 任务在沙箱里跑真实 Agent,给出可加权评分并接入 CI 门禁。
- Star 数
- ★ 141
- 最近更新
- 今天
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 86/100 · 表现良好
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 要在自己业务领域的任务集上对比 Claude Code、Codex、Gemini(Antigravity)、OpenCode、Pi 哪个更靠谱的基准测试作者。
- 不适合
- 只想直接跑一套固定榜单、不想自己写任务和评分标准的人
- 不愿安装并单独配置 agent 运行时(如 Claude Code、OpenCode)的用户
- 源码审查
- 86/100 · 表现良好
这个 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。
- 要在自己业务领域的任务集上对比 Claude Code、Codex、Gemini(Antigravity)、OpenCode、Pi 哪个更靠谱的基准测试作者。
- 发布 Claude Code Skill 或插件的团队,想用 skill_triggered 判据确认技能在目标 Agent 中真的会被触发。
- 想让技能在上游模型或提示词变化后不再悄悄失效,用定时 GitHub Actions 任务持续回归验证的 Skill 维护者。
- 需要把编码 Agent 的质量做成 CI 门禁、在回归时直接让构建失败的平台或基础设施团队。
- 做 A/B 实验比较模型 vs 模型、工具开 vs 关、提示词 A vs B,并希望拿到逐工具 token 与成本数据的研究或产品团队。
- 已经有一定量任务数据、想通过 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?
查看各维度的扣分理由
证据充分:CI 工作流默认零权限、按需提升、persist-credentials: false、工具白名单限制注入面、凭据仅经 env 传递;依赖有 CVE 注释与约束、pip-audit/bandit/CodeQL。扣分项:telemetry 默认开启(仅一次性提示+可关闭,属 opt-out 而非 opt-in);执行真实 agent 代码属固有外部效应且文档已警示 tempdir 非安全边界;无显式回滚机制(仅建议 pin 版本);维护者身份不可独立验证(注册表未认证)。
README、pyproject、工作流之间高度一致(空 extras 的理由、版本号、入口点均有解释);缺失依赖在 dispatch/start 处给出明确指引而非崩溃。扣分项:失败消息质量主要来自注释断言('fail with a clear hint'),静态评审未见具体实现文本。
明确列出目标受众(benchmark 作者、CLI/skill 构建者)与场景(A/B、CI 门禁、skill 验证),agent.type 一字段切换 harness,'Known limits & non-goals' 与 tempdir 非安全边界警示清晰。扣分项:skill 触发判定本身的精度无法静态验证;仅支持 Python 3.13+、主要开发在 macOS,环境适配面窄(虽已声明)。
文档索引完整(教程、用户指南、schema、对比),安装说明覆盖 clone/CLI/CI 三路径,限制、许可证(LICENSE+NOTICE)、语义化版本与 CHANGELOG 齐备。扣分项:naming_stability 上 GitHub Action 仍处 @v0('@v1 once 1.0.0 ships'),接口有漂移风险;pre-1.0 无旧版支持,维护承诺限于最新 release 与邮箱渠道,无可见维护节奏证据。
输出可用性证据充分:JUnit XML、run.md、report schema 文档、evalboard;相对 SWE-bench/Harbor/OpenAI Evals 的差异化论证具体;plan 命令免 token 验证、逐工具成本遥测、按 pin 安装避免结果漂移,成本收益意识到位。
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 未经注册表验证:企业采购前应另行核验发布方身份与供应链。
常见问题
它自带模型或榜单数据吗?
跑一次评测大概要花多少钱?
coder-eval plan <task>.yaml 校验任务可以不消耗 token。任务里的代码会被真的执行吗?会不会有安全风险?
怎么在不改任务的情况下换 Agent 或模型?
-D agent.type=opencode 覆盖;任务、判据、评分、遥测和报告都保持不变。