注:本文文字经 AI 辅助校对排版。
0. 为什么我们需要一个懂 Agent 的分屏工具?
现在很多人接手稍微大一点的重构任务,桌面上往往同时挂着好几个 CLI 编程工具——比如一个窗口跑改业务逻辑,旁边开着补单元测试,偶尔还要调 再调一个做方案对比。
窗口一多,最打断思路的不是写需求,而是在各个终端之间来回切屏和确认:
任务派出去之后,切去写别的模块,等想起来切回来,才发现 Agent 早在 10 分钟前就跑完了,正卡在 [y/N] 确认框前等你敲回车;又或者不小心误关了终端窗口、SSH 临时掉线,跑了一半的会话上下文就全丢了。
herdr 解决的就是这个问题。
它是一个 Rust 编写的终端复用器。基础功能和 tmux、Zellij 类似:在一个窗口里自由切分屏幕、保持后台会话常驻。但它针对 AI 编程多做了一件很实用的事:能自动识别常见的 CLI Agent,并在左侧栏标出每个分屏的当前状态(目前已原生支持 Claude Code、Codex、Cursor CLI、Grok Build、Antigravity CLI、Pi、OpenCode 等主流工具;普通进程则作为标准终端运行)。
外层依然是你习惯的终端(如 Ghostty、iTerm2 或手机上的 Moshi),内层依然跑着你的 zsh 或 fish,而夹在中间的 herdr 负责把各个 Agent 的状态整理在同一屏里。
1. 安装与快速上手
herdr 支持 macOS、Linux 和 Windows,以单二进制分发。官方提供了一行安装脚本:
curl -fsSL https://herdr.dev/install.sh | sh包管理器用户可以用 Homebrew 或 mise 安装;Windows 平台可以使用官方提供的 PowerShell 脚本(详见 官方指南)。
安装后在项目目录下输入 herdr 即可启动。关掉窗口或断网后,后台会话依然运行,重新打开终端输入 herdr 即可恢复现场。
2. 日常使用与工作流
2.1 鼠标与快捷键
分屏和窗口操作支持常规的鼠标交互,无需额外配置:
- 拖拽分屏边框调整大小;
- 滚轮独立滚动各分屏的历史输出;
- 右键点击呼出菜单,快速切分或关闭窗格;
- 点击任意分屏直接切换输入焦点。
快捷键默认沿用了 tmux 的 Ctrl+b 前缀(按下 Ctrl+b 松开,再按对应字母):
| 操作 | 快捷键 | 对应鼠标操作 |
|---|---|---|
| 左右垂直分屏 | Ctrl+b 然后按 v | 右键选择「Split Vertical」 |
| 上下水平分屏 | Ctrl+b 然后按 - | 右键选择「Split Horizontal」 |
| 新建标签页 (Tab) | Ctrl+b 然后按 c | 点击顶部栏 + 号 |
| 后台挂起 (Detach) | Ctrl+b 然后按 q | - |
| 快捷键帮助 | Ctrl+b 然后按 ? | - |
左边开着 nvim 写代码,右边随手切一格跑 Agent:
nvim 再分出一格2.2 状态感知与快速跳转
herdr 左侧的状态栏会自动识别各格子里运行的 Agent,并归类为四种状态:
- Blocked:卡在权限确认框(如
[y/N])或正在向你提问,等待人工放行; - Working:正在执行命令、读写文件或进行模型推理;
- Done:本轮任务执行完毕,等待验收;
- Idle:普通 Shell 空闲。
(状态点的颜色会随终端主题自适应)
当右侧 Agent 卡在确认环节时,左侧栏会实时显示哪一个分屏需要处理:
左边在写,右边卡在确认;侧栏同时能看见 blocked 和正在跑当同时跑好几个任务时,按下 Ctrl+b 松开再按 g,可以唤出 Agent 快速跳转面板:
| 按键 | 过滤目标 | 使用场景 |
|---|---|---|
b | Blocked | 直达所有卡在确认框的 Agent,敲回车放行 |
w | Working | 查看哪些 Agent 正在高负载运行 |
d | Done | 切到已完成的窗口审查修改结果 |
i | Idle | 寻找空闲窗口分派新任务 |
a | All | 列出全部 Agent |
实际用下来最顺手的操作是:按下 Ctrl+b g 后按 b 直达卡住的 Agent 敲回车放行;处理完再按 Ctrl+b g + d 切换到跑完的分屏验收。双手不用离开主键盘区,也不用在一堆小分屏里到处找光标。
2.3 让主力 Agent 充当主控调度
herdr 提供了官方 Skill。只要让你的主力 Agent 读入 herdr --skill,它就能通过命令自己切分屏幕和管理会话。
例如输入这样一条 Prompt,让它自己切出一套多窗口布局:
read
herdr --skillthen split 10 other panels that make my computer look like some scifi hacker terminal from the movies
它会自动完成分屏:
读 herdr --skill 之后自己开格子更实用的场景是多模型交叉 Code Review。比如给主力 Agent 下发任务:
“请针对当前分支开 3 个独立 Tab,分别启动 Codex、Grok Build 和 Antigravity CLI 做交叉代码审计;把大家的意见汇总成一份综合方案呈报给我,待我确认后再关闭这 3 个临时 Review 窗口。”
主控会自动开 Tab、拉起不同模型、分发代码差异并等待它们跑完,最后汇总意见给你确认。如果需要多个 Agent 并行修改同一个项目,吩咐它开 git worktree 或独立分支即可,现在的 Agent 基本都能自行做好环境隔离。
2.4 移动端与看板:Tailscale + Mosh + herdr-paddock
当并发管理的 Agent 较多、或者人离开办公桌后,侧栏状态点虽然看得到,但具体的报错和提问内容依然需要切进分屏查看。
在手机上通过 SSH 连入开发机时(iOS 推荐 Moshi、Blink,Android 推荐 Termux),竖屏通常只有约 40 列宽,桌面端 80 列以上的布局容易挤压。此时可以先按 Ctrl+b b 临时收起侧边栏。
我的移动端配置
- Tailscale:异地组网,无需公网 IP 和端口转发;
- Mosh:在移动端代替传统 SSH,进出地铁或切换 Wi-Fi 断网后会自动重连,几乎无感;
- 终端客户端:iOS 主力用 Moshi,Android 推荐 Termux。
herdr-paddock:竖屏卡片流看板
为了在手机和副屏上更直观地查看各 Agent 的状态,我写了一个轻量辅助插件 herdr-paddock。它读取 herdr 的状态,把各个 Agent 的最新输出排版成竖屏卡片流:
- 桌面副屏:常驻在副屏角落,不用频繁切窗,余光一扫就能看清所有 Agent 当前在干什么;
- 手机通勤:配合 Tailscale + Mosh 连入,卡在等待审批的任务会自动置顶,通勤路上单手按
y即可放行。
(下面两张为仓库 neyham/herdr-paddock 的卡片流演示:blocked 任务自动置顶,点进单卡可直接交互)
paddock 卡片墙:blocked 置顶,一眼看完全场手机竖屏上的 paddock 卡片流3. 和现有工具怎么搭配?
herdr 和常用工具的结合方式:
1. Ghostty / 原生终端
直接在 Ghostty 里运行 herdr 即可——Ghostty 的渲染效果不受影响,同时获得了后台会话保活和状态看板。
2. tmux / Zellij
快捷键完全兼容(默认都是 Ctrl+b),习惯 tmux 的人基本零迁移成本。在并发跑 Agent 时,多出来的状态栏和单键跳转会更省心。
3. 官方桌面客户端(如 Codex App 等)
单模型的日常对话与本地 Diff 预览用官方 App 很直观;当需要多个不同厂商模型(如 Claude + Codex + Grok)协同、或者把任务挂在无图形界面的 Linux 服务器上时,走终端更灵活。
4. 远程桌面(向日葵 / ToDesk / UU)
图形化交互留给远程桌面;如果只是跟进终端里 Agent 的写代码进度,走 Tailscale + Mosh + herdr 字符流,在手机弱网环境下更轻快省电。
4. 避坑与使用边界
- 会话持久化的范围:
detach保证的是关掉终端窗口或 SSH 断线时后台 Server 与任务持续运行。如果遇到断电或系统重启,普通进程依然会被操作系统回收。只有安装了官方herdr integration的受支持 Agent,在重启后才具备恢复会话上下文的能力,跑了一半的普通命令并不会凭空复活。
5. 结语
用了这段时间,herdr 真正帮我解决的核心问题,其实就是在终端里同时奔跑着成群的 Agent 时,帮开发者守住注意力。
清晰的状态侧栏、Ctrl+b g 的快速跳转,再加上可以让主力 Agent 调度多个模型协同——如果你也经常在多个终端分屏之间来回找光标、漏看确认框,在终端里敲下 herdr 试试,应该会顺手不少。