当现代化终端复用器遇上 AI 智能体多路复用器,再叠加上 macOS 原生终端的可视化能力。

引言:AI 编码时代的终端困境

如果你每天和 Claude Code、Codex、OpenCode 这些 AI 编码智能体打交道,你一定经历过这样的场景:终端里标签页堆了一排,每个都在跑不同的任务,有的在等授权、有的在编译、有的卡住了——但你根本分不清哪个是哪个。切换来切换去,上下文丢了,节奏断了。

传统的 tmux 虽然能解决多窗格问题,但对 AI 智能体的状态一无所知。浏览器里开一堆 AI 对话框?那更是对终端用户的背叛。

于是,我找到了一个组合方案:Zellij + Herdr + cmux。三个工具各司其职,叠加起来形成了目前我体验过的最顺畅的 AI 编码工作流。

第一层:Zellij — 现代化终端复用器

它是什么?

Zellij 是一个用 Rust 编写的现代终端复用器(terminal multiplexer),你可以把它理解为 tmux 的「现代化版本」。它允许你在一个终端窗口中管理多个会话、标签页和窗格,但又不像 tmux 那样需要复杂的配置。

为什么选它而不是 tmux?

开箱即用,零配置:Zellij 的设计哲学是「你不应该为了强大而牺牲简单」。打开就能用,状态栏直接显示所有可用快捷键,不需要背手册。

独特的 UI 创新:Zellij 引入了浮动窗格(floating panes)和堆叠窗格(stacked panes)的概念。浮动窗格可以像 IDE 里的悬浮窗口一样浮在界面上方,堆叠窗格则让多个终端在同一个位置层叠,通过切换来访问——这在调试多任务时极其好用。

布局自动化:Zellij 的布局系统允许你用 KDL 文件描述一整套开发环境——几个窗格、分别跑什么命令、怎么排列。一次配置,一键启动整个工作区。

会话持久化:关闭终端窗口?没问题。Zellij 的会话管理是内置的,每次打开都会自动恢复之前的会话。

插件系统:支持用任何编译到 WebAssembly 的语言编写插件。社区已经有很多实用插件,比如 zellij-workspace 可以在现有会话中应用布局。

我的用法

Zellij 是我整个工作流的地基。打开终端,Zellij 自动启动,恢复我之前的所有会话。每个项目一个会话,每个会话里按功能分标签页——代码编辑一个标签、日志监控一个标签、AI 智能体统一放在一个标签里。

第二层:Herdr — AI 智能体的「牧羊人」

它是什么?

如果说 Zellij 是通用终端复用器,那 Herdr 就是专门为 AI 编码智能体设计的终端多路复用器。你可以把它理解为「tmux,但每个窗格都认识你正在跑的 AI 智能体」。

核心优势

每个智能体一个真实终端:Herdr 的每个窗格都是一个真实的 PTY(伪终端),不是某个 GUI 应用对终端的模拟。这意味着全屏 TUI 应用也能正常渲染,不会出现兼容性问题。

智能体状态一目了然:Herdr 能自动检测每个窗格里运行的 AI 智能体状态——working(工作中)、blocked(等待输入)、done(完成)或 idle(空闲)。一眼扫过去就知道哪个智能体在等你回应。

分离后继续运行:你可以随时 detach,关掉终端,Herdr 后台的所有智能体会继续工作。从任何终端(甚至通过 SSH)重新 attach 回来,现场原封不动。

鼠标原生支持:Herdr 不是那种「键盘优先、鼠标凑合」的工具——它把鼠标当作一等公民。点击窗格切换、拖拽边框调整大小、右键菜单分割窗格,新手也能立刻上手。

可脚本化:Herdr 提供了本地 Socket API 和 CLI,智能体自己都可以调用——一个智能体可以读取另一个窗格的输出、等待状态变化、甚至创建新的窗格。

我的用法

在 Zellij 的某个标签页里,我启动 Herdr。然后在这个 Herdr 会话里,我同时跑着:

  • 一个 Claude Code 在重构后端模块
  • 一个 Codex 在写前端组件
  • 一个 OpenCode 在跑测试用例

每个都拥有独立的终端和上下文。哪个卡住了、哪个需要我授权,Herdr 的状态栏一清二楚。需要临时加一个智能体?prefix+v 分割一个新窗格,直接开干。

第三层:cmux — macOS 原生的 AI 终端

它是什么?

cmux 是一个基于 Ghostty 构建的 macOS 原生终端应用,专为 AI 编码智能体设计。它不是 Electron 套壳,而是用 Swift 和 AppKit 写的原生应用,启动快、内存低。

为什么在 Zellij + Herdr 之上还要加 cmux?

因为有些事情,终端 TUI 做得再好也不如原生 GUI 顺手。cmux 补上了这个缺口。

通知环(Notification Rings):这是 cmux 最核心的杀手级功能。当智能体需要你关注时(比如等待授权、遇到错误),窗格会出现蓝色光环,标签页会亮起。所有待处理通知集中在一个面板里,点一下就能跳转到对应位置。再也不用在十几个窗格里翻来找去。

垂直标签页 + 侧边栏:侧边栏显示每个工作区的 Git 分支、PR 状态、工作目录、监听端口和最新的通知文本。信息密度极高,而且一目了然。

内置浏览器窗格:cmux 内置了一个浏览器,可以在终端旁边打开。更厉害的是,它能从 Chrome、Firefox、Arc 等 20+ 浏览器导入 cookies 和会话,浏览器窗格打开就是已认证状态。调试 OAuth 回调、查看 API 文档,不用切出终端。

SSH 远程会话cmux ssh user@remote 直接为远程机器创建一个工作区,浏览器窗格还会通过远程网络路由,localhost 开箱即用。

可编程 CLI + Socket API:和 Herdr 一样,cmux 也提供了 CLI 和 Socket API,可以编程式创建工作区、分割窗格、发送按键、自动化浏览器。

我的用法

cmux 是我的「指挥中心」。我在 cmux 里开一个终端窗格,里面运行 Zellij(没错,Zellij 可以跑在 cmux 的终端窗格里),Zellij 里再跑 Herdr。三层嵌套,各司其职:

  • cmux 层:负责全局通知、多项目概览、内置浏览器
  • Zellij 层:负责每个项目的窗格布局和会话管理
  • Herdr 层:负责 AI 智能体的状态感知和并行调度

三强联合:实战工作流

下面是我每天的真实工作流:

早晨启动

  1. 打开 cmux(macOS 原生应用,秒开)
  2. cmux 的侧边栏自动显示我所有项目的 Git 状态和 PR 信息
  3. 在 cmux 的终端窗格里,Zellij 自动启动,恢复昨天所有的会话
  4. 切换到 Zellij 的「AI」标签页,Herdr 已经在后台运行,所有智能体恢复之前的状态

编码过程中

  1. 主编码:在 Zellij 的一个窗格里写代码
  2. 并行 AI 任务:在 Herdr 里同时跑 2-3 个 AI 智能体——一个重构、一个写测试、一个查文档
  3. 状态监控:瞥一眼 Herdr 的状态栏,知道谁在忙、谁在等
  4. 通知提醒:哪个智能体需要我授权了,cmux 的通知环亮起,点一下直接跳转
  5. 快速验证:需要看 API 文档?cmux 的内置浏览器在旁边打开,不用切出终端

下班收工

  1. 直接关掉 cmux(或者 detach
  2. Zellij 会话持久化保存,Herdr 里的所有智能体继续在后台运行
  3. 第二天打开,一切恢复如初

远程办公

  • 在公司电脑上通过 SSH 连回家里的机器
  • 运行 herdr attach,所有智能体现场恢复
  • cmux 的 SSH 会话也支持远程终端的完整功能

总结:为什么是这三个?

工具 定位 不可替代的价值
Zellij 现代化终端复用器 开箱即用、浮动/堆叠窗格、布局自动化、会话持久化
Herdr AI 智能体多路复用器 智能体状态感知、真实终端、可脚本化、鼠标原生
cmux macOS 原生 AI 终端 通知环、垂直标签页、内置浏览器、原生性能

单独使用任何一个都很强,但组合起来才是真正的「1+1+1>3」:

  • Zellij 提供了灵活的终端布局和会话管理
  • Herdr 让 AI 智能体变得可观测、可调度
  • cmux 用原生 GUI 补上了终端 TUI 做不到的通知和可视化

这三者并非竞争关系,而是垂直分层、各司其职的协作关系。cmux 在最外层提供 macOS 原生体验,Zellij 在中层管理终端会话,Herdr 在核心层调度 AI 智能体。

如果你也是每天和多个 AI 编码智能体打交道的开发者,不妨试试这个组合。安装命令放这里,拿走不谢:

 1# Zellij
 2brew install zellij
 3
 4# Herdr
 5brew install herdr
 6# 或 curl -fsSL https://herdr.dev/install.sh | sh
 7
 8# cmux
 9brew tap manaflow-ai/cmux
10brew install --cask cmux

然后打开 cmux,在里面跑 Zellij,在 Zellij 里跑 Herdr——开始体验什么叫「AI 编码的终局工作流」。

相关文章