forkd:用于 AI 代理并行的微 VM 沙箱运行时,具备毫秒级快照分叉

forkd:用于 AI 代理并行的微 VM 沙箱运行时,具备毫秒级快照分叉

它解决了什么

forkd 是一种面向 AI 代理并行的微 VM 沙箱运行时。它解决了在 AI 代理需要生成大量短暂、隔离环境(例如代码解释、工具使用或评估回滚)时,冷启动虚拟机或容器所带来的高延迟和资源开销问题。

工作原理

forkd 基于 Firecracker,采用“从热状态分叉”的方式。父 VM 启动一次并加载所需运行时(如 Python、机器学习模型或 NumPy 等依赖),随后将其暂停并保存为磁盘快照。子 VM 通过使用 mmap 并指定 MAP_PRIVATE 来映射父 VM 的内存映像,从而生成。这样子 VM 可以在页级别通过写时复制(CoW)共享父 VM 的常驻内存,使得生成时间远快于冷启动。

此外,forkd 支持 BRANCH,可以对运行中的沙箱进行快照并在思考过程的中间恢复为多个分支路径;还支持 diff‑snapshot 链,能够在不复制基础内存映像的情况下堆叠依赖层(例如为 NumPy 和 Pandas 分别创建快照)。

适用人群

  • AI 代理开发者:构建代码解释器或 Jupyter‑kernel 沙箱的场景,每次工具调用都需要全新的隔离环境。
  • 机器学习评估框架:需要并行运行数百个测试回滚(如 SWE‑bench),而不想承担 Docker 冷启动的开销。
  • 注重安全的用户:在 CI 或多租户环境中执行不可信代码时,需要 KVM 级别的硬件隔离。
  • 自托管者:寻找开源、Apache 2.0 许可证的替代方案,以取代托管的沙箱 SaaS 平台。

亮点

  • 极致生成速度:能够在约 101 ms 内分叉 100 个微 VM。
  • 实时 BRANCH:对运行中的沙箱进行快照并在 56 ms(p50)内恢复。
  • 硬件隔离:每个子实例都是由 KVM 支持的独立 Firecracker 微 VM,提供比普通容器更强的隔离。
  • 堆叠快照:支持 diff‑snapshot 链,高效管理分层依赖。
  • 完整 Linux 环境:每个子实例拥有真实的 Linux 内核,支持多 vCPU 与完整的 TCP 网络,区别于某些函数级运行时。
  • 开发者工具:提供 REST API、Python/TypeScript/MCP SDK,以及 Prometheus 指标。

Sources