Herdr - 面向AI编程Agent的终端多路复用器
编辑官网地址: herdr.dev
项目仓库地址: herdr - Github
Herdr 是Rust编写、面向AI编程Agent的终端多路复用器,被称为AI时代的tmux。它保留tmux会话持久能力,但原生支持识别、监控、编排多个AI代码Agent(Claude Code、Aider、Codex等),支持Agent自己调用API去管理其他Agent,实现多Agent自动协作。
Pasted image 20260930235631.png
一、核心特性
服务端/客户端架构(类似tmux) 后台常驻herdr-server,所有pane(终端面板)在服务端保持运行;客户端只是渲染层。关闭终端、SSH断开,Agent进程继续跑,随时可以reattach。支持多机器SSH接入,统一在同一个TUI里查看多台机器的Agent。
Agent感知(最大区别于tmux) 侧边栏实时汇总所有Agent状态,自动向上聚合:一个Agent处于blocked,则对应的pane、tab、workspace都会标记为blocked,一眼定位需要人工介入的任务。
working:Agent正在执行任务blocked:等待人工确认/输入(最关键状态,不用挨个切面板排查)done:任务完成,尚未查看idle:空闲、等待新指令unknown:无法识别Agent状态
鼠标优先 + TUI 所有操作都支持鼠标点击(分割面板、切换、右键菜单),同时保留键盘快捷键,对不习惯纯键盘终端用户友好。
Unix Socket + CLI API:Agent可以自己操控Herdr Agent能调用herdr命令/本地socket:新建面板、启动其他Agent、读取别的面板输出、等待另一个Agent状态变化。可以搭建自动多Agent流水线,不用手写大量胶水脚本。官方自带skill,让AI Agent学会调用herdr API。
Workspace / Tab / Pane三层组织 工作区(项目隔离)→标签页→分割面板;支持git worktree感知,可以把不同Agent绑定到独立git分支,并行做重构、测试、审查互不污染。
开箱即用,静态单二进制,Linux/macOS支持
二、快捷键使用(默认前缀:Ctrl+b,和tmux一致)
使用方式:先按
Ctrl+b松开,再按后续按键(前缀模式)
普通终端模式:按键直接发给当前聚焦面板;前缀模式:按键交给herdr处理;导航模式用来快速在Agent列表跳转。所有快捷键都可以在配置文件自定义。
三、怎么提效
并行跑多个AI Agent,单窗口统一监控 同时开Claude Code做重构、Aider写单元测试、Codex做代码审查。侧边栏直接看状态,不用手动切换一堆终端窗口,不用轮询每个面板看是否卡住等待确认。只需要关注blocked状态的Agent,其余自动跑。
断连不中断,随时恢复 SSH掉线、关闭本地终端、笔记本休眠,Agent持续在后台运行。重新attach即可继续查看输出。长耗时代码重构、大代码库扫描场景收益巨大。
Agent自编排,实现自动化工作流 Agent A完成重构 → 通过herdr API触发Agent B跑测试;测试完成后启动Agent C做代码评审。Agent之间互相读取输出、等待状态,构建自动化流水线,不用写shell轮询脚本。
项目隔离 用Workspace隔离不同项目;搭配git worktree,每个Agent在独立分支工作,并行实验多个方案,不会互相覆盖代码。
远程机器统一管理 把多台服务器加入herdr,同一个TUI界面查看所有机器上的Agent集群,不用多开SSH窗口。
四、最适合场景
✅ 推荐场景
并行跑多个CLI代码Agent(Claude Code、Aider、Codex、Pi等)做大型代码重构、迁移、审计
长耗时AI任务,需要随时断开重连
多Agent协作流水线:重构→测试→代码审查
多服务器分布式Agent集群统一监控
同时对比多个Agent对同一个需求的输出结果(fanout命令批量下发相同prompt给多个Agent)
❌ 不太适合
Windows原生(暂无Windows支持,只能WSL)
纯GUI大模型聊天(面向终端Agent,不是网页对话)
只跑单一Agent,没有并行编排需求(tmux足够)
五、实现原理、开发语言、如何跟踪多个Agent状态
语言与技术栈
语言:Rust,静态单二进制;TUI界面使用Ratatui + crossterm;异步运行时Tokio。
架构:客户端/服务端分离
herdr server:后台常驻服务,负责创建所有伪终端PTY,托管所有pane进程,维护所有Agent状态,对外暴露Unix Socket和CLI接口。herdr attach:TUI客户端,只负责渲染界面、接收键盘鼠标输入,转发输入到服务端对应的PTY。客户端退出,服务端和PTY进程不受影响。
Agent状态跟踪原理(核心)
Herdr通过三层信号融合识别并推断每个Pane内Agent状态,不是简单文本正则匹配:
进程树检测(第一层,基础) 对每个PTY伪终端,持续扫描前台进程树,识别是否是已知AI Agent程序(Claude Code、Aider等),拿到进程PID。
终端IO阻塞信号(第二层,核心) 检测PTY是否等待stdin输入:Agent弹出确认框、等待用户输入时,进程阻塞等待读终端输入 → 标记为
blocked;进程持续消耗CPU、大量写stdout →working;进程正常退出 →done。Agent原生集成上报(第三层,最精准) 支持Agent主动调用herdr API上报自身状态。Agent内部可以直接通知herdr:任务开始/等待审批/完成,这是最可靠的状态源。
状态向上聚合:每个Agent状态向上冒泡到Pane、Tab、Workspace。侧边栏做聚合视图,快速定位所有blocked任务。
进程/会话管理
每个Pane对应独立PTY伪终端,和tmux底层类似,但在PTY外层增加Agent进程监控层。
CLI和Unix Socket是同一套API:人可以通过TUI/CLI操作;Agent进程也可以调用这套API,读写Pane输出、创建新Pane、等待别的Agent状态变更,实现Agent编排。
六、简单对比:Herdr vs tmux
tmux:通用终端复用器,没有Agent感知能力,只能看原始输出,无法识别Agent是否在等待确认。多Agent场景需要人工逐个面板查看。
Herdr:基于tmux式PTY多路复用思想,增加Agent状态感知层 + Agent可编程API,专门面向AI代码智能体集群。
- 0
- 0
-
分享