SHERLOC: Structured Diagnostic Localization for Code Repair Agents
SHERLOC 是一个无需训练的框架,它通过将推理型大语言模型(LLM)与紧凑的代码库工具及自我恢复机制相结合,增强了代码修复智能体,从而在实现最先进的故障定位准确度的同时,显著提高了修复成功率并降低了 Token 消耗。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你拥有一座庞大且杂乱的图书馆(一个软件代码库),有人递给你一张便条说:“第42页的那本书有个错别字,导致故事讲不下去了。”你的任务是找到那准确的页面,修复那个错别字,并确保故事能够重新通顺。
在人工智能领域,“智能体”(智能计算机程序)正试图完成这项工作。但 SHERLOC 这篇论文指出一个主要问题:这些智能体在尝试修复之前,竟然花费了将近一半的时间和精力仅仅是在寻找那个错别字。它们在图书馆的走廊里徘徊,随机打开书本,迷失方向,并浪费了大量的“脑力”(计算 Token)。
以下是 SHERLOC 如何改变游戏规则的简单解释:
1. 问题所在:“徘徊的侦探”
目前,如果你要求 AI 修复一个 Bug,它的表现就像一个没有地图的侦探。它必须猜测该打开哪个文件,阅读它,关闭它,再猜另一个文件,如此反复数十次。
- 代价: 这个“搜索阶段”消耗了 AI 近 50% 的预算。
- 缺陷: 即使 AI 找到了正确的文件,它也往往只是说:“它在
file.py中。”它不会解释为什么它在那里,或者如何修复它。这就像一个侦探只说“嫌疑人在厨房”,却没提供任何关于嫌疑人当时在做什么的线索。
2. 解决方案:SHERLOC(“超级神探”)
作者创建了一个名为 SHERLOC 的新框架。你可以把它想象成给了侦探一个手电筒、一个放大镜和一个结构化的笔记本,但不需要重新训练侦探如何使用这些工具。
- 无需新训练: SHERLOC 不需要 AI 去“上学”(微调)。它只是利用 AI 现有的聪明才智,并赋予其更好的工具。
- 工具箱: 与其漫无目的地徘徊,SHERLOC 使用了四种特定的、简单的工具:
- 查看文件 (View File): 查看特定的页面。
- 搜索 (Search): 在整个图书馆中查找特定的词。
- 树状视图 (Tree View): 查看图书馆书架的地图。
- 导入树 (Import Tree): 查看哪些书引用了其他书(依赖关系)。
- “自我恢复”安全网: 有时 AI 会陷入循环(反复阅读同一页)或在执行指令时出错。SHERLOC 内置了一个“安全卫士”,它会说:“嘿,你在重复自己!试着换个方法,”或者“你说话太多了,让我们收尾吧。”
3. 输出结果:一份“诊断报告”
这是最大的创新。当 SHERLOC 发现 Bug 时,它不仅仅给出一个文件路径。它会编写一份包含五个特定部分的结构化报告:
- 位置说明: “这里是 Bug 发生的地方。”
- 根本原因: “这是 Bug 发生的原因。”
- 解决方案构想: “这是一个修复计划。”
- 依赖关系: “这个改动可能会影响这些其他部分。”
- 测试影响: “你应该检查这些特定的测试。”
类比: SHERLOC 递给维修人员的不是一张写着“修理引擎”的便利贴,而是一份蓝图,上面写着:“引擎在后方(位置)。活塞因为生锈卡住了(根本原因)。我们需要把它打磨掉(解决方案)。注意不要碰到燃油管(依赖关系)。然后测试点火系统(测试)。”
4. 结果:更快、更聪明
论文在真实的编程挑战(SWE-Bench)上测试了它。
- 准确性: 即使没有专门的训练,SHERLOC 找到正确文件的频率也比以往任何方法都要高。
- 效率: 通过用 SHERLOC 的报告为修复智能体提供一个“起跑点”,这些智能体在搜索上减少了 36% 的时间,在修复代码时减少了 23% 的总能量消耗。
- 成功率: 因为智能体拥有了清晰的地图和计划,它们成功修复了更多的 Bug(平均增加了约 6%)。
5. “质量过滤器”(门卫)
研究人员发现,有时 SHERLOC 的报告非常完美,有时则有点不靠谱。
- 技巧: 他们添加了一个“质量过滤器”(就像夜店门口的保镖)。如果报告质量高,他们就让修复智能体使用它;如果报告质量低,他们就告诉智能体:“忽略这个,自己去寻找 Bug。”
- 重要性: 这防止了智能体被错误的猜测所误导。它确保了所谓的“帮助”确实是有帮助的。
总结
SHERLOC 就像是为一名迷路的游客升级了 GPS 和旅行指南。
- 之前: 游客(AI)在城市里徘徊,感到疲惫,并向随机的人问路,经常得到错误的答案。
- 之后: 游客得到了一个 GPS,它说:“在这里左转,问题在面包店,这里是修复蛋糕的具体方法。”
- 结果: 他们更快到达目的地,消耗更少的能量,并且带着更好的计划抵达。
论文得出结论:对于 AI 而言,要有效地修复代码,它不仅要擅长寻找文件,更要擅长诊断问题并解释解决方案。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。