[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-meta-pytorch--OpenEnv":3,"tool-meta-pytorch--OpenEnv":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160411,2,"2026-04-18T23:33:24",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":106,"forks":107,"last_commit_at":108,"license":109,"difficulty_score":32,"env_os":110,"env_gpu":111,"env_ram":112,"env_deps":113,"category_tags":123,"github_topics":78,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":124,"updated_at":125,"faqs":126,"releases":127},9420,"meta-pytorch\u002FOpenEnv","OpenEnv","An interface library for RL post training with environments. ","OpenEnv 是一个专为智能体强化学习（RL）后训练打造的端到端框架，旨在简化隔离执行环境的创建、部署与使用。它通过提供类似 Gymnasium 的标准简洁接口（如 `step()`、`reset()`），让研究人员和开发者能够轻松地将大语言模型接入各种仿真环境中进行训练，例如让模型学习玩黑杰克游戏或操作工具。\n\n在 AI 智能体开发中，构建安全、独立且易于集成的测试环境往往耗时费力。OpenEnv 有效解决了这一痛点，它不仅统一了环境与训练算法之间的交互标准，还允许环境创作者利用 Docker 和 HTTP 等成熟技术，快速构建并部署隔离性强、安全性高的复杂环境。这意味着用户无需重复造轮子，即可在不同平台间无缝切换和使用丰富的现成环境。\n\n该工具特别适合从事强化学习算法研究的研究人员、需要构建特定训练场景的 AI 开发者，以及希望将大模型应用于具体任务执行的工程师。其独特的技术亮点在于同时支持异步和同步编程模式，并拥有广泛的生态兼容性，已无缝集成至 PyTorch TorchForge、TRL、Unsloth 等多个主流框架及云平台。无论是从零开始的新手教程，还是复杂的生产级部署，","OpenEnv 是一个专为智能体强化学习（RL）后训练打造的端到端框架，旨在简化隔离执行环境的创建、部署与使用。它通过提供类似 Gymnasium 的标准简洁接口（如 `step()`、`reset()`），让研究人员和开发者能够轻松地将大语言模型接入各种仿真环境中进行训练，例如让模型学习玩黑杰克游戏或操作工具。\n\n在 AI 智能体开发中，构建安全、独立且易于集成的测试环境往往耗时费力。OpenEnv 有效解决了这一痛点，它不仅统一了环境与训练算法之间的交互标准，还允许环境创作者利用 Docker 和 HTTP 等成熟技术，快速构建并部署隔离性强、安全性高的复杂环境。这意味着用户无需重复造轮子，即可在不同平台间无缝切换和使用丰富的现成环境。\n\n该工具特别适合从事强化学习算法研究的研究人员、需要构建特定训练场景的 AI 开发者，以及希望将大模型应用于具体任务执行的工程师。其独特的技术亮点在于同时支持异步和同步编程模式，并拥有广泛的生态兼容性，已无缝集成至 PyTorch TorchForge、TRL、Unsloth 等多个主流框架及云平台。无论是从零开始的新手教程，还是复杂的生产级部署，OpenEnv 都能提供流畅的开发体验，助力智能体技术的高效迭代。","# \u003Cimg width=\"35\" height=\"35\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeta-pytorch_OpenEnv_readme_431c3c7870e5.png\" \u002F> OpenEnv: Agentic Execution Environments\n\nAn e2e framework for creating, deploying and using isolated execution environments for agentic RL training, built using Gymnasium style simple APIs.\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fopenenv-core?color=blue)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fopenenv-core\u002F)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-OpenEnv-7289da?style=flat&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FYsTYBh6PD9)\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fmeta-pytorch\u002FOpenEnv\u002Fblob\u002Fmain\u002Fexamples\u002FOpenEnv_Tutorial.ipynb)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-Explore-blue?logo=readthedocs&logoColor=white)](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002F)\n\n---\n\n**🚀 Featured Example:** Train LLMs to play BlackJack using [torchforge](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002Ftorchforge) (PyTorch's agentic RL framework): [`examples\u002Fgrpo_blackjack\u002F`](examples\u002Fgrpo_blackjack\u002F)\n\n**🔥 Zero to Hero Tutorial:** End to end tutorial from our [GPU Mode](tutorial\u002FREADME.md) lecture and other hackathons.\n\n## Quick Start\n\nInstall the OpenEnv core package:\n\n```bash\npip install openenv-core\n```\n\nInstall an environment client (e.g., Echo):\n\n```bash\npip install git+https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fopenenv\u002Fecho_env\n```\n\nThen use the environment:\n\n```python\nimport asyncio\nfrom echo_env import CallToolAction, EchoEnv\n\nasync def main():\n    # Connect to a running Space (async context manager)\n    async with EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\") as client:\n        # Reset the environment\n        result = await client.reset()\n        print(result.observation.echoed_message)  # \"Echo environment ready!\"\n\n        # Send messages\n        result = await client.step(\n            CallToolAction(\n                tool_name=\"echo_message\",\n                arguments={\"message\": \"Hello, World!\"},\n            )\n        )\n        print(result.observation.result)  # \"Hello, World!\"\n        print(result.reward)\n\nasyncio.run(main())\n```\n\n**Synchronous usage** is also supported via the `.sync()` wrapper:\n\n```python\nfrom echo_env import CallToolAction, EchoEnv\n\n# Use .sync() for synchronous context manager\nwith EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\").sync() as client:\n    result = client.reset()\n    result = client.step(\n        CallToolAction(\n            tool_name=\"echo_message\",\n            arguments={\"message\": \"Hello, World!\"},\n        )\n    )\n    print(result.observation.result)\n```\n\nFor a detailed quick start, check out the [docs page](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002Fauto_getting_started\u002Findex.html).\n\n## OpenEnv on partner platforms:\n\n- [Lightning AI Studio](https:\u002F\u002Flightning.ai\u002Fenvironments?section=featured)\n- [TRL example](https:\u002F\u002Fhuggingface.co\u002Fdocs\u002Ftrl\u002Fopenenv)\n- [Unsloth Google Colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Funslothai\u002Fnotebooks\u002Fblob\u002Fmain\u002Fnb\u002FOpenEnv_gpt_oss_(20B)_Reinforcement_Learning_2048_Game.ipynb)\n- [ART example](https:\u002F\u002Fart.openpipe.ai\u002Fintegrations\u002Fopenenv-integration)\n- [Oumi example](https:\u002F\u002Fgithub.com\u002Foumi-ai\u002Foumi\u002Fblob\u002Fmain\u002Fnotebooks\u002FOumi%20-%20OpenEnv%20GRPO%20with%20trl.ipynb)\n\n## Overview\n\nOpenEnv provides a standard for interacting with agentic execution environments via simple Gymnasium style APIs - `step()`, `reset()`, `state()`. Users of agentic execution environments can interact with the environment during RL training loops using these simple APIs.\n\nIn addition to making it easier for researchers and RL framework writers, we also provide tools for environment creators making it easier for them to create richer environments and make them available over familiar protocols like HTTP and packaged using canonical technologies like docker. Environment creators can use the OpenEnv framework to create environments that are isolated, secure, and easy to deploy and use.\n\nThe OpenEnv CLI (`openenv`) provides commands to initialize new environments and deploy them to Hugging Face Spaces.\n\n> ⚠️ **Early Development Warning** OpenEnv is currently in an experimental\n> stage. You should expect bugs, incomplete features, and APIs that may change\n> in future versions. The project welcomes bugfixes, but to make sure things are\n> well coordinated you should discuss any significant change before starting the\n> work. It's recommended that you signal your intention to contribute in the\n> issue tracker, either by filing a new issue or by claiming an existing one.\n\n### RFCs\n\nBelow is a list of active and historical RFCs for OpenEnv. RFCs are proposals for major changes or features. Please review and contribute!\n\n- [RFC 001: Baseline API and Interface Specifications](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F26)\n- [RFC 002: Discoverability of environment tools by agents](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F32)\n- [RFC 003: Add MCP (Model Context Protocol) support](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F224)\n- [RFC 004: Add delayed rewards support for trajectory-based scoring](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F337)\n- [RFC 005: Agentic Harness Integration](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F387)\n\n## Architecture\n\n### Component Overview\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                    Client Application                   │\n│  ┌────────────────┐              ┌──────────────────┐   │\n│  │  EchoEnv       │              │  CodingEnv       │   │\n│  │  (EnvClient)   │              │   (EnvClient)    │   │\n│  └────────┬───────┘              └────────┬─────────┘   │\n└───────────┼───────────────────────────────┼─────────────┘\n            │ WebSocket                     │ WebSocket\n            │ (reset, step, state)          │\n┌───────────▼───────────────────────────────▼─────────────┐\n│              Docker Containers (Isolated)               │\n│  ┌──────────────────────┐    ┌──────────────────────┐   │\n│  │ FastAPI Server       │    │ FastAPI Server       │   │\n│  │   EchoEnvironment    │    │ PythonCodeActEnv     │   │\n│  │ (Environment base)   │    │ (Environment base)   │   │\n│  └──────────────────────┘    └──────────────────────┘   │\n└─────────────────────────────────────────────────────────┘\n```\n\n### Core Components\n\n#### 1. Web Interface\n\nOpenEnv includes a built-in web interface for interactive environment exploration and debugging. The web interface provides:\n\n- **Two-Pane Layout**: HumanAgent interaction on the left, state observation on the right\n- **Real-time Updates**: WebSocket-based live updates without page refresh\n- **Dynamic Forms**: Automatically generated action forms based on environment Action types\n- **Action History**: Complete log of all actions taken and their results\n\nThe web interface is **conditionally enabled** based on environment variables:\n\n- **Local Development**: Disabled by default for lightweight development\n- **Manual Override**: Enable with `ENABLE_WEB_INTERFACE=true`\n\nTo use the web interface:\n\n```python\nfrom openenv.core.env_server import create_web_interface_app\nfrom your_env.models import YourAction, YourObservation\nfrom your_env.server.your_environment import YourEnvironment\n\nenv = YourEnvironment()\napp = create_web_interface_app(env, YourAction, YourObservation)\n```\n\nWhen enabled, open `http:\u002F\u002Flocalhost:8000\u002Fweb` in your browser to interact with the environment.\n\n#### 2. Environment (Server-Side)\nBase class for implementing environment logic:\n- **`reset()`**: Initialize a new episode, returns initial `Observation`\n- **`step(action)`**: Execute an `Action`, returns resulting `Observation`\n- **`state()`**: Access episode metadata (`State` with episode_id, step_count, etc.)\n\n#### 3. EnvClient (Client-Side)\nBase class for environment communication:\n- **Async by default**: Use `async with` and `await` for all operations\n- **Sync wrapper**: Call `.sync()` to get a `SyncEnvClient` for synchronous usage\n- Handles WebSocket connections to environment server\n- Contains a utility to spin up a docker container locally for the corresponding environment\n- Type-safe action\u002Fobservation parsing\n\n#### 4. Container Providers\nManage container deployment:\n- `LocalDockerProvider`: Run containers on local Docker daemon\n- `KubernetesProvider`: Deploy to K8s clusters (future)\n\n#### 5. Models\nType-safe data structures:\n- `Action`: Base class for environment actions\n- `Observation`: Base class for environment observations\n- `State`: Episode state tracking\n- `StepResult`: Combines observation, reward, done flag\n\n## Project Structure\n\n### For Environment Creators\n\nUse the CLI to quickly scaffold a new environment:\n\n```bash\nopenenv init my_env\n```\n\nThis creates the following structure:\n\n```\nmy_env\u002F\n├── .dockerignore        # Docker build exclusions\n├── __init__.py           # Export YourAction, YourObservation, YourEnv\n├── models.py             # Define Action, Observation, State dataclasses\n├── client.py             # Implement YourEnv(EnvClient)\n├── README.md             # Document your environment\n├── openenv.yaml          # Environment manifest\n├── pyproject.toml        # Dependencies and package configuration\n├── outputs\u002F              # Runtime outputs (logs, evals) - gitignored\n│   ├── logs\u002F\n│   └── evals\u002F\n└── server\u002F\n    ├── your_environment.py  # Implement YourEnvironment(Environment)\n    ├── app.py               # Create FastAPI app\n    ├── requirements.txt     # Dependencies for Docker (can be generated)\n    └── Dockerfile           # Define container image\n```\n\n#### Dependency Management\n\nOpenEnv uses `pyproject.toml` as the primary dependency specification:\n\n- **Environment-level `pyproject.toml`**: Each environment defines its own dependencies\n- **Root-level `pyproject.toml`**: Contains shared core dependencies (fastapi, pydantic, uvicorn)\n- **Server `requirements.txt`**: Can be auto-generated from `pyproject.toml` for Docker builds\n\n**Development Workflow:**\n\n```bash\n# Install environment in editable mode\ncd my_env\npip install -e .\n\n# Or using uv (faster)\nuv pip install -e .\n\n# Run server locally without Docker\nuv run server --host 0.0.0.0 --port 8000\n```\n\n**Benefits:**\n- ✅ **Client-side extensions**: Modify client classes locally without repo changes\n- ✅ **Better dependency management**: Clear separation between environments\n- ✅ **Flexible workflows**: Use pip, uv, or Docker for different scenarios\n- ✅ **CI\u002FCD ready**: Automated dependency generation and validation\n\nSee [`envs\u002FREADME.md`](envs\u002FREADME.md) for a complete guide on building environments.\n\n### For Environment Users\n\nTo use an environment:\n1. Install the client: `pip install git+https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fopenenv\u002Fecho-env`\n2. Import: `from echo_env import CallToolAction, EchoEnv`\n3. Use async (recommended) or sync API:\n\n**Async (recommended):**\n```python\nasync with EchoEnv(base_url=\"...\") as client:\n    result = await client.reset()\n    result = await client.step(action)\n```\n\n**Sync (via `.sync()` wrapper):**\n```python\nwith EchoEnv(base_url=\"...\").sync() as client:\n    result = client.reset()\n    result = client.step(action)\n```\n\nSee example scripts in `examples\u002F` directory.\n\n## CLI Commands\n\nThe OpenEnv CLI provides commands to manage environments:\n\n- **`openenv init \u003Cenv_name>`** - Initialize a new environment from template\n- **`openenv push [--repo-id \u003Crepo>] [--private]`** - Deploy environment to Hugging Face Spaces\n\n### Quick Start\n\n```bash\n# Create a new environment\nopenenv init my_game_env\n\n# Deploy to Hugging Face (will prompt for login if needed)\ncd my_game_env\nopenenv push\n```\n\nFor detailed options: `openenv init --help` and `openenv push --help`.\n\n## Design Principles\n\n1. **Separation of Concerns**: Clear client-server boundaries\n2. **Type Safety**: Strongly-typed actions, observations, and state\n3. **Container Isolation**: Each environment runs in its own container\n4. **Simple APIs**: Minimal, intuitive interfaces\n\n## Development\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv.git\ncd OpenEnv\n\n# Install core package in editable mode\npip install -e .\n# Or using uv (faster)\nuv pip install -e .\n```\n\n### Running Tests\n\nOpenEnv uses a modular dependency structure: the core package is minimal, and each environment has its own dependencies. This means some tests require environment-specific packages.\n\n```bash\n# Install pytest (required for running tests)\nuv pip install pytest\n\n# Run all tests (skips tests requiring uninstalled dependencies)\nPYTHONPATH=src:envs uv run pytest tests\u002F -v --tb=short\n\n# Run a specific test file\nPYTHONPATH=src:envs uv run pytest tests\u002Fenvs\u002Ftest_echo_environment.py -v\n```\n\n**To run environment-specific tests**, install that environment's dependencies:\n\n```bash\n# Example: Install coding_env with dev dependencies (includes smolagents + pytest)\nuv pip install -e \"envs\u002Fcoding_env[dev]\"\n\n# Then run coding_env tests\nPYTHONPATH=src:envs uv run pytest tests\u002Fenvs\u002Ftest_python_codeact_rewards.py -v\n```\n\nTests will be automatically skipped if their required dependencies aren't installed.\n\n## Requirements\n\n- Python 3.10+\n- Docker Desktop or Docker Engine\n- FastAPI >= 0.104.0\n- Uvicorn >= 0.24.0\n- Requests >= 2.25.0\n- Environment-specific dependencies (e.g., smolagents for coding_env)\n\n## Supported RL Tools\nThe goal of this project is to support a broad set of open and closed tools to help standardize the agentic RL community. If you have a project that supports OpenEnv environments, please put up a PR to add your tool name along with a link to your documentation.\n\n### torchforge\nSee GRPO BlackJack training example: [`examples\u002Fgrpo_blackjack\u002F`](examples\u002Fgrpo_blackjack\u002F)\n\n### TRL\nSee the [TRL example](https:\u002F\u002Fhuggingface.co\u002Fdocs\u002Ftrl\u002Fopenenv) on how to integrate OpenEnv environments with GRPO training.\n\n### Unsloth\nSee the 2048 game example based on gpt-oss: [Colab notebook](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Funslothai\u002Fnotebooks\u002Fblob\u002Fmain\u002Fnb\u002FOpenEnv_gpt_oss_(20B)_Reinforcement_Learning_2048_Game.ipynb)\n\n### SkyRL\nSee the [SkyRL example](https:\u002F\u002Fskyrl.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002Fopenenv.html) on how to train on OpenEnv environments with SkyRL.\n\n### ART\nSee the [ART example](https:\u002F\u002Fart.openpipe.ai\u002Fintegrations\u002Fopenenv-integration) on how OpenEnv environments can be used to train models with ART.\n\n### Oumi\nSee the [Oumi example](https:\u002F\u002Fgithub.com\u002Foumi-ai\u002Foumi\u002Fblob\u002Fmain\u002Fnotebooks\u002FOumi%20-%20OpenEnv%20GRPO%20with%20trl.ipynb) on how OpenEnv environments can be used to train models with Oumi.\n\n## Example Environments\n\n| Environment | Description |\n|---|---|\n| [Echo Environment](envs\u002Fecho_env\u002FREADME.md) | Echoes back messages with metadata. Ideal for testing HTTP server infrastructure, learning framework basics, and verifying container deployment. |\n| [Coding Environment](envs\u002Fcoding_env\u002FREADME.md) | Sandboxed Python code execution via smolagents. Captures stdout\u002Fstderr\u002Fexit codes, supports persistent episode context, and provides detailed error handling. |\n| [Chess Environment](envs\u002Fchess_env\u002FREADME.md) | Chess RL environment with configurable opponents and full rules support. |\n| [Atari Environment](envs\u002Fatari_env\u002FREADME.md) | Classic Arcade Learning Environment tasks for RL benchmarking. |\n| [FinRL Environment](envs\u002Ffinrl_env\u002FREADME.md) | Financial market simulations for algorithmic trading experiments. |\n\n> Browse the full catalog of community environments at [meta-pytorch.org\u002FOpenEnv\u002Fenvironments](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002Fenvironments.html).\n\n## Community Support & Acknowledgments\nThis is an open and community-centric project. If you would like to add your name here, please put up a pull request and tag @jspisak for review. Ty!!\n\nSupporters include: Meta-PyTorch, Hugging Face, [Scaler AI Labs](https:\u002F\u002Fscalerailabs.com), [Patronus AI](https:\u002F\u002Fpatronus.ai), [Surge AI](https:\u002F\u002Fsurgehq.ai), [LastMile AI](https:\u002F\u002Fwww.lastmileai.dev), Unsloth AI, Reflection AI, vLLM, SkyRL (UC-Berkeley), LightningAI, Axolotl AI, Stanford Scaling Intelligence Lab, Mithril, [OpenMined](https:\u002F\u002Fopenmined.org\u002F), [Fleet AI](https:\u002F\u002Ffleetai.com), [Halluminate](https:\u002F\u002Fhalluminate.ai\u002F), [Turing](https:\u002F\u002Fwww.turing.com\u002F), [Scale AI](https:\u002F\u002Fscale.com\u002F), [Scorecard](https:\u002F\u002Fwww.scorecard.io\u002F) ..\n\nAnd we'd also like to acknowledge the team at Farama Foundation as the OpenEnv API was heavily inspired by the work you all have done on Gymnasium. Cheers!\n\n## License\n\nBSD 3-Clause License (see [LICENSE](.\u002FLICENSE) file)\n","# \u003Cimg width=\"35\" height=\"35\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeta-pytorch_OpenEnv_readme_431c3c7870e5.png\" \u002F> OpenEnv: 智体执行环境\n\n一个用于创建、部署和使用隔离执行环境的端到端框架，专为智体强化学习训练设计，基于 Gymnasium 风格的简单 API 构建。\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fopenenv-core?color=blue)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fopenenv-core\u002F)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-OpenEnv-7289da?style=flat&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FYsTYBh6PD9)\n[![在 Colab 中打开](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fmeta-pytorch\u002FOpenEnv\u002Fblob\u002Fmain\u002Fexamples\u002FOpenEnv_Tutorial.ipynb)\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-Explore-blue?logo=readthedocs&logoColor=white)](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002F)\n\n---\n\n**🚀 精选示例:** 使用 [torchforge](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002Ftorchforge)（PyTorch 的智体强化学习框架）训练大语言模型玩二十一点：[`examples\u002Fgrpo_blackjack\u002F`](examples\u002Fgrpo_blackjack\u002F)\n\n**🔥 从零到英雄教程:** 来自我们 [GPU 模式](tutorial\u002FREADME.md) 讲座及其他黑客马拉松的端到端教程。\n\n## 快速入门\n\n安装 OpenEnv 核心包：\n\n```bash\npip install openenv-core\n```\n\n安装一个环境客户端（例如 Echo）：\n\n```bash\npip install git+https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fopenenv\u002Fecho_env\n```\n\n然后使用该环境：\n\n```python\nimport asyncio\nfrom echo_env import CallToolAction, EchoEnv\n\nasync def main():\n    # 连接到正在运行的空间（异步上下文管理器）\n    async with EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\") as client:\n        # 重置环境\n        result = await client.reset()\n        print(result.observation.echoed_message)  # \"Echo environment ready!\"\n\n        # 发送消息\n        result = await client.step(\n            CallToolAction(\n                tool_name=\"echo_message\",\n                arguments={\"message\": \"Hello, World!\"},\n            )\n        )\n        print(result.observation.result)  # \"Hello, World!\"\n        print(result.reward)\n\nasyncio.run(main())\n```\n\n**同步使用**同样支持，只需通过 `.sync()` 包装器即可：\n\n```python\nfrom echo_env import CallToolAction, EchoEnv\n\n# 使用 .sync() 进行同步上下文管理\nwith EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\").sync() as client:\n    result = client.reset()\n    result = client.step(\n        CallToolAction(\n            tool_name=\"echo_message\",\n            arguments={\"message\": \"Hello, World!\"},\n        )\n    )\n    print(result.observation.result)\n```\n\n如需详细的快速入门指南，请查看 [文档页面](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002Fauto_getting_started\u002Findex.html)。\n\n## OpenEnv 在合作平台上的应用：\n\n- [Lightning AI Studio](https:\u002F\u002Flightning.ai\u002Fenvironments?section=featured)\n- [TRL 示例](https:\u002F\u002Fhuggingface.co\u002Fdocs\u002Ftrl\u002Fopenenv)\n- [Unsloth Google Colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Funslothai\u002Fnotebooks\u002Fblob\u002Fmain\u002Fnb\u002FOpenEnv_gpt_oss_(20B)_Reinforcement_Learning_2048_Game.ipynb)\n- [ART 示例](https:\u002F\u002Fart.openpipe.ai\u002Fintegrations\u002Fopenenv-integration)\n- [Oumi 示例](https:\u002F\u002Fgithub.com\u002Foumi-ai\u002Foumi\u002Fblob\u002Fmain\u002Fnotebooks\u002FOumi%20-%20OpenEnv%20GRPO%20with%20trl.ipynb)\n\n## 概述\n\nOpenEnv 提供了一套标准接口，允许用户通过简单的 Gymnasium 风格 API——`step()`、`reset()`、`state()`——与智体执行环境进行交互。研究人员和强化学习框架开发者可以利用这些简单 API，在强化学习训练循环中与环境互动。\n\n除了便于研究者和框架开发者使用外，我们还为环境创建者提供了工具，帮助他们构建更丰富的环境，并通过 HTTP 等常见协议发布，同时采用 Docker 等标准化技术进行封装。环境创建者可以借助 OpenEnv 框架，打造隔离、安全且易于部署和使用的环境。\n\nOpenEnv 命令行工具 (`openenv`) 提供了初始化新环境并将其部署到 Hugging Face Spaces 的命令。\n\n> ⚠️ **早期开发警告** OpenEnv 目前仍处于实验阶段。您可能会遇到一些 bug、功能不完整的情况，以及未来版本中可能发生变化的 API。项目欢迎提交 bug 修复，但为了确保协调一致，建议在开始工作之前先讨论任何重大变更。推荐您在问题追踪器中表明您的贡献意向，可以通过新建问题或认领现有问题来实现。\n\n### RFC 文档\n\n以下是 OpenEnv 当前及历史上的 RFC 列表。RFC 是针对重大更改或功能的提案。请查阅并积极参与贡献！\n\n- [RFC 001：基础 API 和接口规范](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F26)\n- [RFC 002：智能体发现环境工具的能力](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F32)\n- [RFC 003：添加 MCP（模型上下文协议）支持](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F224)\n- [RFC 004：为基于轨迹的评分添加延迟奖励支持](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F337)\n- [RFC 005：集成智体 Harness](https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F387)\n\n## 架构\n\n### 组件概览\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                    客户端应用                   │\n│  ┌────────────────┐              ┌──────────────────┐   │\n│  │  EchoEnv       │              │  CodingEnv       │   │\n│  │  (环境客户端)   │              │   (环境客户端)    │   │\n│  └────────┬───────┘              └────────┬─────────┘   │\n└───────────┼───────────────────────────────┼─────────────┘\n            │ WebSocket                     │ WebSocket\n            │ (重置、步骤、状态)          │\n┌───────────▼───────────────────────────────▼─────────────┐\n│              Docker 容器（隔离）               │\n│  ┌──────────────────────┐    ┌──────────────────────┐   │\n│  │ FastAPI 服务器       │    │ FastAPI 服务器       │   │\n│  │   EchoEnvironment    │    │ PythonCodeActEnv     │   │\n│  │ (环境基础)           │    │ (环境基础)           │   │\n│  └──────────────────────┘    └──────────────────────┘   │\n└─────────────────────────────────────────────────────────┘\n```\n\n### 核心组件\n\n#### 1. Web 界面\n\nOpenEnv 内置了一个用于交互式环境探索和调试的 Web 界面。该 Web 界面提供以下功能：\n\n- **双面板布局**：左侧为 HumanAgent 交互，右侧为状态观测\n- **实时更新**：基于 WebSocket 的实时更新，无需页面刷新\n- **动态表单**：根据环境的 Action 类型自动生成操作表单\n- **操作历史**：完整记录所有执行的操作及其结果\n\nWeb 界面会根据环境变量进行**条件性启用**：\n\n- **本地开发**：默认禁用，以实现轻量级开发\n- **手动覆盖**：通过设置 `ENABLE_WEB_INTERFACE=true` 来启用\n\n使用 Web 界面的方法如下：\n\n```python\nfrom openenv.core.env_server import create_web_interface_app\nfrom your_env.models import YourAction, YourObservation\nfrom your_env.server.your_environment import YourEnvironment\n\nenv = YourEnvironment()\napp = create_web_interface_app(env, YourAction, YourObservation)\n```\n\n启用后，在浏览器中打开 `http:\u002F\u002Flocalhost:8000\u002Fweb` 即可与环境进行交互。\n\n#### 2. 环境（服务器端）\n用于实现环境逻辑的基类：\n- **`reset()`**：初始化新 episode，返回初始 `Observation`\n- **`step(action)`**：执行一个 `Action`，返回结果 `Observation`\n- **`state()`**：访问 episode 元数据（包含 `State`、episode_id、step_count 等）\n\n#### 3. EnvClient（客户端）\n用于环境通信的基类：\n- **默认异步**：所有操作均使用 `async with` 和 `await`\n- **同步包装器**：调用 `.sync()` 可获得用于同步使用的 `SyncEnvClient`\n- 处理与环境服务器的 WebSocket 连接\n- 包含在本地启动对应环境 Docker 容器的工具\n- 类型安全的操作\u002F观测解析\n\n#### 4. 容器提供商\n负责管理容器部署：\n- `LocalDockerProvider`：在本地 Docker 守护进程中运行容器\n- `KubernetesProvider`：未来支持部署到 K8s 集群\n\n#### 5. 模型\n类型安全的数据结构：\n- `Action`：环境动作的基类\n- `Observation`：环境观测的基类\n- `State`：episode 状态跟踪\n- `StepResult`：结合观测、奖励和完成标志\n\n## 项目结构\n\n### 针对环境创建者\n\n使用 CLI 快速搭建新环境：\n\n```bash\nopenenv init my_env\n```\n\n这将创建如下结构：\n\n```\nmy_env\u002F\n├── .dockerignore        # Docker 构建排除文件\n├── __init__.py           # 导出 YourAction、YourObservation、YourEnv\n├── models.py             # 定义 Action、Observation、State 数据类\n├── client.py             # 实现 YourEnv(EnvClient)\n├── README.md             # 记录环境文档\n├── openenv.yaml          # 环境清单文件\n├── pyproject.toml        # 依赖项和包配置\n├── outputs\u002F              # 运行时输出（日志、评估） - 被 git 忽略\n│   ├── logs\u002F\n│   └── evals\u002F\n└── server\u002F\n    ├── your_environment.py  # 实现 YourEnvironment(Environment)\n    ├── app.py               # 创建 FastAPI 应用\n    ├── requirements.txt     # Docker 构建所需的依赖项（可自动生成）\n    └── Dockerfile           # 定义容器镜像\n```\n\n#### 依赖管理\n\nOpenEnv 使用 `pyproject.toml` 作为主要的依赖规范：\n\n- **环境级别的 `pyproject.toml`**：每个环境定义自己的依赖\n- **根级别的 `pyproject.toml`**：包含共享的核心依赖（fastapi、pydantic、uvicorn）\n- **服务器的 `requirements.txt`**：可从 `pyproject.toml` 自动生成，用于 Docker 构建\n\n**开发工作流：**\n\n```bash\n# 以可编辑模式安装环境\ncd my_env\npip install -e .\n\n# 或使用 uv（更快）\nuv pip install -e .\n\n# 在本地无 Docker 运行服务器\nuv run server --host 0.0.0.0 --port 8000\n```\n\n**优势：**\n- ✅ **客户端扩展**：可在本地修改客户端类，无需更改仓库\n- ✅ **更好的依赖管理**：清晰分离各个环境\n- ✅ **灵活的工作流程**：可根据不同场景使用 pip、uv 或 Docker\n- ✅ **CI\u002FCD 就绪**：自动化依赖生成和验证\n\n有关构建环境的完整指南，请参阅 [`envs\u002FREADME.md`](envs\u002FREADME.md)。\n\n### 针对环境使用者\n\n使用环境的步骤如下：\n1. 安装客户端：`pip install git+https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fopenenv\u002Fecho-env`\n2. 导入：`from echo_env import CallToolAction, EchoEnv`\n3. 使用异步（推荐）或同步 API：\n\n**异步（推荐）：**\n```python\nasync with EchoEnv(base_url=\"...\") as client:\n    result = await client.reset()\n    result = await client.step(action)\n```\n\n**同步（通过 `.sync()` 包装器）：**\n```python\nwith EchoEnv(base_url=\"...\").sync() as client:\n    result = client.reset()\n    result = client.step(action)\n```\n\n示例脚本请参见 `examples\u002F` 目录。\n\n## CLI 命令\n\nOpenEnv 的 CLI 提供了用于管理环境的命令：\n\n- **`openenv init \u003Cenv_name>`**：从模板初始化新环境\n- **`openenv push [--repo-id \u003Crepo>] [--private]`**：将环境部署到 Hugging Face Spaces\n\n### 快速入门\n\n```bash\n# 创建新环境\nopenenv init my_game_env\n\n# 部署到 Hugging Face（如需，会提示登录）\ncd my_game_env\nopenenv push\n```\n\n详细选项请参考：`openenv init --help` 和 `openenv push --help`。\n\n## 设计原则\n\n1. **关注点分离**：清晰的客户端-服务器边界\n2. **类型安全**：强类型的动作、观测和状态\n3. **容器隔离**：每个环境运行在独立的容器中\n4. **简单 API**：最小化、直观的接口\n\n## 开发\n\n### 安装\n\n```bash\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv.git\ncd OpenEnv\n\n# 以可编辑模式安装核心包\npip install -e .\n# 或使用 uv（更快）\nuv pip install -e .\n```\n\n### 运行测试\n\nOpenEnv 采用模块化的依赖结构：核心包非常精简，而每个环境都有自己的依赖。这意味着部分测试需要特定于环境的包。\n\n```bash\n# 安装 pytest（运行测试所需）\nuv pip install pytest\n\n# 运行所有测试（跳过缺少依赖的测试）\nPYTHONPATH=src:envs uv run pytest tests\u002F -v --tb=short\n\n# 运行特定测试文件\nPYTHONPATH=src:envs uv run pytest tests\u002Fenvs\u002Ftest_echo_environment.py -v\n```\n\n**若要运行环境特定的测试**，请先安装该环境的依赖：\n\n```bash\n# 示例：安装 coding_env 及其开发依赖（包括 smolagents + pytest）\nuv pip install -e \"envs\u002Fcoding_env[dev]\"\n\n# 然后运行 coding_env 测试\nPYTHONPATH=src:envs uv run pytest tests\u002Fenvs\u002Ftest_python_codeact_rewards.py -v\n```\n\n如果未安装所需依赖，测试将自动跳过。\n\n## 要求\n\n- Python 3.10+\n- Docker Desktop 或 Docker 引擎\n- FastAPI ≥ 0.104.0\n- Uvicorn ≥ 0.24.0\n- Requests ≥ 2.25.0\n- 环境特定的依赖（例如，coding_env 需要 smolagents）\n\n## 支持的强化学习工具\n本项目的目标是支持广泛的开源和闭源工具，以帮助规范代理式强化学习社区。如果您有一个支持 OpenEnv 环境的项目，请提交一个 Pull Request，添加您的工具名称以及指向您文档的链接。\n\n### torchforge\n请参阅 GRPO BlackJack 训练示例：[`examples\u002Fgrpo_blackjack\u002F`](examples\u002Fgrpo_blackjack\u002F)\n\n### TRL\n请参阅 [TRL 示例](https:\u002F\u002Fhuggingface.co\u002Fdocs\u002Ftrl\u002Fopenenv)，了解如何将 OpenEnv 环境与 GRPO 训练集成。\n\n### Unsloth\n请参阅基于 gpt-oss 的 2048 游戏示例：[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Funslothai\u002Fnotebooks\u002Fblob\u002Fmain\u002Fnb\u002FOpenEnv_gpt_oss_(20B)_Reinforcement_Learning_2048_Game.ipynb)\n\n### SkyRL\n请参阅 [SkyRL 示例](https:\u002F\u002Fskyrl.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002Fopenenv.html)，了解如何使用 SkyRL 在 OpenEnv 环境上进行训练。\n\n### ART\n请参阅 [ART 示例](https:\u002F\u002Fart.openpipe.ai\u002Fintegrations\u002Fopenenv-integration)，了解如何使用 OpenEnv 环境通过 ART 训练模型。\n\n### Oumi\n请参阅 [Oumi 示例](https:\u002F\u002Fgithub.com\u002Foumi-ai\u002Foumi\u002Fblob\u002Fmain\u002Fnotebooks\u002FOumi%20-%20OpenEnv%20GRPO%20with%20trl.ipynb)，了解如何使用 OpenEnv 环境通过 Oumi 训练模型。\n\n## 示例环境\n\n| 环境 | 描述 |\n|---|---|\n| [Echo 环境](envs\u002Fecho_env\u002FREADME.md) | 将带有元数据的消息原样回显。非常适合测试 HTTP 服务器基础设施、学习框架基础知识以及验证容器部署。 |\n| [Coding 环境](envs\u002Fcoding_env\u002FREADME.md) | 通过 smolagents 进行沙箱化的 Python 代码执行。捕获 stdout\u002Fstderr\u002F退出码，支持持久化的剧集上下文，并提供详细的错误处理。 |\n| [Chess 环境](envs\u002Fchess_env\u002FREADME.md) | 拥有可配置对手且完全支持规则的国际象棋强化学习环境。 |\n| [Atari 环境](envs\u002Fatari_env\u002FREADME.md) | 经典的街机学习环境任务，用于强化学习基准测试。 |\n| [FinRL 环境](envs\u002Ffinrl_env\u002FREADME.md) | 金融市场模拟，用于算法交易实验。 |\n\n> 请在 [meta-pytorch.org\u002FOpenEnv\u002Fenvironments](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002Fenvironments.html) 浏览完整的社区环境目录。\n\n## 社区支持与致谢\n这是一个开放且以社区为中心的项目。如果您希望在此处添加您的名字，请提交一个 Pull Request，并标记 @jspisak 进行审核。非常感谢！！\n\n支持者包括：Meta-PyTorch、Hugging Face、[Scaler AI Labs](https:\u002F\u002Fscalerailabs.com)、[Patronus AI](https:\u002F\u002Fpatronus.ai)、[Surge AI](https:\u002F\u002Fsurgehq.ai)、[LastMile AI](https:\u002F\u002Fwww.lastmileai.dev)、Unsloth AI、Reflection AI、vLLM、SkyRL（UC-Berkeley）、LightningAI、Axolotl AI、斯坦福规模化智能实验室、Mithril、[OpenMined](https:\u002F\u002Fopenmined.org\u002F)、[Fleet AI](https:\u002F\u002Ffleetai.com)、[Halluminate](https:\u002F\u002Fhalluminate.ai\u002F)、[Turing](https:\u002F\u002Fwww.turing.com\u002F)、[Scale AI](https:\u002F\u002Fscale.com\u002F)、[Scorecard](https:\u002F\u002Fwww.scorecard.io\u002F)……\n\n同时，我们也想感谢 Farama Foundation 团队，因为 OpenEnv API 在很大程度上受到了贵团队在 Gymnasium 上所做工作的启发。干杯！\n\n## 许可证\n\nBSD 3-Clause 许可证（详见 [LICENSE](.\u002FLICENSE) 文件）","# OpenEnv 快速上手指南\n\nOpenEnv 是一个用于创建、部署和使用隔离执行环境的端到端框架，专为智能体（Agentic）强化学习训练设计。它提供类似 Gymnasium 的简洁 API（`reset`, `step`, `state`），支持异步和同步调用。\n\n## 环境准备\n\n*   **操作系统**: Linux, macOS, Windows (需安装 Docker Desktop)\n*   **Python 版本**: Python 3.9+\n*   **前置依赖**:\n    *   `pip` 或 `uv` (推荐，速度更快)\n    *   **Docker**: 用于运行隔离的环境容器（若仅作为客户端连接远程空间可暂不安装本地 Docker）\n    *   **Node.js** (可选): 若需开发或运行内置的 Web 调试界面\n\n> **提示**: 国内开发者建议使用国内镜像源加速安装（如清华源、阿里源）。\n> ```bash\n> pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple \u003Cpackage_name>\n> ```\n\n## 安装步骤\n\n### 1. 安装核心包\n首先安装 OpenEnv 的核心库：\n\n```bash\npip install openenv-core\n```\n\n### 2. 安装环境客户端\n选择一个具体的环境客户端进行安装。以下以官方示例 `EchoEnv` 为例：\n\n```bash\npip install git+https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fopenenv\u002Fecho_env\n```\n\n> **注意**: 如果直接访问 HuggingFace 较慢，可尝试先克隆仓库到本地再安装，或使用代理加速。\n\n## 基本使用\n\nOpenEnv 推荐使用 **异步 (Async)** 方式调用，同时也支持通过 `.sync()` 包装器进行同步调用。\n\n### 方式一：异步使用（推荐）\n\n这是最标准的用法，适用于高性能并发场景。\n\n```python\nimport asyncio\nfrom echo_env import CallToolAction, EchoEnv\n\nasync def main():\n    # 连接到正在运行的 Space (使用异步上下文管理器)\n    async with EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\") as client:\n        # 重置环境\n        result = await client.reset()\n        print(result.observation.echoed_message)  # 输出: \"Echo environment ready!\"\n\n        # 发送动作\n        result = await client.step(\n            CallToolAction(\n                tool_name=\"echo_message\",\n                arguments={\"message\": \"Hello, World!\"},\n            )\n        )\n        print(result.observation.result)  # 输出: \"Hello, World!\"\n        print(result.reward)\n\nasyncio.run(main())\n```\n\n### 方式二：同步使用\n\n如果你习惯同步编程风格，可以使用 `.sync()` 方法。\n\n```python\nfrom echo_env import CallToolAction, EchoEnv\n\n# 使用 .sync() 获取同步上下文管理器\nwith EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\").sync() as client:\n    result = client.reset()\n    result = client.step(\n        CallToolAction(\n            tool_name=\"echo_message\",\n            arguments={\"message\": \"Hello, World!\"},\n        )\n    )\n    print(result.observation.result)\n```\n\n### 进阶：创建你自己的环境\n\n如果你想构建自己的智能体环境，可以使用 CLI 快速 scaffold 项目：\n\n1.  **初始化项目**:\n    ```bash\n    openenv init my_custom_env\n    ```\n    这将生成包含 `models.py` (定义动作\u002F观察), `server\u002F` (FastAPI 服务), `client.py` 等标准结构的文件夹。\n\n2.  **本地运行测试**:\n    ```bash\n    cd my_custom_env\n    pip install -e .\n    uv run server --host 0.0.0.0 --port 8000\n    ```\n\n3.  **部署到 Hugging Face Spaces**:\n    ```bash\n    openenv push\n    ```\n\n更多详细文档请访问 [OpenEnv 官方文档](https:\u002F\u002Fmeta-pytorch.org\u002FOpenEnv\u002F)。","某 AI 实验室团队正致力于利用强化学习（RL）训练大语言模型，使其能够自主调用工具完成复杂的代码调试任务。\n\n### 没有 OpenEnv 时\n- **环境搭建繁琐**：每次实验前需手动配置隔离的 Docker 容器和依赖库，耗时数小时且容易因环境差异导致复现失败。\n- **接口标准混乱**：不同的仿真环境（如 Linux 终端、浏览器操作）缺乏统一交互协议，研究人员需为每个环境编写特定的适配代码。\n- **异步支持缺失**：现有框架难以高效处理 Agent 与环境的异步交互，导致训练循环阻塞，GPU 资源利用率低下。\n- **部署门槛高**：将自定义环境部署到云端或共享给团队成员时，缺乏标准化的打包和访问机制，协作效率极低。\n\n### 使用 OpenEnv 后\n- **一键部署隔离环境**：通过 OpenEnv 标准 API 和 Docker 封装，团队可在几分钟内启动安全、隔离的执行环境，彻底消除“在我机器上能跑”的问题。\n- **统一 Gymnasium 风格接口**：无论底层是代码解释器还是网页浏览器，均通过标准的 `reset()` 和 `step()` 接口交互，研究人员可无缝切换不同训练场景。\n- **原生异步并发支持**：OpenEnv 原生支持 Python `async\u002Fawait`，让 Agent 在等待环境反馈时不阻塞主线程，显著提升了大规模并行训练的效率。\n- **标准化云端接入**：借助 HTTP 协议和预置客户端，团队成员可直接连接部署在 Hugging Face Spaces 或 Lightning AI 上的环境，实现真正的零配置协作。\n\nOpenEnv 通过标准化代理执行环境的交互协议，将原本耗时的环境工程难题转化为简单的 API 调用，让研究人员能专注于强化学习算法本身的创新。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmeta-pytorch_OpenEnv_431c3c78.png","meta-pytorch","Meta PyTorch","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmeta-pytorch_1dfd3f76.jpg","",null,"https:\u002F\u002Fpytorch.org","https:\u002F\u002Fgithub.com\u002Fmeta-pytorch",[82,86,90,94,98,102],{"name":83,"color":84,"percentage":85},"Python","#3572A5",83.1,{"name":87,"color":88,"percentage":89},"Jupyter Notebook","#DA5B0B",12.3,{"name":91,"color":92,"percentage":93},"Shell","#89e051",2.5,{"name":95,"color":96,"percentage":97},"Dockerfile","#384d54",1.6,{"name":99,"color":100,"percentage":101},"HTML","#e34c26",0.4,{"name":103,"color":104,"percentage":105},"Julia","#a270ba",0.1,1621,334,"2026-04-18T20:12:22","BSD-3-Clause","Linux, macOS","未说明 (框架本身基于 API 通信，具体 GPU 需求取决于运行的 RL 训练框架如 torchforge 或 TRL，以及所加载的模型大小)","未说明 (取决于容器化环境和加载的模型大小)",{"notes":114,"python":115,"dependencies":116},"1. 核心架构为客户端 - 服务器模式，环境运行在隔离的 Docker 容器中，需本地安装 Docker 守护进程。2. 支持异步 (asyncio) 和同步两种调用方式。3. 可通过 CLI 工具将环境部署到 Hugging Face Spaces。4. 项目处于早期实验阶段，API 可能变更。5. 默认不开启 Web 界面，需设置环境变量 ENABLE_WEB_INTERFACE=true 启用。","3.8+ (推断自 PyTorch 生态及 pyproject.toml 惯例，文中未明确指定具体版本号)",[117,118,119,120,121,122],"openenv-core","fastapi","pydantic","uvicorn","docker","torch (可选，用于集成 torchforge\u002FTRL 等)",[35,14,13],"2026-03-27T02:49:30.150509","2026-04-19T09:14:19.606095",[],[128,133,138],{"id":129,"version":130,"summary_zh":131,"released_at":132},334386,"v0.2.3","## OpenEnv 0.2.3\n\n### 核心 Web 修复\n- 将 `GET \u002F` 和 `GET \u002Fweb` 重定向至 `\u002Fweb\u002F`，适用于基于 Gradio 的 Spaces\n- 在重置前，使 `GET \u002Fweb\u002Fstate` 返回 `409` 状态码，而非暴露内部错误\n- 允许在 `POST \u002Fweb\u002Freset` 请求中传入可选的重置参数\n\n### Hub 部署工具\n- 添加共享的 `gradio_web` 探针，并扩展 `repl_web` 以进行根路径验证\n- 默认将规范集合发现指向第一方的无后缀 Spaces\n- 保留仓库 ID 的覆盖与协调支持，用于规范推广和集合清理\n\n### REPL UI\n- 保留专用于 REPL 的 Gradio 控制面板，以及与之相关的服务器兼容性修复，以支持 Hub 部署","2026-03-28T18:56:00",{"id":134,"version":135,"summary_zh":136,"released_at":137},334387,"v0.2.2","## 核心功能\n\n- **以异步优先的环境客户端，支持持久化的 WebSocket 会话**，并提供同步封装层，方便非异步代码使用。核心循环统一为 `reset()`、`step()` 和 `state()`。\n- **针对强化学习和智能体评估的评分体系与评估支持**，包括延迟奖励、`EvalHarness`、Inspect\u002FLightEval 风格的评测框架，以及通过 `LLMJudge` 实现的 LLM 作为裁判的打分机制。\n- **通过 `AutoEnv` 和 `AutoAction` 提供的自动发现 API**，调用方可以使用简短名称、包名变体或 Hub 仓库 ID 来加载环境，而无需硬编码导入语句。\n- **基于 MCP 的原生环境，由 `MCPEnvironment` 提供支持**，涵盖工具发现、通过环境 API 调用工具、FastMCP 2.x\u002F3.x 兼容性、保留名称验证、持久化 MCP 会话、生产模式与仿真模式切换，以及代码模式支持。\n- **内置 Web UI，路径为 `\u002Fweb`**，用于交互式环境检查，提供动态表单、动作历史记录和实时状态更新。\n- **集成在 `openenv-core` 中的创作者 CLI**：包括 `openenv init`、`build`、`validate`、`push`、`fork`、`serve` 和 `skills` 命令。\n- **面向环境作者的一键 Hugging Face 发布流程**，同时支持对现有 Spaces 的分支\u002F复制操作，以及自定义注册表推送。\n\n## 更多功能\n\n- **通过 `GenericEnvClient` \u002F `GenericAction` 提供的通用客户端支持**，适用于无需安装环境特定代码或不信任远程代码时的原始字典访问场景。\n- **基于 Pydantic 模型构建的类型化环境契约**，涵盖 `Action`、`Observation`、`State` 和 `StepResult`，并支持参数化的 `reset`\u002F`step` 方法。\n- **同一环境客户端支持多种连接模式**：可连接到实时 URL、从 Docker 镜像启动，或使用 `uv` 在本地运行 Hugging Face Space。\n- **本地执行的运行时\u002F提供商抽象**：包括 `LocalDockerProvider`、`UVProvider`、`DockerSwarmProvider`、Daytona 支持，以及 Kubernetes 形式的扩展点。\n- **CLI 中的多模式部署验证**，涵盖本地结构检查以及对已部署环境的实时端点和运行时检查。\n- **面向环境作者的一键 Hugging Face 发布流程**，同时支持对现有 Spaces 的分支\u002F复制操作，以及自定义注册表推送。\n- **面向环境集群的发布\u002F部署基础设施**，包括版本化的 Hub 标签、集合管理、每个环境的部署脚本，以及端点验证工具。\n- **该软件包现已成为真正的可分发核心运行时 `openenv-core`**，其中包含 CLI，而非仅限于松散仓库中的开发者工具。\n- **该框架明确面向智能体设计**，支持 Hub 托管的环境、MCP 工具、同步\u002F异步客户端的人性化设计、评估钩子，以及与 TRL、Torchforge、Oumi、ART 等平台的集成文档。\n\n## 示例片段\n\n### 异步环境使用及同步封装\n\n```python\nimport asyncio\nfrom echo_env import EchoAction、EchoEnv\n\nasync def main():\n    async with EchoEnv(base_url=\"https:\u002F\u002Fopenenv-echo-env.hf.space\") as env:\n        await env.reset()\n        result = await env.step(EchoAction(message=\"Hello,","2026-03-20T17:52:14",{"id":139,"version":140,"summary_zh":141,"released_at":142},334388,"v0.2.1","# OpenEnv v0.2.1 发行说明\n\n**发布提交:** `c2997e8f78588a6f0657950457c57725d1750fe8`\n**日期:** 2026年1月31日\n\n## 亮点\n\n本次发布引入了 **MCP（模型上下文协议）支持**，并借助 TDD 工具对开发工作流进行了重大改进。\n\n## 新特性\n\n### MCP 支持（第一阶段）\n- 为代理与环境之间的通信添加了模型上下文协议支持 (#224)\n- 重构了 EchoEnv，采用内联 FastMCP 工具模式 (#321)\n- 根据评审反馈优化了 MCP 实现 (#312)\n\n### RFC 004：评分标准与延迟奖励\n- 添加了定义评分标准规范的 RFC 004 (#237)\n- 实现了基于轨迹的评分中的延迟奖励支持 (#337)\n\n### TDD 工作流与开发者工具\n- 添加了包含 Git 钩子、代理和技能的全面 TDD 工作流 (#311)\n- 将 `.worktrees\u002F` 添加到 `.gitignore` 中，以支持隔离式开发 (#330)\n\n## Bug 修复与改进\n\n- 修复了编码环境中奖励元数据的处理问题 (#305)\n- 解决了构建过程中 `openenv-core` 的依赖问题\n- 修复了软件包构建时的弃用警告\n- 修正了构建过程中 TOML 文件的扁平化复制问题\n- 更新了快速入门指南中 EchoEnv 中心的引用 (#317)\n\n## 文档更新\n\n- 更新了 T2Bench 的文档及部署说明\n\n## 依赖项更新\n\n- 在 `snake_env` 和 `textarena_env` 中将 `urllib3` 升级至 2.6.3\n- 在 `textarena_env` 中将 `filelock` 升级至 3.20.3\n\n## 仓库维护\n\n- 统一了整个仓库的换行符为 LF (#350)\n- 在 README 中将 Scaler AI Labs 加入支持者名单\n\n## 升级方法\n\npip install --upgrade openenv-core==0.2.1\n\n## 变更内容\n\n* 由 @alvarobartt 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F277 中修复了 `README.md` 中 `trl` 示例的 URL 错误。\n* 由 @Vidit-Ostwal 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F279 中修复了 dataclass 与 Pydantic 的兼容性问题。\n* 由 @wukaixingxp 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F278 中修复了 TypeError: PythonCodeActEnv.step() 缺少 1 个必需的位置参数 'action' 的问题。\n* 由 @kashif 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F281 中对 [TextArena] 环境进行了更新。\n* 由 @burtenshaw 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F280 中将 Textarena 环境升级至新的 CLI 和 WebSocket。\n* 由 @burtenshaw 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F283 中将 EchoEnv 更新至 0.2.0 版本。\n* 由 @AlirezaShamsoshoara 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F286 中修复了较旧 Python 版本的 tomli 兼容性问题。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F261 中将 \u002Fenvs\u002Fdipg_safety_env\u002Fserver 中的 requests 从 2.25.0 升级至 2.32.4。\n* 由 @kashif 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F282 中新增了用于 RLM 的 REPL 环境。\n* 由 @sergiopaniego 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F291 中更新了已部署的 REPL Space URL，并同步更新了 REPL 测试。\n* 由 @Darktex 在 https:\u002F\u002Fgithub.com\u002Fmeta-pytorch\u002FOpenEnv\u002Fpull\u002F287 中为 Claude Code 添加了以代理为中心的工作流基础设施。\n* 添加 Pytho","2026-02-04T10:25:03"]