
当模型开始运行命令、改代码、访问网络和执行测试时,sandbox 就不再是产品功能,而是训练/推理系统的一层基础设施。
如果你第一次接触 AI Agent,可以先把 sandbox 理解成“给模型临时分配的一台隔离小电脑”。模型可以在里面运行 Python、Shell、测试命令,读写文件,甚至启动一个本地服务;任务结束后,这台小电脑可以销毁、暂停、恢复,或者回滚到某个干净状态。
CubeSandbox 是腾讯云开源的 AI Agent 沙箱项目,GitHub 仓库位于 TencentCloud/CubeSandbox。它是一个快速发展的开源社区项目:仓库创建于 2026-04-10,本地 Git 历史里的首个开源提交是 2026-04-16;截至 2026-07-10,GitHub 公开数据约为 9.5k stars。快速的增长信号不能直接等同于生产成熟度,但说明 AI sandbox / agent runtime 正在成为社区集中关注的基础设施方向。
本文要回答的问题是:为什么 CubeSandbox 这类系统不能简单理解成“启动更快的 Docker”?核心判断是:对 coding agent 和 agent RL 来说,sandbox 需要同时解决隔离、状态复用、调度、网络治理和审计。Docker 主要是应用运行时;CubeSandbox 更接近一个面向 AI Agent 的环境执行层。
先看它在训练/推理系统里的位置。读图时注意,sandbox 不在 GPU 训练链路内部,但它会同时影响 rollout 和 reward:模型动作要进环境,环境结果又会回到上下文或评分系统。

训练/推理架构中的 sandbox 位置
这张图说明了一个容易被忽略的事实:Agent RL 的系统瓶颈不只在 GPU。只要任务要求模型跑代码、访问仓库、执行测试,环境层的创建速度、隔离强度、网络策略和失败归因,都会影响训练吞吐和 reward 质量。
传统 LLM 训练里,模型通常只做一件事:给定 prompt,生成 tokens。到了 coding agent,模型会多做几件事:
pytest、npm test或编译命令;这些动作不能直接跑在 trainer 进程或宿主机上。原因很简单:模型生成的命令不可信,任务依赖也可能互相污染,网络访问还可能泄露 secret。于是平台需要给每条任务准备一个隔离环境,这就是 sandbox 的基本角色。
CubeSandbox README 把自己定位为基于 RustVMM 与 KVM 的安全沙箱服务,支持单机和多机集群,并兼容 E2B SDK。这句话里有三个关键词:
Sandbox.create()、commands.run()、files.read()等接口迁移。对新读者来说,可以先记住一句话:sandbox 不是“让模型能跑代码”的按钮,而是“让模型安全、可重复、可规模化地跑代码”的系统。
下面这张图把 CubeSandbox 的主要组件放在一起。读图时重点看两条链路:创建沙箱走控制面,执行命令和访问服务走数据面。

CubeSandbox 总体架构
CubeSandbox 的组件大致可以分成四类:
层次 | 组件 | 新读者可以怎样理解 |
|---|---|---|
API 层 | CubeAPI | 接住 SDK 请求,比如创建沙箱、删除沙箱、查看状态 |
控制面 | CubeMaster | 选择在哪个节点上启动沙箱,并维护生命周期状态 |
节点运行时 | Cubelet、CubeShim、CubeHypervisor | 在具体机器上准备 rootfs、启动 MicroVM、暂停和恢复 |
数据面 | CubeProxy、CubeVS、CubeEgress、CubeCoW | 处理访问路由、网络策略、出站代理、快照和克隆 |
官方架构文档也采用控制面和数据面的划分:控制面包括 CubeAPI、CubeMaster、WebUI 和 Redis;数据面包括 Cubelet、CubeShim、CubeHypervisor、CubeCoW、CubeVS、CubeEgress、CubeProxy。README 中的组件表也明确列出了 CubeAPI、CubeMaster、CubeProxy、Cubelet、CubeVS、CubeEgress、CubeHypervisor 和 CubeShim 的职责。
这和我们前面讲 train/serve 系统时的思路一致:上层不要直接关心每个 worker 怎么启动进程,而是通过一个控制器把资源、状态和路由管理起来。区别在于,训练系统管理的是 GPU worker;CubeSandbox 管理的是可执行环境。
很多人看到 sandbox 会自然联想到 Docker。这个类比有帮助,但不能停在这里。Docker 容器通常共享宿主机内核,隔离主要依赖 namespace、cgroup、seccomp 等机制。CubeSandbox 的设计重点是 MicroVM:每个 sandbox 在 KVM MicroVM 中运行,有独立 guest kernel。
这张图展示了关键路径。读图时注意,containerd 还在,但它不是终点;CubeShim 把 containerd 的生命周期接口接到 CubeHypervisor,最后启动的是 MicroVM。

containerd 到 MicroVM 的执行路径
CubeSandbox 架构文档里说,CubeShim 实现 containerd Shim v2 接口,作为容器运行时抽象与实际 MicroVM 之间的桥梁;CubeHypervisor 基于 RustVMM 和 KVM 管理 MicroVM 的 vCPU、内存、virtio 设备、启动、暂停、快照和恢复。README 也把 CubeHypervisor 和 CubeShim 放在虚拟化层:CubeShim 实现 containerd Shim v2,CubeHypervisor 管理 KVM MicroVM。
所以更准确的理解是:CubeSandbox 借用了 container-like 的生命周期和镜像生态,但把执行隔离放到了 VM 级别。这一点对 AI Agent 很关键,因为模型生成的代码默认不可信。
如果只做一次代码执行,创建一个环境慢一点也许还能忍。训练和评测不一样:一批样本可能要成百上千次创建环境,同一个题目还可能采样多条 trajectory。每次都从零安装依赖,会让 GPU 等 CPU、等磁盘、等网络。
下面这张图解释 template、snapshot、clone 和 rollback 的关系。读图时重点看:训练阶段希望从一个干净、已预热的环境快速派生很多副本,然后在执行完后回收或回滚。

Template、Snapshot、Clone 与 Rollback
CubeSandbox 的示例把 snapshot、rollback、clone 作为一组 API 展示:可以创建快照、列出快照、从快照启动新沙箱、从运行中沙箱克隆多个沙箱,也可以原地 rollback。架构文档还说明,CubeCoW 通过内核 FICLONE在 XFS reflink 上实现快照和克隆,模板启动时会克隆 rootfs 与内存卷,再由 CubeShim 从内存快照恢复 VM。
放到 coding RL 里,这个能力对应一个非常朴素的需求:同一条 SWE-bench 样本要从固定 commit、固定依赖、固定初始文件系统出发。否则 reward 结果可能不是模型能力差异,而是环境漂移。
模型能运行命令之后,安全问题不再只是“别破坏宿主机”。还包括:能不能访问公网?能不能访问内网?API key 怎么给?日志里会不会泄露 secret?
这张图展示 CubeVS 和 CubeEgress 的分工。读图时注意,CubeVS 更靠近内核态网络路径,CubeEgress 更靠近 L7 出站策略、凭证注入和审计。

CubeVS 与 CubeEgress 出站治理
网络架构文档说明,CubeVS 用三个 eBPF 程序替代传统 Linux Bridge、OVS 或基于 iptables 的路径,并在 TAP 设备、宿主机网卡和本机代理边界处理 NAT、策略和端口映射。逐沙箱网络策略用 allow_out和 deny_out两组 LPM Trie 表达,策略可在运行时更新。
CubeEgress 则处理更上层的 HTTP/HTTPS 请求。安全代理文档写明,它会拦截沙箱发起的出方向 HTTP/HTTPS 请求,按规则做域名过滤、凭证注入和访问审计。凭证注入的关键点是:工作负载发请求时不带 Authorization,CubeEgress 命中规则后再注入 header,secret 不进入沙箱环境变量、文件系统或进程空间。
这对训练系统很重要。很多任务需要访问 PyPI、npm、GitHub 或内部制品库,但不应该允许模型随便扫内网、读取 secret,或者把 key 写进日志。把这些边界放在 sandbox 平台层,比在 reward 脚本里临时过滤字符串可靠得多。
CubeSandbox 不是所有场景的默认答案。它的价值来自“强隔离 + 快速复用 + 网络治理 + 集群化管理”,也会带来 KVM、Linux 网络、节点运维和模板管理成本。
下面这张图给出一个选型判断。读图时不要只看“能不能跑代码”,而要看任务是否需要不可信代码、多租户隔离、可复现环境和大批量并发。

CubeSandbox 选型判断
一个务实判断是:
为了把 CubeSandbox 放进更大的生态里,可以把相关项目按“离业务有多近”分层看。下面不是完整榜单,而是帮助读者建立全局坐标:有的项目提供托管 sandbox 和 SDK,有的项目做通用 sandbox API,有的项目更靠近底层隔离运行时。
项目 | 简单定位 | 和 CubeSandbox 的关系 |
|---|---|---|
E2B | 面向 AI-generated code 的开源 sandbox 基础设施和 SDK 生态 | CubeSandbox 兼容 E2B API,核心价值之一就是降低已有 E2B Agent 代码迁移到自托管环境的成本 |
OpenSandbox | 通用 AI sandbox 平台,强调统一 API、多语言 SDK,以及 Docker/Kubernetes runtime | 更像跨 runtime 的 sandbox API 层;CubeSandbox 更强调 KVM MicroVM、集群控制面、snapshot 和网络治理 |
Microsandbox | local-first 的 microVM runtime,用于在本地安全运行不可信 workload | 更适合本地开发、嵌入式执行和轻量自托管;CubeSandbox 更偏多节点 sandbox 服务平台 |
Daytona | 面向 AI-generated code 和 agent workflow 的安全弹性运行时 | 和 CubeSandbox 一样关注 agent 执行环境,但更偏“可组合 computer / sandbox runtime”体验 |
Agent-Sandbox / Kubernetes SIG Agent Sandbox | 面向 Agent 的 sandbox 或 Kubernetes 原生沙箱抽象 | 如果团队已有 Kubernetes 平台,这类项目更容易纳入 K8s 运维模型;CubeSandbox 当前更像自成体系的 MicroVM sandbox 集群 |
AIO Sandbox | 把 Browser、Shell、File、MCP、VS Code Server 放进一个 agent sandbox 环境 | 更像“Agent 工具环境打包”;CubeSandbox 更关注执行环境的隔离、调度、快照和网络边界 |
Firecracker、Kata Containers、gVisor | 底层隔离技术:microVM、轻量 VM 容器运行时、application kernel sandbox | 它们不是完整 AI sandbox 平台,但定义了很多 sandbox 系统的隔离边界和运行时选择 |
这样看,CubeSandbox 处在中间层:比 Firecracker/Kata/gVisor 更靠近 Agent 平台,因为它提供 API、调度、template、snapshot、proxy 和 egress;又比纯 SDK/托管服务更靠近基础设施,因为它需要团队自己管理节点、网络、存储和安全策略。
OpenClaw 这类项目的热度可能会起伏。一个具体项目从爆红到回落,并不稀奇:早期用户会被“个人 AI 助手”“聊天入口控制工具”“本地运行 Agent”吸引,随后真正留下来的,是办公、研发、运维、数据分析等场景里那些需要长期稳定运行的任务。
但 CubeSandbox 的价值不完全依赖某一个 Agent 项目的热度。更大的趋势是:AI 会进入越来越多办公场景,从“回答问题”走向“执行任务”。当 Agent 开始帮人处理邮件、改表格、跑脚本、查日志、改代码、调用内部系统时,企业和团队首先要问的不是“模型聪不聪明”,而是:
从这个角度看,OpenClaw-style agent 解决的是“用户从哪里发起任务、Agent 如何组织工具和上下文”;CubeSandbox 解决的是“这些工具动作在哪里安全执行、如何复现、如何限制网络和 secret、如何审计失败”。前者更像入口和控制面,后者是环境执行层。
所以即使 OpenClaw 项目本身热度回落,CubeSandbox 这类执行层的价值反而可能继续放大。只要 Agent 从个人玩具进入真实办公和企业流程,就需要把不可信代码、文件操作、网络访问和外部凭证放进一个可治理的边界里。热度会迁移,执行层需求不会消失。
CubeSandbox 不是“更快的 Docker”这个判断,背后有一条更大的系统线索:
LLM generates actions
-> sandbox executes actions
-> files / logs / tests / network become observations
-> reward or next turn depends on environment result
-> training system updates policy
当模型只是生成文本时,训练系统主要关心 token、logprob、reward 和 GPU worker。当模型开始操作环境时,训练系统还必须关心环境的隔离、复用、网络、secret、审计、失败类型和容量规划。
下一篇会继续往 veRL 里走:CubeSandbox 作为环境层,究竟是接到 reward function,还是接到 AgentLoop?这两个路径的训练含义完全不同。