← 最新论文
💻 computer science

EXPEREPAIR: Dual-Memory Enhanced LLM-based Repository-Level Program Repair

ExpeRepair 是一个新颖的基于大语言模型的框架,它利用由具体修复示例的自传体记忆和抽象见解的语义记忆构成的双重记忆系统,动态构建情境感知提示,通过有效复用历史修复知识,在 SWE-Bench Lite 和 Verified 基准测试上实现了开源领域最先进的性能。

原作者: Fangwen Mu, Junjie Wang, Lin Shi, Song Wang, Shoubin Li, Qing Wang

发布于 2026-05-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Fangwen Mu, Junjie Wang, Lin Shi, Song Wang, Shoubin Li, Qing Wang

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

想象你是一位试图修复复杂复古汽车引擎的资深机械师。在过去,每当出现新问题,你都得从零开始:阅读手册、猜测故障所在、尝试修复,并祈祷奏效。如果失败,你便再次尝试,却忘记了从上次错误中学到的东西。

ExpeRepair 就像是赋予那位机械师一套受人类大脑启发的、超强大的双部分记忆系统。该系统不再让 AI 每次都从零开始,而是帮助其“记住”过往的修复经验并从中学习,从而显著提升其修复软件漏洞的能力。

以下是其工作原理,拆解为简单概念:

两种记忆类型

该论文指出,人类记忆并非一个巨大的容器,而是由两个截然不同的部分组成。ExpeRepair 复制了这一设计:

  1. 情景记忆(“相册”):

    • 是什么: 这是一组具体、实例化的案例集合。将其想象为过往修复工作的剪贴簿。它包含精确的“修复前与修复后”照片:具体的错误信息、确切的故障代码,以及具体的修复补丁。
    • 如何帮助: 当新漏洞出现时,系统会翻阅这本剪贴簿,寻找类似的过往案例。“嘿,上周我们修复过一个类似的坏掉的电灯开关;让我们试试同样的方法。”这提供了一份可遵循的具体方案。
  2. 语义记忆(“规则手册”):

    • 是什么: 这是从所有过往修复中提炼出的抽象智慧。它不涉及具体照片,而是关于通用原则。将其想象为用通俗英语写成的“最佳实践”或“经验法则”列表。
    • 如何帮助: 它教导 AI 通用的教训,例如“修复安全问题时,务必检查边缘情况”或“如果一个函数处理多个输入,请确保修复所有输入,而不仅仅是提到的那一个”。这有助于 AI 适应其未曾见过的新情况。

如何修复漏洞(工作流程)

该系统使用两个“智能体”(AI 工作人员)来执行修复:一个负责编写测试脚本(以证明漏洞存在),另一个负责编写实际修复代码。

  • 旧方式: AI 接收漏洞报告,试图基于其通用训练猜测修复方案,并寄希望于最佳结果。如果失败,它会在相同的静态指令下再次尝试。
  • ExpeRepair 方式:
    1. 回顾过去: 在尝试修复新漏洞之前,系统会检查其相册(情景记忆),寻找类似的过往失败与成功案例。
    2. 查阅规则: 它同时检查其规则手册(语义记忆),获取与该类问题相关的高层建议。
    3. 动态指令: 系统不再使用僵化的预写指令手册,而是为 AI 工作人员创建自定义的“动态”提示。它会说:“这是新漏洞。这是上个月我们修复过的类似漏洞(来自相册)。并且请记住这条关于处理边缘情况的规则(来自规则手册)。”
    4. 学习与更新: 一旦修复完成(甚至即使失败),系统也会保存此次经验。它将具体细节添加到相册中,并将学到的教训总结归纳到规则手册中,以备下次使用。

结果

研究人员在两组著名的真实世界软件漏洞数据集(称为 SWE-Bench Lite 和 SWE-Bench Verified)上测试了该系统。

  • 得分: 使用强大的 AI 模型(Claude 4 Sonnet),ExpeRepair 在较难的测试集上成功修复了 74.6% 的漏洞,在较轻松的测试集上修复了 60.3%
  • 对比: 这是他们在测试的所有开源方法中表现最好的。它击败了其他顶级工具,如 SWE-agent、Aider 和 AutoCodeRover。
  • 成本: 它在无需对 AI 模型进行昂贵且耗时的重新训练的情况下取得了这些高分。它仅仅是通过“阅读”自己过往的工作来学习。

为何重要

该论文认为,当前的 AI 修复工具就像那些参加考试、获得成绩,然后在下次考试前立即忘记一切的学生。而 ExpeRepair 则像是一个保留学习指南、复习错误、并在解决每一个问题后变得更聪明的学生。

通过将具体实例(情景记忆)与通用智慧(语义记忆)相结合,该系统创造了一个反馈循环:AI 工作的越多,修复软件的能力就越强,从而模拟了人类开发者随时间推移实际学习和提升的过程。

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

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

试用 Digest →