OpenAI Agents SDK集成CubeSandbox实战:为Agent装上安全代码执行器
【免费下载链接】CubeSandboxInstant, Concurrent, Secure & Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox
想让 AI Agent 真正"动手"跑代码?OpenAI Agents SDK 提供了官方的 Sandbox 抽象,而开源项目CubeSandbox正是为 AI Agent 打造的即时、并发、安全且轻量级的代码执行沙箱——它兼容 E2B API,能在 60ms 内拉起一个硬件级隔离的沙箱,让 Agent 生成的 Python 代码在独立 MicroVM 中安全执行,从根源上避免"LLM 生成恶意指令直接污染宿主机"的风险。
上图是典型的 Agent 代码执行闭环:用户提出需求 → AI Agent 调用 LLM 生成代码 → 在 CubeSandbox 沙箱中创建执行 → 把图表、PDF 等结果返回给用户。本文将带你用 4 步把 OpenAI Agents SDK 接入 CubeSandbox,并跑通一个"数据分析 + 自动画图"的 Code Interpreter 实战。
为什么 Agent 需要一个安全代码执行器?
AI Agent 最"危险"的动作就是执行 LLM 生成的代码:
- 直接在本机
exec()运行 → 一条rm -rf或数据外传就可能毁掉宿主机; - 用传统 QEMU 虚拟机隔离 → 冷启动要 2~3 秒,Agent 每一步都要等,体验极差;
- 用容器隔离 → 共享内核,逃逸面大,难以抵御有"意图"的 Agent 输出。
CubeSandbox 基于RustVMM + KVM构建,每个沙箱都是一个运行独立 Linux 内核的 MicroVM:既做到硬件级隔离,又把冷启动压到毫秒级、内存开销控制在 5MB 左右,天然适合高并发、高密度的 Agent 工作负载。
整体架构:控制面与执行面如何分工
在跑 Demo 之前,先花 1 分钟看懂 架构总览:
对 Agent 开发者来说,只需关心两个角色:
| 角色 | 组件 | 职责 |
|---|---|---|
| 控制面 | CubeAPI+ CubeMaster | CubeAPI 提供E2B 兼容 API,负责鉴权与调度 |
| 执行面 | Cubelet / CubeShim /CubeHypervisor | 在计算节点拉起 MicroVM 沙箱并管理生命周期 |
关键点:OpenAI Agents SDK 的E2BSandboxClient指向 CubeAPI 就能工作——你不需要自己写任何 Provider,改一个环境变量即可完成从 E2B 云到自建 CubeSandbox 的切换。
快速上手:四步跑通 Agent 沙箱集成
示例代码位于 examples/openai-agents-code-interpreter/,官方还准备了详细的集成指南。
第 1 步:安装 Python 依赖
需要 Python 3.10+,执行:
pip install -r requirements.txt第 2 步:配置环境变量
复制.env.example为.env并填写:
| 变量 | 说明 |
|---|---|
E2B_API_URL | CubeAPI 地址,如http://<cube-host>:3000 |
E2B_API_KEY | CubeAPI 鉴权密钥 |
CUBE_TEMPLATE_ID | 沙箱模板 ID |
CUBE_SSL_CERT_FILE | (可选)CubeSandbox CA 证书路径 |
OPENAI_API_KEY/OPENAI_BASE_URL | 任意 OpenAI 兼容 LLM 服务的密钥与端点 |
第 3 步:创建沙箱模板
用仓库自带的cubemastercli从镜像创建模板(Code Interpreter 形态需要暴露 49983 与 49999 两个端口):
cubemastercli template create-from-image \ --image cube-sandbox-image.tencentcloudcr.com/demo/e2b-code-interpreter:v1.1-data \ --writable-layer-size 1Gi \ --expose-port 49983 --expose-port 49999 \ --probe 49983把输出的模板 ID 填入CUBE_TEMPLATE_ID。
第 4 步:运行 Agent
python code_interpreter_demo_ci.py # 或指定问题 python code_interpreter_demo_ci.py --question "Plot units sold per product as a bar chart."沙箱创建后,Manifest会自动把sales.csv等种子文件写入工作区,Agent 随即开始多轮代码执行。
两种代码执行模式怎么选?
示例目录提供了功能等价的两个入口,差异只在 Python 执行后端:
| 维度 | 通用 E2B 模式 | Code Interpreter 模式 |
|---|---|---|
| 执行方式 | session.write()+exec("python ...") | sandbox.run_code()(Jupyter kernel) |
| 会话状态 | 每次 exec 都是新进程 | 变量 / DataFrame 跨轮保留 |
| 图像捕获 | 需手动plt.savefig() | 自动从执行结果解码保存 |
| 错误信息 | 完整 stderr 流 | 结构化异常(name/traceback) |
| 适用模板 | 任意装了 python 的模板 | 需预装 code-interpreter runtime(多一个 49999 端口) |
📌 选型建议:想要"类 Jupyter、上下文连续"的分析体验 → 选code_interpreter_demo_ci.py;模板环境简单、只求兼容 → 选code_interpreter_demo.py。
实战演示:Agent 自动完成数据分析与画图
以默认问题为例——"分析 sales.csv:计算收入、画月度趋势图、输出 Top-3 产品表格、给出总结"。一次典型运行的输出如下(节选):
[python] running 121 bytes in kernel [python] (14, 4) [python] saved output/figure_01.png (32115 bytes) [python] | Product | Total Revenue | [python] | Gamma Gizmo | 2178 | [python] Total revenue: $7,007.40 ================================================================ **Top-3 Products by Total Revenue** | Gamma Gizmo | 2,178.00 | | Beta Gadget | 2,156.00 | | Alpha Widget | 1,512.40 | ================================================================全程无需人工干预:Agent 自己加载数据、计算units * unit_price、用 matplotlib 画折线图(自动落盘到output/figure_01.png)、汇总 Markdown 表格,最后给出两句话的管理摘要。整个过程发生在 CubeSandbox 的 MicroVM 内,宿主机与外网均受沙箱网络策略约束。
CubeSandbox 凭什么"又快又安全"?
⚡ 毫秒级冷启动:预快照模板 + RustVMM 恢复路径,跳过传统虚拟机的全部冷启动开销:
🔒 低内存开销、高密度部署:Hypervisor 自身开销仅约 5MB,可以在单机上高密度地并发运行大量 Agent 沙箱:
🛡️ 零信任出口:沙箱的所有出站流量都经过 CubeEgress 七层代理,域名必须显式放行——Agent 即使"想"泄露数据也出不去。更多架构细节可阅读 架构总览。
进阶玩法:暂停/恢复与 SWE-bench 调试
- 暂停/恢复(Pause/Resume):加
--pause-on-exit参数,Agent 退出时沙箱不被销毁而是暂停,之后可凭状态直接恢复——配合 CubeSandbox 的快照能力,长任务的中间状态(文件、内存)完整保留; - SWE-bench 场景:main.py 是一个完整的 SWE-bench Agent,在沙箱中自主定位 Django 的
django__django-13447bug、分析根因并给出修复方案,内置 LLM 连通性预检、流式输出与端到端追踪; - 最小 Shell 示例:只想验证链路是否打通?simple_demo.py 用
--sandbox-only即可只创建/销毁沙箱做连通性测试。
小结
为 OpenAI Agents SDK 集成 CubeSandbox,本质只做了三件事:
- 把
E2B_API_URL指向 CubeAPI; - 在
E2BSandboxClientOptions中填入 CubeSandbox 模板 ID; - 加上少量适配补丁(root 用户、流式输出、SSL 隔离)。
换来的是一个60ms 冷启动、硬件级隔离、5MB 内存开销的安全代码执行器。无论是数据分析、代码调试还是 RL 训练环境,Agent 都可以放心地"放手跑代码"了。
【免费下载链接】CubeSandboxInstant, Concurrent, Secure & Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考