长程 Agent——那种要连续跑几十步才有可验证成果的 Agent——的失败方式和短程 Agent 不一样。它的表现不是随任务变长而平缓下降,而是断崖式往下掉。
浙江大学 ZJU-REAL 实验室最近的一篇论文 Milestone-Guided Policy Learning for Long-Horizon Language Agents 把这个断崖诊断得足够清楚——清楚到即使你从不训练模型,也能用得上。方法叫 BEACON,代码已开源。
我们仔细读了这篇,因为它描述的问题正是我们在产品侧反复遇到的那个。下面是论文的论证、一处我们不得不自己推公式才对上的结果,以及我们认为能迁移到 Agent 架构上的部分。
两个病因,都可量化
我们最欣赏的一点是,它没有上来就讲方法,而是先做了一次解剖:Qwen2.5-1.5B 用 GRPO 在 ALFWorld 上训练,把崩溃拆成两个被量化的病因。
信用错配
轨迹级 RL 把一次运行当成扁平的动作序列,所有动作共享同一个终局分数。于是同一个正确动作,在成功轨迹里拿正梯度,在失败轨迹里拿负梯度——它到底对不对,取决于后面发生了什么。
作者把这个量化为 Contradictory Action Ratio:在相同状态下执行的同一动作,跨轨迹拿到反号 advantage 的比例。峰值超过 40%。这些梯度互相抵消之后,有效学习信号跌破 20%。
样本浪费
把轨迹分成三类——全成功、部分成功(至少完成一个子目标但任务失败)、全盘失败:
- 部分成功在整个训练过程中稳定占 39%~47%。
- 全成功始终低于 27%。
而在 GRPO 里,部分成功和全盘失败都是 0 分。超过 73% 的样本产生不了任何学习信号。
两个问题随 horizon 增长而复合恶化:任务越长成功率越低(部分成功越多),下游随机性污染信用的机会也越多。具体到 ALFWorld:短任务 76.7%,长任务 53.5%。
核心洞察:长任务本身就有结构
长程任务天然被里程碑切成若干阶段——里程碑就是标志子目标达成的、可验证的状态跃迁。扁平化优化把这个结构直接扔掉了。
作者把它形式化为里程碑马尔可夫性:一旦到达某个里程碑状态,后续轨迹的分布主要取决于还剩哪些子目标,而不取决于你之前是怎么走到这儿的。
一旦拿到钥匙,接下来的成败只看你拿它做什么,不看你是怎么找到它的。
正是这个近似马尔可夫性,让信用可以在段与段之间解耦。
方法三步走
1. 按里程碑切段
检测器 Φ 标出里程碑时刻,把轨迹切成若干段。我们认为被低估的设计决策是:Φ 不需要训练模型,也不需要人工标注。它只读环境反馈里可观测的状态变化——ALFWorld 的物体状态跃迁、WebShop 的页面跳转、ScienceWorld 直接给出的子目标信号。
零额外模型、零额外采样开销。这就是它相对过程奖励模型和蒙特卡洛估值的全部成本优势。
2. 段内时序奖励塑形
r_t = R_ms * γ^(t_k − t) 若第 k 段以完成里程碑收尾
= 0 否则只有收尾于里程碑的段才拿奖励,段内越靠近里程碑的动作拿得越多。完成段里的每个动作现在都有信号,部分成功不再被丢弃。
3. 双尺度 advantage
轨迹级就是标准 GRPO 对终局奖励做归一化。真正的思想在段级——在于比较组怎么定义:
G_k = { i : K_i ≥ k } # 只包含同样到达了里程碑 k 的轨迹
A_seg(i,t) = r_t − (1/|G_k|) · Σ_{j∈G_k} R_k(j) / |Seg_k(j)|
└──── 组内平均「每步」回报 ────┘第 k 段的动作,只跟同样到达了里程碑 k 的轨迹相比。由此作者推出方差隔离性质:后续段的成败在数学上无法污染当前段的信用。
最终 advantage 是 A_traj + λ · A_seg,套标准 PPO clipped surrogate 优化。超参 γ=0.95、λ=1.0 全 benchmark 固定,不做任务级调参。
效果
ALFWorld,Qwen2.5-1.5B:
| 方法 | 短 | 中 | 长 | 平均 |
|---|---|---|---|---|
| GRPO | 76.7 | 73.9 | 53.5 | 72.8 |
| GiGPO | 90.7 | 84.3 | 79.5 | 86.1 |
| BEACON | 96.8 | 87.0 | 92.9 | 91.4 |
另外两个环境的成功率:
| 方法 | ScienceWorld | WebShop |
|---|---|---|
| GRPO | 21.1 | 56.8 |
| GiGPO | 25.8 | 65.0 |
| BEACON | 45.3 | 75.6 |
1.5B 的模型在 ALFWorld(91.4 对 48.0)和 WebShop(75.6 对 23.7)上都超过 GPT-4o,在 ScienceWorld 上打平(45.3 对 45.4)。需要说明的是:闭源模型用的是 ReAct 提示,没有训练。样本利用率从 23.7% 升到 82.0%,收敛也更快——第 50 步就到 60% 成功率,GRPO 要到第 120 步。
最有说服力的结果是增益随 horizon 放大。7B 上相对 GRPO 的提升,从短任务的 +13% 涨到长任务的 +39%;而 GiGPO 只从 +11% 涨到 +22%。原因很关键:GiGPO 靠状态复现构造 step-level 比较组,而策略越强、轨迹越多样,状态复现就越稀疏——它的信号源在自我削弱。里程碑锚点则不会随策略变强而衰减。
一个方法的收益随问题变难而变大,这比刷高平均分有说服力得多。
那个看起来自相矛盾的指标
论文定义了 Credit Concentration Ratio——里程碑动作的平均 advantage 幅度除以非里程碑动作的平均幅度。大于 1 表示信用集中在里程碑上。
| 方法 | CCR |
|---|---|
| GiGPO | 2.36 |
| GRPO | 1.37 |
| BEACON | 0.84 |
也就是说,效果最好的方法反而最不把信用集中在关键步上——这读起来和「越靠近里程碑的动作奖励越高」直接打架。其实不矛盾:两句话量的不是同一个东西,中间隔着两步变换。
变换一:shaped reward。段内奖励确实单调递增。γ=0.95、段长为 5 时,五个动作分别拿到 0.8145、0.857、0.9025、0.95、1.0。但这是 reward,不是最终喂给梯度的 credit。
变换二:减去组内基线。基线是组内平均每步回报(段回报 ÷ 段长)。段长为 L 时,每步回报是 (1−γ^L) / (L(1−γ)):
| 段长 | 3 | 5 | 8 | 10 |
|---|---|---|---|---|
| 每步回报 | 0.951 | 0.905 | 0.842 | 0.803 |
如果你这段走了 8 步而组内平均 5 步,你的每步回报低于基线,整段的 advantage 一齐偏负。注意这意味着什么:惩罚绕路的不是衰减本身,而是衰减通过每步基线起作用。单看衰减只是给段内动作排序。到这一步为止,完成段内部的 CCR 仍然大于 1。
变换三:叠加轨迹级项。CCR 掉到 1 以下发生在这里,靠两个不对称效应。第一,失败轨迹的尾段根本进不了任何比较组:因为 G_k = {i : K_i ≥ k},而未完成尾段的下标是 K_i + 1 > K_i,该轨迹被排除在外。尾段拿不到任何段级 advantage,只剩满幅度的轨迹级项——而这些全是非里程碑动作,把分母抬高了。第二,在失败轨迹里,负的轨迹级项会抵消里程碑动作上正的段级 credit,把它们的幅度压向 0。
论文自己的 Figure 8 就是验证。一条完成了里程碑 S3、S4 后失败的轨迹:
| go to toilet | put soapbar (S3✓) | go to counter (S4✓) | go to counter | go to holder | |
|---|---|---|---|---|---|
| GRPO | −2.50 | −2.50 | −2.50 | −2.50 | −2.50 |
| BEACON | −0.92 | +0.51 | +0.32 | −2.20 | −2.20 |
最后两个值完全相同——这正是「尾段只剩轨迹级项」的指纹,由此可以反推出 A_traj ≈ −2.20。两个里程碑动作虽然是正的,幅度却只有 0.5 上下,因为负的轨迹级项吃掉了大部分段级 credit。这条轨迹的 CCR 是 0.23,而成功轨迹上是 2.95,全局的 0.84 就是两者的混合。
所以 CCR 测的是梯度幅度的集中度,而不是「奖励发给了谁」。低 CCR 不是设计目标,而是「段内密集分配 + 双尺度叠加」的副产品。作者的结论依然成立,而且是个好洞察:别把梯度能量全砸在关键步上。GiGPO 的 2.36 意味着中间那些铺垫动作几乎没有信号,而它们恰恰是到达里程碑的前提。
论文自己没点破的一点
消融表里有一格很奇怪。γ=1——段内均匀给分——得 71.8,比完全不塑形(γ=0,81.2)还差,甚至低于 GRPO 的 72.8。论文把它归因于「误导性梯度」。
把公式推一遍,答案更锋利。γ=1 时完成段内每个动作奖励相同,于是任何长度的完成段,每步回报都恰好是 R_ms。基线也等于它,于是:
A_seg(i,t) ≡ R_ms − R_ms = 0 对所有动作成立段级通道不是在误导,而是恒等于零地消失了,方法精确退化成 GRPO。对照表格:71.8 对 GRPO 的 72.8,差一个点,就是 run-to-run 噪声。
这也重新定义了衰减的作用:它不只是区分段内动作,更是段级信号能够存在的必要条件。没有它,每步基线会把信号当场抵消掉。
三个堵住明显质疑的实验
这一点值得肯定——作者主动回答了怀疑者会问的三个问题:
- 是不是变相的行为克隆?用 oracle 轨迹做 SFT 只有 43%,BEACON 达到 91.4%。策略找到了比 oracle 更优的执行方式,不是在模仿。
- 收益是不是仅仅来自切段?随机切分只有 74.2%,仅比 GRPO 高 1.4 个点;真实里程碑是 91.4%,差距 17.2 个点。增益来自任务固有结构。
- 检测器不准怎么办?随机丢掉 50% 的里程碑仍有 82.8%,比 GRPO 高 10 个点。降级是平滑的。
哪些能迁移到 Agent 设计
BEACON 是训练方法,而多数产品——包括我们——是在编排模型而不是训练模型。公式不能迁移,但诊断可以,而且它对应到架构上出奇地直接。
部分进度必须成为一等的、持久化的状态。论文最尖锐的数字是:39%~47% 的运行完成了真实子目标,却和什么都没做的运行拿一样的分。一个长时间运行的 Agent 会话,完成三个子目标后卡住,问题是一样的:如果系统只记录「运行中」和「已完成」,那部分进度就被丢掉了,重试从零开始。里程碑给了你记录它的词汇。
里程碑应来自可观测的副作用,而不是自述。Φ 便宜的原因是它读可验证的状态跃迁,而不是去问策略「你有没有进展」。Agent 运行时手里有同样的资产,却常常忽略它:一个写入的文件、一个退出码为 0 的测试、一次返回成功的连接器调用、一条落库的知识。这些是 ground truth;模型声称「第一步已完成」不是。
里程碑边界是有原则的压缩点和恢复点。里程碑马尔可夫性说的是,一旦到达里程碑,之前的过程就没那么重要了。这比「到了 token 阈值所以压缩」是好得多的依据,而同一个边界也是失败后最自然的恢复点。
验收要双尺度,不能只有一个。这是我们想给所有做 Agent 工作流的人划重点的一格消融:去掉轨迹级信号,ALFWorld 从 91.4% 掉到 23.4%。只有段级反馈时,策略会去强化那些达成中间里程碑却偏离真实目标的行为——每个子任务都做得漂亮,交付物却是错的。子任务验收和最终交付验收不能互相替代。值得注意的是,所需权重随任务而变:WebShop 去掉轨迹级仍有 67.9%,因为它的里程碑与最终成功高度对齐;ALFWorld 则直接崩掉。
局限也说清楚
最大的约束是 Φ 到底能不能拿到。三个 benchmark 的里程碑都来自规则——模式匹配环境响应、页面跳转、显式子目标信号。而浏览器自动化、代码库改造、深度研究这类开放场景没有这种现成的可验证跃迁,作者也把自动里程碑发现列为 open problem。所以这更像是在结构化环境里被验证的范式,而不是可以直接搬走的工程方案。
里程碑粒度同样敏感:太稀会退化成 GRPO,太密则段级 advantage 变噪声。马尔可夫性只是近似,方差隔离建立在它之上。实验止于 7B、离散文本动作空间,连续控制和多智能体都未验证。
但核心主张我们很难反驳:长任务有可利用的组合结构,把这个结构当成一等对象来处理,胜过指望模型在上下文里自己记住。我们正把这个思路用在 Orkas 的长程任务能力上,后续会继续分享这块的设计。
