一个模型分饰两角:Role-Agent 如何让 LLM 自己当裁判、自己出题
论文:Role-Agent: Bootstrapping LLM Agents via Dual-Role Evolution arXiv:2606.10917 机构:中国科学技术大学 · 阿里巴巴 AMAP 代码:https://github.com/AMAP-ML/roleagent
先说结论
训练 LLM agent 这件事,长期卡在两个老大难问题上。一个是奖励太稀疏——agent 在 ALFWorld 里折腾几十步,最后只在终点拿到一个 0 或 1,中间走对走错全靠猜。另一个是环境太贵——你想造一个能给细粒度反馈的仿真环境,要么人工写规则写到吐血,要么再训一个 world model,成本高得离谱。
这篇论文的思路很取巧:既然单独训一个环境模型那么贵,那就别训了,让 agent 自己兼任环境。同一个 LLM,一会儿当 agent 去做任务,一会儿切换身份当环境去预测后果、分析失败、出新题。两个角色互相喂数据、互相进化,作者管这叫 dual-role evolution(双角色协同进化)。
效果上,Role-Agent 在 ALFWorld、WebShop 和搜索问答三类任务上平均超过强基线 GiGPO 4 个百分点以上,而且没有引入任何额外的模型。下面拆开讲讲它到底怎么做到的。
问题出在哪:两条老路都走不通
我们先看看现有方法卡在哪。论文用 Figure 1 把三种范式摆在一起对比,看完基本就懂了为什么需要第三条路。

左边 (a) 是静态环境下的探索。环境是死的,只在任务结束时给一个稀疏奖励。agent 在长程任务里就像盲人摸象,中间几十步动作没有任何信号告诉它对不对,探索效率极低。
中间 (b) 是合成环境这条路。既然真实环境反馈太稀疏,那就额外造一个环境模型来生成密集反馈。问题是这个环境模型本身要么靠人工规则堆出来,要么得单独训练,成本和复杂度都很高,而且环境模型和 agent 是分离的,各训各的。
右边 (c) 就是 Role-Agent 的主张:一个 LLM,两个角色来回切换。它既能当 agent 探索任务,又能当环境提供过程奖励、重构训练数据。两个角色共享同一套参数,一起进化。不用额外模型,反馈还密集,这就是它的卖点。
核心机制:两个角色各干什么
Role-Agent 的整个框架可以用一张图概括。上半部分是 Agent-In-World(AIW),下半部分是 World-In-Agent(WIA),中间是共享的那个 LLM。

我把两个角色拆开讲。
World-In-Agent(WIA):让 agent 边做边预判后果
WIA 解决的是过程奖励的问题。核心想法是:一个真正"懂"环境的 agent,应该能预判自己每个动作会带来什么后果。如果它的预判和实际发生的一致,说明它对环境的理解是对的,这本身就值得奖励。
具体做法是,agent 在每一步除了输出 think 和 action,还要额外输出一个 pred——预测接下来 H 步的状态会变成什么样。然后把这个预测和真实展开的状态做对比,对比的方式用的是 Longest Matching Subsequence(LMS,最长匹配子序列),度量预测文本和真实状态文本的上下文差异,归一化成一个预测奖励矩阵 \(\tilde{r}_{t,h} \in [0,1]\)。
关键在于奖励怎么合进去。论文用的是乘法调制而不是简单相加:
这个设计我觉得是点睛之笔。为什么不用加法?因为如果是加法,一条最终失败的轨迹,可能只因为中间某步预测得很准就白白拿到奖励,等于在鼓励"预测能力强但任务做砸了"的行为。改成乘法之后,预测奖励只是对任务奖励的放大或缩小——任务奖励是 0 的失败轨迹,预测得再准乘出来也还是 0。这样就保证了过程奖励永远服务于最终目标,不会喧宾夺主。
Agent-In-World(AIW):让环境分析失败、重新出题
AIW 解决的是训练数据分布的问题。光有密集奖励还不够,如果 agent 反复在同一类任务上栽跟头,单纯重复采样是低效的。AIW 让 LLM 切换成"环境/出题人"的身份,去分析失败轨迹。
它会对每条失败轨迹做三件事:识别失败类型、提炼核心教训、生成一个查询上下文。然后用这个查询去检索具有相似失败模式的任务,重新塑造训练数据的分布——让 agent 多练那些它真正不会的题型,而不是均匀地刷题。
论文在 ALFWorld 上识别出了 11 种唯一的失败模式,比如 Repetitive Exploration(重复探索原地打转)、Wrong Target Location(找错目标位置)、Wrong Receptacle(放错容器)等等。这个分析本身也是那个共享 LLM 干的,不需要额外标注。
优势怎么算:轨迹级 + 状态级
在强化学习的优势估计上,Role-Agent 借鉴了 GiGPO 的思路,做了状态分组。它用一个 hash-map 去识别轨迹里那些非重复的状态,对相同状态分组后计算状态级优势 \(A^S\)。最终的优势是轨迹级和状态级的加权组合:
其中 \(\alpha\) 是平衡两者的系数。这么做的好处是,同样一个状态在不同轨迹里被访问到,可以横向比较"从这个状态出发,哪条路走得更好",比纯轨迹级的信号要细。
实验结果:到底涨了多少
光讲故事不行,得看数字。论文在三类基准上做了实验,骨干模型用的是 Qwen2.5 的 1.5B / 3B / 7B-Instruct。
ALFWorld + WebShop 主结果
先看具身任务和网购任务。下面是不同规模模型上的对比(节选关键数值):
| 模型规模 | 方法 | ALFWorld (All) | WebShop (Score) | WebShop (Succ) |
|---|---|---|---|---|
| 1.5B | GiGPO | 86.7 | 83.1 | 65.0 |
| 1.5B | Role-Agent | 90.9 | 87.7 | 71.9 |
| 7B | GiGPO | 90.8 | 84.4 | 72.8 |
| 7B | Role-Agent | 93.8 | 88.0 | 77.1 |
可以看到不管是小模型还是大模型,Role-Agent 都是全面领先。1.5B 上 WebShop 成功率涨了将近 7 个点,这个幅度不算小。
搜索增强问答
第二类是 search-augmented QA,用 3B 模型,覆盖单跳(NQ / TriviaQA / PopQA)和多跳(HotpotQA / 2Wiki / MuSiQue / Bamboogle)。
| 方法 | 平均分 | 2Wiki | MuSiQue |
|---|---|---|---|
| GiGPO | 42.1 | — | — |
| Role-Agent | 45.8 | +8.2 | +5.2 |
多跳任务上的提升最明显,2Wiki 涨了 8.2 个点。这其实挺合理——多跳问答正是那种"中间步骤走错就全盘皆输"的长程任务,密集过程奖励在这里发挥的作用最大。
消融实验:两个角色缺一不可
消融是这篇论文最该看的部分,因为它直接回答了"是不是真的两个角色都有用"。
| 配置 | 成功率 |
|---|---|
| Role-Agent(完整) | 81.4 |
| w/o AIW(去掉失败分析) | 77.2 |
| w/o Predictive Reward(去掉预测奖励) | 78.2 |
| GiGPO(baseline) | 75.9 |
结论很干净:去掉任何一个角色,性能都明显回落,但都还是比纯 GiGPO 强。说明 WIA 的过程奖励和 AIW 的数据重构是互补的,两者叠加才能拿到完整收益。
超参敏感性
| 超参 | 最优取值 | 备注 |
|---|---|---|
| \(\alpha\)(优势平衡系数) | 1.0 | 状态级和轨迹级等权最好 |
| \(H\)(预测步数) | \(5\% \cdot T_{max}\) | 预测窗口不宜过长 |
\(\alpha=1.0\) 最优说明状态级和轨迹级优势同等重要;预测步数 \(H\) 取最大步数的 5% 最好,太长了反而因为预测不确定性大而引入噪声,这个也符合直觉。
训练动态:它到底好在哪个环节
论文还给了两张展示训练过程的图,我觉得比最终数字更有信息量。

左边是 ALFWorld 验证集成功率曲线,Role-Agent 全程压着 GiGPO。右边更有意思——它画的是 Rollout Probs Diff Mean,也就是训练和推理之间的概率不匹配程度。Role-Agent 这条线明显更低,说明它训练时学到的策略和推理时实际执行的策略更一致,训推不匹配更小。这通常意味着训练更稳定、泛化更好。
再看失败模式的演化:

这张堆叠柱状图展示了训练过程中,AIW 累积识别并补充的失败模式任务数量。从第 15 步的 996 个增长到第 150 步的 3931 个,颜色分层对应不同失败类型(重复探索、找错位置、放错容器等)。这张图直观地说明了 AIW 不是一次性出题,而是持续地、动态地根据 agent 当前的薄弱环节补充训练数据——agent 越练,出题人越懂它哪里不行。
我的几点看法
读完之后,有几个点想多聊两句。
第一,"一个模型分饰两角"这个 trick 的真正价值在于省钱。 它最大的贡献不是发明了什么全新的奖励机制——过程奖励、失败回放这些思路其实都有人做过。它聪明的地方在于把"环境模型"这个昂贵的部件折叠进了 agent 自身,用同一套参数复用。这等于白嫖了一个 world model,工程上的吸引力很大。
第二,乘法调制那个细节值得记住。 \(\mathcal{R}_t = \mathcal{R}_{task}(1 + \mathcal{R}_{pre})\) 这个看起来不起眼的设计,实际上是防止过程奖励"带偏"最终目标的关键。很多做 process reward 的工作栽就栽在加法上,导致 agent 学会了"看起来很努力但做不成事"。这个点其他做 RL 的工作可以直接借鉴。
第三,有个隐忧是自我评估的可靠性。 agent 和环境是同一个模型,那它预测的"未来状态"和它分析的"失败模式"到底有多准?如果模型本身对环境理解就有偏差,那它当裁判时也会用同样的偏差去评判自己,这种自我一致的错误是没法靠这个框架内部纠正的。论文用 LMS 对齐真实状态来锚定预测奖励,算是部分缓解了这个问题,但 AIW 那部分的失败分析全靠模型自述,可靠性多少要打个问号。
第四,泛化性还有待观察。 实验集中在 ALFWorld、WebShop 和文本问答这几类状态可以用文本充分描述的任务上。LMS 这种基于文本子序列匹配的预测奖励,换到状态难以用文本表达的场景(比如连续控制、视觉密集的任务)还能不能用,论文没回答。
总的来说,2606.10917 这篇是一个工程性很强、思路很省的工作。它没有堆砸资源,而是巧妙地把已有的几块拼图用"角色切换"这个框架串了起来,拿到了实打实的提升。对于资源有限但又想训长程 agent 的团队,这个"不引入额外模型"的特性相当有吸引力。