SuperAPI AI 工具集

forkd

forkd 是一个面向 AI 智能体扇出(fan-out)场景的 microVM 沙箱运行时,基于 Firecracker 构建。它从预热过的父快照 fork 子微虚拟机,子虚拟机以写时复制(copy-on-write)方式继承父虚拟机的地址空间,而不是冷启动各自的内核。官方说明称,可从热父节点在约 100ms 内生成 100 个子节点,并可在约 150ms 内 BRANCH(分支)一个运行中的虚拟机;每个子节点由 KVM 隔离,具备独立的网络命名空间、cgroup v2 内存限制,并支持多 vCPU、完整 TCP 网络、apt install 和出站 HTTPS。提供守护进程、REST API、Prometheus /metrics、JSON 审计日志和 systemd 单元,采用 Apache-2.0 开源许可。

访问官网

工具介绍

forkd 是一个面向 AI 智能体扇出(fan-out)场景的 microVM 沙箱运行时,基于 Firecracker 构建。其核心机制是:父虚拟机只启动一次,导入运行时环境(例如 Python 及其依赖、JIT 预热过的 JVM、已加载的 ML 模型),然后被暂停到磁盘。每个子节点是一个独立的 Firecracker 进程,通过 MAP_PRIVATE mmap 父节点的内存镜像,由内核在页级别实现写时复制(copy-on-write),因此子节点在发生分歧前共享父节点的常驻内存。

主要能力方面,官方称可从热父节点在约 100ms 内生成 100 个子节点,并可在约 150ms 内 BRANCH(分支)一个运行中的虚拟机。forkd 还支持 BRANCH:暂停运行中的沙箱、快照其进行中状态并恢复。v0.3.4 修复了重复 BRANCH 同一父节点时从 150ms 膨胀到 2.7s 的慢路径回归。v0.4 的 live BRANCH 将源暂停窗口从约 200ms(Diff)压缩到 1.5 GiB 源上的 56ms p50 / 64ms p90;使用 wait: false 时调用方约 70ms 返回,后台复制异步完成。CLI 可传 --live / --no-wait,REST 可传 mode: "live" / wait: false,Python / TypeScript / MCP SDK 同样支持。v0.5 引入 diff 快照链,每层记录 parent_tag + 内容哈希边,守护进程在生成时遍历链并一次性组装内存镜像。

隔离与继承特性:每个子节点是由 KVM 支撑的独立 Firecracker microVM,逃逸需要 hypervisor 或内核漏洞;导入、JIT 编译、模型权重、预取缓存等父节点已完成的工作会被子节点免费继承;每个子节点拥有真实 Linux 环境,支持多 vCPU、完整 TCP 网络、apt install 和出站 HTTPS;多租户通过每子节点网络命名空间、每子节点 cgroup v2 内存限制,以及由 vmgenid(Linux 5.20+)重新播种的独立 /dev/urandom 实现。

使用方式上,quickstart 会预检主机(KVM、Firecracker、内核镜像),询问要设置的项(客户机内核下载、tap 设备、每子节点 netns,未经同意或 --yes 不会执行),从 python:3.12-slim 烘焙 Python 快照(或从 hub 拉取预烘焙快照),然后从中 fork 10 个 microVM 子节点并打印每个子节点的耗时;该命令幂等,重复运行会复用快照并跳过已完成设置。forkd doctor 运行 17 项检查(KVM、硬件虚拟化、cgroup v2、IP forward、tap、netns、Firecracker 二进制及版本、Docker 守护进程、快照目录与磁盘等)。运行要求 x86_64 Linux 与 KVM,Ubuntu 22.04 或更新版本,Linux ≥ 5.7,vm.unprivileged_userfaultfd=1(或 CAP_SYS_PTRACE),以及来自 deeplethe/firecracker:forkd-v0.4-mem-backend-shared-v1.12 的 vendored Firecracker fork;forkd doctor 会探测这两项。

适用场景包括:代码解释器与 Jupyter-kernel 沙箱;评估 harness(如 SWE-bench 风格的并行仓库检出或测试 rollout);大规模每用户代码执行;CI 中的不可信代码执行;自托管替代托管沙箱 SaaS;以及通过 Python SDK 接入 LangGraph / AutoGen / CrewAI,或通过 pip install forkd-mcp 提供的 MCP 服务器接入 Claude Desktop / Claude Code / Cursor / Cline。生产案例形状包括 AI 代码解释器、SWE-bench 风格并行评估、大规模每用户代码执行、不可信 CI、以及 fork-per-test 隔离数据库。

企业部署 FAQ 提到:可在 Kubernetes 上部署,一个 forkd-controller Pod 承载 N 个沙箱子节点,需要带 /dev/kvm + cgroup v2 的节点;512 MiB 预热 Python+numpy 父节点下,约每 vCPU 支撑 1 个活跃运行 agent,约每 8 GiB Pod RAM 支撑 50 个空闲池化 agent;N=100 时 CoW 开销为每子节点 0.12 MiB。REST 接口为 POST /v1/sandboxes n=100,Python SDK 可从 forkd import Sandbox。限制方面,函数级快照运行时在放弃真实 Linux(单 vCPU、串行 I/O)的前提下比 forkd 的约 100ms 快一个数量级;快照不可跨 Firecracker 版本或宿主 CPU 微架构移植;更重的父节点(浏览器、ML 推理)会更早触及上限。