终端的进化方向变了:有人在渲染像素,有人在给 AI 造指挥舱
你有没有过这样的瞬间——同时开着五六个 Claude Code 会话,macOS 通知栏每隔两分钟弹出一句"Claude is waiting for your input",你点进去,发现不是这一个在等你,翻遍了六个标签页,才找到那个真正卡住的。
这不是你一个人的问题。当 AI 编程助手从"偶尔用用"变成"并行跑五六个"的时候,传统终端暴露出一个根本性的缺陷:它不知道你的 agent 在干什么,更不知道哪个在等你。
终端过去 40 年的进化方向一直是"渲染更快、颜色更多、分屏更灵活"。但 AI agent 时代给终端提出了一个全新的需求——你需要的不只是一个打字窗口,而是一个能看见 agent 状态的指挥舱。
23.6k Star 的 cmux,就是在这个方向上走出的第一步。
一个被通知逼出来的项目
cmux 的作者 lawrencechen 的痛点极其具体:他用 Ghostty 跑大量 Claude Code 和 Codex 会话,macOS 原生通知永远只有一句"Claude is waiting for your input",没有任何上下文;标签页开多了连标题都看不全。
他试过几种 coding orchestrator,但基本都是 Electron 或 Tauri 套壳——打开慢,内存高,而且这类 GUI 编排器会强制你按它的工作流走,失去了终端的灵活性。
所以他选了一条硬路:用 Swift + AppKit 从零写一个原生 macOS 应用,终端渲染直接复用 libghostty(Ghostty 的渲染引擎),在此基础上加侧边栏和通知系统。
这个选择的结果是——启动快、内存低、GPU 加速渲染,而且你现有的 Ghostty 配置(主题、字体、配色)可以直接读进来,零迁移成本。
通知环:让 agent 的等待变成视觉信号
cmux 最核心的发明是通知环。
当一个 agent 需要你操作时,对应的终端分屏边缘会出现蓝色光环,侧边栏的标签也会亮起来。你不需要翻标签页,扫一眼侧边栏就知道哪个 agent 卡住了。Cmd+Shift+U 直接跳到最近一个未读通知,不用一个个切。
这个设计解决了什么问题?把"agent 在等我"从一个需要主动查找的信息,变成了一个被动接收的视觉信号。
想象一下你同时跑 5 个 Claude Code agent 的场景:传统终端里,你得逐个切换标签页看谁卡了;在 cmux 里,侧边栏直接告诉你——第三个标签的 agent 在等你确认一次文件修改。
通知系统还支持 CLI 命令 cmux notify,你可以把它接入任何 agent 的 hook——不只是 Claude Code,OpenCode、自定义脚本都可以。
侧边栏:信息密度的质变
传统终端的标签页是什么?一行缩略文字,经常被截断。开了十个标签,你只能看到"claude"、"claude"、"clau…"。
cmux 的垂直侧边栏把每个标签变成了一个信息卡片,显示:
- Git 分支名
- 关联的 PR 编号和状态
- 工作目录
- 监听端口(比如 localhost:3000)
- 最新的通知文本
开十个 agent 并行跑,侧边栏扫一眼就知道每个在干什么、卡在哪里、跑的是哪个分支。这不是"更好看的标签页",而是从"标签"到"仪表盘"的信息架构升级。
内置浏览器:agent 的眼睛
这个功能第一次看到可能会觉得"终端里为什么要塞浏览器",但想一下实际场景:
你在跑 Claude Code 修改前端代码,开发服务器在 localhost:3000 跑着。传统工作流里,你得在终端和浏览器之间来回切——改完代码,切到浏览器看效果,再切回来。
cmux 的做法是直接在终端旁边分屏打开一个浏览器面板,而且这个浏览器是可编程的——移植自 Vercel 的 agent-browser 项目,agent 可以截图无障碍树、获取元素引用、点击、填表、执行 JavaScript、读取 console 日志和网络请求。
这意味着 Claude Code 可以直接在你的开发服务器上验证自己的改动,不用你手动刷新浏览器。
浏览器还支持从 Chrome、Firefox、Arc 等 20 多个浏览器导入 cookies 和历史记录,打开就是登录状态。
一条命令启动 Agent 团队
cmux claude-teams
一条命令启动 Claude Code 的 teammate 模式,每个 teammate 自动生成为原生分屏,侧边栏有元数据和通知。不需要 tmux,不需要手动分屏配置。
SSH 也做了优化:cmux ssh user@remote 创建远程工作区,浏览器面板走远程网络,localhost 直接通,拖拽图片还能 scp 上传。
真正的原生,不是套壳
"原生"这个词被滥用太多了,但 cmux 是真原生——Swift + AppKit,不是 Electron,不是 Tauri,不是 webview 套壳。
这意味着:
- 启动速度和系统终端一个量级
- 内存占用远低于 Electron 系终端
- 退出时自动保存会话状态,重开恢复布局、工作目录、滚动历史,agent 会话也能恢复
但它不完美
公平地说,cmux 有明显的局限:
只支持 macOS。 Linux 和 Windows 用户直接出局。作者在 HN 上也承认,cmux 的设计以本地 macOS 开发为核心,远程 SSH 场景不是首要目标。如果你重度依赖远程终端,cmux 目前帮不了太多。
还在快速迭代中,有 bug。 社区里有用户反馈"Looks really cool, but it's a buggy mess"。侧边栏字体大小不能单独调整,对视力不好的用户不友好。快捷键和 Ghostty 的配置有冲突,部分映射不被尊重。
不是 coding agent 本身。 cmux 是工作流基础设施,它的价值取决于你有没有在用 agent CLI。如果你只是偶尔用 Claude Code 聊聊天,cmux 的通知系统和侧边栏有点杀鸡用牛刀。
终端品类的拐点
cmux 的意义不在于它本身有多完美,而在于它标志着一个品类拐点:
终端正在从"文本渲染器"进化为"agent 工作流操作系统"。
过去终端的竞争维度是渲染性能(GPU 加速)和可定制性(主题、字体)。但当开发者开始同时运行多个 AI agent,一个新的需求维度出现了——状态感知和注意力管理。
这个趋势不是 cmux 独有的。Warp 推出了"Agentic Terminal",Zellij 增加了浮动面板,市场上出现了 Conductor、Superset 等 agent 编排器。但 cmux 的路径不同:它没有发明新的工作流,而是在你已有的终端工作流上加了一层感知层——让你看见 agent 的状态,而不是被 agent 的通知淹没。
iTerm2 的作者在 15 年前解决了"终端不够好用"的问题,Ghostty 的作者在 2 年前解决了"终端不够快"的问题。cmux 试图解决的,是"终端看不见 AI 在干什么"的问题。
如果你在 macOS 上同时跑 3 个以上的 AI coding agent,cmux 值得你花 10 分钟试一下。
GitHub: https://github.com/manaflow-ai/cmux
推广链接:
- OpenModel https://www.openmodel.ai?ref=wYOxNxlv
- Stepfun https://platform.stepfun.com?invite_code=PQCZLBNK
- Agnes AI https://platform.agnes-ai.com/ (1M上下文+4K生图+视频全免费, API: apihub.agnes-ai.com/v1)
暂无评论。