cmux:专为 AI Agent 设计的开源终端,告别多窗口切换地狱
痛点切入
你有没有过这种体验:同时开着 5 个终端窗口跑不同的 AI agent,一个在等你确认,另一个在跑测试,第三个卡在编译,第四个在等 API 响应,第五个已经忘了是干嘛的。
切换窗口?你根本不知道哪个需要你。等你找到的时候,可能已经错过了 agent 的确认时机。
这就是多 agent 工作流的典型痛点。iTerm2 和 Terminal.app 是优秀的终端,但它们不是为”同时监控多个长时间运行的 agent”设计的。你被迫在窗口间来回切换,靠肉眼盯哪个在输出新内容。
cmux 解决的就是这个问题:把”多个终端窗口”变成”一个界面里的多个面板”,并且告诉你哪个需要你。
项目简介
cmux 是一个基于 Ghostty 的开源 macOS 终端,由 Manaflow 团队开发。它使用 Ghostty 的渲染引擎 libghostty,就像应用使用 WebKit 渲染网页一样。主语言是 Swift + AppKit,完全原生,不是 Electron 套壳。
GitHub 仓库地址是 manaflow-ai/cmux,采用 GPL 协议,免费使用。
它的定位很清晰:为多任务和 AI coding agent 工作流设计的终端。不是替代 iTerm2 做所有事情,而是解决”同时跑多个 agent 时的组织和监控”问题。
README 里列出的核心功能包括:
- 垂直标签页:侧边栏显示 git 分支、工作目录、端口和通知文本
- 通知提醒环:当 agent 需要关注时,面板会亮起提示
- 内置浏览器:在终端旁边分屏打开浏览器,支持可编程 API
- 分屏面板:每个标签页内支持水平和垂直分屏
- 可编程:CLI 和 socket API,支持自动化和脚本控制
- GPU 加速:由 libghostty 驱动,渲染流畅
- 会话恢复:重启后恢复窗口、工作区、面板、工作目录和回滚内容
- iOS 伴侣应用:你的终端实时同步到 iPhone 和 iPad
为什么是它
通知系统:这才是多 agent 工作流的核心
大多数终端的”通知”是什么?标题栏闪烁一下。如果你没盯着看,根本不知道发生了什么。
cmux 的通知是多维度的:
- 面板周围显示通知环(亮起的边框)
- 侧边栏显示未读标记
- 弹出通知面板
- macOS 桌面通知
这些通知通过标准终端转义序列(OSC 9/99/777)自动触发。任何支持 hooks 或 OSC 的 agent 都可以用,包括 Claude Code、Codex、OpenCode。
这意味着:当 Claude Code 完成任务等你确认时,cmux 会直接告诉你。你不需要在 5 个窗口间来回切换去”找”哪个 agent 在等你。
垂直标签页:比水平标签更实用
水平标签页的问题:超过 5 个就很难看清每个标签在干什么。
cmux 的垂直标签页在侧边栏显示:
- 工作区名称
- 当前 git 分支
- 工作目录
- 端口信息
- 通知状态
你可以一眼看到所有正在进行的任务。比水平标签多得多的信息密度。
内置浏览器:验证改动不用切窗口
cmux 可以在终端旁边分屏打开一个真正的浏览器面板,并且完全可编程。你可以:
- 导航到指定 URL
- 对 DOM 截照
- 点击、输入
- 执行 JavaScript
- 读取控制台和网络活动
这对 agent 工作流很有用:agent 修改了代码,你直接在旁边的浏览器验证,不用切窗口。
可编程性:不只是终端,还是自动化平台
cmux 提供 CLI 和 Unix socket API,每个操作都可以通过命令行控制:
# 创建工作区
cmux create-workspace --name "project-a"
# 打开分割面板
cmux split-pane --horizontal
# 发送输入到指定面板
cmux send-input --workspace "project-a" --pane 0 --input "npm test"
# 读取屏幕内容
cmux capture-pane --workspace "project-a" --pane 0
这意味着你可以写脚本批量管理 agent 工作流,而不只是手动操作。
和 tmux 的关系
很多人会问:cmux 和 tmux 有什么区别?
tmux 是在任何终端内运行的终端复用器。cmux 是一个带 GUI 的原生 macOS 应用。垂直标签页、分割面板、内置浏览器和 socket API 全部内置,无需配置文件或前缀键。
但 cmux 不排斥 tmux。很多人把 cmux 与 SSH 和 tmux 搭配使用,而且 cmux 可以原生连接到远程 tmux 会话。
和 iTerm2 的对比
| 特性 | cmux | iTerm2 |
|---|---|---|
| 原生 macOS | 是 | 是 |
| 垂直标签页 | 原生支持 | 需要配置 |
| 通知提醒环 | 原生支持 | 无 |
| 内置浏览器 | 原生支持 | 无 |
| 可编程 API | CLI + socket | AppleScript |
| GPU 加速 | 是 | 否 |
| 会话恢复 | 支持 | 部分支持 |
| 开源 | 是 | 否 |
iTerm2 是成熟的终端,功能丰富。但 cmux 专注在”多 agent 工作流”这个场景,体验更聚焦。
快速上手
安装
推荐使用 DMG 安装:
# 从官网下载
# https://cmux.com/zh-CN/download/confirmation?dl=1
# 或者使用 Homebrew
brew tap manaflow-ai/cmux
brew install --cask cmux
首次启动时,macOS 可能会要求确认打开来自已识别开发者的应用。点击”打开”即可继续。
CLI 设置
cmux 包含一个用于自动化的命令行工具。在 cmux 终端内会自动生效。如果要在 cmux 外部使用 CLI,需要创建符号链接:
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
之后你就可以运行以下命令:
# 列出所有工作区
cmux list-workspaces
# 发送通知
cmux notify --title "Build Complete" --body "Your build finished"
基础操作
- 打开 cmux,你会看到左侧有垂直标签页侧边栏
- 默认工作区已打开一个终端
- 使用快捷键创建新工作区和分屏
常用快捷键:
- Cmd + N:新建工作区
- Cmd + D:垂直分屏
- Cmd + Shift + D:水平分屏
- Cmd + [: 切换到左边面板
- Cmd + ]:切换到右边面板
完整的快捷键列表见文档:https://cmux.com/zh-CN/docs/keyboard-shortcuts
亮点代码
cmux 最有价值的功能是通知系统和可编程 API。这里展示一个实际场景:用 cmux 管理多个 Claude Code 会话。
场景:同时跑 3 个 agent
假设你在并行处理 3 个任务:
- 前端重构(Claude Code 会话 A)
- API 开发(Claude Code 会话 B)
- 测试编写(Claude Code 会话 C)
在 cmux 中:
- 创建 3 个工作区,分别命名
- 每个工作区打开 Claude Code
- 当某个 agent 完成任务等你确认时,cmux 会通过通知环提醒你
- 你在侧边栏一眼就能看到哪个在运行、哪个在等待
用脚本批量管理
#!/bin/bash
# batch-agents.sh:创建并启动多个 agent 工作区
# 创建工作区
cmux create-workspace --name "frontend"
cmux create-workspace --name "api"
cmux create-workspace --name "tests"
# 在每个工作区启动 Claude Code
cmux send-input --workspace "frontend" --input "claude"
cmux send-input --workspace "api" --input "claude"
cmux send-input --workspace "tests" --input "claude"
# 发送初始任务
cmux send-input --workspace "frontend" --input "重构登录页面组件"
cmux send-input --workspace "api" --input "实现用户认证 API"
cmux send-input --workspace "tests" --input "编写认证模块测试"
这个脚本启动后,cmux 会监控所有 agent,并在需要你确认时发出通知。
浏览器自动化示例
# 在 cmux 中打开浏览器面板并导航
cmux browser navigate --url "http://localhost:3000"
# 截照验证页面
cmux browser screenshot --output "login-page.png"
# 执行 JavaScript 检查元素
cmux browser evaluate --expression "document.querySelector('button').textContent"
社区与生态
cmux 由 Manaflow 团队开发,GitHub 仓库活跃。从社区反馈看,它已经获得了一批忠实用户。
Mitchell Hashimoto(Ghostty 和 HashiCorp 创始人)评价:
“又一个基于 libghostty 的项目,这次是一个带垂直标签页、更好的组织/通知、内置可编程浏览器的 macOS 终端,专门面向大量使用终端 agent 工作流的用户。”
Nick Schrock(Dagster 创建者、GraphQL 联合创始人)说:
“这正是我一直在找的产品。用了两小时就爱上了。”
Edward Grefenstette(Google DeepMind 研究总监)说:
“整个周末都在用,太棒了。”
从这些反馈看,cmux 的核心用户群是需要同时管理多个 agent 的开发者。它不是一个通用终端替代品,而是为特定工作流设计的工具。
项目还在快速迭代中,即将支持 Linux、Windows 和 Android。iOS 伴侣应用目前已发布 beta 版。
适用场景与局限
适合用 cmux 的场景
- 同时运行多个 AI coding agent(Claude Code、Codex、OpenCode 等)
- 需要监控 agent 状态并及时响应
- 想在一个界面里组织多个开发任务
- 需要边看终端边看浏览器验证改动
- 想要可编程的终端自动化能力
不适合用 cmux 的场景
- 只跑一个 agent,不需要多任务管理
- 必须在 Linux 或 Windows 上工作(目前只支持 macOS)
- 不喜欢原生 macOS 应用的外观(cmux 比较朴素)
- 需要高度定制化的终端体验(iTerm2 更成熟)
当前限制
- 只支持 macOS,Linux 和 Windows 版本即将推出
- 会话恢复有限制:重启后布局和元数据会恢复,但活跃的终端进程(如 Claude Code、tmux、vim)不会自动恢复
- 浏览器面板功能还在完善中
- 相比 iTerm2,整体功能集还不够丰富
结论
cmux 不是一个通用终端替代品。它解决的是一个具体问题:同时管理多个 AI agent 时的组织和通知。
如果你同时跑 3 个以上的 agent,并且经常因为错过确认而浪费时间,cmux 值得试。它的通知系统和垂直标签页会让你重新理解”多任务终端”应该是什么样子。
仓库:https://github.com/manaflow-ai/cmux 文档:https://cmux.com/zh-CN/docs/getting-started