如何让 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 取回每个结果。
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 两个都读。
一个简单的设置:
- 在
AGENTS.md中写下规则:“开始之前,先读HANDOFF.md。停下时,写明你做了什么、还剩什么、改了哪些文件。” - Claude Code 完成自己的部分后,让它把下一个任务写进
HANDOFF.md。 - 启动 Codex,让它接手
HANDOFF.md中的任务。 - 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.txtcodex 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 jsonclaude -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 命令向对方发送任务,结果会回到发起请求的那个智能体。
- 在 MAO 中打开你的仓库,放置一个 Claude Code 节点和一个 Codex 节点。
- 选中 Claude Code 节点,在它的节点栏上选择 Connect,再选择 Codex 节点。
- 如果 Codex 要在 Claude Code 继续工作时编辑代码,就把 Codex 放到它自己的图层上。图层是一个位于独立分支上的 Git 工作树,所以两者永远不会编辑同一个检出目录。
- 让 Claude Code 规划改动,并把实现交给 Codex。Claude Code 在自己的终端中用
mao ask发送任务,使用mao peers列出的名称。 - 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 以内。同一画布上的连线在所有方案中都可用,包括免费试用;连接到其他画布上的智能体需要许可证。
应该使用哪种交接方式?
偶尔需要第二意见时用复制粘贴;想在仓库中留下书面记录时用交接文件;脚本化的一次性步骤(例如构建脚本中的审查)用非交互调用。如果你整天在两者之间来回交接工作,希望两个智能体都保持在线,并且每个任务在结果到达前都被追踪,就用 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 不会把你的提示词经过它自己的服务器转发。
资料来源
- Run Claude Code programmatically:
claude -p、管道输入、--output-format json、--resume、--allowedTools、权限模式,以及-p运行中被拒绝的批准请求。 - Connect Claude Code to tools via MCP:
claude mcp add,以及只向客户端开放 Claude Code 工具的claude mcp serve。 - How Claude remembers your project:每个会话从全新上下文开始、Claude Code 何时读取
AGENTS.md,以及@AGENTS.md导入。 - Codex: Non-interactive mode:
codex exec、stdout 和 stderr、-o、默认只读、--sandbox workspace-write、--skip-git-repo-check和codex exec resume。 - Codex: Agent approvals & security:
workspace-write中默认关闭网络访问,以及network_access设置。 - Codex: Model Context Protocol:
codex mcp add和[mcp_servers]配置。 - Codex MCP server removal:
codex mcp-server已被移除,以及取代它的 app server。 - Codex: Custom instructions with AGENTS.md:Codex 如何查找
AGENTS.md,以及默认的 32 KiB 限制。 - MAO:连接智能体、笔记和门户:用 Connect 画一条连线。
- MAO:发送任务并收取结果:
mao ask、mao send、mao result、mao wait、任务状态和限制。 - MAO:读取和更新已连接的笔记:
mao note read和mao note append。 - 编程智能体的多智能体编排:智能体使用各自的登录、图层即工作树、结果送回发送方。
- MAO 更新日志:双向连线(0.5.24),任务送达、重启和
mao result(0.5.25),免费试用中的连线(0.11.10)。
检查日期:2026-10-28。
有问题?可以在 Discord 提问,或发邮件到 hello@miguer.com。