ARTICLE DETAIL

资讯详情

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

如何Fork一个正在思考的AI Agent:forkd BRANCH实时快照教程,150ms分叉不丢任何上下文

如何Fork一个正在思考的AI Agent:forkd BRANCH实时快照教程,150ms分叉不丢任何上下文 如何Fork一个正在思考的AI Agentforkd BRANCH实时快照教程150ms分叉不丢任何上下文【免费下载链接】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 Agent 能不能像fork(2)一样被复制一份同时保留它已经想过的每一步推理答案是肯定的——开源微虚拟机沙箱运行时 forkd 的BRANCH特性能在 ~150 ms 内暂停一个正在思考的沙箱、快照它当前的全部状态并恢复运行让同一个 Agent 分叉出多个独立分支继续推理而不丢失任何上下文。本文带你从环境准备到实战演示完整跑通这条实时快照分叉链路。为什么 Agent 需要实时快照能力传统的 AI Agent 编排里想尝试多条推理路径只能从头调用 LLM——历史对话、工具结果、内存里的中间状态全部丢掉。而 forkd 把父快照 → N 个子的两层结构扩展成了任意深度的树任何正在运行的子 VM 都能被快照并分叉出孙 VM。这直接解锁了几类真实场景见 docs/design/branching.md安全破坏性操作——rm -rf/apt remove前先分叉后悔就丢弃确认就提交A/B 工具执行—— 并行分支里同时试grep与ripgrep取胜者会话检查点—— 生产环境每 N 轮自动分叉出问题回滚到某一轮快照推测式并行探索—— 同一份认知状态分叉成 N 份各自给出不同结论一键安装与环境自检BRANCH 依赖 Linux ≥ 5.7、vm.unprivileged_userfaultfd1或CAP_SYS_PTRACE以及内嵌的 Firecracker 分支。装好后用forkd doctor一次性探测所有前置条件全部通过即代表你的主机支持 live BRANCHforkd doctor它会核对内核版本、userfaultfd 权限、UFFD_WP 与 memfd_create 支持并报告每项是否就绪。这一步能帮你提前避开分叉时报 UFFD 不可用的常见坑。最简分叉从快照到孙代forkd 提供了 REST、CLI、Python / TypeScript / MCP 三套 SDK。核心机制始终是pause() → snapshot_to() → resume()三件套全部内建于 crates/forkd-vmm/src/lib.rs。CLI 路径两条命令完成分叉 派生孙代# 对正在运行的沙箱做实时分叉 sudo -E forkd snapshot --from-sandbox sb-id --live --no-wait # 从分叉出的快照再 fork 出多个孙代 sudo -E forkd fork --tag branch-tag -n 3Python SDK 路径更适合 Agent 代码里调用from forkd import Controller c Controller() parent c.spawn_sandboxes(pyagent, n1, live_forkTrue)[0] # ... 驱动 parent 运行到想好了 ... branch c.branch_sandbox(parent[id], modelive, waitFalse)对应 REST 端点为POST /v1/sandboxes/:id/branch详细字段与错误码见 docs/API.md。三种模式怎么选live 才是真实时mode参数决定分叉时的暂停窗口长短这是 BRANCH 的关键性能开关模式暂停窗口 p50说明full13 550 ms整个 guest 内存落盘最慢diff~200 ms只写脏页v0.3 默认live56 ms内存拷贝在恢复后异步进行最快live模式要求沙箱以live_forkTrue启动memfd 支撑的 RAM它把暂停窗口从 200 ms 压缩到 56 ms1.5 GiB 源实测 3.6× 加速。配合waitFalse调用方约 70 ms 就拿到返回后台内存拷贝异步完成——对发了就不管的 Agent 分叉是 200× 的往返改进。完整实测数据见 bench/live-fork-pause-window/RESULTS-v0.4.md。实战分叉一个正在思考的 Agentforkd 内置了一个 LangGraph ReAct 演示recipes/langgraph-react/源 Agent 跑了若干步收集天气和地点数据后在想好了下一步时被 BRANCH再分叉出 3 个孙代每个收到不同的引导提示求详尽/要精简/省成本。关键结果三个孙代从同一份认知状态分叉各自继承相同的工具结果、对话历史与 Python 堆内存唯一不同的是下一个念头。父代无提示选了锦市场作为 Day 1 下午而三个带提示的子代都独立改选了岚山竹林——模型并没有被告知要换地点分叉后的引导提示只扰动了下一次 LLM 调用之前的推理状态原封不动地跟着走。这验证了 BRANCH 的三个要点暂停窗口对 guest 内的 Agent 不可见—— 无 socket 报错、无超时、无需重试提示扰动产出真实分叉—— 每个子代的下一次 LLM 调用看到不同系统消息这是有状态 Agent 上最忠实的推测式并行探索模型原始转录与汇总结果在 recipes/langgraph-react/results-2026-05-18/。常见问题速查问题行为源沙箱不在live_vms返回 404无副作用tag 已存在返回 409 Conflict先删除旧 taglive但源沙箱非live_fork启动400需重开沙箱分支并发达到上限默认 4返回 503快照成功但恢复失败快照文件完整可用源沙箱状态可能未知完整失败模式与恢复策略见 docs/design/branching.md 的Failure modes一节。小结用 forkd 的 BRANCH你可以在 Agent 思考的中途把它复制成多个分支暂停窗口低至 ~56 ms且每个分支都完整继承父代的推理状态与文件系统。三步走forkd doctor确认环境支持 UFFD_WP以live_forkTrue启动源沙箱并驱动它运行调用branch_sandbox(..., modelive, waitFalse)分叉再从分支快照fork出孙代开源、Apache 2.0、无厂商 SDK——现在就能跑在自己的硬件上。【免费下载链接】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),仅供参考
返回列表