Probe-and-Refine Tuning of Repository Guidance for Coding Agents
本文介绍了“探测-优化微调”(probe-and-refine tuning)方法,该方法通过使用合成缺陷修复探测器来迭代优化仓库引导文件(AGENTS.md),通过扩大可评估补丁的覆盖范围而非提高单补丁精度,从而显著提升编码智能体在 SWE-bench Verified 上的性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你雇佣了一位才华横溢但缺乏经验的学徒来修理一座巨大的、古老的图书馆(代码仓库)。这位学徒足够聪明,能读懂书并修复破损的页面,但他并不知道这座图书馆的秘密规则:哪一个书架存放着珍贵的地图,如何在不吵醒睡觉中的猫的情况下向管理员寻求帮助,或者哪些梯子是安全的。
由于缺乏这些“本地知识”,学徒会漫无目的地游荡,爬错梯子,或者试图在错误的区域修理书籍,并在过程中弄坏东西。
这篇论文介绍了一种名为**“探测与精炼微调”(Probe-and-Refine Tuning)**的方法来解决这个问题。以下是其工作原理,使用简单的类比说明:
问题所在:“一刀切”的手册
工程师们经常为他们的 AI 编程智能体编写一份“小抄”(比如一个 AGENTS.md 文件)。
- 旧方法(静态知识): 他们要求一个聪明的 AI 写一份通用的手册:“修复前务必检查索引,”或“寻找主入口点。”这就像是给学徒一张全世界所有图书馆的地图。这很有用,但它没有告诉他们这个特定图书馆的秘密藏宝处在哪里。
- 结果: 学徒表现尚可,但仍然经常迷路。
解决方案:“试错型”教练
作者创建了一个名为 Probe-and-Refine 的新流程。与其只是写一次手册,不如将手册视为一份通过犯错来进行训练的“活文档”。
把它想象成教练训练新球员的过程:
- 探测(演练): 教练针对这个特定的图书馆生成 10 个虚构的、编造的问题(探测)。
- 尝试: 学徒尝试使用当前的手册来解决这些虚构问题。
- 诊断: 教练观察尝试过程。“噢,你试图修理厨房里的水管,但水管其实是在地下室。而且你忘了先检查蓝图。”
- 精炼: 教练立即更新手册,加入一条具体的规则:“对于这座图书馆,水管在地下室,并且务必先检查蓝图。”
- 重复: 他们这样做 3 到 5 次。手册从一份通用的指南进化成了一份超具体的、“内部人士级别”的指南。
至关重要的一点是,整个训练过程并不需要智能体去修复真实的 Bug。 这是一个模拟循环,AI 编写手册,在虚构问题上测试它,并根据结果修正手册。
他们的发现
研究人员在著名的编码基准测试(SWE-bench)上进行了四轮测试。结果如下:
- 没有指南: 学徒解决了 25.5% 的问题。
- 通用指南: 学徒解决了 28.3% 的问题。
- Probe-and-Refine 指南: 学徒解决了 33.0% 的问题。
核心奥秘:在于找到正确的门,而不是更擅长修理
你可能会认为改进后的手册让学徒变得更“聪明”了,或者更擅长修理东西了。事实并非如此。
- 当学徒确实修复了某个东西时,无论他们使用哪种手册,修复质量都是完全一样的(成功率约为 59%)。
- 真正的魔力在于“覆盖率”。 改进后的手册帮助学徒更频繁地找到了要修复的正确文件。
- 类比: 通用手册让学徒敲了 100 扇门,但其中只有 40 扇是正确的;而精炼后的手册让学徒敲了 100 扇门,其中有 56 扇是正确的。一旦他们找到了正确的门,他们修理锁的能力是一样的。
“步骤预算”陷阱
论文还发现,只有当你给学徒足够的时间时,这份指南才会奏效。
- 如果你只给学徒 25 个步骤来解决问题,那花哨的手册就毫无帮助。他们没有时间去遵循复杂的指令。
- 如果你给他们 200 个步骤,这份花哨的手册就会大放异彩。它告诉他们一个需要时间但行之有效的流程(复现 -> 追踪 -> 修复)。如果没有这份手册,他们只会匆忙应对并最终失败。
- 类比: 如果你告诉某人,“走风景优美的路线以避开拥堵”,但只给了他们 5 分钟去上班,他们只会迷失方向。你需要给他们足够的时间去走那条风景优美的路线。
“模型不匹配”警告
最令人惊讶的发现是,这份指南并不通用。
- 他们尝试使用在一款 AI 模型(Qwen)上训练的指南,去驱动另一款稍弱的 AI 模型(Nemotron)。
- 结果: 第二个模型崩溃了。它被过于具体的指令搞糊涂了,以至于完全无法工作。
- 类比: 这就像是给一位驾驶慢速旧轿车的司机一份详细的高速赛车手册。指令对于这辆车来说太复杂了,导致司机不知所措。指南必须针对阅读它的“大脑”(模型)进行专门的“调优”。
总结
这篇论文证明了如何编写指令比仅仅拥有指令更重要。
通过使用一个简单的循环——“制造一个虚构问题,尝试解决它,并根据失败情况修正指令”——你可以将一份通用的指南变成一份专业的专家手册。这并不会让 AI 更擅长修复代码;它只是防止 AI 在错误的地方寻找,从而让它能够发挥出解决问题的全部潜力。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。