RefAgent: A Multi-agent LLM-based Framework for Automatic Software Refactoring

本文提出了名为 RefAgent 的多智能体大语言模型框架,通过规划、执行、测试及自我反思的协同机制实现了端到端的自动软件重构,实验表明其在提升代码质量、消除代码异味及重构成功率方面显著优于单智能体方法和传统工具。

Khouloud Oueslati, Maxime Lamothe, Foutse Khomh

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

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

这篇论文介绍了一个名为 RefAgent 的新系统,你可以把它想象成是一个由一群 AI 专家组成的“自动装修队”,专门负责给老旧、混乱的电脑代码进行“大扫除”和“精装修”。

为了让你更容易理解,我们把写软件代码比作盖房子,把“重构(Refactoring)”比作房屋翻新

1. 为什么要搞这个?(背景故事)

想象一下,你住在一栋老房子里。随着时间推移,为了适应新需求,大家往里面加了很多隔断、乱拉电线、把承重墙改得乱七八糟。虽然房子还能住(程序还能跑),但:

  • 很难维护:想换个灯泡,可能得拆掉半面墙。
  • 容易塌:稍微动一下,整个房子可能就歪了(程序崩溃)。
  • 住得不舒服:空间利用率低,采光差(代码难以理解)。

这就是代码异味(Code Smells)。传统的做法是请人工装修队(程序员)来修,但这既贵又慢,还容易出错。以前的自动化工具要么太笨(只能做简单的修补),要么太激进(把房子拆了重盖,结果住不了了)。

2. RefAgent 是什么?(核心概念)

以前的 AI 就像一个独行的装修工,你给它一张图纸(指令),它照着画。如果画错了,它可能不知道,或者不知道去哪找材料。

RefAgent 则不同,它是一个多智能体(Multi-agent)协作团队。它不再是一个人在战斗,而是像一支专业的施工队,每个人分工明确,互相配合:

  • 🕵️‍♂️ 规划师(Context-Aware Planner)

    • 角色:就像总设计师
    • 任务:他先拿着图纸(代码)和测量工具(代码指标),看看哪里墙歪了,哪里电线乱了。他会分析这面墙和隔壁房间(依赖类)的关系,然后制定一份详细的装修计划书
    • 特点:他不仅看局部,还看整体,知道动了这里会影响那里。
  • 🔨 施工员(Refactoring Generator)

    • 角色:就像一线工人
    • 任务:拿着规划师的计划书,动手拆墙、布线、刷漆(修改代码)。
    • 特点:他非常听话,严格按照计划干活,但如果有问题,他会停下来等指令。
  • 🛠️ 质检员 A(Compiler Agent)

    • 角色:就像结构工程师
    • 任务:工人刚改完,他马上检查房子会不会塌(代码能不能编译通过)。如果发现墙砌歪了(语法错误),他立刻告诉工人:“这里不对,重砌!”
    • 循环:如果工人改错了,质检员会反馈错误,工人再改,直到通过为止(最多循环 20 次)。
  • 🧪 质检员 B(Tester Agent)

    • 角色:就像功能测试员
    • 任务:房子结构没问题了,但他还要测试功能。比如:水龙头出水了吗?灯亮了吗?(运行单元测试)。他会用自动化工具(EvoSuite)生成很多测试题来考这个新房子。
    • 循环:如果灯不亮(测试失败),他也会反馈给施工员去修。

3. 他们是怎么工作的?(工作流程)

这就好比一个自动化的装修闭环

  1. 进场:规划师进场,扫描整个房子,找出哪里最乱。
  2. 出图:规划师画好图纸,告诉施工员怎么改。
  3. 施工:施工员动手改代码。
  4. 初检:结构工程师(编译)检查,如果报错,打回重改。
  5. 复试:功能测试员(测试)检查,如果功能坏了,打回重改。
  6. 验收:如果 20 次循环内都通过了,装修完成!如果还是不行,就放弃这个房间,换下一个。

4. 效果怎么样?(实验结果)

作者找了 8 个真实的开源软件项目(就像 8 栋不同的老房子)来测试这支"AI 装修队”。

  • 成功率极高

    • 90% 的装修后,房子功能完全正常(单元测试通过率 90%)。
    • 87% 的装修后,房子结构稳固,没有倒塌(编译通过率高)。
    • 相比之下,如果只派一个“独行侠”AI 去干,成功率只有 40% 多。这说明团队协作太重要了!
  • 清理垃圾很彻底

    • 他们成功清除了 52.5% 的“代码异味”(比如乱拉的电线、多余的隔断)。
  • 像专家一样思考

    • 他们找出的需要装修的地方,和人类专家(资深程序员)找出的地方 80% 是一致的。
    • 甚至比那些靠数学算法优化的传统工具找得更准。
  • 房子更好住了

    • 装修后的房子,可重用性(能不能把房间拆下来用到别的楼里)提高了 8.6%

5. 总结与启示

这篇论文告诉我们:
以前的 AI 写代码像是一个天才但有点鲁莽的独狼,容易犯错且不知悔改。
现在的 RefAgent 像是一个分工明确、互相监督的专业团队

  • 有人负责看全局(规划)。
  • 有人负责动手(执行)。
  • 有人负责挑刺(测试和编译)。

这种多智能体协作的模式,让 AI 不仅能“改代码”,还能像人类工程师一样,边改边检查、边错边改,最终把老旧的代码系统变得既整洁又坚固。这标志着我们在“全自动软件维护”的道路上迈出了重要的一步。

一句话总结:RefAgent 就是给软件代码请了一群AI 装修工,他们分工合作、互相纠错,能把乱糟糟的旧代码自动翻新得井井有条,而且比单干一个 AI 靠谱得多!