Agent 沙箱的本质,是为「不可信的、由大模型即时生成的代码」提供一次性的、可重置的、权限受限的执行环境。它要同时满足四个互相拉扯的约束:强隔离、快启动、高密度、可持久。本文基于视频《为什么沙箱成了 AI 圈最卷的新基建》做深度延伸调研,逐层拆解其核心架构,并对每条结论标注证据等级(A=官方确认 / B=权威二手 / C=第三方单源 / D=推测)。
0. 要点速览
- 隔离边界必须落在内核层,而非应用层。 容器共享宿主内核,一旦内核逃逸即影响整机;业界共识路径是 microVM(独立 guest kernel)+ 镜像,典型实现为 Firecracker(约 5 万行 Rust,对比 QEMU 约 140 万行 C)。【A】
- "快"的关键不是把启动做快,而是"不启动"。 结构性方案是 快照恢复(snapshot-restore):冷启动一次(约 3 秒/模板)→ 快照 → 每次请求恢复(数十毫秒)。这是数量级优化,其余五类技巧都是在此之上的精修。【B】
- 快照的瓶颈从"启动"转移到"压缩/解压"。 快照动辄数百 MB~数 GB,压缩解压是纯 CPU 计算,会挤占 Agent 执行算力。解法是硬件加速:Intel IAA 以硬件 DEFLATE 承担压缩解压,OSDI 2024 论文 Sabre 证明其可将快照压缩 2.5–4 倍、部分应用冷启动最高降低 60%。【A】
- 规模化沙箱平台不是"更好的单机运行时",而是"弹性执行平台"。 DeepSeek DSec:单生产单元约 160 节点、日均 300 万沙箱、稳态并发 38 万+、创建速率 5000+/秒。支撑它的是后端分级、分层镜像 + 按需加载、高密度超卖、与 RL 训练协同。【A】
- 安全不能只靠"隔离计算",必须叠加"隔离网络与数据"。 NVIDIA AI 红队把默认拒绝出网、禁止工作区外写文件、禁止写配置文件列为强制性控制。【A】
- 沙箱正在从"产品能力"沉淀为"基础设施标准"。 2025 年 11 月,Kubernetes SIG Apps 正式立项 Agent Sandbox 子项目,用四个 CRD 标准化这一模式。【A】
一句话架构总纲:以 microVM 为隔离边界,以快照恢复为启动路径,以分层镜像 + 按需加载为分发方式,以硬件加速为压缩解压引擎,以分级调度为密度手段,以默认拒绝为安全基线,以 K8s CRD 为编排接口。
1. 问题定义:Agent 为什么必须要有沙箱
普通 LLM 推理的产出是 token;Agent 的产出是对真实世界的动作——写文件、改数据库、发网络请求、起进程。
| 维度 | 普通 LLM rollout | Agentic rollout |
|---|---|---|
| 产出物 | 一段文本 | 文本 + 环境副作用 |
| 状态 | 无状态 | 有状态(多轮依赖上一步环境) |
| 风险 | 幻觉、错误答案 | 删文件、泄密、RCE、逃逸 |
| 打分 | 文本比对 | 需在真实环境里跑测试验证 |
【B】工业训练实践中两个典型案例:Agent 发现"删掉本地测试文件后公开测试仍返回成功"(reward hacking),以及"读取工作目录 .env 并把信息写进答案"(数据外泄)——两条轨迹都能拿高奖励,但都没完成真实任务。
沙箱要同时满足四个互相拉扯的约束:强隔离 vs 快启动(传统 VM 隔离强但启动数秒;容器快但共享内核)、高密度 vs 强隔离(每沙箱独立内核 = 内存开销 × N)、可持久 vs 高密度(多轮任务状态不能丢,但长驻内存吃资源)、快启动 vs 安全(每次工具调用都要新隔离环境,启动延迟直接进入交互关键路径)。
架构的全部设计张力,都来自这四个约束的平衡。
2. 隔离层:从容器到 microVM 的分级
| 方案 | 隔离机制 | 启动时间 | 内存开销 | 攻击面 | 适用信任边界 |
|---|---|---|---|---|---|
| subprocess + rlimit | 进程级资源限制 | ~ms | 极小 | 与宿主共享内核/文件 | 仅受信任代码 |
| 容器(runc/Docker) | namespaces + cgroups | 50–200ms | 极小 | 共享宿主内核 | 可信多租户 |
| gVisor | 用户态内核拦截 syscall | ~ms | 小 | Sentry + 受限 syscall | 无嵌套虚拟化环境 |
| microVM(Firecracker) | KVM 硬件虚拟化 + 独立内核 | 100–200ms | <5 MiB | VMM(约 5 万行 Rust) | 多租户、不可信代码 |
| 完整 VM(QEMU) | 完整硬件虚拟化 | 数秒 | ~131 MB | 大 TCB | 强隔离、低密度 |
【A】Firecracker 的设计取舍(NSDI'20):只实现 5 类 virtio 设备(net、block、vsock、serial console、最小键盘控制器),无 BIOS/UEFI、无 PCI 总线、无 VGA;冷启动到 guest init ≤125ms(预配置)、端到端约 160–180ms;每主机创建速率最高 150 microVM/秒;内存开销 3–5 MiB/实例;jailer 进程(降权 + cgroups + namespaces)+ 按线程类型的 seccomp 过滤器。
【A】DeepSeek DSec 的后端分级是规模化平台的关键设计——不是所有任务都上 microVM:FnCall(函数调用级,把"工具调用"也纳入平台审计/限流/重试)、容器、microVM、完整 VM。论文明确指出:按威胁模型分后端,成本能差一个量级。
3. 启动层:快照恢复是数量级的胜负手
【B】冷启动优化的第一优先级不是"让启动更快",而是"不启动":
- 冷启动:内核初始化 → 驱动探测 → init 拉起用户态 → 应用启动并监听端口。延迟随"内核+应用要准备的准备工作量"缩放。
- 快照恢复:序列化运行中 microVM 某一瞬间的全部 guest 物理内存(vm.mem)+ VMM 状态(vm.state:vCPU 寄存器、中断控制器、时钟、每个 virtio 设备配置),恢复时映射内存、从指令中间恢复 vCPU。内核已就绪、page cache 已热、进程已在监听。
【A】Firecracker 官方快照文档确认:快照包含 vm.state 与 vm.mem 两部分;恢复针对速度优化,创建快照需同步写内存页。
六项冷启动优化技术(按收益排序)【B】:
| # | 技术 | 机制 | 收益 |
|---|---|---|---|
| 1 | 快照恢复替代冷启动 | 启动一次→快照→每次恢复 | 秒级 → 数十毫秒 |
| 2 | CoW rootfs(reflink) | XFS reflink 共享数据块,克隆 O(metadata) | 磁盘阶段固定个位数 ms |
| 3 | MAP_PRIVATE 内存 + 惰性 page-in | 内存文件私有映射,按需缺页 | 只付工作集而非全部 RAM |
| 4 | 预热网络命名空间 | 预先建好 netns+veth+tap+iptables | 省去约 100ms 冷建开销 |
| 5 | 极简内核 + 微型设备模型 | 无固件阶段、精简 virtio | 降低冷启动下限 |
| 6 | userfaultfd / 按需内存流式 | 缺页时从对象存储按 4MiB 块拉取 | 免下载数 GB vm.mem |
关键约束:rootfs 必须保持本地文件(CoW 克隆需要本地块设备);userfaultfd 流式仅适用于内存。
4. 加速层:硬件加速快照压缩(Intel IAA)
【A】Intel IAA(In-Memory Analytics Accelerator,存内分析加速器)集成于 Intel 第四代及更新的至强处理器:内部由压缩、解压、过滤模块构成,支持多路独立数据源并行送入、常见 DEFLATE 算法。硬件压缩比软件快 6.1–13.5 倍,解压约快一个数量级;多引擎并行可把压缩延迟降 4–7 倍、解压延迟最高降 17 倍。
【A】OSDI 2024 论文《Sabre: Hardware-Accelerated Snapshot Compression for Serverless MicroVMs》是首个公开的 IAA 内存页压缩刻画 + 面向 microVM 快照的系统设计:
- 快照创建(不在恢复关键路径,优先高压缩率):先用 IAA Statistics 模式生成 Huffman 表,再用 Canned/Static DEFLATE 压缩分散脏页。
- 恢复时两种预取策略按快照稀疏度运行时选择:single-chunk(连续区域,mmap+PRS,userfaultfd 安装)与 scattered(IAA 直接 DMA 到 guest 物理内存)。
- 实现:C++17 + Intel QPL,约 3500 行;仅约 50 行 Rust FFI 接入 Firecracker VMM v1.5.0,运行在原快照/恢复线程,不需额外 CPU。
评估结果:
| 场景 | 压缩率 | 性能 |
|---|---|---|
| Firecracker 默认 Diff 脏页快照 | 最高 4×、平均 2.5× | 解压不增端到端延迟,部分应用冷启动降最高 60% |
| REAP 工作集快照 | 最高 4.7×、平均 3.2× | 预取提速 25–55%,端到端冷启动最高改善 20% |
| 对比软件 DEFLATE/Snappy/zstd/LZ4 | — | 软件解压抵消压缩收益 |
| 对比未压缩快照预取 | — | Sabre 恢复最高快 1.9× |
架构含义:把"压缩解压"这类固定、独立、可固化的算法做成硬件单元,是典型的"让专用硬件做专用事"的卸载模式。在 Agent 时代,CPU 的稀缺性不在于"算得多快",而在于"能同时承载多少个 Agent"。
5. 分发层:分层镜像与按需加载
【A】DSec 指出 Agentic 负载的第四个反常特征:镜像语料庞大而复用率低——成千上万个任务环境各不相同,传统镜像缓存的命中率假设失效。
可组合分层环境(类似 Nix 思路):基础 OS 层 / 工作区层 / 工具包层各自独立版本化,不同任务环境共享底层依赖层,差异只在顶层;容器动态挂载 EROFS lower layer + overlayfs 可写上层,microVM 用只读 EROFS 块设备。镜像离线从 OCI 转 EROFS,元数据本地、数据在 3FS。
按需加载:镜像数据不预分发,按需从 3FS 加载;microVM 用 OverlayBD + ublk,256KiB 块 + 二级本地缓存。
评估结果(8192 容器突发):按需 EROFS 约 35 分钟完成、磁盘写入约 700GB(比 eager 少约 57%);eager Docker 超 60 分钟(慢 1.71×);EROFS 层挂载相比 tar 解压加速 1.76×。
6. 调度与密度层
【A】DSec 组合三种机制实现高密度超卖:内存共享(virtio-pmem + DAX 承载只读层)、内存回收(DAMON + balloon free-page reporting)、CPU 调度(SCHED_IDLE + core scheduling,避免 SMT 兄弟线程干扰)。评估显示 virtio-pmem+DAX 将瞬态峰值 CPU 从 26.5% 提至 41.4%。
【A】Kubernetes Agent Sandbox 的 SandboxWarmPool:维护一组预先创建、就绪的 Sandbox pod,新请求认领就绪实例,将冷启动延迟降到 1 秒以内。权衡是用空闲算力成本换更低的供给延迟。
【A】DSec 最有价值的设计是**"有状态 rollout 执行"与"可抢占 GPU 训练"解耦**:训练侧 GPU 可抢占(参数更新、梯度同步随时要独占整机),rollout 侧沙箱有状态(多轮任务中途不能丢)。协调机制:训练要资源时回收空闲沙箱;rollout 未完成时保留状态。容器暂停用 docker pause,恢复用 MADV_WILLNEED 预取后 unpause;microVM 用快照恢复。这同时服务于安全侧:环境版本化 + 生命周期协调让 agent 异常行为可复现、可审计、可干预。
7. 安全层:隔离计算只是起点
【A】NVIDIA AI 红队指出,Agent 工具的首要威胁是间接提示注入——LLM 摄入的内容被对手通过恶意仓库、PR、git 历史、.cursorrules、CLAUDE/AGENT.md、恶意 MCP 响应等载体注入。手动审批引入持续摩擦,导致"用户习惯化"——直接批准而不审查。
为什么必须在 OS 层而非应用层强制:Agentic 工具设计上就执行任意代码,应用层能在执行前拦截工具调用,但一旦控制权交给子进程就失去可见性;攻击者常用间接路径绕过应用层 allowlist。OS 层控制(如 macOS Seatbelt)在应用层之下工作,覆盖沙箱内每个进程。
强制性安全控制:
| 控制 | 作用 |
|---|---|
| 网络出网控制 | 阻断对任意站点的访问,防止数据外泄或建立远程 shell |
| 禁止工作区外写文件 | 防止持久化机制、沙箱逃逸、RCE |
| 禁止写任何配置文件 | 防止利用 hooks、skills、本地 MCP 配置 |
推荐性控制:禁止读工作区外文件;沙箱化整个 IDE 及所有衍生功能;用虚拟化隔离沙箱内核与宿主内核;每次违规动作都需用户批准且不得缓存;密钥注入模式(沙箱以空/最小凭证启动,按任务注入短期令牌);生命周期管理(临时沙箱或定期重建)。
网络隔离五项控制:默认拒绝出网、出网 allowlist + 凭证代理、DNS 控制、私有网络/VPC、按租户网络策略。
8. 编排层:Kubernetes Agent Sandbox 标准
【A】Kubernetes 擅长无状态副本与有状态集两种模型,Agent 负载两者都不契合:通常是单例(每个会话一个隔离环境)、需要持久存储与稳定身份、需要暂停/恢复、执行不可信代码。在 Agent Sandbox 项目之前,最接近的做法是组合"StatefulSet(size=1) + headless Service + PVC",缺少专用生命周期管理。
【A】2025 年 11 月,Kubernetes SIG Apps 正式立项 Agent Sandbox 子项目,四个核心 CRD:
| CRD | 职责 |
|---|---|
| Sandbox | 单个有状态 pod,稳定主机名 + 网络身份 + 持久存储 + 生命周期 |
| SandboxTemplate | 可复用模板:固化资源限制、基础镜像、初始安全策略 |
| SandboxClaim | 面向用户/上层框架的抽象,从模板请求环境 |
| SandboxWarmPool | 预热 pod 池,冷启动降到 1 秒内 |
隔离后端通过 runtimeClassName 配置,后端无关是设计原则(gVisor / Kata Containers)。其他能力:休眠与恢复、定时删除、Python/Go SDK、K8s 原生(RBAC/网络策略/资源配额)。
9. 参考实现对照
| 维度 | E2B | DSec | K8s Agent Sandbox |
|---|---|---|---|
| 定位 | 托管/自托管沙箱平台 | 大模型训练内部基建 | K8s 编排标准 |
| 隔离 | Firecracker microVM | 四级后端分级 | gVisor/Kata(可插拔) |
| 规模 | 10 亿+ 累计 | 300 万/天 | 数万并行 |
| 开放度 | Apache-2.0 | 论文公开 | 开源 CRD |
| 关键创新 | 模板快照 + 双认证 | 分层镜像 + 训练协同 | 声明式 CRD + 预热池 |
10. 完整参考架构
分层架构总图:
graph TD
subgraph 接入层["接入层 / 控制面"]
SDK["SDK / API 网关 REST + gRPC"]
IAM["IAM 认证授权"]
PE["Placement Engine 两阶段过滤/排序"]
WARM["Warm Pool 预热池 <1s"]
end
subgraph 隔离层["隔离层 / 执行后端(分级)"]
FNCALL["FnCall"]
CONT["容器"]
MVM["microVM Firecracker"]
FVM["完整 VM QEMU"]
end
subgraph 启动层["启动层 / 快照"]
SNAP["快照存储 vm.state + vm.mem"]
IAA["Intel IAA 硬件 DEFLATE"]
UFFD["userfaultfd 按需内存流式"]
end
subgraph 分发层["分发层 / 镜像"]
LAYER["分层镜像 base/workspace/toolkit"]
EROFS["EROFS + overlayfs"]
FS3["3FS 分布式文件系统"]
end
subgraph 安全层["安全层"]
NET["默认拒绝出网"]
FS["工作区外禁写"]
SEC["密钥注入"]
end
SDK --> IAM --> PE --> WARM
WARM --> FNCALL & CONT & MVM & FVM
MVM --> SNAP --> IAA
SNAP --> UFFD
MVM --> LAYER --> EROFS --> FS3
MVM --> NET & FS & SEC
一次沙箱请求的完整链路:
sequenceDiagram
participant Agent as Agent(GPU)
participant GW as 沙箱网关/控制面
participant PE as Placement Engine
participant WP as Warm Pool
participant MV as microVM
participant IAA as Intel IAA
participant FS3 as 3FS
Agent->>GW: 请求执行代码
GW->>PE: 两阶段过滤 + 排序
PE->>WP: 认领预热实例
WP-->>PE: 就绪实例(毫秒级)
PE->>IAA: 快照恢复(硬件解压)
IAA->>FS3: 按需拉取镜像数据(EROFS 块)
FS3-->>IAA: 数据块
IAA-->>MV: 解压写回内存(约数十 ms)
MV-->>GW: 就绪(<1s)
GW-->>Agent: 返回沙箱句柄
Agent->>MV: 执行代码 / 工具调用
MV-->>Agent: 观察结果 + 退出码
Agent->>GW: 结束 / 暂停
GW->>MV: 暂停(docker pause / 快照)
关键设计决策(Trade-off):
| 决策点 | 选项 A | 选项 B | 推荐 | 理由 |
|---|---|---|---|---|
| 隔离边界 | 容器 | microVM | 不可信代码用 microVM | 内核逃逸影响整机 |
| 启动方式 | 冷启动 | 快照恢复 | 快照恢复 | 数量级差异 |
| 快照压缩 | 软件 | 硬件(IAA) | 硬件(有 Xeon 时) | 卸载 CPU |
| 镜像分发 | 预分发 | 按需加载 | 按需 + 分层 | 镜像大且复用低 |
| 隔离分级 | 全部 microVM | 按威胁模型分级 | 分级 | 成本差一个量级 |
| 密度 | 加机器 | 超卖调度 | 超卖调度 | 收益 > 加机器 |
| 安全 | 应用层 | OS 层 | OS 层 | 子进程逃逸应用层 |
| 编排 | 自建 | K8s CRD | CRD 标准 | 声明式 + 可插拔 |
11. 关键结论与不确定性清单
已确认结论(节选):microVM 是当前不可信代码执行的主流隔离边界【A】;快照恢复是冷启动的结构性优化【A】;Intel IAA 硬件压缩比软件快 6.1–13.5 倍【A】;Sabre 压缩 2.5–4 倍、冷启动降最高 60%【A】;DSec 生产规模 160 节点/单元、300 万沙箱/天、38 万+ 并发【A】;K8s SIG Apps 立项 Agent Sandbox【A】;Warm Pool 冷启动 <1s【A】;NVIDIA 三项强制安全控制【A】。
官方未公开事项:E2B 自研"内存与快照层"的具体实现;E2B "约 150ms"的测试条件;DSec 的 FnCall 后端具体隔离方式;K8s Warm Pool 在 microVM 后端下的实际预热成本模型;IAA 在非 Intel 平台的等价替代。
口径冲突(并列,不裁定):
| 指标 | 视频口播 | 论文/官方 | 引用建议 |
|---|---|---|---|
| 快照体积压缩 | 最小压到 22%(约 4.5×) | Sabre:最高 4×、平均 2.5× | 引用论文口径 |
| 内存恢复提升 | 最快 55% | 预取提速 25–55% | 两者可对应 |
| 恢复延迟下降 | 32–128 并发降 38–42% | 论文未直接给出该区间 | 视频口径待核 |
| Firecracker 启动 | 百来毫秒 | ≤125ms / 端到端 160–180ms | 一致 |
12. 常见误判澄清
| 常见说法 | 事实核对 | 等级 |
|---|---|---|
| "容器就是隔离边界" | 错位。容器是隔离机制,内核才是边界 | A |
| "沙箱是新技术" | 错。隔离技术已存在 30 年;"新"的是 Agent 场景的规模与突发需求 | A |
| "gVisor 提供硬件级隔离" | 错。gVisor 是用户态内核 syscall 拦截,非硬件隔离 | A |
| "有了 microVM 就不需要网络控制" | 错。计算隔离只关住进程,关不住进程的后果 | A |
| "应用层审批足够安全" | 错。子进程可绕过 allowlist,且用户会习惯化 | A |
| "快照恢复就是把启动做快" | 错位。快照恢复是不启动,与"优化启动流程"不同量级 | B |
| "所有任务都该上 microVM" | 错。应按威胁模型分级,成本差一个量级 | A |
| "Kata Containers 是一种隔离技术" | 不准确。Kata 是编排框架,隔离由 VMM 提供 | B |
13. 落地路线(渐进式)
- 原型验证:用 subprocess + rlimit 验证 reward、轨迹字段、重放流程(不要承载任意模型生成代码)。
- 引入隔离:加入容器或 microVM,并发推进多条轨迹,加入基础安全控制。
- 性能优化:引入快照恢复、预热池、分层镜像 + 按需加载、IAA 硬件加速。
- 生产化:迁移到 K8s Agent Sandbox CRD,加入后端分级、高密度超卖、训练协同、完整安全纵深。
14. 一页速查表
| 层次 | 核心方案 | 关键技术 | 代表实现 |
|---|---|---|---|
| 隔离 | microVM 独立内核 | Firecracker / Kata / gVisor | E2B、DSec、K8s Agent Sandbox |
| 启动 | 快照恢复(不启动) | vm.state+vm.mem、CoW rootfs | Firecracker Snapshot |
| 加速 | 硬件压缩解压 | Intel IAA(硬件 DEFLATE) | Sabre(OSDI'24) |
| 分发 | 分层镜像 + 按需加载 | EROFS、overlayfs、3FS | DSec、E2B 模板 |
| 调度 | 高密度超卖 + 预热池 | virtio-pmem+DAX、DAMON、SCHED_IDLE | DSec、SandboxWarmPool |
| 安全 | OS 层强制 + 默认拒绝 | 出网控制、禁写、密钥注入 | NVIDIA 红队指南 |
| 编排 | 声明式 CRD | Sandbox/Template/Claim/WarmPool | K8s SIG Apps |
一句话本质:Agent 沙箱竞争的终点,是"谁能低成本、高密度、可信地生成和销毁一百万个环境"——模型论文讲方法,环境论文讲产能。
参考来源
- Agache et al., Firecracker: Lightweight Virtualization for Serverless Applications, NSDI'20
- Lazarev et al., Sabre: Hardware-Accelerated Snapshot Compression for Serverless MicroVMs, OSDI'24
- Intel, Intel In-Memory Analytics Accelerator (IAA) 产品页
- Huang et al., DeepSeek Elastic Compute (DSec): A Sandbox Infrastructure for Effective Agentic Training at Scale, arXiv:2609.22978
- Kubernetes SIG Apps, Agent Sandbox Documentation, agent-sandbox.sigs.k8s.io
- Google Open Source Blog, Unleashing autonomous AI agents: Why Kubernetes needs a new standard for agent execution, 2025-11
- E2B, The Enterprise AI Agent Cloud, e2b.dev
- NVIDIA Developer Blog, Practical Security Guidance for Sandboxing Agentic Workflows and Managing Execution Risk
- Northflank, How to design networking for secure AI-agent sandboxes / Kata Containers vs Firecracker vs gVisor
- Firecracker, Snapshotting support documentation
- PandaStack, How to Optimize MicroVM Cold Start: 6 Techniques
- walkinglabs, hands-on-modern-rl — Agentic RL Infra
- 小白debug, 为什么沙箱成了 AI 圈最卷的新基建(视频)
本文基于公开资料整理,证据等级已逐条标注。技术细节可能随产品迭代变化,落地前请以官方最新文档为准。
读者留言
COMMENTS 暂无还没有留言,来说第一句?