AI Agent Sandbox 开源项目技术分析:从容器到 MicroVM,谁更适合跑下一代 Agent?
过去一年,AI Agent 的基础设施焦点正在从“如何调用模型”转向“如何安全地让模型干活”。
只要 Agent 开始执行代码、操作文件、访问网页、安装依赖、调用系统命令,问题就不再是 prompt engineering,而是一个更底层的工程问题:我们到底要把这个不完全可控的执行体放在哪里?
这就是 Agent Sandbox 重新变热的原因。
传统沙箱解决的是“不信任代码”的问题;AI Agent 沙箱解决的是“不完全信任一个会自己规划、自己调用工具、自己产生副作用的系统”的问题。它既要隔离风险,又要保留足够真实的运行环境;既要启动快、成本低,又要支持浏览器、终端、文件系统、MCP、IDE、Jupyter 等复杂工具链。
本文横向分析 8 个值得关注的开源项目:
•CubeSandbox•microsandbox•OpenSandbox•agent-infra/sandbox•kubernetes-sigs/agent-sandbox•rivet-dev/sandbox-agent•openbrowser•context-mode
结论先放前面:
如果你要做生产级、大规模、高并发 Agent 运行时,优先看 CubeSandbox;如果你要做本地开发、可嵌入 SDK、跨平台体验,优先看 microsandbox;如果你只是想快速给 Agent 配齐浏览器、终端、文件和 VSCode,agent-infra/sandbox 更实用;如果团队基础设施已经深度 Kubernetes 化,kubernetes-sigs/agent-sandbox 是更自然的云原生入口。
至于 openbrowser、context-mode、sandbox-agent,它们更像是 Agent 运行时生态里的专用组件,不应和完整沙箱运行时放在同一个维度里简单比较。
一、为什么 Agent 需要专门的 Sandbox?
普通应用沙箱通常关注三个问题:
1.代码能不能逃逸?2.资源能不能被限制?3.文件和网络能不能隔离?
Agent 沙箱还要多回答几个问题:
1.能不能高频创建和销毁环境?2.能不能保留会话状态?3.能不能在隔离环境里跑浏览器、Shell、包管理器、代码解释器?4.能不能对外暴露稳定 API,让模型、编排器、MCP 工具链统一调用?5.能不能在成本上支撑成百上千个并发 Agent?
这也是为什么 Docker 容器并不是终局。
容器的优势是生态成熟、镜像丰富、部署简单;但它共享宿主机内核,在多租户和不可信执行场景下,安全边界不够硬。传统 VM 隔离更强,但启动慢、内存重、部署密度低。MicroVM 则试图站在两者中间:用接近 VM 的隔离换取接近容器的启动速度和资源密度。
Agent Sandbox 的主战场,正在向 MicroVM、eBPF 网络隔离、快照恢复、预热池和标准化控制 API 收敛。
二、项目横向概览
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这 8 个项目其实可以分成四类。
第一类是完整沙箱运行时,代表是 CubeSandbox、microsandbox、OpenSandbox。它们关心隔离、启动、资源、网络、存储、生命周期和 API。
第二类是工具型沙箱环境,代表是 agent-infra/sandbox。它不追求最强隔离,而是追求“Agent 一进去就什么都有”:浏览器、Shell、文件系统、MCP、VSCode Server、Jupyter。
第三类是云原生控制面,代表是 kubernetes-sigs/agent-sandbox。它的重点不是重新发明虚拟化,而是把 Agent 运行环境抽象成 Kubernetes 里的声明式资源。
第四类是生态组件,代表是 sandbox-agent、openbrowser、context-mode。它们不是完整的底层隔离方案,但解决了 Agent 系统里的关键局部问题:控制多种 Coding Agent、让 Agent 浏览网页、减少工具输出对上下文窗口的污染。
三、评估框架:看沙箱不能只看 Star
我用 4 个维度评估这些项目:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
综合评分如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
评分高低不代表绝对好坏。Agent 沙箱选型最容易犯的错误,就是把“底层隔离能力”“开发环境完整度”“Agent 控制协议”“浏览器自动化能力”混在一起比。
CubeSandbox 和 openbrowser 不是同一类东西;microsandbox 和 context-mode 也不是同一层能力。更合理的方式是先明确你要解决的主要矛盾。
四、重点项目分析
1. CubeSandbox:高性能生产运行时的强候选
CubeSandbox 的定位很清晰:Instant, Concurrent, Secure & Lightweight Sandbox for AI Agents。
它的关键卖点是三个指标:
•冷启动小于 60ms,P99 小于 150ms•内存开销小于 5MB•E2B API 兼容,降低迁移成本
从架构上看,CubeSandbox 是典型的生产运行时设计:
CubeAPI-> CubeMaster-> Cubelet / CubeProxy / CubeVS-> CubeHypervisor / CubeShim-> KVM MicroVM
其中 CubeVS 使用 eBPF 做网络相关能力,底层通过 KVM 和 RustVMM 组件构建 MicroVM 隔离。这个方向的核心价值是:在接近硬件虚拟化的隔离边界下,把启动速度和资源开销压到可接受范围。
CubeSandbox 更适合这些场景:
•大规模 Agent 执行平台•多租户代码运行环境•E2B 替代或成本优化•对冷启动和部署密度非常敏感的生产系统
它的短板也很明确:
•主要面向 Linux 生产环境•项目较新,社区和 SDK 生态还需要时间积累•架构更重,团队需要具备运行时、网络和集群运维能力
如果你要做的是“内部工具给几个 Agent 跑命令”,CubeSandbox 可能过重;如果你要做的是“一个 Agent 云平台”,它值得重点 POC。
2. microsandbox:最像开发者产品的 MicroVM 沙箱
microsandbox 的一句话定位是:secure, local and programmable sandboxes for AI agents。
和 CubeSandbox 相比,它没有把自己包装成大型集群运行时,而是更强调本地、安全、可编程、可嵌入。
典型使用方式类似这样:
use microsandbox::Sandbox;let sandbox = Sandbox::builder("my-sandbox").image("python").cpus(1).memory(512).create().await?;let output = sandbox.exec("python", ["-c", "print('hello from sandbox')"]).await?;
它的技术关键词包括:
•libkrun•KVM-based microVM•smoltcp 用户态网络•OCI 镜像•Rust / Python / TypeScript SDK•MCP 支持
microsandbox 的优势是开发者体验。它更像一个可以被应用直接嵌入的沙箱 SDK,而不是只能由平台团队部署的基础设施组件。
它适合:
•本地 Agent 开发环境•桌面端或开发工具内嵌沙箱•需要跨平台支持的团队•需要快速验证 Agent 执行能力的产品
它的风险在于生产验证相对不足。如果你的目标是高并发、多租户、长期运行的云服务,仍然需要重点压测它的网络、存储、快照、资源隔离和异常恢复能力。
3. OpenSandbox:企业级安全沙箱的稳健路线
OpenSandbox 来自阿里巴巴,定位是 Secure, Fast, and Extensible Sandbox runtime for AI agents。
它更像企业工程体系里的沙箱框架:强调安全、扩展性、Kubernetes 相关能力和企业落地。相较于 CubeSandbox 的性能叙事和 microsandbox 的开发者体验,OpenSandbox 的关键词是“安全”和“可扩展”。
适合关注:
•企业内部 AI 应用运行时•需要审计、合规、安全治理的场景•已经在阿里云或类似企业基础设施上的团队•对 Python 生态和快速二次开发有偏好的团队
它不是性能指标最激进的项目,但在企业级语境下,极限性能往往不是唯一目标。权限模型、审计、隔离策略、部署治理、长期维护,可能更重要。
4. agent-infra/sandbox:不是最硬的沙箱,但最快能用
agent-infra/sandbox 的定位非常直接:All-in-One Sandbox for AI Agents。
它把 Browser、Shell、File、MCP、VSCode Server 放进一个 Docker 容器里。这个思路不追求最强隔离,而是追求开箱即用。
典型架构可以理解为:
Browser + VNCVSCode Server + Shell + File Ops + JupyterMCP Hub + Preview Proxy + MonitoringDocker Container
对于很多产品团队来说,这反而是最现实的第一步。因为早期问题通常不是“我能否支撑 5000 个并发 MicroVM”,而是“我的 Agent 能不能稳定打开浏览器、执行命令、读写文件、启动预览服务”。
它适合:
•原型验证•内部开发测试•Agent Demo 环境•需要浏览器、终端、文件、IDE 一体化的任务
它不适合:
•强多租户隔离•高风险不可信代码执行•对冷启动和资源密度极端敏感的生产环境
一句话:agent-infra/sandbox 是效率优先,不是安全边界优先。
5. kubernetes-sigs/agent-sandbox:把 Agent Runtime 变成 K8s 资源
kubernetes-sigs/agent-sandbox 的重点不是底层虚拟化,而是管理模型。
它通过 Kubernetes CRD 管理 isolated、stateful、singleton workloads,典型资源包括:
•SandboxClaim•SandboxTemplate•Sandbox•SandboxWarmPool
可以把流程理解成:
User-> SandboxClaim-> SandboxTemplate-> Sandbox-> Pod-> Runtime
它的价值在于把 Agent 沙箱纳入 Kubernetes 现有体系:声明式 API、Controller、调度、命名空间、RBAC、监控、日志、资源配额、GitOps。
如果你的公司已经有成熟 K8s 平台,这条路会很顺。你不需要重新训练团队理解一套全新的集群控制面。
但它也继承了 Kubernetes 的复杂度。对于小团队、单机开发、桌面 Agent、早期产品验证来说,它不是最低成本方案。
6. sandbox-agent:统一控制 Coding Agent,而不是重新做隔离
rivet-dev/sandbox-agent 的核心价值是 Universal Agent API。
它支持通过 HTTP 控制 Claude Code、Codex、OpenCode、Amp 等 Coding Agent,并通过统一会话 schema 输出事件。
这类项目解决的是另一个问题:当你想在产品里接入多个 Coding Agent 时,不应该让业务系统分别适配每一种 CLI、事件流和会话格式。
它适合:
•Coding Agent 平台•多 Agent 对比和路由•统一会话记录、回放、审计•在已有沙箱之上增加控制层
它不应该被当作底层安全沙箱。更合理的组合是:底层用 CubeSandbox、microsandbox、E2B、Daytona 或自研容器运行环境,上层用 sandbox-agent 统一控制不同 Agent。
7. openbrowser:Agent 的浏览器能力组件
openbrowser 聚焦一个具体问题:让 AI Agent 浏览网页。
在 Agent 系统里,浏览器不是普通工具。它有复杂状态:页面、DOM、cookie、localStorage、下载、弹窗、跨域、验证码、长任务、网络请求。直接把 Playwright 暴露给模型,往往会导致上下文噪声和操作不稳定。
openbrowser 的价值在于把浏览器自动化能力封装成更适合 Agent 使用的接口。
它适合:
•Web 自动化 Agent•信息检索和网页操作•表单填写、页面截图、流程验证•作为完整沙箱环境里的浏览器层
但它不是完整 Agent Sandbox。浏览器隔离不等于系统隔离;网页自动化能力也不等于代码执行安全。
8. context-mode:上下文窗口也是一种“沙箱”
context-mode 很有意思,因为它不是传统意义上的运行时沙箱。
它解决的是另一个真实问题:工具输出污染上下文窗口。
Agent 执行命令时,经常会把大量日志、文件内容、搜索结果、测试输出塞回模型上下文。结果是 token 成本上升,关键线索被噪声淹没,长任务稳定性变差。
context-mode 的思路是对工具输出做隔离和压缩,让模型只看到必要信息。它声称可以减少 98% 的工具输出 token 消耗。
这不是安全隔离,但它是认知隔离:把执行环境里的噪声挡在模型上下文之外。
它适合和其他沙箱组合使用,而不是单独替代沙箱运行时。
五、怎么选:先判断你的主要矛盾
场景一:你要做生产级 Agent 执行云
优先看 CubeSandbox。
原因很简单:生产级平台最怕三个东西:启动慢、密度低、隔离弱。CubeSandbox 的设计就是冲着这三个问题去的。
备选可以看 microsandbox,但需要更严格的生产压测。
场景二:你要做本地开发工具或 Agent SDK
优先看 microsandbox。
它的嵌入式 API、多语言 SDK、跨平台支持,对开发者产品更友好。你可以把它理解成“给每个 Agent 一个可编程的小电脑”。
场景三:你要快速做 Demo 或内部原型
优先看 agent-infra/sandbox。
它的价值不是隔离极致,而是把浏览器、终端、文件、IDE、MCP 这些东西一次性配齐。早期产品最缺的是反馈速度,不是完美架构。
场景四:你已经有成熟 Kubernetes 平台
优先看 kubernetes-sigs/agent-sandbox。
它能把 Agent 沙箱纳入已有 K8s 治理体系,适合平台团队推动,而不是每个业务组各自维护一套运行环境。
场景五:你要做 Coding Agent 平台
底层沙箱和上层控制要分开看。
底层可以是 CubeSandbox、microsandbox、容器或云厂商沙箱;上层可以用 sandbox-agent 统一控制 Claude Code、Codex、OpenCode、Amp 等 Agent。
这个分层非常重要。隔离环境负责“安全地跑”,控制层负责“稳定地管”。
场景六:你的 Agent 主要操作网页
openbrowser 可以作为浏览器能力层。
但如果网页操作之外还要执行系统命令、安装依赖、处理文件,就仍然需要完整沙箱承载。
场景七:你已经被工具输出撑爆上下文
看 context-mode。
它不是运行时隔离方案,但可能显著改善长任务 Agent 的上下文质量和 token 成本。
六、一个更实用的架构分层
真正落地时,不建议寻找“一个项目解决所有问题”。更现实的 Agent Runtime 架构通常分四层:
Agent Control Layer统一控制 Claude Code / Codex / OpenCode / 自研 AgentTool LayerBrowser / Shell / File / MCP / IDE / JupyterSandbox Runtime LayerMicroVM / Container / K8s Pod / Serverless SandboxInfrastructure LayerNetwork / Storage / Image / Snapshot / Observability / Policy
对应到项目:
•控制层:sandbox-agent•浏览器工具层:openbrowser•上下文优化层:context-mode•一体化工具层:agent-infra/sandbox•底层运行时:CubeSandbox、microsandbox、OpenSandbox•云原生管理层:kubernetes-sigs/agent-sandbox
把这些层次分清楚,选型会简单很多。
例如,一个生产级 Coding Agent 平台可以这样组合:
前端产品-> Agent 编排服务-> sandbox-agent 统一控制 Claude Code / Codex-> CubeSandbox 提供 MicroVM 执行环境-> openbrowser 提供浏览器操作能力-> context-mode 控制工具输出进入上下文的粒度-> K8s / 自研调度系统管理资源池
这比押注单一项目更符合工程现实。
七、趋势判断
1. MicroVM 会成为高安全 Agent Runtime 的主流方向
容器不会消失,但在不可信代码、多租户、云端 Agent 执行场景里,MicroVM 的吸引力会越来越强。
关键原因不是“VM 更高级”,而是隔离边界更容易解释,也更容易通过安全审计。
2. 冷启动会成为核心竞争指标
Agent 任务天然碎片化:创建环境、执行命令、暂停、恢复、销毁。启动慢会直接转化成用户等待和基础设施成本。
未来优秀沙箱的标准大概率是:
•冷启动小于 100ms•P99 可控•内存开销小于 20MB•支持预热池和快照恢复
3. MCP 会推动工具层标准化
Agent 不可能只用 Shell。浏览器、文件、数据库、CI、代码编辑器、内部系统都需要被统一暴露给模型。
MCP 的普及会让沙箱不再只是“运行代码的地方”,而是“托管工具能力的边界”。
4. 上下文管理会成为运行时的一部分
过去我们认为沙箱只隔离 CPU、内存、文件、网络。Agent 时代还要隔离信息流。
哪些工具输出能进入模型上下文?哪些日志只进审计系统?哪些文件内容需要摘要?这些问题会逐渐进入 Agent Runtime 的设计范围。
5. 生产平台会走向组合式,而不是单体式
最有可能胜出的不是“一个超级沙箱项目”,而是一套可组合栈:
•MicroVM 负责安全执行•K8s 或自研调度负责资源管理•MCP 负责工具协议•Agent 控制层负责会话和事件•上下文层负责信息压缩•可观测性系统负责审计和回放
这也是为什么本文不建议只按 stars 排序选型。
八、最终建议
如果只给一个选型表,我会这样建议:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
更重要的是,不要把 Agent Sandbox 当成一个单点组件。
它会逐渐变成 Agent 基础设施的核心边界:模型在边界外思考,工具在边界内执行;策略决定什么能做,审计记录做了什么,运行时保证做坏了也不会污染宿主系统。
如果说 RAG 解决的是“Agent 知道什么”,MCP 解决的是“Agent 能调用什么”,那么 Sandbox 解决的就是最关键的问题:
Agent 真正动手时,风险被关在哪里?
附录:项目链接
|
|
|
|
|
|
https://github.com/TencentCloud/CubeSandbox[1] | https://docs.cubesandbox.ai[2] |
|
|
https://github.com/superradcompany/microsandbox[3] | https://docs.microsandbox.dev[4] |
|
|
https://github.com/alibaba/OpenSandbox[5] | https://open-sandbox.ai[6] |
|
|
https://github.com/agent-infra/sandbox[7] | https://sandbox.agent-infra.com[8] |
|
|
https://github.com/kubernetes-sigs/agent-sandbox[9] | https://agent-sandbox.sigs.k8s.io[10] |
|
|
https://github.com/rivet-dev/sandbox-agent[11] | https://sandboxagent.dev[12] |
|
|
https://github.com/ntegrals/openbrowser[13] |
|
|
|
https://github.com/mksglu/context-mode[14] | https://context-mode.com[15] |
References
[1]: https://github.com/TencentCloud/CubeSandbox[2]:https://docs.cubesandbox.ai[3]:https://github.com/superradcompany/microsandbox[4]:https://docs.microsandbox.dev[5]:https://github.com/alibaba/OpenSandbox[6]:https://open-sandbox.ai[7]:https://github.com/agent-infra/sandbox[8]:https://sandbox.agent-infra.com[9]:https://github.com/kubernetes-sigs/agent-sandbox[10]:https://agent-sandbox.sigs.k8s.io[11]:https://github.com/rivet-dev/sandbox-agent[12]:https://sandboxagent.dev[13]:https://github.com/ntegrals/openbrowser[14]:https://github.com/mksglu/context-mode[15]: https://context-mode.com
夜雨聆风