本节摘要:选隔离级别不需要玄学,只需要先诚实回答两个提问:你的 Agent 能做什么(能力面:只读、读写工作区、还是任意执行)、它身边的数据有多值钱(敏感度:本机练习、生产代码、凭据与用户数据)。两个答案落在决策树上,五分钟得到一个默认级别:读代码型用进程级或断网只读容器;写文件型用加固容器(工作区唯一可写);任意执行型必须上微 VM,再叠执行网关与审批门。数据敏感度和多租户是两个加档器,各加一到两级。本节还校准一个现实:主流编码智能体多用「分级信任 + 审批门」而非全沙箱——本书的立场是保留分级,但每级都要有真实的隔离底座,而不是一层弹窗。
提问一(能力面):Agent 会执行的动作里,副作用最大的是什么?
| 档位 | 含义 | 典型示例 |
|---|---|---|
| 只读 | 不写任何文件、不联网 | 代码审阅、日志分析、文档问答 |
| 读写工作区 | 只写一个指定目录 | 生成代码、改配置、写测试 |
| 任意执行 | 跑任意命令、装依赖、起服务 | 编码智能体跑构建与测试、数据分析 Agent 装包 |
提问二(敏感度):沙箱隔壁放着什么?
| 档位 | 含义 |
|---|---|
| 低 | 本机练习目录,被删了也无妨 |
| 中 | 生产代码仓库、内部文档 |
| 高 | 凭据(SSH 私钥、云令牌)、用户数据、多租户混部 |
一句话原则:能力面决定「最低可用级别」,敏感度决定「要不要加档」。
开始:你的 Agent 属于哪一类? │ ├─ 读代码型(只读) │ ├─ 数据低 / 中敏感 ──▶ 进程级沙箱(1.1 节 systemd 写法)或断网只读容器 │ └─ 数据高敏感或不可信来源 ──▶ 加固容器(只读挂载 + 断网) │ ├─ 写文件型(读写工作区) │ ├─ 单租户、工作区可随时销毁 ──▶ 加固容器(第 2.1 节完整方案) │ └─ 多租户 / 工作区含敏感文件 ──▶ 加固容器 + 微 VM(runsc)+ 执行网关 │ └─ 任意执行型(跑构建 / 测试 / 装依赖) ├─ 单租户、内部使用 ──▶ 加固容器 + runsc + 执行网关 + 审批门 └─ 多租户 / 面向外部用户 ──▶ Firecracker 微 VM(每任务一 VM)+ 网关 + 审批 + 审计
三条默认答案的理由:
⚠️ 常见误区:把「容器里跑」当免责声明。若 Agent 在容器内以 root 运行、挂了 Docker Socket 或宿主根目录,隔离强度直接跌回进程级以下。级别的有效性取决于配置纪律,第 2.1 节逐参数展开。
加档器(各加一到两级):
降档条件(谨慎使用):
主流现状校准:公开搜索实测(2026-09)显示,主流编码智能体普遍采用分级信任 + 审批门而非全沙箱。本书不推翻它,而是补强它:分级的每一级都要有真实隔离底座——只读级真断网,工作区级真只读根,任意级真微 VM。审批门管「不确定」,沙箱管「兜底」,二者不可互相替代(原理见《Harness 工程:从零打造智能体运行环境》第 5 章)。
按下面模板写三行(建议现在就写,第 2 章直接照此搭建):
能力面:____(只读 / 读写工作区 / 任意执行) 敏感度:____(低 / 中 / 高)+ 是否多租户:____ 隔离级别:____(进程级 / 加固容器 / runsc / Firecracker) 理由(一句话):____________________
示例:能力面 = 任意执行(编码智能体),敏感度 = 中(生产仓库),非多租户 → 加固容器 + runsc + 执行网关;理由:跑任意构建命令直面内核漏洞,runsc 以最低接入成本垫掉共享内核风险。
决定已写下,第 2 章开始搭建:从加固 Docker 的四道边界(文件系统、网络、能力、资源)起步,给出完整 Dockerfile、运行配置与可拷即用的执行包装器 sandbox_run.py。