← 最新论文
💻 computer science

BLAgent: Agentic RAG for File-Level Bug Localization

BLAgent 是一种新颖的代理式检索增强生成框架,它通过代码结构感知编码、双视角查询转换和两阶段代理重排序来增强文件级缺陷定位,在 SWE-bench Lite 上实现了最先进的准确率,同时显著降低了成本并提升了下游自动化程序修复的成功率。

原作者: Md Afif Al Mamun, Gias Uddin

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

原作者: Md Afif Al Mamun, Gias Uddin

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

以下是关于BLAgent论文的通俗解释,使用类比和日常语言进行翻译。

大问题:大海捞针

想象你是一名机械师(软件开发者),正在试图修理一辆坏掉的汽车。一位顾客递给你一份投诉:“我向左转弯时,车子会发出奇怪的噪音。”

在软件世界里,这份投诉就是错误报告(Bug Report)。汽车是一个包含数百万行代码的巨大代码库(干草堆)。而发出噪音的那行特定代码就是

长期以来,试图修复这些错误的 AI 工具一直举步维艰,因为它们无法先找到那根针。如果 AI 猜错了引擎的哪个部分(错误的文件),它就会试图修复错误的地方,车子依然无法修好。这被称为错误定位(Bug Localization)

解决方案:BLAgent(超级侦探)

作者们创建了一个名为BLAgent的新系统。把它想象成一位超级侦探,它不只是靠猜测;它采用一种智能的、循序渐进的调查过程,在尝试修复之前,先找出需要修复的确切文件。

BLAgent 使用了一种称为**代理式 RAG(检索增强生成)**的技术。用大白话来说,这意味着 AI 不会凭空“幻觉”出一个答案;它会去图书馆(代码库),找到正确的书(代码文件),阅读它们,然后思考答案。

以下是 BLAgent 的工作原理,分为三个简单的步骤:

1. 整理图书馆(智能分块)

想象你的图书馆一团糟。书被撕成两半,页面被随机粘在一起。如果你问图书管理员要一本关于“引擎”的书,他们可能会递给你一页写着“引擎”但实际上来自烹饪书的内容。

  • 旧方法:传统 AI 将代码分割成随机的文本块,就像把书页一页页撕下来一样。
  • BLAgent 方法:BLAgent 使用结构图(称为 AST)。它知道一个“函数”或一个“类”就像完整的一章。它只在这些章节结束时切割代码。
  • 秘密武器:它还在每一页上盖上了文件路径(书的地址)。如果错误报告中提到了特定的文件夹名称,BLAgent 可以立即将该地址与正确的书匹配。

2. 提出更好的问题(双视角查询)

想象你在向图书管理员寻求帮助。

  • 糟糕的问题:“我的车坏了。”(太模糊)。
  • BLAgent 的策略:它提出两个不同的问题以获得最佳结果:
    1. 结构性问题:“哪个文件包含 turn_signal 函数?”(寻找具体的名称和代码结构)。
    2. 行为性问题:“哪个文件处理了车子转弯时发出噪音的情况?”(寻找症状和行为)。

通过同时提出这两个问题,BLAgent 撒下了更宽的网,确保不会因为错误报告使用的词汇与代码不同而错过正确的文件。

3. 侦探的调查(代理式重排序)

这是最重要的部分。图书馆给了 BLAgent 一份最可能的 15 本书(文件)的列表。但哪一本实际上是罪魁祸首?

  • 旧 AI:挑选列表上的第一本书并试图修复它。
  • BLAgent(代理):它表现得像个侦探。它不只是看封面;它会打开这些书,查看顶级候选者的骨架(目录和章节标题)。
    • 它会问自己:“这个文件的结构符合案情吗?”
    • 它为每个文件分配一个分数(0 到 10)。
    • 然后,对于排名靠前的几个嫌疑人,它会阅读相关部分的实际文本,以做出基于证据的最终决定。

这种“有界推理”意味着侦探只调查最可能的嫌疑人,从而节省时间和金钱,而不是搜索整个图书馆。

为什么这很重要:修理店

该论文在著名的基准测试SWE-bench(真实世界软件错误的集合)上测试了 BLAgent。

  • 结果:BLAgent 在 78% 到 86% 的情况下找到了需要修复的正确文件(具体取决于所使用的 AI 模型)。
  • 对比:以前的方法找到正确文件的频率较低。
  • 成本:BLAgent 比之前的最佳方法便宜 18 倍。旧方法就像雇佣 100 人的团队来搜索图书馆;而 BLAgent 就像雇佣了一位拥有地图的非常聪明的侦探。

对修复错误的影响
当 BLAgent 接入自动修复系统时,该系统成功修复的错误比之前多了 20%

  • 类比:如果你给机械师错误的发动机零件,他们无法修好车。如果你给他们正确的零件(准确的定位),他们就能修好。BLAgent 确保机械师拿到正确的零件。

论文没有说的内容

  • 它并没有声称能修复每一个错误。大约有 14% 的情况,正确的文件隐藏得太深,或者错误报告太模糊,以至于 BLAgent 也无法在列表顶部找到它。
  • 它并没有声称自己是所有软件的万能灵药。它在 Python 项目(如测试中的项目)上效果最好,并且依赖于错误报告的质量。
  • 它并没有说找到文件是唯一的步骤。一旦找到文件,AI 仍然必须编写实际的代码修复,这仍可能失败。但找到文件是最大的障碍。

总结

BLAgent 是 AI 寻找损坏代码的一种更聪明的方法。它不再随机猜测,而是更好地组织代码库,提出更聪明的问题,并在采取行动之前使用“侦探”步骤来验证证据。这使得它在寻找软件错误的根本原因时,速度更快、成本更低、准确度更高。

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

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

试用 Digest →