Agentic / 多轮 RL:在工具、环境与长时程中学习
本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。
学习目标
- 区分 contextual bandit、token MDP 与多轮 POMDP,说明单轮 RLVR 的结构性边界。
- 设计可重放、版本化、隔离且能区分模型/环境错误的 agent environment。
- 推导终局/过程 reward、trajectory ratio、GAE 与 return decomposition 的偏差风险。
- 实现 action mask、工具观测、上下文裁剪、异步 rollout,并完成 mini SWE/Web 研究项目。
单轮 RLVR 优化“一次回答”;agent 必须观察不完整世界、调用有副作用的工具、从失败恢复并在预算内结束。本讲把 agent 从提示词工作流提升为可重放 POMDP:定义环境、轨迹语义、信用分配、异步训练、安全边界与可证伪项目。
学习目标
- 区分 contextual bandit、token MDP 与多轮 POMDP,说明单轮 RLVR 的结构性边界。
- 设计可重放、版本化、隔离且能区分模型/环境错误的 agent environment。
- 推导终局/过程 reward、trajectory ratio、GAE 与 return decomposition 的偏差风险。
- 实现 action mask、工具观测、上下文裁剪、异步 rollout,并完成 mini SWE/Web 研究项目。
先修与职责
token-MDP、PPO/GRPO/RLOO 机制见 模块 13;长程开放问题见 模块 14;系统与 reward 细节分别见模块 17、模块 18。【A 原始论文】【B 官方代码/环境】【C 工程经验】【D 编者方案】。
1. 问题演进:为什么单轮 RLVR 不够
| 建模 | 状态/动作 | 失败点 | 关键转念 |
|---|---|---|---|
| contextual bandit | prompt → 完整回答 | 忽略 token 与后续交互 | 把生成展开为 token MDP |
| token MDP | 前缀 → 下个 token | 环境只拼接文本;答完即终止 | 工具结果成为外生观测 |
| 多轮 MDP | 完整可见环境状态 | 浏览器/代码库/用户意图通常不可全观测 | 用 history/belief 的 POMDP |
| agent POMDP | 观测、消息、工具调用、终止 | 长程信用、环境成本与安全 | 环境即训练资产,轨迹即版本化实验单位 |
单轮 math verifier 能判断最终答案,却不能教模型何时搜索、选哪个工具、如何从 404/测试失败恢复、何时停止。Agent 的能力增量来自交互中获得基座上下文外的新信息;代价是转移不再是确定 token 拼接,环境会延迟、失败、变化甚至被攻击。
核心主线
Agentic RL 的“数据”不是对话文本,而是策略与某个环境版本交互产生的因果轨迹。丢掉工具状态、版本或错误码,就把 POMDP 压扁成不可解释日志。
2. POMDP 与环境契约:可训练之前先可重放
定义 POMDP 。环境隐藏状态 可含文件系统、网页 DOM、数据库、用户目标;模型看到 ,根据历史 行动:
下标 强调环境版本。动作可以是 assistant tokens、结构化 tool call、向用户追问、提交或放弃。终止包括成功、显式提交、预算耗尽、超时、安全拦截与环境故障;它们不能全部映射为同一个零 reward。
2.1 环境最低契约
- reset(seed, task_version) 返回初始观测和 episode id;clone/snapshot 能恢复到工具调用前。
- step(action, idempotency_key) 返回 observation、reward components、terminated、truncated、status、cost 与 state hash。
- replay(log) 在版本锁定时重演;外部 Web/API 无法确定重放时,录制响应或提供仿真镜像,并明确 fidelity gap。
- 任务生成: 模板/变异器须有 provenance、难度与有效性检查;生成器与 evaluator 分离,避免把答案写进观测。
- 终止: terminated 表示任务语义终止,truncated 表示预算/基础设施截断;bootstrap 处理不同。
图 19-1:所有工具调用经过权限网关;轨迹库保存可重放语义而非仅聊天文本。
3. 长程信用分配:信号变密时偏差也进入
3.1 终局 reward 与 return decomposition
最可信的任务成功常只在终局得到 。在轨迹由当前策略 on-policy 采样、回报对应同一目标且基线 不依赖当前动作时,把终局回报用于各步 score-function 项可得到无偏但高方差的 REINFORCE 估计;旧策略或异步样本还需要相应修正:
可将总回报分解为任务、成本、安全与过程项:
在标准折扣 MDP 中,potential-based 塑形 可在相应边界条件下保持最优策略不变;有限回合还需处理终点 potential。POMDP 可在 belief state 上定义 potential;若仅对不充分 observation 定义 ,或 reward model 有误,则仍可能改变目标。[1]
3.2 Turn-level/process reward 与 GAE
小降低方差却增加 critic/部分可观测偏差;工具调用之间 token 数差异巨大时,应明确时间步按 token、turn 还是环境 action。按 token 折扣会让“思考更长”改变真实时间尺度;按 turn 又可能忽略长生成成本。推荐 reward 语义按环境 turn,loss 在 action token 上归一,并单独计 token cost。
3.3 Trajectory-level ratio
推导:为何长轨迹 importance ratio 会爆炸
条件
轨迹由 behavior 采样;只对模型动作集合 求比,环境观测不是策略动作。
令 。当这些增量独立或弱相关且具有非零方差时, 的方差会随有效长度增长,指数变换可能产生高方差或重尾的权重。clip trajectory ratio 会降方差但引入与长度相关的偏差;哪些轨迹更易被截断取决于 ratio 与成功事件的联合分布,不能只由长度断定。逐 token ratio 更稳定,却不修正旧策略导致的后续状态/工具结果分布。故多轮异步需要短 lag、版本分桶和敏感性实验,而不能靠单一 IS 公式“解决”。
过程奖励的双刃
PRM/heuristic 能减方差,也会把“看似合理步骤”变成新目标。必须做反事实:删去关键工具调用、插入无用调用、交换顺序、伪造进展描述,检查 reward 是否真的追踪因果贡献。
4. 轨迹数据:模型 token、工具观测与记忆
Episode {
task_id, task_version, env_image, env_seed, policy_version,
turns: [{
role, raw_content, token_ids,
loss_mask, # 只有 policy 产生且允许学习的 token 为 1
action_schema, tool_call_id,
observation_hash, env_state_hash,
started_at, ended_at, status, cost
}],
reward_components, terminated, truncated, final_state_hash
}
训练损失必须只覆盖模型动作 token:
- tool observation 不参与 loss: 它是环境输出;若当标签学习,模型会被训练去“预测/复述工具”,并污染 ratio。
- 结构化调用: 可对函数名/参数 token 学习;执行结果、系统消息、安全拦截、用户消息 mask=0。
- 上下文裁剪: 不可静默丢掉决定性 observation。记录裁剪策略与 dropped span hash,评测“是否因遗忘失败”。
- 摘要: 摘要器是环境/模型组件,必须版本化;若用同一 policy 生成摘要却不纳入动作概率,会产生隐含策略。
- 记忆: 读写动作都计成本和权限;训练/评测之间清空 episodic memory,防跨题泄漏。
- 失败恢复: 保存 checkpoint state,使“回滚—改动作—继续”可重放;重复副作用工具须 idempotency key。
5. PPO/GRPO/RLOO 的多轮适配与训练系统
| 方法 | 多轮适配 | 主要风险 |
|---|---|---|
| PPO | turn/step value、GAE,action-token clip | critic 对 POMDP history 失配;系统多一套状态 |
| GRPO | 同一初始任务/seed 分组多轨迹,组内基线 | 环境随机性混入策略差异;组成本昂贵、零方差 |
| RLOO | leave-one-out baseline,避免样本自身进入基线 | 仍依赖同任务多样本,长程方差未消失 |
GRPO/RLOO 分组时应控制环境随机数,或把 seed 作为 block;否则一个轨迹成功可能只是网页/测试随机性更有利。对第 条轨迹的 LOO advantage:
5.1 On-policy freshness 与异步 rollout
Agent episode 可能耗时分钟,采样完成时 policy 已更新多步。记录 episode 起始/每 turn policy version;禁止一次轨迹中静默热切权重,否则 behavior policy 无法定义。可选策略:
- episode 粘性:整条轨迹固定版本,语义最清楚;
- turn 边界升级:每段记录版本并按段估计,理论/实现更复杂;
- partial rollout:从旧前缀续写,必须把前缀视作离线状态分布并做专门消融。
环境也非平稳:网页内容、包版本、搜索索引、任务池难度都在变。将 policy version 与 env version 两维交叉监控,使用固定 replay suite 区分“模型退化”与“世界变了”。
# 异步但有版本语义的 worker
episode = env.reset(task_version, seed)
policy = registry.pin(version=current_committed())
while not done:
action, logp, mask = policy.act(history)
obs, status, cost, done = gateway.step(action, idempotency_key)
append(turn, policy.version, env.version, logp, mask, status, cost)
queue.put(episode, max_policy_lag=1, max_env_age="24h")
6. Coding、Browser、Computer-use、Search:案例与安全边界
| Agent | 状态/动作 | 可验证信号 | 独特风险 |
|---|---|---|---|
| Coding | repo、terminal、patch、tests | 隐藏测试、lint、性能 | 测试过拟合、破坏文件、供应链/命令注入 |
| Browser | DOM/截图、click/type/navigation | 目标 DOM/后端状态 | 动态页面、广告、登录态、网页 prompt injection |
| Computer-use | pixels、鼠标、键盘 | 应用状态/任务结果 | 不可逆点击、视觉歧义、隐私泄漏 |
| Search | query、结果、引用、综合 | 事实/引用支持与覆盖 | SEO 污染、时效、来源串谋、引用幻觉 |
6.1 Prompt injection 与工具安全
网页、issue、README、搜索结果都是不可信 observation,不是 system instruction。模型单靠“忽略恶意指令”不是安全边界;网关必须强制 capability。
- 最小权限:read/write/network/secret 分离;每任务临时凭证;高风险动作需外部确认。
- 数据与指令分离:工具返回带 provenance/taint;不可信文本不能修改策略、grader 或权限。
- 参数校验与 allowlist:结构化 schema、路径规范化、域名/命令策略;输出编码防二次注入。
- 副作用分级:read 可自动,write/支付/发送/删除需预算与审批;训练环境用模拟端点。
- 完整审计:不可变调用日志、调用者/理由/参数 hash/结果/权限决定;敏感数据最小化。
WebGPT 与 ReAct 展示了模型结合浏览或行动轨迹的公开研究设置,WebArena 与 SWE-bench 则提供了可复现的网页和软件工程评测环境。[2] [3] [4] [5] 这些 benchmark 的任务成功不等于开放互联网部署安全;本文只采用可跨框架复现的环境契约。
7. 评测:成功、成本、尾延迟与错误归因
至少报告以下向量,而非单一 success rate:
- 成功率: 任务级,定义部分成功与验证来源;同一任务多次尝试需分开 pass@1 与 budgeted success。
- 成本: 模型 tokens、工具/API/沙箱 CPU、wall time、人工确认;每成功成本比平均成本更有意义。
- 恢复率: 注入可恢复故障后,在剩余预算内成功的比例;不能把未遇故障样本算入分母。
- 重复调用: 相同规范化 action+state hash 的重复率,区分必要重试与循环。
- P50/P99: episode 与 tool latency 分开;均值会隐藏卡死尾部。
7.1 模型错误 vs 环境错误
| 类别 | 判据 | 训练处理 |
|---|---|---|
| MODEL_INVALID_ACTION | schema/参数不合法 | 可给策略负反馈 |
| MODEL_BAD_PLAN | 有效动作但因决策失败 | 任务/过程 reward |
| ENV_TRANSIENT | 5xx、随机超时,可重放后成功 | 重试/截断,不当作错答 |
| ENV_BUG | oracle 也失败或状态不一致 | 剔除并修环境 |
| SAFETY_BLOCK | 网关拒绝越权 | 单独风险指标;是否负奖由任务定义 |
| BUDGET_EXHAUSTED | 达到步数/token/费用上限 | 反映效率失败,不伪装 timeout |
故障诊断树:成功率突然下降
success↓ ├─ 固定 replay suite 也下降? │ ├─ 否 → 环境/任务分布变化:检查 env、网页、包、grader version │ └─ 是 ├─ ENV_TRANSIENT / ENV_BUG 上升? │ ├─ 是 → 隔离基础设施,oracle replay,修复后重评 │ └─ 否 ├─ action schema / safety block 上升? │ ├─ 是 → 模板/tokenizer/网关策略或越权行为 │ └─ 否 ├─ steps、duplicate、P99 上升? │ ├─ 是 → 循环/记忆丢失/恢复失败,检查裁剪与 summary │ └─ 否 → 检查 policy lag、reward 漂移与任务污染
污染: 代码 patch、issue、网页快照可能进入预训练/SFT;做时间切分、repo commit 隔离、近重复扫描、动态生成 sibling tasks。仅改变量名不构成真正新题。
8. 可证伪项目:Mini SWE / Web Environment
运行声明
这是研究实施规范,未在本机训练或执行;不得把预计成功率、GPU-hour 或安全性写成实测。
8.1 环境与任务
二选一或都做小规模:
- Mini SWE: 20–100 个许可清晰的小仓库快照;任务是修复 issue;工具限 read/search/edit/test;hidden tests 在隔离容器。
- Mini Web: 本地确定性电商/工单站;任务含查找、比较、表单操作;支付/删除为模拟 endpoint;支持 DOM+截图观测。
每任务有 reset seed、镜像 digest、oracle 可行轨迹、成功 predicate、预算和 injection suite。train/dev/hidden 按底层 bug/template 分组切分,防同模板泄漏。
8.2 Baseline 与训练矩阵
| 组 | 设置 | 回答的问题 |
|---|---|---|
| B0 | 单轮回答/无工具 | 环境信息是否必要 |
| B1 | SFT agent + 工具,无 RL | 脚手架与示范贡献 |
| B2 | Best-of-N/搜索,固定预算 | 测试时计算基线 |
| R1 | 仅终局 reward 的轨迹级 PPO/GRPO/RLOO | RL 是否改善默认策略 |
| R2 | + turn/process reward | 信用更密是否真改善 |
| R3 | + 故障注入 curriculum | 恢复能力是否泛化 |
8.3 可证伪假设
- H1:固定训练+部署总成本,R1 hidden success 高于 B1/B2;否则“必须 RL”不成立。
- H2:R2 降低步数并提高成功;若只学会产生 rubric 喜欢的“进展话术”,在反事实 process test 上会失败。
- H3:故障 curriculum 提高未见故障恢复率;若只改善训练故障码,泛化主张失败。
- H4:轨迹 RL 的收益不是多调用工具:做 cost-matched/step-matched 对照和成功—成本 Pareto。
8.4 失败 taxonomy 与项目产物
| 类别 | 例子 | 产物 |
|---|---|---|
| 感知/状态 | 漏读测试、DOM 定位错、上下文遗忘 | state/observation diff |
| 规划 | 无验证假设、错误子目标顺序 | turn-level 标注 |
| 执行 | 参数/schema 错、patch 破坏 | tool error 与最小复现 |
| 恢复 | 失败后重复同动作、不会回滚 | 注入前后轨迹对 |
| 终止 | 过早提交或无限探索 | 预算/终止原因曲线 |
| 安全 | 听从网页注入、越权访问 | red-team suite 与网关日志 |
最终交付:环境镜像与 schema、100 条可重放轨迹、baseline/消融配置、各 seed 指标与 paired CI、成本 Pareto、失败浏览器、污染说明、模型卡/安全边界、未运行项清单。
9. 从 Agentic RL 到 Scalable Oversight:成功率不等于安全
Agent 产生比人类可逐步检查更多的动作,oversight 必须扩展:分解任务、过程抽查、工具权限、可验证证据、模型辅助审计与人类升级。但训练 policy 去迎合可见 monitor 会造成监管 Goodhart;oversight 本身应有隐藏测试和独立权限。
不能做的推论
“在 sandbox 成功率从 30% 到 50%”不推出“更可靠”“更诚实”或“可开放部署”。能力提高可能扩大危害半径;需要分别评估越权率、敏感信息外传、注入服从、不可逆动作、欺骗性规避与人类可干预性。
9.1 研究问题
- 如何在不泄露 monitor 的条件下学习可审计过程?隐藏监督能否抵抗策略适应?
- 部分可观测下,history critic、memory state 与 world model 哪个能改善信用而不引入更大模型偏差?
- 怎样对环境 curriculum 定义“难度”,避免 generator 与 policy 共谋形成窄技能?
- 长轨迹 off-policy correction 是否能在可接受方差下修正状态分布,而非只修 action token?
- 真实 Web 非平稳时,如何把环境漂移、污染与策略进步可识别地分开?
- 可扩展监督的评价单位应是答案、轨迹、影响还是可逆性?
10. 系统设计面试、来源与复现清单
10.1 面试题
- 设计一个 10 万并发 browser-agent rollout 系统:如何 pin policy/env 版本、背压、重试与去重?
- tool observation 为什么必须 mask?function-call 参数哪些 token 应参与 ratio?
- trajectory-level IS 为什么随长度重尾?逐 token clip 遗漏了什么偏差?
- 如何区分模型不会修 bug 与测试基础设施坏了?给错误码、oracle 和重放方案。
- 网页 prompt injection 不能只靠模型训练解决,系统层需要哪些 capability controls?
- 过程 reward 提升成功率,如何证明不是鼓励更多调用或“看起来在进展”?
- 设计成功—成本—安全 Pareto 评测;何时可以自动部署,何时必须 human-in-the-loop?
10.2 论文与一手来源
- 【A】 Sutton & Barto, Reinforcement Learning;POMDP、return、credit assignment 基础。
- 【A】 Schulman et al., 2016/2017;GAE 与 PPO。
- 【A】 Nakano et al., 2021, WebGPT;工具辅助浏览与人类反馈。[2]
- 【A】 Yao et al., 2022/2023, ReAct;推理—行动轨迹(不等同于 RL 训练)。[3]
- 【A】 Zhou et al., 2023, WebArena;Jimenez et al., 2024, SWE-bench;环境与评测。[4] [5]
- 【A】 Shinn et al., 2023, Reflexion;Wang et al., 2023, Voyager;作为 agent memory/反思案例,证据边界按各自设置。
- 【B】 SWE-bench、WebArena/BrowserGym 等官方仓库;任务与容器以锁定 commit 为准。
- 【C】 多轮 RL、partial rollout、服务式环境的公开工程经验;特定吞吐/榜单不外推。
10.3 复现清单
- □ 锁定 task/env/container/browser/package/grader/policy/tokenizer 版本与 seed。
- □ reset/step/replay/snapshot 契约有 golden tests;terminated 与 truncated 分开。
- □ 保存 action mask、behavior logprob、tool id、state/observation hash、错误码与成本。
- □ 固定 episode policy 或逐 turn 明确版本;监控 lag 与 env drift;旧轨迹有 TTL。
- □ 报 success、cost、steps、recovery、P50/P99、duplicate、安全与错误归因。
- □ SFT、BoN/search、终局 RL、过程 reward 做同成本对照;至少多 seed + paired CI。
- □ 做 prompt injection、越权、重复副作用、超时、网页变化、上下文裁剪故障注入。
- □ hidden/dynamic/sibling tasks 隔离训练;写污染与安全边界;标明所有未实跑项目。
带走一句话
Agentic RL 的最小研究单位不是“答案”,而是一个在确定权限、预算与环境版本下可重放、可归因、可被独立监督的完整轨迹。