ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

forkd Python SDK完全指南:2行代码替代E2B Sandbox,让AI代码跑在KVM隔离的microVM里

forkd Python SDK完全指南:2行代码替代E2B Sandbox,让AI代码跑在KVM隔离的microVM里 forkd Python SDK完全指南2行代码替代E2B Sandbox让AI代码跑在KVM隔离的microVM里【免费下载链接】forkdFork() for AI agent microVMs. Spawn 100 children in ~100ms from a warm parent; BRANCH a live VM in ~150ms. KVM-isolated, snapshot CoW.项目地址: https://gitcode.com/gh_mirrors/fo/forkdforkd是一个面向 AI Agent 的开源 microVM 沙箱运行时基于 Firecracker KVM 硬件隔离核心原语是「fork 热快照」——父 VM 启动预热一次后子 VM 通过内核 Copy-on-Write 继承其内存100 个子沙箱约101 ms拉起、150 ms 内完成一个运行中 VM 的 BRANCH。它自带的Python SDKpip install forkd与 E2B 线协议兼容把from e2b import Sandbox换成from forkd import Sandbox你的 AI 代码就能跑在自托管、无按秒计费的 KVM 隔离 microVM 里。本文将带你完成 forkd Python SDK 的安装、两套核心 APISandbox与Controller的用法、性能数据解读与常见问题解答全程只需几行代码。为什么是 forkdE2B 的自托管平替如果你在用 E2B大概熟悉这套体验云端 SaaS、按秒计费、厂商锁定、冷启动受平台调度影响。forkd 把同样的能力搬到你自己的 Linux 机器上维度E2B云托管forkd自托管部署形态云端 SaaS单二进制守护进程pip install forkd即接入隔离级别microVMKVM microVM每子沙箱独立 Firecracker 进程每沙箱网络/内存配额平台管理独立 netns cgroup v2memory.max100 沙箱冷启动云端调度101 msfork 热父快照许可证/成本API 计费Apache 2.0免费关键差异在「fork 热快照」父 VM 预热后import numpy、JIT 编译、模型权重全部驻留内存每个子 VM 不再冷启动自己的内核而是mmap(MAP_PRIVATE)共享父 VM 的内存映像直到页面被修改才分叉。这带来两个同时成立的好处——每个子沙箱都是独立 KVM VM同时启动成本接近fork(2)而非冷启动 VM。 架构全貌见 DESIGN.md分支模型见 docs/design/branching.md。快速安装3 步跑通环境forkd Python SDK 是纯 Python 客户端本身没有依赖真正干活的是宿主上的forkdCLI forkd-controller守护进程。环境要求x86_64 Linux、内核 ≥ 5.7live 分支需要 KVM。第 1 步安装 CLI 并准备宿主# 预编译二进制无需 Rust 工具链 curl -sSL releases/forkd-v0.5.3-x86_64-linux.tar.gz | sudo tar -xz -C /usr/local/bin/ sudo bash scripts/setup-host.sh # KVM tap 设备一次性 sudo bash scripts/netns-setup.sh 100 # 每子沙箱网络命名空间宿主脚本位于 scripts/setup-host.sh 和 scripts/netns-setup.sh。第 2 步准备一个父快照forkd pull deeplethe/langgraph-react # 从 Hub 拉现成快照~15 s # 或从 Docker 镜像自建 sudo -E forkd from-image python:3.12-slim --tag py-numpy --extra python3-numpy第 3 步安装 Python SDKpip install forkd一键自检forkd doctor装完务必先跑forkd doctor它会做 17 项检查KVM、cgroup v2、tap、netns、Firecracker 版本、快照目录、daemon 可达性……每项不通过都给出具体修复提示forkd doctor # pass14 warn0 fail0 skip02 行代码上手E2B 兼容的 SandboxSDK 里最重要的类是Sandboxsdk/python/forkd/sandbox.pyAPI 表面与 E2B 对齐——创建沙箱、跑命令、退出from forkd import Sandbox # drop-in replacement for from e2b import Sandbox with Sandbox() as sb: print(sb.commands.run(uname -a).stdout) print(sb.eval(numpy.zeros(5).tolist()))就这么多。Sandbox()构造时会自动 fork 一个子 microVM 并等待内部 agent 就绪典型 ~150 mswith块退出时自动回收。commands.run()返回CommandResultstdout/stderr/exit_code与 E2B 用法一致。常用环境变量见 sdk/python/forkd/sandbox.py环境变量默认值作用FORKD_TAGpyagent指定 fork 的父快照 tagFORKD_TARGET10.42.0.2:8888子沙箱内 guest agent 地址完整可运行示例见 sdk/python/example.py。隐藏大招eval 直接复用预热态快 100 倍forkd 相比 E2B 的「杀手锏」是sb.eval()它把表达式送进子 VM 里已经预热好的 PID 1 Python 解释器执行而不是新起python3子进程重新import。实测同一台机器、同一条 numpy 表达式调用方式耗时说明sandbox.eval(numpy.zeros(5).tolist())1 ms复用预热态 PID 1零 importsandbox.commands.run(python3 -c ...)96 ms冷子进程重新 import numpy对 AI 代码解释器场景意义重大用户每问一句话都要import numpy / pandas / torch在 forkd 里这些成本被父快照直接「继承」接近为零。Controller 进阶spawn、BRANCH、kill 一套 REST APISandbox负责「钻进单个 VM 里执行代码」Controllersdk/python/forkd/controller.py负责宿主侧的生命周期编排——建沙箱、分支、回收全部走守护进程的 REST APIfrom forkd import Controller c Controller() # 读 FORKD_URL / FORKD_TOKEN默认 http://127.0.0.1:8889 parent c.spawn_sandboxes(pyagent, n1, per_child_netnsTrue, live_forkTrue)[0] # Agent 跑到一半随时打分支UFFD_WP 实时脏页捕获 branch c.branch_sandbox(parent[id], tagcheckpoint-1, modelive, waitFalse) # 从分支扇出 5 个孙沙箱做投机执行 kids c.spawn_sandbox(branch[tag], n5)branch_sandbox提供三种模式对应不同的「源沙箱暂停窗口」mode暂停窗口适用full默认0.5–8 s通用任何父快照diff~200 ms增量快照v0.3live 50 ms长驻 Agent 中途中断v0.4需live_forkTrue启动waitFalse时调用方约 10 ms 即返回源 VM 已恢复运行后台内存拷贝异步完成——Agent 代码「想到一半分叉」几乎无感。完整 REST 端点参考 docs/API.md。上图是官方 recipes/langgraph-react/ 实测LangGraph ReAct Agent 跑到一半被 BRANCH三个孙沙箱各自收到不同引导提示、独立产出不同行程却继承完全相同的推理历史。性能实测100 个 microVM 只要 101 ms在同一台 Ubuntu 24.04 / 20 vCPU / KVM 宿主机上「拉起 100 个沙箱并跑通import numpy」的墙钟时间对比完整方法学见 bench/内存同样划算100 个子沙箱合计只多出0.12 MiB/个的宿主内存CoW 共享父页而 Firecracker 冷启动每 VM 要 84 MiB后端N100 墙钟每沙箱内存增量forkd101 ms0.12 MiBCubeSandbox1.06 s5 MiBFirecracker 冷启动759 ms84 MiBDocker (runc)335.3 s4 MiBgVisor (runsc)288.6 s—真实场景官方 Recipes 直接抄每个 recipe 都是完整可跑的父快照配方 演示脚本按需取用Recipe场景recipes/e2b-codeinterpreter/AI 代码解释器Jupyter SciPy 全家桶预热E2B 模板平替recipes/langgraph-react/LangGraph Agent 中途 BRANCH 扇出recipes/crewai-fanout/CrewAIN 个 Agent 跑 N 个 microVM~24 ms/子recipes/postgres-fixture/Fork-per-test~10 ms 拿到可查询的 postgres替代 ~2 s 的 initdbrecipes/playwright-browser/预热 Chromium~10 ms fork 一个浏览器沙箱更多清单见 recipes/README.md。常见问题FAQQ必须连本机吗能连远程守护进程吗能。Controller读FORKD_URL和FORKD_TOKEN环境变量指向任何一台装了 forkd-controller 的机器即可生产部署方式systemd token见 docs/RUNBOOK.md 与 packaging/systemd/forkd-controller.service。Q我的 E2B 代码要改多少通常只改 import。Sandbox/commands.run/ 结果对象都与 E2B 对齐尚未覆盖files.read/write与流式输出见 sdk/python/README.md 的能力清单。Q快照不跨版本/跨 CPU 迁移怎么办快照不跨 Firecracker 版本和宿主 CPU 微架构迁移forkd doctor会同时报告 FC 版本与 guest 内核方便集群内一致性断言。Q项目成熟度当前为 Alpha核心原语、REST、鉴权、审计日志、cgroup 限额、Prometheus 指标与双 SDK 均已就绪并有 25 个单元/集成测试磁盘格式与 API 在 1.0 前可能变动版本轨迹见 CHANGELOG.md。小结forkd Python SDK 给了 AI 开发者一个干净的取舍保留 E2B 的写码习惯换回 KVM 硬件隔离 101 ms 百沙箱扇出 自托管零费用。三步走forkd doctor全绿后pip install forkd用Sandbox两行代码跑通第一个 microVM用Controller.spawn_sandboxes / branch_sandbox编排扇出与分支。延伸资料REST 全量 API 见 docs/API.md运行手册 docs/RUNBOOK.md安全模型 docs/SECURITY.mdlive 分支设计 DESIGN-v0.4.md。【免费下载链接】forkdFork() for AI agent microVMs. Spawn 100 children in ~100ms from a warm parent; BRANCH a live VM in ~150ms. KVM-isolated, snapshot CoW.项目地址: https://gitcode.com/gh_mirrors/fo/forkd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表