logo
2
0
WeChat Login

CodeAgent 评测工具

基于 Checklist 的 Code Agent 对比评测工具,支持同时评测多个 CLI Code Agent 并输出对比报告。

评测流程

评测题 (requirement + checklist)
    → Code Agent (CLI) 根据 requirement 生成代码
    → 评测 LLM 根据 checklist 逐项检查代码
    → 输出评测报告 (通过率、对比排名)
  • requirement:给 Code Agent 看的需求描述,Agent 据此生成代码
  • checklist:评测用的检查点列表,不展示给 Code Agent,仅在评测阶段由评测 LLM 逐项验证

目录结构

agent/
├── checklist_eval/       # Checklist 评测核心代码
│   ├── configs/          # 配置(提示词、参数等)
│   ├── data/             # 数据模型定义
│   ├── generator/        # 评测题生成、CLI 代码生成
│   ├── evaluator/        # Checklist 评测 Agent
│   ├── report/           # 结果汇总统计
│   ├── examples/         # 示例脚本和数据
│   ├── run_eval.py       # 单 Agent 评测入口
│   └── run_multi_eval.py # 多 Agent 对比评测入口
├── common/               # 公共组件(LLM Client、Logger)
├── ground_truth_eval/    # 基于 Ground Truth 的评测(独立方案)
├── .env                  # 环境变量配置
├── setup.py              # 安装配置
└── requirements.txt      # 依赖清单

一、安装依赖

cd evaluation/agent
pip install -r requirements.txt

二、Code Agent CLI 安装

支持三个 Code Agent,按需安装你要测试的即可:

AgentCLI 命令安装方式验证命令
CodeBuddy Codecodebuddy安装 CodeBuddy IDE 后自带 CLIwhich codebuddy
Claude Codeclaudenpm install -g @anthropic-ai/claude-codewhich claude
Kiro CLIkiro-cli参考 Kiro 官方文档安装which kiro-cli

安装后需要先完成各 CLI 工具自身的登录/认证,确保单独执行命令能正常工作:

# 测试 CodeBuddy
codebuddy -p "你好" -y

# 测试 Claude Code
claude -p "你好" --dangerously-skip-permissions --output-format text

# 测试 Kiro
kiro-cli chat --no-interactive --trust-all-tools "你好"

三、评测模型配置

评测阶段需要一个 LLM 来读取生成的代码、逐项判断 checklist 是否通过。

agent/.env 中配置:

# 必填:评测 LLM 的 API Key
COPILOT_API_KEY=your_api_key

# 可选:API 地址(默认为腾讯 Copilot)
COPILOT_BASE_URL=https://your-api-endpoint/v1

# 可选:模型名称(默认 claude-4.5-codewise)
COPILOT_MODEL=your_model_name

支持任意 OpenAI 兼容 API,配置示例:

服务商COPILOT_BASE_URLCOPILOT_MODELCOPILOT_API_KEY
腾讯 Copilot(默认)不用填claude-4.5-codewiseCopilot API Key
OpenAIhttps://api.openai.com/v1gpt-4osk-xxx
DeepSeekhttps://api.deepseek.com/v1deepseek-chatsk-xxx
自定义中转https://gateway.xxx.ai/v1按需填写对应 Key

注意:此 API Key 仅用于评测 LLM(判断代码质量),与 Code Agent CLI 的认证无关。

四、使用方式

基本命令

cd evaluation/agent

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents <agent列表> \
    --num_questions <题目数>

常用场景

测试单个 Agent(如 CodeBuddy),跑 1 题:

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents codebuddy_code \
    --num_questions 1

三个 Agent 对比评测,跑 5 题:

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents claude_code,codebuddy_code,kiro_cli \
    --num_questions 5

并行模式(代码生成并行 + 评测并行):

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents claude_code,codebuddy_code,kiro_cli \
    --num_questions 5 \
    --parallel --eval_concurrency 4

跳过代码生成,仅对已有代码重新评测:

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents codebuddy_code \
    --skip_code_gen

从第 5 题开始跑 3 题:

PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents codebuddy_code \
    --start_index 5 --num_questions 3

后台静默执行:

nohup env PYTHONPATH=. python -m checklist_eval.run_multi_eval \
    --questions_file checklist_eval/examples/demo_data/generated_questions_by_category.json \
    --output_dir /tmp/eval_output \
    --agents claude_code,codebuddy_code,kiro_cli \
    --num_questions 5 --parallel \
    > /tmp/eval_output/run.log 2>&1 &

全部参数

参数默认值说明
--questions_file必填评测题 JSON 文件路径
--output_dir必填输出目录
--agents全部三个Agent 列表,逗号分隔:claude_code, codebuddy_code, kiro_cli
--num_questions全部评测题目数量
--start_index0起始题目索引
--code_gen_timeout1800代码生成超时(秒)
--eval_max_iterations30评测 Agent 最大工具调用次数
--skip_code_genFalse跳过所有 Agent 的代码生成
--skip_agents_code_gen跳过指定 Agent 的代码生成,逗号分隔
--parallelFalse并行模式:多个 Agent 同时生成代码,评测 checkpoint 也并行
--eval_concurrency4并行模式下评测的并发数

五、输出结构

/tmp/eval_output/
├── codebuddy_code/
│   ├── task_000/
│   │   ├── index.html              # Agent 生成的代码
│   │   └── eval_result.json        # 逐项评测结果
│   ├── task_001/
│   │   └── ...
│   └── logs/                       # CLI 执行日志
├── claude_code/
│   └── ...
├── kiro_cli/
│   └── ...
├── logs/                           # 评测主日志
└── multi_eval_summary_*.json       # 对比汇总报告

评测指标

指标说明
pass_rate检查点通过率(核心指标)
passed通过的检查点数
failed失败的检查点数
unknown无法判定的检查点数(通常是评测 LLM 配置问题)

六、其他评测方案

方案适用场景文档
Checklist 评测端到端代码生成能力评估checklist_eval/README.md
Ground Truth 评测模型质量评估(蒸馏数据真值对比)ground_truth_eval/README.md

About

No description, topics, or website provided.
Language
Python99.2%
Shell0.8%