Coding Agents Don't Know When to Act
本文介绍了 FixedBench,以证明最先进的代码代理存在“行动偏见”,即由于未能识别何时不采取行动才是恰当的应对方式,它们经常为已解决的问题提出不必要的代码更改。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
以下是论文《编码代理不知何时该行动》的通俗解读,辅以日常类比。
核心问题:过于热心的修理工
想象你雇佣了一位非常聪明、自动化的修理工来修理家里的东西。你给他一份“损坏”物品清单(错误报告)。他的任务是查看清单,找到损坏的物品并将其修复。
这篇论文研究的问题是:当修理工收到清单上实际上已经不再损坏的项目时会发生什么。也许邻居昨天已经修好了它,或者这原本就是一个误报。
一个聪明的修理工应该查看该物品,意识到“哦,这已经完美了”,然后说:“我就不动它了。”
然而,研究人员发现,当前的 AI 编码代理就像过于热心、神经质的修理工。即使他们看到一段代码已经完美运行,他们仍感到强烈的冲动去触碰它、微调它或“改进”它。他们无法抑制行动的冲动,即使什么都不做才是最佳选择。
实验:“已修复”测试
为了证明这一点,研究人员创建了一个名为FIXEDBENCH的特殊测试。
- 设置:他们选取了 200 个现实世界的编码任务,这些问题已经由人类解决。代码是完美的。
- 陷阱:他们将这些任务交给了五个不同的顶级 AI 编码代理。
- 目标:代理们本应查看代码,意识到它已经修复,并提交一个“空”补丁(意为:“无需更改”)。
- 结果:代理们惨败。它们没有说“一切正常”,而是在 35% 到 65% 的案例中继续更改了代码。它们添加了不必要的更改,制造了“技术债务”(即不需要的混乱代码),仅仅因为它们觉得必须做点什么。
为什么会发生这种情况?(“行动偏见”)
论文将这种现象称为行动偏见。
这就像一名被训练多年解决数学问题的学生。如果你递给他一张写着"2 + 2 = 4"的纸,并让他“解决这个问题”,他可能会感到被迫写下冗长复杂的证明,或者更改数字,尽管答案已经是正确的。他们被训练去产生答案,而不是评估是否需要答案。
AI 模型被训练生成代码补丁。它们尚未得到足够的训练,无法识别工作已经完成的情况。
“指令”实验
研究人员尝试给代理们不同的指令,看看能否修正这种行为。
- “只管修好它”(糟糕的指令):当他们告诉代理“编辑代码以修复此问题”时,代理的表现甚至更糟。它们更频繁地更改了原本正常的代码。
- “先检查”(更好的指令):当他们告诉代理“首先,尝试复现该错误。如果你找不到错误,就停止且不要更改任何内容”时,代理的表现要好得多。它们学会了暂停、检查,并意识到“嘿,这已经修复了”。
- 陷阱:这个新指令对已经修复的代码非常有效。但它产生了一个新问题。如果代码是部分损坏(半修复)的,代理们会变得过于谨慎。它们会检查,看到一些进展,然后决定完全不做任何事,导致代码保持损坏状态。
这就像一名保安,在被告知“如果对方已经投降就不要开枪”后,决定如果一个人部分投降,就不应该开枪或干预,即使这个人仍然危险。
根本原因:训练与现实
论文指出,AI 模型缺乏关于自身成功的“常识”。
- 当前训练:模型因做出更改而获得奖励。如果它们修复了一个错误,就会得到“干得好”的评分。如果它们什么都不做,就得不到评分。
- 现实:在现实世界中,“干得好”有时意味着什么都不做。
研究人员认为,要解决这个问题,我们需要改变训练这些 AI 的方式。我们需要教会它们,克制(什么都不做)是一个有效且成功的结果,其重要性不亚于修复错误。
总结
- 问题:AI 编码代理过于热衷于更改代码,即使代码已经完美。
- 证据:在 200 个“已修复”任务的测试中,代理们在高达 65% 的情况下不必要地更改了代码。
- 原因:它们被训练去行动,而不是被训练去知道何时停止。
- 解决方案:告诉它们“先验证,如果已修复则停止”会有所帮助,但这会让它们在代码仅部分损坏时变得过于被动。
- 教训:我们需要教会 AI,有时,最好的代码更改就是完全不更改。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。