AGILE CODER: Dynamic Collaborative Agents for Software Development based on Agile Methodology

基本信息 标题: AGILE CODER: Dynamic Collaborative Agents for Software Development based on Agile Methodology 作者: Minh Huynh Nguyen、Thang Chau Phan、Phong X. Nguyen、Nghi D. Q. Bui(通讯作者) 作者单位: FPT Software AI Center、Fulbright University 期刊/会议: FORGE(ICSE) 2025 (CCF-A, EI) 发表年份: 2025.07.02 DOI: 10.1109/Forge66646.2025.00026 开源地址: Github 关键词: Software Development, Multi-Agent System, Large Language Models 研究问题 (Research Questions) 解决仓库级别的代码生成问题 研究背景 (Background) 专业软件开发的敏捷方法 敏捷源自敏捷宣言 [agi, 2001],是一种灵活的软件开发方法,强调交付最终产品的实用主义。它促进持续交付、客户协作以及快速适应不断变化的需求。与瀑布模型等传统线性方法不同,敏捷通过Sprint(短周期)采用迭代开发,可以快速调整和频繁重新评估项目目标。这种迭代方法增强了与客户需求的一致性,并促进团队内部的开放沟通和共同责任。敏捷的适应性使其对于管理需求可能随时间变化的复杂项目特别有效。通过将敏捷原则与软件开发中的协作代理相结合,我们为设计多代理系统提供了一种新颖的视角。 仓库级别的代码理解和生成 在存储库级别生成代码是现实世界软件工程任务中大型语言模型(llm)面临的重大挑战。现实世界的代码库是复杂的,具有相互连接的模块,并且随着上下文大小的增加,llm面临限制。这导致了选择相关上下文的研究并优化其使用。软件智能体,如ChatDev和MetaGPT,旨在生成功能齐全的可执行软件,包括各种文件,类和模块,而不仅仅是像HumanEval [Chen等人,2021]或MBPP [Austin等人,2021b]中简单任务的解决方案。这要求代理在生成代码或修复错误时理解所有现有上下文,包括文件、类、函数和库。然而,在以前的研究中,对全面的库级代码理解和生成的需求经常被忽视。 核心贡献 (Key Contributions) 引入了AgileCoder,是一种受到敏捷开发启发的新型多智能体软件开发框架,强调智能体之间的有效沟通和增量开发。 引入了动态代码图生成器(DCGG)将静态分析方法整合到多智能体工作流中,该生成起可以动态生成代码依赖图(CDG)。这个图会记录代码库的演变过程中各个代码组件之间的依赖关系,为智能体提供了一个可靠的来源以获取相关上下文信息,从而提高了生成工程的质量。评估结果显示,使用了CDG获取到的上下文信息,性能表现显著增长。 实验证明AgileCoder在HumanEval、MAPP上达到了SOTA,并提出了ProjectDev作为软件开发的Benchmark。在这个框架上,超越了MetaGPT和ChatDev。 方法 (Methodology) 上图呈现了AgileCoder的总体框架,其中包括多个智能体:产品经理(PM, Product Manager)、敏捷开发负责人(SM, Scrum Master)、开发人员(Dev, Developer)、高级开发人员(SenDev, Senior Developer)和 测试人员(Tester), 各个智能体通过敏捷开发方式进行协作开发。开发过程包括执行环境(Execution Environment)以在测试期间运行代码,并有动态代码生成器(DCGG)在代码更新时动态生成代码依赖图(Code Dependency Graph)。执行环境(Execution Environment)为智能体提供回溯以进行代码优化,而DCGG使智能体能够获取相关上下文以准确地生成和修正代码。...

October 27, 2025 · 1 min · 190 words · Rex

Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies

基本信息 标题: Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies 作者: Han Zhou(通讯作者)、Ruoxi Sun、Hamid Palangi、Shariq Iqbal、Ivan Vulić、Anna Korhonen和Sercan Ö. Arık。 作者单位: Google和剑桥大学 期刊/会议: ArXiv 发表年份: 2025.02.04 DOI: 2502.02533 开源地址: Github 关键词: Multi-Agent System, Large Language Models 研究问题 (Research Questions) 大语言模型,作为多个相互交互协作的智能体,可以解决复杂任务。这些智能体通过声明其功能的提示词以及协调智能体间交互的拓扑结构进行编程。本文所研究的主要问题是优化多智能体系统中的提示词以及智能体的拓扑结构。 研究背景 (Background) 尽管最近的研究探讨了自动化智能体设计各个方面,但在理解哪些因素对改进MAS性能最为关键方面仍存在差距。例如,DSPy自动化了设计示例以改进提示编程的过程。J Li(More agents is all you need作者)提出通过扩大多数投票中的代理数量来优化MAS。ADAS通过基于LLM的元代理编程代码表达的新拓扑。AFlow在预定义操作集中使用蒙特卡洛树搜索来寻找更好的拓扑。然而,包括提示词和拓扑在内的多个设计空间之间的相互作用仍然不明确。 核心贡献 (Key Contributions) 深入分析了影响基于LLM的MAS性能的设计因素,强调了prompt的重要性,并确定了有影响力的拓扑结构。 提出了一种名为Mass的新型多阶段优化器,通过在具有影响力的搜索空间中交错优化prompt和拓扑结构来自动化MAS设计。 大量数据在各种评估基准上显示出显著的性能提升,为构建有效的未来多智能体系统提供了指导。 设计多智能体系统(Designing Multi-Agent Systems) 作者认为MAS的设计可以分为两个层级:块级设计(Block-level)和工作流编排(Workflow-level orchestration)。对于块级,目标是设计单个智能体,通过更好的提示词设计最好的提示词来表现出特定的角色。对于工作流编排,它的优化涉及要包含智能体的类型和数量,以及如何以最有效的方式编排他们,这被称为拓扑优化。 $\mathcal{W}^{*}(a)=\arg\max\mathbb{E}_{(x,y)\sim\mathcal{D}}[f(\mathcal{W}(a)(x)),y]$ 块级:智能体的提示词设计(Block-level: Prompt Design for Agents) 对于块级,对下游任务影响最主要的是prompt,它定义了智能体的角色(例如,“You are an expert in reflecting on errors…”),提供额外的指令来塑造其行为(例如,“You should think step by step…”)以及可选地包含少量示例(zero-shot/one-shot/few-shot)来指导智能体的回复。比如,一种SOAT提示词优化器同时搜索指令和少量示例,其中示例是从模型自身在验证集上的正确预测中引导出来的,基于验证指标。基于这些示例,提示词优化器会为指令提出一些候选方案,并提供数据集摘要或各种提示词以提高候选方案的多样性。然后指令和示例会被联合优化。...

June 19, 2025 · 7 min · 1308 words · Rex