Files
2026-07-13 13:37:02 +08:00

76 KiB
Raw Permalink Blame History

§0 TL;DR Cheat Sheet

💡 9 句话搞定 Agentic RL — RL for LLM agents 是 2024-2026 把 reasoning RL 推向真实工具使用、Web、代码与 GUI 的核心范式(详见 §1-§9 推导 + §10 25 高频题)。

  1. Agentic RL 与 RLHF 的本质区别RLHF 是 single-turn 偏好对齐,reward 来自 RM 对整段 response 的打分;Agentic RL 是 multi-turn 决策,state 是 (obs, history)action 是 (thought, tool_call)reward 来自外部环境(test-pass、task success、verifier)而非 RM。整条轨迹长度从 RLHF 的几百 token 涨到 agent 的数千乃至数万 tokencredit assignment 难度上一个台阶。

  2. PPO/GRPO 在 agent 上的关键改造(必背):token mask 必须只对 agent 自己 generate 的 token 算 loss——observation tokentool 返回的 stdout / search snippet)属于环境,policy gradient 不能流到那里;否则 model 会试图"教 tool 怎么回答",行为崩坏。GRPO 优势更明显:在 long-horizon trajectory 上,value model 几乎学不动 per-token V(中间几乎全 0 reward),组内归一化是更稳的 baseline。

  3. Reward 设计三层金字塔(a) Outcome reward 最便宜也最稀疏——final answer/task success 0/1(b) Process reward 给每步打分,需要 PRM 或 step verifier(c) Hybrid / shaping——tool-call shaping(鼓励调对工具)、length penalty(防 agent 拖太长)、format reward(强约束输出 schema)。R1 路线用 rule-based outcome reward(数学正确 + 格式),SWE-RL 用 test-passWebRL 用 task success——rule-based outcome reward + dense format shaping 是 2025 工业实测最稳的组合。

  4. 代表性早期 workAgentTuning (Zeng et al. 2023 arXiv 2310.12823 THU)——agent SFT 数据集 + 多任务训练;Agent-FLAN (Chen et al. 2024 ACL Findings arXiv 2403.12881)——把 agent corpus 拆成 multi-turn / formatted / negative example 三类;ReFT (Trung et al. 2024 ACL arXiv 2401.08967)——SFT warm-start + online RL on math reasoningPPO 在 GSM8K 上 +9pp。这三篇是 Agentic RL 的"先 SFT 后 RL"标准三段式。

  5. Tool-augmented reasoning RLToolRL (Qian et al. 2025 arXiv 2504.13958)——把 tool 调用嵌入 GRPOreward 含 correctness + format + tool-use efficiencyReSearch (Chen et al. 2025 arXiv 2503.19470)——把 search call 当 first-class actionrule-based reward 学 multi-hop searchRAGEN / StarPO (Wang et al. 2025 arXiv 2504.20073)——多回合 RL 训练 frameworkstate-action token level loss + critic-free GRPO 变种。共同点:outcome-only reward + format shaping + token-mask loss + GRPO

  6. Web / GUI agent RLWebRL (Qi et al. 2024 ICLR-25 arXiv 2411.02337)——self-evolving curriculum + ORM + retrospective rollout,把 8B Llama 推到 WebArena 43%AgentQ (Putta et al. 2024 arXiv 2408.07199)——MCTS 搜索 + AI critique + DPO offline 训练;Computer-Use (Anthropic Claude 3.5/3.7/4 Sonnet, 2024-10-22 起)——RLHF + RL 在屏幕截图 + 鼠标键盘 action space 上训练 GUI 控制(公开知识:训练细节未披露,但 system card 说明用了大量人工 + AI 反馈)。

  7. Code agent RLCodeRL (Le et al. 2022 NeurIPS arXiv 2207.01780) 首次把 unit test 当 reward 信号 + actor-criticPPOCoder (Shojaee et al. 2023 arXiv 2301.13816) 加入 compilable + functional correctness 的 composite rewardSWE-RL (Wei et al. 2025 Meta FAIR arXiv 2502.18449) 用 rule-based rewardpatch similarity + test-pass)在 GitHub PR 数据上做 RLLlama-3.3-70B 把 SWE-bench Verified 推到 41%。

  8. Self-rewarding & explorationSelf-Rewarding LM (Yuan et al. 2024 Meta arXiv 2401.10020) 让 policy 同时当 judgeiterative DPO with LLM-as-judge;但 self-rewarding 在 agent 上比单 turn alignment 更危险——judge 也是 agent 自己,容易 reward drift / model collapse。生产里多用 LLM-as-judge ensemble + rule-based groundingtest-pass、math checker+ human spot check 三件套。

  9. 长 horizon credit assignment 的"三种武器"(a) GAE + γ < 1 把信用沿轨迹回传,但在 sparse outcome reward 下退化为 MC return(b) Hindsight relabeling(HER 思路在 agent 上的对应物)——失败轨迹按"中间状态当 goal"重新标 reward(c) subgoal decomposition + process reward——把 50 步轨迹切成 5 个 subgoal × 10 步,PRM 给每个 subgoal 打分。L3 面试常问的"为什么 GRPO 在 long-horizon agent 上比 PPO sample efficient"——答案是 trace-level reward 直接匹配 trace-level credit,绕开 value model 在 long-CoT 上几乎学不动的痛点。

§1 直觉:从 RLHF 到 Agentic RL

1.1 把 LLM 从"会写字的策略"升级成"会动手的 agent"

RLHF 把 LLM 训成"会按人类偏好写字"的 policy;但 RLHF policy 在调用 tool / 多轮交互 / 长 horizon 任务上仍然脆弱:

  • single-turn 偏好 不 directly transfer 到 multi-turn task success
  • RM 学的是"哪种文风讨人喜欢",不是"哪种调用顺序能解决问题"
  • 整段 response reward,无法区分"前 100 token 推理对、第 101 token 选错了 tool"

Agentic RL 的本质是把 RL 信号挂在 trajectory 终点的客观结果 上(test pass、math 答对、网页 task 完成),而不是 RM 的主观偏好。这一步让 alignment-style RL 升级为 decision-making RL

1.2 Mental modelMDP / POMDP 表述

元素 RLHF (single-turn) Agentic RL
State s_t prompt $(o_0, a_0, o_1, \dots, o_{t-1}, a_{t-1})$history
Action a_t 整段 response 一步 (thought, tool_call) 或 token-level subaction
Reward r_t terminal RM 分 terminal task success(多数时刻为 0
Horizon T 1(一段 response 10-200 步(agent loop
Trajectory 长度 (token) $10^2$-10^3 $10^3$-10^5
Environment RM (神经网络) 真实环境(shell / browser / search / Python

      ┌──────────────────────────────┐
      │   Policy π_θ (LLM)           │  agent
      └──────────────┬───────────────┘
                     │ action a_t = (thought, tool_call)
                     ↓
      ┌──────────────────────────────┐
      │   Environment / Tool         │
      │   - search / shell / browser │
      │   - Python / unit test       │
      └──────────────┬───────────────┘
                     │ observation o_t
                     ↓
      ┌──────────────────────────────┐
      │   History buffer             │
      │   (拼回 prompt 给下一步)     │
      └──────────────┬───────────────┘
                     │
                     └─→ 回到 π_θ

1.3 Agentic RL 与三类 RL 邻居的关系

邻居 共同点 差异
RLHF / DPO LLM + KL-anchored RL Agentic 必须多轮 + tool I/Oreward 来自环境而非 RM
Reasoning RLR1, R1-Zero rule-based outcome reward + GRPO R1 只在数学/代码答题,无 toolAgentic RL 在 tool 调用 + 多步交互上
经典 robotic RLVPT, OpenVLA sparse terminal reward + long horizon LLM agent action space = token sequence;机器人 RL action = 连续控制

💡 面试 framing — 被问到"Agentic RL 是什么"时,先 disambiguate

  • (1) 严格定义:multi-turn + tool I/O + outcome reward RL
  • (2) 与 RLHF 的边界:RLHF 是 single-turn alignmentAgentic 是 multi-turn decision-making
  • (3) 与 reasoning RL 的边界:reasoning RL 只算答题正确,Agentic RL 算 task success on real environment

这三句话能在 30 秒内把面试官的预期 anchor 准。

§2 PPO / GRPO 在 agent 上的关键改造

2.1 Token maskonly loss on agent tokens

这是 Agentic RL 第一条铁律。agent trajectory 里的 token 分两类:

  • agent tokenpolicy \pi_\theta generate 的(thought, action JSON, final answer
  • environment tokentool 返回的 observationsearch snippet, stdout, screenshot caption

PPO/GRPO 的 log-prob ratio 与 loss 必须只在 agent token 上算。如果在 observation token 上也加 loss

  • policy 会试图"教 tool 怎么回答"(毫无意义且会 reward hack
  • gradient 会被大量低信息 observation token 稀释
  • KL penalty 也会错误地把 environment text 当成自己的 distribution 估计

实现上是一个 action_mask: [B, L] tensor1 表示 agent 自己 generate 的 token0 表示 prompt / observation / padding。loss 计算时 (loss * action_mask).sum() / action_mask.sum()

⚠️ 常见 bug — 早期开源实现(包括早期 TRL agent example)漏了 observation mask,导致训练 metric 看起来在涨但 task success 下降——典型 reward hacking on tool output。OpenRLHF / verl / TRL 2024 版本都已修正,自己写 trainer 必须显式加。

2.2 Trajectory-level GAE for agent

agent 轨迹长(50-200 步),reward 极稀疏(只在终点)。设:

  • $r_t \in \mathbb{R}$:第 t 步 reward(多数 t 上 $r_t = 0$,终点 $r_T = R \in {0, 1}$
  • $V_\phi(s_t)$critic 估计

TD residual

\delta_t = r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t)

GAE

A_t^{\text{GAE}(\gamma, \lambda)} = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}

LLM agent 中 \gamma 怎么取? 取决于"step"的定义:

  • 如果 step = 单 token\gamma 接近 1token level discount 没意义)
  • 如果 step = 一次 thought-action-obs 循环\gamma \in [0.95, 0.99] 合理,控制长 horizon 的折扣

LLM agent 中 GAE 的退化sparse terminal reward 下,\lambda = 1 + \gamma = 1 等价于 sequence-level MC return 减 baseline。这正是 GRPO 直接做 trace-level reward 的隐含解释。

2.3 PPO loss adapted to agent

带 mask 的 PPO-Clip(按整条 trajectory 算,外层是 trajectory 期望,内层 sum over tokens):

\boxed{\;L^{\text{CLIP-agent}}(\theta) = \mathbb{E}_{\tau \sim \pi_\text{old}}\!\left[\frac{\sum_{t=1}^{T} m_t \cdot \min\!\big(\rho_t A_t,\, \text{clip}(\rho_t, 1-\epsilon, 1+\epsilon) A_t\big)}{\sum_{t=1}^{T} m_t}\right]\;}

其中 \tau 是 trajectory(包含所有 T 个 token / step),m_t \in \{0, 1\} 是 agent action_maskagent 自己生成的 token 为 1observation/system token 为 0),\rho_t = \pi_\theta(a_t \mid s_t) / \pi_{\theta_\text{old}}(a_t \mid s_t) 是 token-level importance ratio。注意外层 expectation 索引是 trajectory $\tau$,内层 sum 索引是 token $t$,不能混淆。

per-token KL penalty(写进 reward):

\tilde{r}_t = m_t \cdot \big(\text{rule}\_\text{reward}_t - \beta \log \tfrac{\pi_\theta(a_t \mid s_t)}{\pi_\text{ref}(a_t \mid s_t)}\big)

注意只对 agent token 算 KLobservation token 的 \pi 是没有意义的(它们是环境给的,不是 model sample 出的)。

2.4 GRPO for agentstrace-level group-relative advantage

GRPO 在 agent 上更适用,因为:

  1. 省 critic——agent value 难学(长 horizon + sparse reward
  2. trace-level reward 直接对应 trace-level advantage——不需要 per-step value
  3. 同 prompt 多 rollout 自动 variance reduction——agent 任务通常 deterministic env,多次 rollout 给出真实 reward 方差

公式(保留 PPO-Clip 结构,advantage 改组内归一化):

\hat{A}_i = \frac{r_i - \text{mean}(\{r_1, \dots, r_G\})}{\text{std}(\{r_1, \dots, r_G\}) + \epsilon}

整条 trajectory 的所有 agent token 共享同一个 $\hat{A}_i$observation token 仍然 mask 掉):

L^{\text{GRPO-agent}}(\theta) = \mathbb{E}\!\left[\frac{1}{G}\sum_{i=1}^G \frac{1}{\sum_t m_{i,t}}\sum_{t=1}^{T_i} m_{i,t} \cdot \Big(\min(\rho_{i,t} \hat{A}_i, \text{clip}(\rho_{i,t}, 1-\epsilon, 1+\epsilon) \hat{A}_i) - \beta\, \text{KL}_{i,t}\Big)\right]

KL 通常用 K3 estimatorSchulman 2020 blog):$\text{KL}{i,t} = \exp(\log\pi\text{ref} - \log\pi_\theta) - (\log\pi_\text{ref} - \log\pi_\theta) - 1$。

GRPO-agent 的"四省" — 列举如下。

  • 省 value model(一份显存)
  • 省 per-token credit assignmenttrace-level advantage
  • 省 reward shapingrule-based terminal 就够)
  • 省 hyperparameterc_v, \lambda 都不需要)

⚠️ GRPO-agent 的"三痛" — 仍有三个 trade-off 需要承认。

  • 长 trajectory 上 trace-level advantage 太粗(所有 agent token 共享同一 $\hat{A}$)——长 trajectory 的 credit dilution
  • 全 success / 全 fail group \text{std} = 0 退化(agent 任务 reward 二值,常出现)
  • on-policy rollout 慢(agent rollout 含 tool I/O 延迟,远比 chat completion 慢)

§3 Reward design for agents(核心)

reward 是 Agentic RL 的命门。Reward 错了,模型再大、算法再新也学不到东西reward 对了,简单 GRPO 就能上 SOTA。

3.1 Outcome reward vs Process reward

维度 Outcome reward Process reward
监督粒度 trajectory 终点 1 个 reward 每步 (or 每 subgoal) 1 个 reward
Label 来源 task successtest pass / answer match PRM / step verifier / human
稀疏度 极稀疏(多数 step 0 dense
Credit assignment 难(长 horizon 上 GAE 也难) 易(每步直接打分)
Reward hacking 较低(rule-based 时) 较高(PRM 可被 hack
实施难度 易(test-pass / 答案 match 难(PRM 训练成本高)

面试 takereasoning RLR1)选 outcome reward 因为数学/代码可程序化验证;agent RL 主流也选 outcome reward 因为 agent 任务 ground truth 更明确(task 完成 yes/no)。process reward 主要用于 reasoning-heavy 任务(数学 step 标 PRM),在 tool-use agent 上较少。

3.2 Verifier-based rewardrule-based

这是 Agentic RL 最干净的 reward 形式:把 reward 写成 可执行的 verifier 函数

def verifier_reward(trajectory) -> float:
    """
    trajectory: list of (thought, action, observation)
    返回 0 或 1 的 outcome reward
    """
    final_answer = trajectory[-1].final_answer

    # 1. 数学题:精确匹配 ground truth
    if task_type == "math":
        return 1.0 if normalize_math(final_answer) == ground_truth else 0.0

    # 2. 代码题:跑 unit test
    if task_type == "code":
        code = extract_code(final_answer)
        pass_count = run_unit_tests(code, test_cases)
        return pass_count / len(test_cases)   # partial credit

    # 3. SWE-bench: apply patch + run test
    if task_type == "swe":
        try:
            apply_patch(repo, final_answer)
            return 1.0 if run_test(repo, expected_test) else 0.0
        except PatchError:
            return 0.0

    # 4. Web agent: task-specific verifier
    if task_type == "webshop":
        return webshop_grader(final_state)    # 由 benchmark 提供

verifier-based reward 的核心优势

  • 接近 ground truth绕开 learned-RM 的 reward hacking 主要 failure mode
  • 可重复(同一 trajectory reward 一致),便于 advantage estimate
  • 显存 / 算力开销极小(执行 verifier 比一次 LLM forward 便宜数百倍)

核心限制:只能用于"可验证任务"——math、code、formal verification、可 grader 化的 web/GUI task。开放式任务(写作、对话)仍需 RM。

3.3 Format reward / shaping reward

仅有 outcome reward 时 agent 经常学到"格式崩坏但偶然答对"的 trajectory——例如不写 <think> 块就直接 Action: answer(42)Format reward 给一个轻量的格式约束信号:

def format_reward(trajectory) -> float:
    """
    检查 trajectory 是否符合预期格式 schema
    返回 [0, 1] 的连续 score
    """
    score = 0.0

    # 必须有 <think>...</think> 块
    if "<think>" in trajectory.text and "</think>" in trajectory.text:
        score += 0.3

    # tool call 必须是合法 JSON
    for action in trajectory.actions:
        if is_valid_json(action.tool_call):
            score += 0.1
        else:
            score -= 0.2   # 严重错误

    # final answer 必须用 \boxed{...} 包裹(math task
    if has_boxed_answer(trajectory.final):
        score += 0.2

    return max(0.0, min(1.0, score))

Composite reward 的典型写法:

r_\text{total} = \alpha \cdot r_\text{outcome} + \beta \cdot r_\text{format} + \gamma \cdot r_\text{shaping}

R1 / R1-Zero 用 accuracy_reward + format_reward 的简单加和;ToolRL / RAGEN 等加 tool-call efficiency shaping。

3.4 Length penalty(防 agent 拖太长)

agent RL 的一个 emergent failure modemodel 学到"拖长 trajectory 拿到正确答案的概率更高"——明明能 5 步解决的任务,agent 偏要走 50 步。这是 reward hacking 的一种形式。

缓解:

r_\text{adjusted} = r_\text{outcome} - \lambda \cdot \max(0, T - T_\text{target})

或更柔和的 sigmoid 形式:

r_\text{adjusted} = r_\text{outcome} \cdot \sigma\!\big(-(T - T_\text{target}) / \tau\big)

DAPO 报告 "overlong shaping"——超出 length budget 后 reward 指数衰减,避免 agent 拖到 context 上限。

3.5 Tool-call shaping reward

给"调对工具"奖励、给"调错工具 / 重复调用"惩罚:

def tool_shaping(trajectory) -> float:
    score = 0.0

    # 调对工具(task 关联性 heuristic
    if task_needs_search and any(a.tool == "search" for a in trajectory.actions):
        score += 0.1

    # 惩罚连续重复同样调用
    consecutive_dup = count_consecutive_duplicate_calls(trajectory.actions)
    score -= 0.05 * consecutive_dup

    # 惩罚调用不存在的 tool
    invalid_calls = sum(1 for a in trajectory.actions if a.tool not in TOOL_REGISTRY)
    score -= 0.3 * invalid_calls

    return score

⚠️ shaping reward 的风险 — shaping 给得不当,agent 会 over-fit shaping signal 而忽略 outcome。主流做法shaping reward weight ≪ outcome reward weight(典型 0.1 : 1),且 shaping 必须 capped(不能无限累加)。

3.6 RLAIF for agents:用 LLM 当 reward

外部 verifier 难写时(开放式任务),用强 LLM 当 judge:

def llm_judge_reward(trajectory, judge_model) -> float:
    """
    用 judge LLM 给 trajectory 打分
    """
    prompt = f"""
    Judge whether the agent completed this task successfully.
    Task: {trajectory.task}
    Final state: {trajectory.final_state}
    Return JSON: {{"success": bool, "reasoning": str}}
    """
    judgment = judge_model(prompt)
    return 1.0 if judgment["success"] else 0.0

风险

  • judge LLM 自己有偏见(长度偏好、谄媚)→ 偏见放大到 student
  • judge 自己可能被 prompt-injectedagent trajectory 含恶意指令)
  • 算力开销高(每个 trajectory 一次 judge call

主流缓解:(a) judge ensemble3-5 个不同 model judge 取多数);(b) judge with rubric(强约束输出结构);(c) rule + LLM 混合(可验证部分 rule,开放部分 LLM)。

§4 Long-horizon credit assignment

4.1 稀疏 reward 是 agent RL 的核心痛点

经典 game RLAtari、Mujocoreward denseLLM agent 在长 trajectory 上几乎所有 step reward = 0,只在终点有信号。这导致:

  • value model 几乎学不到东西(中间 V 应该是什么?)
  • per-token policy gradient 方差极大
  • 早期 step 与 reward 的因果链被稀释——"我第 3 步选了 search tool" 是不是导致了第 50 步答对?

4.2 Discount + GAE 在 agent 上的退化

回顾 GAE

A_t = \sum_l (\gamma\lambda)^l \delta_{t+l}, \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)

在 sparse terminal reward 下 (r_t = 0 for t \lt T, r_T = R)

A_t = \gamma^{T-t} R - V(s_t) + \text{value correction terms}

advantage ≈ 折扣回报 - baseline。如果 V_\phi 学不准(在 agent 上经常),这就退化为 raw MC returnGAE 的 bias-variance trade-off 失效。

实践 takeagent RL 上 GAE 不如 group-relative advantageGRPO)稳,这是 GRPO 比 PPO 在 agent 上 sample efficient 的根本原因之一。

4.3 Hindsight relabeling for agents

Hindsight Experience Replay (Andrychowicz et al. 2017 NeurIPS) 起源于 robot manipulation:失败 trajectory 不丢,而是把"实际达成的状态"当成 goal重新标 reward。

LLM agent 版本:

def hindsight_relabel(trajectory):
    """
    把 failed trajectory 改造成 "alternative task" 的 successful trajectory
    """
    if trajectory.outcome == 1:
        return [trajectory]   # 成功的不动

    # 假设 agent 在 web 上 navigate 时本来想买商品 A,但最后停在商品 B 页面
    # → 改成"找到商品 B 的 trajectory"reward = 1
    alt_task = describe_terminal_state(trajectory.final_state)
    relabeled = trajectory.with_task(alt_task)
    relabeled.outcome = 1
    return [trajectory, relabeled]

💡 Agentic Hindsight 的难点 — 需要"任意 terminal state 都能被描述成一个合理 task"。对开放 web 环境(购物、导航)容易;对 math/code 任务很难(错答案不能被改成"另一个题的对答案")。

4.4 Subgoal decomposition + process reward

长 trajectory 切成 subgoal 是另一条 credit assignment 路线:

  • 把 100 步 trajectory 切成 5 个 subgoal × 20 步
  • 每个 subgoal 终点给一个 process rewardsubgoal 是否完成)
  • subgoal reward 累加成 trajectory reward

实现方式:

  • hand-crafted subgoal:人写每个 subgoal 的判据(如 "找到购物车页面" 触发 subgoal-1 reward
  • LLM-decomposed subgoal:让一个 planner LLM 把 task 拆 subgoalverifier 判每个 subgoal
  • PRM-style step reward:训一个 PRM 评每步好坏(Math-Shepherd 思路)

⚠️ subgoal RL 的代价 — subgoal boundary 错画会导致 agent 学到"刻意触发 subgoal reward 而不真正完成 task"。这是 process reward 通病。

4.5 Per-step KL penalty 防止 policy collapse

agent 长 trajectory 上 policy 容易"全押"(每步生成 high-confidence token),导致 entropy 崩坏:

\tilde{r}_t = m_t \cdot \big(r_t - \beta \cdot \text{KL}(\pi_\theta(\cdot \mid s_t) \| \pi_\text{ref}(\cdot \mid s_t))\big)

关键KL 必须 per-step + 只对 agent token 算。一旦 KL 算到 observation token 上,policy 会被"惩罚 mimicking 环境文本"——但这惩罚没有意义(policy 不该 mimick 环境,只是用 observation 做条件)。

R1-Zero 用 $\beta = 0.001$agent task 上常用 $\beta \in [0.001, 0.05]$。

§5 Self-rewarding & exploration in agent RL

5.1 Self-Rewarding LMYuan et al. 2024 Meta arXiv 2401.10020

核心 idea:让 policy 自己当 judgeiterative DPO


  Iteration k:
    1. policy_k 生成 multiple responses per prompt
    2. policy_k 自己 LLM-as-judge 打分(也是 policy_k 的另一个 prompt
    3. 高分 vs 低分构成 preference pair
    4. policy_{k+1} = DPO(policy_k, preference_pair)

效果:在 AlpacaEval 上 iterative 自打分能持续涨点。

5.2 Self-Rewarding 在 agent 上的危险

agent 任务 vs alignment 任务最大差异:alignment 有"客观偏好分布"(人觉得有用、礼貌),可以 LLM judge;agent 任务有客观 ground truthtest pass / task success——self-rewarding 会:

  • judge 自己可能错(agent 答错了但自评对)→ training collapse
  • iterative drift:每轮把"自己以为对"的轨迹强化,离 ground truth 越走越远
  • 探索退化:自评高分 prefer 已知 pattern,反而抑制探索新工具

主流做法agent RL 优先用 rule-based ground truthself-rewarding 仅作为辅助信号(如开放式任务 fallback)。

5.3 Exploration in agent RL

agent action space 包括:

  • token-level explorationsampling temperature,控制 token 选择多样性
  • tool-call-level exploration:每个 thought-action 周期选择不同 tool / 不同 query
  • trajectory-level exploration:完全不同 trajectory plan

经典做法:

方法 实现
Temperature schedule rollout 时 $T \in [0.7, 1.2]$,训练随轮次降温
Top-p / Top-k 限制 sampling 范围避免 outlier token
ε-tool-choice \epsilon 概率随机选 tool(替代 LLM-policy 选择)
Diverse beam 多 trajectory 用 diverse beam search 保证多样性
GRPO group sampling 同 prompt G = 16 个 rollout,天然 exploration

RAGEN / StarPO 的关键 insightWang et al. 2025 arXiv 2504.20073):multi-turn agent RL 中 rollout 多样性是 collapse 的"防火墙"——单 trajectory 训练会让 policy 退化为 deterministic mode。

5.4 Curriculum & difficulty scheduling

agent 任务从易到难排序,按 model 当前能力 schedule

  • WebRL (Qi et al. 2024 ICLR-25 arXiv 2411.02337) 用 self-evolving curriculum——失败任务被记录,下轮加入 buffer
  • Absolute Zero / R-Zero 用 learnability reward:选 model success rate ≈ 50% 的任务(最有学习信号)

💡 Curriculum 是"长 horizon agent RL 的隐性 component" — 不是 algorithm contribution,但实测对 sample efficiency 比换 algorithm 影响更大。R1 / R1-Zero 的 reasoning RL 也用了 implicit curriculum(数据难度逐渐升级)。

§6 Specific algorithms(代表性 Agentic RL papers

按 "时间 + 数据/任务类型" 排序,每个给一句话 + 关键公式。

6.1 VPT (Baker et al. 2022 NeurIPS OpenAI, arXiv 2206.11795)

Setting: Minecraft,先用 70k hours youtube 视频 pretrain inverse dynamics model (IDM),再用 IDM 自动标 action label → behavior clone → RL fine-tune.

Key: 第一个大规模"视频 → action label → policy → RL"的 pipeline。Agent RL 的早期蓝本,证明了 scaling RL with imitation pretrain 可行。

6.2 AgentTuning (Zeng et al. 2023 THU arXiv 2310.12823)

Setting: 构建 AgentInstruct dataset6 个 agent task 的 demonstration),多任务 SFT。

Key: 不是 RL,是 agent SFT——但这是 Agentic RL 的标准 warm-start 步骤。Llama-2 经 AgentTuning 后 agent task 平均 +50%。

💡 AgentTuning 的位置 — 在 Agentic RL pipeline 里,AgentTuning-style SFT 是 RL 之前的必要 warm-start。直接 from-scratch RL 跑 agent 极其困难,因为 base model 不知道怎么 emit 合法 tool call schema。

6.3 Agent-FLAN (Chen et al. 2024 ACL Findings, arXiv 2403.12881)

Setting: Agent SFT 数据分三类——multi-turn dialogue / formatted tool call / negative examples(拒绝/失败案例)。

Key: negative example 显著缓解 hallucinated tool call——SFT 不只看"怎么用对",还看"为什么这样不对"。是 Agent SFT 工程化的重要 milestone。

6.4 ReFT (Trung et al. 2024 ACL arXiv 2401.08967)

Setting: math reasoning agent,先 SFT warm-start,再 PPO with rule-based outcome reward (answer correctness)。

Key formula(标准 PPO + verifier):

r(\tau) = \mathbb{1}[\text{answer}(\tau) = y^*] - \beta \cdot \text{KL}(\pi_\theta \| \pi_\text{SFT})

Result: GSM8K +9pp over SFTMathQA +7pp。证明 PPO + outcome reward 在 reasoning agent 上稳定可行——这是 R1 的前身实验。

6.5 DeepSeek-R1 (DeepSeek-AI 2025 arXiv 2501.12948) 在 agent 上的扩展

R1 本身不是 agent paper,但 R1 的 GRPO + rule-based reward + format reward 方法论被 ToolRL / ReSearch / RAGEN 直接继承。R1 = Agentic RL 的算法基线模板

复习 GRPO 在 agent 上的应用:

  • per-prompt G rollouts
  • trace-level rewardrule-based
  • group-relative advantage
  • per-step KL with K3 estimator
  • agent token mask

6.6 ToolRL (Qian et al. 2025 arXiv 2504.13958)

Setting: tool-augmented LLM 上做 GRPOreward = correctness + format + tool-use efficiency。

Key formula:

r(\tau) = r_\text{correct} + \alpha \cdot r_\text{format} + \gamma \cdot r_\text{tool-eff}

其中 r_\text{tool-eff} 惩罚冗余/无效 tool call。

Result: 在 BFCL (Berkeley Function Calling Leaderboard) 上 7B model 接近 GPT-4 性能。开源验证 GRPO + tool shaping 的稳定性。

6.7 ReSearch (Chen et al. 2025 arXiv 2503.19470)

Setting: search-augmented agent,把 search 当 first-class actionreward = answer correctness onlyrule-based)。

Key idea: 不需要 process reward 也能学会 multi-hop searchoutcome-only + GRPO 足够——前提是 base model 经 SFT warm-start 已能 emit 合法 search query。

6.8 RAGEN / StarPO (Wang et al. 2025 arXiv 2504.20073)

Paper: "Understanding Self-Evolution in LLM Agents via Multi-Turn Reinforcement Learning".

Setting: multi-turn RL agent training frameworkstate-action token-level loss + critic-free。

Key contributions:

  1. StarPOState-Thinking-Actions-Reward Policy Optimization):critic-free,整段 trajectory 共享 advantage,加 token mask 严格只在 agent token 上算 loss。StarPO-S 变种引入 fine-grained reasoning-aware reward + 可选 critic incorporation,进一步缓解多轮 reward sparsity(论文摘要原话)
  2. rollout 多样性 = collapse 防火墙:实测 group size G = 16G = 4 显著更稳
  3. trajectory length 信号:失败 trajectory length 大时 reward shaping 应加 length penalty

6.9 WebRL (Qi et al. 2024 ICLR-25 arXiv 2411.02337)

Setting: Web agent (WebArena)self-evolving curriculum + ORM + retrospective rollout。

Key components:

  • ORM (Outcome Reward Model) 训自 task success → 在线给 reward
  • 失败 task 进入 curriculum buffer,下一轮加大权重
  • retrospective rollout:失败 trajectory 用 LLM 改造成 "正确 trajectory" 重新 SFT

Result: Llama-3.1-8B 在 WebArena 上 43%vs GPT-4 14.4%),证明小 model + 好 RL pipeline > 大 model + zero-shot。

6.10 AgentQ (Putta et al. 2024 arXiv 2408.07199)

Setting: web agentMCTS + AI critique + offline DPO。

Key idea: MCTS 搜出"reward-balanced" preference pair(高分 trajectory vs 低分 trajectory),用 DPO offline 训练。不需要 online RL infra,对算力受限场景实用。

6.11 WebGUM (Furuta et al. 2024 ICLR arXiv 2305.11854)

Setting: HTML + screenshot multimodal web agentoffline SFT from demonstrations不是 RL fine-tune — 论文是 imitation/supervised 范式)。

Key: 把网页 DOM + 截图同时喂给 model,相比纯 text 提升 grounding 准确率。是 Computer-Use / web agent RL(如 WebRL, AgentQ)的 dataset + base 阶段。后续 web agent RL 工作常在 WebGUM 这类 base 上做 RL fine-tune。

6.12 CodeRL (Le et al. 2022 NeurIPS arXiv 2207.01780)

Setting: 代码生成 + actor-criticreward = unit test pass。

Key formula: 经典 actor-critic + critic 用作 token-level baselinePG 信号来自最终 test-pass。

6.13 PPOCoder (Shojaee et al. 2023 arXiv 2301.13816)

Setting: code generation + PPOcomposite reward = compilable + functional correctness。

Key: 早期把 PPO 用在 code-gen 上的尝试。证明 multi-component reward 比单 test-pass 训练更稳。

6.14 SWE-RL (Wei et al. 2025 Meta FAIR arXiv 2502.18449)

Setting: SWE-bench / GitHub PR 数据,rule-based reward = patch similarity + test-passGRPO。

Key features:

  • 数据规模:Meta 用 GitHub PR commit history 构造 76M+ context-issue-patch 三元组
  • rewardedit similarity (oracle patch ↔ predicted patch) + test pass binary
  • 算法:纯 GRPO + format reward

Result: Llama-3.3-70B + SWE-RL 在 SWE-bench Verified 上 41%(无 scaffold),证明 rule-based RL on real PR data 可以让 model 学到 emergent reasoning behavior——例如 file-level retrieval planning、root cause analysis、test self-validation。

6.15 OpenVLA (Kim et al. 2024 arXiv 2406.09246)

Setting: vision-language-action 7B 模型 for robot manipulation970K 真实机器人 demonstrations 上 fine-tune (开源 base + LoRA fine-tuning recipe);论文重点是 imitation learning + parameter-efficient adaptation不是 task-specific RL fine-tune

Key: 是 robot agent 而非 LLM agent;常被作为"LLM agent vs robot agent"对比讨论。后续工作(如 OpenVLA-OFT、π-RL 系列)才在 OpenVLA base 上做 RL,但 OpenVLA 论文本身没做 RL。

6.16 Anthropic Computer-Use(公开知识 — 训练细节未披露)

Anthropic Claude 3.5 Sonnet (new) 2024-10-22 起支持 Computer-Use3.7 / 4.0 / 4.5 / Opus 4.x 持续迭代。

公开资料只描述了能力 + 安全护栏,训练算法 / reward 形式未披露

  • action space = 屏幕坐标 + 键盘事件 + 鼠标事件(截图作为 observation
  • 安全性:constitutional AI 风格的护栏 + 红队 + prompt-injection 防御
  • system card 提到训练涉及人工演示 + 合成数据,但没有公开 RLHF / GRPO / verifier reward 等具体细节

社区推测仅推测,非官方):可能用 GRPO/PPO + verifier-based reward + Constitutional AI 风格的 AI feedback,但无任何官方确认。面试时讨论 Computer-Use 训练应明确区分 "公开能力" vs "推测内部细节"。

§7 Code patternsPyTorch / 伪代码)

实现 Agentic RL 时最容易写错的几段。每段独立可读。

7.1 Agent rolloutstate, action, reward 收集)

import torch
from dataclasses import dataclass

@dataclass
class Step:
    obs: str                   # 上一步 observation 或 prompt
    thought_tokens: list[int]  # agent 生成的 thought
    action_tokens: list[int]   # agent 生成的 tool_call JSON
    tool_name: str
    tool_args: dict
    observation: str           # tool 返回结果
    done: bool

def rollout(policy, env, prompt, max_steps=20, max_tokens_per_step=512):
    """
    一条 agent trajectory rollout
    返回: trajectory (list of Step), final reward
    """
    trajectory = []
    history = prompt
    for step_idx in range(max_steps):
        # ── agent 生成 (thought, action) ──
        agent_output = policy.generate(
            prompt=history,
            stop_tokens=["</action>"],
            max_new_tokens=max_tokens_per_step,
            temperature=0.7,
        )
        thought, action_json = parse_thought_action(agent_output)

        # ── 调用 tool ──
        tool_name = action_json["tool"]
        tool_args = action_json["args"]
        if tool_name == "final_answer":
            obs = action_json["answer"]
            done = True
        else:
            obs = env.call(tool_name, tool_args)
            done = False

        # 更新 history(拼回 prompt
        history = history + agent_output + f"\n<obs>{obs}</obs>\n"

        trajectory.append(Step(
            obs=history,                    # 前置 history
            thought_tokens=tokenize(thought),
            action_tokens=tokenize(action_json),
            tool_name=tool_name,
            tool_args=tool_args,
            observation=obs,
            done=done,
        ))

        if done or step_idx == max_steps - 1:
            break

    # ── 终点 reward ──
    final_reward = env.compute_reward(trajectory)
    return trajectory, final_reward

7.2 Trajectory-level GAE advantage

import torch

def trajectory_gae(rewards, values, dones, gamma=0.99, lam=0.95):
    """
    计算 step-level GAE advantage
    rewards: [T]    per-step reward (多数 = 0, 终点 = R)
    values:  [T+1]  V(s_0)...V(s_T), V(s_T) 应为 0 (terminal)
    dones:   [T]    1 if terminal else 0
    返回: advantages [T], returns [T]
    """
    T = rewards.shape[0]
    advantages = torch.zeros_like(rewards)
    gae = 0.0
    for t in reversed(range(T)):
        non_term = 1.0 - dones[t]
        delta = rewards[t] + gamma * values[t + 1] * non_term - values[t]
        gae = delta + gamma * lam * non_term * gae
        advantages[t] = gae
    returns = advantages + values[:T]
    return advantages, returns

7.3 PPO loss adapted to agentwith action_mask

这是 Agentic RL 最重要的一段代码。区别 RLHF 的 PPO:必须显式 mask out observation token。

import torch
import torch.nn.functional as F

def ppo_agent_step(policy, value, batch, eps_clip=0.2, c_v=0.5, c_e=0.01):
    """
    batch:
      input_ids:       [B, L]    full trajectory tokens (prompt + thought + action + obs ...)
      action_mask:     [B, L]    1 = agent-generated token, 0 = prompt/observation/pad
      old_log_probs:   [B, L]    log π_θ_old at sample time, 0 at masked positions
      advantages:      [B, L]    step-level GAE advantages (broadcast to all agent tokens of that step)
      returns:         [B, L]    GAE returns for value loss
    """
    logits = policy(batch["input_ids"]).logits           # [B, L, V]
    log_probs = F.log_softmax(logits[:, :-1], dim=-1)    # [B, L-1, V]
    targets = batch["input_ids"][:, 1:].unsqueeze(-1)
    new_log_probs = log_probs.gather(-1, targets).squeeze(-1)  # [B, L-1]
    new_log_probs = F.pad(new_log_probs, (1, 0))               # 对齐 [B, L]

    # ── 关键: action_mask ──
    mask = batch["action_mask"].float()
    # 只对 agent 自己生成的 token 算 ratio / loss
    ratio = torch.exp((new_log_probs - batch["old_log_probs"]) * mask)
    # observation 位置: ratio = exp(0) = 1, 不影响 surr1/surr2

    A = batch["advantages"]
    surr1 = ratio * A
    surr2 = torch.clamp(ratio, 1.0 - eps_clip, 1.0 + eps_clip) * A
    # mask 后求均值(避免 observation token 拉低 loss scale
    policy_loss = -((torch.min(surr1, surr2) * mask).sum() / mask.sum().clamp_min(1.0))

    # value loss: 也只在 agent token 上算(observation 的 V 没意义)
    V = value(batch["input_ids"]).squeeze(-1)            # [B, L]
    value_loss = (((V - batch["returns"]) ** 2) * mask).sum() / mask.sum().clamp_min(1.0)

    # entropy bonus: 只在 agent token 上
    probs = log_probs.exp()
    entropy = -(probs * log_probs).sum(-1)               # [B, L-1]
    entropy = F.pad(entropy, (1, 0))
    entropy_bonus = (entropy * mask).sum() / mask.sum().clamp_min(1.0)

    loss = policy_loss + c_v * value_loss - c_e * entropy_bonus

    # 监控
    with torch.no_grad():
        approx_kl = ((ratio - 1) - torch.log(ratio.clamp_min(1e-8))) * mask
        approx_kl = approx_kl.sum() / mask.sum().clamp_min(1.0)
    return loss, {
        "policy": policy_loss.item(),
        "value": value_loss.item(),
        "entropy": entropy_bonus.item(),
        "approx_kl": approx_kl.item(),
    }

⚠️ agent_mask 的 5 个易错点

  • 必须 cover prompt tokensprompt 不是 agent generate 的,mask = 0
  • 必须 cover all observation tokens:tool 返回的每一个 token(甚至包括 <obs> 标签本身)mask = 0
  • 必须 cover all padding:右 pad 的位置 mask = 0
  • separator token(如 <action>, </thought>)算 agent tokenmask = 1
  • multi-turn batch 里不同 trajectory 的 mask pattern 不同,必须 per-sample 算

7.4 GRPO group-relative reward on agent trajectories

import torch
import torch.nn.functional as F

def grpo_agent_loss(policy, ref_policy, batch, eps_clip=0.2, beta=0.04):
    """
    batch:
      input_ids:     [N, L]   N = sum_b G samples in batch
      action_mask:   [N, L]   agent-generated token mask
      old_log_probs: [N, L]   detached log probs at rollout time
      rewards:       [N]      trajectory-level outcome reward
      group_id:      [N]      same prompt → same group_id
    """
    rewards = batch["rewards"]
    gid = batch["group_id"].long()

    # ── 组内归一化 ──
    num_groups = int(gid.max().item()) + 1
    counts = torch.zeros(num_groups, device=rewards.device).scatter_add_(
        0, gid, torch.ones_like(rewards))
    sums = torch.zeros(num_groups, device=rewards.device).scatter_add_(
        0, gid, rewards)
    group_mean = sums / counts.clamp_min(1.0)
    diff_sq = (rewards - group_mean[gid]) ** 2
    sq_sums = torch.zeros(num_groups, device=rewards.device).scatter_add_(
        0, gid, diff_sq)
    group_std = (sq_sums / counts.clamp_min(1.0)).sqrt()

    A = (rewards - group_mean[gid]) / (group_std[gid] + 1e-8)   # [N]
    A = A.unsqueeze(-1)                                          # [N, 1] 整段共享

    # ── log-prob ratio ──
    logits = policy(batch["input_ids"]).logits[:, :-1]
    log_probs = F.log_softmax(logits, dim=-1)
    tgt = batch["input_ids"][:, 1:].unsqueeze(-1)
    new_log_probs = log_probs.gather(-1, tgt).squeeze(-1)
    new_log_probs = F.pad(new_log_probs, (1, 0))                 # [N, L]
    mask = batch["action_mask"].float()

    ratio = torch.exp((new_log_probs - batch["old_log_probs"]) * mask)

    # ── PPO-Clip surrogate (advantage broadcast 到整段) ──
    surr1 = ratio * A
    surr2 = torch.clamp(ratio, 1.0 - eps_clip, 1.0 + eps_clip) * A

    # ── KL with K3 estimator (Schulman 2020 blog) ──
    with torch.no_grad():
        ref_logits = ref_policy(batch["input_ids"]).logits[:, :-1]
        ref_log_probs = F.log_softmax(ref_logits, dim=-1)
        ref_token_lp = ref_log_probs.gather(-1, tgt).squeeze(-1)
        ref_token_lp = F.pad(ref_token_lp, (1, 0))
    delta = ref_token_lp - new_log_probs                          # log(π_ref / π_θ)
    kl_per_token = torch.exp(delta) - delta - 1.0                 # K3, non-negative

    token_obj = torch.min(surr1, surr2) - beta * kl_per_token     # [N, L]
    seq_len = mask.sum(dim=-1).clamp_min(1.0)                     # [N]
    per_seq = (token_obj * mask).sum(dim=-1) / seq_len            # [N]
    loss = -per_seq.mean()

    return loss, {
        "reward_mean": rewards.mean().item(),
        "advantage_std": A.squeeze(-1).std().item(),
        "kl": (kl_per_token * mask).sum().item() / mask.sum().clamp_min(1.0).item(),
    }

7.5 Outcome + step reward combination

def composite_reward(trajectory, weights=None):
    """
    把 outcome / format / shaping reward 合成最终 reward
    weights: dict[str, float]
    """
    if weights is None:
        weights = {"outcome": 1.0, "format": 0.2, "tool_eff": 0.1, "length": -0.05}

    r = {}
    r["outcome"] = outcome_verifier(trajectory)                  # in {0, 1}
    r["format"]  = format_score(trajectory)                      # in [0, 1]
    r["tool_eff"] = tool_efficiency_score(trajectory)            # in [-1, 1]
    r["length"]  = max(0, len(trajectory.steps) - target_len)    # excess steps

    total = sum(weights[k] * r[k] for k in r)
    return total, r

💡 process-then-outcome 复合形式 — 若有 PRM,可以:先 PRM 给 step-level shaping,但最终轨迹 reward 至少 50% 由 outcome 决定,避免 agent 偷只关心 PRM score 的局部最优。

7.6 Verifier-based rewardcode test / math match

import re
import subprocess

def verifier_reward(trajectory, task_type, ground_truth):
    """
    rule-based outcome reward
    """
    final = trajectory.final_answer

    if task_type == "math":
        return float(extract_boxed_answer(final) == normalize(ground_truth))

    if task_type == "code":
        code = extract_python_code(final)
        if code is None:
            return 0.0
        passed = 0
        for test in ground_truth["tests"]:
            try:
                result = subprocess.run(
                    ["python", "-c", code + "\n" + test],
                    capture_output=True, timeout=5,
                )
                if result.returncode == 0:
                    passed += 1
            except subprocess.TimeoutExpired:
                continue
        return passed / len(ground_truth["tests"])

    if task_type == "swe":
        patch = extract_unified_diff(final)
        if patch is None:
            return 0.0
        success = apply_patch_and_run_test(
            repo=ground_truth["repo"],
            patch=patch,
            test=ground_truth["test"],
        )
        return float(success)

    if task_type == "webshop":
        return webshop_grader(trajectory.final_state, ground_truth)

    raise ValueError(f"Unknown task type: {task_type}")

§8 Frontier (2024-2026 关键趋势)

8.1 Critic-free RL is the new default

DeepSeek-R1 (Jan 2025) 之后,critic-free RLGRPO 系)成为开源 agent RL 主流。原因:

  • value model 在长 horizon agent 上几乎学不动
  • 一份模型显存省下来可以加大 batch / group size
  • 调参简单(不用调 c_v, value lr

verl (ByteDance 2024+)、OpenRLHF、TRL 都已把 GRPO / RLOO / ReMax 当 first-class trainer。

8.2 Rule-based reward 在 agent 上的胜利

WebRL / ReSearch / SWE-RL / RAGEN 共同点:outcome reward + format rewardrule-based,避开 learned RM 的 reward hacking 主 failure mode。

为什么 rule-based 突然变可行

  • Agent task 比 alignment task 更"可程序化验证"——test pass / answer match / task complete
  • DeepSeek-R1 证明 rule-based 在 LLM RL 上 stable 且 scalable
  • learned RM 在 multi-turn 上更容易 hack(轨迹空间大)

8.3 Long-horizon training 的 infra challenge

agent RL rollout 慢,因为每个 trajectory 包含 tool I/O 延迟。infra 趋势:

  • vLLM / SGL 异步 rollout:把 generation 与 training 解耦,rollout 池化
  • Sandboxed executiontool execution 在 isolated container,并行化
  • Trajectory queuerollout worker / training worker 异步,trajectory 通过 message queue 流转
  • off-policy correctionrollout 与 update 之间有 lag,用 IS clip 或 V-trace 校正

代表实现:verl (ByteDance Seed open-source), AReaL (Ant Group + Tsinghua, async RL system arXiv 2505.24298), OpenRLHF v0.5+.

8.4 Tool-RL on TAU-bench / SWE-bench / OSWorld

工业 benchmark 上的 SOTA 趋势(2025-2026 公开数字):

Benchmark Task 2024 SOTA 2025-2026 SOTA Key approach
TAU-bench (retail) customer service multi-turn ~50% (GPT-4) 70-80% (Claude 4.x, GPT-5) RLHF + agent SFT
SWE-bench Verified GitHub PR fix ~25% (Claude 3.5) 70-80%+ (Claude 4.x, o3) Agent scaffold + RL
OSWorld OS GUI task ~12% (GPT-4V) ~50-60% (Claude 4.x, Operator) Computer-Use RL
WebArena web nav 14.4% (GPT-4) 43% (WebRL Llama-8B) curriculum + RL
GAIA general assistant 15% (GPT-4) 60-70% (Claude 4.x, o3) Agent + tool RL

注意:benchmark contamination 风险大,2026Q1 OpenAI 已弃用 SWE-bench Verified(原因:contamination + test flaw);当前更可信 benchmark 是 SWE-Lancer、SWE-bench Multilingual、private holdout。

8.5 Anthropic Computer-UseClaude 3.5 → 4.5 → Opus 4.x

公开知识

  • 2024-10-22 Claude 3.5 Sonnet (new) 首发 Computer-Use beta
  • 2025: Claude 3.7 / 4.0 / 4.5 持续迭代,速度 + 准确率提升
  • 训练涉及大量人工演示 + AI-generated rollout + RLHF + 安全红队
  • Action space = 屏幕截图 + 鼠标 + 键盘 + 文件系统访问
  • 公开 system card 提及 Constitutional AI + Computer-Use specific safety filter

算法层面的 inferred 信息(学术界推测,未官方确认):

  • 训练大概率涉及 RLHF on screenshot trajectories
  • reward 含 task completion grader (LLM-as-judge) + safety classifier
  • 可能用 GRPO / RLOO style critic-free RL(公开 paper 多次提及 critic-free

8.6 2025-2026 papers 群像

论文 方向 核心贡献
KodCode (Xu et al. 2025) 代码 agent RL 高质量代码 RL 数据集 + GRPO baseline
DAPO (Yu et al. 2025 ByteDance) GRPO 改进 clip higher / dynamic sampling / token loss / overlong shaping
VAPO (字节跳动 2025) GRPO 加 lightweight critic trace-level credit dilution 缓解
CISPO (MiniMax 2025) importance sampling 改进 解决 negative advantage 大 ratio 失稳
R-Zero Self-Play RL Challenger-Solver self-playlearnability reward
Absolute Zero Self-Play RL 完全无外部 taskcode executor 当 verifier
Search-R1 search agent RL search 当 first-class action + rule reward
Light-R1 / Sky-T1 reasoning + tool RL 开源 reproduction R1 + agent extension
OpenAgent / Llama-Agent 数据 + 框架 大规模 agent SFT + RL pipeline

💡 2026Q1-Q2 趋势 — agent RL on real environmentOS, browser, IDE)成为开源主线。simulator → 真实环境 → 部署 RL 的 sim-to-real pipeline 是下一个 frontier。Anthropic / OpenAI / DeepSeek / Meta 等都在做但细节未公开。

§9 Failure modes & 工程经验

9.1 Agentic RL 的"七宗罪"

失败模式 症状 根因 缓解
Token mask 漏 observation reward 上不去 / agent 学到怪行为 gradient 流到 environment token 严格 per-sample action_mask
Reward hacking on grader benchmark 涨但人评下降 grader 有漏洞 grader ensemble + holdout test
Length-explosion agent 拖到 context 上限 reward 与 length 正相关 length penalty + max_steps cap
Tool-call hallucination agent 调不存在的 tool base model SFT 不够 Agent-FLAN-style negative SFT
Loop / repetition agent 反复调同样 tool exploration 不够 tool-call diversity bonus + ε-tool
Group \sigma = 0 collapse advantage = NaN / 0 全 success 或全 fail data filter + std clamp
KL collapse policy entropy → 0 β 太小 per-step KL + entropy bonus

9.2 Online vs offline RL trade-off

维度 Online RL (PPO/GRPO) Offline RL (DPO/RFT)
数据效率 低(每轮新 rollout 高(一次 dataset 多次训)
训练速度 慢(rollout 含 tool I/O 快(pure SFT-style
性能上限 高(持续学习新分布) 中(受限于 dataset 分布)
实现复杂度 高(trajectory queue + verifier server
适合 长期投入 + 真实环境 资源受限 + 已有 demo data

实践建议:从 offline RLagent SFT + DPO)起手,建立 baseline;有算力后迁移到 online RLPPO/GRPO + verifier)。

9.3 Rollout 优化经验

  • vLLM PagedAttention 比 HF generate 快 5-10×,是 agent rollout 的必装
  • Tool sandbox 用 Docker + gVisor,单机并行 64-128 个 trajectory 没问题
  • Async rollout pipelinerollout worker 不阻塞 trainer worker
  • Trajectory replay bufferFIFO + priority 混合,replay 时按 reward 加权
  • Batch size = group_size × prompt_per_batch:典型 G = 16, prompt = 32 → 512 trajectory / batch

9.4 Debug checklist

agent RL 跑崩了,按顺序排查:

  1. 看 reward:是否多数 trajectory reward = 0rule 写错了?
  2. 看 length 分布:是否大多数 trajectory 在 max_steps 截断?说明 agent 不会 finish
  3. 看 action_mask:是否正确 cover prompt + observation + padding
  4. 看 KL:approx_kl 是否爆?β 调大;entropy 是否塌?entropy_bonus 调大
  5. 看 group_std:是否大量 group 全 0/全 1?需要 data filter
  6. 看 tool call distribution:是否过度依赖某一个 tool?引入 diversity bonus
  7. 看 sample efficiency:单 prompt 多 rollout reward 方差是否合理?太大说明 base 太弱

§10 25 高频面试题(L1 必会 / L2 进阶 / L3 顶级 lab

按难度分 3 档:L1 = 任何 agent / LLM RL 岗会问;L2 = research / alignment 团队会问;L3 = 顶级 lab 硬核题。每题点开看答案要点 + 易踩坑。

L1 必会题(10 题)

Q1. Agentic RL 和 RLHF 的本质区别?
  • RLHF: single-turn alignmentstate = promptaction = 整段 responsereward 来自 RM 对偏好的打分,horizon = 1
  • Agentic RL: multi-turn decision-makingstate = (obs, history)action = (thought, tool_call)reward 来自外部环境(test pass / task success),horizon = 10-200
  • 算法层面都用 PPO/GRPO,但 Agentic 必须加 action_mask(只对 agent token 算 loss
  • reward 形式:RLHF 偏好打分(subjective),Agentic 客观 outcomeobjective

把它们当成同一件事;或不知道 action_mask 的必要性。

Q2. 为什么 Agentic RL 必须用 action_mask
  • agent trajectory 含两类 tokenagent 自己 generate 的 + tool 返回的 observation
  • 如果不 maskPPO/GRPO 的 ratio 和 loss 会流到 observation token 上
  • 后果:(a) policy 试图"教 tool 怎么回答",无意义且会 reward hack(b) gradient 被 low-information observation 稀释;(c) KL penalty 错误地把 environment text 当自己分布估计
  • 实现:action_mask: [B, L]1 = agent token0 = prompt/obs/padloss 计算时除以 mask.sum() 标准化

说"只在 response 上算 loss"不够具体(agent task 没有"response"这个明确边界);或漏了 mask 必须 cover all observation tokens。

Q3. GRPO 在 agent 上比 PPO 好的核心原因?
  • 省 criticagent value 在长 horizon + sparse reward 下几乎学不动
  • trace-level reward 直接匹配 trace-level credit:不需要 per-token V,避开 value 学不动的痛
  • 组内归一化 自动做 variance reduction,比 raw advantage 稳
  • 省一份显存:可以扩大 batch / group size
  • 限制:长 trajectory 上 advantage 太粗(整段共享),credit dilution 仍存在

只说"省 critic"不全面;或不知道 trace-level reward 与 trace-level credit 的匹配关系。

Q4. Outcome reward 和 process reward 的区别?agent 上常用哪个?
  • Outcome reward: trajectory 终点 1 个 rewardtest pass / answer match),极稀疏,credit assignment 难,但 reward hacking 风险低
  • Process reward: 每步打分,densecredit assignment 易,但 reward hacking 风险高(PRM 可被 hack
  • Agent 上主流: outcome reward——agent task ground truth 明确(test/grader);R1, SWE-RL, ReSearch, RAGEN 都用 outcome-only
  • Process reward 主要用于 reasoning-heavy 任务(PRM 在数学 step 上),agent 上少用

以为 process reward 总是好(实际 agent 上 outcome 更稳);或不知道 reward hacking 风险差异。

Q5. Verifier-based reward 比 learned RM 好在哪?
  • 接近 ground truth:避开 learned RM 漂出训练分布的主要 failure mode
  • 可重复:同一 trajectory reward 一致(learned RM 输出有噪声)
  • 显存便宜:执行 verifier 比一次 LLM forward 便宜数百倍
  • 可解释reward 来自客观 rule,可 trace 失败原因
  • 限制:只能用于可验证任务(math/code/grader-able web

说 verifier-based "完全没有 hacking"——错,仍可能被正则漏洞 / format trick / test 泄露 hack,但比 RM hacking 容易堵。

Q6. R1 / R1-Zero 的方法能直接用在 agent 上吗?
  • 算法可以直接搬:GRPO + rule-based reward + per-step KL + token mask
  • 但需要补:
    • action_mask: agent 有 observation tokenR1 数学任务没有
    • trajectory rollout infrastructure: 含 tool I/O,比纯 generation 复杂
    • format reward 调整: agent task 的 format 是 JSON tool call,不只是 <think>
  • 代表性工作 ReSearch / RAGEN / ToolRL / SWE-RL 都是 R1 算法 + 上述改造

说"R1 不能直接搬"——其实可以但要改 wrapper;或不知道 ReSearch / RAGEN / ToolRL 这些工作。

Q7. Agent RL 中为什么需要 SFT warm-start
  • base model 不知道怎么 emit 合法 tool call schemaJSON 格式 / argument 名称)
  • 直接 from-scratch RL 几乎不可能 explore 到合法 tool call → reward 全 0 → 学不动
  • SFT warm-startAgentTuning / Agent-FLAN 数据)让 model "知道动作空间长什么样"
  • 之后 RL 在合法 action 子空间内 optimize

只说"RL 慢,SFT 加速"——不够;核心是 action space exploration 困难,SFT 解决"知道动作空间"。

Q8. Length penalty 在 agent RL 中起什么作用?
  • agent 容易学到"拖长 trajectory 拿对答案"的捷径(reward hacking
  • length penalty 给超出 budget 的 trajectory 减分:r = r_\text{outcome} - \lambda \max(0, T - T_\text{target})
  • DAPO 的 "overlong shaping" 是工业级实现(指数衰减)
  • 限制:penalty 过大会让 agent 不敢探索;要 cap

不知道 length-explosion 是 agent RL 常见 failure mode;或不会写 length penalty 公式。

Q9. Group std = 0 的情况怎么处理?
  • 当 group 内 G 个 rollout reward 全相同(全 success / 全 fail)→ \sigma = 0
  • \epsilon 时 advantage = 0policy gradient 项归零,但 KL 项仍存在policy 仍被拉回 reference
  • 不加 \epsilon 时是 NaN
  • 实践:
    • Skip 该 promptdata filter):常见做法,避免无信号更新
    • Clamp σ 下限(如 0.1):保留少量信号
    • DAPO dynamic sampling:丢全对全错 group

说一定会 NaN(不对,看实现);或不知道这种 prompt 暗示 task 过易/过难。

Q10. SWE-RL 是怎么训的?
  • 数据:GitHub PR commit 历史,构造 ~76M context-issue-patch 三元组(Meta 公开)
  • Reward: rule-based = patch similarity (oracle ↔ pred) + test pass binary
  • 算法: 纯 GRPO + format reward
  • Model: Llama-3.3-70B
  • Result: SWE-bench Verified 上 41%(无 scaffold),证明 rule-based RL 让 model 学到 emergent reasoningfile retrieval / root cause / test self-validation

不知道 SWE-RL 的 reward 设计;或以为是 SFT 而非 RL。

L2 进阶题(10 题)

Q11. 推导 PPO loss 在 agent 上加 action_mask 后的形式。
  1. 标准 PPO-ClipL = \mathbb{E}[\min(\rho_t A_t, \text{clip}(\rho_t, 1-\epsilon, 1+\epsilon) A_t)]
  2. agent 有 $m_t \in {0, 1}$1 = agent token0 = obs/prompt
  3. ratio 计算时 $\rho_t = \exp((\log\pi_\theta - \log\pi_\text{old}) \cdot m_t)$observation 位置 $\rho = e^0 = 1$,不影响 surr1/surr2
  4. loss 归一化:L^\text{agent} = -\sum_t m_t \cdot \min(\rho_t A_t, \text{clip}) / \sum_t m_t
  5. KL 项也只在 agent token\text{KL}_\text{total} = \sum_t m_t \cdot \text{KL}_t / \sum_t m_t

只写公式不解释 mask 的作用;或忘了 normalization 用 mask.sum() 而非 batch size。

Q12. RAGEN / StarPO 的关键贡献?
  • StAble multi-tuRn Policy Optimization: critic-free GRPO 变种,整段 trajectory 共享 advantage
  • 严格 token maskobservation 位置 mask = 0loss 只在 agent token
  • rollout 多样性 = collapse 防火墙group_size G = 16G = 4 显著更稳
  • trajectory length 信号:失败 trajectory length 大时加 length penalty
  • 适用:multi-turn agent task(与 single-turn alignment 区分)

只说"GRPO 变种"——不够;要说出 multi-turn 上的 stability 贡献。

Q13. WebRL 的 self-evolving curriculum 是怎么工作的?
  • 初始 task set $\mathcal{T}_0$small),训 policy 跑 trajectory
  • 失败 trajectory 进入 buffer,加到下一轮 curriculum \mathcal{T}_{k+1}
  • retrospective rollout:失败 trajectory 用 LLM 改造成"正确 trajectory"hindsight relabel),再做 SFT
  • ORM (Outcome Reward Model) 训自 task success → 在线给 RL reward
  • Result: Llama-3.1-8B 在 WebArena 上 43%vs GPT-4 14.4%

不知道 self-evolving 的循环结构;或把 WebRL 当作纯 SFT。

Q14. 为什么 self-rewarding LM 在 agent 上比在 alignment 上风险更高?
  • alignment 任务有"客观偏好分布",LLM judge 与人评有较高相关
  • agent 任务有客观 ground truthtest pass / task success)—— judge 自己可能错(认错对错)
  • iterative drift:每轮把"自评对"的轨迹强化 → 远离 ground truth
  • 探索退化:自评偏好已知 pattern → 抑制探索新 tool
  • 主流做法:agent RL 优先 rule-based ground truthself-rewarding 仅作开放式任务 fallback

说 self-rewarding 总是危险(alignment 上仍可用);或不知道 agent 上 ground truth 客观性是关键

Q15. 推 outcome-reward sparsity 对 critic learning 的影响。
  • value V_\phi(s_t) = \mathbb{E}_\pi[\sum_{l \ge 0} \gamma^l r_{t+l} \mid s_t]
  • sparse terminal reward → V(s_t) \approx \gamma^{T-t} \cdot P(\text{success} \mid s_t)
  • 中间状态 s_t 的 value 几乎只取决于"未来是否成功"——这是隐含 long-horizon 预测
  • value MSE loss (V_\phi - V_\text{target})^2 在多数 step 上 target 接近 0gradient 极小
  • 等价于"几乎没有 supervision"——value 学不动是 sparse reward 的必然结果
  • 这也是 GRPO 省 critic 的理论基础:critic 本来就学不动,省了反而省去 noise

只说"critic 学不动";不会推 $V \approx \gamma^{T-t} P(\text{success})$;或不知道这是 GRPO 设计动机。

Q16. ToolRL 的 reward 设计有什么 nontrivial 之处?
  • composite: r = r_\text{correct} + \alpha r_\text{format} + \gamma r_\text{tool-eff}
  • r_\text{tool-eff} 惩罚冗余 tool call(重复调同样工具 / 调用无效 tool)
  • 这是典型的 shaping reward:缓解 length-explosion + tool-overuse 两个 failure mode
  • weight 平衡:outcome ≫ format > tool-eff,避免 shaping override outcome
  • BFCL benchmark 上 7B 接近 GPT-4

只说"加 tool call 奖励";不知道 shaping reward weight 平衡是关键。

Q17. Hindsight relabeling 在 agent RL 中怎么用?
  • 失败 trajectory 不丢,改造为 "alternative task" 的 successful trajectory
  • 例:agent 想买 A 商品但停在 B → 改造为"找到 B 商品"reward = 1
  • 实现:alt_task = describe(trajectory.final_state)relabel reward = 1
  • 适用:开放 web 环境、navigation;不适用:math/code(错答案不能改成对答案)
  • 起源:HER (Andrychowicz 2017 NeurIPS) for robot manipulation

不知道 HER 起源;或不知道适用边界(开放环境 vs 答题任务)。

Q18. Per-step KL penalty 和 trajectory KL penalty 的区别?
  • per-step KL: 每个 agent token 算 KL(\pi_\theta(\cdot \mid s_t) \| \pi_\text{ref}(\cdot \mid s_t));加进 reward 或 loss
  • trajectory KL: 整段 trajectory 一个 KL;加进 loss
  • per-step 更精细,能控制每步漂移;trajectory 简单但缺乏 token-level resolution
  • GRPO 用 per-step + K3 estimator(数值稳定)
  • agent RL 上 per-step 更主流(trajectory 太长,单 KL 数值不稳)

混淆两者;或不知道 K3 estimator 解决数值问题(K3: \text{KL} \approx \exp(\Delta) - \Delta - 1 非负)。

Q19. Subgoal decomposition + process reward 怎么做?什么时候用?
  • 长 trajectory 切 subgoal100 步 trajectory → 5 个 subgoal × 20 步
  • 每个 subgoal 终点给 process rewardsubgoal 是否完成)
  • 实现路径:
    • hand-crafted: 人写 subgoal 判据
    • LLM planner: planner LLM 拆 subgoalverifier 判
    • PRM-style: PRM 评每步
  • 适用:long-horizon agent + 可以 hand-craft subgoal 的任务
  • 风险:subgoal boundary 错画 → agent 学到"刻意触发 subgoal reward 而不真正完成 task"

说 process reward 总是好——错;要说出风险与限制。

Q20. Online RL vs Offline RL 在 agent 上的 trade-off
  • Online RL (PPO/GRPO): 数据效率低(每轮新 rollout),但持续学新分布
  • Offline RL (DPO/RFT): 数据效率高,但受限于 dataset 分布
  • agent rollout 慢(含 tool I/O),online RL 训练吞吐低
  • 实践:先 offline 起手(SFT + DPO),再 online refinement
  • 代表:AgentQ 是 offlineMCTS + DPO);WebRL 是 onlineSWE-RL 是 online

只说"online 慢";不知道 agent rollout 含 tool I/O 是主要瓶颈。

L3 顶级 lab 题(5 题)

Q21. 推导 GRPO advantage 公式 + token mask 的完整 loss,并解释 agent token mask 的两种等价放置方式。
  1. Group-relative advantage:

    • rollout group \{r_1, ..., r_G\} per prompt
    • \mu = \frac{1}{G}\sum r_i, \sigma = \sqrt{\frac{1}{G}\sum (r_i - \mu)^2}
    • \hat{A}_i = (r_i - \mu) / (\sigma + \epsilon)
  2. Trajectory-level broadcast: $\hat{A}_{i,t} = \hat{A}_i$(所有 agent token 共享)

  3. Token-masked ratio + loss

    • 朴素 \rho_{i,t} = \exp(\log\pi_\theta(a_{i,t} \mid s_{i,t}) - \log\pi_\text{old}(a_{i,t} \mid s_{i,t})) —— 在 observation 位置也会有数值(model 估算 env text 的概率)
    • 要点:只要最终 objective / gradient 只覆盖 agent tokenmask 放 ratio 内还是 loss 外都数学等价
      • Inside-ratio\rho_{i,t} = \exp((\log\pi_\theta - \log\pi_\text{old}) \cdot m_{i,t}) → obs 位置 $\rho=1$,进 clip 后 \min(\cdot) 项 = A_{i,t} 但乘以 m_{i,t}=0 后归零(在 loss 外的 sum 中)
      • Outside-ratio (mask loss only):保留 obs 位 \rho_{i,t} 数值;最终 loss = $-\sum_t m_t \cdot \min(...)$obs 位贡献 m_t = 0 直接归零
    • 两者梯度都只覆盖 agent token(mask 是乘法,梯度对 obs 位都是 0)
    • 但实践上 Inside-ratio 更安全:避免 obs 位 \rho 数值参与 clip 触发判断或被日志 / 监控(如 mean ratio)误读为异常。生产实现(verl / OpenRLHF)多用 inside-ratio
  4. Full loss:

    L = -\frac{1}{G} \sum_i \frac{1}{\sum_t m_{i,t}} \sum_t m_{i,t} \cdot \Big(\min(\rho_{i,t} \hat{A}_i, \text{clip}(\rho_{i,t}, 1-\epsilon, 1+\epsilon) \hat{A}_i) - \beta \cdot \text{KL}_{i,t}\Big)

不会推 step 4 (mask 位置影响 ratio 数值);或公式背得对但不解释 mask 设计哲学。

Q22. GRPO 在 long-horizon agent 上比 PPO sample efficient 的根本原因?

Trace-level reward 与 trace-level credit 的自然对齐(不止是"省 critic"):

  1. Sparse terminal reward 下 critic 学不动$V(s_t) \approx \gamma^{T-t} P(\text{success})$gradient 极小;PPO 的 GAE-advantage 受 noisy critic 拖累
  2. GRPO 直接用 trace-level reward 当 advantage:等价 sequence-level MC return,在 sparse reward 下是 unbiased estimator
  3. Group baseline 比 critic baseline 更稳:同 prompt G rollouts → group mean 自动反映该 prompt 的难度,variance reduction 更精准
  4. PPO clipping + group size 联合限制更新幅度:避免单 outlier reward 推飞 policy
  5. 省 value model 显存 是 secondary benefit,不是 primary reason
  6. Rule-based outcome reward 难被 RM hacked:在 agent 上比 learned RM 稳

只说"省 critic"——不够;要说出 sparse reward 下 critic learn 不动是根因。

Q23. 如何设计一个 RL framework 同时支持 reasoning RLR1)和 Agentic RLReSearch / WebRL)?

抽象出五层:

  1. Data layer:

    • reasoning: (prompt, ground_truth) tuples
    • agent: (task, env_spec, reward_fn) 三元组
    • 统一为 Task(prompt, verifier)verifier 是 callable
  2. Rollout layer:

    • reasoning: 直接 generate
    • agent: 含 tool I/O 的 multi-step rollout (vLLM + sandboxed tool executor)
    • 统一为 Trajectory(tokens, action_mask, reward) 接口
  3. Reward layer:

    • reasoning: rule-based (answer match / test pass)
    • agent: composite (outcome + format + tool_eff + length penalty)
    • 统一为 Reward(traj) -> float
  4. Loss layer:

    • PPO with action_mask
    • GRPO with group_id + action_mask
    • DPO with chosen_mask / rejected_mask
    • 通过 loss_fn(batch, model, ref_model) -> loss interface
  5. Infra layer:

    • vLLM rollout pool
    • Sandboxed tool executor (Docker + gVisor)
    • Trajectory replay buffer (FIFO + priority)
    • Async trainer / rollout

代表实现: verl (字节) 已支持 reasoning + agentOpenRLHF 部分支持。

只列 PPO 不考虑 agent rollout infra;或不知道 verl / OpenRLHF 的当前支持范围。

Q24. Anthropic Computer-Use 训练方法 — 已知 vs 推测的清晰边界

官方公开(system card / blog

  • action space = 屏幕截图 (vision observation) + 鼠标 + 键盘 events
  • 能力持续迭代 Claude 3.5 (new) 2024-10-22 → 3.7 / 4.0 / 4.5 / Opus 4.x
  • 安全机制:constitutional AI 风格的护栏 + 红队 + prompt-injection 防御
  • 训练涉及人工演示 + 合成数据(system card 一般性陈述)

未公开 / 完全保密

  • 具体 RL 算法(PPO? GRPO? Critic-free? 都没说)
  • Reward signal 形式(task completion grader? Pair-wise preference? Safety classifier 权重?
  • Train data 规模 / 来源 / 演示 vs 合成比例
  • 是否有专门的 screenshot RM / VLM-as-judge

社区合理推测仅推测,不要在面试中说成事实):

  • 可能是 RLHF on screenshot trajectoriespair-wise 偏好 + task success outcome 混合)
  • 可能 critic-free(呼应 DeepSeek-R1 GRPO 等开源趋势)
  • 可能用 VLM-as-judge for screenshot 理解
  • 可能 curriculum 简单 → 复杂

面试时务必区分 "公开能力" vs "推测内部":说"Anthropic 用 GRPO + screenshot RM"是错的(无证据);说"我推测可能用了 critic-free RL,因为 Anthropic 在其他场景倾向 GRPO/RLHF 风格"才是诚实的表述。这种区分能力是高级面试的加分项。

Q25. 如果让你设计 next-gen Agentic RL 算法,会怎么改进?

可能方向(任答 3-4 个,每个要有 trade-off 讨论):

  1. Lightweight critic for long-horizon: 不用 full-size value model,但用小型 step-level critic 缓解 trace-level credit dilution。VAPO 已尝试。Trade-off: 加显存 vs 缓解 long-trajectory 信号稀释

  2. Hierarchical reward: subgoal-level reward + outcome reward 组合。Trade-off: 需要 subgoal definition(人工 or planner LLM),boundary 错画风险

  3. Off-policy correction with V-trace / Retrace: rollout 慢,让 stale samples 也能用。Trade-off: IS bias vs sample efficiency

  4. Trajectory hindsight relabeling + RL: 失败 trajectory 自动改造为 alternative task 的成功 trajectory,扩 data。Trade-off: 适用 open-ended task,不适用 closed-form answer

  5. Multi-task reward normalization: 每个 task domain (math/code/web) 独立归一化,避免 reward scale 不平衡

  6. Reward model uncertainty: 多 RM ensemblemin/mean-std 防 over-optimization。Trade-off: 算力

  7. Async distributed rollout: rollout 与 train 完全异步,trajectory queue + worker pool。已是 industry default (verl, OpenRLHF v0.5+)

  8. Self-curriculum + adaptive difficulty: WebRL 思路 + R-Zero 的 learnability reward 结合,自动找 model success rate ~50% 的任务

  9. Multi-objective Pareto optimization: 不再单一 scalar rewardtask success + safety + efficiency 同时优化,输出 Pareto front

只罗列 "加 attention / 加更多模型" 没 trade-off;或不知道 DAPO / VAPO / CISPO 等近期工作;或忽略 infra 层面 (async rollout) 的重要性。

§A 附录:参考文献清单

按方向分组,论文经 web 检索 + arXiv 验证作者 / 年份 / 会议。少数 2025-2026 会议归属未定的论文以 arXiv 记。

Agent SFT / 基础

  • Zeng et al. 2023 arXiv 2310.12823 AgentTuning: Enabling Generalized Agent Abilities for LLMs (THU)
  • Chen et al. 2024 ACL Findings arXiv 2403.12881 Agent-FLAN: Designing Data and Methods of Effective Agent Tuning for LLMs
  • Trung et al. 2024 ACL arXiv 2401.08967 ReFT: Reasoning with Reinforced Fine-Tuning

RL on agent / reasoning(基础算法)

  • Schulman et al. 2017 arXiv 1707.06347 Proximal Policy Optimization Algorithms
  • Schulman et al. 2016 ICLR High-Dimensional Continuous Control Using GAE
  • Shao et al. 2024 arXiv 2402.03300 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsGRPO 提出)
  • DeepSeek-AI 2025 arXiv 2501.12948 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
  • Yu et al. 2025 ByteDance arXiv 2503.14476 DAPO: An Open-Source LLM Reinforcement Learning System at Scale

Tool-augmented RL

  • Qian et al. 2025 arXiv 2504.13958 ToolRL: Reward is All Tool Learning Needs (arXiv preprint; no formal venue as of 2026-05)
  • Chen et al. 2025 arXiv 2503.19470 ReSearch: Learning to Reason with Search for LLMs via Reinforcement Learning (accepted to NeurIPS 2025)
  • Wang et al. 2025 arXiv 2504.20073 Understanding Self-Evolution in LLM Agents via Multi-Turn Reinforcement Learning (RAGEN; StarPO = State-Thinking-Actions-Reward Policy Optimization)

Web / GUI agent RL

  • Qi et al. 2024 ICLR-25 arXiv 2411.02337 WebRL: Training LLM Web Agents via Self-Evolving Online Curriculum Reinforcement Learning
  • Putta et al. 2024 arXiv 2408.07199 Agent Q: Advanced Reasoning and Learning for Autonomous AI Agents
  • Furuta et al. 2024 ICLR arXiv 2305.11854 Multimodal Web Navigation with Instruction-Finetuned Foundation Models (WebGUM)

Code agent RL

  • Le et al. 2022 NeurIPS arXiv 2207.01780 CodeRL: Mastering Code Generation through Pretrained Models and Deep Reinforcement Learning
  • Shojaee et al. 2023 arXiv 2301.13816 Execution-Based Code Generation Using Deep Reinforcement Learning (PPOCoder)
  • Wei et al. 2025 Meta FAIR arXiv 2502.18449 SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution

Embodied / robot agent

  • Baker et al. 2022 NeurIPS arXiv 2206.11795 Video PreTraining (VPT): Learning to Act by Watching Unlabeled Online Videos
  • Kim et al. 2024 arXiv 2406.09246 OpenVLA: An Open-Source Vision-Language-Action Model

Self-rewarding / exploration

  • Yuan et al. 2024 ICML arXiv 2401.10020 Self-Rewarding Language Models
  • Andrychowicz et al. 2017 NeurIPS arXiv 1707.01495 Hindsight Experience Replay

RLHF / DPO 基础(cross-reference

  • Ouyang et al. 2022 NeurIPS Training Language Models to Follow Instructions with Human Feedback
  • Rafailov et al. 2023 NeurIPS Direct Preference Optimization
  • Bai et al. 2022 Anthropic arXiv 2212.08073 Constitutional AI
  • Lee et al. 2023 Google arXiv 2309.00267 RLAIF: Scaling RLHF with AI Feedback

Reward model / verification

  • Lightman et al. 2024 ICLR arXiv 2305.20050 (OpenAI 2023) Let's Verify Step by Step (PRM800K)
  • Wang et al. 2024 ACL arXiv 2312.08935 Math-Shepherd: Verify and Reinforce LLMs Step-by-Step without Human Annotations
  • Coste et al. 2024 ICLR Reward Model Ensembles Help Mitigate Overoptimization

Infrastructure / framework

SOTA benchmarks (2024-2026)

  • Jimenez et al. 2024 ICLR arXiv 2310.06770 SWE-bench: Can Language Models Resolve Real-World GitHub Issues?
  • Yao et al. 2024 arXiv 2406.12045 τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains
  • Xie et al. 2024 NeurIPS arXiv 2404.07972 OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments
  • Zhou et al. 2024 ICLR arXiv 2307.13854 WebArena: A Realistic Web Environment for Building Autonomous Agents
  • Mialon et al. 2024 ICLR GAIA: A Benchmark for General AI Assistants
  • Chan et al. 2024 arXiv 2410.07095 MLE-bench: Evaluating Machine Learning Agents on Machine Learning Engineering (OpenAI)

Anthropic Computer-Use(公开知识)

  • Claude 3.5 Sonnet (new) 2024-10-22 Computer Use beta launch (Anthropic blog + system card)
  • Claude 3.7 / 4.0 / 4.5 / Opus 4.x system cards (Anthropic 公开)

代码框架建议:

  • 起步用 TRLHF)的 GRPOTrainer + 自写 verifier
  • 工业化用 verlGRPO/RLOO/DAPO 都支持,含 agent rollout
  • 自研 multi-turn 用 OpenRLHF v0.5+ 的 agent example + 加 tool sandbox