训练环境越多未必越好:先确认 reward 有没有奖励正确的行为
RIVER 从 14,399 个 TMax 环境中筛出约 3.5K 个,再用轻量 repetition penalty 修正 turn-level advantage。River-8B 在四个 terminal benchmarks 上平均 19.4±1.2。
论文进一步提出:SFT 提供 atomic skills,RL 主要重排跨 turn 的高层 behavior。
先分清四个角色,后面才不会把“GPT-5.4 judge”混成一个东西
任务包
生成 instruction、Docker / bundled data 与 task-specific verifier。
筛选器
GPT-5.4 静态审计三类材料;GPT-5.4 + Terminus-2 做 oracle pass@2。
被训练对象
在容器里执行 command;能读权限允许的所有文件。
Outcome reward
Rollout 结束后运行。全部检查通过才给 binary reward 1。
弱 verifier 会把一个错误策略变成 RL 的“成功样本”
SFT 与 RL 改变的层级不同:一个补技能,一个重排策略
Atomic skills
- 写 grep / shell pipeline
- 调用编译器与 package manager
- 理解领域知识
- 判断单个 action 是否局部正确
High-level behaviors
- 先 inspection 再修改
- 错误后换方案
- 结束前验证
- 避免重复 command / observation loop
RIVER 没有再造 task generator,它把上游环境当成需要审计的训练数据
| 路线 | 扩展对象 | Judge | RIVER 增加了什么 |
|---|---|---|---|
| Endless-Terminals | 大规模 executable environments | 各环境 outcome verifier | 检查 verifier 信号是否可信。 |
| TMax | 14,399 tasks 的 domain / skill coverage | 随任务发布的 verifier | 直接从这个 pool 筛到约 3.5K。 |
| Stronger tests | Coding task 的 test coverage | 更强 unit tests | 同时检查 instruction、container、verifier 三者一致性。 |
| Compositional generalization | 单轮 reasoning primitives | final answer reward | 扩展到有 command、observation、recovery 的多轮 agent。 |
两级过滤解决“该不该训练”,behavior rule 解决“怎样给更密的信号”
CLEAN 只有一个,其他七类分别描述 reward 为什么不可信
正确方案能过
Instruction 清楚,环境可用,verifier 检查任务要求的结果。
假答案也能过
只验格式、计数、关键词或固定输入。
三件套不一致
Instruction↔verifier,或 instruction↔environment 冲突。
答案可见
Instruction 或容器文件直接暴露 expected answer。
缺规格
多个合理解释,checker 只接受其中一个。
没有学习信号
写常量、echo 或复制文件就能完成。
运行级缺陷
Buggy checker、缺 GPU / service、矛盾或非确定性。
一个任务可多病
Audit 仍强制选一个主类别,所以八分类一致率会偏低。
Defect 比 CLEAN 更容易跨 judge 复现
训练 policy 只拿 task verifier 的结果;audit 与 oracle 都发生在数据准备阶段
OCR 只做到 0.368,复制可读的 ground truth 后变成 1.0
输出测试全部正确,却因为 Rust API 名称不同得到 reward 0
is_ascii_alphabetic() 符合要求;tokens 与 covariance 两个测试都通过。is_alphabetic。合法 API 名不同,整题 FAIL。只有 command 与 observation 都高度重复,才处罚这个 turn 的 response tokens
si,t = −δ if both Jaccard > 0.8
δ = 0.05 · cap = 0.15 / rollout
# explanatory reconstruction, not official code repeated = any( jaccard(cmd, old.cmd) > 0.8 and jaccard(obs, old.obs) > 0.8 for old in prior_turns ) if repeated: token_advantage += -0.05
River-8B 四项都领先,平均 19.4±1.2;最强 baseline 为 17.8±0.7
能预测成功的 behavior,直接奖励后未必提高结果
标准 GRPO
Task verifier 给 trajectory-level binary reward。它看不到行为发生在哪个 turn。
行为下降,分数提高
重复比例减少,并出现可见的整体 performance improvement。最终 recipe 保留。
行为增加,分数没涨
结束前验证更频繁,却没有额外 performance gain。相关特征不是自动成立的 causal target。
换 model family、size、harness 与 RL objective 后,过滤集仍有更大的 RL gain
约 3.5K / 14,399 environments。
相对完整 TMax 的平均 RL gain 增幅。
相对完整 TMax 的平均 RL gain 增幅。
只用 Debug + Systems 的约 800 个环境做 RL,整体仍从 32.3 升到 49.2
结果很完整,复核条件仍缺四块
LLM labels
全量由 GPT-5.4 判;Claude 只复判 120 个分层样本,GPT-CLEAN 的条件一致率 40%。
Artifacts 不全
项目 repo 只有网页与图表输入,没有 3.5K 清单、训练代码、checkpoint 或 rollout logs。
8B 主表
River、OpenThinker、TMax 使用不同原生 harness。统一 budget 不等于只比较数据。
相关证据
AUC、RSA、domain transfer 与假设一致,未证明全部增益都由 12 个 behavior 导致。
把 evaluator 当成训练系统的一部分,先审计 reward,再扩环境
一套可复用的实验框架
同时追 false positive 与 false negative;分开 audit、oracle、policy reward;用真实 rollout 解释 verdict;先做 behavior intervention 再决定 shaping。
跨完整 harness 的 sealed evaluation
在 Claude Code、Codex CLI 与开源 runner 上使用同一批 sealed tasks;隔离 task generator、checker author 与 environment family;加入人工复核 reward disagreements。