Agent 代码测试
- 作者仓库星标 188,749
- 作者仓库 ECC
Agent Eval 技能
一个轻量级 CLI 工具,用于在可复现的任务上对编码代理进行头对头比较。每个“哪个编码代理最好?”的比较都基于感觉——本工具将其系统化。
何时使用
- 在你自己的代码库上比较编码代理(Claude Code、Aider、Codex 等)
- 在采用新工具或模型之前衡量代理性能
- 当代理更新其模型或工具时运行回归检查
- 为团队做出数据支持的代理选择决策
安装
# pinned to v0.1.0 — latest stable commit
pip install git+https://github.com/joaquinhuigomez/agent-eval.git@6d062a2f5cda6ea443bf5d458d361892c04e749b
核心概念
YAML 任务定义
以声明方式定义任务。每个任务指定要做什么、要修改哪些文件以及如何判断成功:
name: add-retry-logic
description: Add exponential backoff retry to the HTTP client
repo: ./my-project
files:
- src/http_client.py
prompt: |
Add retry logic with exponential backoff to all HTTP requests.
Max 3 retries. Initial delay 1s, max delay 30s.
judge:
- type: pytest
command: pytest tests/test_http_client.py -v
- type: grep
pattern: "exponential_backoff|retry"
files: src/http_client.py
commit: "abc1234" # pin to specific commit for reproducibility
Git 工作树隔离
每个代理运行都获得自己的 git 工作树——无需 Docker。这提供了可复现的隔离,使得代理之间不会相互干扰或损坏基础仓库。
收集的指标
| 指标 | 衡量内容 |
|---|---|
| 通过率 | 代理生成的代码是否通过了判断? |
| 成本 | 每个任务的 API 花费(如果可用) |
| 时间 | 完成所需的挂钟秒数 |
| 一致性 | 跨重复运行的通过率(例如,3/3 = 100%) |
工作流程
1. 定义任务
创建一个 tasks/ 目录,其中包含 YAML 文件,每个任务一个文件:
mkdir tasks
# Write task definitions (see template above)
2. 运行代理
针对你的任务执行代理:
agent-eval run --task tasks/add-retry-logic.yaml --agent claude-code --agent aider --runs 3
每次运行:
- 从指定的提交创建一个新的 git 工作树
- 将提示交给代理
- 运行判断标准
- 记录通过/失败、成本和时间
3. 比较结果
生成比较报告:
agent-eval report --format table
Task: add-retry-logic (3 runs each)
┌──────────────┬───────────┬────────┬────────┬─────────────┐
│ Agent │ Pass Rate │ Cost │ Time │ Consistency │
├──────────────┼───────────┼────────┼────────┼─────────────┤
│ claude-code │ 3/3 │ $0.12 │ 45s │ 100% │
│ aider │ 2/3 │ $0.08 │ 38s │ 67% │
└──────────────┴───────────┴────────┴────────┴─────────────┘
判断类型
基于代码(确定性)
judge:
- type: pytest
command: pytest tests/ -v
- type: command
command: npm run build
基于模式
judge:
- type: grep
pattern: "class.*Retry"
files: src/**/*.py
基于模型(LLM 作为判断器)
judge:
- type: llm
prompt: |
Does this implementation correctly handle exponential backoff?
Check for: max retries, increasing delays, jitter.
最佳实践
- 从 3-5 个任务开始,这些任务代表你的真实工作负载,而非玩具示例
- 每个代理至少运行 3 次试验以捕捉方差——代理是非确定性的
- 在你的任务 YAML 中固定提交,以便结果在数天/数周内可复现
- 每个任务至少包含一个确定性判断器(测试、构建)——LLM 判断器会增加噪音
- 跟踪成本与通过率——一个通过率 95% 但成本高出 10 倍的代理可能不是正确的选择
- 对你的任务定义进行版本控制——它们是测试夹具,应将其视为代码
链接
- 流狐分类
- 文档
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @affaan-m · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- Docker
- 底层运行要求
- Docker
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 何时使用
在你自己的代码库上比较编码代理(Claude Code、Aider、Codex 等) 在采用新工具或模型之前衡量代理性能 当代理更新其模型或工具时运行回归检查
安装
安装
核心概念
核心概念
YAML 任务定义
以声明方式定义任务。每个任务指定要做什么、要修改哪些文件以及如何判断成功:
Git 工作树隔离
每个代理运行都获得自己的 git 工作树——无需 Docker。这提供了可复现的隔离,使得代理之间不会相互干扰或损坏基础仓库。
收集的指标
指标 · 衡量内容 通过率 · 代理生成的代码是否通过了判断? 成本 · 每个任务的 API 花费(如果可用)
# Agent Eval 技能
一个轻量级 CLI 工具,用于在可复现的任务上对编码代理进行头对头比较。每个“哪个编码代理最好?”的比较都基于感觉——本工具将其系统化。
## 何时使用
* 在你自己的代码库上比较编码代理(Claude Code、Aider、Codex 等)
* 在采用新工具或模型之前衡量代理性能
* 当代理更新其模型或工具时运行回归检查
* 为团队做出数据支持的代理选择决策
## 安装
```bash
# pinned to v0.1.0 — latest stable commit
pip install git+https://github.com/joaquinhuigomez/agent-eval.git@6d062a2f5cda6ea443bf5d458d361892c04e749b
```
## 核心概念
### YAML 任务定义
以声明方式定义任务。每个任务指定要做什么、要修改哪些文件以及如何判断成功:
```yaml
name: add-retry-logic
description: Add exponential backoff retry to the HTTP client
repo: ./my-project
files:
- src/http_client.py
prompt: |
Add retry logic with exponential backoff to all HTTP requests.
Max 3 retries. Initial delay 1s, max delay 30s.
judge:
- type: pytest
command: pytest tests/test_http_client.py -v
- type: grep
pattern: "exponential_backoff|retry"
files: src/http_client.py
commit: "abc1234" # pin to specific commit for reproducibility
```
### Git 工作树隔离
每个代理运行都获得自己的 git 工作树——无需 Docker。这提供了可复现的隔离,使得代理之间不会相互干扰或损坏基础仓库。
### 收集的指标
| 指标 | 衡量内容 |
|--------|-----------------|
| 通过率 | 代理生成的代码是否通过了判断? |
| 成本 | 每个任务的 API 花费(如果可用) |
| 时间 | 完成所需的挂钟秒数 |
| 一致性 | 跨重复运行的通过率(例如,3/3 = 100%) |
## 工作流程
### 1. 定义任务
创建一个 `tasks/` 目录,其中包含 YAML 文件,每个任务一个文件:
```bash
mkdir tasks
# Write task definitions (see template above)
```
### 2. 运行代理
针对你的任务执行代理:
```bash
agent-eval run --task tasks/add-retry-logic.yaml --agent claude-code --agent aider --runs 3
```
每次运行:
1. 从指定的提交创建一个新的 git 工作树
2. 将提示交给代理
3. 运行判断标准
4. 记录通过/失败、成本和时间
### 3. 比较结果
生成比较报告:
```bash
agent-eval report --format table
```
```
Task: add-retry-logic (3 runs each)
┌──────────────┬───────────┬────────┬────────┬─────────────┐
│ Agent │ Pass Rate │ Cost │ Time │ Consistency │
├──────────────┼───────────┼────────┼────────┼─────────────┤
… 证据边界与执行链路
作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> 何时使用 → 安装 → 核心概念 → YAML 任务定义 → Git 工作树隔离 → 收集的指标
要点 -> 从 3-5 个任务开始 · 每个代理至少运行 3 次试验 · 在你的任务 YAML 中固定提交 · 每个任务至少包含一个确定性判断器 · 跟踪成本与通过率 · 对你的任务定义进行版本控制
文件/命令 -> tasks/ · github.com/joaquinhuigomez/agent-eval.git · ./my-project · src/httpclient.py · tests/testhttpclient.py · 3/3 · tasks/add-retry-logic.yaml · 2/3
内容 SHA-256 -> a065dbb4d560
原文结构
适用与边界
原文中的明确线索
tasks/、github.com/joaquinhuigomez/agent-eval.git、./my-project、src/httpclient.py、tests/testhttpclient.py、3/3、tasks/add-retry-logic.yaml、2/3