Skip to content

场景与集成

学完基础能力后,最好的方式是跑示例。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 Mountexamples/host-mount把宿主目录挂载到沙箱。
快照、回滚、克隆examples/snapshot-rollback-clone高级状态管理 API。
OpenAI Agentsexamples/openai-agents-example使用 OpenAI Agents SDK 对接 CubeSandbox。
OpenAI Code Interpreterexamples/openai-agents-code-interpreter数据分析、Jupyter kernel、图片捕获。
OpenClaw 集成examples/openclaw-integration让 Agent 通过 Skill 使用 CubeSandbox。
SWE-bench / RL 训练examples/mini-rl-training隔离环境中的自动编码任务和评测。
cube-benchexamples/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 使用 cubesandbox SDK。
  • timeout 和 lifecycle 语义要按 Cube 文档确认,尤其是自动暂停和自动恢复。
  • 网络安全策略建议迁移时同步补齐,不要默认放开所有出网。

集成设计模板

设计一个新集成时,可以按下面的问题过一遍:

问题设计选择
Agent 需要什么运行时?做成模板,预装依赖。
需要保留状态吗?使用 pause/resume 或 snapshot。
是否需要并行分支?使用 clone。
需要访问哪些外部 API?配置 allow_out 或 L7 rules
密钥怎么处理?优先用 CubeEgress inject,不进沙箱。
用户如何访问服务?配置 --expose-port,通过 CubeProxy 路由。
如何观测和清理?WebUI + 日志 + timeout 策略。

下一步

继续阅读 源码导读,把示例里的 API 调用对应到仓库中的实现模块。

微信公众号《有机系统》作者整理的个人学习笔记与教程。