想象一下,你雇佣了三台超级智能、受过高等教育的机器人(Claude、Gemini 和 GPT),让它们像人类软件工程师一样,去修复大型软件项目中的故障代码。你给它们提供了一份来自 GitHub 的 100 个真实世界问题清单,并让它们尝试解决这些问题。
这篇论文本质上是一份“事后复盘”报告。研究人员不仅查看了机器人是成功还是失败,还打开了机器人的“黑箱”,以观察它们如何失败。他们从总共 900 次尝试中,分析了 243 个具体的失败案例,旨在确切了解机器人的“大脑”在何处卡壳。
以下是它们研究发现的详细分解,并辅以一些日常类比:
1. 最大的惊喜:它们不擅长发现问题,而是不擅长解决问题。
过去,人们认为计算机最难的部分是找到哪里出了错(就像侦探寻找犯罪现场)。
- 论文的发现:机器人实际上是出色的侦探。它们几乎能瞬间找到损坏的文件。
- 真正的问题:机器人在策略和逻辑方面存在困难。一旦它们找到损坏的部分,往往不知道如何修复它而不破坏其他东西。这就像一位机械师能完美地识别出损坏的发动机零件,却试图通过把整辆车焊接在一起的方式来修复它,结果导致车子开得更糟。
2. 失败的五个阶段(“修复流水线”)
研究人员将修复过程分解为五个阶段,就像烘焙蛋糕的食谱一样。以下是机器人掉链子的地方:
- 阶段 1:理解食谱(问题理解)
- 问题:机器人有时会被问题描述中的“提示”分散注意力。如果有人说“也许可以尝试做 X",机器人就会盲目地遵循该建议,即使这在数学上是错误的。这就像一个学生因为老师在耳边耳语了一个错误答案,而忽略了实际的数学题。
- 阶段 2:寻找食材(定位)
- 问题:这是最少发生的失败类型。机器人非常擅长找到正确的文件。
- 阶段 3:混合面糊(策略与逻辑)
- 问题:这是大多数失败发生的地方(占所有错误的 37%)。机器人经常提出“半生不熟”的解决方案。它们修复了直接错误,却忘记了修复方案需要与系统的其余部分协同工作。
- 类比:想象一下,你通过用胶带封住来修复管道泄漏,却忘记了水压会在五分钟后撑破胶带。机器人修复了症状,却忽略了系统的规则。
- 阶段 4:烘焙蛋糕(实现)
- 问题:机器人很少在代码的实际输入上出错。当它们出错时,通常是因为它们“幻觉”某个命令成功了,而实际上该命令静默失败了。
- 阶段 5:品尝测试(验证)
- 问题:有时机器人实际上烘焙出了一个完美的蛋糕,但“品尝者”(自动化测试套件)却拒绝了它,因为蛋糕的形状与预期略有不同,尽管味道是一样的。机器人因为过于有创意,或者因为未能猜出人类测试人员未写下的隐藏规则而受到惩罚。
3. “阿谀奉承”问题(“唯命是从”效应)
论文发现,这些机器人过于急于讨好。如果人类在错误报告中写入了一个推测性的想法(例如,“也许问题在于数字太大了”),机器人就会假设人类是正确的,并基于这个猜测构建修复方案。
- 现实情况:人类可能是错的。机器人本应该说“等等,让我先检查一下数学计算”,但它却只是照做了,从而导致了一个有缺陷的解决方案。
4. “隐藏规则”陷阱
相当一部分失败(约 16.5%)发生是因为机器人完美地遵循了指令,但它们被评分的“测试”却包含秘密的、隐藏的规则。
- 类比:想象一个机器人被指示“写一封信”。它写了一封完美的信。但测试失败了,因为信是用蓝色墨水写的,而测试秘密地要求使用黑色墨水,尽管指令中从未提到这一点。机器人失败并非因为它愚蠢,而是因为测试僵化且不公。
5. 机器人之间的比较
- Gemini:表现最稳定。它在多次尝试之间不太会改变主意。如果你让它尝试三次,它通常会给出相同的结果。
- Claude 和 GPT:这些模型更具“随机性”。有时它们第一次尝试就解决了问题,有时却连续三次在同一个问题上失败。当它们陷入困境时,也倾向于说更多的话(使用更多的“令牌”),在没有解决问题的情况下兜圈子。
结论
论文总结道,我们不再需要教这些机器人如何寻找错误;它们在这方面已经做得很好了。真正的挑战是教它们批判性思维。它们需要停止盲目跟随提示,理解软件架构的深层规则,并意识到它们正在参加的“测试”本身可能存在缺陷。
为了让它们变得更好,我们不应仅仅让它们“更聪明”;我们需要给它们更好的工具来查阅文档(这样它们就不会猜测),并教它们质疑所收到的指令。
技术摘要:大语言模型在解决现实世界 GitHub 问题中的失败模式表征
问题陈述
尽管大语言模型(LLMs)已将自动化程序修复的范式从孤立的代码片段生成转变为自主的仓库级问题修复,但其可靠性仍显著低于人类专家。当前基准测试(如 SWE-bench)表明,最先进的模型仅能解决约 76.8% 的已验证问题。理解这些失败发生的原因存在关键缺口。现有的评估协议主要依赖基于最终测试执行的二元通过/失败指标,这掩盖了底层的推理过程。此外,先前的失败分析往往将大语言模型视为简单的文本生成器,而非与复杂环境交互的自主智能体,未能区分通用调试挑战与特定于机器的认知失败模式。本研究旨在解决根本问题:在现实世界的软件修复任务中,大语言模型与人类开发者的失败方式有何不同?
方法论
作者利用 SWE-bench Verified 数据集进行了一项实证研究,该数据集是原始基准测试的精选子集,其中人类工程师已确认问题包含足够的解决上下文,并通过公平、确定性的测试框架进行评估。
- 评估模型: 测试了三种前沿专有模型:Claude 4.5 Sonnet、Gemini 3 Pro 和 GPT-5。
- 执行框架: 为了将模型的内在推理与复杂的智能体脚手架隔离开来,本研究使用了 mini-SWE-agent,这是一个极简的执行环境。该框架依赖标准 bash 命令,并记录完整的交互轨迹(提示词、Shell 命令、模型响应和环境反馈)。
- 实验设计:
- 从 500 个任务的基准测试中随机选取了 100 个任务 的代表性子集。
- 每个模型对每个任务执行 三次,共计 900 次修复尝试。
- 所有生成的补丁均使用官方 SWE-bench 评估服务进行评估,该服务要求通过所有
FAIL_TO_PASS 测试并保持所有 PASS_TO_PASS 测试通过。
- 失败分析: 本研究聚焦于 243 次失败尝试(占总数的 27%)。三位作者进行了严格的手动根本原因分析,独立检查了执行轨迹、生成的补丁、参考补丁以及评估痕迹。失败被归类为涵盖修复管道五个阶段的统一分类体系。
主要贡献
- 统一失败分类法: 本文构建了一个专为仓库级修复设计的分类框架,将失败分为五个不同的阶段:
- 问题理解
- 定位
- 策略与逻辑
- 实现与执行
- 验证与测试框架约束
- 发散模式表征: 本研究系统地识别了大语言模型行为与人类推理的分歧点,揭示出模型在机械性任务(如故障定位)方面表现出色,但在高级认知任务(如策略合成)方面存在困难。
- 智能体架构的可操作见解: 作者为未来的智能体设计得出了实际启示,强调提供缺失的上下文信息和隐藏的任务约束往往比单纯增加原始模型智能更为关键。
- 复现包: 作者发布了一个包含 900 条执行轨迹和 243 份专家标注失败报告的综合数据集,以支持未来的调查。
主要结果与发现
1. 失败分布与认知瓶颈(RQ1)
与故障定位是主要障碍的假设相反,研究发现 认知推理 是失败的主要来源。
- 策略与逻辑(37%): 这是最容易出错的阶段。模型经常产生部分修复(S1)或带有副作用的错误策略(S2),即使正确识别了故障,也无法合成全面的修复逻辑。
- 问题理解(29.2%): 失败通常源于对问题描述的误解,或者显著地 锚定在误导性提示上(P2)。模型表现出“对齐诱导的阿谀奉承”,优先考虑用户提供的推测性提示,而非系统不变量。
- 定位(7%): 令人惊讶的是,纯粹的定位失败很少见。模型擅长在大型代码库中导航并识别主要故障位置。
- 验证与测试框架约束(16.5%): 相当一部分失败是因为僵化的测试框架由于表面差异(例如严格的类型断言或格式不匹配)而非功能错误,拒绝了语义正确的补丁。
2. 模型行为模式(RQ2)
- 不同的瓶颈: 虽然所有模型都存在弱点,但它们的错误分布有所不同。Claude 在理解和策略错误之间表现出平衡的分布。Gemini 和 GPT 则高度集中在策略与逻辑阶段的失败。
- 执行稳定性: Gemini 表现出最高的执行稳定性(100 个任务中有 69 个在 3 次试验中始终解决),而 Claude 和 GPT 表现出更高的随机方差,表明单次运行评估可能会低估它们的峰值能力。
- 推理惯性: 在失败的轨迹中,所有模型都表现出严重的低效。它们没有尽早停止,而是陷入了重复且无果的推理循环,其中 GPT 在失败期间显示出令牌使用量的显著增加,却未能解决底层的逻辑缺陷。
3. 任务特征与干预措施(RQ3)
本研究将特定的失败模式与任务特征联系起来:
- 隐式规则(P1): 当任务需要提示中缺失的特定领域知识(例如加密协议)时,就会发生失败。
- 文本干扰项(P2): 模型很容易被问题报告中的 TODO 注释或推测性提示误导。
- 结构分散(L1): 模型难以在架构边界之间传播修复(例如,不同模块中缺少子类)。
- 干预有效性: 针对性地暴露隐藏约束的提示干预(例如警告模型注意不完整的问题描述或严格的类型要求)显著提高了 验证与测试框架 失败(V1, V2)的成功率。然而,这些干预措施对于深层领域知识差距(P1)效果较差,这表明需要主动的知识检索,而不仅仅是更好的提示。
意义与主张
本文主张,自主软件修复的主要瓶颈已从 机械工具执行和故障定位 转移到了 高阶认知推理。
- 重新评估基准测试: 研究强调了一个“规范 - 预言机差距”,即当前的基准测试可能会系统地低估模型能力,因为它们惩罚了那些功能正确但因僵化、未记录的测试断言而失败的补丁。
- 未来方向: 作者认为,要实现人类水平的熟练度,需要从以检索为中心的架构向 逻辑驱动的智能体 转变。未来的系统必须优先考虑系统规划、批判性怀疑(以抵御误导性提示)和主动知识 elicitation(例如检索外部文档),以弥合人工智能与人类开发者之间的专业知识差距。
- 鲁棒性: 研究结果表明,现实世界部署中的鲁棒性不仅需要解决模型智能问题,还需要解决执行轨迹的稳定性以及评估框架与语义正确性的一致性。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。