这个 GitHub 爆火的 Agent Eval 到底能干嘛?实测来了
每次选编程智能体都靠感觉?这个工具终结了
“Claude Code 和 Aider 哪个更好用?”
如果你也问过这个问题,你一定得到了各种回答:有人吹 Aider 便宜,有人夸 Claude Code 聪明,还有人拿 Benchmark 排行榜说事。
但没有人问过:在你的代码库上,针对你实际要做的任务,到底哪个更靠谱?
这就是 agent-eval 要解决的问题——一个轻量级 CLI 工具,让你用真实任务对编程智能体做正面比对,产出可复现的通过率、成本、时间和一致性数据。
这个项目被收录在 affaan-m/everything-claude-code 仓库(⭐ 16.5 万星),是 ECC 生态中的核心 Skill 之一。
核心理念:用数据说话,不用感觉
agent-eval 的设计哲学很简单:
每次”哪个编程智能体最好?“的对比往往靠感觉(vibes)——这个工具让它系统化。
它通过三步完成智能体对比:
- 定义任务:用 YAML 声明式描述你要做什么、改哪些文件、如何判断成功
- 运行智能体:在隔离的 git worktree 中让不同智能体执行同一个任务
- 对比报告:自动生成通过率、成本、时间、一致性等指标的表格报告
核心功能
| 功能 | 说明 |
|---|---|
| YAML 任务定义 | 声明式定义任务:提示词、目标文件、评判标准、锁定 commit |
| Git Worktree 隔离 | 每个智能体运行在独立 worktree,互不干扰,无需 Docker |
| 三种评判类型 | 代码级(pytest/build)、模式级(grep)、模型级(LLM 当裁判) |
| 多维指标 | 通过率、API 成本、耗时、多次运行的一致性 |
| 对比报告 | 一键生成表格格式的多智能体对比报告 |
快速上手
第一步:定义任务
创建一个 YAML 文件,描述你要智能体完成的任务:
name: add-retry-logicdescription: 为 HTTP 客户端添加指数退避重试repo: ./my-projectfiles: - src/http_client.pyprompt: | 为所有 HTTP 请求添加重试逻辑,使用指数退避。 最多 3 次重试。初始延迟 1 秒,最大延迟 30 秒。judge: - type: pytest command: pytest tests/test_http_client.py -v - type: grep pattern: "exponential_backoff|retry" files: src/http_client.pycommit: "abc1234"这个任务要求智能体为 HTTP 客户端添加重试逻辑,用 pytest 测试验证功能,用 grep 检查代码模式。
第二步:运行对比
agent-eval run --task tasks/add-retry-logic.yaml --agent claude-code --agent aider --runs 3这会让 claude-code 和 aider 各跑 3 次同一个任务。每次运行都会:
- 从指定的 commit 创建全新 git worktree
- 把提示词交给智能体
- 运行评判标准
- 记录通过/失败、成本和时间
第三步:查看报告
agent-eval report --format table输出类似这样的对比表格:
任务: add-retry-logic(各 3 次运行)═══════════════════════════════════════════════════ 智能体 通过率 成本 时间 一致性─────────────────────────────────────────────────── claude-code 3/3 $0.12 45s 100% aider 2/3 $0.08 38s 67%═══════════════════════════════════════════════════一眼就能看出:Claude Code 通过率 100% 但贵一些,Aider 便宜但偶尔会翻车。
三种评判方式
1. 代码级评判(确定性)
跑测试、跑构建——结果非黑即白:
judge: - type: pytest command: pytest tests/ -v - type: command command: npm run build2. 模式级评判
检查代码中是否包含特定模式:
judge: - type: grep pattern: "class.*Retry" files: src/**/*.py3. 模型级评判(LLM 当裁判)
让 LLM 判断实现质量:
judge: - type: llm prompt: | 这个实现是否正确处理了指数退避? 检查项:最大重试次数、递增延迟、抖动。适用场景
✅ 适合:
- 团队选型:在引入新编程智能体前做客观评估
- 模型回归:智能体更新模型后,验证性能是否下降
- 成本优化:找到”够用且便宜”的智能体组合
- 技术决策:用数据而非感觉支持选型决策
❌ 不适合:
- 一次性对比:如果你只对比一次,手动试就行
- 非编程任务:这个工具专为代码任务设计
- 没有测试的项目:没有评判标准的对比没意义
最佳实践
原作者给出了 6 条黄金法则:
- 从 3-5 个真实任务开始,别用玩具示例
- 每个智能体至少跑 3 次,因为智能体是非确定性的
- 锁定 commit,确保结果跨天可复现
- 至少包含一个确定性评判(测试/构建),LLM 评判会引入噪声
- 成本与通过率一起看——通过率高 5% 但贵 10 倍未必划算
- 任务定义也要版本管理——它们就是测试夹具
个人评价
推荐指数:⭐⭐⭐⭐☆(4.5/5)
Agent Eval 解决了一个真实痛点——编程智能体选型缺乏客观数据。它的设计优雅:用 YAML 定义任务、用 git worktree 做隔离、用多维度指标做对比。不需要 Docker、不需要复杂的评测框架,几分钟就能上手。
扣分的地方:
- 依赖 git worktree,对不熟悉 git 的用户有一定门槛
- 成本统计依赖智能体的 API 计费能力,不是所有智能体都支持
- 项目本身还比较年轻,生态还在建设中
总结:如果你在使用多个编程智能体(或者正在考虑切换),Agent Eval 是最轻量、最直接的对比工具。告别”凭感觉选”,用数据说话。
相关链接
- 📦 原始项目:joaquinhuigomez/agent-eval
- 🌟 收录仓库:affaan-m/everything-claude-code(⭐ 16.5 万星)
- 📖 中文搬运版:awesome-ai-agent-skills-zh
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!