尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (7)--- Policy Serving

强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (7)--- Policy Serving
📅 发布时间:2026/7/22 10:08:12

0x00 概要
本系列的目的是:借着对 OpenClaw-RL 源码的学习,来梳理强化学习的一些相关概念和思想。所以,会有一些基础知识、扩展和发散,OpenClaw-RL 只是一个切入点。而且,因为整篇系列是一个整体,所以有些概念的解读/学习会在不同的文章中出现,还请大家谅解。

OpenClaw-RL 是一个用于在线强化学习(Online RL)的框架,专门针对智能体工具使用场景。它通过从环境反馈中提取过程奖励信号来训练语言模型,支持三种主要模式:

openclaw-rl:基于二元奖励的强化学习(Binary RL / GRPO)
openclaw-opd:基于后见之明提示的在线策略蒸馏(On-Policy Distillation, OPD)
openclaw-combine:联合方法,在同一 PPO 更新中同时利用 RL reward 和 OPD teacher signal
framework

OpenClawAPIServer是OpenClaw-RL系统中的核心组件,它充当OpenClaw环境与 SGLang推理服务之间的代理服务器,负责收集训练数据、计算奖励并提交样本给强化学习训练流程。当然,也可以认为OpenClawAPIServer即是 Proxy Server,也是 Policy Serving。

0x01 基础
1.1 架构
我们回顾 OpenClaw-RL 的系统架构图如下:

整体架构

1.2 OpenClawAPIServer 的定位
OpenClawAPIServer 这个名字其实不准确,更准确的命名应该是:OpenClawProxyServer 或OpenClawTrainingPipeline—它是连接Policy Serving、Reward Judging 和Policy Training 三个功能层的协调器(Orchestrator),而非其中任何一层的实现体。

职责
以 OpenClawAPIServer 为例,它独自承担了几个职责:

职责 属于哪个组件 具体代码
HTTP 代理(转发用户请求) Policy Serving(接口层) httpx.post(sglang_chat_url)
拦截 response + logprobs Policy Serving(数据采集) _extract_logprobs_from_chat_response()
PRM 评分 Reward Judging _fire_prm_scoring() / _opd_evaluate()
构造训练 Sample 训练数据管道 _submit_turn_sample()
开关控制(503) 训练-服务调度 submission_enabled.is_set()
类比
OpenClawAPIServer = “前台+服务员+数据记录员",不是“厨房"(Policy)本身。

类比 对应组件
餐厅服务员(接单、传菜) OpenClawAPIServer
厨房(真正做菜) SGLang GPU 4-5(Policy 推理)
食品检验员(给菜打分) SGLang GPU 6-7(PRM/Judge)
餐厅管理系统(记录点单数据) output_queue → Slime
1.3 继承关系 & 方法覆盖
OpenClawAPIServer、OpenClawOPDAPIServer 和 OpenClawCombineAPIServer 的关系如下:

OpenClawAPIServer (Binary RL 基类, 独立)
├─ _submit_turn_sample() score->loss_mask, at-least-one
├─ _maybe_submit_ready_samples() 检查 PRM task done
└─ _fire_prm_scoring() 触发 PRM 异步

OpenClawOPDAPIServer (独立类, 不继承 OpenClawAPIServer)
├─ _submit_turn_sample() 独立实现
├─ _maybe_submit_ready_samples() 改用 opd_evaluate task
├─ _opd_evaluate() hint judge + teacher lp 计算
├─ _fire_opd_task() 触发 OPD 异步评估
└─ _compute_teacher_log_probs() / _compute_teacher_topk_logprobs()

OpenClawCombineAPIServer extends OpenClawOPDAPIServer
├─ _submit_turn_sample() ← 覆盖: OPD/OPD+RL 路径
├─ _submit_rl_turn_sample() ← 新增: RL-only 路径 (teacher=rollout)
└─ _maybe_submit_ready_samples() ← 覆盖: 3路分发逻辑
1.4 真实策略服务器
OpenClawAPIServer 的技术栈:

FastAPI:Web框架(异步)
Uvicorn:ASGI 服务器(基于uvloop,高并发)
httpx/aiohttp:异步 HTTP 客户端(调用 SGLang和PRM)
真正的Policy Server是SGLang(GPU4-5)

Policy=Qwen3-4B模型权重 (注: RL server 默认 SERVED_MODEL_NAME=“qwen3-8b”, OPD server 默认=“qwen3-4b”, 实际部署可通过环境变量覆盖)
Policy Server=SGLang推理引擎(监听sglang_router_ip:sglang_router_port)
OpenClawAPIServer不运行模型推理,它只是SGLang前面的一层拦截代理。

用户 → OpenClawAPIServer(FastAPI, Proxy) → SGLang(GPU4-5)← 真正的Policy Server
↓ 拦截
SGLang PRM (GPU 6-7) ← Reward Judge(评分)
↓
output_queue
↓
Slime ← Policy Training的数据入口
请求处理调用链
HTTP 入口:chat_completions()
回合判断:_handle_main_turn()/_handle_side_turn()
SGLang 转发:forward_to_sglang()
PRM 触发:_fire_prm_scoring() →_prm_evaluate()
样本提交:maybe_submit_ready_samples()→output_queue.put()
样本构建调用
数据缓冲:_buffer_record()→存入_pending_records
状态刷新:flush_pending_record()→添加下一状态
样本构建:_submit_turn_sample()→创建Sample 对象
FastAPI Proxy 如何转发到 SGLang
OpenClawAPIServer 通过 FastAPI Proxy 实现了对外的入口,内部通过 SlimeRouter 路由到实际的 SGLang 推理引擎, 实现了接入层与推理层的解耦。完整端口与中间层架构如下图所示。

7-中间层架构

端口关系总结 (run_qwen3_4b_openclaw_rl.sh 配置):

PORT=30000
-> FastAPI Proxy 监听端口 (外部可见, OpenClaw App 连接此处)

args.sglang_router_ip/port
-> Slime 自动分配, 传给 API Server 作为 sglang_chat_url 的目标
-> 指向 SlimeRouter (内部负载均衡层)

args.prm_router_ip/port
-> PRM Engine 的 /generate 地址 (GPU 6-7)
-> API Server 用于发送评分请求

1.5 对比
标准 RL Policy Serving:
rollout时:

SGLang只服务训练系统内部
批量生成→批量打分→批量训练
无外部访问
架构:

[训练系统] ⇆ [SGLang] 内部通信
OpenClaw Policy Serving:
rollout 时,SGLang同时服务:

实用户(通过OpenClawApp)
PRM评分(内部调用)
Teacher forward pass(OPD 时)
架构:

[用户手机] → [FastAPI Proxy] → [SGLang] 外部流量
[PRM judge] → [SGLang] 内部调用
[训练系统] ← [Proxy] 数据管道
工程挑战
这导致了独特的工程挑战:

标准 RL 不需要处理的问题: OpenClaw 需要处理:
───────────────────── ────────────────────────
❌ API 认证 ✅ SGLANG_API_KEY
❌ 并发控制 ✅ semaphore
❌ 503 暂停 ✅ submission_enabled
❌ session 管理 ✅ X-Session-Id
❌ 流式传输 ✅ SSE streaming
❌ 用户体验 ✅ 低延迟响应
❌ 数据筛选 ✅ main vs side turn
❌ 超时处理 ✅ session timeout
总结:OpenClaw 的根本范式转变
标准 RL: 训练系统是 “主人” → 它决定问什么、答几次、怎么评分

OpenClaw: 训练系统是 “寄生者” → 它寄生在真实对话上,被动收集数据

这导致OpenClaw-RL Serving 如下特点:

Rollout = 被动等待(不是主动生成)
Environment = 真实用户(不是模拟器)
PRM = 即用即评(不是预训练 RM)
Policy = 对外服务(不是内部推理)
一切设计选择都源于这个范式转变。

0x02 详细功能梳理
OpenClawAPIServer 本质上是一个智能代理,它不仅转发请求,还负责收集强化学习所需的训练数据,通过PRM评估助手响应质量,并将高质量的数据提交给训练流程。

OpenClawOPDAPIServer 则是OPD模式的专用API服务器。

2.1 OpenClawAPIServer

相关新闻

  • 2026深圳Herms爱马仕闲置包包高价正规回收哪家靠谱? - 生活时报
  • 暑假集训__cdq分治
  • 苹果手机维修的“信任缺口”:2026年长沙白苹果/无法开机**售后中心深度测评 - 苹果手机电脑维修

最新新闻

  • HTTP 404错误解析与优化实践指南
  • 毕业生必看!档案存放 +管理全指南 - 慧办好
  • iPhone查找功能全攻略:从设置到应急响应
  • AI Agent开发指南:从原理到实践应用
  • TI TM4C1292NCZAD ARM Cortex-M4F MCU:工业网关与实时控制开发实战
  • 私有云存储速度到底能跑多快?

日新闻

  • AI云原生实战05-金融AI上云最难的不是技术,是“不出事“——TCE银行风控架构拆解
  • 2026年GEOSEO优化公司选型深度测评:五大硬核标准严选,这六家重塑搜索增长新格局 - 品牌前沿专家
  • **核验!2026年7月卡地亚香港**售后网点地址及服务电话公告 - 卡地亚服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号