SWE-Adept: An LLM-Based Agentic Framework for Deep Codebase Analysis and Structured Issue Resolution

本文提出了 SWE-Adept,一种基于大语言模型的双智能体框架,通过引入智能体导向的深度优先搜索来优化代码定位,并结合自适应规划与 Git 版本控制工具实现系统化的迭代修复,从而在 SWE-Bench 基准测试中显著提升了软件问题从定位到解决的整体成功率。

Kang He, Kaushik Roy

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

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 SWE-Adept 的新系统,它的核心任务是:让大语言模型(AI)像一位经验丰富的“老程序员”一样,去修复复杂的软件代码库中的 Bug。

为了让你更容易理解,我们可以把修复一个大型软件项目(比如像微信或淘宝这样的大系统)比作在一个巨大的、迷宫般的图书馆里找出一本写错了几页的书,并把它改好。

1. 为什么以前的 AI 做不到?(痛点)

以前的 AI 就像是一个刚毕业、有点急躁的实习生

  • 迷路了: 面对成千上万个文件(图书馆的书架),它不知道从哪里开始找。它往往试图把整本书甚至整个图书馆的内容都塞进脑子里(上下文窗口溢出),结果脑子乱了,找不到重点。
  • 乱改一气: 找到问题后,它开始改代码。如果改错了,它往往不知道回到哪一步,只能从头再来,或者在错误的道路上越走越远,把原本能用的代码也改坏了。

2. SWE-Adept 是怎么做的?(核心方案)

SWE-Adept 把任务分给了两个专门的“特工”,它们分工明确,配合默契:

特工 A:定位专家(Issue Localization Agent)

任务: 在迷宫里精准找到那本“坏书”和具体的“错页”。

  • 以前的做法: 像无头苍蝇一样乱撞,或者把整层楼的书都搬过来看。
  • SWE-Adept 的做法(特工 A 的绝招):
    • 像侦探一样“顺藤摸瓜”: 它不盲目搜索。它先根据 Bug 描述找到几个关键词(比如“登录失败”),然后像侦探查案一样,沿着代码的依赖关系(谁调用了谁)进行深度优先搜索
    • 只看“目录”和“简介”: 在深入之前,它先快速浏览代码的“骨架”(函数定义、调用关系),只把真正相关的几页纸(代码片段)带出来,而不是把整本书搬进脑子。
    • 两阶段过滤: 先快速筛选掉明显无关的,再对剩下的几个嫌疑对象进行“深度审讯”(查看完整代码),最终精准锁定问题所在。

比喻: 就像你在找失物,不会把整个家翻个底朝天,而是先回忆“最后在哪里用过”,然后只去那个房间的几个抽屉里找。

特工 B:修复专家(Issue Resolution Agent)

任务: 拿到“错页”位置后,把书改好,并确保没改坏别的地方。

  • 以前的做法: 像“试错法”,改一行,跑一下测试,错了就接着改,改乱了也不知道怎么回退,最后留下一堆乱码。
  • SWE-Adept 的做法(特工 B 的绝招):
    • 制定“作战计划”: 在动手前,先列出“待办事项清单”(To-Do List)。比如:第一步改函数 A,第二步写测试脚本,第三步运行测试。
    • 多路并行(分支探索): 如果一个问题可能有多种解法,它会同时开辟几条“时间线”(Git 分支)。
      • 时间线 A: 试着改这里。
      • 时间线 B: 试着改那里。
    • 随时“读档”(检查点机制): 这是最厉害的地方!每完成一个步骤,它都会自动保存一个“存档点”(Git Checkpoint)。
      • 如果时间线 A 走错了,它不需要从头开始,而是直接读取之前的存档,回到那个状态,然后换一条路继续走。
      • 它就像一个拥有“后悔药”的程序员,永远知道如何回到一个干净、正确的状态。

比喻: 就像玩一个高难度的游戏。以前的 AI 死了就重开整个游戏;SWE-Adept 的 AI 会在每个关键路口存档。如果走错了,它直接读档回到路口,换条路走,而不会丢失之前的进度。

3. 这个系统厉害在哪里?(成果)

  • 更准: 在找 Bug 的位置上,比以前的方法准确率高了 5.4%。
  • 更稳: 在最终修好 Bug 的比例上,提高了 4.7%。
  • 更省: 因为它懂得“只读必要的书”,所以它消耗的算力(Token)比那些试图“读完所有书”的方法要少。

总结

SWE-Adept 就像是给 AI 配备了一套专业的“侦探工具箱”和“时间机器”

  1. 侦探工具让它能在大海捞针中精准定位问题,不被无关信息干扰。
  2. 时间机器(版本控制 + 检查点) 让它敢于大胆尝试多种方案,失败了也能瞬间回到安全状态,从而系统性地解决复杂的软件问题。

这就解释了为什么它能比以前的 AI 更像一个成熟的软件工程师,而不是一个只会乱敲代码的初学者。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →