← 最新论文
💻 computer science

ChainSWE: Benchmarking Coding Agents on Multi-Bug Software Maintenance

本文介绍了 ChainSWE,这是首个旨在评估编程智能体在共享代码库中进行连续、依赖型缺陷修复能力的基准测试,揭示了与传统的孤立缺陷修复评估相比,智能体的性能会随着链条长度的增加而显著下降。

原作者: Qirui Jin, Lingching Tung, Kenan Li, Qiyang Shi, Yushi She, Huanzhong Jia, Harrison Zhao, Kejing Xia, Zhenbang Du, Yikai Zhang, Jiaxin Pei, Zhenyu Zhang, Zhen Qi, Yuyan Duan, Wenke Lee, Zijian Jin

发布于 2026-07-07
📖 1 分钟阅读☕ 轻松阅读

原作者: Qirui Jin, Lingching Tung, Kenan Li, Qiyang Shi, Yushi She, Huanzhong Jia, Harrison Zhao, Kejing Xia, Zhenbang Du, Yikai Zhang, Jiaxin Pei, Zhenyu Zhang, Zhen Qi, Yuyan Duan, Wenke Lee, Zijian Jin

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这里是对 CHAINSWE 论文的解释,使用了通俗易懂的语言和富有创意的类比。

核心理念:从“一锤子买卖”到“长跑马拉松”

想象一下,你正在雇佣一支超级聪明的机器人机械师团队来维修一队汽车。

旧方法(当前的基准测试):
每次你给机械师一个问题时,你都会递给他们一辆全新的、崭新的汽车。他们修好了轮胎,你检查完他们的工作,然后就把他们送回家。第二天,你给了他们另一辆有着不同问题的汽车。

  • 问题所在: 这无法测试他们是否擅长在一段时间内“维护”一辆车。在现实世界中,机械师不会每天都得到一辆新车。他们在同一辆车上工作,先是修好爆胎,然后是吱吱作响的刹车,接着是引擎发出的怪声,而这一切都是针对同一辆车进行的。

新方法 (CHAINSWE):
研究人员构建了一个名为 CHAINSWE 的新测试。他们不再给机械师新车,而是给他们 一辆车以及一份记录了数年间发生的 304 个问题的清单

  • 机械师修复第一个问题。
  • 然后,在不重置车辆状态的情况下,他们必须根据第一次修复后车辆的状态来修复第二个问题。
  • 接着是第三个,以此类推。

机器人的两种失败方式

研究发现,当机器人尝试在一份相同的代码(即“汽车”)上修复一长串问题时,他们会犯两种在处理单个问题时不会犯的特定错误:

1. “过度装饰”错误 (Overshoot / 过度修正)

  • 场景: 机器人被要求修理一个漏水的水龙头。它完美地修好了水龙头。但由于太兴奋,它还顺便重新粉刷了厨房橱柜并更换了地板瓷砖,尽管没人要求这样做。
  • 后果: 稍后,一个人来修理一个坏掉的灯开关。因为机器人之前改变了地板瓷砖和橱柜,导致灯开关的说明不再适用。机器人的“多余”工作破坏了下一个任务。
  • 在论文中: 机器人修改了它不应该触碰的文件,从而破坏了未来 Bug 的测试。

2. “半途而废”错误 (Undershoot / 修补不足)

  • 场景: 机器人被要求修理一个漏水的水龙头。它意识到水龙头不仅需要换个把手,还需要换个管子和阀门才能正常工作。但它只更换了水龙头把手(因为那是记录里要求的),却留下了损坏的管子和阀门不管。
  • 后果: 水龙头看起来修好了,但其实还在漏水。稍后,一个人试图调节水压。因为机器人之前没有修理管子,水压修复的任务彻底失败了。
  • 在论文中: 机器人修复了 Bug 报告中提到的特定文件,但忘记更新那些 Bug 报告未明确提及的支持性文件,导致代码处于损坏状态,影响了下一个 Bug 的修复。

测试这些机器人时发生了什么?

研究人员使用这个新的“长跑”测试测试了 7 个不同的“AI 机械师”(语言模型)。

  • 结果: 当机器人处理单个 Bug 时(旧方法),它们表现得相当不错(成功率约为 60%)。但当它们必须处理一系列连续的 Bug 时(新方法),它们的表现下降了高达 70%
  • “连锁反应”: 随着处理的 Bug 列表越来越深,它们的表现就越差。当它们处理到连续第 3 或第 4 个 Bug 时,几乎一直在失败。
  • 原因: 机器人被自己之前的工作搞混了。它们记不住自己修改了哪些文件,或者忘记了之前的“快速修复”破坏了后续任务的基础。

“记忆力”有帮助吗?

研究人员尝试通过提供不同的记忆方式来帮助机器人:

  1. 全量记忆: 阅读他们曾经说过的一切内容的完整历史。
  2. 总结记忆: 要求机器人对之前做过的事情写一个简短的总结。
  3. 助手机器人: 使用一个小机器人负责文件编辑,而主机器人只负责下达指令。

令人惊讶的是: 这些技巧并没有起到什么大的作用。事实上,要求机器人总结其工作或使用助手往往会让情况变得更糟。机器人无法处理它们在代码中制造的“混乱”,无论它们如何努力去记忆。

总结

论文的结论是,我们目前测试 AI 编程员的方式就像是在测试**“一曲成名”的歌手**(修好一个东西就走人)。但在现实世界中,软件维护是一场马拉松,而不是短跑。

为了开发出能够真正维护软件的 AI,我们需要停止在孤立的任务上测试它们,而是开始在任务链上测试它们,让它们必须处理由自己亲手制造的、混乱且不完美的代码。目前,即使是最聪明的 AI 模型,在需要连续修复一个又一个 Bug 时,也很难保持代码库的整洁。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →