#ECHO:Terminal Agents 如何“免费”学到世界模型

论文:ECHO: Terminal Agents Learn World Models for Free

作者:Vaishnavi Shrivastava, Piero Kauffmann, Ahmed Awadallah, Dimitris Papailiopoulos

机构:Microsoft Research

arXiv:2605.24517

时间:2026-05-23

#0. 一句话总结

这篇论文的核心观点很直接:terminal agent 的 rollout 里,本来就包含一个被浪费掉的 dense supervision signal——终端环境返回的 stdout、stderr、文件内容、报错日志、测试输出等 observation tokens。

传统 GRPO / agent RL 通常只在模型自己的 action tokens 上做 policy-gradient 更新,并用最终任务成功/失败作为稀疏奖励;而 ECHO 额外要求模型去预测“自己执行某条命令后,终端会返回什么”。这样,失败轨迹也不再只是负样本或零信号,而变成了学习 terminal dynamics 的材料。

更人话一点:

以前训练 terminal agent,只问它“最后任务做成了吗?”;

ECHO 还问它:“你刚才运行这条命令,终端为什么会这样回应?下次看到类似状态,你能不能预判会发生什么?”

这就是标题里所谓 Learn World Models for Free 的含义:不是额外训练一个 world model,不是额外采样环境,不是加一个 teacher 或 judge,而是把 rollout 里已经存在的环境返回文本直接拿来做 next-token prediction。

Figure 1:ECHO 总览图。上半部分说明 terminal-agent rollout 由 action 和 observation 交替组成;标准 GRPO 只在 action token 上施加损失,而 ECHO 额外在环境 observation token 上施加交叉熵损失。
Figure 1:ECHO 把终端反馈变成监督信号

#1. 这篇论文想解决什么问题?

#1.1 Agent RL 的根本痛点:奖励太稀疏

Terminal agent 的交互形式很像具身智能:

  1. 模型观察当前任务和历史 transcript;
  2. 输出 bash command / edit / run tests;
  3. 终端执行命令;
  4. 返回 stdout、stderr、exit code、文件内容、日志、traceback;
  5. 模型根据返回结果继续下一步。

但是在训练时,很多 RL 方法只看最终 verifier:

  • 任务通过:reward = 1;
  • 任务失败:reward = 0。

论文提到,在他们的 Qwen3-8B setting 里,on-policy rollouts 常常只有不到 15% 能成功。这意味着大多数 rollout 在 GRPO 下提供的 policy-gradient 信号非常有限。

问题是:失败轨迹真的没有信息吗?显然不是。

一个失败轨迹里可能包含:

  • ModuleNotFoundError 告诉模型依赖没装;
  • AssertionError 告诉模型输出格式不对;
  • ls 的结果告诉模型文件结构;
  • cat config.yaml 暴露了配置;
  • pytest 的失败日志暴露了具体测试期望;
  • grep 的结果告诉模型函数定义在哪。

这些信息不是“噪声”,而是环境对动作的真实反馈。

#1.2 传统 GRPO 丢掉了什么?

标准 GRPO 的训练序列大概是:

[system] [task]
[action_1] [obs_1]
[action_2] [obs_2]
...
[action_K] [obs_K]

模型当然会把 obs_i 当作上下文,因为后续 action 要基于之前的 terminal output。但在 loss 上,GRPO 通常只优化 action token:

loss applied to: action_1, action_2, ..., action_K
not applied to: obs_1, obs_2, ..., obs_K

也就是说,环境返回进入了 forward computation,但没有进入训练目标。

ECHO 的判断是:这浪费了 terminal agent 最丰富的监督源。


#2. ECHO 的核心方法:把 observation token 也作为训练目标

ECHO 全称是:Environment Cross-entropy Hybrid Objective

它做的事情可以用一个公式概括:

L_ECHO = L_GRPO(action tokens) + λ L_Env(observation tokens)

其中:

  • L_GRPO:标准 GRPO,在模型 action tokens 上做 policy-gradient;
  • L_Env:在环境 observation tokens 上做 next-token cross entropy;
  • λ:控制 observation prediction loss 的权重,论文主实验使用 λ = 0.05

#2.1 什么是 observation prediction?

假设模型执行:

pytest tests/test_data.py

终端返回:

FAILED tests/test_data.py::test_parse_date - AssertionError: expected yyyy-mm-dd

传统 agent RL:

  • 把这段输出放进 context;
  • 下一步 action 可以利用它;
  • 但训练 loss 不要求模型预测它。

ECHO:

  • 仍然把它放进 context;
  • 但同时把这段 terminal output 的 tokens 作为监督目标;
  • 要求模型在给定历史和命令的情况下,预测环境会返回这些 tokens。

这逼迫模型学一个隐式模型:

当前容器状态 + 我执行的命令 → 终端可能返回什么

这就是 “world model”。当然,它不是完整世界模型,只是 terminal environment 的 textual projection:stdout、stderr、文件内容、日志、exit code 等。但对于 terminal agent 来说,这已经是非常关键的世界状态投影。

#2.2 为什么说是 “for free”?

因为 ECHO 不需要:

  • 额外 rollout;
  • 额外 teacher;
  • 额外 verifier;
  • 额外 world model 网络;
  • 额外 forward pass;
  • 离线 demonstration corpus。

它复用同一个 rollout、同一个 actor forward pass、同一批 logits,只是换了一个 mask:

  • action mask:用于 GRPO;
  • observation mask:用于 environment cross entropy。

论文里的 Algorithm 1 本质就是:

1. 对完整 rollout 做一次 forward;
2. 在 action token 上算 GRPO loss;
3. 在 observation token 上算 CE loss;
4. 两者加权求和。

所以它不是引入一个复杂系统,而是把原本被 mask 掉的 token 重新纳入训练。


#3. 为什么预测 terminal output 会提升 agent?

这篇论文最值得琢磨的地方,不是 “加一个辅助 loss” 这个形式,而是它背后的机制假设。

作者借用了语言模型里的一个经典直觉:

good prediction implies good understanding.

如果模型能准确预测下一个 token,它就必须学到生成这个 token 背后的某些结构。对应到 terminal agent:

如果模型能预测一条命令会产生什么终端输出,它就必须跟踪这条命令对环境状态的影响。

例如:

  • 如果它预测 ls 的输出,就要知道当前目录里有什么;
  • 如果它预测 pytest 的错误,就要知道代码实现和测试期望之间的差异;
  • 如果它预测 cat file 的内容,就要记住之前是否创建/修改过这个文件;
  • 如果它预测 python script.py 的 traceback,就要理解程序执行路径和异常原因。

这不是单纯背诵文本,而是在训练模型形成一种“状态追踪能力”:

我做了什么 → 环境状态如何变化 → 下一次观察会暴露什么

这种能力对 agent 的下一步决策很有帮助。因为 terminal agent 的强弱,很大程度上取决于它能否回答:

  • 我现在应该 inspect 哪个文件?
  • 跑测试会暴露什么信息?
  • 这个错误说明我该改哪里?
  • 继续探索还是直接修?
  • 当前状态是不是已经接近完成?

ECHO 不是直接教模型“该做什么动作”,而是让模型更懂“动作会造成什么后果”。这和 model-based RL / world model 的思想非常接近。


#4. 实验设置:它到底怎么训?

#4.1 训练任务

论文从 2700 个 curated terminal tasks 开始:

  • 1977 来自 Endless Terminals;
  • 723 来自 OpenThoughts-Agent-v1-RL。

之后又用修改版 Endless Terminals pipeline 生成 6170 个额外任务。最终保留 GPT-5 在 16 次尝试中至少能解出一次的任务,得到 8870 个任务,覆盖:

  • data processing;
  • system operations;
  • development/tooling。

其中:

  • 8770 个用于训练;
  • 100 个作为 in-distribution validation,即 val100。

#4.2 交互环境

每一轮:

  1. policy 根据历史输出 thinking block 和 Qwen XML-format bash command;
  2. harness 解析第一条命令或 task-done signal;
  3. 在 Docker 中执行;
  4. 返回 format warning、stdout、stderr、exit code;
  5. 最多 16 turns。

训练时:

  • context window:16k;
  • 每轮最多生成 2048 tokens;
  • 训练任务 verifier timeout:10 分钟 agent + 2 分钟 verifier。

#4.3 模型和对照

论文训练三个 starting policies:

  1. Qwen3-8B base
  2. OpenThinker-Agent-v1-SFT / OT-SFT:Qwen3-8B 经约 15k expert demonstrations SFT;
  3. Qwen3-14B base

对照方式很清晰:

Base → GRPO
Base → ECHO = GRPO + env CE

这样可以隔离唯一变化:是否额外对 terminal output tokens 做 cross entropy。

#4.4 评测集

论文用多个评测:

  • val100:训练分布 held-out 100 tasks;
  • ITD:internal-dev,71 tasks,偏 data processing / systems / tooling;
  • TBLite:100 个 terminal-bench-style tasks;
  • TerminalBench-2.0 / TB2:89 tasks,用 Terminus 2 harness,32k context。

#5. 主结果:ECHO 显著优于 GRPO

论文最重要的 Table 1 给出 pass rate:

模型设置val100ITDTBLiteTB2 pass@1TB2 pass@3TB2 pass@5
Qwen3-8BBase34.27.04.91.573.714.49
Qwen3-8BGRPO54.916.29.52.706.748.99
Qwen3-8BECHO63.718.911.45.1710.4513.48
OT-SFTSFT38.510.76.05.6210.4512.36
OT-SFTGRPO63.518.811.67.6414.3817.98
OT-SFTECHO73.122.712.97.8713.8217.98
Qwen3-14BBase35.312.15.74.278.9912.36
Qwen3-14BGRPO60.317.99.85.1710.6713.48
Qwen3-14BECHO65.019.815.110.7916.5219.10

最关键的数字:

  • Qwen3-8B 在 TerminalBench-2.0 上:2.70 → 5.17,约 1.9x;
  • Qwen3-14B 在 TerminalBench-2.0 上:5.17 → 10.79,约 2.1x;
  • val100、ITD、TBLite 上也全部提升。

这说明 ECHO 不只是提升 in-distribution 任务,也对 OOD terminal tasks 有帮助。

Figure 2:训练曲线。粉色 ECHO 相比蓝绿色 GRPO 在多个评测上更快达到更高 pass rate,尤其 Qwen3-8B 和 Qwen3-14B 的 val100 / ITD / TBLite 曲线都显示额外 observation loss 带来稳定收益。
Figure 2:ECHO 相比 GRPO 的训练曲线

#6. ECHO 真的学到了 terminal dynamics 吗?

这是论文最关键的机制验证。

如果 ECHO 只是一个 regularizer,那么它提升 pass rate 可能只是偶然。但作者进一步测试:模型是否真的更会预测 terminal output?

他们用一个更强的 Qwen3-32B 生成 held-out trajectories,然后让不同模型去预测这些轨迹里的 terminal-output tokens,计算 per-token cross entropy。

注意这个评测是 off-policy 的:

  • 被评测模型没有生成这些轨迹;
  • 轨迹来自更强的 Qwen3-32B;
  • 所以模型不能只记住“自己通常会走到什么状态”;
  • 它必须预测另一个 agent 的动作造成的 terminal response。

结果:

  • GRPO 虽然提高任务成功率,但几乎不降低 environment-token CE;
  • ECHO 显著降低 environment-token CE。

论文给出的例子:

  • Qwen3-14B:val100 CE 从 0.24 → 0.07;ITD 从 0.39 → 0.31;TBLite 从 0.30 → 0.23;
  • Qwen3-8B:val100 从 0.29 → 0.07;ITD 从 0.46 → 0.32;TBLite 从 0.35 → 0.25。

这支持了论文标题里的 world model claim:ECHO 确实让模型更能预测环境动态。

Figure 3:环境 token 交叉熵。ECHO 明显降低模型对 terminal-output tokens 的预测误差,而 GRPO 基本不改变这项能力。这个图是论文证明“学到了 terminal dynamics”的关键证据。
Figure 3:ECHO 学到可迁移的终端动态预测能力

#7. ECHO 和 expert SFT 的关系:它替代了什么,又没替代什么?

这篇论文另一个很有意思的问题是:expert SFT 到底给 terminal agent 带来了什么?

OT-SFT 是 Qwen3-8B 经过约 15k 条 expert demonstrations SFT 得到的 agent。传统理解里,expert SFT 教模型:

  • 如何分解任务;
  • 如何 inspect 文件;
  • 如何运行测试;
  • 如何根据错误修复;
  • 如何停止。

ECHO 问的是:其中有多少能力,其实可以不靠 expert demos,而靠模型自己探索环境、预测环境反馈学到?

论文定义:

expert-SFT gap = OT-SFT + GRPO 相对 Qwen3-8B + GRPO 的提升
ECHO lift = Qwen3-8B + ECHO 相对 Qwen3-8B + GRPO 的提升

结果:

  • val100:ECHO 恢复了 101.6% 的 expert-SFT gap;
  • ITD:恢复 103.9%;
  • TBLite:恢复 88.9%;
  • TerminalBench-2.0:pass@1 / pass@3 / pass@5 上大约恢复一半。

这说明 expert SFT 的一部分价值是 interaction prior:熟悉终端反馈、状态演化、错误暴露方式。ECHO 可以从自交互中学到这部分。

但论文也很诚实地指出:TB2 上 ECHO 只恢复约一半,说明 expert demos 仍然提供更高层的 strategy prior

  • 一开始该试什么命令;
  • 如何分解任务;
  • 什么时候 inspect;
  • 什么时候 edit;
  • 什么时候 run tests;
  • 什么时候 stop。

所以 ECHO 不是让 expert demonstrations 过时,而是把 expert SFT 中一部分“环境熟悉度”的价值转移到了自监督环境预测上。

Figure 4:ECHO 对 expert-SFT gap 的恢复比例。内部评测上几乎恢复 expert SFT 初始化的收益,TerminalBench-2.0 上约恢复一半,说明它主要学到了 interaction/world-model 部分,而不是全部高层策略。
Figure 4:ECHO 缩小 expert SFT 依赖

#8. 训练和推理效率:不只是分数更高,也更少浪费交互

ECHO 的直觉是:同一条 rollout 里利用了更多监督,因此 sample efficiency 应该更好。

论文 Table 2 看“在 500 个 GRPO steps 内,ECHO 多快达到 matched GRPO 的最佳内部分数”:

模型Total GRPOTotal ECHOspeedupTBLite GRPOTBLite ECHOspeedup
Qwen3-8B4602401.92x5002202.27x
OT-SFT4002601.54x2203000.73x
Qwen3-14B3803801.00x3803801.00x

大体结论:8B 上 ECHO 明显更快;14B 上不是更快达到 peak,而是全程 plateau 更高。

更有意思的是 inference-time behavior。Table 3 统计 TB2 上 timeout、turns、tokens:

模型timeout GRPOtimeout ECHO变化turns GRPOturns ECHO变化tokens GRPOtokens ECHO变化
Qwen3-8B19.89.0-55%24.319.8-18%43.2k30.3k-30%
OT-SFT45.224.7-45%66.337.7-43%35.4k34.8k-2%
Qwen3-14B40.743.1+6%22.023.5+7%49.8k43.1k-13%

这说明 ECHO 不只是多解了任务,还常常减少无效交互:少 timeout、少 turns、少 tokens。

直观解释是:如果模型更能预测环境反馈,它就更少做“没意义的试探”。


#9. 最有启发的实验:没有 verifier,只靠预测环境反馈也能变强

论文第 5.5 节很有意思:作者关掉 verifier,不使用任务 reward,不做 action-token policy-gradient,只继续训练 environment prediction loss。

也就是:

L_total = L_Env
不用 L_GRPO
不用 reward
不用 verifier

模型仍然和环境交互,但训练目标只是:预测终端返回。

如果性能还能提升,就说明“预测环境反馈”本身确实能 reshape model state,从而间接改善 action generation。

结果:

Target distributionrollout filtersteptarget 提升val100 变化
val100none70+3.8 pp+3.8 pp
PyTerm OODclean tool calls100+10.0 pp-0.9 pp
ITD OODclean tool calls100+5.2 pp+0.4 pp
TBLite OODclean tool calls100-3.9 pp-0.4 pp

这个结果非常重要,但也要谨慎解读。

它说明:在一些环境中,只靠 prediction loss 也能 self-improve,尤其当反馈是 dense、action-linked 的时候,比如 PyTerm 中 Python 程序会产生 traceback、print、文件内容,这些都直接指向下一步应该改什么。

但它不是万能的。TBLite 上下降,作者推测原因是 TBLite 需要更复杂的 shell orchestration,观察 token 和正确 action 的联系不那么直接。此时 environment loss 容易变成“学习失败模式”:模型很会预测 parse error / malformed tool call 的输出,但这不代表它更会解决任务。

Figure 5:Verifier-free adaptation。关掉 verifier 和 GRPO 后,只靠 environment-token cross entropy,模型在 val100、PyTerm、ITD 上仍能提升,但在 TBLite 上失败,说明 observation prediction 的有效性依赖反馈是否足够 action-linked。
Figure 5:无 verifier 的环境预测自适应

#10. ECHO 和 model-based RL / world model 的关系

这篇论文对你关心的 LLM model-based RL / Dreamer for LLM Agent 很有启发。

经典 world model 通常是:

learn dynamics model: state + action → next state
use it for planning / imagination / policy learning

ECHO 不显式训练一个 separate dynamics model,也不在 inference-time 做 imagination rollout。它更像是:

把 policy 本身训练成“更懂环境后果”的模型

也就是说,它不是 model-based RL 的完整版本,但它在做一件基础的事:

把环境 transition signal 从稀疏 reward 旁边捡起来,变成 token-level predictive supervision。

在 terminal agent 中,状态并不是视觉图像,而是文本 transcript;动作不是电机控制,而是 shell command;next state 的可观察投影就是 terminal output。因此 next-observation prediction 很自然就能写成语言模型的 cross entropy。

这可能是 LLM Agent 里的一个重要方向:

不一定先造一个外部 world model,先让 policy 学会预测自己动作的可观察后果。

它和 Dreamer-style model-based RL 的差别:

维度Dreamer-style world modelECHO
模型结构通常有显式 dynamics / latent state model无额外模型,复用 policy LM
训练目标预测 latent / reward / continuation / observation预测 terminal observation tokens
是否用于 imagination planning是,核心机制否,主要是 representation shaping
是否额外 rollout通常可在 latent 中 imagination不额外 rollout
适用场景连续控制、视觉、通用 RL文本化 terminal agent

所以 ECHO 更像是一个轻量级、工程上立即可用的 “world-model regularization”。它没有解决长轨迹 planning,但证明了:agent 轨迹里的 observation token 本身是很强的自监督信号。


#11. 和其他相关方向的关系

论文 Related Work 中提到几个邻近方向:

#11.1 CWM

CWM 训练大模型学习 observation-action trajectories,用于 code generation with world models。ECHO 和它的区别在于:

  • CWM 更像单独的数据/模型训练阶段;
  • ECHO 直接嵌入 on-policy GRPO;
  • ECHO 不需要 separate corpus、world-modeling stage、inference-time simulation。

#11.2 RLTF / OpenClaw-RL

这些工作也关注“环境反馈中有被丢掉的监督”。区别是:

  • RLTF 预测 judge-generated critiques;
  • OpenClaw-RL 通过 judge 抽取 hints 或 process rewards;
  • ECHO 直接预测 raw environment observation tokens,不需要 judge、critique、distillation。

这点非常关键:ECHO 的监督来自环境 literal response,而不是人或模型解释过的反馈。

#11.3 多轮 Agent RL 稳定化方法

例如 SkyRL、SimpleTIR、DAPO、ArCHer 等,很多工作关注如何稳定 policy-gradient 更新、过滤坏轨迹、处理 overlong、clip 等问题。

ECHO 与这些方法正交:它不是替代 RL 稳定技术,而是在 RL loss 旁边多加一个 observation CE loss。


#12. 局限和需要警惕的地方

#12.1 分数绝对值仍然不高

虽然 ECHO 让 TB2 pass@1 翻倍,但 Qwen3-14B ECHO 也只有 10.79。这说明 terminal agent 仍处于很早期阶段。ECHO 提高 sample efficiency,但没有解决高层任务规划、复杂 debug、长程搜索等问题。

#12.2 预测环境不等于知道最优动作

ECHO 学的是:

如果我执行这个动作,环境可能怎么回应

但它不直接告诉模型:

哪个动作最优

因此它更像补足 interaction/world-model prior,而不是完整策略学习。

#12.3 可能学习失败模式

env-only adaptation 的 TBLite 失败说明:如果 rollout 质量差、工具调用 malformed、反馈和任务成功联系弱,那么 environment prediction 可能强化失败轨迹的模式。

所以 ECHO 可能需要搭配:

  • clean trajectory filtering;
  • void trajectory filtering;
  • tool-call validity filtering;
  • curriculum;
  • λ schedule;
  • observation subset selection。

#12.4 Observation token 很长,loss 权重需要小心

论文发现 λ 合适范围大概是 0.01–0.05,主实验用 0.05。太小没有 representation shaping,太大则 observation objective 会和 policy objective 竞争,甚至可能坍缩到“产生容易预测但无用的 terminal outputs”。

这提醒我们:不是 observation loss 越大越好。


#13. 对 LLM Agent 研究的启发

我觉得这篇论文对 Agent RL 有几条很重要的启发。

#13.1 失败轨迹不应该只被当作失败

在长轨迹 agent 任务里,失败是常态。如果只用最终 reward,失败轨迹基本浪费掉。但失败轨迹包含大量环境结构:错误、日志、状态、反例、测试反馈。

ECHO 给出了一种非常直接的利用方式:把它们作为 next-observation prediction targets。

这和你一直关注的长轨迹 RL 可持续性很相关:长轨迹越长,稀疏 reward 越难;但长轨迹也意味着 observation tokens 越多,自监督信号越丰富。

#13.2 Agent 预训练数据不只是 demonstrations,也可以是 interaction consequences

传统 agent SFT 依赖 expert demos:看专家如何操作。但 ECHO 表明,模型自己探索产生的 trajectories 即便失败,也可以通过预测环境后果获得价值。

这可能指向一种新的 agent pretraining / continual pretraining 形式:

大量自交互轨迹 + observation prediction + 少量 RL reward

比单纯 imitation 更接近“通过行动理解环境”。

#13.3 World model 可以从 textual environment feedback 中自然长出来

在 terminal / browser / code agent 中,环境反馈天然是文本化的:网页 DOM、terminal stdout、compiler error、unit test logs、API response。

这意味着 LLM 不一定需要复杂的视觉 world model,就能先学一种 textual world model。

可能的扩展包括:

  • browser agent 预测 DOM diff / page response;
  • code agent 预测 test failure / compile error;
  • tool agent 预测 API response schema;
  • research agent 预测 search result snippets;
  • multi-agent system 预测其他 agent 的 reply / critique。

#13.4 这可能是 model-based RL for LLM agents 的低成本入口

真正的 Dreamer-style LLM Agent 可能需要 latent dynamics、planning、imagined rollouts。但 ECHO 提醒我们,第一步可以很朴素:

在真实 rollout 中学习 action → observation 的预测。

如果这一步学好了,下一步才可能做:

  • imagined terminal rollouts;
  • action proposal reranking by predicted outcome;
  • uncertainty-aware exploration;
  • latent-state compression;
  • learned simulators for code environments。

#14. 我的判断

这篇论文的贡献不在于提出了一个复杂算法,而在于抓住了一个非常基础但长期被忽略的事实:

agent rollout 中的 observation 不是训练时的“上下文废料”,而是环境对动作的可观察后果,是天然的 dense supervision。

从工程角度,它很有吸引力:

  • 实现简单;
  • 不增加 rollout;
  • 不增加 forward pass;
  • 不需要 teacher;
  • 能和 GRPO 以及其他稳定化技巧组合;
  • 对失败轨迹友好。

从研究角度,它指向一个更大的问题:

LLM Agent 的能力形成,可能不只来自“哪些 action 得到奖励”,还来自“模型是否理解 action 如何改变世界”。

这正好连接到 model-based RL、latent-space reasoning、agent continual pretraining、self-evolving code agent 这些方向。

如果后续继续推进,我觉得最值得研究的是:

  1. observation loss 应该预测哪些 token? stdout 全部预测,还是只预测 error / diff / test output / file content?
  2. 如何避免学习失败模式? clean filtering、uncertainty、reward-conditioned prediction 是否有用?
  3. 能不能把 prediction 用到 inference-time planning? 不只是训练时 shaping,而是让模型在行动前模拟 terminal response。
  4. 能不能学习 latent world model,而不是 raw token prediction? raw CE 很直接,但可能浪费在格式和低级 token 上。
  5. 能否跨环境迁移? terminal dynamics 学到的东西能否迁移到 browser、IDE、repo-level software engineering?

总结起来:

ECHO 是一个小改动,但抓住了 Agent RL 的一个大缺口:环境反馈本身就是监督。对于 terminal/code agent,这可能是从 model-free sparse reward 走向 world-model-aware agent training 的一个非常自然的起点。