TouchAll技术博客

TouchAll技术博客

Herdr - 面向AI编程Agent的终端多路复用器

2026-10-01

官网地址: 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

一、核心特性

  1. 服务端/客户端架构(类似tmux) 后台常驻herdr-server,所有pane(终端面板)在服务端保持运行;客户端只是渲染层。关闭终端、SSH断开,Agent进程继续跑,随时可以reattach。支持多机器SSH接入,统一在同一个TUI里查看多台机器的Agent。

  2. Agent感知(最大区别于tmux) 侧边栏实时汇总所有Agent状态,自动向上聚合:一个Agent处于blocked,则对应的pane、tab、workspace都会标记为blocked,一眼定位需要人工介入的任务。

    • working:Agent正在执行任务

    • blocked:等待人工确认/输入(最关键状态,不用挨个切面板排查)

    • done:任务完成,尚未查看

    • idle:空闲、等待新指令

    • unknown:无法识别Agent状态

  3. 鼠标优先 + TUI 所有操作都支持鼠标点击(分割面板、切换、右键菜单),同时保留键盘快捷键,对不习惯纯键盘终端用户友好。

  4. Unix Socket + CLI API:Agent可以自己操控Herdr Agent能调用herdr命令/本地socket:新建面板、启动其他Agent、读取别的面板输出、等待另一个Agent状态变化。可以搭建自动多Agent流水线,不用手写大量胶水脚本。官方自带skill,让AI Agent学会调用herdr API。

  5. Workspace / Tab / Pane三层组织 工作区(项目隔离)→标签页→分割面板;支持git worktree感知,可以把不同Agent绑定到独立git分支,并行做重构、测试、审查互不污染。

  6. 开箱即用,静态单二进制,Linux/macOS支持

二、快捷键使用(默认前缀:Ctrl+b,和tmux一致)

使用方式:先按Ctrl+b松开,再按后续按键(前缀模式)

快捷键

功能

Ctrl+b ?

打开快捷键帮助面板

Ctrl+b c

新建标签页

Ctrl+b n / p

下一个/上一个标签页

Ctrl+b 1~9

直接跳转至1~9号标签

Ctrl+b v

向右垂直分割面板

Ctrl+b -

向下水平分割面板

Ctrl+b h/j/k/l

面板焦点左/下/上/右移动

Ctrl+b z

放大/还原当前面板

Ctrl+b Shift+n

新建Workspace工作区

Ctrl+b w

打开工作区选择菜单

Ctrl+b Shift+w

重命名工作区

Ctrl+b q

Detach脱离会话(服务端继续运行Agent)

Ctrl+b x

关闭当前pane

Ctrl+b [

进入复制模式(复制终端输出)

Ctrl+b b

侧边栏开关(Agent状态列表)

普通终端模式:按键直接发给当前聚焦面板;前缀模式:按键交给herdr处理;导航模式用来快速在Agent列表跳转。所有快捷键都可以在配置文件自定义。

三、怎么提效

  1. 并行跑多个AI Agent,单窗口统一监控 同时开Claude Code做重构、Aider写单元测试、Codex做代码审查。侧边栏直接看状态,不用手动切换一堆终端窗口,不用轮询每个面板看是否卡住等待确认。只需要关注blocked状态的Agent,其余自动跑。

  2. 断连不中断,随时恢复 SSH掉线、关闭本地终端、笔记本休眠,Agent持续在后台运行。重新attach即可继续查看输出。长耗时代码重构、大代码库扫描场景收益巨大。

  3. Agent自编排,实现自动化工作流 Agent A完成重构 → 通过herdr API触发Agent B跑测试;测试完成后启动Agent C做代码评审。Agent之间互相读取输出、等待状态,构建自动化流水线,不用写shell轮询脚本。

  4. 项目隔离 用Workspace隔离不同项目;搭配git worktree,每个Agent在独立分支工作,并行实验多个方案,不会互相覆盖代码。

  5. 远程机器统一管理 把多台服务器加入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状态,不是简单文本正则匹配:

  1. 进程树检测(第一层,基础) 对每个PTY伪终端,持续扫描前台进程树,识别是否是已知AI Agent程序(Claude Code、Aider等),拿到进程PID。

  2. 终端IO阻塞信号(第二层,核心) 检测PTY是否等待stdin输入:Agent弹出确认框、等待用户输入时,进程阻塞等待读终端输入 → 标记为blocked;进程持续消耗CPU、大量写stdout → working;进程正常退出 → done。

  3. 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代码智能体集群。