跳到正文
并行编程智能体

如何并行运行多个 Claude Code 智能体

同时运行多个 Claude Code(或 Codex)会话的三种方式,从普通终端到协同工作的团队,以及如何避免它们互相干扰。

作者:更新于 阅读约 4 分钟

为什么要运行多个 Claude Code 会话?

一个 Claude Code 会话会一步一步地完成任务。当一次改动包含相互独立的部分(一个 API、它的测试、一次迁移、文档)时,为每个部分各运行一个会话,能更快完成整体工作,并让每个会话的上下文专注于一件事。第二个会话也天然适合担任第一个会话的审查者。

你马上会遇到的两个问题是冲突(两个会话编辑同一批文件)和协调(由你在它们之间传递工作和结果)。下面每种方法处理这两个问题的方式各不相同。

方法 1:在同一个检出目录中开多个终端

最简单的做法是在同一个仓库中打开两三个终端标签页(或 tmux 窗格),并在每个里面启动 claude。它不需要任何新工具,当这些会话只读代码或只改动明显互不相干的文件时,这样做没有问题。

但它很快就会出问题。每个会话都在编辑同一个工作目录,于是一个会话改到一半的内容,就会变成另一个会话眼中令人困惑的状态;而在某个窗格里执行一次 git checkout,会改变所有会话脚下的文件。你还是这些会话之间共享任何东西的唯一途径:你从一个标签页复制计划,再粘贴到另一个标签页。

方法 2:每个会话一个 Git 工作树

Git 工作树解决了冲突问题。工作树是同一个仓库的第二个工作目录,位于它自己的分支上,因此每个 Claude Code 会话都有属于自己的文件:

git worktree add ../myapp-api -b agent/api
git worktree add ../myapp-tests -b agent/tests

cd ../myapp-api && claude      # session 1
cd ../myapp-tests && claude    # session 2

现在每个会话都提交到自己的分支,完成后由你合并这些分支。分支合并之后,用 git worktree remove ../myapp-api 删除它的工作树。

工作树解决了文件问题,却没有解决协调问题:这些会话仍然无法互相询问任何事,你仍然要记住哪个终端在做什么、哪个在等你。

方法 3:在一个会话内使用子智能体

Claude Code 也可以在单个会话内启动子智能体,让它们处理任务的一部分并汇报结果。这样一切都保留在同一段对话中,很适合调研或聚焦的子任务。不过,它仍局限于一家提供商和一个会话:你无法把 Codex 或 Gemini 智能体带进来,而长时间运行的并行编辑依然需要独立的分支。

方法 4:画布上的协同团队

MAO 把上面这些部分整合到一个地方。每个 Claude Code 会话(或 Codex、Gemini CLI、Grok、OpenCode 会话)都是画布上的一个真实终端,而以下三点让它们成为一个团队:

  • 图层就是工作树。把智能体放到一个图层上,它就会在自己的分支、自己的工作目录中工作,这些都会为你自动创建。你在画布上查看差异(diff),并在准备好时将其合入。
  • 连线让智能体互相交流。连接两个会话后,它们就能用 mao 命令互相发送任务并取回结果,这样审查者可以直接联系作者,而不用经过你。
  • 需要关注的事会来找你。当某个会话完成、失败或等待批准时,它的节点会显示出来,你也会收到通知,因此你再也不用在标签页之间翻找。

智能体在自己的终端里询问与它相连的审查者:

mao ask reviewer "Check the new /sessions endpoint for missing tests"

由于每个节点都是智能体自己的 CLI,每个会话都保留自己的登录、订阅和模型。你可以并排运行两个使用不同账号的 Claude Code 会话。

你应该用哪种方法?

方法避免文件冲突智能体能互相交流混用提供商配置
多个终端否否是无
Git 工作树是否是每个分支手动配置
子智能体否仅限同一会话内否无
MAO 画布是(图层)是(连线)是放置节点、画出连线

如何避免并行智能体相互冲突

  • 每个要改代码的智能体一个分支。仅这一条规则就能避免大多数问题。
  • 按边界拆分,而不是按行拆分。给智能体分配完整的文件或模块,而不是同一个文件的不同部分。
  • 把计划一次写下来。一份共享的规格说明笔记能让每个智能体遵循同一套接口,而不是各自发明一套。
  • 让一个智能体担任审查者。它会在你合并之前阅读每个分支,让矛盾尽早暴露。
  • 经常合并。短期分支比长期分支偏离得更少。

常见问题

可以。每个终端都能运行自己的 Claude Code 会话。为了避免它们编辑同一批文件,给每个会话分配自己的 Git 工作树,或者在 MAO 中把每个会话放到各自的图层上,MAO 会为你创建工作树。

在各自的终端中运行它们。在 MAO 中,放置一个 Claude Code 节点和一个 Codex 节点并把它们连接起来,它们就能通过 mao 命令互相发送任务和结果。

不会,每个会话都有自己的上下文。可以通过一条公共笔记(例如每个智能体都能读取的规格说明或进度日志)来共享它们需要的内容,或者把一个智能体的结果发送给另一个智能体。

在 MAO 中可以:每个节点都能用不同的账号运行智能体,因此两个 Claude Code 会话可以并排使用两份订阅。

有问题?可以在 Discord 提问,或发邮件到 hello@miguer.com。

在你自己的仓库里试试

把你的智能体放到同一块画布上。

7 天试用,包含画布的全部功能。无需银行卡。

下载 MAO