CodeTeam: An LLM-Powered Multi-Agent Framework for Repository-Level Code Generation
CodeTeam 是一个由大语言模型驱动的多智能体框架,它通过将规划、决策和实现分离为协调的阶段,解决了从自然语言到代码仓库生成的挑战,在基准测试中实现了设计质量和功能正确性方面的最先进性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
核心问题:从一张草图构建整座城市
想象一下,你向一位非常聪明但有点心不在焉的建筑师(AI)提出要求,希望他根据一句话建造一整座城市:“我需要一个人们可以买鞋子的地方。”
如果你只是让 AI “写代码”,它可能会建造一座漂亮的鞋店,但它会忘记建造道路、发电厂或排水系统。或者,它建造的鞋店可能有一个通向砖墙的门,因为它没有和“修路者”AI 进行沟通。
这就是 NL2Repo(自然语言到代码仓库)面临的挑战。这不仅仅是编写单个函数(就像建造一个房间)的问题,而是要生成一个完整的软件项目(一整座城市),其中许多文件必须能够完美地相互通信。目前的 AI 模型经常在细节中迷失,要么忘记了大局,要么造成了“跨文件”混乱——比如文件 A 期待的东西,文件 B 却没有构建出来。
解决方案:CodeTeam(施工团队)
作者提出了 CodeTeam,这是一个不依赖于单一天才 AI 的系统。相反,它像是一个组织有序的施工队,拥有专门的角色。他们将工作分解为三个不同的阶段:规划、决策和建造。
以下是这个团队的工作步骤:
1. 建筑师(梦想家)
系统并没有雇佣一个人来画蓝图,而是雇佣了 四位不同的建筑师代理(Architect agents)。
- 他们做什么: 每一位都会勾勒出不同的软件设计方案。一位可能会说:“让我们采用模块化设计!”另一位则说:“不,让我们保持简单扁平的设计!”
- 秘密武器: 有时,这些建筑师被允许查看以往成功项目的库(检索增强生成,RAG),看看其他人是如何解决类似问题的。这有助于他们避免重复造轮子。
- 目标: 创建多种“软件设计草图”(SDS)。你可以把它们想象成详细的蓝图,列出了每一个房间、每一根管道,以及谁负责建造什么。
2. CTO(首席决策者)
一旦四位建筑师提交了他们的蓝图,一个 首席技术官(CTO) 代理就会介入。
- 他们做什么: CTO 审查所有的草图,挑选出最好的一个,并将其转化为一份 机器可检查的合同(Machine-Checkable Contract)。
- 合同内容: 这不仅仅是一张图纸,它是计算机的一份严格法律文件。它规定:“文件 A 必须包含这个特定的函数。文件 B 必须依赖于文件 A。开发者 1 负责厨房;开发者 2 负责卧室。”
- 为什么重要: 这份合同可以防止建造者在应该建厨房的地方却盖了一个车库。它在第一块砖铺设之前就设定了规则。
3. 开发人员(建造者)
现在,真正的编码开始了。系统会根据 CTO 的合同聘请特定数量的 开发人员代理(Developer agents)。
- 专业化: 与试图做所有事情的通用 AI 不同,这些开发人员被分配了特定的文件。开发者 1 只 负责构建登录页面;开发者 2 只 负责构建数据库。
- Git 协调(工头): 在建造过程中,他们使用 Git(开发者用来跟踪更改的工具)的一个轻量级版本。当开发者 1 修改了登录页面时,他们会留下一条“提交信息”(commit message),说明:“我修改了密码按钮。”开发者 2 会阅读这条信息并更新自己的代码以保持同步。
- 依赖感知: 系统知道你不能在搭建框架之前先粉刷墙壁。它会安排工作的先后顺序,确保文件按正确的顺序构建。
4. QA 代理(检查员)
在团队建造的过程中,一个 质量保证(QA) 代理充当建筑检查员的角色。
- 他们做什么: 他们通过运行测试来检查建筑是否稳固。如果门打不开或者水管漏水,QA 代理不会只说“错误”,他们会查出 是谁 弄坏了它,并将维修单发回给那个特定的开发者。
- 循环机制: 开发者修复问题,检查员再次检查,如此循环,直到建筑完美无缺。
他们发现了什么?(实验结果)
研究人员使用两个主要的“考试”将 CodeTeam 与其他方法(如尝试独自完成任务的单一 AI 或其他多智能体团队)进行了对比:
蓝图考试(SketchEval): 他们检查生成的代码在结构上是否与现实世界的案例相符。
- 结果: CodeTeam 胜出。它构建出的结构看起来更像真实的软件。其“建筑师”和“CTO”步骤帮助他们把握了布局,而“QA”步骤则修复了细小的裂缝。
- 关键洞察: “动态开发者分配”(即为特定任务雇佣正确数量的建造者)是成功的最大因素。如果你雇佣的人数过多或过少,或者把错的人分配到了错的房间,建筑就会失败。
实战测试(NL2Repo-Bench): 他们实际运行了生成的软件,以观察其是否有效。
- 结果: CodeTeam 拥有最高的成功率。它不仅在纸面上看起来很好,而且实际上可以运行。
- 关键洞察: 通过及早修复结构性错误(如缺失文件或连接中断),最终产品通过“实战”测试的可能性大大增加。
总结
这篇论文认为,从零开始构建软件不仅仅是一个“写作”任务,更是一个 管理 任务。
- 旧方式: 要求一个 AI 写完一整本书。它经常会忘记情节走向,或者写出前后不一致的角色。
- CodeTeam 方式: 组建一个团队。让一个人规划情节,让一个人编辑章节,再让一个人检查错别字。
通过将 规划(建筑师/CTO)与 执行(开发人员)分离,并加入 检查(QA)环节,CodeTeam 创建的软件不仅更聪明,而且更可靠。它证明了对于复杂任务,一个协调一致的 AI 智能体团队远比一个孤军奋战的超级智能 AI 更加出色。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。