跳到正文
混用多家提供方的智能体

如何在同一个项目中同时运行 Claude Code、Codex 和 Gemini CLI

安装并登录每个 CLI,然后给每个智能体一个独立的终端;当它们同时编辑代码时,再给每个智能体一个独立的 Git 工作树。这样能解决文件问题,但智能体之间的交接仍然要靠手动。MAO 把三者都作为终端节点放在同一块画布上,每个节点使用自己的登录,用连线完成交接,并为每个智能体分配一个角色。

  • 每个 CLI 保留自己的登录和套餐
  • 每个编辑代码的智能体各用一个 Git 工作树
  • MAO 需要 Gemini CLI 0.41 或更高版本
作者:更新于 阅读约 10 分钟

要在同一个项目中运行 Claude Code、Codex 和 Gemini CLI,先安装并登录每个 CLI,在各自的终端中启动它们,再给每个编辑代码的智能体一个独立的 Git 工作树,让它们的改动互不干扰。普通终端和工作树需要你自己在智能体之间传递计划和审查意见。MAO 把三者都作为终端节点放在同一块画布上,每个节点使用自己的登录,通过连线互相发送任务,并各自分配一个角色。

为什么要混用 Claude Code、Codex 和 Gemini CLI?

每个 CLI 都是不同公司为自家模型打造的智能体,因此混用它们可以把工作的不同部分交给不同的模型。常见的分工是一个智能体负责规划,一个负责实现,一个负责审查。

  • Claude Code 是 Anthropic 的智能体,使用 Claude 订阅或 Claude Console 账号登录。
  • Codex 是 OpenAI 的智能体,使用 ChatGPT 套餐或 OpenAI API 密钥登录。
  • Gemini CLI 是 Google 的智能体,使用 Google 账号、Gemini API 密钥或 Vertex AI 登录。

没有写这段代码的审查者会用全新的眼光阅读它,而来自另一家提供方的审查者离作者又远了一步。哪个模型适合哪项工作取决于你的项目,所以在依赖某种分工之前,先用一个小任务试一试。

开始之前,每个 CLI 需要什么?

每个 CLI 都需要单独安装,并会在你第一次于项目目录中运行它时要求登录。

Claude CodeCodexGemini CLI
安装原生安装程序、Homebrew 或 WinGet安装脚本、npm 或 Homebrewnpm、Homebrew 或 MacPorts;需要 Node.js 20 或更高版本
启动claudecodexgemini
登录Claude Pro、Max、Team 或 Enterprise,Claude Console,或云服务提供方Sign in with ChatGPT(Plus、Pro、Business、Edu、Enterprise)或 API 密钥使用 Google 登录、Gemini API 密钥或 Vertex AI
项目说明文件CLAUDE.md 或 AGENTS.mdAGENTS.mdGEMINI.md

使用 Homebrew:

brew install --cask claude-code
brew install --cask codex
brew install gemini-cli

在 Windows 上:

winget install Anthropic.ClaudeCode
npm install -g @openai/codex
npm install -g @google/gemini-cli

Claude Code 和 Codex 还为每个系统提供了自己的安装脚本,列在它们的文档中。Claude Code 的原生安装会在后台自动更新;通过 Homebrew 或 WinGet 安装则不会,需要你自己用 brew upgrade claude-code 或 winget upgrade Anthropic.ClaudeCode 升级。

然后在项目目录中逐个登录:

  1. 运行 claude --version 检查安装,再运行 claude 并按浏览器中的提示登录。之后要切换账号,在会话中输入 /login。
  2. 运行 codex 并选择 Sign in with ChatGPT;或者用 API 密钥登录:运行 codex login --with-api-key,并通过标准输入传入密钥。codex login status 会显示当前使用的登录方式。
  3. 运行 gemini 并选择一种登录方式。使用 Gemini API 密钥时,先用 export GEMINI_API_KEY="YOUR_API_KEY" 设置它。如果你的组织为你提供了 Code Assist 许可证,在使用 Google 登录之前,先把 GOOGLE_CLOUD_PROJECT 设为你的 Google Cloud 项目。

设置 Gemini CLI 之前,先确认它支持哪些 Google 账号。它的 README 说明,它面向 Google Cloud 上的 Gemini Code Assist Standard 和 Enterprise 许可证以及 Code Assist for GitHub,另外支持付费 API 和 Vertex AI 密钥。免费个人使用以及 Google AI Pro 和 Ultra 已于 2026 年 6 月 18 日转到 Antigravity CLI。

三个智能体如何共用项目说明?

只维护一个 AGENTS.md,让另外两个智能体指向它。每个智能体默认读取自己的说明文件,不这样做的话,你就要维护三份相同的规则。

  • Codex 读取 AGENTS.md,从项目根目录一直查找到当前目录。
  • Claude Code 在没有 CLAUDE.md 时读取 AGENTS.md。如果你保留了 CLAUDE.md,在其中加一行 @AGENTS.md 来导入共用文件。
  • Gemini CLI 读取 GEMINI.md。在它的 settings.json 中,把其他文件名列在 context.fileName 设置里:
{
  "context": {
    "fileName": ["AGENTS.md", "GEMINI.md"]
  }
}

直接开三个终端可以吗?

可以,而且不需要任何新工具:在仓库中打开三个终端窗口或标签页,分别运行 claude、codex 和 gemini。每个 CLI 保留自己的登录,所以三者从不共用凭据。

当这些智能体只读代码或只改动明显互不相干的文件时,这样做没有问题。但它们都在编辑同一个工作目录,于是一个智能体改到一半的内容,就是下一个智能体看到的状态;而你是它们之间唯一的联系:你从一个窗口复制计划,再粘贴到下一个窗口。

tmux 会让事情更简单吗?

tmux 把三个智能体放进同一个窗口的不同窗格,让你可以并排查看它们,并让它们在一个可以随时回来的会话中继续运行。它改变的是你查看智能体的方式,而不是它们共享文件的方式。

  1. 用 tmux new -s agents 启动一个命名会话。
  2. 按 C-b % 左右拆分窗格,按 C-b " 上下拆分窗格。
  3. 在每个窗格中分别运行 claude、codex 和 gemini。
  4. 用 C-b d 分离会话,再用 tmux attach -t agents 回到会话。

这些窗格仍然共用一个检出目录,你也仍然要手动在它们之间传递工作。

Git 工作树如何把智能体分开?

给每个编辑代码的智能体一个独立的工作树。工作树是同一个仓库的第二个工作目录,检出它自己的分支,因此每个智能体编辑自己的文件,并提交到自己的分支。

git worktree add -b agent/codex ../myapp-codex
git worktree add -b agent/gemini ../myapp-gemini

claude                            # plans and reads in the main checkout
cd ../myapp-codex && codex        # edits on agent/codex
cd ../myapp-gemini && gemini      # edits on agent/gemini

git worktree list 会列出每个工作树及其分支。Git 不允许检出已被另一个工作树检出的分支,这能防止两个智能体落在同一个分支上。分支合并后,用 git worktree remove ../myapp-codex 删除它的工作树。

工作树解决了文件问题,却没有解决交接问题。这些智能体仍然无法互相询问任何事,你仍然要记住哪个终端在等你。

MAO 如何同时运行这三个智能体?

MAO 把每个智能体作为终端节点放在画布上,节点运行该智能体自己的 CLI,并使用它自己的登录。你在智能体之间画出连线,让它们可以互相发送任务;给每个智能体分配一个角色;再把编辑代码的智能体放到图层上,而图层就是 Git 工作树。

  1. 安装并登录:在终端将要运行的机器上安装并登录每个 CLI。MAO 运行的是智能体自己的 CLI,如果某个没有安装,它会告诉你。在 Windows 上,MAO 会在你的 PATH 中找到用 npm install -g 安装的智能体,Gemini CLI 也在其中。
  2. 打开你的仓库,把它作为 MAO 中的一个工作区。
  3. 放置智能体。 选择 New terminal or agent,或按 Ctrl+T(macOS 上为 Cmd+T),然后选择 Claude Code 并放置它的节点。对 Codex 和 Gemini CLI 重复这一步,Gemini CLI 在智能体面板中有自己的图块。
  4. 为每个节点选择登录。 每个节点默认使用该 CLI 自己的登录,除非你从它的 Account 菜单中选择一个已保存的账号。Add account… 可以保存 Directory、API key 或 Endpoint 类型的账号,具体取决于提供方支持哪些类型。
  5. 为每个智能体分配角色。 Builder 和 Reviewer 是内置角色,例如给 Codex 分配 Builder,给 Gemini CLI 分配 Reviewer。在 Claude Code 的说明面板中写一个规划角色,然后选择 Save as role。
  6. 画出连线。 选中 Claude Code 节点,选择 Connect 并选中 Codex,再把 Codex 连接到 Gemini CLI。一条连线只授予对另一端节点的访问权限。把一个规格说明笔记连线到三个智能体,让它们共用计划。
  7. 给实现者一个图层,让它的改动落在自己的分支上。你在画布上审查差异(diff),准备好后把图层合入 Ground。
  8. 只提一次需求。 在 Claude Code 的设置面板中把它标记为 Orchestrator,然后告诉它你想构建什么。

规划者在自己的终端中,用 mao 命令把工作交给它的对等节点:

mao peers
mao ask builder "Implement the plan in the spec note"
mao ask reviewer "Review the builder's changes for bugs and missing tests"

mao ask 发送一个任务并等待结果。mao send 会立即返回任务 ID,之后用 mao wait <task-id> 获取结果。编排者还可以用 mao recruit <name> --preset <preset> --role <role> 添加智能体,并用 mao connect <from> <to> 为它连线。

MAO 会把角色的说明加入它通过 ACP 发送的提示词中。只以终端方式运行的智能体不会自动收到这些说明,所以也要把同样的规则写进项目的说明文件。

你应该选择哪种方式?

从能解决你问题的最简单方式开始:快速看一眼时用终端,两个智能体开始编辑代码时用工作树,厌倦了在它们之间传递工作时用画布。

方式同时看到三个智能体避免文件冲突智能体互相交接工作每个智能体的登录设置
多个独立终端否,每个一个窗口否否,由你复制粘贴各 CLI 自己的登录无
tmux 窗格是,同一窗口中的窗格否否,由你复制粘贴各 CLI 自己的登录安装 tmux
Git 工作树取决于你的终端是,各用一个分支否各 CLI 自己的登录每个智能体一次 git worktree add
MAO是,画布上的节点是,使用图层是,连线和 mao askCLI 自己的登录,或每个节点一个已保存的账号放置节点,画出连线

常见问题

可以。每个都是独立的 CLI,有自己的登录,所以三者可以同时在一个仓库中运行。给每个编辑代码的智能体一个独立的 Git 工作树,或在 MAO 中给它一个独立的图层,它们的改动就不会冲突。

不需要。Claude Code 使用 Claude 订阅登录,Codex 使用 ChatGPT 套餐登录,而拥有 Code Assist 许可证的组织可以用 Google 账号登录 Gemini CLI。在 MAO 中,每个智能体都使用自己的登录,MAO 不会让你的提示词经过它自己的服务器。

Gemini CLI 0.41 或更高版本。如果版本较旧,MAO 会说明它找到了哪个版本、在哪里,以及如何更新。

能,只要把它列出来。Gemini CLI 默认读取 GEMINI.md;把 AGENTS.md 加到 context.fileName 设置中,它也会读取这个文件,也就是 Codex 和 Claude Code 读取的同一个文件。

根据 Gemini CLI 的 README,免费个人使用以及 Google AI Pro 和 Ultra 已于 2026 年 6 月 18 日转到 Antigravity CLI。MAO 也可以把 Antigravity 作为智能体运行,与 Claude Code 和 Codex 并列。

来源

检查于 2026-10-28。

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

在你自己的仓库里试试

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

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

下载 MAO