← 最新论文
💬 NLP

ORACLE-SWE: Quantifying the Contribution of Oracle Information Signals on SWE Agents

本文提出了名为 Oracle-SWE 的统一方法,通过从软件工程案例中隔离并提取“神谕”信息信号(如复现测试、编辑位置等),量化了各类上下文信号对智能体性能的具体贡献,从而为自主编码系统的研究优先级提供指导。

原作者: Kenan Li, Qirui Jin, Liao Zhu, Xiaosong Huang, Yijia Wu, Yikai Zhang, Xin Zhang, Zijian Jin, Yufan Huang, Elsie Nallipogu, Chaoyun Zhang, Yu Kang, Saravan Rajmohan, Qingwei Lin, Wenke Lee, Dongmei Zha
发布于 2026-04-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Kenan Li, Qirui Jin, Liao Zhu, Xiaosong Huang, Yijia Wu, Yikai Zhang, Xin Zhang, Zijian Jin, Yufan Huang, Elsie Nallipogu, Chaoyun Zhang, Yu Kang, Saravan Rajmohan, Qingwei Lin, Wenke Lee, Dongmei Zhang

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是在给AI 程序员(SWE Agents)做了一次全面的“体检”和“能力拆解”。

想象一下,你雇佣了一个非常聪明的AI 实习生来帮你修电脑(或者修复软件代码里的 Bug)。这个实习生很努力,但有时候会修不好。

以前的研究一直在问:“怎么让实习生更聪明?”(比如教他更多技巧、给他更多工具)。
但这篇论文换了一个角度问:"到底是他缺了什么‘关键情报’才修不好的?"

为了找到答案,作者们发明了一个叫 Oracle-SWE(神谕系统)的方法。这里的"Oracle"(神谕)指的是"全知全能的上帝视角"。作者们假设:如果这个实习生能直接拿到“标准答案”里的关键线索,他能不能修好?

🕵️‍♂️ 核心实验:给实习生发“作弊条”

作者们把修复软件任务中最重要的5 种线索(信息信号)单独提炼出来,像发“作弊条”一样,一次只给实习生一种,看看他的表现能提升多少。

这 5 种线索分别是:

  1. **复现测试 **(Reproduction Test)

    • 比喻:就像你给实习生一张详细的“故障说明书”,上面写着:“当你按下这个按钮,屏幕就会变蓝,并且会报错‘错误代码 404'。”
    • 作用:这是最重要的线索。有了它,实习生就知道自己修没修好(只要屏幕不变蓝了就行)。如果没有它,实习生就像在黑暗中乱撞,不知道修对了没有。
  2. **执行上下文 **(Execution Context)

    • 比喻:就像给实习生看监控录像事故现场照片。告诉他:“错误发生在你按下按钮后的第 3 秒,当时程序正在运行 A 函数,然后跳到了 B 函数,最后在这里卡住了。”
    • 作用:这能帮实习生快速定位问题出在哪。但论文发现,如果只有录像没有“故障说明书”(复现测试),效果一般。
  3. **修改位置 **(Edit Location)

    • 比喻:就像直接告诉实习生:“别找问题了,直接去第 50 行和第 100 行把这两个词改一下。”
    • 作用:省去了“找茬”的时间。但如果你只告诉他改哪里,却不告诉他“为什么要改”(没有测试反馈),他可能改错了也不知道。
  4. **API 用法 **(API Usage)

    • 比喻:就像给实习生一本工具使用手册,告诉他:“修这个要用‘螺丝刀 A',那个要用‘扳手 B',而且要用特定的力度。”
    • 作用:防止实习生用错工具。但在现代 AI 眼里,很多常用工具它早就知道了,所以这个线索的提升作用相对较小。
  5. **回归测试 **(Regression Test)

    • 比喻:就像告诉实习生:“修好这个 Bug 后,别把原本能用的功能搞坏了,比如原来的‘打开文件’功能还得能正常用。”
    • 作用:这是“守门员”,防止修出一个新 Bug。但它不能帮实习生“修好”原来的 Bug,只能防止情况恶化。

📊 实验结果:谁才是“救命稻草”?

作者们通过大量实验发现了一个惊人的排名(按重要性从高到低):

  1. **🥇 冠军:复现测试 **(Reproduction Test)

    • 结论:这是绝对的核心。只要给 AI 一个明确的“失败信号”(比如:运行这个测试,如果报错就是没修好),AI 的成功率就会暴涨
    • 通俗解释:AI 最怕的不是“不知道改哪里”,而是“不知道改对了没有”。有了明确的测试,它就能像玩“找不同”游戏一样,不断尝试直到通过测试。
  2. 🥈 亚军:执行上下文 & 修改位置

    • 这两者差不多重要。有了“监控录像”或者“直接指路”,能帮 AI 少走弯路。
  3. 🥉 季军:API 用法

    • 对现代 AI 来说,很多工具它本来就会,所以额外给手册提升有限。
  4. 🏅 殿军:回归测试

    • 它只能防止“乱修”,不能主动“修好”。

💡 一个有趣的发现:原生报错 vs. 人工模拟

论文还发现,如果错误是程序自己“尖叫”出来的(原生报错堆栈,比如“数组越界了!”),效果最好。但如果错误是隐性的(比如“计算结果不对,但没报错”),AI 就得靠人工去模拟一个“堆栈”来告诉它哪里错了。

  • 比喻:就像病人如果直接喊“我肚子疼得厉害”(原生报错),医生好治;如果病人只是说“我觉得不太舒服”(隐性错误),医生就得费很大劲去检查。

🚀 这篇论文想告诉我们什么?

  1. 别只盯着“模型智商”:现在的 AI 模型已经很强了,但很多时候它们修不好代码,不是因为不够聪明,而是因为缺乏明确的“目标信号”(即复现测试)。
  2. 未来的方向:与其花巨资训练更聪明的模型,不如花精力去设计更好的“测试用例”和“故障复现方法”。只要给 AI 一个清晰的“通关标准”,它就能自己把活干好。
  3. 现实验证:作者还做了一组实验,让一个“更强的 AI"先帮“较弱的 AI"找出这些线索,结果发现,即使线索不是上帝直接给的,而是由另一个 AI 找出来的,效果依然很好。这说明这套方法在现实中也是行得通的。

🌟 一句话总结

这篇论文告诉我们:教 AI 修代码,与其逼它变“天才”,不如先给它一张清晰的“错题本”和“标准答案”。只要知道“怎么才算修好”,AI 就能自己把活干得漂漂亮亮

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →