研究周报 · 2026.07.18–08.07 · Orchestration Trace、LLM-MAS系统侧与经典RL Pipeline

字数 5,023 预计阅读 13 分钟

精读arXiv:2605.02801,梳理orchestration trace、uniform credit diffusion、spawn counterfactual与从token到team的credit粒度;补齐LLM-MAS系统侧知识,并回顾REINFORCE、PPO、GRPO、GiGPO,下一步先跑通trace schema与最小2-agent环境。

作者 Yoyo_Lee 发表于

这周围绕 orchestration trace 精读arXiv:2605.02801:把传统single-agent trajectory扩成动态的typed event graph,并把credit unit从token、step、agent推到role与orchestrator。
另外补了LLM-MAS的系统侧知识,最后回顾REINFORCE、PPO、GRPO和GiGPO,下一步先把trace schema和最小2-agent数据流跑通。

本周清单

  1. 精读 Reinforcement Learning for LLM-based Multi-Agent Systems through Orchestration Traces (arXiv:2605.02801)
  2. 补LLM-MAS的系统侧:架构/拓扑、评测、通信记忆、安全与训练基建
  3. 重新回顾一下现在的基础知识——经典pipeline
  4. to-do:先跑通trace schema、对照四种credit signal、搭一个最小2-agent环境

一、精读2605.02801

1.1 2605.02801:orchestration trace

它把single-agent LLM RL的trajectory扩成了LLM-MAS中的orchestration trace,训练、审计和归因都基于这条trace。

作者把它定义成一个随时间生长的交互图:

G=(V,E,V,E)G=(V,E,\ell_V,\ell_E)

节点VV包括agent输出的token、orchestrator决策、spawn、message、tool call、sub-agent return、aggregate等事件;边EE记录“这次工具调用由哪次委派授权”“这个summary被哪个aggregator消费”之类的因果/时间依赖。这样一来,传统trajectory中线性的

(s0,a0,s1,a1,,sT)(s_0,a_0,s_1,a_1,\ldots,s_T)

只是它的一个退化特例。真实MAS里会branch(并行spawn)、join(多个结果聚合)、还会动态增减节点,没法再假装它是一个固定长度、固定agent数的joint trajectory。

作者把普通Dec-POMDP写成一个动态agent集合的M+M^+

M+=(It,S,A(),Aspawn,P,Ω,r,γ),M^+=\left(I_t,S,A(\cdot),A_{\text{spawn}},P,\Omega,r,\gamma\right),

其中ItI_t是时变的agent set,orchestrator额外拥有spawn(role, context) / despawn(i)这类action。

把原本的V(s)V(s)Q(s,a1,,an)Q(s,a_1,\ldots,a_n)写成了trace prefix上的value:

Vπ(Gt)=Eπ[τtγτtrτGt].V^\pi(G_{\le t})= \mathbb{E}_{\pi}\left[\sum_{\tau\ge t}\gamma^{\tau-t}r_\tau\mid G_{\le t}\right].

比把所有agent的消息拼成一个长prompt再套standard GRPO更接近真实系统。事件图建立后的delegatemessagetoolaggregate都可以成为独立的credit-bearing unit;在我自己写的minimal harness里,这些东西以message/tool result/stop condition的形式存在。

这篇文章提到了两个概念:

一是uniform credit diffusion。如果一条很长的multi-agent trace只在末尾给terminal team reward,再把同一个advantage广播给所有agent / token / message,trace变长时,单个决策的有效信号会被无关决策和baseline noise稀释。Dr.MAS中也提到了类似现象,shared reward被无结构地分给异质action会带来噪声,进而导致naive multi-agent GRPO的不稳定。

二是**spawn的counterfactual在on-policy log里天然不可识别。**假设当前prefix GtG_{\le t}下orchestrator选择了spawn,最后成功。需要估计的是

E[RGt,spawn]E[RGt,no-spawn],\mathbb{E}[R\mid G_{\le t},\text{spawn}]- \mathbb{E}[R\mid G_{\le t},\text{no-spawn}],

no-spawn那条branch没有被rollout,后续子图也不存在。只看已发生的trace,最多能估计历史上spawn的案例平均表现,不能在同一prefix下判断这次spawn的边际因果贡献。要么有branch coverage / off-policy evaluation,要么接受强structural assumption,要么显式生成反事实分支。

1.2 reward和credit

survey把LLM-MAS reward分成八族:shared team/outcome、individual agent、role-specific、process/PRM、tool-use、debate/verifier、orchestration,以及把前面混起来的hybrid reward。

如果只给一个终局RteamR_{\text{team}},reward很干净,但credit的负担很重:还要借助COMA/LOO/Shapley/critic/replay判断它该落在哪个节点。给每个step、message、tool call加dense process reward后,表面的分配问题会轻一些,但reward model / judge又成了新的attack surface。有一部分credit交给了PRM或judge。

Kimi PARL的reward设计如下:

rorch=rperf+λ1rparallel+λ2rfinish.r_{\text{orch}} = r_{\text{perf}} + \lambda_1 r_{\text{parallel}} + \lambda_2 r_{\text{finish}}.

rperfr_{\text{perf}}是最后任务做没做对,rparallelr_{\text{parallel}}是有效的并行收益,rfinishr_{\text{finish}}防止agent被乱spawn后挂在那边凑parallelism。

survey还列了几种MAS特有的reward hacking:

  • 为拿并行奖励而乱spawn的pseudo-parallelism;
  • shared reward下不干活也拿正advantage的free-riding;
  • judge看message就疯狂加废话的communication padding;
  • tool success被奖励后无意义多调工具的tool-spam;
  • policy和同源LLM verifier一起drift的verifier collusion。

这和CAD-GRPO的qiq_i选择直接相关。如果qiq_i只是“agent说自己做得不错”或“调用过一次工具”,很可能发生如上的reward hacking,不能作为合理的质量指标。适合进入回归的qiq_i应尽量对应compile/test partial pass、可验证的局部事实或受provenance约束的artifact change;否则即使β^i\hat\beta_i的数值看起来很好,也只是在分解一个被hack的proxy。

1.3 从token到team的credit粒度

文中有一张图把信号承载单元排成一条层级:

LLM-MAS中的credit-bearing unit层级

我之前的credit assignment基本处于trajectory/time和agent两个维度。这个hierarchy多了一层系统结构维度:role不等于普通agent id,orchestrator的action会改变后面有哪些agent,message也会改写其他agent的observation。

它非常像一条density–visibility的Pareto前沿,token级信号最稠密,但是离最终team outcome最远;team reward最干净、最可验证,但是一条trace却只有一个数;message和orchestrator决策很少,往往又是高杠杆点。不同层级都要看,不能把同一个reward重复分发八次。

这篇survey在其84篇curated pool里统计到:agent / role层已经比较拥挤,message层很稀,显式counterfactual message credit几乎只有C3;orchestrator层也还很薄,五种编排决策中when to stop截至2026-05-04没有明确的RL training method。其中作者提到了五个orchestration decision:

  1. 什么时候spawn;
  2. 委派给谁;
  3. 怎么通信;
  4. 怎么aggregate;
  5. 什么时候stop。

这五项将orchestrator拆成了可检验的action space。Puppeteer主要处理delegate,Kimi把spawn作为policy action,C3做communication/message层反事实,M-GRPO / Context-Folding更靠近aggregation;至于stop,大多数系统仍使用固定token/step cap,或在verifier成功后结束。我之前在harness里只是把stop condition当成一个简单的if-else。

1.4 survey对当前工作的修正

论文所说的explicit counterfactual message-level credit remains especially sparse有相对意义,但后续也有一些工作。2–5月已经出现SHARP、C3 v2 (Exact Is Easier)、CCPO/SEPO、COSAC、HCAPO、TreeMem等工作:

  • C3 v2的核心论点是LLM transcript在其设定里确定且没有隐状态,因此冻结完整历史、在frozen behavior policy下替换message,可以得到作者所谓的exact counterfactual;
  • CCPO走removal-style counterfactual,强调role/topology-aware的反事实基线;
  • COSAC用单次ridge regression拟合team reward的可加agent分解,再用fictitious continuation构造反事实优势,并把aristocrat utility推到sequential team;
  • SHARP是Shapley marginal credit + team reward + tool process reward的混合;
  • 另一派MAPPA / SEPO / HCAPO则更像生成式credit:让coach / critic LLM直接给action或step打分,便宜且稠密,但judge bias和可验证性问题很难绕过;
  • M-GRPO / HiPER还有一条“结构规避派”:不执着于显式逐message归因,而是先把planner-worker或plan-execute的层级拆开,给每层独立的group-relative advantage。

单独做message-level counterfactual/Shapley很难构成新意。接下来也许可以看看:

  1. 成功轨迹怎么分功劳、失败轨迹怎么找first error并做repair-aware blame,能否做成局部、有符号、总和守恒的训练信号;
  2. credit的质量怎样随agent数、拓扑复杂度、trace length退化,而不是只在2–3个agent的数学题里报一个均值;
  3. spawn / delegate / stop这类动态编排动作如何做反事实归因,尤其是no-spawn根本没有生成子图;
  4. measured credit(重放/分支/消融,贵但有可测含义)和generative credit(LLM judge,便宜但可能幻觉)能不能在同一套benchmark上正面对比;
  5. 如何做一个同时记录accuracy、parallel efficiency、collaboration quality、protocol overhead的shared MAS-CA benchmark。

COSAC的ridge、sequential counterfactual和Aristocrat Utility是需要正面对标的竞争对象。

CAD-GRPO要找出创新点,需要说清观察性qiq_i回归在哪些条件下有额外价值;和COSAC的fictitious continuation、C3 replay分别在哪个cost–bias–variance区间更合适;以及qiq_i的可验证性、回归残差、β^i\hat\beta_i跨batch稳定性等等能否作为是否使用零额外成本方法的诊断条件。

二、LLM-MAS的系统侧

2.1 从MARL到LLM-MAS

  1. LLM-MAS里大家天然来自同一个base model,更稀缺的是多样性。很多agent的差异只是role prompt、context、tool权限不同,同源team很容易出现一起犯同一种错的exploration collapse。
  2. 更关注何时把自然语言压缩成结构化state、何时用latent channel、怎样把外界输入ground到下游action。

2.2 架构和拓扑

LLM-MAS的早期工作大多是CAMEL / AutoGen / MetaGPT / Generative Agents这类手工范式。

Claude Code Agent Teams则更进了一步。它和传统subagent / handoff不完全一样,teammate是独立context window的完整session,点对点进各自的mailbox,message最后会作为synthetic user turn注入接收方的history。消息既是agent A的action,也是agent B下一步observation的一部分。这个结构便于记录trace-level credit,也暴露出Cognition反复强调的写冲突、context drift、single-writer问题,是一个训练侧还没有充分消化的动态MAS环境。

与此同时,GPTSwarm将agent system写成可优化图,节点可以改prompt,边的存在概率用REINFORCE学;ADAS/AFlow把搜索空间从固定graph拉到可执行的agent code。且很多时候prompt的影响大于topology,能带来增益的图只占设计空间很小一部分;MaAS / G-Designer / MasRouter / FlowReasoner则进一步走到per-query的架构分布、路由或workflow generation。

给我的启示是,低贡献的agent / 冗余message / 无效edge可以是prune对象,可能是它在当前trace没有贡献,或者是它在不同任务条件下永远不需要。前者是event-level credit,后者是structure learning。要谨慎进行永久拓扑剪枝,否则很容易把探索空间剪没。

且结构学习面对的是昂贵的black-box evaluation。每个candidate workflow都要真实跑LLM,GRPO还要在一个prompt下采样多条rollout,所以拓扑的gradient并不比普通RL更便宜。

2.3 评测

GAIA、SWE-bench、tau-bench等等第一代benchmark带来了可执行评测,但到2026年已经暴露出饱和、污染和outcome-validity问题。OpenAI公开停止使用SWE-bench Verified。HAL的model × scaffold × benchmark三维受控表面同一个模型更换prompt/context/tool wrapper/重试策略,分数变化可能大于换模型,甚至导致排名反转。

2605.02801就提出了至少四个维度:

  1. E1:task success;
  2. E2:parallelism efficiency / useful-agent utilization;
  3. E3:collaboration quality,例如message redundancy、consensus / diversity;
  4. E4:protocol overhead,例如delegation token、tool管理开销、error amplification和安全风险。

因此trace要作为typed event graph记录下来,至少保留topology/roles、spawn/despawn、event数、message/tool call数、token/wall-clock cost、reward channel、具体哪个credit unit收到advantage,以及untrusted input / human intervention等安全信息,就是实验数据格式要求了。

如果CAD-GRPO后面要做实验,首先要固定harness,准备strong single-agent和naive MAS,让team reward、agent proxy、counterfactual oracle都能在同一trace schema下复算。qiq_i的质量、回归诊断、credit与oracle的相关性 / sign accuracy也要单独列出。否则即使final reward涨了,也没法证明提升来自credit decomposition,而不是prompt/rollout budget的偶然差异。

2.4 memory、communication、context engineering

memory、communication、context engineering本质上研究的都是“哪个agent在哪个时刻看到哪些token”。

记忆是跨时间的信息路由,通信是跨agent的信息路由,context engineering是同一轮推理内的信息路由。

2.5 安全问题:message既是观测,也是攻击面

MAS里一段恶意tool output可以被一个agent总结、被第二个agent当作可信前提、再被aggregator写进共享memory,最后从局部污染变成false consensus。

因此核心就是不给不可信文本获得控制权的路径。minimal-harness中tool registry、permission、observation的包装就是实际决定了agent的action space和攻击面。

在CA中,就是要用failure attribution来定位哪个message / agent让错误开始传播,但不能为了训练signal把不可信消息直接喂给同源judge。

2.6 协议、训练基建

MCP把agent→tool的tools/resources/prompts接口标准化,A2A是agent→agent的横向协议;这里我重点看了verl-agent仓库,一些理解放在下一个part写。

harness负责跑message loop、tool、sandbox、stop;tracing把它记录成统一trajectory/trace;trainer再决定怎样把trace切成transition、怎样估advantage、怎样更新policy。要明确输入trace的字段、输出给哪个role/agent的advantage,以及如何和token mask / rollout group / weight sync对齐。

三、重新回顾一下现在的基础知识——经典pipeline

上面补齐LLM-MAS系统侧知识后,我又把训练侧的baseline过了一遍:Williams在1992年提出的REINFORCE、Schulman等人的PPO、DeepSeekMath里的GRPO,以及面向长时程LLM agent的GiGPO。

3.1 REINFORCE:policy gradient的起点(Williams, 1992)

Williams的Simple statistical gradient-following algorithms for connectionist reinforcement learning这篇论文,从最基本的Monte Carlo policy gradient出发。目标是最大化策略的期望回报:

J(θ)=Eτπθ[R(τ)]J(\theta)=\mathbb{E}_{\tau\sim\pi_\theta}[R(\tau)]

利用likelihood-ratio trick,梯度可以写成:

θJ(θ)tGtθlogπθ(atst),\nabla_\theta J(\theta) \approx \sum_t G_t\nabla_\theta\log\pi_\theta(a_t\mid s_t),

其中GtG_t是从时刻tt开始的future return。实际训练时通常还会减去一个baseline,写成At=Gtb(st)A_t=G_t-b(s_t),再用AtA_t乘上对应动作的log-probability gradient。轨迹表现好,就提高其中动作的概率;表现差,就降低这些动作的概率。

REINFORCE解决的是如何对随机policy求梯度,但没有处理更新本身是否稳定。如果奖励只在episode末尾给出,同一条轨迹前面的很多action都会收到几乎相同的信号,这就是uniform credit diffusion最早的形式;另一方面,Monte Carlo return的variance很高,训练也容易抖动。

baseline能做的是降低variance,不能自动识别某一个agent、message或orchestrator action的边际贡献。对CAD-GRPO来说,后面的advantage设计都绕不开同一个问题:GtG_tAtA_t究竟应该由什么可验证的相对量替代?

3.2 PPO:让policy update不要迈太大步(Schulman et al., 2017)

代表论文Proximal Policy Optimization Algorithms。它的直接前身是TRPO,后来又常和GAE一起出现在Actor-Critic训练范式中。PPO沿用REINFORCE的log-probability gradient,同时引入新旧policy之间的概率比:

ρt(θ)=πθ(atst)πθold(atst).\rho_t(\theta)= \frac{\pi_\theta(a_t|s_t)} {\pi_{\theta_{\text{old}}}(a_t|s_t)}.

PPO的clipped surrogate写成如下形式:

Lclip(θ)=Et[min(ρtAt,clip(ρt,1ϵ,1+ϵ)At)]L^{\mathrm{clip}}(\theta)= \mathbb{E}_t\left[ \min\left(\rho_tA_t, \operatorname{clip}(\rho_t,1-\epsilon,1+\epsilon)A_t\right) \right]

At>0A_t>0时,PPO允许提高好动作的概率,但超过1+ϵ1+\epsilon后,目标函数不再继续奖励这部分变化;当At<0A_t<0时,对坏动作的降权也会受到相应的限制。这样一批on-policy rollout可以重复做几轮minibatch update,同时避免一次更新把policy推得离旧policy太远。

实践里的PPO通常还会训练value/critic,并用GAE估计AtA_t。这两件事最好分开理解:critic/GAE主要降低advantage的variance,clipping主要限制policy update的幅度。PPO的clip并没有回答哪一个message或agent真正造成了最终结果。

3.3 GRPO:组内相对奖励替代critic(DeepSeekMath, 2024)

GRPO出现在DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models论文)中,被DeepSeek-R1大规模采用。对同一个问题qq,旧policy一次采样GG个输出o1,,oGo_1,\ldots,o_G,得到奖励r1,,rGr_1,\ldots,r_G,然后只在这个group内部做相对归一化:

Ai=rirˉσr+ϵnorm.A_i=\frac{r_i-\bar r} {\sigma_r+\epsilon_{\text{norm}}}.

这里rˉ\bar rσr\sigma_r分别是当前group奖励的均值和标准差。

在最常见的outcome supervision版本里,同一个输出的所有token共享这个AiA_i,随后仍然使用PPO式的ratio clipping和reference KL。GRPO沿用PPO objective,实质变化是用同一道题的其他答案充当baseline,不再额外训练value model。

多个回答放在一起比较,得到的是回答相对于组内平均水平的差值信号。对于数学、代码这类有verifier的single-turn任务,这种做法比较自然:正确答案的整段token一起提高概率,错误答案的整段token一起降低概率。DeepSeekMath也讨论了process supervision,但那需要额外的过程奖励;如果只用终局结果,GRPO的token-level credit仍然比较粗。

GRPO是critic-free,但并不是cost-free:value model的显存被同题多次rollout替代了,而且group里必须有奖励差异;如果整组全对或全错,优势就会接近零。组内relative advantage只是一种训练时的比较信号,不能解释成某个agent对team outcome的因果边际贡献。

3.4 GiGPO:episode group里再嵌step group(Feng et al., 2025)

Group-in-Group Policy Optimization for LLM Agent Training,针对ALFWorld、WebShop这类long-horizon、多轮、稀疏奖励的LLM agent任务。标准GRPO只有trajectory-level signal,一条轨迹对应一个A(τ)A(\tau),所以成功轨迹里的绕路动作和关键动作容易收到同样的奖励。

GiGPO保留外层的episode group,同时在已有trajectory中寻找重复出现的anchor state。它先对完整轨迹计算宏观优势:

AE(τi)=RiRˉFE.A_E(\tau_i)=\frac{R_i-\bar R}{F_E}.

然后把所有经过同一个状态s~\tilde{s}的动作聚成step-level group,再用折扣未来回报比较这些动作:

Rt(i)=k=tTiγktrk(i),AS(at(i))=Rt(i)Rˉst(i)FS.R_t^{(i)}=\sum_{k=t}^{T_i}\gamma^{k-t}r_k^{(i)}, \qquad A_S(a_t^{(i)})= \frac{R_t^{(i)}-\bar R_{s_t^{(i)}}}{F_S}.

这里Rˉ\bar R是episode group的平均总回报,Rˉst(i)\bar R_{s_t^{(i)}}是所有经过同一个anchor state的step return均值,FE/FSF_E/F_S是论文采用的归一化因子。

最终优势取两层信号的加权和,写成:

A(at(i))=AE(τi)+ωAS(at(i)).A(a_t^{(i)})=A_E(\tau_i)+\omega A_S(a_t^{(i)}).

这个组合同时保留了整条轨迹的质量信息,也能比较同一个状态下不同动作的长期效果。论文的WebShop例子里,多条轨迹都会回到同一个搜索结果页;点击正确商品、点击错误商品、继续翻页虽然可能来自同一个state,但长期回报不同,GiGPO因此可以给出局部的偏好排序。step group直接从已有rollout里离线构造,不需要为每个状态再额外采样。

对照verl-agent的实现后,我对GiGPO的数据流有了更具体的认识。长轨迹会先拆成独立的interaction step;每个样本至少要保留uid(同一个任务的一组rollout)、traj_uid(具体轨迹)、anchor_obs(当前动作执行前、用于匹配的环境观测)、rewardsstep_rewards和最终写回PPO的advantages。GiGPO再在同一个uid内按anchor_obs聚类,用同一anchor的discounted future return减去局部均值,得到micro/step-level advantage,再按权重加到episode-level advantage上。这里改变的是policy gradient中的advantage权重,不是环境reward本身。

same anchor指动作执行前的环境状态相同或足够相似,而不是同一个turn;同一条轨迹绕回来再次访问该状态,也可以参与比较。这样定义后,比的是同一个决策状态下不同动作的长期效果,而不是简单按时间步对齐。从代码看,verl-agent原生实现的局部粒度是environment step/一次agent action,并没有直接实现role-level或agent-level credit。如果以后迁移到MAS,分组key可以扩成(task_uid, anchor_state, acting_agent_id, role_id),但不同agent/role的目标、权限和可见信息不同时,不能只因为环境画面相同就放进同一个group。

一个turn对应的scalar advantage会复制给该动作的有效response token,所以当前实现也没有在一个action内部区分token-level credit。如果把这种分组与相对基线的模板推广到MAS,或许可以写成:

Afinal=Ateam+waAagent+wrArole+wtAturn.A^{\mathrm{final}}=A^{\mathrm{team}}+w_aA^{\mathrm{agent}}+w_rA^{\mathrm{role}}+w_tA^{\mathrm{turn}}.

当然这只是一个草图。只有每一层都有足够的same-anchor样本,且分组key确实对应可比较的决策状态,这个加法才有解释力。

这篇工作把credit粒度从trajectory推进到了step,但前提是不同trajectory之间能匹配到同一个状态。如果没有重复状态,ASA_S就会消失,方法就退化成了GRPO。

REINFORCE→PPO解决了policy gradient更新的稳定问题,PPO→GRPO→GiGPO则不断细化credit粒度。

四、to-do

4.1 先把trace schema跑通

下周先把2605.02801的trace schema映射到minimal harness,只补能重建一条rollout所需的字段:trace_id / group_id / rollout_id、event type、agent/tool、reward和provenance。先让一条trace可以离线重建,暂时不扩展动态拓扑。

4.2 在toy environment里对照四种credit信号

用同一批固定rollout跑REINFORCE、PPO、GRPO、GiGPO,记录Monte Carlo return、critic/GAE、组内relative advantage和anchor-state step advantage,先确认公式、归一化和有效样本数都能复算。

4.3 搭一个最小2-agent环境

先做coordinator + researcher/reviewer或者planner + executor的读并行、写串行任务,只比较single-agent、naive GRPO和CAD-GRPO,优先观察task success、rollout cost和credit/oracle correlation。暂时不做大benchmark和动态spawn。