事实核对:本文基于 herdr 官方文档(herdr.dev/docs,v0.8.2)与本机安装的 herdr 0.8.2 实测信息整理;仓库数据(star 数、开源协议、创建时间)核对自 GitHub herdrdev/herdr,核对日期:2026-09-05。文中界面图为示意绘制,非真实截图。
先说一个每天都在发生的场面
你现在大概是这样干活的:一个项目开一个 claude 或 codex,任务丢进去,切走,忙别的。等它跑完,回来验收、继续派活。
一个 agent 很爽。那三个呢?五个呢?
我见过最真实的混乱长这样:终端开了七八个标签页,谁在跑、谁卡住了、谁早就干完在等你看,全靠挨个点过去确认。跑在本地 GPU 服务器上的那个 agent 更是麻烦——关掉 SSH 它就死了,你只能让它在你离开时也一直挂着。几个项目并行时,我经常要做的其实是同一件事:找一个正在等我输入的 agent。
这就是 herdr 想解决的问题。它给自己的定位一句话就能说清——「the runtime your coding agents live on」,你的编码智能体赖以生存的运行时。
Herdr 是什么
Herdr 是一个面向 AI 编码 Agent 的终端工作区管理器,GitHub 上的 herdrdev/herdr,Apache-2.0 开源,截至 2026-09-05 已有 3.5 万+ star,首个提交在 2026 年 3 月,迭代非常快(我本机装的 0.8.2 已是稳定通道版本)。
你可以把它理解成三件事叠在一起:
- 一个更现代的 tmux:后台 server 持有真实终端进程,客户端只是「附着」上去渲染。你关掉终端、断开 SSH、甚至合上电脑,pane 里的进程照跑不误。
- 一个鼠标优先的终端 UI:pane、tab、工作区全部可以点选,分栏边框可以拖拽,右键有菜单,拖选文本直接复制——不需要先背一串快捷键。
- 一个 agent-aware 的「牧羊人」:它能识别 pane 里跑的是哪个编码 agent(claude、codex、pi、qwen-code……),并在侧边栏实时显示每个 agent 是
working(工作中)、blocked(等你处理)、done(干完没看)还是idle(待命中)。
最后一条是它和传统终端复用器的本质区别:tmux 管理的是「终端」,herdr 管理的是「智能体」。你不需要给每个 agent 开一个终端再自己盯梢——侧边栏替你盯。
五个概念看懂它
Herdr 的概念模型非常干净,从大到小五层:
| 层级 | 含义 | 说明 |
|---|---|---|
| Session 会话 | 后台常驻的 server 命名空间 | 默认 herdr 连默认会话;herdr session attach work 开独立命名空间 |
| Workspace 工作区 | 项目级容器 | 一个仓库 / 一个任务一个,侧边栏按它汇总状态 |
| Tab 标签页 | 工作区内的布局 | 用来分开「agents / logs / server」这类视图 |
| Pane 面板 | 一个真实终端 | 可向右、向下分裂;detach 后进程继续跑 |
| Agent 智能体 | pane 里被识别出的编码 agent | 有生命周期状态,名字随 pane 占用者走 |

一个容易绕晕的点是 pane 和 agent 的区别:pane 是「地」,agent 是「住进去的人」。地一直都在,人可能换——你在 pane 里退出 claude 换成 codex,herdr 会重新识别并更新状态。agent 的名字只跟随当前占用者,退出即清空。
侧边栏:把「谁在等我」变成一眼可见的信号
用 herdr 之后我感受最深的变化,是终端的信息结构变了。
以前我判断「哪个 agent 需要我」,靠的是记忆和轮询;现在靠侧边栏的状态点,五个状态含义非常明确:
- blocked:agent 在等你输入、批准或做决策——这是唯一需要你立刻行动的格子;
- working:正在跑,不用管它;
- done:活干完了但你还没看过,需要回去验收;
- idle:已就绪且已被你看过;
- unknown:识别不了,不证明完成。

注意它的状态是向上汇总的:pane 的状态会 roll up 到所在 tab 和 workspace。所以哪怕你在看项目 A,侧边栏也会告诉你项目 B 有个 codex 正卡在批准界面——多项目并行的「盲区」就这样被填上了。
它怎么认出 pane 里是谁、在干嘛?
这是 herdr 技术含量最高的地方,也是它和「给每个 agent 开个 tmux 窗口」最不一样的地方。识别有两条路径:
- 路径 A:屏幕识别(零配置,开箱即用)。herdr 先识别 pane 的前台进程,再读取终端底部 buffer 的实时快照,按该 agent 的 manifest 规则判断状态。为什么读底部而不是整个滚动区?因为 agent 的活动 UI(提问、进度、结果)永远在屏幕最下面几行,滚动历史不影响判断。claude、codex、qwen、copilot、cursor 等一大批 agent 都在这个支持表里。
- 路径 B:官方集成(lifecycle hooks)。装了集成后,agent 自己通过 hook 上报
idle / working / blocked,成为该 pane 的「状态权威」,画面识别就不再重复判断。目前提供完整生命周期上报的有 pi、omp、kimi-code、opencode、kilo、mastracode 等;而 claude / codex 等集成主要提供「原生会话恢复」,状态仍走屏幕识别。

几个值得一提的细节:
- blocked 的判定故意很严格:只有画面真的匹配到确认 / 授权 / 提问界面才算,宁可少报也不乱报——因为它知道 blocked 是唯一会打扰你的状态。
- 每个 pane 只有一个状态权威,避免两套信号打架。
- agent 被沙箱 / wrapper 包住导致识别不到时,可以用
HERDR_AGENT=claude这样的环境变量给提示。
上手:六十秒跑起来
安装就一条命令(Linux / macOS),装完在项目目录里直接运行:
curl -fsSL https://herdr.dev/install.sh | sh
cd ~/projects/web-app
herdr
首次运行会自动建一个工作区,之后你在 pane 里正常启动 agent 即可——claude、codex、pi 都行,herdr 会自动识别。我的第一步是装 pi 的集成,让状态上报走 hook 更精确:
herdr integration install pi
接着,忘掉快捷键,先用手点:点 pane / tab / 工作区切换焦点,拖分栏边框调整大小,右键出菜单(分屏、建 tab 都在里面),拖选文本直接复制、双击复制单个 token——这些都不需要 Ctrl+C。真要用键盘,前缀是 ctrl+b:
| 动作 | 按键 | 动作 | 按键 |
|---|---|---|---|
| 向右分屏 | prefix+v |
新工作区 | prefix+shift+n |
| 向下分屏 | prefix+- |
切换工作区 | prefix+w |
| 新标签页 | prefix+c |
复制模式 | prefix+[ |
| 上/下一个 tab | prefix+n / prefix+p |
脱离客户端 | prefix+q |
prefix+? 随时可看当前全部生效的绑定。键位、主题、侧边栏宽度全部可以在 ~/.config/herdr/config.toml 里改(macOS / Linux;herdr --default-config 打印完整默认配置),改完 herdr server reload-config 热加载。想纯键盘操作、不想要鼠标捕获,把 [ui] mouse_capture = false 打开即可。
脱离、重连、远程:agent 是你的,但不用绑在你的终端上
prefix+q 或直接关掉终端窗口,pane 和 agent 继续在后台跑。想回来干活?再敲一次 herdr。
- 本机:关终端 → 回来重连,一切还在。要真正全部停掉才用
herdr server stop。 - 远程:SSH 到有代码和凭据的机器上跑
herdr,跟 tmux 一样自然;也可以本机做瘦客户端herdr --remote <host>附着过去。 - 手机:装个 SSH 客户端连到机器再跑
herdr——TUI 会自适应窄屏,我在通勤路上也能看哪个 agent 卡住了。
我的用法是:agent 跑在远程 GPU 机器上,人在哪都能连回去看状态、批操作。以前这是 tmux + 一堆脚本才能凑合的事,现在一个命令搞定。
更进一步:工作台本身是可编程的
Herdr 不只是个 TUI。它把整个会话暴露成一条本地 CLI 和一个 socket API,返回结构化 JSON,所以脚本和别的 agent 也可以驱动它:
herdr workspace list # 列出工作区
herdr agent list # 每个 agent 的状态一览
herdr pane split --direction right # 程序化分屏
herdr agent wait <name> --until done # 等某个 agent 干完
工作区、tab、pane 都有稳定的公开 ID(形如 w1、w1:t1、w1:p1)。这意味着「多 agent 协作」可以被编排:让 agent A 干完活、写个脚本等 agent B 空闲、再把结果喂给它——这套原语已经超出「终端管理器」的范畴,更像是一个多 agent 的运行时。herdr 还内置了插件机制和社区 marketplace,生态刚起步但方向很明确:终端这个最古老的生产力界面,正在被重新做成 AI 时代的工作台底座。
什么时候值得用它
我不会说人人需要 herdr——单项目单 agent、习惯终端开满标签页也没觉得乱的人,它只是锦上添花。但如果你命中以下任何一条,它大概率能改变你的工作方式:
- 同时跑多个编码 agent(不同项目、不同模型),需要一眼看出谁在等你;
- agent 跑在远程 / 服务器上,关掉终端它就断,需要持久会话;
- 想让 agent 之间协作,需要程序化控制 pane、读输出、等状态;
- 受够了 tmux 的键位和学习成本,想要一个鼠标就能上手的复用器。
它和 tmux 不是替代关系,而是两条路线:tmux 把「终端进程」管得很好,herdr 把「编码智能体」管得很好。当你的工作重心从「敲命令」变成「指挥几个 AI 同时干活」时,你会发现你需要的不是一个更好的终端,而是一个能看见每个 agent 在想什么、卡在哪里的牧场。Herdr 想做的是这个牧场——而且它已经相当好用了。
如果你也装了 pi 或者其他编码 agent,装个 herdr 试试,先开两个项目各丢一个任务,然后去干点别的。回来的时候,侧边栏会告诉你一切。

评论(0)
暂无评论,来抢沙发~
请 登录 后发表评论