本节摘要:本节把「怎么读这本书」和「动手前要准备什么」一次讲完。路线 A 是半天最小可用线:第 0 章到第 1 章选型,第 2.1 节 Docker 落地,第 3.1 节加 allowlist,产出一个能用的读 / 写型沙箱;路线 B 是全书纵深线,一直打到微 VM、执行网关、审计回放与供应链红队。环境侧只需要三样:能跑 Docker 的 Linux 环境、Python 3.10 以上、一个练习目录;gVisor 与 Firecracker 环节额外要求 Linux 内核与 KVM,本节说明如何在 Windows / macOS 上用虚拟机补齐。章末是全书约定与声明,读代码前请务必过一遍。
| 路线 | 适合谁 | 路径 | 耗时(示意) | 产出 |
|---|---|---|---|---|
| A · 最小可用线 | 现在就要给 Agent 套个笼子 | 0.1 → 1.2 → 2.1 → 3.1 | 半天 | 一个带 allowlist 的加固容器沙箱 |
| B · 纵深全量线 | 在搭 Agent 平台 / 编码智能体 | 0~6 章顺序读,代码全跑 | 两到三天 | 沙箱 + 网关 + 审计 + 供应链治理闭环 |
路线 A 是路线 B 的严格前缀:走到 3.1 之后,任何时候都可以无缝续读路线 B 的剩余部分。
路线A(最小可用) 路线B(纵深全量) 0.1 信任边界 第 0 章 导览 │ │ ▼ ▼ 1.2 按攻击面选级别 第 1 章 隔离模型选型(1.1 + 1.2) │ │ ▼ ▼ 2.1 Docker 落地(拷 Dockerfile 即跑) 第 2 章 搭建(2.1 → 2.2 → 2.3) │ │ ▼ ▼ 3.1 allowlist 与审批门落位 第 3 章 权限与审计(3.1 + 3.2) │ ▼ 第 4~6 章 供应链治理 / 运行时防护 / 红队自测
💡 建议:即使走路线 A,也请把第 2.3 节《执行网关与工具代理》的开头「为什么不让 Agent 直接碰 Docker」读完——它改变你对「谁持有执行权」的理解,只要十分钟。
三样必备。
第一,Docker(Desktop 或 Engine 均可,版本近两年内即可)。自检:
# env_check.sh —— 环境自检:Docker 与 Python 就绪确认 docker --version docker run --rm hello-world # 能拉镜像并输出 Hello from Docker! 即就绪 python3 --version # 3.10+
三条命令全部通过即环境就绪;若 hello-world 拉取失败,先解决镜像源与网络问题再继续,不要带病进入第 2 章。
第二,Python 3.10 以上(第 2、3 章的 wrapper、网关与审计器都是标准库实现,无需第三方依赖)。
第三,练习目录约定。全书代码默认以下布局,例子里的相对路径都以此为准:
agent-sandbox-lab/ ├─ Dockerfile # 第 2.1 节的沙箱镜像 ├─ sandbox_run.py # 第 2.1 节的执行包装器 ├─ gateway.py # 第 2.3 节的执行网关 ├─ auditor.py # 第 3.2 节的审计器 ├─ workspace/ # 唯一暴露给沙箱的可写目录(Agent 的「桌面」) └─ audit/ # JSONL 审计日志落盘处
💡 workspace 是「Agent 的桌面」:宁可它乱,也别让 Agent 写到别处——全书所有可写路径都收敛于此,这是验证配置是否正确的第一条肉眼判据。
gVisor 与 Firecracker 的额外要求(第 2.2 节用)。 runsc 需要 Linux 宿主内核(Windows / macOS 的 Docker Desktop 不能直接替换 runtime);Firecracker 依赖 KVM。若你的主力机是 Windows 或 macOS,准备任一即可:一台 Linux 虚拟机 / 云主机(2 vCPU、4 GB 内存即可,示意配置)、WSL2 里启用嵌套虚拟化跑 Linux 引擎(进阶)、或先用云上 gVisor 托管服务对照理解。路线 A 不需要这些。
⚠️ 别用生产机做第 6 章红队自测的靶机——哪怕你有信心,演练剧本里的失败实验(fork 炸弹、逃逸尝试)也应该发生在可以随时销毁的环境里。
环境就绪,概念已立。下一章进入正题:把「沙箱」这个词拆开——进程级、容器、微 VM 三级隔离各有多硬、多贵、多难运维,以及如何按你的 Agent 攻击面选定级别。