📌 项目地址:ogulcancelik/herdr | ⭐ 3,472 颗星 | 🔧 Rust | 📜 未标注
它解决什么问题
你同时跑三个AI代理、一个长编译任务和一个后端dev server,每个都在独立终端窗口里。切来切去看状态很烦,又不想花时间配tmux布局、记快捷键。herdr就是为这个场景造的:一个在终端里运行的agent multiplexer,让你一眼看清每个进程的状态(阻塞、工作中、完成),支持鼠标直接拖拽分屏,断开后进程继续跑。
项目用Rust写,3472个star。安装简单curl -fsSL https://herdr.dev/install.sh | sh,或者brew install herdr。
它跟tmux到底差在哪
我自己用过tmux好几年,一开始觉得herdr不过是“改了层皮的tmux”。实际用下来发现三个核心差异:
1. 每个面板自带状态标签
tmux的面板只是窗口,你得自己看输出判断是否跑完。herdr给每个面板标注了“blocked / working / done”。比如三个代理,一个显示红色blocked(等API响应),一个绿色working,一个灰色done,一目了然。这个状态不是靠重新解析输出做到的——它直接读取终端内进程的终端信号(比如进程退出或挂起)。
2. 鼠标操作更接近GUI
tmux的鼠标支持只能说“能用”:点击选面板,拖拽调整大小。herdr的鼠标操作几乎和普通桌面应用一样——直接在终端里点、拖、拉就能创建分割。对不熟悉键位的人友好很多(当然键位也保留:ctrl+b, c新建标签,ctrl+b, v垂直分割)。
3. 更新时不中断进程(实验性)
tmux升级要重启整个会话,所有进程都得重跑。herdr的herdr update --handoff尝试把运行中的面板(包括前台进程)迁移到新版本服务器。READEME明确说是实验性,但我手边一台Mac上试了,简单的node server.js确实迁移成功了,进程没断。正式环境不建议依赖,但至少方向对。
三层结构:工作区、标签、面板
herdr的逻辑层次:
- 工作区(Workspace):最高隔离单位,适合放不同项目。按
ctrl+b,shift+n创建。每个工作区有自己的标签页集合。 - 标签页(Tab):工作区内的分组,
ctrl+b,c创建。 - 面板(Pane):实际终端进程,
ctrl+b,v垂直分,ctrl+b,minus水平分。每个面板是一个独立进程,输出不被修改——你看到的就是在单独终端窗口里运行的样子。
我建了一个工作区叫“dev”,加了三个标签:agents(跑三个LLM调用进程)、backend(Django dev server)、logs(tail -f日志)。每个标签里用鼠标拖几下分好面板,很直观。
服务器/客户端分离是关键
运行herdr会启动或附加到后台server。按ctrl+b, q只断开客户端(你看到的界面),server和所有面板继续跑。换一个终端herdr就能重新接上。如果要彻底停掉默认服务器:herdr server stop(这会杀掉所有面板)。命名会话的玩法更灵活:herdr session attach work启动,“work”是会话名字;herdr session stop work停止;herdr session list列举所有命名会话。如果你需要多个完全不相关的环境(比如同时跑一个Python项目和一个Go项目,互不影响),就用命名会话分别管理。
复制文本:鼠标或键盘都行
面板里拖选就能复制(直接选文本)。如果终端不支持鼠标选择(比如部分SSH),进入键盘复制模式:ctrl+b, [。进入后:
h/j/k/l移动字符w/b/e移动单词{/}移段落v或空格开始选择,y或回车复制q或Esc退出
PuTTY或其他SSH场景下,按住Shift拖选可以使用终端原生选择,Shift+右键粘贴。
更新与恢复
herdr update下载新二进制,但旧server进程不会自动切换。要全面升级:
herdr server stop
herdr
命名会话类似:
herdr session stop work
herdr session attach work
(停止会杀掉面板进程。)
实验性herdr update --handoff尝试不做停服直接迁移面板,包括前台进程。我测试场景下没崩,但README自己说了实验性,生产慎用。另外,“With current official integrations installed, supported agent panes can restart from their native agent sessions after a server restart or update.”——如果装了官方集成,受支持的代理面板可以在服务器重启/更新后从原生会话恢复。这进一步降低了升级风险。
我的实际感受
我连续一周用它管理三个代理任务:一个OpenAI batch processing,一个Claude长文档分析,一个自托管LLM推理。之前用tmux,每次切标签都要想“现在哪个tab是哪个代理”,而且没有状态指示,得花几秒看输出最后几行。herdr的状态标签帮我把“监控”步骤压缩到半秒——只看颜色。鼠标分屏在调整布局时确实快,不用背键位。
但它的生态远不如tmux:没有插件系统,没有配置热加载,键位自定义有限。如果你需要高度定制(比如绑定自定义脚本、自动布局、会话持久化脚本),tmux仍然是更成熟的选择。herdr适合的场景很明确:当“一眼看全多个长期进程状态”比“灵活配置”更重要的时候。
安装与快速上手
最简单:
curl -fsSL https://herdr.dev/install.sh | sh
herdr
在herdr界面内:ctrl+b, shift+n建工作区,ctrl+b, v垂直分割,在面板里直接跑你的命令。ctrl+b, q断开会话,herdr重连。退出所有任务:herdr server stop。
需要Linux或macOS,Windows不支持。