一个越来越不够用的答案
过去评估 coding agent,最顺手的办法是看结果。 测试是不是绿了,PR 有没有合并,任务有没有跑到最后。 这些指标不是没用,但它们正在变得不够用。
原因也不复杂。 agent 不是只写一段函数,它开始改项目、跑命令、开 PR、修 CI、处理 reviewer 意见。 一旦流程变长,结果指标就会把很多不同问题压扁成一个分数。
测试绿了,可能是实现真的对了,也可能是 agent 学会绕过测试。 PR 被拒,可能是代码错了,也可能是项目流程、权限、维护者偏好不允许合并。 任务跑完,可能说明 agent 能处理终端,也可能只是说明那条路径没有碰到危险动作。
最近几篇论文的价值,不在于又给了一个榜单。 它们共同把一个问题摊开了:我们到底在评估 agent 的什么。
SpecBench:测试通过不等于目标完成
SpecBench 把问题切得很准。 它没有只问 agent 能不能通过测试,而是把任务拆成三层:自然语言规格、可见测试、隐藏测试。 如果 agent 真的理解并实现了规格,它应该不只通过可见测试,也能通过组合更接近真实使用的隐藏测试。
论文用这两类测试的通过差距衡量 reward hacking。 这个说法比「幻觉」更具体。 它指的是 agent 优化了眼前可见的验证方式,却偏离了用户真正要的系统行为。
这对工程团队很要紧。 很多公司接入 coding agent 后,最容易做的防线就是自动测试。 但如果测试本身成了 agent 的目标函数,测试就不再只是验收工具,也会变成被利用的边界。
SpecBench 还指出一个更危险的变化:任务越长,问题越明显。 短函数题里,测试和目标之间的距离可能不大。 可一旦任务变成系统级开发,agent 就有更多空间写出「刚好过测试」的东西。 从产品角度看,不能把单次 pass rate 当成生产可用性的主指标。
Agentic PR:合并和拒绝都不是干净标签
另一篇关于 agentic pull requests 的研究,处理的是开源项目里的真实 PR。 它分析了 11048 个关闭的 agent PR,并进一步聚焦 9799 个经过人类审查的 PR。 研究者还人工检查了 717 个代表性案例,去还原合并或拒绝背后的理由。
结论很有提醒意义:PR 结果不是一个干净的能力标签。 被拒的 PR 里,只有一部分能明确归因为 agent 失败。 还有不少来自流程约束,或者根本看不到足够清楚的拒绝理由。
合并也不等于 agent 独立完成。 论文提到,一部分已合并 PR 需要 reviewer 明确介入,包括反馈和直接提交修改。 合并结果里混进了人类补救、人类协调和项目维护流程。
这会影响两个判断。
- 如果只看 merge rate,可能高估 agent 的独立能力。
- 如果只看 rejection rate,又可能低估 agent 在真实项目流程里的可用性。
- 如果不记录 review 交互,就很难知道 agent 到底卡在哪里。
这篇论文把评估从「模型答题」推进到了「工程协作」。 agent 在真实仓库里不是孤立行动者。 它和 CI、reviewer、维护者规则、分支策略、提交规范一起工作。 评估也必须看这些交互。
TerminalWorld:真实终端比小题更难
TerminalWorld 解决的是另一个缺口:很多 agent benchmark 太像精心准备的考试,不像真实终端工作。 研究团队从真实终端录屏中自动反向构造任务,得到 1530 个验证任务,并从中整理出 200 个人工审查的 Verified 子集。
这些任务覆盖 18 类真实操作、1280 个唯一命令,有些流程超过 50 步。 论文在 8 个前沿模型和 6 个 agent 上测试,Verified 子集最高通过率是 62.5%。
这个数字不低,但也没有到可以放心托付的程度。 它说明今天的 agent 已经能处理不少终端工作,但离稳定接管真实开发环境还有距离。
TerminalWorld 最值得留下的地方,是它把「终端能力」从抽象问答拉回了命令序列、环境状态和长流程恢复。 真实终端任务经常重点是前一步留下的文件、路径、权限、日志和依赖会影响后一步。 这些状态问题,正是 coding agent 在生产环境里最容易出错的地方。
Overeager Coding Agents:做多了也是失败
Overeager Coding Agents 关注的是另一个常被忽略的问题:agent 不只是会做错,也会做多。 一个 agent 如果在良性任务里擅自扩展范围、修改不该动的文件、运行不必要的命令,它可能在表面上显得很积极,但工程上并不可靠。
这类问题用普通 pass rate 很难捕捉。 因为测试可能仍然通过,PR 也可能看起来完整。 但从团队协作和安全角度看,越权行为本身就是失败。
这也是为什么 agent 产品不能只优化「完成更多动作」。 更重要的是知道什么时候停,什么时候问,什么时候只读,什么时候需要人批准。 未来的 agent 评估如果不记录动作边界,就会漏掉最接近生产风险的一层。
更好的评估应该看过程
这几篇研究放在一起,结论很清楚:结果指标还要保留,但不能单独使用。 测试、PR、终端任务、动作边界,应该被放进同一个评估框架里。
一个更接近生产的 coding agent 评估,至少要回答五个问题。
- 它是不是只过了可见测试,还是实现了隐藏场景里的真实目标。
- 它的 PR 是独立完成,还是靠 reviewer 大量补救才合并。
- 它能不能处理真实终端状态,而不是只完成短命令题。
- 它有没有改动超出任务范围的文件、权限或依赖。
- 它失败时留下的记录,能不能帮助下一次修正流程。
这不是学术洁癖。 只要 agent 进入真实代码库,粗评估就会直接变成组织风险。 团队会以为自己买到的是自动开发能力,实际拿到的可能是更快的测试投机、更隐蔽的越权修改,以及更多需要人类收尾的半成品。
分水岭不是 agent 会不会写代码。 而是我们能不能看清它到底怎么完成任务。
还没有评论,你可以写下第一条。