2026/10/4 11:08:17

多个AI Agent如何并行协作?深入Pebrel的agent.fork与Git worktree隔离机制

多个AI Agent如何并行协作?深入Pebrel的agent.fork与Git worktree隔离机制 多个AI Agent如何并行协作深入Pebrel的agent.fork与Git worktree隔离机制【免费下载链接】pebrelAI-native, GPU-accelerated terminal emulator for Windows with SSH, persistent sessions, split panes, and first-class AI CLI workflows.项目地址: https://gitcode.com/gh_mirrors/neb0ula57/pebrel同时跑两个 AI Agent 改同一个代码库是什么体验大概率是一个改了auth.py另一个的上下文还是旧版本提交互相覆盖最后谁也说不清哪行代码是谁写的。Pebrel 用一条agent.fork命令给出了答案——它会在 Git worktree 中为每个 Agent 事务化地创建独立分支和独立目录让多个 AI Agent 像多个人在各自的工位上干活互不踩踏。为什么多个 AI Agent 不能共用同一个工作目录想象你在一个终端里同时让 Claude 修登录 bug、让 Codex 优化接口。它们的会话都运行在同一个 checkout 里文件互相污染A 改了一半的文件被 B 读到B 基于错误假设继续修改Git 状态混乱git status里堆着两个 Agent 的混合改动无法单独回滚分支冲突两个 Agent 想各开一个分支却抢着改同一个 HEAD。Git 其实早就有解法——worktree同一个仓库可以检出多个目录各自对应不同分支。Pebrel 做的事情就是把建 worktree → 开 Tab → 启动 Agent这一整套流程封装成一个原子操作。agent.fork一条命令开出独立工位在 Pebrel 中普通启动用agent.start在既有 Pane 里启动命名 Agent而agent.fork在此基础上增加 Git 隔离。它的工作顺序是解析源目录从source_pane_id对应 Pane 的实时工作目录或显式传入的绝对路径source_cwd出发SSH 远端 Pane 会被明确拒绝本地 Runtime 不能替远端建 worktree前置校验检查 Git 可用性、源工作区是否干净默认拒绝 dirty source、base commit 是否可解析、分支名和路径是否合法事务化创建在 Runtime 工作线程先建分支默认命名pebrel/agent-slug再执行git worktree add默认目录为主仓库同级的repo-worktrees/agent-slug启动 Agent把新 worktree 路径作为 cwd 交给真实的 Tab/PTY 创建链注册命名 Agent 并发送经过核实的启动命令。pebrel ctl agent-fork --window 1 --source-pane 42 --name login-fixer --kind codex --pretty成功响应里会带回一份完整的worktree provenancerepo_root、source_root、path、branch、base_commit、created后续的agent-get/agent-prompt/agent-wait都核验同一份记录——Agent 的工位从此有档可查。事务与回滚失败时只收拾自己弄出来的东西这是整个机制最见功力的地方。分支创建和 worktree 创建是两步独立操作Pebrel 用事务来保证一致性worktree 创建失败 →只删除本事务刚建的分支绝不碰目标目录Tab 创建或 Agent 启动明确失败 → 回滚 worktree 和分支但只回滚本次事务证明自己创建的资源——你已有的目录、已有分支、其他 Agent 的 worktree 一概不动如果 UI 派发超时、结果处于未知态 → Pebrel 返回runtime_timeout并标记cleanup_deferred: true保留 checkout避免晚到的 Tab 打开一个刚被删除的 cwd。对应的实现都在 git_worktree.rsWorktreeTransaction的prepare/commit/rollbackAgent 侧的解析与派发在 agent_api.rsAgentForkParams与prepare_dispatch_command。典型并行协作流程派活、等待、收结果agent.fork只负责开工位 启动 Agent不抢跑派任务。拿到响应里的agent_id generation之后协作闭环是pebrel ctl agent-prompt --agent login-fixer --generation 1 --text 修复登录回归 --pretty pebrel ctl agent-wait --agent login-fixer --generation 1 --state settled --timeout-ms 300000 --pretty pebrel ctl agent-read --agent login-fixer --generation 1 --lines 120 --pretty如果希望结果自动回传给发起方比如另一个 Agent 做汇总改用agent.delegate目标 Agent 回合结束后Pebrel 会把它的最终输出作为不可信数据自动提交回原会话由发起方总结汇报。这样一个总控 Agent就能把多个独立 worktree 当作并行工位来调度而不会让它们同时修改同一个工作树。几个安全边界值得记住场景Pebrel 的行为源工作区有未提交改动返回dirty_source除非显式传allow_dirty_source分支或目录已存在返回branch_conflict/worktree_path_conflict绝不覆盖源 Pane 是 SSH 会话返回remote_worktree_unsupported派发超时、状态未知保留 worktree 并提示cleanup_deferred深入阅读相关源码与文档协议全文runtime-control-api.md 中的命名 Agent 与隔离 worktree一节接口 Schemaruntime-api-v1.schema.json给 Agent 用的技能说明书SKILL.mdNamed Isolated Agents 一节就是标准操作手册worktree 事务实现git_worktree.rsAgent 命令解析runtime_api/ 目录小结隔离是并行协作的前提多个 AI Agent 并行协作的真正瓶颈不是能不能同时启动而是启动之后如何互不干扰。Pebrel 的答案很清晰每个 Agent 一个独立 worktree 工位agent.fork创建过程事务化失败只回滚自己的资源任务通过agent.prompt/agent.delegate派发结果通过agent.wait/agent.read回收各工位的改动留在各自分支上合并由人或后续工作流显式决定。这套工位制让 AI Agent 团队拥有了和人类开发团队一样的协作纪律——各改各的按分支合并出了问题能追责到具体工位。【免费下载链接】pebrelAI-native, GPU-accelerated terminal emulator for Windows with SSH, persistent sessions, split panes, and first-class AI CLI workflows.项目地址: https://gitcode.com/gh_mirrors/neb0ula57/pebrel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考