alibaba/OpenSandbox
GitHub: alibaba/OpenSandbox
面向 AI 应用的通用沙箱平台,提供多语言 SDK 和统一 API,支持 Docker/K8s 运行时,用于 Coding Agent、代码执行和 Agent 评估等场景。
Stars: 3546 | Forks: 249
[文档](https://open-sandbox.ai/) | [文档](https://open-sandbox.ai/zh/)
OpenSandbox 是一个面向 AI 应用的**通用沙箱平台**,提供多语言 SDK、统一的沙箱 API,以及 Docker/Kubernetes 运行时,适用于 Coding Agents、GUI Agents、Agent 评估、AI 代码执行和 RL 训练等场景。
## 功能特性
- **多语言 SDK**:提供 Python、Java/Kotlin、JavaScript/TypeScript、C#/.NET、Go(规划中)等多种语言的沙箱 SDK。
- **沙箱协议**:定义了沙箱生命周期管理 API 和沙箱执行 API,方便扩展自定义沙箱运行时。
- **沙箱运行时**:内置生命周期管理,支持 Docker 和[高性能 Kubernetes 运行时](./kubernetes),既支持本地运行也支持大规模分布式调度。
- **沙箱环境**:内置 Command、Filesystem 和 Code Interpreter 实现。示例涵盖 Coding Agents(如 Claude Code)、浏览器自动化(Chrome、Playwright)以及桌面环境(VNC、VS Code)。
- **网络策略**:统一的 [Ingress Gateway](components/ingress) 支持多种路由策略,以及针对每个沙箱的 [egress 控制](components/egress)。
## 示例
### 基本沙箱操作
环境要求:
- Docker(本地执行必需)
- Python 3.10+(推荐用于示例和本地运行时)
#### 1. 安装并配置沙箱服务器
```
uv pip install opensandbox-server
opensandbox-server init-config ~/.sandbox.toml --example docker
```
#### 2. 启动沙箱服务器
```
opensandbox-server
# 显示帮助
opensandbox-server -h
```
#### 3. 创建 Code Interpreter 并执行命令
安装 Code Interpreter SDK
```
uv pip install opensandbox-code-interpreter
```
创建沙箱并执行命令
```
import asyncio
from datetime import timedelta
from code_interpreter import CodeInterpreter, SupportedLanguage
from opensandbox import Sandbox
from opensandbox.models import WriteEntry
async def main() -> None:
# 1. Create a sandbox
sandbox = await Sandbox.create(
"opensandbox/code-interpreter:v1.0.1",
entrypoint=["/opt/opensandbox/code-interpreter.sh"],
env={"PYTHON_VERSION": "3.11"},
timeout=timedelta(minutes=10),
)
async with sandbox:
# 2. Execute a shell command
execution = await sandbox.commands.run("echo 'Hello OpenSandbox!'")
print(execution.logs.stdout[0].text)
# 3. Write a file
await sandbox.files.write_files([
WriteEntry(path="/tmp/hello.txt", data="Hello World", mode=644)
])
# 4. Read a file
content = await sandbox.files.read_file("/tmp/hello.txt")
print(f"Content: {content}") # Content: Hello World
# 5. Create a code interpreter
interpreter = await CodeInterpreter.create(sandbox)
# 6. Execute Python code (single-run, pass language directly)
result = await interpreter.codes.run(
"""
import sys
print(sys.version)
result = 2 + 2
result
""",
language=SupportedLanguage.PYTHON,
)
print(result.result[0].text) # 4
print(result.logs.stdout[0].text) # 3.11.14
# 7. Cleanup the sandbox
await sandbox.kill()
if __name__ == "__main__":
asyncio.run(main())
```
### 更多示例
OpenSandbox 提供了丰富的示例,展示了在不同场景下的沙箱用法。所有示例代码均位于 `examples/` 目录下。
#### 🎯 基础示例
- **[code-interpreter](examples/code-interpreter/README.md)** - 沙箱中的端到端 Code Interpreter SDK 工作流。
- **[aio-sandbox](examples/aio-sandbox/README.md)** - 使用 OpenSandbox SDK 的 All-in-One 沙箱设置。
- **[agent-sandbox](examples/agent-sandbox/README.md)** - 通过 [kubernetes-sigs/agent-sandbox](https://github.com/kubernetes-sigs/agent-sandbox) 在 Kubernetes 上运行 OpenSandbox。
#### 🤖 Coding Agent 集成
- **[claude-code](examples/claude-code/README.md)** - 在 OpenSandbox 中运行 Claude Code。
- **[gemini-cli](examples/gemini-cli/README.md)** - 在 OpenSandbox 中运行 Google Gemini CLI。
- **[codex-cli](examples/codex-cli/README.md)** - 在 OpenSandbox 中运行 OpenAI Codex CLI。
- **[kimi-cli](examples/kimi-cli/README.md)** - 在 OpenSandbox 中运行 [Kimi CLI](https://github.com/MoonshotAI/kimi-cli)(Moonshot AI)。
- **[iflow-cli](examples/iflow-cli/README.md)** - 在 OpenSandbox 中运行 iFLow CLI。
- **[langgraph](examples/langgraph/README.md)** - LangGraph 状态机工作流,用于创建/运行带有回退重试机制的沙箱任务。
- **[google-adk](examples/google-adk/README.md)** - 使用 OpenSandbox 工具进行文件读写和命令运行的 Google ADK agent。
- **[openclaw](examples/openclaw/README.md)** - 在沙箱内启动 OpenClaw Gateway。
#### 🌐 浏览器和桌面环境
- **[chrome](examples/chrome/README.md)** - 无头 Chromium,支持 VNC 和 DevTools 访问,用于自动化/调试。
- **[playwright](examples/playwright/README.md)** - Playwright + Chromium 无头抓取和测试示例。
- **[desktop](examples/desktop/README.md)** - 沙箱中的完整桌面环境,支持 VNC 访问。
- **[vscode](examples/vscode/README.md)** - 在沙箱内运行的 code-server (VS Code Web),用于远程开发。
#### 🧠 机器学习和训练
- **[rl-training](examples/rl-training/README.md)** - 沙箱中的 DQN CartPole 训练,包含检查点和摘要输出。
更多详情请参考 [examples](examples/README.md) 以及各示例目录下的 README 文件。
## 项目结构
| 目录 | 描述 |
|-----------|------------------------------------------------------------------|
| [`sdks/`](sdks/) | 多语言 SDK (Python, Java/Kotlin, TypeScript/JavaScript, C#/.NET) |
| [`specs/`](specs/README.md) | OpenAPI 规范和生命周期规范 |
| [`server/`](server/README.md) | Python FastAPI 沙箱生命周期服务器 |
| [`kubernetes/`](kubernetes/README.md) | Kubernetes 部署和示例 |
| [`components/execd/`](components/execd/README.md) | 沙箱执行 daemon (命令和文件操作) |
| [`components/ingress/`](components/ingress/README.md) | 沙箱流量入口代理 |
| [`components/egress/`](components/egress/README.md) | 沙箱网络出口控制 |
| [`sandboxes/`](sandboxes/) | 运行时沙箱实现 |
| [`examples/`](examples/README.md) | 集成示例和用例 |
| [`oseps/`](oseps/README.md) | OpenSandbox 增强提案 |
| [`docs/`](docs/) | 架构和设计文档 |
| [`tests/`](tests/) | 跨组件 E2E 测试 |
| [`scripts/`](scripts/) | 开发和维护脚本 |
详细架构请参阅 [docs/architecture.md](docs/architecture.md)。
## 文档
- [docs/architecture.md](docs/architecture.md) – 整体架构与设计理念
- SDK
- 沙箱基础 SDK ([Java/Kotlin SDK](sdks/sandbox/kotlin/README.md), [Python SDK](sdks/sandbox/python/README.md), [JavaScript/TypeScript SDK](sdks/sandbox/javascript/README.md), [C#/.NET SDK](sdks/sandbox/csharp/README.md)) - 包含沙箱生命周期、命令执行、文件操作
- Code Interpreter SDK ([Java/Kotlin SDK](sdks/code-interpreter/kotlin/README.md), [Python SDK](sdks/code-interpreter/python/README.md), [JavaScript/TypeScript SDK](sdks/code-interpreter/javascript/README.md), [C#/.NET SDK](sdks/code-interpreter/csharp/README.md)) - 代码解释器
- [specs/README.md](specs/README.md) - 沙箱生命周期 API 和沙箱执行 API 的 OpenAPI 定义
- [server/README.md](server/README.md) - 沙箱服务器启动和配置;支持 Docker 和 Kubernetes 运行时
## 许可证
本项目基于 [Apache 2.0 License](LICENSE) 开源。
## 路线图
### SDK
- [ ] **Go SDK** - 用于沙箱生命周期管理、命令执行和文件操作的 Go 客户端 SDK。
### 沙箱运行时
- [ ] **持久化存储** - 沙箱的可挂载持久化存储(参见 [Proposal 0003](oseps/0003-volume-and-volumebinding-support.md))。
- [ ] **Ingress 多网络策略** - Ingress Gateway 的多 Kubernetes 集群分发和多网络模式。
- [ ] **本地轻量级沙箱** - 直接在 PC 上运行的、面向 AI 工具的轻量级沙箱。
### 部署
- [ ] **Kubernetes Helm** - 用于部署所有组件的 Helm charts。
## 联系与讨论
- Issues:通过 GitHub Issues 提交 Bug、功能请求或设计讨论
## Star 趋势
[](https://www.star-history.com/#alibaba/OpenSandbox&type=date&legend=top-left)
标签:Agent评估, AI应用, API网关, CMS安全, Coding Agent, CSharp, Docker, DotNet, GUI Agent, JavaScript, JS文件枚举, NIDS, Python, TypeScript, 云计算, 人工智能, 代码安全, 代码执行, 多人体追踪, 多语言SDK, 大模型开发, 子域名突变, 安全插件, 安全防御评估, 容器化, 强化学习, 无后门, 沙盒技术, 沙箱, 漏洞枚举, 用户模式Hook绕过, 规则引擎, 请求拦截, 逆向工具, 阿里开源, 隔离环境