跳到正文
智能体交接

如何让 Claude Code 和 Codex 互相交接任务

这两个工具都不会自己把工作交给对方。你可以在终端之间转述文本,维护一个两个智能体都会读取的交接文件,或者让一个智能体运行另一个的非交互模式(claude -p、codex exec)。MAO 用连线把两个终端连起来,让它们用 mao ask 互相发送任务并取回结果。

  • claude -p 和 codex exec 让一个智能体把另一个当作命令运行,并从 stdout 读取它的回答。
  • claude mcp serve 只开放 Claude Code 的工具,而不是它的智能体;Codex 自己的 MCP 服务器已被移除。
  • 在 MAO 中,一条连线让两个智能体用 mao ask 互相发送任务,并按任务 ID 取回每个结果。
作者:更新于 阅读约 10 分钟

Claude Code 和 Codex 不会自己把工作交给对方。要交接一项任务,你可以在两个终端之间复制它,在仓库里放一个两个智能体都会读取的交接文件,或者让一个智能体运行另一个的非交互模式(claude -p 或 codex exec)并读取回答。在 MAO 中,你在一个 Claude Code 终端和一个 Codex 终端之间画一条连线,它们就能用 mao ask 互相发送任务并取回结果。

Claude Code 和 Codex 能直接对话吗?

开箱即用时不能。两个工具的文档都没有描述向另一个智能体发送任务的命令,所以总得有什么把任务带过去:你、一个文件、一条 shell 命令,或者一个编排应用。

每个工具都提供了入口。两者都能在 shell 中以非交互方式运行,都会读取仓库中的 AGENTS.md 文件,也都能使用 MCP 服务器。下面几节说明这些方式各自能为交接做什么,以及它们的局限。

如何通过在终端之间复制来交接?

在同一个仓库中,一个终端运行 claude,另一个运行 codex。让 Claude Code 写一份计划,复制它,粘贴到 Codex 中,再把 Codex 的总结复制回 Claude Code 进行审查。

它不需要任何设置,两个智能体都保持完全交互,你可以随时引导任何一个。代价在你身上:每次交接都是一次复制、一次粘贴,再检查有没有内容被截断,你还要记住哪个智能体在等什么。偶尔要第二意见时这样做没问题,但用于“计划、实现、审查”的循环就很累。

如何通过仓库中的文件来交接?

把交接内容写进两个智能体都会读取的文件,让任务和结果留在仓库里,而不是你的剪贴板里。两个工具本来就会读取 AGENTS.md,所以它很适合存放共享规则。

  • Codex 从项目根目录一直读到当前目录中的 AGENTS.md,每个目录最多一个文件,文件合计达到 32 KiB 后就不再添加(由 project_doc_max_bytes 设置决定)。
  • Claude Code(2.1.277 或更高版本)在工作目录及其上级目录中没有 CLAUDE.md 时读取 AGENTS.md。如果有 CLAUDE.md,就在其中加一行 @AGENTS.md,让 Claude Code 两个都读。

一个简单的设置:

  1. 在 AGENTS.md 中写下规则:“开始之前,先读 HANDOFF.md。停下时,写明你做了什么、还剩什么、改了哪些文件。”
  2. Claude Code 完成自己的部分后,让它把下一个任务写进 HANDOFF.md。
  3. 启动 Codex,让它接手 HANDOFF.md 中的任务。
  4. Codex 完成后,让 Claude Code 读取 HANDOFF.md 并审查改动。

这个文件留下了一份你可以阅读和提交的记录,两个智能体都不再依赖你的复制粘贴。你仍然需要告诉每个智能体什么时候去看它。

一个智能体能从自己的 shell 运行另一个吗?

能。Claude Code 的 -p 参数和 Codex 的 codex exec 命令都能在没有交互界面的情况下运行一项任务,并把回答打印到 stdout,所以任何一个智能体都可以把另一个当作普通 shell 命令运行并读取结果。

Claude Code 把任务交给 Codex

让 Claude Code 运行 Codex 来完成实现步骤:

codex exec --sandbox workspace-write "Implement the plan in HANDOFF.md and run the tests" -o codex-result.txt
  • codex exec 把进度输出到 stderr,只把 Codex 的最终消息打印到 stdout,Claude Code 读到的就是这条消息。-o 还会把这条消息写入文件。
  • 它默认在只读沙箱中运行。--sandbox workspace-write 允许它编辑文件。
  • 它要求在 Git 仓库中运行;--skip-git-repo-check 可以关闭这项检查。
  • 后续问题可以用 codex exec resume --last "<prompt>" 发给同一个 Codex 会话。

要让 Claude Code 不必每次询问就能运行这些命令,可以用 Bash(codex exec *) 这样的权限规则放行。

Codex 把任务交给 Claude Code

让 Codex 运行 Claude Code 来做审查:

claude -p "Review the uncommitted changes for bugs and missing tests" --allowedTools "Read,Bash(git diff *)" --output-format json
  • claude -p 打印回答后退出。使用 --output-format json 时,文本在 result 字段中,session_id 字段让之后的调用可以用 --resume 继续同一段对话。
  • 在 -p 运行中,需要批准的工具调用会被拒绝,除非有其他机制批准它,所以要用 --allowedTools 列出 Claude Code 可以使用的工具,或者设置 --permission-mode acceptEdits 这样的模式。
  • Codex 的 workspace-write 沙箱默认关闭网络访问,而 claude -p 需要访问 Anthropic 的 API。在 Codex 的 config.toml 中,于 [sandbox_workspace_write] 下设置 network_access = true 即可放行。

自己编写交接脚本

同样的命令也能组成一次由你在自己终端中运行的交接,每一步的输出作为下一步的输入:

claude -p "Write a step-by-step plan for adding rate limiting to the API. Output only the plan." > plan.md
codex exec --sandbox workspace-write "Implement plan.md, run the tests and summarize what changed" -o codex-summary.md
claude -p "Read plan.md and codex-summary.md, then review the uncommitted changes against the plan" --allowedTools "Read,Bash(git diff *)"

代价是被调用的智能体以无界面方式运行,每次调用一项任务:你看不到它的思考过程,也无法中途介入,调用方智能体要一直等到它退出。

MCP 能把 Claude Code 和 Codex 连起来吗?

不能作为两个智能体之间的交接。MCP 让一个工具使用另一个工具提供的工具,这和把任务交给另一个智能体不是一回事。

  • Codex 使用 Claude Code。 claude mcp serve 把 Claude Code 作为 stdio MCP 服务器启动,Codex 可以用 codex mcp add <name> -- <command> 添加 stdio 服务器。Claude Code 的文档说明,这个服务器只向客户端开放 Claude Code 的工具,所以 Codex 得到的是文件、编辑和 shell 工具,而不是一个接手任务的 Claude 模型。
  • Claude Code 使用 Codex。 OpenAI 的文档说明 codex mcp-server 命令已被移除。取代它的 Codex app server 使用自己的 JSON-RPC 协议而不是 MCP,并且仍处于实验阶段。

MCP 仍然适合给两个智能体提供同样的外部工具,例如同一个文档或问题跟踪服务器,分别用 claude mcp add 和 codex mcp add 添加。

MAO 中通过连线的交接如何工作?

MAO 把 Claude Code 和 Codex 作为真实终端放在画布上,每个都使用自己的登录和模型。两者之间的一条连线让它们能找到对方,并用 mao 命令向对方发送任务,结果会回到发起请求的那个智能体。

  1. 在 MAO 中打开你的仓库,放置一个 Claude Code 节点和一个 Codex 节点。
  2. 选中 Claude Code 节点,在它的节点栏上选择 Connect,再选择 Codex 节点。
  3. 如果 Codex 要在 Claude Code 继续工作时编辑代码,就把 Codex 放到它自己的图层上。图层是一个位于独立分支上的 Git 工作树,所以两者永远不会编辑同一个检出目录。
  4. 让 Claude Code 规划改动,并把实现交给 Codex。Claude Code 在自己的终端中用 mao ask 发送任务,使用 mao peers 列出的名称。
  5. Codex 的终端一就绪,MAO 就把任务送进去。Codex 完成工作后用 mao result <task-id> <content> 结束任务,结果会送回 Claude Code。

Claude Code 这一侧的交接如下:

mao peers
mao ask codex "Implement the plan in docs/plan.md, run the tests and reply with what changed"

连线为你带来:

  • 双向。 同一画布上由连线相连的两个终端总能互相发送任务,所以 Codex 也能用同样的方式请 Claude Code 审查。
  • 可追踪的任务。 每个任务都有稳定的 ID 和状态:pending、delivered、completed 或 failed。mao ask 会等待结果;mao send 立即返回,之后用 mao wait <task-id> 收取结果。
  • 重启后工作不丢失。 MAO 关闭时已收到但尚未完成的任务,会在 MAO 启动时重新排队。崩溃后同一个任务可能送达两次,所以接收方应能容忍重复任务。
  • 共享上下文。 把一个笔记连接到两个智能体,它们都能用 mao note read <note> 读取它,并用 mao note append <note> <content> 追加内容。
  • 两者都保持交互。 每个智能体都是自己的实时终端,你可以随时查看任何一个并在其中输入。

只有 mao result 能结束任务;用 mao ask 回复会发送一条新消息。提示词和结果各自限制在 1 MiB 以内。同一画布上的连线在所有方案中都可用,包括免费试用;连接到其他画布上的智能体需要许可证。

应该使用哪种交接方式?

方式任务如何传递结果如何返回两个智能体是否保持交互设置
复制粘贴由你粘贴由你粘贴回去是无
共享交接文件一个两个智能体都会读取的文件写入同一个文件是,需要提醒它们去看AGENTS.md 规则和一个文件
非交互调用一个智能体运行 claude -p 或 codex exec通过 stdout 返回给调用方智能体否,被调用的智能体以无界面方式运行权限和沙箱设置
MCP不是交接:只有工具调用工具结果不适用claude mcp serve 和 codex mcp add
MAO 连线通过连线使用 mao ask 或 mao send按任务 ID 送回发送方是放置两个节点并连接它们

偶尔需要第二意见时用复制粘贴;想在仓库中留下书面记录时用交接文件;脚本化的一次性步骤(例如构建脚本中的审查)用非交互调用。如果你整天在两者之间来回交接工作,希望两个智能体都保持在线,并且每个任务在结果到达前都被追踪,就用 MAO。

怎样的交接才有效?

交接失败最常见的原因,是接收方智能体缺少发送方掌握的上下文。无论使用哪种方式:

  • 说清楚什么算完成。 “测试通过,并且该端点在 100 次请求后返回 429”比“加上限流”更好。
  • 写明文件和分支。 接收方智能体看不到发送方的任何对话。
  • 要求以固定格式返回结果, 例如改了什么、还剩什么、动了哪些文件,以便发送方据此行动。
  • 把共享的事实放在一个文件或笔记中, 而不是在每条消息里重复。
  • 给每个智能体各自的分支, 当两者同时编辑代码时。

常见问题

能。Claude Code 可以在它的 shell 中运行 codex exec "<task>",它会把 Codex 的最终消息打印到 stdout。Codex 默认只读运行,所以当任务需要编辑时,加上 --sandbox workspace-write。

能。Codex 可以运行 claude -p "<task>",并用 --allowedTools 列出 Claude Code 可以做的事。Codex 的 workspace-write 沙箱默认关闭网络访问,所以要先设置 network_access = true 放行,这次调用才能访问 Anthropic 的 API。

你可以运行 claude mcp serve 并把它添加到 Codex,但它开放的是 Claude Code 的工具,而不是一个接手任务的 Claude 智能体。要交出任务,请使用 claude -p 或 MAO 中的连线。

不会自动共享。每个 Claude Code 会话都从全新的上下文窗口开始,Codex 也保留自己的会话,所以要通过两者都会读取的 AGENTS.md,或通过 MAO 中连接到两个智能体的笔记,来共享它们都需要的内容。

不需要。每个智能体都用你已有的登录和订阅运行自己的 CLI,MAO 不会把你的提示词经过它自己的服务器转发。

资料来源

检查日期:2026-10-28。

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

在你自己的仓库里试试

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

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

下载 MAO