← 最新论文
🤖 AI

RepoRepair: Leveraging Code Documentation for Repository-Level Automated Program Repair

本文提出了名为 RepoRepair 的新方法,通过利用大语言模型生成从函数到文件层级的分层代码文档作为辅助知识,有效解决了跨文件复杂问题的仓库级自动程序修复难题,并在 SWE-bench 基准测试中实现了低成本、高性能的修复效果。

原作者: Zhongqiang Pan, Chuanyi Li, Wenkang Zhong, Yi Feng, Bin Luo, Vincent Ng

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

原作者: Zhongqiang Pan, Chuanyi Li, Wenkang Zhong, Yi Feng, Bin Luo, Vincent Ng

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

这篇论文介绍了一个名为 RepoRepair 的新工具,它的核心任务是自动修复大型软件项目中的 Bug

为了让你更容易理解,我们可以把修复软件 Bug 想象成在一个巨大的、迷宫般的图书馆里找一本写错页的书,并把它改对

1. 以前的难题:在迷宫里瞎撞

想象一下,你有一个由成千上万本书(代码文件)组成的巨大图书馆(软件仓库)。现在有人告诉你:“第 3 排书架上有一本书的第 50 页有个错别字,导致整个图书馆的灯都灭了。”

  • 以前的方法(传统 APR):就像派一个只读过几页书的小学生去图书馆。他要么只能看到眼前的一两页(上下文太短),要么只能拿着“关键词”(比如“灯”、“开关”)去乱翻。如果那个错别字其实藏在第 100 排书架的一本不起眼的说明书里,小学生根本找不到,或者找错了地方,把一本完全无关的书给改了。
  • 现在的困境:现在的软件太复杂了,Bug 往往不是在一个文件里,而是牵一发而动全身,涉及好几个文件。以前的工具就像没有地图的盲人,很难在这么大的迷宫里精准定位。

2. RepoRepair 的绝招:先画“导游图”

RepoRepair 的聪明之处在于,它不直接去翻书,而是先让一个超级聪明的 AI 助手(大语言模型)为整个图书馆画一套详细的“导游图”和“说明书”

这套“导游图”分两层:

  1. 楼层导览图(文件级文档):告诉 AI,这栋楼(文件)是干什么的?是管灯光的?还是管大门的?
  2. 房间功能表(函数级文档):告诉 AI,这个房间(函数)具体是做什么的?里面有什么开关?

这个过程就像:
在进迷宫之前,先让一个专家把整个迷宫的结构、每个房间的功能都整理成一本清晰的《图书馆使用指南》。

3. 它是如何工作的?(三步走)

第一步:生成“导游图”(文档生成)

RepoRepair 先利用 AI,把仓库里所有的代码文件都“翻译”成人类能读懂的文档。

  • 比喻:就像给图书馆里的每一本书都贴上了详细的标签,不仅写了书名,还写了“这本书是讲如何修灯的”、“这本书是讲如何换灯泡的”。这样,AI 就不需要去读几万行枯燥的代码,直接看标签就能懂。

第二步:精准定位(故障定位)

当收到“灯灭了”的报错时,RepoRepair 不会去翻所有书,而是:

  1. 先看楼层导览图,快速筛选出哪几层楼(文件)可能跟“灯”有关。
  2. 再看房间功能表,在这些楼层里,精准找到具体是哪个房间(函数)的开关坏了。
  • 比喻:以前是拿着“灯”这个词去满世界乱撞;现在是拿着“灯”去查《图书馆使用指南》,指南直接告诉你:“哦,灯的问题在 B 区 3 楼的‘照明控制室’(文件),具体是‘总闸’(函数)坏了。”

第三步:动手修复(代码修补)

找到坏掉的“开关”后,RepoRepair 会:

  1. 剪掉无关内容:只把那个坏开关和它直接相连的电线(依赖代码)拿出来,把周围无关的装饰画都剪掉,给 AI 一个干净的工作台。
  2. 生成补丁:让 AI 写出修改方案(比如“把开关从 A 改成 B")。
  3. 反复测试:就像修好灯后,先试开一下,如果不行,就换个角度再试一次,直到灯亮为止。

4. 为什么它这么厉害?(成果)

论文在两个著名的“考试”(SWE-bench Lite 和 Multimodal)中测试了 RepoRepair:

  • 成绩优异:它修复 Bug 的成功率达到了 45.7%(在 Lite 版)和 37.1%(在更难的 Multimodal 版),是目前世界顶尖的水平。
  • 省钱省力:以前那种“试错法”(让 AI 猜很多次)非常烧钱。RepoRepair 因为先画了“导游图”,定位准,所以每次修复的成本极低(平均不到 5 毛钱人民币)。
  • 解决复杂问题:对于那些涉及多个文件、跨楼层的复杂 Bug,以前的工具经常迷路,而 RepoRepair 靠着“导游图”总能找到正确的房间。

总结

RepoRepair 的核心思想就是:
不要试图直接啃下几百万行代码的“硬骨头”。先让 AI 把代码“翻译”成人类能看懂的结构化文档(导游图),利用这些文档作为导航,就能在巨大的软件迷宫里精准定位问题,并用最低的成本修好它。

这就好比,以前修车是凭感觉拆零件,现在 RepoRepair 是拿着3D 全息维修手册,直接告诉你哪个螺丝松了,既快又准,还省油。

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

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

试用 Digest →