本文要点
- Claude Code 与 Codex CLI 可以同机,但禁止共用一个工作目录;用
git worktree做硬隔离。 - 推荐三层:目录(HOME 配置) → worktree(仓库) → tmux(会话);MCP Server 只挂一份、路径与 worktree 对齐。
- 分工上常见:Claude Code 扛长会话与多文件;Codex 扛脚本化批处理或与 OpenAI 栈对齐的任务。
- 16GB 适合「1 长 + 1 短」;要两路长会话并行 优先 24GB,并盯
memory_pressure。 - 验收看三项硬指标:
tools/call≥95%、memory_pressure黄区 ≤2h、worktree 交叉写入 0 次。
1. 为什么需要云 Mac 双 AI Agent 架构?
2026 年上半年,kvmboot 工单里关于「云 Mac」的提问,已经从「能不能 SSH」进化到「一台机上要跑几个 Agent」。当你要落地 云 Mac 双 AI Agent 架构(dual AI agent architecture) 时,典型背景是:
- 团队里有人习惯 Claude Code 的 Hooks、长上下文与 Anthropic 模型;另一个人更熟 Codex CLI 或与 OpenAI 文档、评测脚本对齐的工作流。
- 同一个 sprint 里,Claude Code 在做跨模块 refactor,Codex 在另一个分支上改配置、跑生成脚本——若都挤在本机笔记本,合盖即断;迁到云 Mac 后,本机只当遥控器。
- 成本上,租一台 24GB 的 Mac mini M4 往往比「笔记本 7×24 插电 + 双份 API」更可控;机器费是固定的,Token 费才随用量涨。
这与站内前几篇的脉络也衔接得上:你先决定「Agent 要不要上云」(见 为什么越来越多人把 Claude Code 跑在云 Mac 上),再决定「MCP Server 放哪」(见 MCP Server 部署对照)。双 Agent 同机是第三层问题:Host 已经上了云 Mac,两个 CLI 怎么不互害。
官方入口供对照:Claude Code 文档、OpenAI Codex CLI 仓库、git worktree。
不熟悉 tmux / worktree / MCP? 先只记一句:两个 Agent = 两个仓库副本 + 两个终端窗口 + 一个 MCP 服务。 下文再把「目录配置、绝对路径、量化验收」展开;术语第一次出现时会用白话解释。
2. 五种翻车模式(工单里最高频)
在帮用户排障时,我们把「双 Agent 配了但不工作」收敛成五类——命中任意两类,就该停下手头功能开发,先把隔离重做一遍。
- 共目录写
.git/index:Claude Code 在main上改文件,Codex 同时在同一目录跑git checkout,出现「我刚才的改动去哪了」。这不是模型笨,是文件系统竞态。 - MCP 路径写死本机:MCP(给 Agent 调用的工具服务)配置里仓库路径指向笔记本,SSH 到云 Mac 后读不到——双 Agent 会以不同方式失败,排障时间翻倍。
- tmux 会话混用:tmux(终端多窗口复用器)里两个 Agent 共用一个 window,目录与环境纠缠;你以为是 Codex 在改 A 模块,其实是 Claude Code 上一轮留下的 shell。
- API Key / 配额混放:
~/.claude与 Codex 凭据都在默认 HOME,被某次export污染,导致错模型、错账单。 - 16GB 上跑两路长会话:并行两个「两小时以上」的 Agent,
memory_pressure变黄后工具调用延迟飙升,被误判成「MCP 坏了」。
这五类的共同解不是「换更聪明的模型」,而是边界:仓库边界、会话边界、配置边界。下面第三节讲分工,第四节给可复制布局。
3. Claude Code vs Codex:怎么分工才不重复烧钱
双 Agent 不是「两个一样的东西叠在一起」。在能接受的工程实践里,我们见到较稳的分工是:
| 维度 | Claude Code | Codex CLI |
|---|---|---|
| 擅长 | 长会话、多文件 refactor、Hooks、与 MCP Git 深度联动 | 快迭代小任务、脚本化批处理、OpenAI 生态对齐 |
| 不适合 | 与另一 Agent 共目录并行写 | 替代 codesign / Xcode 全流程(仍要 macOS 工具链) |
| 典型槽位 | tmux 窗口 cc-main,worktree feature/refactor |
窗口 codex-hotfix,worktree hotfix/config |
| 费用心智 | 按 Token;长会话要设预算提醒 | 同样按 Token;短任务注意别无限循环脚本 |
若两路都在做「全仓库理解 + 大范围改码」,你会付双份 Token 却得不到双份吞吐——不如只留一个长会话 Agent,另一个只做窄任务。这与 AI Coding 三件套架构 里的「编排层 vs 执行层」一致:Agent 可以多个,同时长跑的执行层不宜多个抢同一棵树。
需要 ECC、Skills、Hooks 工程化包装时,另读 ECC 值不值得用——它解决的是 Claude Code 侧能力放大,不是 Codex 替代。
4. 三层隔离架构图(topology)
下面这张图是全文 云 Mac 双 AI Agent 架构 的视觉锚点:两条 Agent 链路向下汇合到单一 MCP Server,避免「文字很长但脑子里没图」。
5. 隔离 setup:目录、worktree、tmux
5.1 目录层:HOME 与配置不要缠在一起
在云 Mac 上为两个 Agent 各准备逻辑用户或至少独立配置根(小团队可用同一 Unix 用户,但用不同 env 文件启动):
- Claude Code:
CLAUDE_CONFIG_DIR=/Users/agent/.claude-cc(示例),Hooks、MCP stdio 配置放这里。 - Codex CLI:凭据与
config.toml单独目录,避免与 Claude 的settings.json混写。
开通 SSH 与钥匙串边界时,可直接沿用 租 Mac 开通验收清单 里的账号与权限段落。
5.2 仓库层:worktree 农场(硬隔离)
这是双 Agent 的非协商项。主仓库只读或只做 fetch;每个 Agent 绑定一个 worktree 绝对路径:
# 在云 Mac 上,示例路径
/opt/worktrees/my-app-cc-refactor # 仅 Claude Code
/opt/worktrees/my-app-codex-hotfix # 仅 Codex CLI
git worktree add /opt/worktrees/my-app-cc-refactor feature/refactor
git worktree add /opt/worktrees/my-app-codex-hotfix hotfix/config
更完整的农场布局与短租验证,见 远程 Mac worktree 短租。记住:Agent 启动前先 cd 进自己的 worktree,写进 tmux 启动脚本,不要靠人肉记忆。
5.3 会话层:tmux 一 Agent 一 window
推荐最小布局:
tmux new-session -s agents -n cc -c /opt/worktrees/my-app-cc-refactor
# 新 window
tmux new-window -t agents -n codex -c /opt/worktrees/my-app-codex-hotfix
本机笔记本 SSH 进去后 tmux attach -t agents;合盖只断本地 Client,云 Mac 上的双 Agent 会话继续——这正是「Agent 上云」相对笔记本的核心收益。夜间定时任务若还要跑第三路(例如 launchd 触发),见 launchd + MCP + Codex/Claude FAQ,但定时任务也应绑定独立 worktree,不要与交互式 Agent 共目录。
6. MCP 与双 Agent:一份 Server,两条 Client 路径
双 Agent 不等于双份 MCP Server 乱装。更稳的做法是:
- 在云 Mac 本机跑一份 MCP Git Server(或其它 tools),
--repository指向当前主 worktree 集合的父目录,或为每个 worktree 各起一个 Server 端口——二选一,团队选一种并写进文档。 - Claude Code 与 Codex 若都支持 MCP,配置里的路径必须是SSH 那台机上的绝对路径,与 MCP 部署专文 的「Server 与仓库同机」一致。
- 禁止:Claude Code 连 VPS 上的 MCP、Codex 连本机 stdio——排障时会变成「两个世界」。
验收时只测一件事:在两个 tmux window 里各问一次「当前分支最近三次提交」,日志里都要有 tools/call 且分支名与各自 worktree 一致。
7. 16GB vs 24GB:并行度与 memory pressure
双 Agent 对内存的压力,常被低估。经验区间(Apple Silicon 统一内存,且同时开索引/语言服务时):
- 16GB:适合「一路长会话 + 一路短任务」或「一路 Agent + 一路只读 MCP 查询」;两路都开 Xcode 或 Docker 会顶满。
- 24GB:适合两路交互式长会话,或一路 Agent + 一路带模拟器/构建的 CI 脚本;仍要配合 内存洪峰与 swap 治理 里的观测命令。
区域与租期别在第一天就锁死:先按 亚太/美东与 16GB/24GB 指南 测 RTT,再在日租窗口里压 memory_pressure。
8. Cloud Mac 双 Agent 验收标准(Checklist)
把 48 小时日租从「工程笔记」升级为可复制的验收标准:时间轴负责过程,下表负责是否达标。建议在云上保存日志片段(可打码),方便团队对齐 E-E-A-T 里的「真实做过」。
| 指标 | 合格线 | 怎么测(云 Mac 上) |
|---|---|---|
| tools/call 成功率 | ≥ 95% | 48h 内两路 Agent 各发起 ≥20 次仓库类 MCP 调用;成功 = 返回正确分支/提交信息 |
| memory_pressure 黄区时长 | 连续 ≤ 2h | while sleep 300; do memory_pressure; done 采样;两路长会话并行时重点看 16GB |
| worktree 交叉写入 | = 0 次 | 禁止 A/B 目录互 cd;用 git -C /path status 审计,无「改错树」事故 |
8.1 48 小时时间轴(可复制模板)
- 小时 0–2 · Setup:SSH 开通;创建 worktree A/B;tmux 脚本写死
cd路径;MCP--repository用云 Mac 绝对路径。 - 小时 2–8 · Isolation:Claude Code 只在 A 做 refactor;Codex 只在 B 做小步提交;记录交叉
cd次数(应为 0)。 - 小时 8–16 · MCP:双 window 各问「最近三次提交」;统计
tools/call成功/失败,计算成功率。 - 小时 16–32 · Resilience:本机合盖/断网 ≥8h;回来
tmux attach,确认会话与 Agent 进程仍在。 - 小时 32–48 · Decision:汇总三项指标;若仅 memory 超标 → 试 24GB 或拆 2×16GB;全达标 → 升周租/月租。
Pass 定义:三项指标同时达标,且 RTT 可接受(区域选型见 亚太/美东指南)。Fail 优先查:共目录、MCP 路径不在云 Mac——再查模型。
9. FAQ
9.1 能不能 Claude Code 和 Codex 共用一个 worktree?
仅当严格串行(一个完全退出后再开另一个)——交互式并行一律不要。工单里的数据损失几乎都来自「以为串行其实并行」。
9.2 双 Agent 要不要两台云 Mac?
若两路都是长会话 + 各自 Xcode 构建,2×16GB 比 1×24GB 更省心(与 QA 并联文一致)。若一路长一路短,一台 24GB 通常够。
9.3 Codex 必须在 macOS 上吗?
Codex CLI 本身不强制 macOS,但若你的交付链含 codesign、notarization、Xcode,则与 Claude Code 同机 Cloud Mac 仍比「Linux 跑 Codex + Mac 跑 Claude」少一整类跨机问题。
10. 结论
云 Mac 双 AI Agent 架构 的本质是小型多租户:Claude Code + Codex CLI 各走 worktree 与 tmux,MCP Server 单一来源。用本文拓扑图对齐团队认知,用三项量化指标替代「感觉能跑」——达标后再锁月租与内存档位。
验证这套架构的最小成本路径
若你要验证上文 Cloud Mac 双 Agent 验收标准,最小组合通常是:一台 16GB 云 Mac + 日租 48 小时 + 两个 worktree + 一份 MCP Git Server。48h 内三项指标达标,再决定是否升级到 24GB 月租(两路长会话并行)或 2×16GB(各自 Xcode 构建)。这比先买月租或在本机硬扛合盖,排障成本更低。
需要对照套餐与 SSH 开通步骤时:租 Mac 开通验收清单 · M4 规格与租期 · 配置方案