openClaw-RL学习

论文学习

OpenClaw-RL建立在一个单一的洞察之上:这些信号是流无关的,并且一个策略可以同时从所有这些信号中学习。个人对话、终端执行、GUI交互、SWE任务和工具调用跟踪都流入同一个训练循环 。Binary RL将评估信号转换为标量过程奖励 ,而OPD将指令信号转换为令牌级优势监督。结合两者可以带来显著的优化收益。

OpenClaw-RL 基于 slime 构建,实现了四个完全解耦的异步循环:serving、rollout、PRM 评判和训练,允许从实时的多流交互中进行连续训练,而不会中断 serving。

OpenClaw-RL的Hindsight-Guided OPD在线环境下整合了这些流程:从实时的下一状态信号中提取文本提示(回溯重标记),模型在增强上下文的提示作用下充当自身导师(通过上下文丰富实现自蒸馏),最终得到的词级对数概率差异提供了方向性优势监督,无需预收集数据、外部导师或配对偏好。

OpenClaw-RL 被设计用于从单用户个人代理到大规模多环境通用代理部署的全谱操作。对于个人代理,环境是单个用户的设备,交互流是稀疏的、基于会话的且高度个性化的。OpenClaw-RL 基于 slime (Zhu et al., 2025) 构建,继承了通用代理的可扩展训练基础设施,并且我们进一步支持跨不同代理设置的云托管环境(第 3.4 节)。云服务上托管的数百个并行环境产生密集的结构化执行信号流,从而实现可扩展的强化学习训练

二元法和OPD法是互补的,而非竞争关系。二元强化学习(Binary RL)接受每一个评分轮次,无需提取提示,并可处理任何下一状态信号,包括简洁的、隐含的反应(用户简单地重复提问)或结构化的环境输出(退出码、测试结果)。当交互流可能包含丰富的指令性内容时,应额外启用OPD法:例如,用户给出明确的修正("不要使用该库"、"先检查文件"),或环境产生详细的错误追踪(SWE差异、编译器诊断)。实践中,我们建议同时运行这两种方法:二元强化学习(Binary RL)提供跨所有轮次广泛的梯度覆盖,而OPD法则在存在指令信号的轮次子集中提供高分辨率的、逐令牌的修正。

Hindsight-Guided OPD

在靠岸学术中使用提示词:

OpenClaw-RL's Hindsight-Guided OPD,介绍这个方法,以GUI操作点击为例(购买理财页面,点击购买,进入支付页),举个例子解释这句话:从实时的下一状态信号中提取文本提示(回溯重标记),模型在增强上下文的提示作用下充当自身导师。 模型点击购买后,那这个例子中的文本提示是什么,下一状态信号时什么,增强上下文中是什么? 如何知道点击错了还是对了,比如点击错了跳转到错误页面如何知道模型?

OpenClaw-RL的Hindsight-Guided OPD 方法介绍

Hindsight-Guided On-Policy Distillation (OPD) 是OpenClaw-RL中一种关键的训练方法,旨在从"下一状态信号"中提取指令性信息 ,并将其转化为token-level的训练信号,以指导模型改进。

核心思想:

传统的强化学习(RL)通常使用标量奖励(例如+1表示成功,-1表示失败),这种奖励虽然能评估操作好坏,但丢失了大量关于"如何改进"的细节信息。OPD的目标就是从下一状态信号中恢复这些丢失的指令性信息。

OPD的机制在于:如果我们将从下一状态中提取的**文本提示(hint)**添加到原始输入上下文中,那么同一个模型在看到这个"增强的上下文"时,应该能生成一个更好的(或"教师级别"的)响应。通过比较模型在原始上下文和增强上下文下生成的token概率分布,我们可以得到一个"token-level的优势值",它能够具体指出哪些token应该被加强,哪些应该被抑制。

与现有方法的区别:

  • 不同于RLHF/DPO: RLHF和DPO依赖于标量偏好信号或配对偏好,而OPD直接从下一状态信号中提取指令性的token-level监督。
  • 不同于标准蒸馏: 标准蒸馏需要一个单独的、更强的教师模型。OPD则允许模型在"提示增强的上下文"下充当自身的教师
  • 在线学习: 最重要的是,OPD能够从实时的、活的(live)下一状态信号中进行学习,而无需预先收集静态数据集。

OPD的四个步骤 (根据论文第8页4.2.2节):

  1. 回溯提示提取 (Hindsight hint extraction):

    • 一个Judge模型接收代理的动作
    • 它不仅给出一个标量分数(+1/-1),还会生成一个简洁的文本提示(hint),说明动作应该如何不同。
    • 这个提示是高度浓缩的,只包含指令性内容,通常是1-3句话。它不是简单地复制下一状态信号。
  2. 提示选择与质量过滤 (Hint selection and quality filtering):

    • 为了确保训练信号的质量,只选择那些分数高(+1)且提示长度超过一定阈值(如10个字符)的样本。
    • 这个严格的过滤确保了只有包含清晰、可提取纠正方向的交互才进入训练。
  3. 增强教师上下文构建 (Enhanced teacher construction):

    • 将提取出的提示 (hint) 附加到最后的用户消息中,形成一个"增强的提示" (Ssenhanced=st⊕hint)。
    • 这个增强的提示模拟了如果用户在一开始就提供了纠正信息,模型"本应看到"的上下文。
  4. Token-level优势值计算 (Token-level advantage):

    • 使用增强的上下文 (Ssenhanced) 再次查询策略模型,并以原始响应 (at) 作为强制输入,计算每个响应token的对数概率。
    • 计算"token-level优势值"
    • 如果 At>0,表示在提示的指导下,该token的概率更高,模型应该增加其生成概率。
    • 如果 At<0,表示该token在提示下不那么合适,模型应该减少其生成概率。
    • 这种方式提供了每个token的定向指导,比标量奖励信息更丰富。

GUI操作点击示例解释:购买理财页面

场景: 代理的目标是在一个理财产品页面上,成功点击"购买"按钮,并进入支付页面。

具体步骤与概念解释:

1. 代理执行动作 (at​):

  • 假设当前页面是理财产品详情页,代理识别到"购买"按钮,并执行了点击操作。
  • at: Click(PurchaseButton) (假设这是一个工具调用或GUI操作指令)

2. 下一状态信号 (st+1​):

下一状态信号是代理动作后环境的反馈。它可能包括:

  • 成功情况:
    • 屏幕状态变化:页面跳转到了"支付页面",显示"请确认支付金额"等文本。
    • 可视化状态差异:检测到页面布局、文本内容、URL等的变化,确认进入支付流程。
    • 日志信息:系统记录了"成功进入支付流程"。
  • 失败情况(点击错误):
    • 屏幕状态变化:
      • 跳转到错误页面: 页面显示"操作失败,请重试"、"找不到该产品"等错误信息。
      • 停留在当前页面: 页面没有变化,或者弹出一个小的错误提示框"请先登录"等。
      • 跳转到不相关页面: 页面跳转到了首页、客服页等非支付页面。
    • 可视化状态差异:检测到页面内容与预期支付页面不符。
    • 日志信息:系统记录了"点击失败"、"页面跳转异常"。

3. "模型点击购买后,这个例子中的文本提示是什么?"

这里的文本提示(hint)是由Judge模型 根据at​和st+1​提取出来的,它不是st+1​本身,而是对st+1​中指令性信息的精炼总结

  • 成功情况 (假设点击正确,进入支付页):
    • Judge模型可能会提取出一个"积极"的提示,例如:
      • [HINT_START] 很好,成功进入支付流程。 [HINT_END]
      • 这样的提示可能分数是+1。
  • 失败情况 (假设点击错误,跳转到错误页面):
    • Judge模型会根据错误页面信息提取出具体且可操作的纠正提示
    • 如果跳转到"请先登录"页面:
      • st+1 (原始下一状态信号) 可能是:屏幕截图显示登录页面,提示"您尚未登录,请先登录。"
      • 文本提示 (hint) 可能是:[HINT_START] 在点击购买前,应先检查用户登录状态并执行登录操作。 [HINT_END]
    • 如果跳转到不相关页面(例如,点击了"广告"而不是"购买"):
      • st+1 (原始下一状态信号) 可能是:屏幕截图显示一个广告页,URL变化为/ad/xxx。
      • 文本提示 (hint) 可能是:[HINT_START] 错误地点击了广告链接。应准确识别并点击"购买"按钮,注意其在页面中的位置和文本内容。 [HINT_END]
    • 如果停留在当前页面,并弹出"产品已售罄"提示:
      • st+1 (原始下一状态信号) 可能是:页面保持不变,屏幕中央弹窗显示"该理财产品已售罄"。
      • 文本提示 (hint) 可能是:[HINT_START] 在尝试购买前,应先检查产品库存状态。如果售罄,应提示用户选择其他产品。 [HINT_END]

关键在于: hint是Judge模型对st+1​的解释和指令性浓缩,它告诉模型"哪里错了"以及"应该怎么做"。

4. "下一状态信号是什么?"

如上所述,st+1​是代理动作后环境的原始、直接反馈。在GUI场景中,它通常是:

  • 新的屏幕截图/视觉信息。
  • DOM树或可访问性树的变化。
  • 页面URL的变化。
  • 弹窗、提示信息。
  • 任何系统日志或错误报告。
  • 用户直接的文本反馈(如果涉及个人代理)。
    在这个例子中,就是页面跳转后的视觉状态、文本内容、URL等所有原始信息。

5. "增强上下文中是什么?"

增强上下文 (Ssenhanced​) 是在原始上下文 (st​) 的基础上,附加了从st+1​中提取的文本提示(hint)

假设原始上下文 (st​) 包含:

  • 用户指令:"请帮我购买这个理财产品。"
  • 当前页面状态描述:"理财产品详情页,包含产品名称、收益率、以及一个红色的'购买'按钮。"
  • 代理之前的思考和操作(例如,代理识别了"购买"按钮)。

增强上下文 (Ssenhanced​) 示例:

  • 失败情况(点击错误,跳转到错误页面,hint为"在点击购买前,应先检查用户登录状态并执行登录操作。")
    用户指令:"请帮我购买这个理财产品。"
    当前页面状态描述:"理财产品详情页,包含产品名称、收益率、以及一个红色的'购买'按钮。"
    代理之前的思考和操作:...
    [user's hint / instruction]\n在点击购买前,应先检查用户登录状态并执行登录操作。

这个增强上下文就模拟了如果用户在一开始就知道问题,并提供了明确的指导,那么代理模型在生成行动时会看到什么。

如何知道点击错了还是对了,比如点击错了如何指导模型迭代?

OpenClaw-RL通过PRM (Process Reward Model) Judge来判断动作的正确性。

  • PRM Judge 的作用: PRM Judge是一个独立的模型,它接收代理的动作 (at​) 和下一状态 (st+1​),然后评估动作的质量,并输出一个标量奖励(例如+1表示好,-1表示坏,0表示中性)。在OPD中,它还会提取文本提示。

  • 判断机制:

    • 对于GUI任务,Judge模型被设计为能理解视觉信息和文本信息。 根据论文C.4节,GUI的PRM Judge提示(System Prompt (GUI))明确要求:
      • "You are a strict evaluator to evaluate the most recent step of a GUI agent."
      • "Evaluate ONLY the single most recent step using the information above."
      • "Use the next observation AFTER executing this step (i.e., the environment state after this action) to judge whether the action actually took effect."
      • Assign a score of +1 if ALL of the following are true:
        • "The step is clearly relevant to the stated objective;"
        • "The action is executable and coherent given the next observation;"
        • "The next observation shows concrete progress toward the objective, not just a no-op."
      • Otherwise assign a score of -1, for example if:
        • "The step is incorrect, irrelevant, impossible in context, has no visible effect, undoes progress, contradicts the next observation, or hallucinates tools/objects/facts."
  • 错误判断示例:

    • 点击错误,跳转到错误页面:

      • PRM Judge会分析st+1(即错误页面的屏幕截图、URL、错误文本等)。
      • 它会发现"next observation"(错误页面)没有显示"concrete progress toward the objective"(没有进入支付页面),反而显示了错误信息。
      • 因此,Judge会根据其内部逻辑和评估标准,判断这个动作是错误的,并分配一个**-1的奖励**。
    • 点击错误,但停留在原页面并弹出提示:

      Judge会分配**-1的奖励**。

      • 它会发现页面没有跳转,也没有达到"进入支付页面"的目标,并且弹窗可能暗示了操作失败的原因。
      • PRM Judge会分析��+1st+1(原页面+弹窗)。

总结:

OpenClaw-RL的PRM Judge是核心组件,它充当一个"智能裁判",通过分析代理的动作和环境的原始反馈(下一状态信号),来判断动作的质量。对于GUI操作,这意味着Judge能够"看到"并"理解"页面变化、文本内容等,从而准确判断操作是成功进入支付页,还是跳转到错误页,亦或是停滞不前。这个判断结果(标量奖励和文本提示)随后被用于指导模型的在线训练。

好的,OpenClaw-RL 中的 Binary RL (二元强化学习) 是一种将下一状态信号中的评估信号 (evaluative signals) 转换为标量过程奖励 (scalar process rewards) 的算法实现。它的目标是让代理能够从每一次交互中获得即时、密集的反馈,而不仅仅是最终任务的成功或失败。

Binary RL

算法实现介绍

Binary RL 的核心在于利用一个 Process Reward Model (PRM) Judge 来评估代理在每个时间步执行动作的好坏,并将其转化为简单的二元或三元标量奖励。这个奖励随后被用于标准的强化学习训练目标,例如 PPO (Proximal Policy Optimization)。

以下是 Binary RL 算法的详细实现步骤,结合论文中的信息 (主要来自第 7 页的 4.1 节和算法 1):

1. 交互与数据收集 (Interaction and Data Collection)

  • 异步记录与缓冲: 所有的交互数据 (prompt_ids, response_ids, logPold) 都会被缓冲起来,等待后续处理。这个过程是非阻塞 (non-blocking) 的,确保了系统可以同时处理实时请求。

2. 奖励计算 (Reward Computation) - PRM Judge

这是 Binary RL 的核心。当下一状态信号 ��+1st+1​ 可用时,PRM Judge 被触发:

  • PRM Judge 的输入:
    • 代理的动作at (即代理的回复或工具调用)。
    • 下一状态信号st+1 (用户回复、工具执行结果、环境反馈等)。
  • PRM Judge 的功能: Judge 模型评估at 在st+1 上表现的质量。
    • 个人代理 (Personal Agents) 场景: Judge 评估用户是否满意、是否重新提问、是否给出纠正。例如,用户重新提问可能表示不满意 (-1),通过测试表示成功 (+1)。
    • 通用代理 (General Agents) 场景: Judge 评估环境反馈是否表明任务取得了进展。例如,shell 命令执行成功且输出符合预期 (+1),错误信息或停滞不前 (-1)。
  • 多重查询与多数投票 (Majority Vote):
    • 为了提高奖励的可靠性,OpenClaw-RL 会并行运行 m 个独立的 Judge 查询 (r1,...,rm)。
    • 最终的奖励 rfinal 通过多数投票的方式确定:rfinal=MajorityVote({r1,...,rm})。
    • 奖励的取值通常是二元或三元:{+1,−1,0}{+1,−1,0} (好、坏、中性)。
  • 奖励广播: 计算出的 rfinal 会被广播,并与之前缓冲的 at 和 st 关联起来。

3. RL 训练目标 (RL Training Objective)

一旦获得了标量奖励 rfinal​,它就被用作 PPO 算法中的优势值 At​。

  • PPO 训练目标: OpenClaw-RL 采用标准的 PPO 风格的裁剪代理目标函数,但具有非对称边界 (asymmetric bounds) (Schulman et al., 2017)。
    • 目标函数公式 (论文公式 1):
  • 实时在线训练: 训练引擎 (Megatron) 异步地接收这些带有奖励的样本,并进行梯度更新。由于其异步设计,训练不会阻塞策略服务或奖励计算。

4. 训练队列与样本提交 (Training Queue and Sample Submission)

  • 当一个交互的 at, st, logPold 和 rfinal 都准备好后,这个样本就会被提交到训练队列中。
  • 训练引擎会从队列中拉取样本,并执行梯度更新,以优化策略 πθ。
  • "至少一个保证" (At-least-one guarantee): 如果在某个时间段内没有产生有效的训练样本(例如,所有 Judge 投票都是 0 或被过滤掉),系统会确保至少有一个样本被提交,以避免训练停滞。

总结 Binary RL 的实现特点:

  • 在线学习源: 将下一状态信号转化为实时的、在线的奖励信号,实现持续学习。
  • 通用性: 适用于个人对话、终端、GUI、SWE 和工具调用等多种交互类型。
  • 密集过程奖励: PRM Judge 在每个时间步提供奖励,而不是只在任务结束时,解决了长时序任务的信用分配问题。
  • 异步解耦架构: 策略服务、环境、奖励判断和训练完全独立运行,避免阻塞,提高系统吞吐量和可扩展性。
  • PRM Judge 增强: 通过多重查询和多数投票机制,提高奖励的可靠性。
  • 标准 RL 算法集成: 将 PRM 奖励无缝集成到 PPO 等成熟的 RL 算法中。

通过 Binary RL,OpenClaw-RL 能够有效地从每次代理与环境的互动中学习,即使是简单的用户反馈或工具执行结果,也能转化为有用的训练信号,从而实现代理的持续改进。

两者的差异

提示词如下:

Binary RL的二元奖励是由 PRM Judge提供的,包括这三种{+1,−1,0}。且从用户回复、环境、工具调用等进行评判。 和Hindsight-Guided OPD中的标量分数+1/-1有什么区别,是用的同一个PRM Judge模型和判断方法吗

1. Binary RL 的二元奖励 ({+1, -1, 0})

  • 目的: 主要用于评估信号 (Evaluative Signals) ,即判断代理的上一步动作表现得"好"或"坏" 。它提供了一个标量的、序列级别的过程奖励
  • 奖励值: {+1,−1,0}{+1,−1,0}
    • +1 (好/Good): 动作执行得好,用户满意,工具调用成功,环境朝着目标前进。
    • -1 (坏/Bad): 动作执行错误,用户不满意(如重新提问),工具调用失败,环境出现错误。
    • 0 (中性/Neutral): 动作没有明确的好坏反馈,或者反馈不清晰。
  • 判断依据: PRM Judge 基于下一状态信号 (st+1​) 来推断 at 的质量。
    • 用户回复: 用户的满意、不满意、重新提问、显式反馈等。
    • 工具调用结果: 工具执行成功或失败的日志、返回值。
    • 环境状态变化: GUI 状态的进展、SWE 任务的测试结果、代码差异分析等。
  • 输出形式: 最终的 rfinal 是一个单一的标量值,代表了整个动作的整体评估。
  • 训练应用: 这个标量奖励直接作为 PPO 训练中的优势值 (At​),用于调整策略的对数概率,使代理倾向于产生获得高奖励的动作。

2. Hindsight-Guided On-Policy Distillation (OPD) 中的标量分数 ({+1, -1})

  • 目的: 主要用于指令信号 (Directive Signals) ,即判断下一状态信号中是否包含有用的、可提取的、指导性的修正信息 ,告诉代理"应该如何做得不同 "。它不直接提供奖励,而是用于筛选样本构建教师信号
  • 分数/标签值: {+1,−1}{+1,−1} (注意这里论文在 4.2.1 节提到了 score ∈{+1,−1}∈{+1,−1},而不是 0)
    • +1: 下一状态信号中包含有用的、可提取的、具体指导性的"反思提示 (hindsight hint)",能够帮助代理理解哪里出了问题以及如何修正。
    • -1: 下一状态信号中没有有用的指导性信息,或者信息不明确。
  • 判断依据: 这里的 PRM Judge 侧重于解析st+1​ 中的文本信息,寻找能够转化为具体指令的线索。例如,用户说"你应该先检查文件"就是一个明确的指令信号。
  • 输出形式: 除了分数 {+1, -1},如果分数为 +1,PRM Judge 还会额外输出一个简洁的、可操作的文本提示 (hint) ,例如 [HINT_START]...[HINT_END]
  • 训练应用:
    1. 样本筛选: 只有那些被 Judge 评为 +1 且提示长度超过阈值(例如 10 个字符)的样本才会被用于 OPD 训练。这是为了确保信号质量。
    2. 教师上下文构建: 提取出的 hint 会被附加到原始 prompt 中,形成一个"增强的教师上下文"(Senhanced)。
    3. Token-level Advantage: 代理模型在 Senhanced 下重新计算原始动作的对数概率,并与原始策略的对数概率进行比较,生成Token-level Advantage 。这个优势值提供了逐 token 的方向性指导,指示哪些 token 应该被加强,哪些应该被抑制。

3. 同一个 PRM Judge 模型,但不同的"判断方法"/"输出目标"

论文中提到 (第 8 页 4.2.2 节 Step 1):Judge(at, St+1) → {score ∈ {+1, −1}, hint ∈ T*}。这表明用于 OPD 的 Judge 也是一个 PRM。

  • 基础模型: 它们很可能使用同一个底层的大型语言模型 (LLM) 作为基础,通过不同的 prompt 来引导其执行不同的判断任务。
  • 判断方法/Prompt 的区别:
    • Binary RL 的 PRM Judge Prompt (见 Appendix C.1): 专注于评估代理的输出质量,输出一个单一的标量分数 {+1, -1, 0}。它会思考"这个动作做得好不好?"
    • OPD 的 Hindsight Hint Prompt (见 Appendix C.2): 专注于提取 下一状态信号中的指导性信息。它会思考"下一状态信号是否揭示了有用的反思,能够改进代理的响应?"并且如果发现有,就要提取出一个具体的 hint。

核心区别总结在下表:

算法伪代码

相关推荐
源码之家4 小时前
计算机毕业设计:Python汽车销量智能分析与预测系统 Flask框架 scikit-learn 可视化 requests爬虫 AI 大模型(建议收藏)✅
人工智能·hadoop·python·算法·数据分析·flask·课程设计
tiger从容淡定是人生4 小时前
可审计性:AI时代自动化测试的核心指标
人工智能·自动化·项目管理·策略模式·可用性测试·coo
@Mr_LiuYang4 小时前
PDF文件OCR解析:OpenDataLoader PDF
人工智能·pdf
茶杯6754 小时前
2026 年主打 AI 智能的床垫品牌综合排名
人工智能
锅挤4 小时前
来一篇儿:《DELVING INTO TRANSFERABLE ADVERSARIAL EX AMPLES AND BLACK-BOX ATTACKS》
论文阅读·人工智能
昨夜见军贴06164 小时前
AI报告编审解决方案引爆降本革命:IA-Lab AI检测报告生成助手与IACheck重构报告成本体系
人工智能·重构
昨夜见军贴06164 小时前
AI报告编审解决方案加速降本增效:IA-Lab AI检测报告生成助手与IACheck重构报告成本结构
人工智能·重构
lulu12165440784 小时前
谷歌Gemma 4实战指南:Apache 2.0开源,移动端AI新时代来临
java·开发语言·人工智能·开源·apache·ai编程