OpenEnv
OpenEnv 是一个专为智能体强化学习(RL)后训练打造的端到端框架,旨在简化隔离执行环境的创建、部署与使用。它通过提供类似 Gymnasium 的标准简洁接口(如 step()、reset()),让研究人员和开发者能够轻松地将大语言模型接入各种仿真环境中进行训练,例如让模型学习玩黑杰克游戏或操作工具。
在 AI 智能体开发中,构建安全、独立且易于集成的测试环境往往耗时费力。OpenEnv 有效解决了这一痛点,它不仅统一了环境与训练算法之间的交互标准,还允许环境创作者利用 Docker 和 HTTP 等成熟技术,快速构建并部署隔离性强、安全性高的复杂环境。这意味着用户无需重复造轮子,即可在不同平台间无缝切换和使用丰富的现成环境。
该工具特别适合从事强化学习算法研究的研究人员、需要构建特定训练场景的 AI 开发者,以及希望将大模型应用于具体任务执行的工程师。其独特的技术亮点在于同时支持异步和同步编程模式,并拥有广泛的生态兼容性,已无缝集成至 PyTorch TorchForge、TRL、Unsloth 等多个主流框架及云平台。无论是从零开始的新手教程,还是复杂的生产级部署,OpenEnv 都能提供流畅的开发体验,助力智能体技术的高效迭代。
使用场景
某 AI 实验室团队正致力于利用强化学习(RL)训练大语言模型,使其能够自主调用工具完成复杂的代码调试任务。
没有 OpenEnv 时
- 环境搭建繁琐:每次实验前需手动配置隔离的 Docker 容器和依赖库,耗时数小时且容易因环境差异导致复现失败。
- 接口标准混乱:不同的仿真环境(如 Linux 终端、浏览器操作)缺乏统一交互协议,研究人员需为每个环境编写特定的适配代码。
- 异步支持缺失:现有框架难以高效处理 Agent 与环境的异步交互,导致训练循环阻塞,GPU 资源利用率低下。
- 部署门槛高:将自定义环境部署到云端或共享给团队成员时,缺乏标准化的打包和访问机制,协作效率极低。
使用 OpenEnv 后
- 一键部署隔离环境:通过 OpenEnv 标准 API 和 Docker 封装,团队可在几分钟内启动安全、隔离的执行环境,彻底消除“在我机器上能跑”的问题。
- 统一 Gymnasium 风格接口:无论底层是代码解释器还是网页浏览器,均通过标准的
reset()和step()接口交互,研究人员可无缝切换不同训练场景。 - 原生异步并发支持:OpenEnv 原生支持 Python
async/await,让 Agent 在等待环境反馈时不阻塞主线程,显著提升了大规模并行训练的效率。 - 标准化云端接入:借助 HTTP 协议和预置客户端,团队成员可直接连接部署在 Hugging Face Spaces 或 Lightning AI 上的环境,实现真正的零配置协作。
OpenEnv 通过标准化代理执行环境的交互协议,将原本耗时的环境工程难题转化为简单的 API 调用,让研究人员能专注于强化学习算法本身的创新。
运行环境要求
- Linux
- macOS
未说明 (框架本身基于 API 通信,具体 GPU 需求取决于运行的 RL 训练框架如 torchforge 或 TRL,以及所加载的模型大小)
未说明 (取决于容器化环境和加载的模型大小)

快速开始
OpenEnv: 智体执行环境
一个用于创建、部署和使用隔离执行环境的端到端框架,专为智体强化学习训练设计,基于 Gymnasium 风格的简单 API 构建。
🚀 精选示例: 使用 torchforge(PyTorch 的智体强化学习框架)训练大语言模型玩二十一点:examples/grpo_blackjack/
🔥 从零到英雄教程: 来自我们 GPU 模式 讲座及其他黑客马拉松的端到端教程。
快速入门
安装 OpenEnv 核心包:
pip install openenv-core
安装一个环境客户端(例如 Echo):
pip install git+https://huggingface.co/spaces/openenv/echo_env
然后使用该环境:
import asyncio
from echo_env import CallToolAction, EchoEnv
async def main():
# 连接到正在运行的空间(异步上下文管理器)
async with EchoEnv(base_url="https://openenv-echo-env.hf.space") as client:
# 重置环境
result = await client.reset()
print(result.observation.echoed_message) # "Echo environment ready!"
# 发送消息
result = await client.step(
CallToolAction(
tool_name="echo_message",
arguments={"message": "Hello, World!"},
)
)
print(result.observation.result) # "Hello, World!"
print(result.reward)
asyncio.run(main())
同步使用同样支持,只需通过 .sync() 包装器即可:
from echo_env import CallToolAction, EchoEnv
# 使用 .sync() 进行同步上下文管理
with EchoEnv(base_url="https://openenv-echo-env.hf.space").sync() as client:
result = client.reset()
result = client.step(
CallToolAction(
tool_name="echo_message",
arguments={"message": "Hello, World!"},
)
)
print(result.observation.result)
如需详细的快速入门指南,请查看 文档页面。
OpenEnv 在合作平台上的应用:
概述
OpenEnv 提供了一套标准接口,允许用户通过简单的 Gymnasium 风格 API——step()、reset()、state()——与智体执行环境进行交互。研究人员和强化学习框架开发者可以利用这些简单 API,在强化学习训练循环中与环境互动。
除了便于研究者和框架开发者使用外,我们还为环境创建者提供了工具,帮助他们构建更丰富的环境,并通过 HTTP 等常见协议发布,同时采用 Docker 等标准化技术进行封装。环境创建者可以借助 OpenEnv 框架,打造隔离、安全且易于部署和使用的环境。
OpenEnv 命令行工具 (openenv) 提供了初始化新环境并将其部署到 Hugging Face Spaces 的命令。
⚠️ 早期开发警告 OpenEnv 目前仍处于实验阶段。您可能会遇到一些 bug、功能不完整的情况,以及未来版本中可能发生变化的 API。项目欢迎提交 bug 修复,但为了确保协调一致,建议在开始工作之前先讨论任何重大变更。推荐您在问题追踪器中表明您的贡献意向,可以通过新建问题或认领现有问题来实现。
RFC 文档
以下是 OpenEnv 当前及历史上的 RFC 列表。RFC 是针对重大更改或功能的提案。请查阅并积极参与贡献!
- RFC 001:基础 API 和接口规范
- RFC 002:智能体发现环境工具的能力
- RFC 003:添加 MCP(模型上下文协议)支持
- RFC 004:为基于轨迹的评分添加延迟奖励支持
- RFC 005:集成智体 Harness
架构
组件概览
┌─────────────────────────────────────────────────────────┐
│ 客户端应用 │
│ ┌────────────────┐ ┌──────────────────┐ │
│ │ EchoEnv │ │ CodingEnv │ │
│ │ (环境客户端) │ │ (环境客户端) │ │
│ └────────┬───────┘ └────────┬─────────┘ │
└───────────┼───────────────────────────────┼─────────────┘
│ WebSocket │ WebSocket
│ (重置、步骤、状态) │
┌───────────▼───────────────────────────────▼─────────────┐
│ Docker 容器(隔离) │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ FastAPI 服务器 │ │ FastAPI 服务器 │ │
│ │ EchoEnvironment │ │ PythonCodeActEnv │ │
│ │ (环境基础) │ │ (环境基础) │ │
│ └──────────────────────┘ └──────────────────────┘ │
└─────────────────────────────────────────────────────────┘
核心组件
1. Web 界面
OpenEnv 内置了一个用于交互式环境探索和调试的 Web 界面。该 Web 界面提供以下功能:
- 双面板布局:左侧为 HumanAgent 交互,右侧为状态观测
- 实时更新:基于 WebSocket 的实时更新,无需页面刷新
- 动态表单:根据环境的 Action 类型自动生成操作表单
- 操作历史:完整记录所有执行的操作及其结果
Web 界面会根据环境变量进行条件性启用:
- 本地开发:默认禁用,以实现轻量级开发
- 手动覆盖:通过设置
ENABLE_WEB_INTERFACE=true来启用
使用 Web 界面的方法如下:
from openenv.core.env_server import create_web_interface_app
from your_env.models import YourAction, YourObservation
from your_env.server.your_environment import YourEnvironment
env = YourEnvironment()
app = create_web_interface_app(env, YourAction, YourObservation)
启用后,在浏览器中打开 http://localhost:8000/web 即可与环境进行交互。
2. 环境(服务器端)
用于实现环境逻辑的基类:
reset():初始化新 episode,返回初始Observationstep(action):执行一个Action,返回结果Observationstate():访问 episode 元数据(包含State、episode_id、step_count 等)
3. EnvClient(客户端)
用于环境通信的基类:
- 默认异步:所有操作均使用
async with和await - 同步包装器:调用
.sync()可获得用于同步使用的SyncEnvClient - 处理与环境服务器的 WebSocket 连接
- 包含在本地启动对应环境 Docker 容器的工具
- 类型安全的操作/观测解析
4. 容器提供商
负责管理容器部署:
LocalDockerProvider:在本地 Docker 守护进程中运行容器KubernetesProvider:未来支持部署到 K8s 集群
5. 模型
类型安全的数据结构:
Action:环境动作的基类Observation:环境观测的基类State:episode 状态跟踪StepResult:结合观测、奖励和完成标志
项目结构
针对环境创建者
使用 CLI 快速搭建新环境:
openenv init my_env
这将创建如下结构:
my_env/
├── .dockerignore # Docker 构建排除文件
├── __init__.py # 导出 YourAction、YourObservation、YourEnv
├── models.py # 定义 Action、Observation、State 数据类
├── client.py # 实现 YourEnv(EnvClient)
├── README.md # 记录环境文档
├── openenv.yaml # 环境清单文件
├── pyproject.toml # 依赖项和包配置
├── outputs/ # 运行时输出(日志、评估) - 被 git 忽略
│ ├── logs/
│ └── evals/
└── server/
├── your_environment.py # 实现 YourEnvironment(Environment)
├── app.py # 创建 FastAPI 应用
├── requirements.txt # Docker 构建所需的依赖项(可自动生成)
└── Dockerfile # 定义容器镜像
依赖管理
OpenEnv 使用 pyproject.toml 作为主要的依赖规范:
- 环境级别的
pyproject.toml:每个环境定义自己的依赖 - 根级别的
pyproject.toml:包含共享的核心依赖(fastapi、pydantic、uvicorn) - 服务器的
requirements.txt:可从pyproject.toml自动生成,用于 Docker 构建
开发工作流:
# 以可编辑模式安装环境
cd my_env
pip install -e .
# 或使用 uv(更快)
uv pip install -e .
# 在本地无 Docker 运行服务器
uv run server --host 0.0.0.0 --port 8000
优势:
- ✅ 客户端扩展:可在本地修改客户端类,无需更改仓库
- ✅ 更好的依赖管理:清晰分离各个环境
- ✅ 灵活的工作流程:可根据不同场景使用 pip、uv 或 Docker
- ✅ CI/CD 就绪:自动化依赖生成和验证
有关构建环境的完整指南,请参阅 envs/README.md。
针对环境使用者
使用环境的步骤如下:
- 安装客户端:
pip install git+https://huggingface.co/spaces/openenv/echo-env - 导入:
from echo_env import CallToolAction, EchoEnv - 使用异步(推荐)或同步 API:
异步(推荐):
async with EchoEnv(base_url="...") as client:
result = await client.reset()
result = await client.step(action)
同步(通过 .sync() 包装器):
with EchoEnv(base_url="...").sync() as client:
result = client.reset()
result = client.step(action)
示例脚本请参见 examples/ 目录。
CLI 命令
OpenEnv 的 CLI 提供了用于管理环境的命令:
openenv init <env_name>:从模板初始化新环境openenv push [--repo-id <repo>] [--private]:将环境部署到 Hugging Face Spaces
快速入门
# 创建新环境
openenv init my_game_env
# 部署到 Hugging Face(如需,会提示登录)
cd my_game_env
openenv push
详细选项请参考:openenv init --help 和 openenv push --help。
设计原则
- 关注点分离:清晰的客户端-服务器边界
- 类型安全:强类型的动作、观测和状态
- 容器隔离:每个环境运行在独立的容器中
- 简单 API:最小化、直观的接口
开发
安装
# 克隆仓库
git clone https://github.com/meta-pytorch/OpenEnv.git
cd OpenEnv
# 以可编辑模式安装核心包
pip install -e .
# 或使用 uv(更快)
uv pip install -e .
运行测试
OpenEnv 采用模块化的依赖结构:核心包非常精简,而每个环境都有自己的依赖。这意味着部分测试需要特定于环境的包。
# 安装 pytest(运行测试所需)
uv pip install pytest
# 运行所有测试(跳过缺少依赖的测试)
PYTHONPATH=src:envs uv run pytest tests/ -v --tb=short
# 运行特定测试文件
PYTHONPATH=src:envs uv run pytest tests/envs/test_echo_environment.py -v
若要运行环境特定的测试,请先安装该环境的依赖:
# 示例:安装 coding_env 及其开发依赖(包括 smolagents + pytest)
uv pip install -e "envs/coding_env[dev]"
# 然后运行 coding_env 测试
PYTHONPATH=src:envs uv run pytest tests/envs/test_python_codeact_rewards.py -v
如果未安装所需依赖,测试将自动跳过。
要求
- Python 3.10+
- Docker Desktop 或 Docker 引擎
- FastAPI ≥ 0.104.0
- Uvicorn ≥ 0.24.0
- Requests ≥ 2.25.0
- 环境特定的依赖(例如,coding_env 需要 smolagents)
支持的强化学习工具
本项目的目标是支持广泛的开源和闭源工具,以帮助规范代理式强化学习社区。如果您有一个支持 OpenEnv 环境的项目,请提交一个 Pull Request,添加您的工具名称以及指向您文档的链接。
torchforge
请参阅 GRPO BlackJack 训练示例:examples/grpo_blackjack/
TRL
请参阅 TRL 示例,了解如何将 OpenEnv 环境与 GRPO 训练集成。
Unsloth
请参阅基于 gpt-oss 的 2048 游戏示例:Colab 笔记本
SkyRL
请参阅 SkyRL 示例,了解如何使用 SkyRL 在 OpenEnv 环境上进行训练。
ART
请参阅 ART 示例,了解如何使用 OpenEnv 环境通过 ART 训练模型。
Oumi
请参阅 Oumi 示例,了解如何使用 OpenEnv 环境通过 Oumi 训练模型。
示例环境
| 环境 | 描述 |
|---|---|
| Echo 环境 | 将带有元数据的消息原样回显。非常适合测试 HTTP 服务器基础设施、学习框架基础知识以及验证容器部署。 |
| Coding 环境 | 通过 smolagents 进行沙箱化的 Python 代码执行。捕获 stdout/stderr/退出码,支持持久化的剧集上下文,并提供详细的错误处理。 |
| Chess 环境 | 拥有可配置对手且完全支持规则的国际象棋强化学习环境。 |
| Atari 环境 | 经典的街机学习环境任务,用于强化学习基准测试。 |
| FinRL 环境 | 金融市场模拟,用于算法交易实验。 |
请在 meta-pytorch.org/OpenEnv/environments 浏览完整的社区环境目录。
社区支持与致谢
这是一个开放且以社区为中心的项目。如果您希望在此处添加您的名字,请提交一个 Pull Request,并标记 @jspisak 进行审核。非常感谢!!
支持者包括:Meta-PyTorch、Hugging Face、Scaler AI Labs、Patronus AI、Surge AI、LastMile AI、Unsloth AI、Reflection AI、vLLM、SkyRL(UC-Berkeley)、LightningAI、Axolotl AI、斯坦福规模化智能实验室、Mithril、OpenMined、Fleet AI、Halluminate、Turing、Scale AI、Scorecard……
同时,我们也想感谢 Farama Foundation 团队,因为 OpenEnv API 在很大程度上受到了贵团队在 Gymnasium 上所做工作的启发。干杯!
许可证
BSD 3-Clause 许可证(详见 LICENSE 文件)
版本历史
v0.2.32026/03/28v0.2.22026/03/20v0.2.12026/02/04相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。