AI Agent 沙箱技术选型与原理深度解析
AI Agent 的沙箱隔离正在从容器向 MicroVM 全面迁移。 2024-2025年间,以 Firecracker 和 gVisor 为代表的轻量级虚拟化方案已成为行业主流选择——OpenAI 的 Code Interpreter 基于 gVisor 构建,E2B 的沙箱月创建量从 4 万飙升至 1500 万,Anthropic 的 Cowork 则直接采用 Apple Virtualization.framework 提供完整 VM 级隔离。这场技术演进的核心驱动力在于:AI Agent 执行的代码本质上是不可信的,传统容器共享内核的隔离模型已无法满足安全要求。本文从产品选型、底层原理、技术权衡和最新趋势四个维度,系统梳理当前 AI Agent 沙箱技术栈的全貌。
主流 AI Agent 产品的沙箱选型呈现三种范式
当前 AI Agent 产品在沙箱选型上已形成清晰的分层格局,大致可分为云端托管型、本地进程型和 API 开放型三种范式。理解这些选择背后的权衡对架构设计至关重要。
OpenAI Code Interpreter 采用 gVisor(runsc)运行在 Kubernetes/Azure 上的方案。多位安全研究者通过逆向工程确认,沙箱内的 hostname 为 runsc,uname -a 返回的内核版本签名 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 是 gVisor 的典型特征。每个沙箱分配 9GB 内存、4 个 vCPU,内部运行 FastAPI 服务管理 Jupyter Kernel,通过 ZeroMQ 执行代码。网络完全锁死——逆向分析者称"找不到任何将数据从沙箱传出的方式,除了官方 RPC 通道"。沙箱镜像约 7GB,预装了 ffmpeg、ImageMagick、LaTeX、Playwright、LibreOffice 等工具链。冷启动被隐藏在 LLM 推理延迟中,用户感知约 500ms。
OpenAI Codex 则采用更精细的双阶段模型。云端版本使用 Docker 容器,分为 Setup 阶段(有网络,可安装依赖,可访问 Secrets)和 Agent 阶段(默认离线,Secrets 已清除)。容器缓存最长 12 小时。其基础镜像 codex-universal 已开源(github.com/openai/codex-universal)。CLI/IDE 版本则走轻量路线:Linux 上使用 Landlock LSM + seccomp-bpf,macOS 上使用 Apple Seatbelt,默认禁止网络访问,文件写入限于当前工作区。
Anthropic 的产品线展现了从轻量到重度隔离的完整光谱。Claude Code CLI 使用 OS 级原语——macOS 上调用 Seatbelt(sandbox-exec),Linux 上使用 bubblewrap。其特色在于网络隔离方案:所有出站流量通过 Unix domain socket 代理路由,代理使用 JWT token 编码域名白名单(payload 包含 allowed_hosts: "github.com,pypi.org,npmjs.org,..."),token 有效期约 4 小时。Linux 上还额外添加 seccomp-bpf 过滤器阻止 AF_UNIX socket 创建以防绕过。该方案已开源为 @anthropic-ai/sandbox-runtime。Claude Cowork 走向了另一个极端——在 macOS 上通过 Apple Virtualization.framework(VZVirtualMachine) 启动完整的 Linux VM(Ubuntu 22.04 ARM64,内核 6.8),VM 内部再叠加 bubblewrap + seccomp 实现双层隔离。文件共享通过 VirtioFS 实现,仅挂载用户授权的目录,MCP 服务器通过 SDK 协议动态传入 VM。
Manus AI 为每个任务分配独立的云端 Linux VM,提供 root 权限和 sudo 访问,采用零信任安全模型。沙箱支持休眠/唤醒周期,空闲 7-21 天后回收,关键文件(用户上传物、AI 生成物)会在新沙箱中恢复。浏览器自动化基于开源 browser-use 框架。Devin 类似地提供"云端笔记本电脑"概念的沙箱,包含 Shell、VS Code 风格编辑器和无头 Chrome 三个核心工具,支持矢量化代码库快照和完整操作回放时间线,允许跨越数小时甚至数天的长任务。
开源领域同样分化明显。SWE-agent 通过 SWE-ReX 运行时抽象了执行后端,支持 Docker(默认)、gVisor、bubblewrap、Modal 云端等多种后端,每次命令执行是独立的 subprocess.run 语义。OpenHands(原 OpenDevin)使用 Docker 容器,内部运行 REST API 服务器、Jupyter IPython 和 Chromium/Playwright,并已官方集成 Daytona 云端运行时作为替代后端。Cursor 的 Agent 模式则复用了与 Codex CLI 相同的 OS 级原语——macOS 用 Seatbelt,Linux 用 Landlock + seccomp——生产数据显示沙箱化后 Agent 停止频率降低 40%。GitHub Copilot Coding Agent 则利用 GitHub Actions Runner 作为临时执行环境,通过防火墙限制网络,Agent 仅能推送到 copilot/ 前缀的分支。
| 产品 | 沙箱技术 | 隔离级别 | 网络策略 | 开源情况 |
|---|---|---|---|---|
| OpenAI Code Interpreter | gVisor (runsc) + K8s | 容器+syscall拦截 | 完全锁死 | 否 |
| OpenAI Codex Cloud | Docker 容器(双阶段) | 容器级 | Setup有网/Agent无网 | 基础镜像开源 |
| OpenAI Codex CLI | Landlock/Seatbelt | OS进程级 | 默认禁止 | CLI 开源 |
| Claude Code CLI | bubblewrap/Seatbelt + 出口代理 | OS进程级 | JWT白名单代理 | 沙箱运行时开源 |
| Claude Cowork | VZVirtualMachine + bwrap + seccomp | 完整VM+进程级 | 严格白名单 | 否 |
| Manus AI | 云端独立 VM | 完整VM | 完全开放 | 否 |
| Devin | 云端沙箱 | 容器/VM(私有) | 受控 | 否 |
| Cursor Agent | Seatbelt/Landlock+seccomp | OS进程级 | 默认禁止 | 否 |
| SWE-agent | Docker/gVisor/bwrap/Modal | 可配置 | 可配置 | 完全开源 |
| OpenHands | Docker + 可选Daytona | 容器级 | 可配置 | 完全开源 |
| GitHub Copilot Agent | Actions Runner + 防火墙 | 临时CI环境 | 防火墙限制 | 否 |
从 Linux 内核原语到 MicroVM:隔离技术的四个层次
理解 AI Agent 沙箱需要从底层开始——所有隔离方案最终都建立在 Linux 内核提供的四类基础原语之上,而更高级的方案则在此基础上增加了额外的安全边界。
第一层:内核原语组合。这是容器隔离的基石。Linux namespaces 提供八种资源视图隔离(mount、PID、network、user、UTS、IPC、cgroup、time),限制进程能"看到"什么。cgroups v2 在统一层次结构下控制 CPU、内存、IO、PID 等资源的使用量,防止 fork 炸弹或内存耗尽等 DoS 攻击。seccomp-bpf 通过 BPF 程序在每次系统调用时进行过滤,Docker 默认 profile 阻止约 44 个危险 syscall。Capabilities 则将 root 权限拆分为细粒度的能力位。这些原语可以有效组合:namespace 限制可见性 → cgroups 限制资源 → seccomp 限制 syscall → capabilities 限制特权 → AppArmor/SELinux 限制访问模式。Google 的 nsjail(github.com/google/nsjail)是将这些原语组合到极致的优秀范例。但根本局限在于:所有被允许的 syscall 仍然进入同一个宿主内核的代码路径,一个内核漏洞(如 CVE-2024-1086、Dirty COW)就可能导致逃逸。
第二层:用户态内核(gVisor)。gVisor 的核心是 Sentry——一个用 Go 重新实现的 Linux syscall 接口(覆盖约 237/350 个 syscall),包含完整的内存管理、文件系统、网络栈和进程管理。应用程序的 syscall 不会到达宿主内核,而是被 Sentry 拦截并在用户态处理。Sentry 自身仅使用 53-68 个宿主 syscall(通过 seccomp-bpf 白名单严格限制)。文件系统操作则通过 Gofer 进程中转,走 9P 协议。syscall 拦截支持三种平台模式:Systrap(默认,基于 seccomp-bpf 拦截,不需要 KVM)、KVM(利用硬件虚拟化做地址空间隔离)和 ptrace(最慢,遗留方案)。性能方面,CPU 密集型负载接近原生,但 syscall 开销 2.2-72 倍不等——简单 syscall 约 2.2×,经过 Gofer 的文件操作可达 72×。蚂蚁集团生产数据显示优化后 70% 的应用运行开销低于 1%,25% 低于 3%。Google 的全部 Serverless 产品(Cloud Run、App Engine、Cloud Functions、GKE Sandbox)均基于 gVisor。
第三层:MicroVM(Firecracker / Cloud Hypervisor)。Firecracker 是 AWS 用 Rust 编写的轻量级 VMM,通过 KVM 创建拥有独立内核的虚拟机。其设计哲学是极致精简:仅模拟 5-6 个 virtio 设备(对比 QEMU 的数百个),代码量约 5 万行 Rust(对比 QEMU 的 200 万行 C)。安全模型采用双层防御:虚拟化屏障(guest 内核与 host 内核完全隔离,即使 guest 内核被攻破也无法访问宿主资源)+ Jailer 屏障(Firecracker 进程自身运行在 chroot + cgroups + seccomp-bpf + 非特权用户的多重约束下)。性能表现优异:启动时间 <125ms(从 API 调用到 guest 的 /sbin/init),VMM 进程本身启动仅需 ~12ms,内存开销 <5 MiB/VM,单机可创建 150 VM/秒,CPU 性能保持裸金属的 >95%。支持快照/恢复(用于 AWS Lambda SnapStart)。但存在两个关键限制:不支持 GPU 直通(PCIe 支持工作已暂停)和需要裸金属或嵌套虚拟化(/dev/kvm 访问)。Cloud Hypervisor 同样基于 Rust 和 rust-vmm 组件库,但增加了 CPU/内存热插拔、GPU 直通(VFIO)、实时迁移和 Windows 客户机支持,是 Kata Containers 的默认 VMM。Kata Containers 则是一个编排框架,将 MicroVM 包装为标准 OCI/CRI 接口,让 Kubernetes 可以像管理容器一样管理 VM——启动约 150-300ms,开销约 5-10%。
第四层:WebAssembly 沙箱。WASM 通过四个安全不变量提供隔离:线性内存隔离(每个模块私有内存,边界检查)、无直接 syscall(所有系统交互通过 WASI 代理)、结构化控制流(调用栈不可访问)、基于能力的安全(零权限起步)。启动速度以微秒计,远快于容器和 VM。然而 WASM 目前不适合 AI Agent 的主要场景——缺少完整 Linux 环境、无 GPU 访问、Python 生态支持有限。NVIDIA 的 Pyodide 方案(CPython 编译为 WASM)和 amla-sandbox 是少数实际应用案例。wasmCloud/Cosmonic 在 MCP 服务器隔离方面有探索,Microsoft 的 Wassette(2025年8月发布)为 MCP 安全提供了 WASM 组件模型,但生态仍不成熟。
关键技术权衡:性能、安全与运维复杂度的三角
选择沙箱技术本质上是在三个维度间做权衡,而不同的 Agent 使用场景对这三个维度有不同的优先级。
启动速度是 Agent 交互体验的关键。WASM 以微秒级领先,但实用性受限。Daytona 的 Docker 容器方案实现了 27-90ms 的业界最快冷启动。gVisor 典型启动 50-100ms。Firecracker 原生 ~125ms,E2B 通过预热快照池将其优化到 ~150ms(同区域可达 80ms)。Kata Containers 需要 150-300ms。更重要的是"体感冷启动"的优化策略:OpenAI 将容器冷启动隐藏在 LLM 推理延迟之后;E2B 使用 Dockerfile 定义模板然后预构建快照;AWS Lambda 维护预启动 VM 池;Google Agent Sandbox 通过 Pod 预热池实现亚秒级延迟,比冷启动快 90%。Fly.io Sprites 采用 copy-on-write 快照,恢复时间 <1 秒。Blaxel 声称从待机状态恢复仅需 25ms。
安全边界的强度直接决定了方案能否用于执行不可信代码。从弱到强的隔离层次为:V8 Isolate(Cloudflare Workers)→ 标准 Docker 容器(共享内核)→ gVisor(用户态内核拦截)→ Firecracker/Kata MicroVM(硬件虚拟化隔离)→ 机密计算(AMD SEV-SNP、Intel TDX,硬件加密内存)。2024年的 “Leaky Vessels” 容器逃逸漏洞和 2025年的 “NVIDIAScape” GPU 容器逃逸事件加速了行业从容器向 MicroVM 的迁移。值得注意的是,OpenAI 选择 gVisor 而非 Firecracker 有一个务实的原因:gVisor 不需要 /dev/kvm 访问,可以在本身就是 VM 的标准 K8s 节点上运行,而 Firecracker 需要裸金属或嵌套虚拟化支持。
网络隔离是 Agent 沙箱的另一个关键维度,各产品策略差异明显。OpenAI Code Interpreter 采用最严格的"完全断网"策略。Codex Cloud 的双阶段模型更灵活——安装依赖时开放网络,执行阶段断网,Secret 在阶段切换时清除。Claude Code 的 JWT 白名单代理方案在安全和可用性间取得了较好平衡,允许访问 github.com、pypi.org 等包管理器。E2B 提供 allowInternetAccess 开关和基于 CIDR/域名的精细过滤,HTTP 流量通过端口 80 过滤,TLS 流量通过 SNI 检查实现域名级控制。
| 技术 | 隔离级别 | 典型启动时间 | 内存开销 | syscall 开销 | GPU 支持 | 需要 KVM |
|---|---|---|---|---|---|---|
| Docker (加固) | 共享内核 | <50ms | 极低 | 原生 | 是 | 否 |
| gVisor | 用户态内核 | 50-100ms | 低 | 2.2-72× | 是(nvproxy) | 可选 |
| Firecracker | 硬件VM | ~125ms | <5MiB | >95%原生 | 否 | 是 |
| Cloud Hypervisor | 硬件VM | 100-200ms | 小 | 接近原生 | 是(VFIO) | 是 |
| Kata Containers | 硬件VM(封装) | 150-300ms | 几十MB | 5-10% | 取决于VMM | 是 |
| WASM | 内存安全沙箱 | 微秒级 | 极低 | 较高(间接) | 否 | 否 |
| Seatbelt/Landlock | OS进程级 | 无额外开销 | 零 | 零 | 不适用 | 否 |
Agent 沙箱的四个特殊需求
AI Agent 与传统 Serverless 函数的本质区别在于长时运行、多模态交互和不确定性,这带来了四个传统沙箱方案未充分覆盖的需求。
长时任务持久化。E2B 报告沙箱平均运行时长在 2024-2025 年间增长了 10 倍以上,从秒级代码片段执行演变为多小时的开发会话。当前各平台的会话上限差异巨大:E2B Pro 最长 24 小时(暂停态 30 天),Vercel 仅 45 分钟至 5 小时,而 Daytona 和 Northflank 支持无限持久化。状态保存的核心技术是 CRIU(Checkpoint/Restore In Userspace),它可以冻结运行中的进程并将完整状态(内存页、文件描述符、TCP 连接、寄存器、进程树)写入磁盘,已集成到 Docker、Podman 和 Kubernetes。2025 年发布的 CRIUgpu 进一步扩展了 GPU 工作负载的检查点能力,集成 NVIDIA 的 cuda-checkpoint 实现透明的 GPU 上下文快照。Google 在 2025 年 KubeCon 上发布的 GKE Pod Snapshots 支持 CPU 和 GPU Pod 的完整检查点/恢复,将启动时间从分钟级缩短到秒级。Firecracker 的快照/恢复机制则是 AWS Lambda SnapStart 的技术基础。
浏览器与 GUI 自动化。越来越多的 Agent 需要在沙箱内操控浏览器和图形界面。技术方案分为两条路线:CDP(Chrome DevTools Protocol)路线——通过 Playwright/Puppeteer 程序化控制 headless 浏览器,Microsoft 在 2025 年 3 月发布的 Playwright MCP Server 使用无障碍树(而非截图)实现快速确定性交互;VNC/屏幕捕获路线——Anthropic 的 Computer Use 参考实现使用 Xvfb + x11vnc 搭建虚拟桌面环境,通过截图→分析→操作的循环实现 GUI 自动化。E2B 提供 Desktop Sandbox 支持 VNC 访问,Alibaba 的 OpenSandbox 和 agent-infra/sandbox 则将 VNC、CDP、MCP、VSCode Server、Jupyter 集成在单一 Docker 容器中。在 macOS 本地,Cua(trycua/cua)通过 Virtualization.framework 启动完整 macOS VM 供计算机使用 Agent 控制。Browserbase 已完成 4000 万美元 B 轮融资,2025 年处理了 5000 万次浏览器会话,是目前最大的托管浏览器基础设施。
多 Agent 协同隔离。LangChain 总结了两种主要的 Agent-Sandbox 连接模式:Agent IN Sandbox(Agent 运行在沙箱内部,通过网络通信,高度耦合但贴近本地开发体验,缺点是 API Key 需要进入沙箱)和 Sandbox as Tool(Agent 在本地运行,通过 API 调用沙箱执行代码,Key 留在外部,支持并行多沙箱)。Cursor 2.0 支持同时运行最多 8 个 Agent,通过 Git Worktree 隔离每个 Agent 的工作区副本。Devin 的 MultiDevin 支持并行 Agent 实例,各实例在独立沙箱中运行。对于企业级多 Agent 系统,关键的安全要求包括:每个 Agent 实例的密码学身份隔离、租户间数据的逻辑分段和语义泄漏防护、运行时上下文隔离(一个租户的 LLM 交互不能泄漏到另一个租户),以及完整的 prompt→output→downstream 审计链路。
macOS 本地沙箱是一个快速发展的子领域。Apple Silicon 的 Virtualization.framework 可实现接近原生性能(Geekbench 约 90% 原生性能)的轻量 VM。新涌现的项目包括:Shuru(superhq-ai/shuru)使用 Alpine Linux + vsock + VirtioFS 构建临时微 VM,默认离线;SandVault 采用更轻量的方案——创建独立 macOS 用户账户配合 sandbox-exec,零 VM 开销。Docker Sandboxes(Docker Desktop 4.50+)在 macOS 上为 AI 编码 Agent 提供 MicroVM 级隔离,每个沙箱拥有独立客户内核和 Docker daemon。值得注意的是,Apple 的 Seatbelt 框架虽然在 2016 年被标记为 deprecated,但 Chrome、Claude Code、Cursor、Codex CLI 等产品仍在积极使用它——目前没有替代方案提供同等的进程树级别沙箱能力。
Sandbox-as-a-Service 生态全面爆发
2024-2025 年,AI Agent 沙箱已从技术组件演变为独立的基础设施品类,多个专业化平台竞争激烈。
E2B 是当前市场领导者。底层基于 Firecracker MicroVM(维护着 Firecracker 的 fork 版本),通过 Kubernetes + Terraform 编排。核心差异化在于其模板系统:用户通过 Dockerfile 定义环境,E2B 将其构建为预快照的 MicroVM,按需恢复实现 ~150ms 冷启动。Pause/Resume 功能允许保存完整 VM 状态(含内存),暂停耗时约 4 秒/GB,恢复约 1 秒,状态保持最长 30 天。SDK 覆盖 Python 和 TypeScript,一行代码即可创建沙箱。已与 LangChain、CrewAI、LlamaIndex、Vercel AI SDK 等主流框架集成。定价方面,1 vCPU 约 $0.05/小时,按秒计费。声称 Fortune 100 中 88% 的企业已注册使用。典型客户包括 Manus AI(27 个工具的全功能虚拟电脑)、Perplexity(Pro 用户高级数据分析,一周上线)、Hugging Face(Open R1 复现,数百并发沙箱)。
Daytona 于 2025 年 2 月从开发环境管理转型为 AI Agent 基础设施,2026 年 2 月完成 2400 万美元 A 轮融资。默认使用 Docker 容器(可选 Kata Containers 增强隔离),实现了业界最快的 27-90ms 冷启动。核心卖点是无限持久化——沙箱可以永久存活,不像 E2B 的 24 小时限制。提供 LSP(语言服务器协议)集成用于代码智能分析,支持 Linux、Windows 和 macOS 虚拟桌面。但其默认 Docker 隔离在安全性上弱于 MicroVM 方案。
Modal 选择 gVisor 作为隔离层,定位为 Python-first 的 Serverless 计算平台。最大优势是自动扩缩——从零扩展到 20,000+ 并发沙箱,以及完整的 NVIDIA GPU 支持(T4 到 H200 全系列)。Sandbox API 支持文件系统和内存快照、网络隧道、精细出口策略。Lovable 和 Quora 等客户每天执行数百万次不可信代码片段。但 Modal 仅提供托管服务(无 BYOC/自托管),且镜像必须通过 Python SDK 定义(不支持直接使用任意 OCI 镜像),存在一定的锁定风险。
新兴竞争者也在快速进入这一赛道。Fly.io Sprites(2026 年 1 月发布)基于 Firecracker,主张"临时沙箱已过时",提供 100GB 持久化 NVMe 存储、copy-on-write 快照(保留最近 5 个)、30 秒空闲自动休眠和 <1 秒恢复。Northflank 同时支持 Kata Containers 和 gVisor,月处理 200 万+ 隔离工作负载,是唯一支持 BYOC(AWS/GCP/Azure/裸金属)且提供 GPU 的全平台方案(H100 约 $2.74/小时)。microsandbox(zerocore-ai/microsandbox,~4900 GitHub stars)是值得关注的开源方案,使用 libkrun(而非 Firecracker)在 Linux KVM 和 Apple HVF 上均可运行,实现跨平台 MicroVM 隔离,单二进制部署无需 Kubernetes。
在生态集成方面,统一抽象层正在形成。Cased 的 sandboxes 库提供通用 Python API,一套代码可在 E2B、Modal、Daytona、Cloudflare、Vercel 等后端间切换。LangChain 的 deepagents 框架原生支持 Modal、Daytona、Runloop 的 Sandbox 后端。MCP(Model Context Protocol) 正在成为标准集成协议——E2B、Playwright、microsandbox 均提供 MCP Server 实现。Google 在 2025 年 KubeCon 上发布的 Agent Sandbox CRD(kubernetes-sigs/agent-sandbox)将 AI Agent 沙箱带入了 Kubernetes 原生生态,基于 gVisor + Kata Containers,支持预热池和 Pod Snapshots。
结论:架构选型的决策框架
AI Agent 沙箱技术栈在 2024-2025 年经历了一次范式级演进。从技术趋势看,三个转变已经确立:隔离边界从容器级向 VM 级迁移(Firecracker 成为事实标准),本地 Agent 收敛于 OS 级原语(Seatbelt + Landlock + seccomp 的组合被 OpenAI、Anthropic、Cursor 三家独立选中),以及 Sandbox-as-a-Service 从工具组件升级为独立基础设施品类。
对于架构选型,关键决策因子可归结为:如果执行不可信代码且需要最高安全性,Firecracker MicroVM(自建或通过 E2B)是黄金标准;如果已有 Kubernetes 集群且节点本身是 VM(无裸金属),gVisor 是最务实的选择(OpenAI 正是出于这个原因选择了它);如果是本地 IDE/CLI 工具,Seatbelt/Landlock+seccomp 的组合已被多家头部产品验证为最佳平衡点;如果需要 GPU 支持,当前只有 QEMU/Cloud Hypervisor(VFIO 直通)或 gVisor(nvproxy)可选,Firecracker 暂时无解。
最值得关注的新兴趋势是 macOS 本地 MicroVM 生态的快速成长(Virtualization.framework + Apple HVF)和 Kubernetes 原生 Agent Sandbox 的标准化推进——这两者将分别重塑本地开发和云端部署的 Agent 沙箱架构。