AgentConductor: 面向竞赛级代码生成的多智能体拓扑演化 AgentConductor: Topology Evolution for Multi-Agent Competition-Level Code Generation
用 LLM 编排器根据任务难度动态生成并迭代精炼分层 DAG 拓扑,比最强基线最多提升 14.6% pass@1。
前置知识
LLM 多智能体系统(MAS)
由多个大语言模型驱动的智能体协同完成复杂任务的框架,每个智能体通常被赋予特定角色(如 Planner、Coder、Tester),通过预定义的通信拓扑(链式、树状、网状)共享信息。在代码生成中,MAS 已被证明比单智能体更有效,但固定拓扑无法适应不同难度任务,会导致简单问题上冗余通信。
本文核心问题就是现有 MAS 系统的拓扑设计缺陷,读懂 MAS 基本概念是理解 AgentConductor 改进点的必要前提。
分层有向无环图(Layered DAG)
一种图结构,节点被划分为若干层(layer 或 step),所有有向边都从较低层指向较高层,图中无环。在 AgentConductor 中,每个 step 内的 agent 可并行执行,跨 step 通信通过 ref 字段显式声明,这同时支持层内并行与跨层灵活连接,介于严格的链式与完全连接的网状之间。
AgentConductor 提出的改进型分层 DAG 是其方法核心,与传统链式、树状、网状拓扑的对比贯穿全篇,理解其结构特性是看懂创新的关键。
GRPO(Group Relative Policy Optimization)
一种基于分组比较的强化学习算法,由 DeepSeek 提出。它对每个 prompt 采样 G 条轨迹,用组内相对优势(减去均值、除以标准差)作为优化信号,无需单独的 critic 网络。相比 PPO,GRPO 计算效率更高、内存占用更小,特别适合多轮轨迹优化任务。
AgentConductor 的 RL 阶段使用 GRPO 作为优化器,基于多轮(最多 2 轮)拓扑生成轨迹的相对回报训练编排器,掌握 GRPO 是理解训练流程的前提。
SFT(监督微调)冷启动
在大规模预训练后,使用标注数据对模型进行有监督微调以适配特定任务。在 RLHF/RLAIF 流程中,SFT 阶段用于注入领域先验,让模型具备基本的格式和内容合规性,避免随机初始化的策略在 RL 阶段产生大量无意义输出。本文 SFT 数据由 GPT-4o 在 4500 道编程题上生成的 YAML 拓扑构成。
AgentConductor 训练分两阶段:SFT 提供拓扑先验、RL 精炼策略。论文消融实验显示,无 SFT 时小模型几乎无法生成有效拓扑,凸显了这一阶段的关键性。
研究动机
竞赛级编程(APPS、LiveCodeBench、CodeContests)是当前 LLM 最具挑战的任务之一,要求深度算法推理、问题理解与稳健实现。LLM 驱动的多智能体系统(MAS)通过精心设计的交互拓扑显著提升了代码生成性能,但现有方法存在三类缺陷:第一,固定拓扑(如 MetaGPT 的链式、MacNet 的层状)虽然提升了性能上限,却在简单问题上产生大量冗余通信与算力浪费;第二,剪枝类方法(AgentPrune、AgentDropout)在同一数据集/基准上复用修剪后的拓扑,无法匹配具体题目需求;第三,生成类方法(G-Designer)虽能按 query 生成拓扑,但在单次解题过程中保持冻结,无法根据执行反馈迭代改进。Workflow 中心 RL 方法(FlowReasoner、Chain-of-Agents)虽然支持环境反馈驱动,但仅约束于链式/树状通信,结构表达力不足,存在错误累积。这些缺陷共同导致两类瓶颈——简单题目上 token 成本过高、困难题目上拓扑表达力受限。
本文的目标是本文的核心目标是设计一个端到端的、可根据任务难度自适应调整通信密度的多智能体框架。具体而言:让单个 LLM 编排器对每个查询先推断题目难度与所需角色,再生成任务适配、密度感知的分层 DAG 拓扑;当首次执行失败时,利用执行反馈(错误类型、日志、历史拓扑)触发第二轮拓扑演化精炼。目标是同时提升 pass@1 准确率、降低 token 消耗、并在跨数据集上保持可迁移性。
与已有工作不同的是,本文的独特切入角度在于把"难度感知"与"反馈驱动"统一到同一个 RL 训练目标中。已有方法要么只做剪枝/生成的静态优化(密度固定),要么只做链式/树状的 RL(结构受限),要么多轮与图结构不可兼得。AgentConductor 同时引入了两个新机制:一是把多智能体交互的 token 成本解析映射为图密度函数 $S_{\text{complex}} = \exp(S_{\text{node}} + 2\cdot S_{\text{edge}} + S_{\text{depth}})$,从理论上证明其作为拓扑密度的合理性;二是用"难度区间划分"为三档(4/7/10 节点上限)给出密度上界,避免对精确数值的过度剪枝。这两个机制使拓扑密度可按难度灵活伸缩且不破坏拓扑有效性。
核心方法
AgentConductor 的整体思路是"一个中央 LLM 编排器 + 一池可调用角色 + RL 训练"三件套。编排器是个 3B 参数的 Qwen2.5-Instruct,训练好后保持冻结,对外提供编排服务。具体流程为:给定编程题,编排器先用 SFT+GRPO 学到的策略推断难度等级(introductory/interview/competition 三档),从角色池(planner、searcher、algorithmer、coder、debugger、tester)中挑选合适角色,输出一段 YAML 格式的多 agent 协作计划;系统把 YAML 解析成分层 DAG,按层并行执行;若 tester 在沙箱中跑代码未通过,则把错误类型、执行日志、上轮拓扑作为观察反馈给编排器,进入第二轮(最多两轮)。这种设计同时实现了"密度自适应"和"反馈驱动演化"两个目标。
本文核心创新点在于把"图密度评估函数"与"难度区间划分"结合,构造了一个可微、可优化的拓扑生成奖励信号。与已有方法相比,区别有三:(1)已有方法要么固定拓扑要么单调稀疏化,本文允许密度按难度区间连续调节;(2)已有 workflow RL 只能表示链式/树状,本文支持任意分层 DAG(含跨层 ref 边与层内并行);(3)已有方法无法在多轮内重画拓扑,本文让编排器基于执行反馈在线重生成。关键的数学创新在于把 token 成本解析地映射到三个归一化的图度量(节点数、边密度、图深度),并证明 DAG 深度等于其层数 $b$(Theorem 1),从而把图深度直接简化为 $s = b$,避免在执行时做图遍历。
方法步骤详情
训练阶段分三步:(1)SFT 数据生成:3 个竞赛数据集(APPS、LiveCodeBench、CodeContests)按 3 档难度每档 50 题共 450 题,调用 GPT-4o 生成 YAML 拓扑,经语法校验、JSON schema 校验、去重、可执行校验、GPT-4o 重校验 5 道关卡;每题再依据不同错误类型生成二轮演化拓扑,合计 2700 个;外加 2 个基础数据集 300 例,合计 4500 条 SFT 样本。(2)SFT 训练:用 LLaMA-Factory 对 Qwen2.5-3B-Instruct 做 LoRA 微调,学习率 $1\times 10^{-4}$,batch size 4。(3)RL 训练(GRPO):用 Verl + vLLM 框架,最大生成 4096 token,组大小 $G=8$,学习率 $1\times 10^{-6}$,最多 2 轮;奖励 $r_\phi(G^{(k)}, z_{\text{code}}^{(k)}) = r_e + r_g$ 由执行正确性奖励(含 YAML 校验 +5 类代码错误奖惩)与密度奖励(含 $S_{\text{node}}, S_{\text{edge}}, S_{\text{depth}}$ 三子项)按难度上界 $N_{\max}(l)\in\{4,7,10\}$ 加权求和。推理阶段:编排器冻结后直接调用,先 infer 难度再生成 YAML 拓扑,最多 2 轮。
技术新颖性
技术新颖性体现在四点。其一,定义在分层 DAG 上的图密度评估函数 $S_{\text{complex}}$ 是首次把多 agent 通信成本严格映射到图论度量的工作,文中给出了从 token 成本 $C_{\text{total}}$ 到密度 $S = |V| + 2|E|/|V| + s$ 的完整推导,并证明 $\tanh(\frac{N_{\max}(l)-|V|}{N_{\max}(l)})$ 在节点超限时给予惩罚。其二,Theorem 1 证明分层 DAG 的深度等于其层数 $b$,把 $d$ 的计算从图遍历降为 $O(1)$,这对实时密度评估至关重要。其三,难度区间划分策略避免了对精确数值的过度剪枝——通过 $N_{\max}(l)$ 而非硬阈值,让模型在密度空间内有平滑的探索梯度。其四,多轮反馈驱动的在线重生成:第二轮可复用/重跑/新增 agent,agent 行为根据上轮输出演化,实现了拓扑而非仅仅角色的迭代。
实验结果
实验在 3 个竞赛级(APPS、LiveCodeBench v4、CodeContests)+ 2 个基础级(HumanEval、MBPP)共 5 个数据集上对比 4 类 11 个基线。在竞赛级上,AgentConductor 3B 取得 pass@1 准确率 58.8%/46.3%/38.8%,平均 48.0%,比第二好的 MetaGPT 平均 43.2% 提升 4.8 个百分点,比最强单点(APPS 上的 MetaGPT 51.3%)高 7.5 个百分点,APPS 上相对最强基线提升 14.6 个百分点。在基础级上,AgentConductor 取得 97.5%(HumanEval)和 95.1%(MBPP),分别比第二好的 FlowReasoner 提升 0.2 和 1.2 个百分点。在成本/密度分析中(Table 3),APPS 上 AgentConductor 提示 token 277,600、生成 token 79,800,比 AFlow(531,450/184,800)减少 48%/57%;平均 $S_{\text{complex}}=5.2$ 高于所有基线(AFlow 3.7、FlowReasoner 2.4、Chain-of-Agents 4.1),意味着更稀疏的拓扑。Figure 5 显示在 APPS、CodeContests、LiveCodeBench 三档难度上 AgentConductor 都能按难度动态调整密度,而基线在所有难度上密度几乎一致。消融实验(Table 4)证明:w/o SFT 时 APPS valid 率仅 15%、HumanEval 13%,说明 SFT 是有效性的必要条件;w/o RL 时 APPS 准确率 29.8%、密度 2.7、valid 56.5%,说明 RL 把准确率提升近一倍;w/o $r_e(E_{\text{yaml errors}})$ 时 valid 率掉到 56.8%,说明 YAML 格式奖励对结构性最关键;w/o $S_{\text{node}}$ 时 APPS 准确率 49.2%,是所有密度子奖励中影响最大的。跨域实验(Table 5)显示在 GAIA/HLE/PopQA 上,3B 的 AgentConductor 全面超过 7B 的 Chain-of-Agents(GAIA Avg. 53.8 vs 50.8,HLE 22.6 vs 18.0,PopQA 50.3 vs 46.5),验证了方法的领域泛化性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| APPS (Competition-level) | pass@1 accuracy (%) | 58.8 | MetaGPT 51.3 (最强) | +7.5 绝对,相对最强基线 +14.6% |
| LiveCodeBench v4 (Competition-level) | pass@1 accuracy (%) | 46.3 | Chain-of-Agents 44.9 | +1.4 绝对 |
| CodeContests (Competition-level) | pass@1 accuracy (%) | 38.8 | FlowReasoner 37.7 | +1.1 绝对 |
| HumanEval (Basic) | pass@1 accuracy (%) | 97.5 | FlowReasoner 97.3 | +0.2 绝对 |
| MBPP (Basic) | pass@1 accuracy (%) | 95.1 | MapCoder 94.1 / MetaGPT 92.3 | +1.0 绝对 |
| APPS Prompt Token 消耗 | tokens | 277,600 | AFlow 531,450 | -48% 节省 |
| APPS Completion Token 消耗 | tokens | 79,800 | AFlow 184,800 | -57% 节省 |
| APPS 平均图密度($S_{\text{complex}}\uparrow$) | $S_{\text{complex}}$ score | 5.2 | AFlow 3.7 / FlowReasoner 2.4 | 拓扑最稀疏 |
局限与改进
作者明确承认的局限:本工作主要在竞赛级代码生成任务上验证,对其他推理/问答领域仅做了小规模跨域实验(GAIA 15.8% 零样本迁移、Chain-of-Agents 7B 对比 3B 我们的模型)。方法依赖 GPT-4o 生成 SFT 拓扑、GPT-4o-mini 执行各 agent,外部 API 成本不可忽视;2 轮上限可能不足以处理需要多轮深度迭代的极端难题。隐含的局限:(1)3B 编排器虽然有效,但与 SFT 数据规模(4500)紧密相关,扩展到其他代码语言/任务时需要重训或微调;(2)$N_{\max}(l)\in\{4,7,10\}$ 这三个值是统计 SFT 样本后人工设定的,并非学习得到,可能对分布外难度不鲁棒;(3)系统依赖 tester agent 的沙箱执行反馈,理论上受限于沙箱支持的语言范围(目前仅 Python);(4)难度判断完全由编排器自行 infer,没有外部难度标签监督,存在错误归类的风险;(5)多层 / 跨 turn 通信虽然灵活,但 Orchestrator 必须把整段 YAML 写到 $S_{\text{complex}}$ 上界内,复杂的竞赛题可能逼近上界而无法表达足够丰富的协作。
独立分析的弱点
独立观察到的弱点与改进方向:(1)难度判断无显式监督,编排器对"易/中/难"的判断可能与人类认知错位,尤其在跨数据集迁移时。改进方向:在 SFT 阶段为每题标注 ground-truth 难度(如基于题目的解题错误率或参考解法长度),把难度作为辅助监督信号。(2)$N_{\max}(l)$ 是离散三档,对极难题(接近竞赛决赛级)显得过紧,可考虑把 $N_{\max}$ 改为连续可调函数,如 $N_{\max}(l) = \alpha \cdot \text{diff}(x) + \beta$,其中 $\text{diff}(x)$ 由问题长度、关键词等可计算特征得到。(3)单次测试只奖励 1.5,其他错误奖惩按 0.6-1.0 拉开,奖励曲线不平滑,可能导致 RL 训练中策略对微小变化不敏感;可改用基于测试用例通过率的稠密奖励。(4)多轮机制只到 2 轮,对需要长时间试错的难题不够。改进方向:引入基于中间代码质量(覆盖率、运行时)的自适应停机条件,或扩展到 $K>2$ 轮但对后续轮次折扣 $\gamma<1$。(5)跨域实验只用 50 例 GAIA 零样本,证据有限,结论偏乐观,需在更多领域做大样本验证。(6)YAML 格式是 hand-crafted 的,复杂拓扑下长度膨胀会接近上下文窗口,限制可表达性;可考虑用更紧凑的图序列化方式(如结构化 JSON + 引用 ID)。
未来方向
作者提出的方向:(1)把方法扩展到更多代码语言(C++、Rust、Java),需要建立对应沙箱;(2)扩展 agent 角色池以支持检索增强、工具调用等更复杂任务。基于结果的延伸方向:(3)把编排器的能力推广到软件工程级任务(多文件项目、调试长代码库),此时拓扑可能需要嵌入文件级图结构;(4)研究拓扑演化的可解释性,让编排器在每轮决策时给出"为什么这样连边"的自然语言解释,提升可信度;(5)将 GRPO 替换为更具样本效率的多轮 RL 算法(如 PPO with shared critic 或 RLOO),降低训练成本;(6)引入人类反馈(RLHF)以更好地对齐难度判断与人类认知;(7)探索自演化机制:让编排器在没有显式难度标签的情况下,自己发现任务聚类结构,并据此自动确定 $N_{\max}$;(8)把"密度感知的奖励设计"思想抽象为通用框架,应用到训练任意自适应计算量的模型(如 conditional computation、early-exit networks)。
复现评估
复现评估:作者在 4 卡 A800 集群上完成训练,单次完整训练(SFT+RL)总时长未明确披露但应在数十小时量级(GRPO 110 步 + SFT 几千步 LoRA 微调)。数据方面:SFT 4500 样本由 GPT-4o 在 3 档难度各 50 题上生成,依赖外部 API 调用,难以严格复现,但论文给出了完整的生成 prompt(Figure 6)、过滤规则和示例。代码方面:未明确说明开源仓库地址(arXiv 预印本,代码可能随后续版本发布);基于 LLaMA-Factory 和 Verl/verl 框架,二者均为开源。算力门槛:4×A800(约 320GB 显存)+ GPT-4o-mini API 调用,对大多数实验室可承担。难度:复现 SFT 部分门槛较低(数据生成 + LoRA 微调),但 RL 阶段涉及 vLLM 部署、verl 框架定制、GRPO 多轮实现,需要较强的工程能力。超参数已在论文中详尽给出(学习率、batch size、$G=8$、$\varepsilon$、$\beta$ 等),主要风险点在于:GPT-4o 生成的 SFT 拓扑可能与论文最优版本略有差异,导致 SFT 起点不同;GRPO 训练对随机种子较敏感,论文报告 3 次运行的 std 较小(APPS ±0.3、HumanEval ±0.1),复现时应多次运行取平均。
论文图表
左半部分对比 Chain、Tree、Mesh 三种经典拓扑的通信能力(错误累积、跨层通信、并行支持等维度);右半部分用图示展示 AgentPrune、Chain-of-Agents、FlowReasoner 等方法与 AgentConductor 在"是否按难度生成"、"是否反馈驱动"两个维度上的差异。
把本文的"难度感知 + 反馈驱动"定位在已有方法谱系中,帮助读者快速理解相对位置与差异化创新点。
在 3 个跨域数据集(GAIA L1/L2/L3/HLE/PopQA)上对比 Chain-of-Agents 7B 与 AgentConductor 3B。AgentConductor 3B 在所有 6 个子任务上都超过 7B 的 Chain-of-Agents:GAIA Avg. 53.8 vs 50.8、HLE 22.6 vs 18.0、PopQA 50.3 vs 46.5。
证明方法不仅在代码生成上有效,还能在推理/问答领域以更小模型(3B vs 7B)超越对照——这是论文泛化性声明的关键证据。
完整的 system prompt:声明 Orchestrator 的目标、6 种 agent 类型及其 token 表示、YAML 格式要求、难度等级分类、动态调整 agent 数量与步骤的指令、tester 必须出现在最后一步的约束、最大轮数 {max_turn_num} 等。
复现 Orchestrator 行为所必需的提示词模板,理解 prompt 结构对还原实验至关重要。
三张子图展示 RL 前 110 步训练过程中:训练奖励、有效的二轮拓扑数量、验证奖励三个指标的曲线。三条曲线都呈现稳定单调上升趋势,没有发散迹象。
训练稳定性的证据,说明 GRPO 在多轮拓扑优化任务上是稳定可收敛的——这是判断方法工程可行性的关键。
6 个真实案例(hard/medium/easy × 2)展示 Orchestrator 生成的拓扑:随着难度变化,agent 数量和边的密度明显不同(hard 用 P/A/S/C/T/D 多个 agent 满负荷协作,easy 只用 C/T 两个 agent 的极简链路)。第二列展示 Turn 2 相对 Turn 1 的调整——可能增加 debugger 或调整 ref 关系。
定性案例展示"难度自适应 + 多轮演化"在实际题目上的具体表现,是把抽象数字落到读者直觉的桥梁。