场景与集成
学完基础能力后,最好的方式是跑示例。CubeSandbox 的 examples/ 目录覆盖了从最小代码执行到 Agent 平台集成的多种场景。
示例地图
| 场景 | 目录 | 你会学到什么 |
|---|---|---|
| 代码沙箱快速入门 | examples/code-sandbox-quickstart | 创建、执行代码、命令运行、读写文件、暂停恢复、网络策略。 |
| 浏览器沙箱 | examples/browser-sandbox | 在 MicroVM 中运行 Chromium,通过 Playwright/CDP 控制。 |
| 网络策略 | examples/network-policy | 禁止公网、allow-list、deny-list。 |
| 路由感知出网 | examples/route-aware-egress | 多网卡和特定路由场景。 |
| Host Mount | examples/host-mount | 把宿主目录挂载到沙箱。 |
| 快照、回滚、克隆 | examples/snapshot-rollback-clone | 高级状态管理 API。 |
| OpenAI Agents | examples/openai-agents-example | 使用 OpenAI Agents SDK 对接 CubeSandbox。 |
| OpenAI Code Interpreter | examples/openai-agents-code-interpreter | 数据分析、Jupyter kernel、图片捕获。 |
| OpenClaw 集成 | examples/openclaw-integration | 让 Agent 通过 Skill 使用 CubeSandbox。 |
| SWE-bench / RL 训练 | examples/mini-rl-training | 隔离环境中的自动编码任务和评测。 |
| cube-bench | examples/cube-bench | 创建/删除延迟压测与分位数报告。 |
完整列表见 示例项目。
学习顺序建议
第一组:SDK 基础
先跑:
bash
cd examples/code-sandbox-quickstart
python create.py
python exec_code.py
python cmd.py
python read.py
python pause.py目标是熟悉 E2B 兼容 API 的基本手感。
第二组:状态能力
再跑:
bash
cd examples/snapshot-rollback-clone
python 01_create_snapshot.py
python 03_clone_from_snapshot.py
python 09_rollback.py目标是理解 CubeSandbox 和普通一次性代码执行器的差异。
第三组:安全边界
再看:
bash
cd examples/network-policy
python network_no_internet.py
python network_allowlist.py
python network_denylist.py目标是建立“沙箱默认不能随便出网”的安全设计意识。
第四组:真实 Agent 场景
按你的方向选择:
- 浏览器自动化:
examples/browser-sandbox。 - OpenAI Agents:
examples/openai-agents-example。 - 数据分析 Code Interpreter:
examples/openai-agents-code-interpreter。 - OpenClaw Skill:
examples/openclaw-integration。 - SWE-bench / RL:
examples/mini-rl-training。
从 E2B 迁移
迁移通常从三个环境变量开始:
bash
export E2B_API_URL="http://127.0.0.1:3000"
export E2B_API_KEY="<cube-api-key-or-placeholder>"
export CUBE_TEMPLATE_ID="<template-id>"注意点:
- E2B SDK 的基础 create/run/read/write 流程可以复用。
- Cube 特有能力如 snapshot、clone、rollback 使用
cubesandboxSDK。 - timeout 和 lifecycle 语义要按 Cube 文档确认,尤其是自动暂停和自动恢复。
- 网络安全策略建议迁移时同步补齐,不要默认放开所有出网。
集成设计模板
设计一个新集成时,可以按下面的问题过一遍:
| 问题 | 设计选择 |
|---|---|
| Agent 需要什么运行时? | 做成模板,预装依赖。 |
| 需要保留状态吗? | 使用 pause/resume 或 snapshot。 |
| 是否需要并行分支? | 使用 clone。 |
| 需要访问哪些外部 API? | 配置 allow_out 或 L7 rules。 |
| 密钥怎么处理? | 优先用 CubeEgress inject,不进沙箱。 |
| 用户如何访问服务? | 配置 --expose-port,通过 CubeProxy 路由。 |
| 如何观测和清理? | WebUI + 日志 + timeout 策略。 |
下一步
继续阅读 源码导读,把示例里的 API 调用对应到仓库中的实现模块。