如果一个 Agent 用几十轮工具调用完成了一项任务,最后只得到一个 0/1 reward,这个 reward 应该怎样分配给前面的决策?
这是长程 Agentic RL 中一个很核心、但也很容易被“最终成功率”掩盖的问题。
一条轨迹最后失败,不等于前面的搜索、文件处理和代码执行全部错误;一条轨迹最后成功,也不等于中间每一步都值得强化。如果把终局 reward 无差别地广播给整条轨迹,真正决定结果的少数决策会被大量普通 token 淹没,已经正确的前缀也可能因为后期失误一起受到惩罚。
最近发布的 Apodex 1.1 Technical Report 里,PIVOT-RL 正是在处理这一问题:把长轨迹的 credit 定位到真正需要修正的局部片段。沿着这个视角继续往下看,SAO 处理的是另一个粒度的问题:在一条 rollout 内,怎样把 credit 进一步分配到 token。
两者不是互相替代的 RL loss,而是两种不同粒度、可以互补的 credit-assignment 方法:
- Pivot-RL:片段级 credit assignment,回答“长轨迹中的哪一段需要优化”;
- SAO:token 级 credit assignment,回答“这段轨迹里的不同 token 应该得到怎样的 advantage”;
- value-pretrain:SAO 的 value-model 训练,为 token-level advantage estimation 提供一个可靠的初始 value model。
这篇文章就从 credit assignment 这条线来介绍 Apodex 1.1,并把它和我之前写过的 PivotRL、SAO 以及小规模实验、credit-assignment-is-all-you-need 以及 value-pretrain 串起来。

1. 长程 Agent 的 reward 到底监督了什么?
普通问答任务可以近似写成:
但 Agent 任务是一条与环境反复交互的轨迹:
其中,
- a_t 是模型生成的推理、回复或工具调用,
- o_{t+1} 是搜索引擎、代码执行器、文件系统等环境返回的 observation。
最终 reward 通常由任务级 verifier 根据整个执行结果给出:
Apodex 1.1 把任务写成包含工作区、动作空间、状态转移、资源预算、交付契约和 verifier 的完整 task contract。这个形式化对 credit assignment 很重要:reward 判断的不是某一句话是否像标准答案,而是最终工作区、执行轨迹和交付物是否满足任务要求。
但 verifier 越接近真实任务,reward 往往越靠近轨迹末端。于是我们知道“这次工作有没有完成”,却不知道:
- 哪个决策真正改变了最终结果?
- 失败之前的有效工作是否应该保留?
- 一个关键动作由很多 token 组成时,credit 应该怎样在 token 间传播?
- observation 不是 policy 生成的,advantage 是否应该穿过这些环境 token?
所以,长程 Agentic RL 的难点不只是得到一个可靠 reward,还要把这个 reward 沿着轨迹正确地往回分。
2. 两级 Credit Assignment:先定位片段,再分配到 token
可以把问题分成两个层级:
| 层级 | 方法 | 核心问题 | 输出 |
|---|---|---|---|
| 轨迹片段 | Pivot-RL | 哪个中间状态之后的行为真正值得重训? | 需要局部优化的 pivot / continuation |
| 片段内部的 token | SAO | 单条 rollout 中每个生成 token 应获得多少 credit? | token-level advantage |
直观地说,Pivot-RL 先在长轨迹上“圈出重点”,SAO 再在重点片段内部做更细的 advantage estimation。
两者分别缓解两种过度平均:
- 不把一次终局成败平均归因给整条长轨迹;
- 不把一个片段的 return 再平均归因给片段中的全部 token。
这并不意味着两篇工作已经在同一组实验中完成了联合训练和端到端消融。更准确的说法是:从方法粒度上看,它们提供了互补的 credit-assignment 接口,因而可以自然组合。
3. Pivot-RL:把终局 reward 定位到关键片段
3.1 先由模型自己 rollout,再从长轨迹中定位 pivot
设当前模型在环境中 rollout 得到一条轨迹:
如果 Agent 在 s_t 之前已经完成了正确的检索、分析和文件操作,只是在 s_t 之后选择了错误策略,那么把整条轨迹笼统地作为一个训练单元,既会稀释真正有用的信号,也无法保留前面已经做对的部分。
PivotRL 使用的不是 SFT demonstration,而是模型当前 policy 自己与环境交互产生的轨迹。它先从这些 self-rollout 轨迹中定位候选中间状态,再从候选状态展开多条局部 continuation,根据不同 continuation 的 outcome 判断这里是否是有学习价值的 pivot。
选中 pivot 后保留已有前缀,只对后面的局部 continuation 做 rollout 和优化;对有状态任务,还需要恢复 pivot 对应的可执行环境状态。
因此,Pivot-RL 的 credit-assignment 单位不是整条 trajectory,也不是单个 token,而是轨迹片段。
3.2 为什么 reward variance 可以找到有用的 pivot?
在候选状态 s 上采样多条局部 continuation,得到二元验证奖励r_1,\ldots,r_G。PivotRL 用局部采样的 reward mean 和 reward variance 筛选训练状态:
对于 group-normalized advantage,如果一个状态下的 rollout 全部成功或全部失败,组内 advantage 都会变成 0,这个状态不会产生有效的策略梯度。只有同时采到成功和失败,即 \hat\sigma^2(s)>0 ,才存在可以区分好坏动作的局部学习信号。
这使 pivot selection 不只是“找看起来可疑的一步”,而是在找:当前 policy 在这里有时能做对、有时会做错,并且一次局部选择会实质影响结果的状态。
论文进一步将 reward variance 与局部 natural-gradient signal 联系起来。在其理想化分析下,variance 越高,对应的局部更新信号越强。因此,把 rollout 算力放到 mixed-outcome 的状态,比随机选择中间轮次更有效。

3.3 原轨迹提供状态,不提供要模仿的答案
PivotRL 的另一个关键点是 functional-equivalent reward。
同一个中间状态往往有多种正确动作:可以调用不同但等价的工具,可以使用不同查询找到同一证据,也可以写出不同实现完成同一功能。模型原先 rollout 出的动作只是到达这个状态的一种历史,并不是局部训练要复现的标签。
PivotRL 奖励的是功能上能够把任务继续做对的动作,而不是复现原轨迹中的某个动作字符串。这让局部优化可以提高可接受动作集合的概率,同时尽量少改动与当前训练任务无关的策略分布。
3.4 Apodex 1.1 中的局部 continuation
Apodex 1.1 报告对这一过程给出了更贴近复杂工作流的描述:事后分析找到导致低效策略、证据不足、工具误用或未及时修正假设的 consequential decision point;随后保留有效前缀,在对应状态构造局部 continuation,并给出简短的 corrective hint。
这个 hint 只用于指明局部修正方向,不是 prediction target,推理时也不会提供。局部任务还会与无提示的完整任务混合,避免模型只会在被明确提醒后纠错。
不同 pivot 的 continuation 长度和工具执行时间并不相同。完成的局部 rollout 可以按到达顺序进入后续训练,不必让短任务持续等待最慢任务。这里,局部化 credit assignment 也自然产生了不规则的异步 rollout 流。
4. SAO:在单条 rollout 内做 token-level credit assignment
Pivot-RL 回答了“该优化哪一段”,但没有直接回答“片段中的每个 token 应该拿到多少 advantage”。这正是 SAO 处理的粒度。
4.1 为什么 group-relative advantage 不适合完全异步的长轨迹?
GRPO 一类方法通常对同一 prompt 采样一组 rollout,再用组内 reward 构造相对 advantage。对于长程 Agent 任务,不同 rollout 的实际耗时可能差很多:有的几分钟结束,有的要运行大量代码或工具调用。
只要 advantage 依赖完整 group,先完成的样本仍然要等待同组最慢的样本。异步系统虽然可以提高 rollout 吞吐,但 group-wise credit assignment 仍然保留了一个同步边界。
SAO:Single-Rollout Asynchronous Optimization 将采样单位改为每个 prompt 一条 rollout。样本完成后即可进入训练,不再依赖同一 prompt 下的其他 rollout 作为 baseline。
代价是:没有 group mean 以后,需要 value model 估计 baseline,并通过 GAE 计算 token-level advantage:
所以 SAO 的核心不仅是“单条 rollout 更异步”,更重要的是它把 credit assignment 改成了基于 value model 的 token-level advantage estimation。
4.2 Skip-Observation GAE:不要把环境 token 当成 policy action
Agent 轨迹通常是:
其中
- a_i 是模型生成的 action,
- o_i 是环境返回的 observation。
标准 token-level GAE 如果直接跨相邻 token 传播,会在 action 和 observation 的边界上计算 TD error;但 observation 并不是 policy 采样出来的,把它当成普通生成 token 会引入噪声。
SAO 的 Skip-Observation GAE 直接跨过 observation,将当前 action 的末端连接到下一个 action 的起点:
这样,credit 在模型真正生成的 action 之间传播,而不会经过外部环境返回的 token。
从 credit-assignment 角度看,这是一个非常关键的边界:我们要给 policy 的决策分配 credit,而不是给环境 observation 分配 credit。
4.3 异步训练还需要处理 policy lag
rollout 与训练异步以后,样本生成时的 behavior policy 和执行更新时的当前 policy 可能已经不同。SAO 保存采样时的 token log-probability 来计算 importance ratio,并使用严格的双边 token-level clipping 屏蔽偏离信赖域的更新。
这部分主要处理的是异步系统中的 off-policy 稳定性;而 value model 与 GAE 负责的是 token-level credit assignment。两者共同决定 single-rollout 样本能否稳定用于策略更新。
5. Value Pretrain:它是 SAO 的 value-model 训练
从 group-relative 方法切换到 single-rollout 后,value model 不再是可有可无的辅助组件。它直接决定 baseline 是否可靠,也就直接影响 advantage 的偏差与方差。
如果 value model 冷启动很差:
因此,我之前写的 value-pretrain 的碎碎念,讨论的是 SAO 的 value model 如何预训练,不是另一套独立的 credit-assignment 方法,也不是基础模型阶段的通用预训练。
SAO 在 value model 上采用了三类互相衔接的设计:
- 扩大 value-pretraining 数据规模:缓解 value estimation 的 cold start,为 single-rollout RL 提供更好的初始化;
- critic 比 actor 更新更频繁:论文中每次 policy update 对 value model 更新两次,使 critic 更快跟上不断变化的 policy distribution;
- 冻结 attention、更新 MoE projections:降低 value model 训练中的梯度不稳定,起到正则化作用。
这三者分别解决初始化、跟踪速度和优化稳定性。value-pretrain 是起点,在线阶段更高频的 critic update 和 frozen-attention 则让 value model 在 policy 持续变化时保持可用。
6. Pivot-RL 与 SAO 怎样互补?
把两种方法放在一起,可以得到一条分层的 credit-assignment 路径:
更具体地说:
| 组件 | Credit 粒度 | 主要作用 | 不直接解决什么 |
|---|---|---|---|
| Task verifier | 整条任务 | 判断最终交付是否成功 | 不定位具体错误位置 |
| Pivot-RL | 轨迹片段 | 选择值得重训的状态和 continuation | 不计算片段内每个 token 的 advantage |
| SAO | token | 用 value model 与 GAE 分配单条 rollout 的 token credit | 不负责寻找最值得投入算力的 pivot |
| Value pretrain | value model | 为 SAO 提供可靠的 value 初始化 | 本身不是第三种 credit-assignment 方法 |
一种自然的组合方式是:
- 让当前模型在环境中 rollout 完整任务轨迹,并从中选取候选中间状态;
- 用局部 rollout 的 outcome distribution 筛选 informative pivot;
- 恢复 pivot 对应的环境状态,只采样局部 continuation;
- continuation 到达后,用 SAO 的 value model 和 Skip-Observation GAE 计算 token-level advantage;
- 使用保存的 behavior log-probability 和 token-level clipping 完成异步策略更新。
前两步决定在哪儿学,后三步决定局部样本到达后怎样学。
这就是两者最清楚的关系:Pivot-RL 把 terminal reward 定位到片段,SAO 再把片段的 return 分配到 token;value-pretrain 则让后一步从训练开始就有一个足够可靠的 baseline。
7. 为什么 Apodex 1.1 的环境与运行时仍然重要?
虽然本文从 credit assignment 切入,但 credit assignment 并不是只靠一个 loss 就能完成的。Apodex 1.1 里的环境和 AgentOS,实际上决定了训练信号是否成立。
7.1 Verifier 决定 reward 是否可信
Pivot selection 依赖局部 rollout 的 outcome。如果 verifier 只能判断文本像不像参考答案,而不能检查文件、代码、证据和最终交付,reward variance 可能只是在测量评分器噪声。
Apodex 1.1 扩展 file、search 和 code 环境,并为任务提供可执行或可审查的 completion check。对 credit assignment 来说,Environment Scaling 的意义是扩大可以可靠产生 outcome signal 的状态分布。
7.2 状态恢复决定局部 rollout 是否真的是同一个 pivot
在 stateful task 中,保留文本前缀还不够。pivot 之前可能已经修改文件、运行代码或建立依赖关系。如果不能恢复对应的工作区和工具状态,从“同一位置”开始的局部 rollout 实际上面对的是不同环境,得到的 reward 就不可比较。
AgentOS 维护工作区、执行日志、产物、来源和任务状态,使局部 continuation 能从正确的可执行状态继续。这是片段级 credit assignment 能落地的必要条件。
7.3 Agent Team 会让 credit assignment 进一步层次化
多 Agent 轨迹不再只有一条线性 action sequence,还包含任务分解、子任务、并行分支、结果合并、验证与取消。一次最终成功可能来自某个关键分支,也可能来自主 Agent 对多个不完整结果的综合。
因此,比“片段 → token”更进一步的问题是:如何在 task、branch、agent、action 和 token 之间分配 credit。Apodex 1.1 报告在结尾也把 hierarchical traces 上的 training and credit assignment 列为后续方向。
从这个角度看,Pivot-RL 和 SAO 给出了两个已经相对清晰的粒度,而 Agent Team 暴露了更高层的结构化 credit-assignment 问题。
8. 结果应该怎样看?
下面只看两类结果:SAO 的 token-level credit assignment 能否稳定训练,以及 Apodex 1.1 的完整模型与 Agent 系统在复杂任务上的表现。
SAO:单条 rollout 的 token-level credit assignment 能否稳定训练?
- 在约一千个训练 step 上保持稳定;
- 在 AIME2025、BeyondAIME、IMOAnswerBench 和 SWE-Bench Verified 上超过相应 GRPO 基线;
- value update 频率、frozen-attention value training 和 token-level clipping 的消融均显示明显作用。
Apodex 1.1:这些训练最终是否转化成长程工作能力?
| Benchmark | Apodex 1.0 | Apodex 1.1 ReAct | Apodex 1.1 Agent Team |
|---|---|---|---|
| APEX-Agents | 16.5 | 34.4 | 38.5 |
| GDPVal | 59.3 | 69.5 | 78.8 |
| FrontierFinance | 40.3 | 48.7 | 54.3 |
| FrontierScience-Research | 28.3 | 55.0 | 63.3 |
| BioMysteryBench Human-difficult | 17.6 | 23.5 | 35.3 |
ReAct 更接近底层模型能力,Agent Team 的额外提升还包含协作策略和更多组织化的测试时计算。因此,这组结果能说明完整模型与系统在复杂工作上的效果,但不能单独归因为某一种 credit-assignment 方法。
9. 我认为最值得继续追问的问题
第一,片段级与 token 级方法联合以后,增益是否真的可加?
方法上二者互补,但仍需要联合训练实验,比较端到端 RL、仅 Pivot-RL、仅 SAO,以及 Pivot-RL + SAO 的效果和 rollout 成本。
第二,pivot 的边界应该是 turn、action、工具调用,还是更长的子任务?
PivotRL 以中间 turn / state 为主要局部化单位,但复杂工作中的真正因果单元可能跨越多次工具交互。边界过短会截断长期影响,边界过长又会重新稀释 credit。
第三,value model 应该预测 token value、action value,还是 branch value?
SAO 的实验支持 token-level value estimation 和 Skip-Observation GAE,但多 Agent 任务具有显式层级结构。未来可能需要同时估计局部 action 的 return 与子任务对全局交付的贡献。
第四,如何区分策略不确定性与 verifier 噪声?
reward variance 高,既可能表示某个状态确实存在好坏分明的决策,也可能表示环境不稳定或 verifier 本身不可靠。真实任务中的 pivot selection 需要把这两类 variance 区分开。
结语
长程 Agentic RL 的核心难题之一,是把稀疏的终局 outcome 转化为足够局部、又足够稳定的训练信号。
从这个角度看,Pivot-RL 和 SAO 处理的是同一条链路上的两个不同层级:
- Pivot-RL 做片段级 credit assignment,找到长轨迹中真正值得重新优化的 continuation;
- SAO 做 token 级 credit assignment,用 value model 和 GAE 估计单条 rollout 内的 advantage;
- value-pretrain 属于 SAO 的 value-model 训练,用来缓解 critic cold start,稳定后续 token-level advantage estimation。
Apodex 1.1 的环境、verifier 和 AgentOS 则提供了这套 credit assignment 所需的可执行状态、可靠 outcome 与局部回放能力。它们不替代 credit-assignment 算法,但决定了片段能否被正确恢复、reward 是否可信、训练信号能否落到真实工作轨迹上。
如果把这条路线压缩成一句话:
先判断一次任务的成败应该归因到哪段轨迹,再判断这段轨迹的 credit 应该怎样分到每个 token。
作者:haotian
原文:https://zhuanlan.zhihu.com/p/2076631969656468787