Agentic AI for Code Quality: A Four-Agent Machine Learning System for Repository Refactoring, Public RAG, Groq Reasoning, and Reinforcement Learning
本文提出了一种多智能体 AI 框架,该框架集成了基于规则的分析、公共 RAG、由 Groq 驱动的 LLM 推理以及 Q-learning 强化学习,旨在自主检测、重构并验证软件仓库中的代码质量改进,在保持功能正确性的同时,实现了技术债的显著降低。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你的代码仓库就像一个杂乱无章、混乱不堪的阁楼,里面堆满了旧箱子、缠绕在一起的电线和重复的工具。多年来,你一直有一位“代码检查员”(传统的工具,如 Pylint 或 SonarQube)走进来,指着这一片狼藉,然后递给你一份长长的投诉清单。但问题在于,这位检查员从不清理,他们只是告诉你哪里出了问题,然后就走开了。
这篇论文介绍了一个由四名 AI Agent(人工智能智能体) 组成的新团队,他们不仅会抱怨,还会真正卷起袖子,动手清理阁楼,并证明自己在清理过程中没有弄坏任何东西。研究人员构建了一个“自愈”系统,其中这四个性格迥异的角色尝试修复同一段混乱的代码,而系统会根据谁让地方变得更好且没有引发灾难来选出胜出者。
四大智能体:专家团队
研究人员并没有只制造一个机器人,而是制造了一个由四个成员组成的团队,每个成员都有不同的性格和技能组合,以观察哪一个在处理不同类型的混乱时表现最佳。
- 基于规则的智能体(严厉的图书管理员): 这个智能体遵循一套严格且不变的清单。它寻找那些显而易见、枯燥乏味的问题,比如重复的导入、多余的空格或缺失的注释。它安全且可靠,就像一位知道每本书该放在哪里的图书管理员,但它可能会错过更深层、更复杂的结构性问题。
- RAG 智能体(带着借书证的研究员): 这个智能体很聪明,但它并不仅仅依赖自身的记忆。在提出修复建议之前,它会去公共图书馆获取最新的“软件工程最佳实践”(使用名为 Tavily 的工具进行网页搜索以及本地规则数据库)。它将自己的建议建立在真实的公共知识之上,从而降低了凭空捏造(幻觉)的可能性。
- Groq LLM 智能体(富有创意的建筑师): 这个智能体使用强大的大语言模型(在 Groq 上运行以保证速度)来对代码进行“思考”。它关注宏观层面,并建议进行深层的结构性调整,例如重新规划整个建筑的布局。它非常擅长处理复杂的语义问题,但需要小心观察,以免它过于天马行空而导致程序崩溃。
- Q-Learning 智能体(通过试错学习的学生): 这是一个 强化学习 的学生。它没有固定的规则手册,也没有借书证。相反,它通过尝试不同的动作(比如“清理导入”或“修复异常”)并根据代码改进的程度获得评分来进行学习。随着时间的推移,它会学会哪些动作最适合特定类型的混乱代码。
“自愈”流水线:它们是如何工作的
系统并不会让这些智能体肆意妄为。它扮演着一个严格的裁判角色,并拥有一套非常具体的游戏计划:
- 安全副本: 在任何智能体接触代码之前,系统都会制作一份完美的、安全的仓库副本。任何人都不允许触碰原始代码。
- 诊断: 系统扫描代码以寻找“代码异味”(坏习惯,如方法过长、嵌套循环过多或复杂度过高)。
- 清理: 每个智能体都在自己的副本上尝试修复代码。
- 安全网(最重要的部分): 在这一点上,论文表现得非常谨慎。仅仅因为一个智能体让代码看起来“更整洁”并不意味着它变得更好了。系统会对新代码运行自动化测试。如果测试失败,修复方案会立即被丢弃。代码必须通过测试,并且在质量指标(如降低风险或提高可维护性)上显示出改进,才能被接受。
- 胜出者: 系统会比较结果。它会挑选那个在不破坏测试的前提下,改进代码程度最大的智能体。
实验结果显示了什么
研究人员在四个著名的“重构卡塔”(旨在模拟混乱代码的练习库)上测试了这个系统:GildedRose、ExpenseReport、Theatrical Players 和 Dependency Breaking。
结果非常有趣,因为没有任何一个智能体能每次都获胜。“最佳”智能体完全取决于混乱的类型:
- GildedRose: 这个仓库存在简单的重复性问题。基于规则的智能体(严厉的图书管理员)在此获胜,将质量得分从 61 分提升到了 72 分。它非常适合进行简单的、确定性的清理工作。
- ExpenseReport: 这个项目需要更好的结构和风险管理。RAG 智能体(研究员)占据了领先地位,将得分提升至 68 分。事实证明,能够获取公共重构指南是关键。
- Theatrical Players: 这段代码需要深层的语义重组。Groq LLM 智能体(富有创意的建筑师)成为了英雄,将得分提升到了 69 分。它比其他智能体更能理解复杂的逻辑。
- Dependency Breaking: 这是一个依赖关系纠缠不清的难题。Q-Learning 智能体(学习者)表现最好,得分从 45 分飙升至 74 分(大幅提升了 64.44%!)。它学到了对于这种特定的结,只有采取自适应的、基于状态的行动才是有效的。
这篇论文对什么表示“否定”
作者非常明确地说明了该系统不是什么。
- 它不是一个能每次都完美修复一切的魔杖。
- 它明确拒绝了“单一 AI 模型在所有情况下都是最佳选择”的观点。论文认为,不同的问题需要不同的策略。
- 它排除了“你可以直接让 AI 重写代码而不检查其是否仍能正常运行”的想法。论文强调,如果没有“指标门禁”(测试和分数检查),智能体可能会让代码看起来很漂亮,但却破坏了实际功能。
- 论文并未声称这已是解决所有软件问题的方案。它承认这些结果是基于四个特定的公共仓库得出的,并且目前该系统仅适用于 Python 代码。
我们有多确定?
论文将这些结果呈现为来自特定实验的测量结果。作者展示了具体数字:例如,在使用 Q-Learning 智能体时,Dependency Breaking 仓库的缺陷减少了 66.67%,风险降低了 39.56%。
然而,作者谨慎地指出,这些都是在有限测试用例上的模拟。他们建议,虽然结果令人鼓舞,但系统需要在更多仓库(他们提议增加 25 到 50 个)上进行测试,以确保其在任何地方都有效。他们还提到,“质量得分”是一个他们创建的综合数值,虽然有用,但可能无法捕捉到软件质量的所有细微差别。
核心结论
这篇论文表明,修复代码的未来不仅仅是一个超级智能的机器人。相反,它是一个由专家组成的团队在并行工作,每个人都使用不同的策略(规则、研究、创意或学习),并在一个严格裁判的监督下运行,以确保万无一失。由于“胜出者”会根据任务的变化而改变,这证明了在代码质量的世界里,多样性才是成功的关键。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。