在 Mac 的多分屏终端里运行 Cursor CLI(cursor-agent)

在 Mac 上,用 MXterm Pro 的 Cursor Agent 模板就能打开一个 Cursor 分屏:它会在真实的终端分屏(PTY)里输入 cursor-agent,也就是 Cursor CLI。cursor 命令是编辑器的启动器,只会打开 Cursor 窗口。Windows x64 版本也有。MXterm 在此之上每 300 毫秒检测一次实时状态,另有需手动开启的 git worktree 隔离。
这是什么,适合谁
MXterm Pro 不会拦截 cursor-agent 的任何行为。它是一款多终端、多 Agent 的桌面应用(基于 Tauri 2 和 Rust,不是 Electron),通过 Cursor Agent 模板,把 cursor-agent 输入到真实的终端分屏里。
在此之上,它多了普通终端没有的两样东西。一是状态指示,扫一眼就知道 Agent 是否需要你。二是需手动开启的 git worktree 隔离,用于多个 Agent 同时改一个仓库的场景。
它面向已经在命令行里使用 Cursor Agent 的开发者。这些人想把它放在自己操作的另一个终端旁边,或者放在第二个、第三个 Agent 旁边。Claude Code、Codex、Gemini CLI、OpenCode 等都能在同一个工作区里运行,各自负责同一份代码库的不同部分。你不用在多个系统窗口之间来回盯着,看谁卡住了。
设置 Cursor Agent 分屏
打开 Cursor Agent 分屏只需要一样东西:PATH 里或常见 bin 目录(如 /opt/homebrew/bin 和 ~/.local/bin)中有 cursor-agent 可执行文件。它就是 Agent CLI;cursor 是编辑器的启动器,会打开 Cursor 窗口。如果 MXterm 找不到 cursor-agent,创建工作区页面(MXterm 内部叫 composer)里的 Cursor Agent 一行会显示“未安装”,而不是数量步进器。
1. 首次启动,或没有可恢复的标签页时,MXterm Pro 会直接打开创建工作区页面;否则按 ⌘T 新开一个。
2. 选择项目文件夹。它会成为你创建的每个分屏的工作目录。
3. 用“Cursor Agent”下面的步进器,给它分配一个或多个分屏。其余的保留为普通 shell,或分给 Claude Code、Codex 以及 MXterm 检测到的其他 Agent CLI。
4. 如果同时运行多个 Agent,打开“为每个功能使用独立的 git worktree”(见下文)。
5. 按 ⌘/Ctrl+Enter。MXterm 会把 cursor-agent 输入到该分屏的 shell 里。
每次重新打开创建工作区页面,都会重新检测 Agent。如果你在 MXterm 运行时安装了 CLI,关掉再重新打开创建工作区页面即可,不用重启应用。
标签页和分屏布局会在重新启动后保存并恢复,但里面的进程不会恢复。每个分屏都会在原目录里得到一个新终端。恢复后的 Cursor Agent 分屏会重新执行 cursor-agent,是全新启动,没有恢复会话,也没有最初给它的任务说明。
实时状态检测:MXterm 怎么知道 Cursor 在做什么
这不是对接 Cursor 的 API:MXterm 为此从不访问 Cursor 的后端。它只是对分屏里已经渲染出来的文本做模式匹配。每隔约 300 毫秒检查一次屏幕内容,分屏空闲且没有新输出时会跳过检查。
状态由三条规则决定。匹配 permission、allow…? 或 do you want to 的行视为阻塞。匹配 thinking…、generating…、working… 或 analyzing 的行视为工作中。以 cursor> 结尾的行视为空闲,什么都匹配不上的屏幕也回退为空闲。
MXterm 自己的源码说明,这些 Cursor 匹配规则是手写的,尚未验证,没有对照过真实的 Cursor 会话。把那个圆点当作提示就好。
分屏刚启动后,约 3 秒内状态为未知,这段时间会忽略启动画面。如果分屏的终端进程退出,状态会一直保持未知,所以分屏只显示普通的活动圆点(并且只在有输出时显示),直到分屏重新启动。重新启动会再开始一次 3 秒的宽限期。
同一套规则引擎也用于 Claude Code、Codex、Gemini、OpenCode 以及 MXterm 支持的其他 Agent CLI。所以 Cursor 分屏标题栏的圆点颜色和它们一样:红色表示阻塞,黄色表示工作中,绿色表示完成,状态未知时是普通的活动圆点。
标签栏里不活动的标签页最多带两个标记:Agent 工作时的忙碌标记,以及红点(阻塞)或绿点(完成)。侧边栏列出当前标签页的终端,每个都有自己的圆点。
后台分屏在阻塞或完成约一秒半后也会响一声提示音。在设置 → 通知里,可以单独关闭 Cursor 的提醒(提示音和横幅),不影响 Claude Code 和 Codex 的。
恢复 Cursor 会话:哪些是自动的,哪些要自己来
自动发现覆盖 Claude Code、Codex 以及 Gemini/OpenCode 的会话,但不包括 Cursor。MXterm 的创建工作区页面里有一个恢复会话列表,它会读取某个 CLI 自己保存在磁盘上的历史记录,一键把过去的对话作为新分屏重新打开。Cursor 自己的会话存储目前不在扫描范围内,所以不会出现在那个列表里。
MXterm 没有 Cursor 会话列表,也没有填写 Cursor 会话 ID 的字段。要恢复某个具体的 Cursor 对话,请在分屏的 shell 里手动运行 Cursor 自己的 Agent CLI(cursor-agent)。除此之外的一切(分屏、状态圆点、所在的 worktree)在两种情况下都是同一个 MXterm 工作区。
让 Cursor 与 Claude Code 或 Codex 并行:git worktree 隔离
在创建工作区页面里打开为每个功能使用独立的 git worktree,它创建的每个 Agent 分屏(包括 Cursor)都会在 <repo>/.worktrees/<slug> 得到自己的 worktree。slug 就是分支名,斜杠写成短横线。分支 swarm/azure-falcon 对应的文件夹是 .worktrees/swarm-azure-falcon。
分支是全新的,名字随机,比如 swarm/azure-falcon。MXterm 还会自动把 .worktrees/ 加进你的 .gitignore,这些临时检出就不会被误提交。普通 shell 分屏,以及你没有隔离的分屏,仍然留在仓库根目录。
效果很实在,但这不是沙箱。Cursor 在 swarm/azure-falcon 里干活,Claude Code 在 swarm/mint-otter 里干活,两者编辑的是两个不同分支上的两个不同目录。一个 Agent 改到一半的内容,落到另一个 Agent 正在改的文件上的可能性要小得多。
每个 Agent 一个 git worktree,降低的是误改风险:一个 Agent 的失误不容易碰到另一个 Agent 的工作副本。做法是给每个 Agent 一份独立的检出,而不是限制任何一个 Agent 能做什么。
两条规则保护这个结果。关闭分屏或工作区不会删除它的 worktree,Agent 也无法删除带有未提交更改的 worktree。分支合并后,在 Git 面板的 worktree 列表里清理即可。
Free 与 Pro:到底限制了什么
开启 worktree 隔离不花钱,也不需要 Pro。受限的是规模。默认情况下,Free 套餐没有分屏数量限制。它允许 2 个终端共用一个 Control Room(原 War Room)、5 个已保存的 SSH 主机和 1 个已保存的 MXterm Host。Pro 没有 Control Room 这项上限。
对于 Cursor 加其他 Agent 的组合,要留意的是 Control Room 那个数字。把 Cursor、Claude Code 和 Codex 放进同一个房间,第三个成员就需要 Pro。
Free 不限分屏数量,所以一个 Cursor 分屏、一个 Claude Code 分屏加五个普通 shell 可以并排运行。
这件事上,MXterm Pro 与 iTerm2、Warp 和普通终端的对比
iTerm2 和 Terminal.app 都是出色、成熟的终端,在其中运行 cursor-agent,效果和在别处完全一样。但它们都不是围绕这些事设计的:跟踪 Agent 是阻塞、工作还是空闲,自动管理 worktree,或在另一个标签页里协调第二个 Agent。你拿到的是原始输出,要自己去读。
Warp 是另一种比较:它是主要围绕自家 AI Agent 和命令块构建的终端。你仍然可以像运行任何命令一样,在 Warp 的命令块里启动 cursor-agent。它的 Agent 工具目前覆盖哪些内容,请查看 Warp 的文档。
如果要做的是让 Cursor 与 Claude Code、Codex 并行,并且一眼看出哪个需要你,MXterm Pro 就是为此设计的。它是在普通终端窗口里单独运行 cursor-agent 之外的另一种选择。
排查问题与当前限制
创建工作区页面里 Cursor Agent 显示“未安装”:MXterm 没有在 PATH 或常见 bin 目录里找到 cursor-agent 可执行文件。安装它,再重新打开创建工作区页面即可,不用重启应用。
分屏刚启动时没有颜色:正常。启动后约 3 秒内,在第一次真正检查屏幕内容之前,状态是未知的。
“恢复会话”里没有 Cursor 条目:目前就是这样,见上文恢复会话一节。
分屏回来了,但旧会话没回来:重新启动后,标签页和布局会恢复,每个分屏里是一个新终端。Cursor Agent 分屏会重新执行 cursor-agent,是一个全新的会话,没有最初的任务说明。MXterm 不会替你重新打开之前的 Cursor 对话。
不重放任务说明是有意为之:对着已经往前走了的 worktree 重放,会把整个任务重做一遍。
Linux:MXterm Pro 有 Linux beta 版(一个 .deb 和一个 AppImage,面向 Ubuntu 22.04 或更高版本),但这套流程是针对 macOS 和 Windows 描述的,所以请把它视为尚未在 Linux 上测试。
多分屏 SSH、Command Recipes(Cmd+J)和多 Agent 的 Control Room (原 War Room):先免费用。
常见问题
不会。MXterm Pro 启动一个真实的 PTY,把 Cursor Agent 模板的命令(cursor-agent)输入到它的 shell 里,不会包装这条命令。状态检测只读取分屏渲染出来的输出,不会拦截或改动这条命令的输出和输入。
可以。各自在自己的分屏里运行,如果打开了隔离,还各有自己的 git worktree。MXterm 不会为 Cursor 设置 Control Room 工具,所以 Cursor 分屏不会像 Claude Code 或 Codex 那样连接到房间。
目前还不能自动选择。创建工作区页面里的“恢复会话”列表现在只读取 Claude Code、Codex、Gemini 和 OpenCode 的历史。Cursor 自己的会话存储没有接入那次扫描。你仍然可以在分屏的 shell 里,用 Cursor 的 Agent CLI(cursor-agent)手动恢复。根据 Cursor CLI的文档,cursor-agent ls 列出过去的聊天,cursor-agent resume 重新打开最近一次。cursor-agent --resume 接收聊天 ID。
Windows x64 提供 PowerShell、cmd、Git Bash(如果已安装,还有 PowerShell 7 或 WSL),可按分屏选择,也可在设置里设为默认。状态检测和 worktree 隔离在那里也未验证。在 Windows 上,Control Room 检测不到你在普通 shell 分屏里手动启动的 Agent。1.1.0 是第一个公开的 Windows 版本。
worktree 隔离本身免费。受限的是规模:默认情况下,Free 套餐没有分屏数量限制,但一个 Control Room 最多 2 个终端,另有已保存的 SSH 主机和 MXterm Hosts 的限制。付费的 Pro 套餐取消这些上限。Cursor、Claude Code 和 Codex 三个 Agent 同处一个房间,需要 Pro。