技能是拐杖,练完就扔:R²Orch 用递归自博弈把编排器练到"零技能上岗"

你有没有发现一个挺拧巴的现象——我们给智能体系统塞了一堆 skill 卡片、工具说明书、流程模板,上线时确实好用了,但这些"拐杖"从此就拿不下来了。推理时每个请求都得拖着长长的 skill 上下文,成本翻倍不说,换个场景 skill 库一失效,系统直接打回原形。

更拧巴的是训练侧。用过 GRPO 训智能体的朋友大概率踩过这个坑:一道题 roll 出八条轨迹,全对或者全错,组内优势一算全是零,这批样本白跑了。任务太简单或太难都学不到东西,课程还得人肉挑。想训一个"自己出题、自己变强"的编排器?自博弈框架是有,但 solver 身上挂着的 skill 一撤掉,之前挑好的任务瞬间从"有信号"变成"全错",优势崩塌又回来了。

这周看到的 R²Orch(arXiv:2610.22740)就是冲着这个死结来的,思路我觉得相当漂亮:让出题和撤拐杖互为因果。


核心摘要

R²Orch 提出递归自博弈编排(Recursive Self-Play Orchestration):内循环里 Proposer 给 Director(编排器)出题做自博弈训练,外循环负责把 Director 不再需要的 skill 逐个撤掉,外循环还反过来改写内循环的出题目标。两个关键机制:Recursive Learnability 用"撤掉候选 skill 之后 rollout 结果仍然有分歧"来给任务打分,从源头避开优势崩塌;Skill Withdrawal 把每个 rollout group 变成一次随机对照实验,用贝叶斯后验决定 skill 何时退休。最终在 12 个基准(QA、数学、代码、交互)上全胜六类 baseline,IID 平均分 89.79 对最强 baseline PATS 的 86.00,AIME 2026 上 81.33 对 74.00,而且测试时一个 skill 都不带。这不是又一个 prompt 工程技巧,是一套有理论支撑的闭环训练范式,值得细读。

论文信息

  • 标题:R²Orch: Recursive Self-Improvement for Agent Orchestration via Self-Play within a Skill-Internalization Loop
  • 作者:Mingda Zhang, Yun Huang, Qiang Huang, Yanjin Li, Rui Qian, Qichao Zhao, Tiesunlong Shen, Na Zhao, Jian Wang, Xiaoying Tang
  • 机构:香港中文大学(深圳)、复旦大学、UIUC、清华大学、新加坡国立大学
  • 链接:https://arxiv.org/abs/2610.22740 | 代码:https://github.com/beita6969/R2Orch
  • 版本:v1 提交于 2026-10-15,v2 于 2026-10-22

🎯 问题动机:三条路线,三个死穴

先交代背景。这里的"编排"指的是用一个可学习的 Director 模型去搭建智能体图(agent graph)——每个节点是一个有角色 prompt 和模型路由的智能体,每条边是一次任务交接,Director 通过一串原子操作(AddAgent、SetPrompt、SetModel、ConsiderRelation、Finish 等)从空图开始把整套多智能体工作流"画"出来,然后交给冻结的 Worker 模型去执行。Director 才是被训练的对象,Worker 全程不动。

图1:递归需要两个通道

图1:外循环(Objective,粉色虚线)给内循环定目标,内循环里 Proposer-Director 自博弈在随机化 rollout group 上跑,产生的证据(Evidence,蓝色虚线)回传给外循环决定撤掉哪个 skill。图下方能看到 rollout group 被分成 Without k(撤掉候选 skill)和 With k 两部分,这正是全文最关键的巧思。

现有工作大致三条路线,作者把它们摆在一起做了张对比图,每个都有自己的死穴。

图2:四种范式对比

图2:(a) 学习型编排在人工收集的静态任务池上训练(static curriculum);(b) 自我改进智能体带着 skill 测能力前沿(skill-anchored frontier),skill 一走优势就崩;(c) skill 脚手架用成功率门槛撤引导(success-rate gate),信号噪声大;(d) R²Orch 用下行(目标)和上行(证据)两个通道把内外两个循环扣在一起。

三个死穴拆开看:

死穴一:课程是人手捏的。 学习型编排(AFlow、AgentFlow 这类)在人工收集的任务池上训练;自博弈方法(比如 SESA)倒是会自己出题,但 solver 全程挂着 skill。选题和撤 skill 两件事互不通信——你在"带着拐杖"的状态下调难度,拐杖一撤难度全变。

死穴二:优势崩塌。 GRPO 这类组相对 RL 靠同一任务的 rollout 之间的差异学习,全对或全错就没梯度。这个问题社区早就知道,DAPO 的做法是把崩塌的组扔掉。但自博弈场景更微妙:任务难度是带着 skill 测的,撤掉 skill 后原本"中等难度"的任务直接滑向全错,崩塌卷土重来。

死穴三:评估信号不可靠。 现有 skill 脚手架(PATS、SKILL0、SLIM 这些)按成功率阈值、预设预算或者验证集差距来决定撤不撤 skill。问题在于成功率混在一起了——它同时反映"任务选得怎么样"和"skill 有没有用",一个噪声分数决定一个 skill 的生死,skill 库就这么漂移到"插 skill 还不如不插"的境地。

说实话,这三个问题单独看都有人做过,但把它们看成一个耦合系统的问题,是这篇论文的独到之处:选任务的标准和撤 skill 的证据,其实可以是同一批 rollout。


🧠 方法核心:一个 rollout group,养活两个循环

图3:R²Orch 总览

图3:上半部分是主流程——Proposer 选题,Director 编辑画布生成智能体图,rollout group 被随机分成隐藏候选 skill(Without k)和可见(With k)两部分,GRPO 更新 Director;右上角是 Skill Withdrawal 的决策过程(paired contrast → ledger → 后验 → withdraw/admit)。左下角是 Recursive Learnability 的打分示意,右下角是 Skill Withdrawal 的数学细节。

整个框架的枢纽是一个设计:每个 rollout group 里,大部分 rollout 看不到候选 skill,小部分能看到。形式上,对任务 \(x\) 检索到的 skill 集合 \(K_x\),选一个被测 skill \(k_x\),组内 \(G = n_h + n_v\) 条 rollout 按

\[q_x = \frac{n_h}{G}\,\delta_{K_x \setminus k_x} + \frac{n_v}{G}\,\delta_{K_x}\]

分配上下文,且 \(n_h \gt n_v\)。这一下就盘活了整个系统——同一组 rollout,既是 GRPO 的训练数据,又是对 skill 价值的随机对照实验,还是 Proposer 的打分依据。零额外 rollout。

内循环:Director 怎么训

Director 的更新就是 GRPO 的组相对估计,写成留一法梯度的形式:

\[\nabla_{\theta}\,\mathbb{E}_{K \sim q_x}\big[v_K(x;\theta)\big] = \mathbb{E}\Big[\frac{1}{G-1}\sum_{i=1}^{G}(u_i - \bar{u})\,\nabla_{\theta}\log\pi_{\theta}(\xi_i \mid x, K_i)\Big]\]

其中 \(\xi_i\) 是第 \(i\) 条 rollout 的图编辑轨迹,\(u_i\) 是奖励(正确性减去 Worker 成本)。关键不在公式本身,而在于 \(q_x\) 把大部分概率质量放在"没有候选 skill"的上下文上——每一次更新都在教 Director 不依赖这个 skill。skill 还没正式退休,Director 已经在为适应没有它的日子了。这个设计真的很妙,撤退不是突然发生的,是排练了无数遍之后的正式执行。

下行通道:Recursive Learnability

外循环怎么告诉内循环"该出什么题"?作者的推导从 KL 正则化 RL 出发:一步大小为 \(\beta\) 的近端策略更新会把策略朝成功方向倾斜,其对数配分函数在 \(\beta = 0\) 处的曲率恰好是 \(p_K(1 - p_K)\)——成功率的方差,也就是这个任务还能贡献多少学习信号。这个量在 learnability 文献里不新鲜,但 R²Orch 的关键改动是:不在当前上下文上算,而是在撤掉候选 skill 的上下文上算:

\[\ell_{\mathrm{rec}}(x) \coloneqq 4\,p^{-}(1 - p^{-})\]

其中 \(p^{-} = p_{K_x \setminus k_x}(x)\) 是"没有候选 skill"时的成功概率。这个分数在 \(p^{-} \in \{0, 1\}\) 时归零(全对全错都没信号),在 0.5 处取峰。妙处在于:随着 skill 一个个被撤走,\(K_x \setminus k_x\) 越来越小,这个打分函数自动跟着脚手架往下走,始终瞄准"下一个 Director"的前沿,而不是"今天这个还挂着 skill 的 Director"的前沿。

Proposer 的奖励还包了一层经验贝叶斯:用 Beta 先验把观测到的成功率往数据集的运行均值收缩,样本少的任务不会被一两个偶然成功带偏;组内结果全塌(\(c_x = 1\))时直接罚 \(\lambda_P\);只有可见部分有进展时打 \(\gamma\) 折扣。最后课程是闭式的 Gibbs 分布:

\[\rho^{\star}(x) = \frac{\rho_0(x)\,e^{\bar{R}_P(x)/\tau}}{\sum_{x' \in \mathcal{C}_t}\rho_0(x')\,e^{\bar{R}_P(x')/\tau}}\]

上行通道:Skill Withdrawal

内循环怎么给外循环递证据?因为组里哪些 rollout 隐藏 skill 是随机的,每组就是一个随机区组实验,两部分均值之差

\[z_x = \frac{1}{n_v}\sum_{i \in \mathcal{V}_x} y_i - \frac{1}{n_h}\sum_{i \in \mathcal{H}_x} y_i\]

是 skill 因果效应 \(\Delta_k(x) = p_{K_x} - p_{K_x \setminus k}\) 的无偏估计。论文里 Eq. (12) 把这件事说得很透:观测成功率 = 课程项 + \(\frac{n_v}{G}\Delta_k(x)\),Recursive Learnability 会把课程项往 0.5 拉,所以拿成功率当阈值读到的其实是课程而不是 skill——这就是 PATS 那类方法的根本缺陷,paired contrast 把课程项消掉了。

这些 contrast 累积成每个 skill 的贝叶斯 bootstrap 后验 \(\Pi_k\),撤留决策就是贝叶斯决策论:

\[\mathcal{W}_t = \{k : n_k \geq n_{\min},\ \mathbb{E}_{\Delta \sim \Pi_k}[\Delta^{+}] \leq \epsilon\}\]

期望正损失不超过 \(\epsilon\) 就撤;后验显示 \(\Delta \leq 0\) 的概率够低的新 skill 才准入。Thompson 采样决定下一个测哪个 skill——最可能没用的优先测。

到这里闭环完成了:外循环撤 skill → Director 在某些任务上暴露新失败 → 失败蒸馏成新 skill(论文说从"两部分都失败"的组里蒸馏)→ 新 skill 进库等待检验 → Proposer 按新的 \(K_x \setminus k_x\) 重新打分选题。失败蒸馏成 skill,skill 蒸馏进参数,撤退引出新失败。 三轮转化推着 Director 走向零技能部署。

作者还给了个挺干净的会计恒等式(Proposition 1):\(J_{\mathcal{S}_T}(\theta_T) = J_{\mathcal{S}_0}(\theta_0) + \sum_{t \lt T}(\Gamma_t - C_t)\),最终成功率 = 初始成功率 + 内循环收益 \(\Gamma_t\) 减去每次撤 skill 的代价 \(C_t\)。Recursive Learnability 负责做大 \(\Gamma_t\),Skill Withdrawal 负责压小 \(C_t\),分工明确。


📊 实验结果

设置

六个 IID 基准供训练和测试:HotpotQA、NQ-Open、MedQA、AIME(早年题训练、AIME 2026 测试)、MBPP+、ALFWorld;六个 OOD 基准只测不练:TriviaQA、MuSiQue、GPQA、MATH-Hard、SWE-Bench、WebShop。每个测试集 128 题(AIME 2026 为 30 题),五次运行取均值±标准差。Worker 是冻结的 Qwen3.5-9B,所有方法共享 Worker、训练任务和算力预算,R²Orch 全程零 skill 测试。训练开销约 106 个 A100 小时(200 个 cycle)。

Baseline 横跨六类:直接提示(Qwen3.5-9B、DeepSeek-V4-Flash)、骨干训练(SFT、GRPO)、工作流搜索(AFlow)、RL 编排(AgentFlow、FlowSteer)、skill 内化(SKILL0、PATS)、自博弈+技能演化(SESA、MetaSkill)。这个 baseline 阵容覆盖得相当全。

主实验:12 个基准全胜

方法 HotpotQA EM NQ-Open EM MedQA Acc AIME 2026 MBPP+ ALFWorld SR IID 均分
Qwen3.5-9B 57.81 23.59 70.94 48.67 78.59 47.19 61.35
DeepSeek-V4-Flash 71.25 38.44 84.38 49.33 84.69 60.16 69.64
SFT 63.28 25.78 73.59 34.67 78.28 40.94 56.87
GRPO 69.22 24.53 77.03 34.00 82.19 50.94 61.04
AFlow 87.66 76.56 89.22 52.00 85.31 73.44 74.99
AgentFlow 86.25 81.41 88.44 61.33 85.63 76.09 77.87
FlowSteer 87.97 83.91 90.94 67.33 88.91 82.19 82.34
SKILL0 87.34 82.97 89.53 64.67 87.97 83.44 81.40
PATS 89.06 84.22 91.41 74.00 90.63 87.97 86.00
SESA 88.13 83.28 88.75 68.00 88.44 81.09 81.57
MetaSkill 87.03 82.50 88.44 55.33 86.25 79.06 77.27
R²Orch 91.09 86.09 94.06 81.33 93.13 90.63 89.79

表1(IID 部分,五次运行均值 %)。OOD 部分 R²Orch 均分 78.79,第二名 PATS 76.13,同样全胜。

几个值得停一秒的数字:

训骨干几乎没用,编排才是杠杆。 Qwen3.5-9B 直接提示 61.35,SFT 反而掉到 56.87,GRPO 也只有 61.04;而同样冻结 Worker、只训练编排层的 R²Orch 干到 89.79。28 个点的差距全部来自"怎么组织 Worker",而不是 Worker 本身。顺带说一句,直接提示的 DeepSeek-V4-Flash(69.64)比自家 Qwen3.5-9B 高 8 个点,但 R²Orch 用更弱的 Qwen3.5-9B 做 Worker 照样反超 20 个点——组织方式碾压模型差距,这个结论对工程选型很有杀伤力。

AIME 2026 是拉开差距的地方。 最强 baseline PATS 拿到 74.00,R²Orch 81.33,差 7.3 个点。数学竞赛题上 skill 脚手架最容易失效,因为套路化 skill 对新题泛化差,R²Orch 把 skill 内化进参数反而更稳。

OOD 侧同样全胜:TriviaQA 95.31、GPQA 86.56、MATH-Hard 94.69、SWE-Bench 42.81(PATS 40.16)、WebShop 91.09(PATS 87.97)。注意 R²Orch 在这些 OOD 数据集上零训练、零 skill。

消融:每个组件都在干活

变体 HotpotQA MedQA AIME MBPP+ ALFWorld WebShop
完整 R²Orch 91.09 94.06 81.33 93.13 90.63 91.09
仅 GRPO(去自博弈) 86.09 88.44 59.33 86.88 73.44 71.72
无 skill 脚手架 86.88 89.22 64.00 88.13 77.81 76.09
自博弈(均匀选题) 90.16 92.34 66.67 90.47 86.88 87.03
失败奖励(替代 RL 目标) 87.97 90.47 64.00 90.00 84.06 83.13
成功率阈值(PATS 规则) 90.00 91.88 74.67 90.31 87.81 87.66
固定脚手架(不撤 skill) 88.13 90.47 66.67 88.75 77.81 76.09

表2 节选(零 skill 测试,%)。完整表还包含 DAPO、SKILL0、SLIM 等变体,均低于完整版。

两个数据最扎眼。去掉自博弈只剩 GRPO,AIME 从 81.33 崩到 59.33,掉了 22 个点——没有课程调控,难题上全是崩塌的组。把撤退规则换成 PATS 式的成功率阈值,AIME 从 81.33 掉到 74.67,正好坐实了论文对 Eq. (12) 的分析:成功率阈值读到的是课程不是 skill。

Proposer 目标对比:出题标准是胜负手

作者单独对比了六种出题目标(其余组件全部固定):

目标 HotpotQA MedQA AIME ALFWorld
均匀采样 90.16 92.34 66.67 86.88
DAPO 动态采样 88.13 92.50 68.67 87.50
GRESO 选择性 rollout 88.44 91.56 68.00 85.78
当前脚手架 learnability(SFL) 90.47 92.03 70.67 86.88
Solve-rate 奖励(Absolute Zero) 90.78 92.34 77.33 88.13
Uncertainty 奖励(R-Zero) 90.31 92.50 70.00 87.34
Recursive Learnability 91.09 94.06 81.33 90.63

"在带 skill 上下文上测 learnability"(SFL)在 AIME 上比 Recursive Learnability 低 10.7 个点——这个对比直接验证了论文的核心论点:技能锚定的前沿是假的,skill 一撤就塌。自博弈社区这两年很火的 Absolute Zero(solve-rate 奖励)和 R-Zero(uncertainty 奖励)也都被压在下面。还有个有意思的佐证:中等成功率任务产生混合结果组的频率是 \(p=0\) 或 \(p=1\) 任务的约四倍,说明 Recursive Learnability 选中的确实是"还有东西可学"的任务。

零 skill 与骨干迁移

训练动力学上有个漂亮的现象:随着 skill 被撤,零 skill 准确率在中途反超了带 skill 的准确率——skill 在正式退休前就已经没用了,撤退只是走个手续。12 次撤退的后验期望损失全部不超过 0.019,撤退前后 seed 卡片对 held-out 准确率不再有帮助(95% 置信区间)。

迁移实验更让人印象深刻:用 Qwen3.5-9B Worker 训出来的 Director,不换权重直接指挥六个其他骨干,全部提升,且越弱的骨干涨得越多,不同骨干间的 IID 差距从 25.7 个点收窄到 6.4 个点。编排图把规划和检查的能力补给了弱模型——这暗示 Director 学到的是某种模型无关的"组织智慧",这个性质如果真成立,价值比刷分大得多。


🤔 我的判断

这篇论文最值钱的地方,我认为不是某个具体数字,而是它指出了一个被广泛忽视的耦合:在带 skill 的系统里,"任务难度"是个伪概念——难度取决于你挂不挂 skill,挂哪个 skill。之前自博弈和 skill 内化两条线各自发展,就是因为没人把这个耦合拆开。R²Orch 用一组随机化 rollout 同时解决选题和撤退,把两个问题变成同一个随机对照实验的两个读数,这个抽象层次的提升是真功夫。

批判性地说几点。其一,初始 skill 是人工针对每个数据集定制的,作者在 Limitations 里承认了——也就是说这套系统不是从零开始的,"自动长出第一批 skill"仍然是开放问题,离真正的全自动自改进还有距离。其二,全部实验都建立在 Qwen3.5-9B 这一个 Worker 骨干上训练(迁移实验只换测试侧),Director 本身多大、是否也是 9B,主文没有特别醒目地交代,跨 Director 规模的结论未知。其三,106 A100 小时的训练成本不算便宜,对想复现的小团队是个门槛。其四,12 次撤退、每个数据集三张 seed 卡片这个量级,说明 skill 库还很小,skill 库大到几百上千个时后验决策的稳定性如何,论文没有覆盖。

还有一个我没完全想清楚的地方:\(n_h \gt n_v\) 说明大部分 rollout 看不到候选 skill,那"带着全部 skill 的完整能力"在训练中其实很少被采样到——这会不会导致 Director 从来没学会"如何充分利用 skill",只学会了"不依赖 skill"?零 skill 部署场景下这无所谓,但如果你的场景就是想带着 skill 上线,这个训练分布可能不是最优的。

和同期工作比,Absolute Zero、R-Zero 解决了"自己出题",SESA、MetaSkill 解决了"自己沉淀经验",R²Orch 是头一个把"出题"和"经验退休"焊成一个闭环的。它不是某个模块的微创新,是训练范式的重组。

工程上如果你在做多智能体系统,我的建议是:哪怕不照搬整套框架,paired contrast 这个评估 skill 价值的方法可以直接偷——别再拿成功率阈值决定 skill 生死了,在 rollout group 里随机藏一个 skill 做个 A/B,成本是零,信号干净得多。


收尾

R²Orch 指向的方向挺值得琢磨:未来的智能体系统,prompt 里塞的东西应该越来越少,参数里沉淀的东西应该越来越多——skill 只是训练期的脚手架,部署时全部拆掉。如果说前两年大家比的是"谁的脚手架搭得高",这篇论文问的是"拆完脚手架楼还站不站"。

不过还有个更本质的问题悬着:这套循环目前仍依赖人工种子 skill 和人工选定的任务分布 \(\rho_0\),"第一个 skill 从哪来"的冷启动问题如果也被自动化了,那才真是递归自改进的完全体。我等着看下一步。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我