MXterm Pro

Claude Code 多开与协作

MXterm Pro 在真实终端分屏里启动每个 Agent 自己的 CLI,并监视它的输出。它不会安装 Agent:CLI 必须已经在你的电脑上。 Control Room 也称为 War Room。

支持的 Agent

MXterm Pro 能启动 27 种编程 Agent,完整列表见 Agent 页面。下表列出其中一部分。

创建工作区时,在 AI Agent 列表里选择 Agent。之后也可以点分屏标题栏左侧的 Agent 图标,切换这个分屏的 Agent。Agent 分屏会启动下表里的命令。终端不运行任何命令。

Agent命令绕过参数状态圆点MCP
Claude Codeclaude--dangerously-skip-permissions有自动
Codexcodex--dangerously-bypass-approvals-and-sandbox有自动
OpenCodeopencode无有手动
GitHub Copilotcopilot无无手动
Qwen Codeqwen--yolo仅权限提示手动
Ampamp无无手动
Gemini CLIgemini--yolo有自动
Cursor Agentcursor-agent无有手动
Antigravityagy无无手动
OMP (Oh My Pi)omp无仅权限提示自动
Grokgrok--always-approve仅权限提示自动

对 Claude Code、Codex、Gemini CLI、Cursor Agent、OpenCode 和 Grok,MXterm Pro 会在 PATH 和常见安装目录里找可执行文件(macOS 和 Linux 上例如 /opt/homebrew/bin、~/.local/bin 和 ~/.npm-global/bin),找不到就把该 Agent 标为未安装。Gemini CLI 在存在 ~/.gemini 文件夹时也算已安装。表里其余 Agent 始终可选;如果缺少它们的 CLI,分屏里的 shell 会报告找不到该命令。表里没有的 Agent,如 OpenClaw、OpenClaude、Hermes Agent、Devin CLI、Kimi Code、Aider、Cline、Goose、Crush、Kilo Code、Kiro CLI、Auggie、Autohand Code、Codebuff、Command Code 和 Continue,只有在 MXterm Pro 找到它们的 CLI 之后,才会出现在创建工作区页面里。设置 → Agent 显示每个 Agent 是否已安装,详见设置。

Bypass Mode

启用绕过模式(自动批准 CLI 权限)默认关闭。不动它的话,每个 Agent 在运行命令或编辑文件之前都会先问你,和该 Agent 自己的 CLI 一样。

勾选后,MXterm Pro 会用 --dangerously-skip-permissions 启动 Claude Code,用 --dangerously-bypass-approvals-and-sandbox 启动 Codex,用 --yolo 启动 Gemini CLI 和 Qwen Code,用 --always-approve 启动 Grok。这些 Agent 随后运行命令、编辑文件都不会先问你,Codex 还会跳过它的沙箱。

这个选项在创建工作区页面上,也就是新标签页打开时的那个界面。选择会被保存,对之后启动的每个 Agent 分屏生效,不限工作区。已经在运行的 Agent 保留启动时的参数。

参数是在分屏启动时添加或去掉的,所以这个选项对所有基于参数的 Agent 一视同仁。除上面五个外,MXterm Pro 还知道 OpenClaude、Hermes Agent、Devin CLI、Kimi Code、Aider、Crush、Kiro CLI、Autohand Code 和 Command Code 的跳过批准参数,一共 14 个 Agent。Goose 没有参数:它的自动模式是一个环境变量(GOOSE_MODE=auto),只在设置里提供。其余 Agent,包括 OpenCode、GitHub Copilot、Amp、Cursor Agent、Antigravity 和 OMP,不管勾不勾,都用普通命令启动;给它们猜一个参数,只会让 CLI 拒绝启动。

Agent 状态与通知

对 Claude Code、Codex、Gemini CLI、Cursor Agent 和 OpenCode,MXterm Pro 读取分屏的屏幕内容,判断 Agent 在做什么。圆点显示在侧边栏终端列表的分屏名称旁、Control Room(原名 War Room) 成员列表里,以及工作区标签页上;标签页上显示的是其中最紧急的圆点。对 OMP、Grok 和 Qwen Code,MXterm Pro 只看一件事:出现等待你批准的工具调用时,圆点变红,没有针对它们工作状态的规则。Gemini CLI 则在出现批准、计划、提问和文件夹信任对话框时读取。Goose 也会被读取,但它的规则未经验证,还没有对照真实会话检查过。总共有 9 个 Agent 带状态检测,其余的不显示圆点。

  • 红色:Agent 被卡住,需要你输入。
  • 黄色:Agent 正在工作。其他分屏在输出内容时也显示同样的黄点。
  • 绿色:Agent 在你没看这个分屏时完成了。你聚焦该分屏后,绿点就消失。

通知设置在设置 → 通知里,总开关是 Agent 通知。有三类事件可以通知,各有自己的开关,默认全开:Agent 完成时、Agent 需要你输入时和 Agent 异常停止时。Control Room 里一直处于挂起的消息(见在 Control Room 里发消息一节)也会弹出横幅有消息等待发送,由 Agent 需要你输入时这个开关控制。

设置默认作用
声音通知开上述三类事件之一发生时,响一声提示音。
系统桌面通知开弹出横幅,标题是标签页和 Agent,例如 my-project · Claude Code,正文是已完成、需要你的输入、异常停止或有消息等待发送。
仅在 MXterm Pro 处于后台时关关闭时,你在当前窗口操作,其他标签页里的分屏也会弹横幅。开启后,只在应用没有获得焦点时才弹横幅。
在横幅中显示终端文本关在横幅里加上 Agent 的终端标题。关闭时,横幅末尾改为显示点击打开。通知中心会保留横幅,还可能显示在锁屏上,所以这一项默认关闭。
Dock 标记开显示在等你处理的分屏数量:已完成但还没看过的,或需要输入的。这是为 macOS 的 Dock 做的;角标在 Windows 和 Linux 上尚未验证。
逐个 Agent 通知每个都开每个有状态检测的 Agent 各有一个开关。

点击横幅会带你到它对应的分屏。窗口回到前台,打开对应的标签页,被最大化的相邻分屏挡住的分屏会恢复显示,该分屏获得焦点并滚动到最新输出。如果这个分屏之后已被关闭,窗口仍会回到前台,但不会发生别的事。

点击横幅跳转到分屏,只有你下载的 macOS 应用支持。在其他系统上,MXterm Pro 会请系统显示横幅,但点击横幅不会跳转到分屏。这一点在 Windows 上尚未验证。

有几条规则让横幅保持安静。你正在看的那个分屏永远不会通知你。Agent 一轮工作不到 5 秒就结束的,只亮圆点,不弹横幅,也没有提示音。时间上挨得很近的事件会合并,只响一声、弹一条横幅。在 macOS 上,你看某个分屏时,它的横幅会从通知中心里撤掉。

MCP 连接与 Claude 状态栏

MXterm Pro 在 127.0.0.1 上用随机端口运行一个 MCP 服务器,并在每个分屏里设置这些环境变量:MXTERM_MCP_URL(服务器地址)和 MXTERM_SESSION(这个分屏独有的 token),另有旧名称 SWARMTERM_MCP_URL 和 SWARMTERM_SESSION,值相同,下面各 Agent 的配置项读取的就是它们。Agent 通过这个服务器在分屏旁打开网页预览、在 Control Room 里交流,以及在启用 worktree 隔离的工作区里创建和删除 worktree。

这些工具名为 mxt_room.*。1.1.43 之前的版本称它们为 war_room.*,这些旧名称暂时仍然可用。

Claude Code、Codex 和 OMP 自动连接,Gemini CLI 则在它的分屏启动时连接。每次启动,MXterm Pro 都会检查下列文件,缺失或过期就写入对应条目,不管这些 Agent 有没有安装:

  • ~/.claude.json(或 $CLAUDE_CONFIG_DIR/.claude.json):mcpServers 下的一个 mxterm 条目,从分屏的环境变量里读取 URL 和 token。写入这个条目时,如果没有设置 "crossSessionInbound" 这个键,还会加上 "crossSessionInbound": "accept"。
  • ~/.codex/config.toml(或 $CODEX_HOME/config.toml):一个 [mcp_servers.mxterm] 表,带当前服务器 URL,不带 token:MXterm Pro 启动的每个 Codex 分屏都会发送自己的 token,所以多个 Codex 分屏可以加入同一个房间。因为端口会变,URL 每次启动都会重写。
  • ~/.omp/agent/mcp.json:mcpServers 下的一个 mxterm 条目,和 Claude Code 的一样从分屏的环境变量里读取 URL 和 token,文件里没有 $schema 行时再加一行。
  • ~/.zshrc:只在这个文件存在且还没提到 SWARMTERM_SESSION 时,才追加一行 export SWARMTERM_SESSION="${SWARMTERM_SESSION:-global}"。

Gemini CLI 不能在 MCP 设置里读取环境变量,所以配置方式不同。每次在某个文件夹里启动 Gemini CLI 分屏,MXterm Pro 都会写入 <folder>/.gemini/settings.json,里面是服务器地址和该分屏自己的 token,均为明文,并把 .gemini/settings.json 加进该文件夹的 .gitignore;没有这个文件就创建。Grok 读取 ~/.claude.json 里的 mxterm 条目,所以 MXterm Pro 不再为它多写别的。设置 → Agent 显示 MXterm Pro 认为哪些 Agent 已配置好。

其他 Agent 不会自动配置,MXterm Pro 也没有验证它们是否会用上它的工具。如果某个 Agent 里看不到这些工具,就添加一个 HTTP MCP 服务器,URL 填 $MXTERM_MCP_URL,请求头填 Authorization: Bearer $MXTERM_SESSION。两个值都从环境变量里读,不要复制具体的值,因为端口每次启动都变,token 每个分屏也不同。

Claude Code 状态栏集成默认开启。每次启动,MXterm Pro 都会把 ~/.claude/settings.json(或 $CLAUDE_CONFIG_DIR/settings.json)里的 statusLine 设为 type: "command",命令是运行 MXterm Pro 可执行文件并带上 --statusline 参数。随后 Claude Code 会显示 mcp ✓(已连接)、mcp …(服务器可达,Claude 还没调用过)或 mcp ✗(不可达),后面是上下文用量,例如 ctx 84k/200k 42%。这个设置对当前系统用户的所有终端生效,所以其他终端里的 Claude Code 也会显示上下文部分。你已有的自定义 statusLine 绝不会被覆盖。要关闭,到设置 → 终端 → Manage Claude Code's status line,这会删除该条目。

Git worktree 隔离

在创建工作区页面勾选在 git worktree 中隔离特性,每个 Agent 分屏就会有自己的 worktree 和分支。默认关闭,只对当前新建的工作区生效。

  • 每个 Agent 分屏会得到一个类似 swarm/brave-otter 的分支,以及位于 <folder>/.worktrees/swarm-brave-otter 的 worktree。分支名显示在分屏标题栏。
  • 普通终端分屏留在文件夹本身。worktree 没能创建成功的 Agent 分屏也一样。
  • worktree 从当前 HEAD 提交开始。未提交的改动和 node_modules 这类被忽略的文件不会被复制,所以要在每个 worktree 里各自安装依赖。
  • MXterm Pro 会把 .worktrees/ 加进该文件夹的 .gitignore,需要时创建这个文件,并且不会提交这项改动。
  • 工作区里的 Agent 可以调用 MCP 工具 worktree.spawn、worktree.list 和 worktree.remove。
如果文件夹不是 git 仓库,MXterm Pro 不会替你创建。这个工作区会跳过隔离,所有分屏直接共用该文件夹;每个分屏会在一个可关闭的提示条里说明一次:此文件夹不是 git 仓库,因此该分屏将与其他分屏直接共享(无 worktree 隔离)。不会初始化、暂存或提交任何东西。如果文件夹*是*仓库但还没有任何提交,仍会得到一个空的 .gitkeep,MXterm Pro 只暂存并提交这一个文件,提交信息是“Initial commit”(文件夹里已有的其他文件不会被暂存),因为 worktree 需要有一个提交才能建分支。

想在用完后删除 worktree,打开右侧面板的 Git 标签页,点 worktree 列表旁的清理 worktree…。

  1. 目录已经不存在的条目会直接清理,不需要确认。
  2. 其余的会在清理 worktree里打开。没有未提交文件的 worktree 只计数(“将移除 N 个 worktree (目录和分支)。”),确认后才会删除。
  3. 里面有工作内容的 worktree 单独列在这些包含未保存的工作,勾选以强行移除:下面,每个都显示有多少文件未提交、多少提交未合并。它们不会替你勾选。
  4. 清理 worktree(或 清理 N 个 worktree)会删除每个目录并删除它的分支。仍在其中运行的分屏会先被移出来。

MXterm 创建的 worktree 也会在 设置 → Agent 里列出,带大小和存在时间(见设置);那张卡片只在你点击删除时才会移除文件夹,并且始终保留分支。你也可以在该文件夹里手动用 git worktree list、git worktree remove 和 git branch -d 完成。Agent 也可以调用 worktree.remove;worktree 里有未提交的改动时它会拒绝执行,并保留分支。

在 diff 上写审阅批注

右侧面板的 Git 标签页以 diff 形式显示文件夹或 worktree 里的改动。你可以在其中某一行写批注,再把所有批注一次交给做出这些改动的 Agent。

  1. 把鼠标移到 diff 的某一行上,点击批注图标:在此行添加批注;已有批注的行则是编辑批注。
  2. 输入批注。mod+Enter 保存,Esc 取消。
  3. 写完后,点击 diff 底部的发送 N 条批注。清除所有批注则会直接丢弃它们。

每条批注会以文件、行号、该行代码和你的评论的形式交给 Agent。这段内容会粘贴到 Agent 的分屏里,但不会提交:应用会提示你自己在分屏里按 Enter,这样你可以先补充内容。

应用无法判断该发到哪个分屏,或者分屏尚未就绪时,会拒绝发送,原因显示在按钮上。具体情况有:没有 Agent 分屏在该 worktree 里工作、有多个、分屏没在运行、分屏里有尚未发送的输入,或它不接受粘贴的内容块。输入规则与 Control Room 相同。

批注只在应用打开期间保存在内存里,从不写入磁盘。某条批注所在的行或文件一旦从 diff 中消失,这条批注也会消失。

聊天视图(实验性)

聊天视图把 Agent 分屏显示成易读的聊天,内容是 Agent 自己的对话,画在终端上面。它默认关闭。在设置 → 终端里用聊天视图(实验性)打开。

  • 它适用于 Claude Code、Codex、OMP 和 Grok。对其他 Agent 或普通 shell,分屏会提示聊天不可用。SSH 分屏里不提供。
  • 设置开启后,Agent 分屏默认以聊天打开。每个分屏各自记住自己的选择,重启后仍保留。分屏标题栏里的按钮或 mod+Shift+J 可以在聊天和终端之间切换当前分屏。关闭该设置会让每个分屏回到终端。
  • 聊天是一层覆盖。无论怎么切换,下面的终端进程都不受影响。
  • 在输入框里,Enter 发送,Shift+Enter 换行。可以附加文件、粘贴图片,并从菜单里选模型。
  • 对 Claude Code 和 Codex,MXterm Pro 认得的权限提示会显示允许一次和拒绝并停止智能体。对其他提示,聊天会说明 Agent 正在终端里等待。
  • 输入框里的麦克风按钮只是示意界面,并不真正工作:它不录音,不请求麦克风权限,也不插入任何文字。

Control Room:房间和成员

Control Room 让不同分屏里的 Agent 互相发消息,你以 Moderator 的身份参与。在 macOS 上按 ⌘⌥B,在 Windows 和 Linux 上按 Ctrl+Alt+B 打开右侧面板,再选 Control Room 标签页。面板共有五个标签页:Control Room,然后是资源管理器、历史记录、Git 和预览。只有 Control Room 的名称写在图标(交叉的剑)旁边,其余四个只有图标,名称在提示里。面板在 Control Room 标签页上会开得更宽。每个工作区标签页都有自己的房间,面板只显示你当前所看标签页的房间,主房间排在最前。其他标签页的房间收在其他房间菜单里。

用分屏标题栏里的 Control Room 按钮(相连的节点图标)添加分屏。添加后面板会自动切到 Control Room 标签页,不用先打开面板。分屏不在任何房间时,按钮上有一个小小的 +;加入房间后,按钮会换成该分屏自己的颜色。图标旁的小标记显示这个分屏的消息状态:实心圆点表示有新消息,空心圆环表示消息在等分屏空闲,菱形表示有任务交给了它,圆环里一个点表示队列已满、较早的消息被跳过。把鼠标悬停在标记上可以看到文字说明。SSH 分屏、从 MXterm Hosts 接入的分屏(它不在本机运行终端,所以不能加入房间)和很窄的分屏上不显示这个按钮。把分屏拖到面板上不会添加它。

  • 添加到 Control Room,或已有房间时的添加到 “房间名”:添加分屏并打开面板。
  • 新建房间:创建一个房间,并把分屏加进去。
  • 对已在房间里的分屏,菜单会在切换 Control Room 下列出其他房间(选一个即可移动分屏),并提供退出 Control Room,移出分屏前会再确认一次(会话继续运行)。一个分屏同一时间只属于一个房间。

分屏的右键菜单里有复制分屏 ID。分屏已在房间里并且有了句柄时,菜单里还有复制房间句柄和在房间中提及:前者连同 @ 一起复制,例如 @claude-2,后者把这个句柄加到房间的输入框里。

在面板里,选中的房间标签页,以及选中的 Members 或 Discussion 标签页都是实心填充的,一眼就能看出你在哪一个。房间栏用 + 添加房间,双击房间名或点击指向它时出现的铅笔图标可重命名,用 ✕ 删除房间(标签页的主房间没有 ✕,不能删除)。Members 列出房间里的分屏。点击某一行会跳到该分屏;选中名称或文件夹来复制时不会跳转。右键点击某一行可以给分屏重命名。每行有一个复制按钮,复制的是成员的句柄,例如 claude-2(Agent 填进 to 的值),一个皇冠按钮,用来设置或取消协调人(见 Control Room:协调人),还有一个始终可见的 ✕,用来在再确认一次后把分屏移出房间。手机,或者通过 Machines 面板操作的另一台电脑(见分屏与拆分),只要这里的可管理 Control Room 开关是打开的(见远程访问与设备),也可以在自己的屏幕上创建房间、添加成员、移除成员、删除房间,同样适用 Free 套餐的限制;标签页的主房间不能删除。

Members 顶部的添加按钮先列出该房间所属标签页里的分屏,再按标签页名称列出其他标签页的分屏,所以其他标签页里的 Agent 仍然可以加入。无法运行 Agent 的普通 SSH 分屏,以及从 MXterm Hosts 接入的分屏不会列出。已在另一个房间里的分屏会变灰,并标注已在“房间名”中。点击某一行即可勾选,再按添加 N 个;全选和取消全选会一次改变所有勾选,行末的 + 则立即只添加那一个分屏。一次添加三个或更多分屏时会先确认(将 N 个分屏添加到“房间名”?)。有些分屏无法加入(比如房间已达 Free 的上限)时,按钮下方会出现一行说明,写明有几个、为什么,约 12 秒后消失。

成员离开房间的方式有:点它的 ✕、用其分屏菜单里的退出 Control Room、用切换 Control Room 移动分屏、房间被删除,或它的终端结束。拖动某一行不会移除它。Discussion 会记录每次离开;已知原因时,行尾会附上原因:(its pane left this window)、(removed from the Members list)、(left from the pane menu)、(its terminal ended) 或 (its pane was not reopened)。

房间和成员会被保存。退出并重新打开应用后,分屏已恢复的每个成员都会回到它的房间,显示为未握手,直到它的 Agent 再次调用 mxt_room。成员会以等待重新连接的状态留在列表里,最多等 5 分钟,让它的分屏回来;分屏没有回来,成员就离开房间。Agent 退回到 shell 提示符时,MXterm Pro 会在几秒内发现(每 3 秒检查一次,仅限 macOS 和 Linux),把该成员标为已断开,Discussion 里会写 <name> disconnected (its agent exited)。成员仍留在房间里,它占用的文件被释放。消息不再输入到它的 shell,广播也会跳过它。Agent 重新启动并再次调用 mxt_room 后,它会重新连接。

你添加 Agent 分屏时,MXterm Pro 会在 Agent 的输入框里输入一段简短的自我介绍,让它调用 mxt_room.list_peers。分屏无法冒充你:名称里含有“Moderator”(不分大小写)的分屏,加入时会显示为 (pane, not the real Moderator) 加它自己的名称,自称协调人角色的名称则同样以 (pane, not the coordinator) 为前缀。已经看过规则的 Agent 再次加入房间时,只会收到一行话,写明房间和协调人,而不是完整的自我介绍。在 Agent 第一次调用 mxt_room 之前,该成员显示未握手,无法收到消息。普通 shell 不会发起这个调用;没有自动 MCP 设置的 Agent 则需要按上文手动设置。MCP 服务器会告诉 Agent:除非你把它的分屏加进了房间,否则不要调用 mxt_room 工具。不在任何房间里的分屏一旦调用,会失败并返回错误,让 Agent 请你把它加进房间。已连接的成员显示空闲,需要同时满足两个条件:MXterm Pro 读不到其 Agent 的状态(状态未知,或该分屏没有状态检测器),并且它超过五分钟没有任何 mxt_room 调用。

没有自己名称的分屏,名称和句柄由它的 Agent 加一个数字组成,例如 Claude 2 和 claude-2。这个 Agent 指分屏打开时选用的 Agent;对普通终端,则是 MXterm Pro 发现正在其中运行的 Agent。数字在该房间里按每个 Agent 递增,且不会再分给同一房间的其他分屏,所以旧句柄不会误送到新来的分屏。Agent 用句柄来指定分屏;较长的 peer- ID 仍可填进 to。在 Discussion 里,当前成员的句柄会显示为这个名称。你自己命名过的分屏(见给分屏命名)则使用你起的名称。你没有命名过的分屏,会由房间根据其终端标题来命名,条件是该标题保持不变达 2.5 秒,并去掉状态符号。只含 shell 名称、Agent 自己的名称、路径或 user@host 的标题不会被使用。房间里的名称不会改变分屏自己的名称。把鼠标指向分屏的 Control Room 按钮,可以看到它所在的房间和句柄。

在 Control Room 里发消息

Discussion 标签页以卡片形式显示房间里的消息:发送者和时间,然后是发给了谁,提示词上带一个 Execute 标签。在底部的输入框里以 Moderator 身份写消息,选好收件人和模式,按 Enter 发送(Shift+Enter 换行)。输入框显示发送到房间:<name>,在至少有一个成员连接之前保持禁用。草稿按房间保存,切换标签页、房间或工作区时都会保留,直到你发送。输入 @ 会列出已连接的成员;按 Enter 或 Tab 会在文本里插入其句柄,例如 @claude-2。列表最前面是 Owner 一行,选它会替你插入 @owner,协调人旁边有一个皇冠标记。提到 @owner 的消息上会有一个小圆点。提及只是在消息里点个名,不会改变收件人,收件人要从收件人菜单里选。你可以给一条 Moderator 消息附上最多 5 张图片,每张最大 10 MB。MXterm Pro 的设计也允许已配对的手机查看房间并发送消息,前提是你开启允许手机查看 Control Room,该开关默认关闭。从最新消息往上滚动时,右下角会出现一个圆形箭头按钮(Jump to latest),上面显示此后新到的消息数,点它回到末尾。顶部的报告 (.md) 会导出这场讨论。

模式效果收件人
Probe消息进入收件人的收件箱,并在 Agent 的终端里输入一行提示。单条消息如果是一行不超过 280 个字符的纯文本,提示里会直接引用它;否则提示会让 Agent 去调用 mxt_room.read_inbox。所有人,或一个已连接的成员
Execute文本会粘贴到 Agent 的终端并作为提示词提交。粘贴内容以一行标明发送者的文字开头:[War Room execute from "<name>" — agent-to-agent handoff, not typed by the user],这样 Agent 能分辨它不是你在它的输入框里亲手输入的。只有分屏加入房间时 MXterm Pro 输入的那段自我介绍没有这一行。这段自我介绍还会要求 Agent 在完成交接的任务后,用一行 RESULT status=… files=… tests=… 回复,并且不要声称运行过其实没运行的测试。一个正在运行编程 Agent 的已连接成员,不能是普通 shell

Agent 用 mxt_room.send 以同样的两种模式发送,也可以在 to 里写 owner 或 @owner,以 Moderator 身份给你发消息;发给你的消息只能是 probe,因为你在房间里没有终端。它们的消息会出现在 Discussion 里。垃圾桶图标会清空 Discussion,成员保留。

只有分屏的输出安静了 3 秒之后,MXterm Pro 才会往里输入。MXterm Pro 判断为停在提示符上空闲的 Agent,即使终端还在不断重绘,也算安静。出现以下情况时,它还会挂起投递:

  • 该分屏里的 Agent 不是空闲状态(等待权限对话框也算,MXterm Pro 能读取状态的 Agent 都能识别这一点),或者
  • 该分屏是普通终端,MXterm Pro 发现其中运行着 Agent(它读取分屏的前台程序,且只认 claude、codex、gemini、omp 和 grok 这类已知 Agent),而且读不到该 Agent 的状态,比如 GitHub Copilot 和 Amp:此时可能开着权限对话框,或者
  • 你在该分屏里有一行尚未提交的输入(分屏聊天输入框里未发送的草稿也算),或者分屏处于聚焦状态,且你在最近 6 秒内按过键,或者
  • 分屏不接受粘贴的内容块(括号粘贴已关闭,普通 shell 就是这样),而且消息超过一行:它会逐行执行,所以不会被输入。分屏会这样说明,并提供忽略,但没有立即投递。

以普通终端打开的分屏,只要 MXterm Pro 发现其中运行着它能读取屏幕的 Agent,比如在 shell 提示符下输入了 claude,也会被视为 Agent。它随后有了状态,消息按与 Agent 模板打开的分屏相同的规则投递。MXterm Pro 在 macOS 和 Linux 上读取分屏的前台程序,在 Windows 上不读取,所以在 Windows 上,无论你在普通分屏里怎么启动 Agent,它都仍是普通分屏。

消息在排队时,分屏标题栏会变成琥珀色。消息被挂起时,分屏会显示有多少条消息在等待,并带一个立即投递按钮,房间标签页上则显示 ⏸ 和数量。Members 里该成员的行也会显示 ⏸ 和数量。立即投递即使 Agent 正忙或你正在输入也会发送,但仍会等分屏的输出安静下来。Agent 正在工作、分屏仍在输出时,挂起提示没有按钮,显示等待 Agent 空闲;按下立即投递后显示Agent 空闲后发送。挂起持续 10 秒时,会弹出一条有消息等待发送横幅,之后最多再提醒两次,间隔 2 分钟,直到队列清空。

它旁边的忽略(✕)会丢弃队列,不输入任何内容。只含提示的队列一次点击就清掉,消息仍留在 Agent 的收件箱里。含有 Execute 的队列需要再点一次(放弃?),因为那段文本是粘贴的,别处没有保存;发送者会收到已被忽略的通知。如果某条提示已经过期,即 Agent 已读完它所通知的全部消息,则直接丢弃,不再输入。

mxt_room.list_peers 告诉每个 Agent 房间里有谁。每个成员都有一个 state(working;blocked,即在权限对话框或某个问题处等待;done;idle;或在 MXterm Pro 读不到该分屏时为 none)和 agentSource,说明分屏是按该 Agent 打开的(template),还是 MXterm Pro 发现该 Agent 在运行(process)。Moderator 那一项带有 isModerator: true,这是唯一能认出正在操作应用的人的字段,因为分屏的名称可以写成任何内容。如果你设置了房间的协调人,它带有 isCoordinator: true。

带 changesOnly: true 调用时,mxt_room.list_peers 只返回自该 Agent 上次调用以来条目有变化的成员。较长的说明文字只在 Agent 第一次调用时附带。成员的 unreadFromYou 表示你的消息中它还没看到的条数,没有时则不出现。消息在以下任一情况下算作已看到:该成员用 mxt_room.read_inbox 读了它;完整引用它的提示已输入分屏并提交;或该成员已回复你。后两种情况下,消息会一直留在其收件箱里,直到该成员去读。Agent 收到的 Control Room 工具描述更短,所以 Agent 花在上面的 Token 更少。

离开了一阵的 Agent 可以调用 mxt_room.digest,拿到自己所在房间的简短摘要:发给它但还没回复的消息、最近的消息、谁占用了哪些文件、谁被卡住。它只读:不会清空 Agent 的收件箱,也不会显示其他房间。

Control Room:协调人

你以 Moderator 的身份,可以把一名成员设为房间的协调人。把鼠标指向 Members 里该成员的行,点击皇冠按钮(设为协调人)。再点一次(取消协调人)就清除这个角色。只有你能在应用里设置它,Agent 不能,分屏名称也无法自称。

  • 一个房间最多有一名协调人。把另一名成员设为协调人会替换前一名,该成员离开房间时,这个角色也随之结束。
  • 在有协调人的房间里,只有协调人和你可以广播,也就是发送没有收件人的消息。其他每个成员都必须发给某一个成员,通常是协调人。应用会拒绝其他任何广播,并在报错里写出协调人的名字。用 execute 交办任务受同样的限制,但任何成员仍然可以向某一个成员发送 probe。在没有协调人的房间里,每个 Agent 每 60 秒最多广播 3 次,已连接的成员超过 12 个时广播会被拒绝;一对一消息不受影响。
  • 设置或取消这个角色,会给每个成员发一条自动消息,并在 Discussion 里添加一行,例如 <name> is now the coordinator。消息里还会说明,push、部署、发布和删除仍然需要你发来的消息(fromModerator: true):协调人只提出建议。之后加入的 Agent,会在它的自我介绍里被告知谁是协调人。
  • mxt_room.list_peers 用 isCoordinator: true 标出协调人。和 isModerator 一样,它来自角色,而不是名称。

用占用预留文件

两个 Agent 可能会改到同一个文件。为避免这种情况,Agent 在编辑文件前先用 mxt_room.claim 占用文件或文件夹,一次占用最多 10 个。只要其中任何一个文件已被另一个成员占用,占用请求就会被拒绝,回复里会写明是谁占用的。占用只是提示,不会阻止任何人写入文件。

占用在其所有者最后一次 mxt_room 调用后维持 15 分钟。所有者离开房间,或其 Agent 退回 shell 提示符,占用也会结束。你也可以手动结束:把鼠标指向 Members 标签页里的该行,点锁定行上出现的 ✕,就会解除该成员的所有占用。某个 Agent 卡住、占着别人需要的文件时,用这个办法。一个成员最多可占用 5 个。

在 Members 标签页里,占用了文件的成员,名称下面会显示一行锁定信息。

Control Room 的限制

  • 默认情况下,Free 套餐允许一个房间容纳 2 个分屏,添加第三个会弹出升级提示。Free 还允许同一时间只有一个 Control Room 有成员:没有成员的房间不计入,所以房间可以随意创建。但另一个房间已有成员时,把分屏放进第二个房间会弹出升级提示。把某个房间唯一的成员移到另一个房间是允许的。这两项限制都由应用本身执行。mxterm.net 可以设置不同的数字。更改只对之后添加的分屏生效,不会移除你已有的成员或房间。Pro 对两项都没有限制。见价格。
  • 每个 Agent 每 60 秒最多发送 20 条消息和占用请求;Moderator 不受限制。
  • 单条消息最多 8,192 字节。
  • 收件箱在内存中保留最新的 50 条消息,更早的会被丢弃。跨重启时,MXterm Pro 为每个成员最多保留最新的 20 条未读消息,总共 256 KiB,并且不保留超过 24 小时的消息。
  • MCP 服务器启动失败时,该次运行无法使用 Control Room,添加分屏也会失败。

问问 AI:MXterm Pro 怎么样

根据本页内容,在 ChatGPT、Claude 或 Perplexity 里直接生成回答。回答由 AI 写,不是我们写的,请核对它引用的来源。

发送的问题怎么在 MXterm Pro 里运行 Claude Code、Codex 和其他 Agent CLI,Control Room 有什么用?