Learning Adaptive Parallel Execution for Efficient Code Localization
FuseSearch 是一种自适应并行执行框架,它采用两阶段的 SFT 和 RL 训练策略来根据任务上下文动态优化搜索宽度,在实现 SWE-bench Verified 上最先进的代码定位性能的同时,显著减少了冗余调用、Token 使用量和执行时间。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一名试图在一个拥有数百万本书籍的巨大图书馆中破解谜题的侦探。你的目标是找到发生特定错误的那本书中的那一个精确页面。
在软件世界中,这被称为代码定位(Code Localization)。这是自动修复漏洞最难的部分。
问题所在:“一次只能看一本书”的陷阱
传统上,计算机智能体(AI 程序)尝试通过查看一本书、阅读一页、合上书,然后询问下一本书来解决这个问题。这被称为顺序执行(sequential execution)。
问题在于?它太慢了。如果你只有几分钟的时间(一个“紧凑的预算”)来破案,你可能在找到正确的书之前就耗尽了时间。这被称为信息饥渴(information starvation)——因为你移动得太慢,导致你无法获得足够的线索。
旧有的“并行”方案:笨拙的团队
一些开发者尝试通过同时派出一整支智能体团队去拿书来提高速度。这就是并行执行(parallel execution)。
但有一个问题。这些团队很笨拙。他们会派出 10 个人去拿书,但其中 3 或 4 个人会拿到完全相同的一本书,或者拿到一本已经被打开的书。论文称之为冗余(redundancy)。
- 结果: 他们浪费了时间和金钱(计算能力)去抓取重复的书籍,而且那些无用书籍产生的噪音实际上让寻找真正线索变得更加困难。
解决方案:FuseSearch(聪明的侦探团队)
该论文的作者创建了一个名为 FuseSearch 的新系统。把它想象成一个学会了如何聪明地决定何时以及如何一起抓取书籍的侦探团队。
它是这样工作的,使用简单的比喻:
1. “工具效率”评分卡
与其仅仅问“我们找到线索了吗?”,FuseSearch 会问:“那本书提供了新的信息吗?”
- 如果一个智能体抓取了一本他们从未见过的书,他们会得到一颗金星。
- 如果他们抓取了一本他们已经看过的书,他们会得到一个皱眉。
- 系统经过训练,旨在最大化金星并最小化皱眉。这被称为工具效率(Tool Efficiency)。
2. 两阶段训练(SFT + RL)
为了教会 AI 这项技能,作者使用了两步走的训练营:
- 第一阶段(SFT - 课堂教学): 他们向 AI 展示了优秀的侦探是如何同时抓取许多不同书籍的例子。这教会了 AI 如何在团队中协作而不产生混乱。
- 第二阶段(RL - 实战演练): 他们让 AI 进行练习。如果 AI 抓取了太多重复的书籍,它会丢分。如果它能以极少的重复次数快速找到正确的页面,它会获得巨大的奖励。随着时间的推移,AI 学会了先通过抓取广泛多样的书籍来进行探索(exploration),然后迅速缩小范围,精准定位到它需要的特定页面进行精炼(refinement)。
3. 精简的工具箱
与其他需要复杂图书馆地图(代码图谱)或特殊翻译器的系统不同,FuseSearch 只使用三种简单的工具:
- grep: “查找任何包含这个特定单词的书。”
- glob: “查找所有符合这个名称模式的书。”
- read_file: “打开这本特定的书并阅读其中的几行。”
这就像是仅凭放大镜和一份名单来破解谜题,而不是需要一台超级计算机来预先绘制整个图书馆的地图。
结果:快速、廉价且准确
当他们在著名的基准测试(SWE-bench Verified)上测试 FuseSearch 时:
- 速度: 它比之前的方法快了 93.6%。
- 效率: 它减少了 67.7% 的步骤(轮次)和 68.9% 的计算能力(Token)。
- 准确性: 它不仅变快了,而且变得更好了。它找到正确文件的时间占比 84.7%,找到正确函数的时间占比 56.4%,击败了许多更大规模且更昂贵的系统。
核心结论
FuseSearch 证明了你并不需要成为规模最大或最复杂的侦探才能破案。通过教会 AI 停止在重复线索上浪费时间,并学会同时抓取多个新线索,你就能得到一个更聪明、更快、更便宜的系统。
它将混乱的“抓取一切”方法转变为有针对性的、高效的狩猎,确保每一秒的计算时间都能真正让智能体离解决方案更近一步。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。