ExplainBench:近八成错补丁,agent 的解释仍说「修好了」

ExplainBench: Evaluating Code Explanations from Agents

Zhiyuan Pan, Sungmin Kang, Imam Nur Bani Yusuf, Abhik Roychoudhury

cs.SE

2026-07-29

coding agent 改完代码会附一段自然语言解释,开发者越来越靠它 review。ExplainBench 建在 SWE-bench Verified 上(297 题),用「解释能否让 LLM 答对关于 bug 和补丁的选择题」当解释分。发现解释质量和补丁效果是两个独立维度:效果最好的 trae-agent 解释排第四;近八成没修好的补丁,解释仍说修好了。配套的审计 agent 跑差分测试修正解释,所有 agent 分数都涨。

这篇在解决什么

coding agent(修 bug、改代码的 LLM 智能体)越来越普及,Anthropic 的数据是多数员工每天都在用 Claude Code。这些 agent 改的代码动辄几十上百行,人肉 review 越来越不现实,开发者于是转而依赖 agent 自己附的那段自然语言解释来理解改动。但解释本身可不可信,从来没人系统测过——现有基准(如 SWE-bench Verified)只测 agent 修没修好 bug,不测它说的话准不准。

这有现实后果。论文给的真实例子:Lingxi agent 解释说「补丁成功解决了 issue、完全修复」,看起来合理,补丁本身也像那么回事。但一查,补丁改的方法在 bug 复现测试里压根没被覆盖到,等于这个补丁对 bug 毫无作用。开发者要是信了解释,就踩坑了。

方法

ExplainBench 的核心直觉:一段有用的解释,应该足以让一个 LLM 据此答对关于 bug 和补丁的问题;空洞或误导的解释则答不对。于是用「答对问题的比例」当解释分,把不可量化的自然语言变成可比的数字。

基准建在 SWE-bench Verified 上(500 题里筛出 297 题,排除了 harness 本身失败、trace 过大、脆弱程序状态等)。四类问题,是 {意图,效果} × {端到端,局部} 的组合。意图(intent)指补丁该做什么(以开发者补丁为标准答案),效果(effect)指补丁实际做了什么(以 agent 补丁为准)。端到端看整体程序行为,局部看函数级。

端到端题用性质测试(property-based test,PBT)当符号表示:把复现 bug 的 PBT 的关键表达式挖空(MCQ),或问「打补丁前后这个测试结果如何」。局部题靠 Python 执行 trace(sys.settrace)抓出打补丁前后程序的「行为增量」,即第一次出现语义差异的位置,生成候选表达式,用 MMR 挑干扰项。问答 LLM 故意用较弱的 GPT-5-mini(温度 1.0),让它依赖解释而不是自己的知识;每题跑 5 次取平均,标准误 <0.01。

结果

评了 5 个 agent(OpenHands、trae-agent、Lingxi、refact、mini-SWE-agent)。

最关键的发现:解释质量和补丁效果是两个独立维度。

Agent解释分SWE-bench 效果
OpenHands0.597(#1)0.727(#4)
trae-agent0.558(#4)0.818(#1)
mini-SWE-agent0.435(#5)0.599(#5)

效果最好的 trae-agent,解释只排第四;效果排倒数的 OpenHands,解释反而最好。进一步拆,端到端分普遍高于局部分,说明 agent 更擅长讲全局逻辑而非函数级推理。

两类典型毛病。一是「过度自信」:端到端效果题里,所有 agent 平均有 79.30% 没修好的补丁,解释却被判为「测试会过」(即解释声称修好了其实没修好),各 agent 在 71.6%83.7% 之间。二是局部意图错位严重:约 35%40% 的情况 agent 对「函数该做什么」推断错了。

配套的 ExplanationAuditAgent 用差分测试(打补丁前后各跑测试)+ 调用图检查来审计解释,发现矛盾就改写。平均每条解释成本 0.05 美元,跑完所有 agent 的解释分都涨,平均 +10.9%(最弱的 mini-SWE-agent +33.5%)。

为什么重要

对做 coding agent 和 agent 评测的人,这篇开了一个被忽视的评测维度:光看「修没修好」不够,得看「它自己说的和它做的对不对得上」。这对信任至关重要,开发者越来越把 agent 当初级工程师,要求它诚实汇报。三个工程建议很落地:架构上强制要解释(OpenHands 的 finish 工具必须带 message,trae-agent 没这要求所以解释常缺失或很短);系统提示里写清解释要求;对多 agent 系统加一个独立的解释审计子 agent。

ExplanationAuditAgent 还提示了一个通用模式:用独立子 agent 跑测试去校准过度自信的解释,成本很低(0.05 美元一条)。

局限与存疑

作者承认:解释分只捕捉了行为对齐这一个维度,不评可读性、有用性这类质性方面(为了可扩展可复现做的取舍);基准限于 SWE-bench Verified 这类带回归测试、可复现失败的开源项目,但框架可扩展;trace 上限和脆弱程序状态(序列化日志的副作用)导致排除了不少题,这是管线限制。

读下来再补:79.30% 这个「过度自信」数字,依赖问答 LLM(GPT-5-mini)的判断,而问答 LLM 本身有噪声,绝对值要打折;不过用人标注交叉验证过(Cohen's Kappa 0.7,substantial agreement),趋势可信。另外 297 题是从 500 题筛出来的,筛除是否引入偏倚作者做了项目组成、难度、补丁大小的显著性检验,结论是无显著差异,这点做得扎实。

术语

原文与代码

相关论文

全部论文解读