英语 | 中文
knowlyr-gym
Gymnasium-Style Reinforcement Learning Framework for LLM Agent Training
MDP 形式化 · 三层过程奖励模型 · SFT / DPO / GRPO 策略优化
Formalized MDP environments, three-layer process reward, and complete policy optimization pipeline
  
 ](#components)    
摘要 · 问题陈述 · MDP配方 · 建筑 · 关键创新 · 组件 · 快速开始 · 生态系统 · 参考文献
______________________________________________________________________
摘要
knowlyr-gym 将 LLM tool-use agent 任务形式化为马尔可夫决策过程 $\\langle \\mathcal{S}, \\mathcal{A}, T, R, \\gamma \\rangle$,在 Gymnasium 兼容的环境协议上构建完整的强化学习训练框架。系统核心是三层过程奖励模型(规则确定性检测 → LLM-as-Judge 语义评分 → 人工校准),为每个 action 计算步骤级即时奖励 $r_t = R(s_t, a_t)$,而非仅评估最终结果。基于 scored trajectories,训练管线支持 SFT(行为克隆)、DPO(偏好对齐)、GRPO(在线策略优化)三种策略优化方法,并提供 observation masking、step-weighted loss、curriculum learning 等 6 项 Agent 长程任务增强。通过领域无关的抽象层 DomainProfile,框架可泛化至 coding、browser、conversation、engineering、advisory、discussion 等任意 Agent 领域。
knowlyr健身房 将LLM工具使用代理任务形式化为马尔可夫决策过程(MDP),并为环境交互、过程奖励计算和策略优化提供了一个模块化框架。该系统实现了一个与Gymnasium兼容的环境协议,该协议具有可组合的包装器、一个三层过程奖励模型(基于规则的+LLM作为判断+人工校准)以及一个支持SFT、DPO和GRPO的完整训练管道。通过与领域无关的抽象层(DomainProfile),它可以跨编码、浏览器、对话和自定义代理域进行推广。______________________________________________________________________
问题陈述
LLM Agent 训练面临三个结构性缺陷:缺少标准化环境协议 (标准化环境协议)缺少步骤级过程奖励 (步骤级过程奖励)、缺少领域泛化能力 (domain generalization)。现有框架普遍只关注 Agent 推理端,训练闭环依赖手工拼接,奖励信号粗糙且不可分解。
| 根本性问题 | 形式化定义 | 现有框架的局限 | Agent 的方法 |
|---|---|---|---|
| 环境协议碎片化 | |||
| Fragmented Env Protocol | Agent 与环境的交互接口不统一,复用成本 $\\propto$ 环境数量 | AgentGym / BrowserGym 各自定义接口,跨环境迁移需重写适配层 | Gymnasium 兼容协议:reset() / step() / close() + 注册表 + 可组合 Wrapper |
| 奖励信号粗糙 | |||
| Sparse Outcome Reward | 仅评估最终结果 $R_T$,中间步骤无信号 $\\forall t \ knowlyr-gym 不是又一个 Agent 推理框架。它是 LLM Agent 的训练基础设施——"在哪练、怎么评、如何优化",环境产出轨迹,奖励评估质量,训练器优化策略,三者通过标准化数据格式串联为闭环。 |
______________________________________________________________________
MDP配方
将 tool-use agent 任务建模为 MDP $\\langle \\mathcal{S}, \\mathcal{A}, T, R, \\gamma \\rangle$:
| 符号 | 定义 | 实现 | |
|---|---|---|---|
| $\\mathcal{S}$ | 状态空间(文本观察) | TimeStep.observation: str | |
| $\\mathcal{A}$ | 操作空间(工具调用) | {"tool": str, "params": dict} | |
| $T(s,a)$ | 过渡动态 | AgentEnv.step(action) → TimeStep | |
| $R(s,a)$ | 奖励函数 | RewardEngine --三层PRM | |
| $\\pi(a | s)$ | 策略 | LLM代理: observation → action |
| $\\gamma$ | 地平线 | MaxStepsWrapper (隐式截断) |
环境协议 借鉴 Gymnasium (Towers et al., 2024),并针对 LLM Agent 场景做出适配:动作空间为结构化 tool call(而非连续/离散向量),状态空间为自然语言文本,终止条件由 terminated (任务完成) 和 truncated (步数/超时截断) 双信号控制。
______________________________________________________________________
建筑
以 RL 训练循环为核心:策略(LLM)在环境中交互产生轨迹,经过程奖励模型评分后,构造训练数据集用于策略优化,优化后的策略再次进入环境采样。
graph LR
subgraph MDP["MDP Environment Layer"]
ENV["AgentEnv
reset() / step() / close()"]
TS["TimeStep
observation · reward
terminated · truncated"]
ENV --> TS
end
subgraph RL["RL Training Loop"]
PI["Policy π
(LLM Agent)"]
COL["Rollout
collect()"]
RM["Process Reward
Model (PRM)"]
EXP["Dataset
SFT / DPO / GRPO"]
OPT["Policy
Optimization"]
end
PI -->|action| ENV
TS -->|observation| PI
COL -->|trajectories| RM
RM -->|scored trajectories| EXP
EXP --> OPT
OPT -->|updated π| PI
ENV -.->|wrappers| COL
style MDP fill:#1a1a2e,color:#e0e0e0,stroke:#444
style RL fill:#0d1b2a,color:#e0e0e0,stroke:#444
style PI fill:#0969da,color:#fff,stroke:#0969da
style RM fill:#8b5cf6,color:#fff,stroke:#8b5cf6分层架构
| 层 | 模块 | 职责 |
|---|---|---|
| MDP协议 | AgentEnv · TimeStep · EnvWrapper · Registry | Gymnasium 兼容环境协议,注册表发现,可组合 Wrapper |
| 领域 | DomainProfile · 7 内置领域 | 声明式领域抽象:工具集、类别映射、评分维度权重 |
| 环境 | SandboxEnv · ConversationEnv · Docker 沙箱 | 5 个注册环境,coding / conversation / engineering / advisory / discussion |
| 轨迹 | AgentRecorder · 适配器注册表 | Agent 日志解析,多格式适配(OpenHands / SWE-agent / 自定义),标准化轨迹 |
| 奖励 | RewardEngine · Rubric · PreferenceBuilder | 三层 PRM + 多维度 Rubric 评分 + 偏好对构建 |
| 数据 | collect() · DatasetExporter · Pipeline · CAS · GDI | Rollout 采样,SFT / DPO / GRPO 格式导出,CAS 内容寻址去重,GDI 质量排名,端到端管线编排 |
| 训练 | SFTTrainer · DPOTrainer · GRPOTrainer | 三种策略优化 + 6 项 Agent 增强 + 评估与统计检验 |
| 推断 | AgentInference · Checkpoint | 推理桥:checkpoint 加载 → create_agent() → collect → train 闭环 |
______________________________________________________________________
关键创新
1.体育馆兼容环境协议
LLM Agent 环境缺乏统一接口——每个框架自行定义交互协议,环境复用成本高、Wrapper 不可组合。knowlyr-gym 实现完整的 Gymnasium 兼容协议,将 reset() / step() / close() 三方法模式扩展至 LLM 场景:
5 个注册环境:
| env_id | 类 | 域 | 终端条件 |
|---|---|---|---|
knowlyr/sandbox | SandboxEnv | 编码 | submit / finish |
knowlyr/conversation | ConversationEnv | 谈话 | respond |
knowlyr/engineering | ConversationEnv | 工程学 | submit / finish |
knowlyr/advisory | ConversationEnv | 咨询 | submit / finish |
knowlyr/discussion | ConversationEnv | 讨论 | respond / submit |
4 个可组合 Wrapper:
from knowlyrcore.wrappers import MaxStepsWrapper, TimeoutWrapper, RewardWrapper, RecorderWrapper
env = make("knowlyr/sandbox")
env = MaxStepsWrapper(env, max_steps=50) # horizon truncation
env = RewardWrapper(env, reward_fn=my_reward_fn) # step-level reward injection
env = RecorderWrapper(env, agent_name="my-agent") # trajectory recording
ts = env.reset(task=my_task)
while not ts.done:
action = agent(ts.observation)
ts = env.step(action)
trajectory = env.get_trajectory()自定义环境:
from knowlyrcore import AgentEnv, TimeStep, register, make
class MyEnv(AgentEnv):
domain = "my_domain"
def reset(self, *, task=None, seed=None) -> TimeStep:
return TimeStep(observation="ready")
def step(self, action: dict) -> TimeStep:
return TimeStep(observation="result", terminated=(action["tool"] == "submit"))
@property
def available_tools(self):
return ["observe", "act", "submit"]
register("my-project/my-env", MyEnv, domain="my_domain")
env = make("my-project/my-env")2.域名概况——域名不可知抽象
DomainProfile 声明式配置环境领域特征——工具集、工具类别、结果判定规则、评分维度权重。新增领域无需修改核心代码,只需定义一份 Profile:
| 领域 | 典型工具 | 应用 |
|---|---|---|
| 编程 | read_file, edit_file, bash, grep, submit | 代码代理(SWE台式) |
| 浏览器 | navigate, click, type_text, scroll, screenshot | Web自动化 |
| 对话 | respond, query_stats, send_message, web_search | 对话代理 |
| 工程 | read_file, grep, git, knowledge_base, bash | 代码审查、架构 |
| 咨询 | respond, knowledge_base, web_search, create_note | 专家咨询 |
| 讨论 | respond, knowledge_base, think | 多回合讨论 |
| 通用的 | (空--启发式回退) | 自定义域 |
3.三层流程奖励模型
与仅评估最终结果的 Outcome Reward Model (ORM) 不同,本系统实现步骤级 Process Reward Model (PRM),为每个 action 计算即时奖励 $r_t = R(s_t, a_t)$,三层架构逐层提升评估质量:
Layer 1: Rule-based (deterministic) Layer 2: LLM-as-Judge Layer 3: Human
┌─────────────────────────────────┐ ┌──────────────────────────┐ ┌──────────────┐
│ Redundancy detection │ │ Rubric-based scoring │ │ Calibration │
│ Regression detection │ → │ Multi-dimensional eval │ → │ via human │
│ Information utilization │ │ Semantic quality judge │ │ annotations │
│ Efficiency analysis │ │ (OpenAI / Anthropic API) │ │ │
└─────────────────────────────────┘ └──────────────────────────┘ └──────────────┘
Cost: ~0 Latency: I["AgentInference
from_pretrained()"]
I --> A["create_agent()"]
A --> C["collect()
n_episodes × env"]
C --> R["RewardEngine
score()"]
R --> E["DatasetExporter
SFT / DPO / GRPO"]
E --> T["Trainer
SFT / DPO / GRPO"]
T --> M
style M fill:#0969da,color:#fff,stroke:#0969da
style T fill:#0969da,color:#fff,stroke:#0969da
style I fill:#1a1a2e,color:#e0e0e0,stroke:#444
style A fill:#1a1a2e,color:#e0e0e0,stroke:#444
style C fill:#1a1a2e,color:#e0e0e0,stroke:#444
style R fill:#8b5cf6,color:#fff,stroke:#8b5cf6
style E fill:#1a1a2e,color:#e0e0e0,stroke:#444评估与统计检验:evaluate_agent() 和 compare_agents() 提供 Agent 级别评估,内置统计检验(无 scipy 依赖):
- 韦尔奇t检验 / 秩和检验 — 独立样本对比
- 配对t检验 — 同任务配对对比
- Bootstrap CI — 非参数置信区间
- 邦费罗尼校正 — 多重比较校正
- 排行榜 — 按 avg_reward 排序 + 显著性标注
______________________________________________________________________
组件
6 个独立 PyPI 包,对应 RL 系统各组件:
| 包 | RL角色 | 描述 | 测试 |
|---|---|---|---|
| knowlyr核心 | MDP协议 | AgentEnv · TimeStep · EnvWrapper · Registry · DomainProfile | 108 |
| knowlyr沙盒 | Environment | Docker 沙箱执行 · SandboxEnv · ConversationEnv | 101 |
| knowlyr录音机 | Trajectory Buffer | Agent 日志解析 · 标准化轨迹 · 适配器注册表 | 62 |
| 知识奖励 | Reward Model | 三层 PRM · Rubric 评分 · 偏好对构建 | 136 |
| knowlyr中心 | 推出和数据 | collect() 采样 · DatasetExporter · Pipeline 编排 · CAS 去重 · GDI 排名 | 158 |
| knowlyr教练 | Policy Optimization | SFT · DPO · GRPO · 评估 · 推理桥 | 206 |
各包独立安装、独立使用,无交叉依赖。Hub 通过可选依赖串联数据管线,Trainer 消费 Hub 导出的 JSONL。
______________________________________________________________________
快速开始
环境交互
from knowlyrcore import make
env = make("knowlyr/conversation")
ts = env.reset(task="帮用户查询订单状态")
while not ts.done:
action = my_agent(ts.observation) # π(a|s)
ts = env.step(action) # s', r, done
env.close()带奖励的轨迹收集
from trajectoryhub import collect, make_reward_fn
reward_fn = make_reward_fn(domain="coding") # 规则层 PRM
trajectories = collect(
"knowlyr/sandbox",
agent=my_agent,
n_episodes=20,
max_steps=30,
reward_fn=reward_fn,
)端到端训练循环
from agenttrainer import SFTConfig, AgentInference
from trajectoryhub import collect, make_reward_fn, DatasetExporter
# 1. Collect trajectories
trajectories = collect("knowlyr/conversation", agent=my_agent, n_episodes=100)
# 2. Export to training format
exporter = DatasetExporter(trajectories_dir="./trajectories.jsonl")
exporter.export_sft("./sft_train.jsonl")
# 3. Train policy
# knowlyr-trainer sft --train-file sft_train.jsonl --model Qwen/Qwen2.5-Coder-7B
# 4. Load updated policy → next iteration
inference = AgentInference.from_pretrained("./checkpoints/step-1000")
updated_agent = inference.create_agent(system_prompt="你是代码助手")
new_trajectories = collect("knowlyr/sandbox", agent=updated_agent, n_episodes=50)命令行界面
# Trajectory recording & reward scoring
knowlyr-recorder convert agent_log.jsonl -f openhands -o trajectory.json
knowlyr-reward score trajectory.json --domain coding
# Dataset export
knowlyr-hub export --format sft -t trajectories.jsonl -o sft_data.jsonl
knowlyr-hub export --format dpo -t trajectories.jsonl -p preferences.jsonl -o dpo_data.jsonl
# Policy optimization
knowlyr-trainer sft --train-file sft_data.jsonl --model Qwen/Qwen2.5-Coder-7B
knowlyr-trainer dpo --train-file dpo_data.jsonl --model ./output/sft/final --beta 0.1
knowlyr-trainer grpo --train-file grpo_data.jsonl --model ./output/sft/final______________________________________________________________________
安装
pip install knowlyr-hub[all] # 全部包按需安装
pip install knowlyr-core # MDP protocol
pip install knowlyr-sandbox # Environment
pip install knowlyr-recorder # Trajectory buffer
pip install knowlyr-reward # Reward model
pip install knowlyr-hub # Rollout & data
pip install knowlyr-trainer # Policy optimization
# Optional
pip install knowlyr-reward[llm] # LLM-as-Judge (Anthropic + OpenAI)
pip install knowlyr-trainer[peft] # LoRA fine-tuning
pip install knowlyr-trainer[wandb] # Weights & Biases logging______________________________________________________________________
发展
git clone https://github.com/liuxiaotong/knowlyr-gym.git
cd knowlyr-gym
make install-dev # 开发模式安装全部包
make test # 运行全部测试 (771 passed)
make test-integration # 跨包集成测试 (17 tests)
make lint # ruff check______________________________________________________________________
生态系统
Architecture Diagram
graph LR
Radar["Radar
Discovery"] --> Recipe["Recipe
Analysis"]
Recipe --> Synth["Synth
Generation"]
Recipe --> Label["Label
Annotation"]
Synth --> Check["Check
Quality"]
Label --> Check
Check --> Audit["Audit
Model Audit"]
Crew["Crew
Deliberation Engine"]
Agent["Agent
RL Framework"]
ID["ID
Identity Runtime"]
Crew -.->|能力定义| ID
ID -.->|身份 + 记忆| Crew
Crew -.->|轨迹 + 奖励| Agent
Agent -.->|优化策略| Crew
style Agent fill:#0969da,color:#fff,stroke:#0969da
style Crew fill:#2da44e,color:#fff,stroke:#2da44e
style ID fill:#8b5cf6,color:#fff,stroke:#8b5cf6
style Radar fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Recipe fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Synth fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Label fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Check fill:#1a1a2e,color:#e0e0e0,stroke:#444
style Audit fill:#1a1a2e,color:#e0e0e0,stroke:#444| 图层 | 项目 | 描述 | 回购 |
|---|---|---|---|
| 发现 | AI数据集雷达 | 数据集竞争情报、趋势分析 | |
| 分析 | DataRecipe | 逆向分析、Schema 提取、成本估算 | |
| 生产 | DataSynth / 恢复 | LLM 批量合成 / 轻量标注 | · |
| 质量 | 数据检查 | 规则验证、重复检测、分布分析 | |
| 审计 | 模型审计 | 蒸馏检测、模型指纹 | |
| 审议情况 | 船员 | 对抗式多智能体协商 · 持久记忆进化 · MCP 原生 | |
| 身份 | knowlyr id | 身份系统 + AI 员工运行时 | |
| 代理商培训 | knowlyr健身房 | Gymnasium 风格 RL 框架 · 过程奖励模型 · SFT/DPO/GRPO | You are here |
______________________________________________________________________
参考文献
- 体育馆 --Tower等人,2024年。 *Gymnasium:强化学习环境的标准界面。* arXiv:2407.17032
- 浏览器名称 -Drouin等人,2024年。 *WorkArena:Web代理解决常识性工作任务的能力有多强?* arXiv:2403.07718
- Agent健身房 -Xi等人,2024。 *AgentGym:在不同环境中进化基于大型语言模型的代理。* arXiv:2406.04151
- SWE长椅 --Jimenez等人,2024年。 *SWE bench:语言模型能解决现实世界中的GitHub问题吗?* arXiv:2310.06770
- 流程奖励模型 --Lightman等人,2023年。 *让我们一步一步地验证。* arXiv:2305.20050
- 直接产品利润 --Rafailov等人,2023年。 *直接偏好优化:你的语言模型实际上是一个奖励模型。* arXiv:2305.18290
- GRPO --邵等,2024。 *DeepSeekMath:在开放语言模型中突破数学推理的极限。* arXiv:2402.03300
- 法学硕士作为法官 --郑等,2023。 *与MT Bench和Chatbot Arena一起评判LLM作为法官。* arXiv:2306.05685
______________________________________________________________________
许可证
______________________________________________________________________
knowlyr — gymnasium-style RL framework for LLM agent training
