ARTICLE DETAIL

资讯详情

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

forkd Python SDK实战:30行代码写出第一个AI Agent沙箱(Sandbox+Controller完整示例)

forkd Python SDK实战:30行代码写出第一个AI Agent沙箱(Sandbox+Controller完整示例) forkd Python SDK实战30行代码写出第一个AI Agent沙箱SandboxController完整示例【免费下载链接】forkd高性能Agent沙箱预热虚拟机可以在约 100 毫秒内派生出 100 个独立实例运行过程中约 150 毫秒“分叉”出一个新的运行环境。底层使用 KVM 隔离并利用快照写时复制降低资源开销。项目地址: https://gitcode.com/deeplethe/forkdforkd 是一款面向 AI Agent 的高性能微虚拟机沙箱microVM sandbox运行时预热虚拟机可在一百多毫秒内派生出 100 个独立沙箱实例运行中还能在约 150 毫秒内分叉出一个全新环境。它的 Python SDK 提供Sandbox兼容 E2B 接口的沙箱执行器和Controller沙箱生命周期管理器两个核心类本文带你用约 30 行代码写出第一个 AI Agent 沙箱并给出 Sandbox Controller 的完整示例。为什么 forkd 适合做 AI Agent 沙箱Agent 运行不可信代码执行 LLM 生成的命令、跑第三方脚本时需要一个隔离性好、又足够快的执行环境。forkd 的做法是预热快照父虚拟机先启动一次导入 Python、numpy 等运行时后暂停落盘写时复制Copy-on-Write每个子沙箱通过MAP_PRIVATE共享父机内存页只有被修改的页才独占因此派生成本接近fork(2)而非冷启动虚拟机KVM 硬件隔离每个沙箱都是独立 Firecracker 进程天然隔离比容器命名空间更强运行中分叉BRANCH约 150 ms 暂停、快照、恢复让 Agent 可以在思考中途分叉出并行分支做投机执行。 核心指标派生 100 个沙箱约 101 ms单沙箱分叉约 150 mseval复用预热解释器单次执行低至毫秒级对比冷启动子进程约 108 ms。环境准备forkd Python SDK 安装教程3 步1️⃣ 安装 CLI 并做健康检查SDK 依赖宿主机上的forkdCLI 与 controller 守护进程。在 x86_64 Linux支持 KVMUbuntu 22.04上# 安装 CLI daemon 二进制无需 Rust 工具链 curl -sSL https://github.com/deeplethe/forkd/releases/download/v0.5.3/forkd-v0.5.3-x86_64-linux.tar.gz \ | sudo tar -xz -C /usr/local/bin/ # 一条命令完成自检 搭环境 烤制 Python 快照 派生 10 个沙箱 sudo -E forkd quickstart手动方式也可以运行 scripts/setup-host.sh 配置 KVM 与 tap 设备再用forkd doctor检查——它会对 KVM、tap、Firecracker、uffd_wp、hugepages 等 17 项逐一体检并对未通过项给出修复建议2️⃣ 准备一个预热快照SDK 需要一个已注册的父快照默认 tag 为pyagent。quickstart会自动构建也可以从 Hub 直接拉取现成的# 14.5 MiB 的 Python 3.12 LangGraph 快照约 15 秒完成 forkd pull deeplethe/langgraph-react3️⃣ 安装 Python SDKpip install forkdSDK 源码结构很清晰想深入时可以看 sdk/python/forkd/sandbox.py沙箱执行器与 sdk/python/forkd/controller.pyREST 客户端。第一个 AI Agent 沙箱Sandbox 完整示例Sandbox是 E2B 兼容接口from e2b import Sandbox换成from forkd import Sandbox即可无缝迁移。下面这段约 20 行代码完成创建沙箱 → 执行命令 → 复用预热环境执行表达式 → 自动销毁的完整闭环import time from forkd import Sandbox # with 块退出时自动 kill 底层 microVM不用担心资源泄漏 with Sandbox() as sandbox: print(agent:, sandbox.ping()) # 方式一运行任意命令在沙箱内以 sh -c 执行 t time.perf_counter() r sandbox.commands.run(python3 -c import numpy; print(numpy.eye(3))) print(fexec [{(time.perf_counter()-t)*1000:.0f} ms]) print(r.stdout.rstrip()) # 方式二eval —— 复用沙箱内已预热的 PID 1 解释器 t time.perf_counter() result sandbox.eval(numpy.zeros(5).tolist()) print(feval (warm) [{(time.perf_counter()-t)*1000:.0f} ms]: {result})对应的端到端示例含手动生命周期版本在仓库中可直接运行sdk/python/example.pySDK 用法说明见 sdk/python/README.md。commands.run 与 eval两种执行方式怎么选接口原理典型耗时适用场景commands.run(cmd)在沙箱内新开子进程~100 ms跑 shell 命令、装依赖、多步脚本eval(expr)直接在预热的 PID 1 解释器中求值~8 ms高频调用、Agent 循环内的表达式执行对于 Agent 循环中每秒几十次的代码执行eval的毫秒级延迟优势非常关键——它跳过了子进程启动直接复用快照中已加载的运行时numpy 等模块已在内存中。Controller 完整示例把沙箱当进程管理Sandbox负责进沙箱里执行代码Controller负责宿主机侧的生命周期管理派生、分叉、销毁通过 REST API 与 forkd-controller 守护进程通信。完整组合示例from forkd import Controller, Sandbox c Controller() # 默认 http://127.0.0.1:8889 # 1. 从预热快照派生 1 个沙箱 children c.spawn_sandboxes(pyagent, n1, per_child_netnsTrue) sb_id children[0][id] # 2. 在沙箱里执行代码走宿主机 exec 通道或接 Sandbox 直连 guest agent print(c.exec_command(sb_id, [python3, -c, print(11)])[stdout]) # 3. 关键一步在运行中分叉给当前状态打快照 branch c.branch_sandbox(sb_id, tagcheckpoint-1) print(branch[tag], branch[branched_from]) # 4. 从分叉点再扇出 5 个孙子沙箱做投机并行 grandchildren c.spawn_sandboxes(branch[tag], n5) # 5. 收尾 for g in grandchildren [children[0]]: c.kill_sandbox(g[id])REST 接口的字段与参数说明可参考 docs/API.md。分叉BRANCH让 Agent 可以中途分身这是 forkd 最独特的能力Agent 跑到一半比如执行高危操作前调用branch_sandbox即可把当前内存状态固化为快照随后从分叉点扇出多个并行沙箱做投机执行失败的那支直接丢弃主路径不受影响。三种分叉模式full暂停下整块复制内存最稳diff只写脏页暂停约 200 mslivev0.4需live_forkTrue启动基于 UFFD_WP 的运行时分叉源沙箱暂停窗口降到 56 ms p50配合waitFalse约 10 ms 即可返回。性能与资源开销能到什么水平派生 100 个沙箱的耗时与每个实例的内存占用写时复制下多个子实例共享父页两点提醒冷缓存下首次 BRANCH 有 2~9× 的惩罚生产环境建议 spawn 时开启prewarmTrue详见 bench/pause-window/RESULTS-v0.2.md运行forkd bench --tag pyagent --n 5可以在你的机器上实测派生/分叉/扇出延迟输出可直接截图留档。常见问题 FAQQSDK 支持并发多个Sandbox()实例吗当前版本多个实例共享父快照的 MAC/IP并发多实例仍在路线图上多沙箱场景请统一走Controllerspawn_sandboxes(n...)。文件读写files.read/write与流式输出也尚未支持。Q报forkd CLI must be on PATH怎么办先装 CLI见上文安装步骤构建方式见 scripts/README.md再跑forkd doctor定位未通过项。Q快照能在不同机器间迁移吗快照不跨 Firecracker 版本与 CPU 微架构用forkd pack/forkd pull打包迁移见 docs/HUB.mdHub 上也有现成的langgraph-react等快照包。延伸阅读官方 API 文档docs/API.mdPython SDK 完整示例sdk/python/example.py分叉设计说明docs/design/branching.md运维手册守护进程部署与排障docs/RUNBOOK.md更多 Agent 框架集成配方LangGraph、OpenAI Swarm 等recipes/README.md【免费下载链接】forkd高性能Agent沙箱预热虚拟机可以在约 100 毫秒内派生出 100 个独立实例运行过程中约 150 毫秒“分叉”出一个新的运行环境。底层使用 KVM 隔离并利用快照写时复制降低资源开销。项目地址: https://gitcode.com/deeplethe/forkd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表