单个AI编程智能体的速度并不快。一个模型实例每秒大约输出50到60个token,回答简单问题绰绰有余,但用于多步骤的工程任务就显得太慢。切实可行的办法是同时运行多个智能体,而这又带来新的问题:如何管理一大堆终端会话。对比主要方案后,专为AI编程智能体打造的macOS开源终端cmux,看起来是偏好命令行工作的开发者最简洁的选择。下文依次介绍基本架构、各工具的对比、如何为远程工作配置cmux,以及在用量上限开始掣肘时需要注意的事项。

模型是API,驱动它的是harness

从一个简单的思路入手会更容易理解。AI模型本质上是一个API:它接收客户端的请求并返回响应。客户端有几种形式:

  • VS Code等IDE
  • 通过HTTP调用模型的代码
  • 终端命令行工具
  • 专用桌面应用

与模型API通信并推动工作进行的软件层被称为harness。例子包括Claude Code CLI、Codex CLI、Codex桌面应用、Vercel的Fx、DeepSeek Harness和OpenCode。扩展harness的方式很简单:多开几个终端窗口,或在应用内同时运行更多线程。

麻烦从手动打开十几个终端窗口时开始。为了让多个harness保持井然有序,开发者会使用harness编排工具,也就是把大量智能体会话集中在一处管理的工具。

编排工具对比

主要候选是cmux、Herdr、Conductor和T3 Code,Codex桌面应用也可作为参照。以下是实际使用后的对比。

工具 优点 缺点
cmux 竖向标签页、智能体状态指示、继承SSH会话、传递图片 以终端为主,可能不适合想要完整图形界面的人
Herdr 轻量,可用空间和标签页组织工作 按Command-K会导致显示错乱;无法管理SSH会话
Conductor 管理智能体工作环境 开始使用前必须新建GitHub仓库和云端虚拟机
T3 Code 对偏好图形界面的开发者来说可用 不适合纯命令行工作流
Codex桌面应用 管理SSH会话很方便 不太适合纯终端工作流

Herdr的思路很有吸引力。用户可以创建“admin-work”这样的命名空间,在其中放置编号标签页,运行并行的终端会话。但许多开发者会下意识地按macOS快捷键Command-K清屏,而这会破坏它的文本界面。要恢复,就得重新拆分窗口、重启程序并结束损坏的shell。多年养成的肌肉记忆很难改。Herdr还把SSH会话当作普通终端进程处理,一旦关闭或中断该终端,远程连接会立即断开。

Conductor的问题在于上手流程。它不能直接打开已有的本地文件夹,而是要求先完成GitHub认证、新建仓库并配置云端虚拟机。一款旨在提高效率的工具,不应规定用户的Git工作流,也不应强迫用户准备云基础设施。

工作台上四个装着终端窗口的工具箱,一个整齐有序,其余杂乱

▲ 智能体编排工具对比

为远程智能体工作配置cmux

cmux基于libghostty构建,后者是支持GPU加速的Ghostty终端所用的库;cmux采用原生Swift和AppKit编写,而非Electron。它还可以通过基于socket的CLI来控制。其默认布局显得杂乱,同时摆着多个终端窗格、移动端预览和浏览器视图,但可以精简为干净、极简的终端。

以下是在远程服务器上工作的实用配置:

  1. 安装cmux桌面应用。
  2. 用cmux ssh <host> --name <session-name>打开SSH配置中的主机。命名后的远程会话会作为独立工作区出现在左侧边栏。
  3. 用Command-D竖向拆分,或用Command-Shift-D横向拆分。每个新窗格打开时都已登录同一台远程主机,无需再次认证。用Command-T打开的新标签页同样继承该连接。
  4. 在远程会话中启动Claude Code或Codex等智能体CLI。
  5. 按Command-B收起侧边栏,让终端占满整个屏幕。
  6. 在设置的“Computer Use”部分关闭内置浏览器。

侧边栏为每个工作区显示通知圈和状态指示,一眼就能看出智能体是在忙还是空闲。用Command-K清屏也不会出现任何错乱。

关闭内置浏览器是为了保持专注。如果工作流已经依赖常规桌面浏览器,终端里的浏览器大多只会增加杂乱。另一方面,cmux开放了大量设置,包括自定义基础URL、API密钥和环境变量,便于按需调整。

把截图传给远程智能体

最突出的功能是图片传递。把本地截图拖进正在远程服务器上运行Claude Code的cmux窗口,cmux就会通过SSH连接发送图片,并以“Image #1”的形式交给智能体。普通终端要么只粘贴本地文件路径,要么在SSH下直接失败。测试中,运行在远程机器上的Claude Code准确描述了所收到截图的内容,包括Claude吉祥物、API计费行、终端提示文字和运行耗时。无需手动复制文件,也无需上传到云存储。

Codex的用法相同。用codex --yolo以YOLO模式启动,再输入/voice,即可在cmux中开始低延迟的语音对话。

合上笔记本,工作照常进行

当智能体运行在远程虚拟机上时,笔记本休眠、电池耗尽或Wi-Fi断开都不会再中断任务。在一个例子中,运行交互式进程监视器htop的窗格和辅助智能体任务在远程主机上持续运行,而MacBook的屏幕合上了6个小时。重新打开后,所有后台任务都完好无损,仍在继续执行。

合上的笔记本通过一道光连接远程服务器,智能体在服务器上继续操作终端

▲ 在远程服务器上继续的智能体工作

用量上限、账户网关与注意事项

运行大量智能体很快就会触及用量上限。把Claude Code和Codex直接指向服务商的默认端点,单个账户的上限就会成为瓶颈。一种变通办法是账户网关,即置于客户端工具与Anthropic等模型服务商之间的中继服务器。

  • 客户端把基础URL指向网关,并用网关专用的API密钥认证。
  • 网关把每个请求路由到底层多个账户中的一个。
  • 同一对话的后续请求始终发往同一个账户,这种做法称为粘性会话。

粘性会话之所以重要,是因为对话在账户之间切换会导致提示词缓存未命中,即服务商无法复用此前已存储的提示词部分,同时还会打断模型思考记录的连续性。设置网关后,可以把负载分摊到多个账户,通过增加账户扩充容量,并为协作者提供基于token的访问权限。

不过有两点重要提醒。第一,以这种方式轮换多个账户,在服务商的服务条款和使用准则下处于灰色地带,尝试前请先查看条款。第二,Claude Code桌面应用的远程功能不容易接受使用自定义基础URL和认证token的代理网关。桌面应用在这类配置上往往落后于CLI工具,因此自定义配置更适合使用CLI。

先定工作流,再选工具

并行运行多个智能体是起点,下一步是选择能让它们保持有序的工具。对以终端为主的开发者来说,cmux看起来是最均衡的选择;偏好图形界面的人则可以考虑T3 Code。

  • 确定要使用的智能体CLI,例如Claude Code或Codex,以及希望同时运行的数量。
  • 把耗时较长的任务移到远程虚拟机上,用cmux ssh <host>连接,使其不再依赖笔记本保持唤醒。
  • 确认拆分的窗格和新标签页会继承远程连接,并确认Command-K等熟悉的快捷键仍能正常工作。
  • 试着把截图拖进远程智能体会话,传递视觉信息。
  • 如果考虑使用汇集多个账户的网关,请先阅读服务商的服务条款。