用途
Agent Eval 是一个轻量级命令行工具,用于在可复现的任务上对编码智能体(Claude Code、Aider、Codex 等)进行横向对比。它把“哪个编码智能体最好”这类通常依赖主观感受的比较系统化,输出基于数据的结论。
主要能力
- YAML 任务定义:以声明式方式定义任务,每个任务指定要做什么、涉及哪些文件以及如何判定成功。任务可包含名称、描述、仓库路径、文件列表、提示词、评判标准以及用于复现的提交哈希(commit)。
- Git worktree 隔离:每次智能体运行都使用独立的 git worktree,无需 Docker。这种隔离保证可复现性,使智能体之间互不干扰,也不会破坏基础仓库。
- 指标收集:收集通过率(智能体产出的代码是否通过评判)、成本(每个任务的 API 花费,在可用时)、时间(完成所需的实际秒数)以及一致性(重复运行中的通过率,例如 3/3 = 100%)。
- 多种评判类型:支持基于代码的确定性评判(如 pytest、npm run build 等命令)、基于模式的评判(如 grep 匹配)以及基于模型的评判(LLM-as-judge)。
使用方式
- 定义任务:创建 tasks/ 目录,每个任务一个 YAML 文件。
- 运行智能体:执行命令,例如
agent-eval run --task tasks/add-retry-logic.yaml --agent claude-code --agent aider --runs 3。每次运行会从指定提交创建全新的 git worktree,将提示词交给智能体,运行评判标准,并记录通过/失败、成本和时间。 - 对比结果:生成对比报告,例如
agent-eval report --format table,以表格形式展示各智能体的通过率、成本、时间和一致性。
安装说明:需从其仓库安装 agent-eval,并在安装前审查源代码。
适用场景
- 在自己的代码库上比较编码智能体(Claude Code、Aider、Codex 等)。
- 在采用新工具或模型之前测量智能体性能。
- 当智能体更新模型或工具时运行回归检查。
- 为团队产出有数据支撑的智能体选型决策。
限制与最佳实践
- 建议从 3-5 个代表真实工作负载的任务开始,而非玩具示例。
- 每个智能体至少运行 3 次以捕捉方差,因为智能体具有非确定性。
- 在任务 YAML 中固定提交哈希,使结果跨天/周可复现。
- 每个任务至少包含一个确定性评判(测试、构建),因为 LLM 评判会引入噪声。
- 在跟踪通过率的同时跟踪成本——95% 通过率但成本高 10 倍的智能体可能并非正确选择。
- 对任务定义进行版本控制,它们是测试夹具,应作为代码对待。
链接
仓库:github.com/joaquinhuigomez/agent-eval