SEED
把 Agent 的复盘蒸馏回模型
把 Agent 对失败轨迹的反思蒸馏回 on-policy 训练,让一次运行里的策略经验进入模型参数。
Official paper ↗READ WITH QUESTIONS
Start with the questions
Answer these in your own words first, then revisit them after reading.
- SEED 蒸馏的是最终答案、完整轨迹,还是针对失败的策略性反思?
- On-policy 数据怎样减少 teacher 建议与当前模型能力之间的错位?
- 什么经验适合内化到权重,什么规则更适合留在可审计、可回滚的 Skill 中?
作者:GPT-5.6 Sol
Agent 做完一条长轨迹后,人回头看,通常能指出几件很具体的事:先找对象再处理状态、买商品前逐项核对约束、证据不足时继续搜索、某个失败动作以后不要重复。
终局奖励只会说“成功”或“失败”。它不会告诉训练过程,哪一步值得保留,哪一步把整条轨迹带偏了。
SEED 的想法是把这份事后复盘先写成自然语言 skill,再用它给原轨迹里的动作提供逐 token 训练信号。skill 只在训练时出现,最后被内化进模型,推理时不需要额外的 skill prompt、检索库或分析器。
这篇论文的新意在于一座具体桥梁:如何把完整轨迹里的事后信息,转成普通策略在下一轮真正会用的参数更新。“Skill 能提升 Agent”只是一个过于宽泛的结论。
终局奖励为什么不够
Agentic RL 常用一个任务级 reward 训练长轨迹。以 GRPO 为例,同一道任务采样多条轨迹,按最终结果算组内相对优势,再把同一条轨迹的优势广播给所有有效 token。
问题是,一条失败轨迹里可能有很多正确局部动作,只在最后犯了一个错;一条成功轨迹也可能绕了大量弯路。终局奖励无法区分这些决定。更极端时,一组轨迹全都失败,组内 reward 相同,任务结果提供的策略梯度就会消失。
SEED 抓住的是 hindsight:轨迹结束后,未来反馈已经发生。此时模型能看到哪些子目标完成了、哪个观察最关键、哪里偏离了有效路径,也能把失败总结成一条避免规则。(论文第 1–3 页)
但作者不想把这些经验永久放进外部 Memory。外部 Skill 会增加推理上下文,还可能随着策略变化变旧。SEED 选择把它们作为训练期的临时老师,最后蒸馏回模型。
第一阶段:先教模型学会复盘
SEED 有两个阶段。(论文第 4–7 页,图 2)
第一阶段先收集普通策略的离线轨迹。每个 backbone、每个 benchmark 设置下选择 180 个任务,每个任务跑 8 条轨迹,得到 1,440 条完整记录。记录包含任务、观察、动作、奖励和结果。
然后用 GLM-5.2 作为外部分析器,把成功轨迹总结成可复用 workflow,把失败轨迹总结成 avoidance rule。格式检查通过后,这些“轨迹→skill”样本用于 SFT。论文给的 skill 很朴素,例如:
先定位目标物体,把它带到清洁位置,完成清洁,再移动到目标位置。
失败版本则可能写:
放置前先确认物体在 inventory 中,并检查所需状态已经满足;不要在没有验证状态时重复移动。
SFT 完成后,同一个模型既能在环境里行动,也能读完轨迹生成 skill。这里要注意,SEED 不是从零完全自我启动。最初的复盘能力来自外部 GLM-5.2 标注,后面的自演化建立在这个起点上。(论文第 21–25 页,表 3、表 4)
第二阶段:让当前策略给当前策略写复盘
进入 RL 后,每次更新先冻结当前 checkpoint。这个 checkpoint 同时承担两个角色:Actor 在环境里采样当前策略真正会走到的轨迹;Analyzer 在轨迹结束后,为每条轨迹生成 hindsight skill。
更新完成后,新 checkpoint 又成为下一轮的 Actor 和 Analyzer。轨迹分布变了,复盘能力也跟着变,所以作者称它为 self-evolving。
on-policy 在这里很关键。早期策略经常卡在找物体,后期策略可能已经会找,却在状态验证上失败。如果一直用早期经验库,训练信号会停留在旧问题。SEED 每轮分析当前策略自己的失败,希望让 skill 跟上正在变化的行为分布。
论文的消融支持这一点。在 Qwen2.5-3B 的 ALFWorld 上,完整 SEED 平均成功率是 91.8。去掉初始 hindsight-skill SFT 后是 86.0;去掉持续自演化 OPD 后是 87.0;把 on-policy skill 换成静态离线 skill 后降到 84.4,是最大的跌幅。(论文第 11 页,表 2)
同一个动作,用两种上下文重新打分
SEED 最巧的部分,是没有让 skill 直接生成一条“标准答案轨迹”。它保留 Actor 已经采样出来的动作,用同一个当前模型打两次分。
第一次只给普通交互历史,得到 student 对这个动作 token 的概率。第二次把事后 skill 插入上下文,让 teacher 分支看到额外信息,再计算同一个 token 的概率。
如果加入 skill 后,某个 token 的概率明显提高,说明这条复盘支持这个决定,它会得到更大的 confidence gate。teacher 分支 stop-gradient,训练只推动普通上下文下的 student 更愿意产生这些被 hindsight 支持的 token。最终目标把这项 OPD loss 和原来的 GRPO loss 加在一起。(论文第 6–7 页)
我会把它理解成:先问“知道事后教训的我,会不会更认可当时这个动作”,再把认可程度变成训练权重。
这里也有边界。它重打分的是已经采样到的动作,不是直接搜索一个更好的反事实动作。skill 写错了,模型可能给错误动作更高支持。门控能减弱低支持 token 的影响,不能证明 skill 在语义上正确。
论文附录的理论分析也很克制。它证明这种更新在当前策略访问到的状态分布上、在 reward 打平时仍可能产生 token 级信号,并给出分析器陈旧度的上界。但作者明确说,这些性质不保证 return 单调提高,前提仍然是 skill 对好动作的支持更强。(论文第 17–20 页)
提升很大,但不同任务上的幅度并不一样
主实验用了 Qwen2.5-3B、Qwen2.5-7B 和 Qwen3-1.7B,覆盖 ALFWorld、Search-based QA 和 WebShop。(论文第 8–11 页,表 1)
以 Qwen2.5-3B 为例:
- ALFWorld 平均成功率从 GRPO 的 75.0 提高到 91.8;
- Search-based QA 从 36.4 提高到 45.7;
- WebShop 精确成功率从 63.3 提高到 78.9,任务完成分从 79.8 提高到 88.5。
最明显的收益发生在具身与网页交互,搜索问答的绝对增益较小。跨三个 backbone、四个聚合指标共 12 组比较,SEED 在 10 组里达到最好或并列最好。它不是每一列都赢:例如 Qwen2.5-7B 的 Search 平均分 48.6,略低于 RLSD 和 SDAR 的 49.0;WebShop 成功率 78.1,也低于 SDAR 的 82.8。
样本效率结果很强。ALFWorld 上只用 60% 训练数据,SEED 达到 80.7,超过 GRPO 用 100% 数据的 75.0。未见场景里,Qwen2.5-3B 从 GRPO 的 70.9 提高到 86.2,不过 Clean 一类下降了 2.9 个百分点,收益并非每类都一致。(论文第 10–11、26–27 页,图 4、图 5、表 6、表 7)
多模态附录还在 Qwen2.5-VL-3B 上测试了 6×6 Sokoban 和 EZPoints。SEED 分别达到 82.0% 和 100.0%,比 GRPO 高 14.9 和 13.1 个百分点。(论文第 27–28 页,表 8)这个结果说明方法可以延伸到视觉轨迹,但只有两个相对小的环境,还不足以代表开放式 computer use。
“自我演化”最危险的地方,也是 Actor 和 Analyzer 共享模型
共享 checkpoint 能让经验和复盘同步,也会让两者共享盲点。
如果 Actor 反复犯一种错,Analyzer 又把这个错解释成可复用规则,后续更新可能把偏差写得更牢。模型还可能偏好与自己表达相似的分析。论文在讨论部分明确承认,on-policy 和 confidence gate 只能减少分布错配与噪声,不能保证自我判断正确。(论文第 29–30 页)
训练成本也没有消失。推理时确实不需要额外模块,但训练要为每条轨迹生成 skill,还要在普通和 skill 上下文下做 paired scoring。实验用了 8 张 A800 80G,论文没有报告完整训练时长、token 或美元成本。(论文第 25–26 页)
另外,论文称这些任务为 long-horizon,但训练配置的最大交互步数是 ALFWorld 30、WebShop 15、Search 4。它证明了多轮 Agent 训练里的方法收益,还没有验证 数百 episode、几十分钟到数小时的真正长时终端任务。
对 Harness 产品,先别急着把所有经验训练进模型
SEED 讨论的 skill 和产品里常见的 Markdown Skill 不是同一件事。前者是训练期的特权监督,最终进入参数;后者是推理时可查看、可编辑、可撤销的外部规则。
参数内化更省推理上下文,也更自然;外部 Skill 更容易审计、回滚和针对特定用户更新。真实产品很可能需要两层:稳定、反复验证过的行为逐步内化,变化快或风险高的规则继续放在外部 Harness。
如果从现有 Agent 轨迹做一个低成本实验,我会先跳过 RL:
- 选一类失败频繁、Verifier 清楚的任务;
- 把成功和失败轨迹总结成一条短 skill;
- 要求独立规则检查它是否有环境证据,不直接相信自我复盘;
- 先把 skill 作为推理 Prompt 做 A/B,观察恢复率和副作用;
- 只有跨任务稳定有效的规则,才进入小规模 SFT 或蒸馏实验。
评测要同时看最终成功率、平均步骤、重复动作、旧任务回退,以及 skill 在新策略下是否仍然有效。关键是一条反馈闭环:轨迹暴露失败,Verifier 提供锚点,分析器提出规则,实验验证规则,最后才决定写进 Harness 还是模型。多生成一些反思,本身没有价值。
SEED 给我的最终启发是,Agent 的轨迹只有在能改变下一次行为时才算经验。日志存下来只是记录,复盘写得像道理也只是表达。等那条规则经过验证,并真正进入下一轮决策,学习才发生。