在分屏终端里同时跑 Claude Code 和 Codex

要在分屏终端里做到 Claude Code 多开,并和 Codex 同时运行,先在 MXterm Pro 里打开工作区,开启“为每个功能使用独立的 git worktree”,再给一个分屏选 Claude Code,另一个选 Codex。这样每个 Agent 都在自己的分支上干活,不会抢同一份检出。隔离能减少分支冲突,但拦不住两个 Agent 改同一个文件。
为什么两个 Agent 共用一个仓库,通常会出问题
问题几乎每次都一样。你在一个终端标签页里开 Claude Code,在另一个里开 Codex,两个都指向同一份工作副本,又给它们派了不同的活。一个 Agent 执行 git checkout -b feature-a 时,另一个正在 main 上改到一半。结果就是未提交的改动落在了错的分支上,或者出现两个 Agent 都没预料到的 git status。
即使在同一个分支上,两个 Agent 同时改重叠的文件,也会产生合并冲突,只能你手动解。
让它们一个接一个地跑,能避开冲突,但等待时间翻倍。你盯着一个 Agent,另一个闲着。办法不是更小心地轮流,而是给每个 Agent 在磁盘上各一份独立的工作副本,这样一个分屏里的 git checkout 碰不到另一个分屏里的文件。
分步设置:带 Agent 隔离的分屏
1. 在你的仓库上新建一个工作区。在 MXterm Pro 的欢迎页或新建工作区页面里选项目文件夹。在 macOS 上,也可以用 Finder 的 “New MXterm Pro Tab Here” 快速操作(如果它出现在你的“服务”菜单里),或者把文件夹拖到 Dock 图标上。
2. 勾选 “为每个功能使用独立的 git worktree”。复选框下面的说明写明了它的作用:“每个 Agent 分屏在各自的 worktree 和分支中启动。” 默认关闭。
它只在 git 仓库里有用。如果文件夹不是仓库,MXterm Pro 不会再替你运行 git init(1.0.22 起改变)。它会事先说明:“此文件夹不是 git 仓库,因此该分屏将与其他分屏直接共享(无 worktree 隔离)。”然后打开普通的、不隔离的分屏,每个分屏带一条可关闭的提示。想要隔离,请先自己运行 git init。
3. 添加分屏。用 Cmd+D(向右分屏)或 Shift+Cmd+D(向下分屏),也可以在创建工作区之前,先在创建工作区页面里设好分屏数量。关于分屏的更多内容见分屏文档。
之后要调整布局,把分屏标题拖到另一个分屏的边缘。浮层会显示“在左侧插入 (50%)”“在右侧插入 (50%)”“在上方插入 (50%)”“在下方插入 (50%)”,分屏就按 50/50 落在它旁边。调整大小时也会吸附:松手时分隔条距中线约 3.5% 以内,就会吸附到 50/50。随时双击分隔条,可以把它重置为 50/50。
4. 每个分屏启动一个 Agent。因为开了 worktree 隔离,你在创建页面里选的每个 Agent 分屏(一个 Claude Code,一个 Codex)已经各自在自己的分支上,分支名形如 swarm/brave-otter。
应用会生成一个简短的“形容词加名词”组合,并检查不重名,而不是沿用 Agent 的名字。如果这个名字碰巧已被占用,就加后缀 -2 重试。普通的 Terminal 分屏,或之后用分屏新增的分屏,仍然留在仓库根目录。
5. 给每个 Agent 派不同的任务,尽量限定在互不重叠的文件里。比如分屏一做“重构认证中间件”,分屏二做“更新设置界面”。隔离能降低分支冲突的概率,但拦不住两个 Agent 各自去改同一个共享文件,所以要沿代码库里真实的接缝来拆分。
6. 在仓库根目录审查并合并。Agent 完成后,cd 进它的 worktree(<repo>/.worktrees/<slug>),或在 Git 面板的 Worktrees 列表里选中它。然后照常把分支合回去:git merge、看 diff,或者开 PR。MXterm Pro 不会替你合并,它只在 Agent 运行期间让两份工作副本互不干扰。
把同一条提示词广播到每个分屏
想把同一条指令一次发给所有 Agent,比如“跑测试套件”或“拉取最新代码并 rebase”,在 macOS 上按 Cmd+Shift+B 切换广播输入。快捷键表里 Windows 对应 Ctrl+Shift+B。
开启后,你在当前分屏里敲的按键会实时镜像到广播组里的其他所有分屏。一次 npm test 或一条提示词就能到达全部分屏,不用在每个标签页里重复输入。
广播的设计就是简单直接:它不会合并输出,也不会等一个 Agent 做完再发下一条命令,只是把同样的按键原样分发出去。输入只属于某个分屏的内容之前,先把它关掉(再按一次 Cmd+Shift+B),比如回答某个 Agent 的追问。否则这个回答会发给组里的每个分屏。
Multi-Agent Control Room,以及它和普通分屏的区别
Control Room(原 War Room) 是叠在带 worktree 隔离的分屏之上的独立一层,而隔离负责防止两个 Agent 在磁盘上冲突。它位于右侧辅助面板。在 macOS 上用 Alt+Cmd+B 切换该面板,然后选 Control Room 标签页。Windows 上快捷键表对应 Ctrl+Alt+B,尚未在真实的 Windows 机器上验证。
你可以从每个分屏的 Control Room 按钮,把终端分屏加入共享房间。房间会保留一份连续的记录,包含加入、离开、重命名,以及 Moderator 和各 Agent 互相发送的消息。
如果你正在某个分屏里打字,Control Room 向那个 Agent 投递提示词会先挂起,直到你停止输入或点击“立即投递”。这样就不会在你敲键盘的半途塞进一条排队的指令。其余内容见 Control Room 指南,应用侧的说明见 Agent 与 Control Room 文档。
Free 账户默认每个 Control Room 最多 2 个成员,Pro 没有这个上限。房间数量从来没有限制。并排运行 Claude Code 和 Codex(本指南讲的就是这个)刚好在免费的 2 成员房间之内。只有往同一个房间加第三、第四个成员时,才会碰到上限。
按 Agent 统计 Token 用量(Token Meter)
MXterm Pro 的 Token Meter 同时覆盖 Claude Code 和 Codex。点击标题栏的小标签,每个 Agent 一行,可展开为按小时的迷你折线图和 7 天明细。它读取你本机上各 Agent 自己的会话记录,不需要 API 密钥或账号。除非你手动开启实时套餐限额查询,否则不会向任何地方发送任何数据。细节见Token 用量是怎么统计的。
和 iTerm2、Warp、tmux 的对比
iTerm2 是成熟、可脚本化的 macOS 终端,分屏出色,插件生态庞大。用它手动在两个分屏里跑 Claude Code 和 Codex 完全没问题。它的文档涵盖活动、静默和任务完成的通知,一个可选的 AI 插件,以及 Claude Code 集成。文档里没有列出 worktree 的自动创建,所以分支隔离要你自己用 git worktree add 管理。
Warp 已经不止是单个聊天助手。它的官网介绍的是接入你自己的 Agent(比如 Claude Code 或 Codex),并在网页、移动端、终端和 IDE 之间,从一个控制平面协调多组 Agent。MXterm Pro 的范围更窄:本地桌面终端,每个 Agent 分屏一个 worktree。完整对比见 MXterm Pro 对比 Warp。
tmux 提供分屏,也提供许多工程师已有的肌肉记忆,是和 MXterm Pro 分屏模型最接近的东西。但它是终端复用器,不感知 git。
向多个分屏广播按键(:setw synchronize-panes on)是 tmux 由来已久的技巧,MXterm Pro 的广播输入与它类似。worktree 的自动创建、Agent 状态跟踪和 Control Room 记录,只靠一份 tmux 配置是复刻不了的,得下功夫写脚本。
这几个都不是错误的选择。iTerm2、Warp 和 tmux 都是能力很强的终端。对这个工作流来说,MXterm Pro 的差别在于组合:把 worktree 隔离接进工作区创建,再加上 Agent 状态检测和广播,放在一个原生应用里,而不是三份脚本加一个手工拼起来的 .tmux.conf。
这个工作流下 Free 与 Pro 的限制
本指南的核心内容在免费版里都能用:两个分屏、worktree 隔离、广播输入和 2 成员的 Control Room。规模超过一对 Agent 之后,数字才有意义。
默认情况下,Free 对终端分屏数量没有限制。它允许 5 台已保存的 SSH 主机、每个房间 2 个 Control Room 成员,以及 1 台已保存的 MXterm Host。Pro 没有 SSH 主机和 Control Room 成员的上限。
所以免费版不是这个工作流的缩水演示。只有当你运行更大的 Agent 小队,或者在 Agent 之外还要管一批 SSH 主机时,才会碰到这些上限。
不起作用时:常见问题
分屏打开后没有 worktree。那是因为文件夹不是 git 仓库。MXterm Pro 从 1.0.22 起不再替你运行 git init。以前它会自动执行,可能把 .env 或密钥卷进一个没人要求的全新历史。所以现在它退回到普通的共享分屏,并告诉你原因。
请自己运行 git init,再重新创建工作区。如果仓库还没有任何提交,MXterm Pro 会添加一个“Initial commit”,里面只有一个空的 .gitkeep 文件,以便创建 worktree。文件夹里的其他内容都不会被提交。
两个 Agent 总是落到同样的文件上。worktree 隔离减少的是分支和检出状态上的冲突。但两个 Agent 仍可能各自在自己的副本里改同一个文件,比如共享的配置文件。这是任务划分的问题,不是隔离能解决的。请沿真实的模块边界拆分工作。
广播把回复发到了错的分屏。这是最常见的广播失误。这个模式会一直开着,直到你把它关掉,所以本来给某个 Agent 追问的回答,会发给所有 Agent。输入任何只属于单个分屏的内容之前,先按 Cmd+Shift+B 关掉。
把 worktree 分支合回去感觉多了几步。这是有意为之的多一步。隔离让工作副本在运行期间互不干扰,但 MXterm Pro 不会自动合并。把每个 worktree 分支当作普通功能分支:看 diff,然后照你平时的方式合并或开 PR。
多分屏 SSH、Command Recipes(Cmd+J)和多 Agent 的 Control Room (原 War Room):先免费用。
常见问题
它是右侧面板里的共享工作区,用来让多个 AI CLI Agent 一起运行。每个成员有一个状态点(工作中、受阻、空闲或已完成,针对 MXterm 能读取的 Agent),你正在打字时提示词投递会挂起,整个多 Agent 会话可以导出为 Markdown 报告。它和分屏的 worktree 隔离是两回事:可以单独用其中一个,也可以两个一起用。
不一定。如果它们在不同的仓库里工作,或者你愿意自己管理分支切换,可以在两个不隔离的普通分屏里运行。两个 Agent 同时在同一个仓库里工作时,worktree 隔离才有意义。没有它,一个 Agent 的 git checkout 会把分支从另一个 Agent 脚下抽走。
可以。任何在 shell 里运行的 CLI 工具(Aider、Ollama 或自己写的脚本)都能在普通终端分屏里使用,广播输入也不关心你启动的是哪个程序。worktree 隔离适用于你在创建页面里选的 Agent 分屏(Claude Code、Codex、Gemini CLI、OpenCode 以及其他内置 Agent)。普通分屏仍然留在仓库根目录。
免费版的分屏不限数量。Control Room 免费版每个房间最多 2 个成员(Pro 不限)。Claude Code 和 Codex 两个 Agent,在免费版里绰绰有余。
不会。广播输入把你的按键实时镜像到组里的每个分屏,不排序,也不等 Agent 的输出。它适合相同的简短指令(跑测试、拉取最新代码),不适合想让每个 Agent 各自回答的对话。