编码 Agent 评测
编码 Agent 评测用一组可自动验证的开发任务,在相同环境下比较不同 Agent、模型、提示或工具配置的效果;团队层面的 AI 提效度量则看真实研发过程中交付速度和质量的变化。代码生成量和 Token 用量都不能单独证明效果。本文讲任务集构建、指标、对照实验,以及 AI 代码生成率等效能指标的口径。
1. 面试核心
先记住这几条,再读正文- 评测任务需要可执行的验收标准,最常见的是“修复缺陷并让隐藏测试通过”。任务来自真实仓库的历史缺陷和需求,环境要能完全复现。卡 · 构建任务集
- 比较方案时固定仓库版本、依赖、模型参数和工具,只改变被比较的变量,每个任务运行多次。
- 指标同时看结果(通过率)、过程(步数、读取文件数、人工介入)和成本(Token、时间)。只有在通过率不下降的前提下,成本降低才算改进。卡 · 指标与对照
- AI 代码生成率只描述 AI 参与的程度,不等于研发效率。效能要看交付周期、缺陷率、回滚率、返工和评审修改量。卡 · 团队效能度量
2. 构建任务集
SWE-bench 的做法是一个典型参考:从开源仓库中选取已合并的修复 PR,把修复前的代码和问题描述交给 Agent,用 PR 中新增的测试验证 Agent 的修改。
构建团队内部任务集时:
- 选任务:从历史缺陷和小需求中挑选描述清楚、有测试能验证的任务,覆盖不同模块、语言和难度。
- 准备环境:固定代码版本和依赖,用容器保证每次运行环境相同,一条命令即可运行测试。
- 写验收:失败转通过的测试(验证修复)和原本通过的测试(验证没有破坏其他功能)。测试对 Agent 不可见,避免它针对测试写代码。
- 检查任务质量:人工确认问题描述足以推导出正确修复,测试不会把合理的其他实现判为失败。
- 防止污染:公开仓库的历史修复可能已在模型训练数据中,使用内部代码或较新的任务。
3. 指标与对照
| 类别 | 指标 |
|---|---|
| 结果 | 任务通过率;多次运行的 pass@k 与 pass^k |
| 回归 | 原有测试是否仍通过 |
| 过程 | 步数、读取的文件数、工具调用失败次数、是否修改了测试 |
| 成本 | Token、费用、耗时 |
| 人工 | 需要人工介入或修正的比例,评审中的修改量 |
对照实验只改变一个变量,例如“是否加入代码索引”“新旧两版仓库指令”。模型输出有随机性,每个任务至少运行数次,比较时看差异是否超过运行间的波动。
4. 团队效能度量
| 维度 | 指标 |
|---|---|
| 产出效率 | 需求交付周期、开发耗时、任务完成数 |
| 代码质量 | 缺陷率、回滚率、测试通过率、评审修改量 |
| AI 使用质量 | 一次生成成功率、人工接管率、AI 代码在最终提交中的留存比例 |
| 成本 | Token 消耗、模型调用费用、单任务成本 |
AI 代码生成率需要先定义口径:分母是全部提交的代码行还是新增代码行;AI 生成后被人修改的代码算谁的;生成后被删除、没有进入最终提交的代码不计入。即使口径清楚,它也只说明 AI 参与了多少,不说明节省了多少时间、质量是否变差。可靠的结论来自前后对比或对照组:同类需求在使用 AI 前后的交付周期和缺陷率变化。
5 · 面试题卡片
5.1 如何构建一个评测编码 Agent 的 benchmark?
出现公司:字节跳动、汇川技术
考察重点
- 可执行验收、环境复现和任务质量检查。
- 对照实验与多次运行。
参考回答
从真实仓库的历史缺陷修复和小需求中挑选任务:每个任务包含修复前的代码版本、问题描述,以及验证用的测试(修复前失败、修复后通过的测试,加上原本就通过的回归测试)。测试对 Agent 隐藏,人工检查问题描述足以推导修复,测试不会误判合理实现。
环境用容器固定代码版本和依赖,一条命令运行测试。比较方案时固定模型参数和工具,只改变被比较的变量;模型输出有随机性,每个任务运行多次,报告通过率、pass^k、步数、Token 和耗时。使用内部或较新的任务,避免公开数据已进入训练集导致结果虚高。
5.2 如何评测一个 Codebase Index 或检索方案对编码 Agent 的效果?
出现公司:快手、字节跳动
考察重点
- 检索层指标与端到端任务指标的结合。
- 在通过率不降的前提下比较成本。
相关内容:指标与对照。
参考回答
分两层。检索层:为一批任务标注需要修改或阅读的文件、函数,统计索引返回结果的 Top-K 命中率。端到端:在同一任务集上分别用有索引和无索引(例如只用 grep)的 Agent 运行多次,比较任务通过率、平均读取文件数、步数、Token、耗时和人工修正率。
只有在通过率不下降的前提下减少了读取量和成本,或者在成本相近时提高了通过率,才能说明索引有效。同时记录每次运行的轨迹和失败路线,分析索引在哪些任务上帮助或误导了 Agent,并考虑索引构建和更新的成本。
5.3 AI 代码生成率怎么统计?它能代表研发效率吗?
出现公司:快手、腾讯、字节跳动、蚂蚁、去哪儿旅行、汇川技术
考察重点
- 生成率的口径定义。
- 参与程度与效率、质量指标的区别。
相关内容:团队效能度量。
参考回答
统计前先定义口径:分母是最终提交中的新增代码行;只计算进入最终提交的 AI 生成代码,生成后被删除的不计;生成后被人大幅修改的部分单独统计或按修改比例折算。数据可以来自工具的生成记录与提交 diff 的比对。
生成率只说明 AI 参与了多少,不能代表效率:生成很多但返工多、缺陷多,效率可能反而下降。衡量提效要看同类需求的交付周期、开发耗时,以及缺陷率、回滚率、评审修改量等质量指标,最好有使用前后或对照组的比较,并把 Token 成本计入。