本文へ移動
cccskills
無料GitHub で公開

reward-design

为 RL 训练设计奖励函数或排查奖励黑客时使用——决定奖励来自规则、人类偏好还是模型评判,结果奖励还是过程奖励,标量、向量还是生成式诊断,以及如何用路径约束与 RLVP 惩罚违规动作;也用于多轮 Agent 的信用分配、隐藏测试与早停判定设计。

触发词:奖励设计、reward hacking、reward seeking、RLVR、RLHF、GRM、ORM、PRM、RLVP、信用分配、隐藏测试、过程奖励、奖励塑形、组内差异。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md10.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

奖励设计

何时使用

  • 为 RL 训练定义奖励函数,或评审已有奖励是否会激励错误行为
  • 判断某类任务该用可验证奖励、人类偏好还是模型评判
  • 结果奖励信号太稀疏、组内 rollout 全对或全错导致无梯度
  • 多轮 Agent 任务要做信用分配(终局成败归因到第几步)
  • 需要区分"事情办成了"与"以允许的方式办成了"
  • 排查模型学会口头承诺验证、删除失败测试、自设简单检查就提前结束等行为
  • 为"是否完成"设计模型无法篡改的判定(隐藏测试、状态断言、外部终止钩子)

核心原则

  • 奖励设计沿三个互补维度展开:奖励来自哪里(规则/偏好/模型评判)、什么时候给(结果还是过程)、表达多少信息(标量/向量/生成式诊断)。第四个问题是结果正确时路径是否也合规。四问都答完再动手写奖励函数。
  • 最可靠的来源是可验证奖励(RLVR)。 用测试用例、数据库断言、状态差异或格式检查直接判断结果。规则越确定,奖励越便宜、可复现,也越不容易被模型钻空子。有确定答案或测试时优先二元标量。
  • reward hacking 与 reward seeking 是两件事。 reward hacking 是钻规则或实现漏洞拿高分(改测试、伪造结果);reward seeking 是模型先在心里建立一个"评判器会看什么"的模型,再按这个猜测调整行为——不一定篡改测试,却可能在长程任务中自行设置一个过于简单的检查,刚好通过就提前结束。"通过了 grader"不能自动等价于"任务完成了":评判器是意图的代理,训练越强,模型越可能把代理当成目标本身。
  • 奖励结果,约束过程(RLVP)。 结果奖励解决"事情有没有办成",表达不了"是否按规定办成"。真实 Agent 可能通过改测试文件、跳过身份验证或执行破坏性命令获得表面成功。RLVP 针对可机器判定的、与最终成败无关的结果中性约束,不能替代对语义意图、交付完整性和早停行为的独立检查。
  • 真实环境通常是不对称验证器。 检测"做了一个坏动作"便宜而可靠,证明"这一步确实朝目标取得了有意义的进展"却很难。因此惩罚几乎总能恢复组内差异,进展奖励只有在部分进展可达时才有效。
  • 每个新增维度都增加一种被钻空子的可能。 不要为了"奖励更丰富"而堆叠不可验证的维度;先确认这个信号能在少量 rollout 中产生有意义的组内差异,再决定是否加入训练。
  • 多轮任务的终局反馈要靠外部机制归因。 多轮 LLM RL 通常将折扣因子设为 γ=1;PPO 的价值网络或 turn-level 优势负责把终点反馈归因到较早的动作,GRPO 则把轨迹级优势均摊到生成 token,长轨迹上需格外注意信号稀释。

实践模式

1. 奖励来源:三条路线

来源适用注意
规则 / 可验证奖励(RLVR)数学答案、代码测试、结构化工具调用、状态断言最优先建立;从二元结果奖励开始
人类偏好 / 奖励模型(RLHF)目标难以完全规则化的开放式任务奖励模型只是偏好的代理,过度优化会 reward hacking;通常用 KL 正则把策略锚定在 SFT 参考模型附近
模型评判(GRM)难以穷举规则、需要诊断信息不只给分,还生成"哪里做得好、哪里需要改"的诊断;让模型先归纳评价原则再按原则评价轨迹,最后用可验证事实检查评价是否正确;仍需抽样人工校准,防止评判器形成新偏差

2. 奖励时机:结果奖励打底,过程信号按需叠加

结果奖励(ORM) 只在 episode 结束判断任务是否完成,最简单,也给策略最大探索自由度。当中间路径没有公认标准、最优解尚未被发现时(如 SimpleVLA-RL 的稀疏成功/失败),它是合适起点。

关键实现:长程 coding 或 cowork 任务中,"是否完成"的判定要交给模型写不了的隐藏测试、状态断言或外部终止钩子,不能依赖模型自己声称完成。模型宣称完成时才在隔离工作区运行它看不到的验收测试,通过 +1、不通过 −1。测试必须读取真实文件或环境状态,不能只检查模型是否说了"已完成",否则模型会学会口头承诺验证而不真正验证。

过程奖励(PRM) 在中间步骤提供反馈(身份验证、工具参数、测试通过数、导航动作),能缓解长时序信用分配,却可能把模型限制在设计者预设的路径上,且标注和验证成本更高。

工程路径:先用结果奖励建立可靠基线,再只为真正可验证的中间事件加入过程信号。

3. 奖励密度与表示形式

密度和表示是两件事。选择原则很直接:

  • 有确定答案或测试 → 优先二元标量
  • 有多个相互独立的质量目标 → 向量(按准确性、完整性、成本、安全分别打分),或将各维度加权成标量
  • 开放式、难以穷举规则 → 生成式诊断,但要配合事实校验和人工抽检

半标量(先给简短理由再给分数)介于两者之间,便于归因。

4. 路径约束与 RLVP:两路奖励再合并

把验证器输出拆成两路,交给现有策略优化器(不改变 PPO/GRPO,只改变每一步看到的奖励):

outcome = verify_final_state(trajectory)              # 读结果,不是模型自述
path_signal = 0
for step in trajectory:
    path_signal += deterministic_path_signal(step)    # 惩罚违规,或奖励可达子目标
reward = normalize(outcome) + beta * normalize(path_signal)

总奖励写作 R = O + βΦ:O 是任务结果,Φ 是由确定性规则逐动作计算的路径信号。对可验证的违规动作扣分,对可验证的合规动作或可达子目标给少量部分奖励;两路各自归一化后再合并,避免路径信号淹没主目标。

RLVP 的四条设计规则:

  1. 只惩罚具体动作,不惩罚"不够努力"——惩罚规则必须确定、难以钻空子。
  2. 结果奖励始终保留——避免模型学会什么都不做(什么都不做就不会违规)。
  3. 每个惩罚最好配一条可达的合规路径;如果基础策略根本不会采样合规动作,先用少量示范把这条路径"种"出来,待合规行为稳定后再逐步减弱路径塑形。
  4. 先测信号可达性,再决定是否增加奖励维度。软件修复中若所有 rollout 都无法通过任何测试,进展信号不可达,加入它不会带来收益。

一句话概括配比:惩罚是通常可达的那一半,进展奖励是受可达性门控的那一半。

5. 多轮任务的信用分配

  • 终局成功/失败难以归因到具体某一轮时,优先用逐步可验证的中间事件构造过程信号,而不是发明更复杂的优势估计。
  • 工具轨迹中环境返回的 token 不是策略生成的,计算策略梯度时必须屏蔽这些反馈 token,只对模型自己的思考和工具调用参数回传梯度。
  • 用带价值网络的 PPO 做细粒度信用分配;用 GRPO 时注意轨迹级优势均摊到所有生成 token 会造成信号稀释,长轨迹上更明显。
  • 把"宣称完成"当作一个独立决策点来处理:在它前面挂外部验证器,而不是指望终局奖励顺带修正。

常见陷阱

  • 只看回复长度就生成冗长无意义的文本式奖励——评估最终目标而非中间指标。
  • 把"通过了 grader"当成"任务完成了",忽略 reward seeking:模型自设一个过于简单的检查、刚好通过就提前结束,交付物只满足代理指标。
  • 奖励维度堆叠:每加一个不可验证的维度就多一种被钻空子的方式;先验证信号能在少量 rollout 中产生组内差异再加入。
  • 结果奖励缺位、只有路径惩罚:模型很快学会什么都不做。
  • 进展奖励不可达时硬加:全败组里进展信号取不到值,只会增加噪声。
  • 过程奖励过度塑形:把模型限制在设计者预设的路径上,丧失探索空间;也可能奖励"正确的过程导致错误的结果"。
  • 验证器本身有系统性偏差:RL 只会更快地利用它。先用少量 rollout 检查"任务是否可完成、验证器能否区分对错",再扩大采样规模。
  • 用模型自述代替状态检查:删除失败测试用例也能让测试通过;口头承诺"7 天内退款"也能得到暂时满意。过程验证层必须由代码判定政策库、权限表与动作轨迹。
  • 模拟器漏洞被主动利用:用 LLM 扮演环境训练时,Agent 钻空子的对象从"真实环境的规则"变成"模拟器本身的偏见与漏洞",RL 会主动寻找并利用它。稳妥做法是混合——模型模拟承担大部分交互量,辅以真实环境交互并定期校准。

配套代码

  • chapter8/RLVP/ — RLVP 复现指南:GRPO 上叠加结果奖励与确定性路径信号;书中报告 TerminalBench 违规次数 3.71→0.66 而成功率基本持平,miniF2F 上可达的部分奖励把达到 0.9 成功率所需迭代从 7.0 降至 4.4。
  • chapter8/premature-completion-dpo/ — "过早结束"案例的隐藏测试奖励落地:data/hidden_tests.json 提供模型不可见的端到端验收脚本,train_grpo_optional.py 是同一问题的可选 RL 分支。
  • chapter8/SimpleVLA-RL/ — 稀疏结果奖励保留最大探索空间的对照案例(每条任务仅一条演示 SFT 冷启动,17.3%→91.7%)。
  • chapter8/retool/ — 工具反馈如何改变思考策略:模型学会主动执行、读取错误并自我修正。
  • chapter8/AWorld-train/ — MCP 多工具沙盒中的奖励与可重放环境链路。

深度阅读

  • book/chapter8.md「从单轮到多轮:任务场景与信用分配」
  • book/chapter8.md「奖励设计:如何把任务目标变成学习信号」
  • book/chapter8.md「RL 环境:从评估到仿真」
  • book/chapter8.md「后训练实践要点」
  • book/chapter9.md「从运行轨迹中获得学习信号」

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

为 Agent 建立或改进评估体系时使用——设计评估指标(Pass@k/Pass^k/成本)、搭建可重复运行的评估环境、选择确定性验证器或 LLM-as-a-Judge 及各自适用边界、编写 Rubric、做失败归因与回归任务、评估驱动的模型选型、判断统计显著性、建设可观测性与内部评估基础设施(消融、AB 测试、特性开关、提示词回归)、从 Benchmark 报告走到系统改进。

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

让 Agent 从运行经验中持续学习、构建自进化闭环时使用——涵盖从运行轨迹提取学习信号(三层轨迹验证)、四种进化方式(经验知识库、Prompt/Skill、程序/Harness、模型参数)的适用边界与选择依据、Prompt 自动优化、轨迹编译为程序、Agent 自我修改与安全门禁、睡眠学习与长期分层评估。触发词:持续进化、自进化、经验学习、轨迹验证器、自我修改、进化闭环。

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

Agent 陷入无限循环、数不清工具调用次数、遗忘 TODO 或目标偏离、长任务中思考 token 持续膨胀时使用——Agent 状态栏机制、作为 user 消息注入末尾的 KV Cache 理由、每轮替换与持久追加两种实现及成本模型、五种状态栏技术(时间戳、工具计数器、TODO、详细错误、系统状态)与维护铁律。

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

ai-style

無料

中文文案去「AI 味」检查清单,由用户纠正反馈持续提炼而来

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

构建异步/事件驱动 Agent,或让 Agent 响应外部事件(新邮件、webhook 回调、IM 消息、定时器、系统告警)、 处理工具执行期间的用户打断与多任务并发时使用。覆盖事件循环与安全点、三类事件触发工具、用户沟通与多渠道召回、 虚拟身份与隔离执行环境、队列式/取消式/并行式三种事件处理策略及紧急度判定,以及模型原生异步与同步接口兼容两条路线。 触发词:异步 Agent、事件驱动、event-driven、webhook、定时器、心跳、任务句柄、打断、steering、并行工具执行。

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

把生产 bad case / 失败轨迹转成训练数据时使用——从失败归因、轨迹前缀截取、DPO 偏好对构造、LoRA 训练到边界集与保留集双集验证的完整链路;也用于判断某类问题该走 SFT、DPO、RL 还是先修 Harness/工具/tokenizer,以及如何从运行轨迹中提取带证据的结构化学习信号。触发词:bad case、失败归因、DPO、偏好对、轨迹前缀、拒绝采样、过度矫正、边界集、保留集、过早结束、reward hacking、LoRA 微调、训练评估隔离。

日本語の概要は準備中です。原文の説明を表示しています。

bojieli/ai-agent-book5.4万2026年10月9日 更新

bojieli のスキルをすべて見る

このスキルの問題を報告する