Loc2Repair: A Framework for Evaluating the Impact of File-Level Issue Localization in Repo-Level LLM Repair
本文介绍了 Loc2Repair,这是一个模块化评估框架,它证明了将文件级问题定位与修复合成解耦,能够持续提升基于仓库的自动化修复系统的有效性和效率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一名大师级机械师(AI),受雇去修理一辆坏掉的汽车,而这辆车停在一个巨大的、有10层楼高的停车库(软件代码仓库)里。你的目标是找到损坏的零件并将其修复。
通常,当我们测试这些机械师时,我们只看最终结果:“他们修好车了吗?”如果答案是“没有”,我们并不知道为什么失败。是因为他们在错误的楼层寻找吗?还是找到了正确的零件却用了错误的扳手?或者是在中途放弃了?
这篇论文介绍了一种新的测试工具,叫做 Loc2Repair。你可以把它想象成一种将机械师的工作拆分为两个截然不同步骤的方法,这样我们就能看清问题到底出在哪里:
- 定位(Localization): 找到正确的楼层和正确的汽车零件。
- 修复(Repair): 真正修好那个零件。
实验:给机械师一张地图
研究人员想看看,如果给机械师一张特定的“地图”(告诉他们具体要查看哪些文件),是否能帮助他们更好地修好车,即便机械师本身的修理技能保持不变。
他们测试了三位不同的机械师(三种不同的 AI 模型),针对 500 辆坏掉的汽车(软件问题)进行了测试。他们为每位机械师尝试了四种不同的场景:
- “盲测”: 机械师必须独自搜索整个停车库。
- “AI 助手”测试: 一个更小、更便宜的 AI 给机械师一个关于应该检查哪个楼层的提示。
- “更强的 AI 助手”测试: 另一个稍聪明一点的 AI 提供提示。
- “完美地图”测试: 研究人员直接给出损坏零件的精确列表(这被称为“金标准”定位)。
他们的发现
1. 地图总是有帮助的(哪怕只是粗略的地图)
当机械师得到地图(无论是来自 AI 助手的还是完美的列表)时,他们修好的汽车比盲测时更多。
- 没有地图时: 他们修好了大约 45% 的汽车。
- 有了 AI 助手的地图后: 他们修好了大约 49%。
- 有了“完美地图”后: 他们修好了大约 52%。
这证明了仅仅知道在哪里寻找就是一个巨大的优势。这就像告诉侦探,“小偷在厨房里”,而不是让他们搜遍整个房子。
2. 它也更快
令人惊讶的是,给机械师一张地图不仅帮助他们修好了更多的车,而且通常还让他们完成工作的速度更快。
- 平均而言,“盲测”机械师完成任务的时间比使用地图的机械师多出约 100 秒。
- 为什么?因为他们没有在错误的楼层浪费时间。
3. “完美地图”并不是万能灵药
这是最重要的发现。即使研究人员给了机械师 “完美地图”(明确告诉他们哪个文件坏了),他们仍然未能修好近一半的汽车。
- 这意味着,找到损坏的零件仅仅是成功的一半。
- 另一半是真正地修复它。即使你知道引擎在哪里,你仍然需要知道如何更换火花塞。机械师(AI 模型)在实际的修复、调试和测试方面仍然面临困难。
核心启示
该论文认为,我们不应该只看 AI 编程能力的最终得分。我们需要将步骤分开来看。
- 寻找问题(定位)是一项关键技能,可以独立进行改进。
- 解决问题(修复)是另一项独立的技能,目前仍需要大量的改进工作。
通过使用像 Loc2Repair 这样的工具,研究人员可以停止猜测 AI 为什么失败。他们现在可以明确地说:“这个 AI 失败是因为它找不到文件,”或者“这个 AI 找到了文件,但无法编写修复代码。”这有助于开发者通过修复链条中具体的薄弱环节来构建更好的工具。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。