[AI/Agent/ToolExecution/沙箱] 概述:AI Agent工具执行环境之沙箱(sandbox)
1 AI Agent的工具执行环境: 沙箱/sandbox
综合对比
| 方案 | 隔离机制 | 特点 | 典型使用方 |
|---|---|---|---|
| 传统容器(Docker/runc/Podman) | 命名空间+cgroup,共享宿主内核 | 启动快、兼容最好、生态最成熟,但内核逃逸面大 | 多数开源 Agent 框架、本地开发 |
| gVisor | 用户态内核 Sentry 拦截系统调用 | 隔离更强,性能降 2~10 倍 | Google Cloud Run、Modal |
| MicroVM(Firecracker/Kata) | 独立轻量虚拟机 | 隔离最强,冷启动约百毫秒级 | E2B、云端托管 Agent 沙箱 |
| 系统级沙箱(seccomp/Landlock/bwrap/Seatbelt) | 内核/OS 权限限制 | 毫秒级启动、开销极低、细粒度 | 本地运行的高频短任务 Agent |
Docker 是"容器类"沙箱的主流,但主流沙箱不只有 Docker
- Docker(容器,namespace+cgroup)目前是 Agent 生态里最主流的"代码执行沙箱",尤其开源 Agent 框架和云上 Agent 平台几乎默认容器化。但它只是隔离光谱上的一档,实际按安全强度分四类:
所以准确说:Docker 是"容器类"的主流,但不是唯一主流。云端/托管型 Agent 普遍用 Docker,安全要求高会升级到 gVisor 或 Firecracker;而面向本地高频、短生命周期任务执行的 Agent(如 Claude Code、DeepSeek Harness 这类),更偏好 OS 内核级轻量沙箱,避免 Docker 守护进程和镜像开销。
DeepSeek Harness vs Claude Code vs OpenClaw 沙箱实现对比
| 维度 | DeepSeek Harness (dsh) | Claude Code (Anthropic) | OpenClaw |
|---|---|---|---|
| 沙箱定位 | 核心能力,默认启用 | 可选模式(sandbox 模式 / --sandbox 标志),默认宿主机运行+权限审批 |
默认关闭,需配置 agents.defaults.sandbox 显式开启 |
| 核心隔离技术 | 内核级系统调用沙箱,不用容器:Linux 用 Landlock(自研 C11 landlock-run 启动器,优先),bwrap 降级;macOS 用 Seatbelt;Windows 用 ACL 受限令牌 |
OS 原语沙箱:Linux/WSL2 用 bubblewrap(namespaces + seccomp-bpf),macOS 用 Seatbelt;另可切换 Docker 沙箱(私有 daemon)跑不可信代码 | Docker 容器(默认后端,network/ssh/openshell 可换):每个命令起一个临时容器、执行完即销毁,Gateway 留在宿主机 |
| 权限模型 | 三档:read-only / workspace-write / danger-full-access,fail-closed(加载失败即终止) |
细粒度:按文件/域名审批,新域名弹窗确认;/sandbox 模式下可写文件与可达域名白名单 | execMode: host/sandbox + execPolicy: allowlist/denylist/ask;默认拦截危险 bind 源(/etc、/proc、/sys、/dev、/root、/boot、Docker socket) |
| 网络控制 | 随沙箱策略限制(本地沙箱以文件系统为主) | 沙箱外 代理 控制出站,域名白名单 + 自定义代理规则 | 策略层控制出站(OpenShell/NemoClaw 里网络 egress 可热更新) |
| 执行粒度 | 命令/进程级,毫秒级启动,适配高频短任务 | 命令级,对 spawn 出的所有子进程全覆盖 | 每命令一个临时容器,隔离最强、开销最大(镜像拉取+容器生命周期) |
| 可插拔性 | 沙箱是能力接缝,Docker/MicroVM 可作远程后端插件接入 | 原生 vs Docker 双路径可选 | 多后端可配(docker/ssh/openshell),NVIDIA OpenShell 提供独立沙箱运行时 |
- 结论
- DeepSeek Harness:追求"毫秒级 + 零容器开销"的本地内核级沙箱(Landlock 是特色,别家没用),面向高频短任务。
- Claude Code:同为 OS 原语沙箱(bwrap/Seatbelt),但网络用代理白名单,且保留 Docker 路径应对不可信代码。
- OpenClaw:三者中唯一默认 Docker 容器化的,隔离最重,每个命令临时起容器即用即弃,默认关闭、需显式开启。
它们分别代表了"内核级轻量隔离"(Harness/Claude)与"容器级重隔离"(OpenClaw)两条路线;
OpenClaw的 Docker 方案恰是前述所提及的"容器类主流"的典型代表。
案例分析: DeepSeek Harness 的沙箱
-
DeepSeek Harness(
dsh,DeepSeek AI 官方开源,MIT,基于 Cordis 的全插件架构)的默认沙箱是dsh-sandbox-local,按平台选内核级方案: -
Linux:优先 Landlock(内核系统调用级隔离,通过
native/下约 300 行 C11 编写的landlock-run启动器实现,有@deepseek-ai/node-addon-landlock-run原生插件),bwrap(bubblewrap)作为降级备选 -
macOS:Seatbelt(
sandbox-exec) -
Windows:
ACL受限令牌运行器 -
未命中时退回"本地默认运行模式"
-
沙箱分三档权限:
read-only/workspace-write/danger-full-access,且采用 fail-closed(失败即关闭)机制,内核不支持或规则加载失败就直接终止。
定位是匹配 Agent 高频短任务的毫秒级启动、极低开销。
- Docker 并不在它的默认链路里——不过因为"一切皆插件",
Docker/MicroVM可作为远程沙箱能力提供者接入
已有社区实践如接 CubeSandbox、AgentKit 云沙箱。
浙公网安备 33010602011771号