今天在 GitHub Trending 上看到一个有意思的项目:Herdr,一个专为 AI 编程 Agent 打造的终端多路复用器,让多个 Agent 的工作状态一目了然、互不干扰地并行运行。
一、项目概述
Herdr 的定位非常明确——解决 AI 编程助手在终端中"黑箱运行"的问题。传统方式下,你启动一个 Agent 后只能通过日志或结果输出来判断它的状态,而 Herdr 提供了真实的终端视图,每个 Agent 的执行进度一览无遗。
核心特性包括:
- 多路复用:支持同时管理多个 AI Agent,各 Agent 在独立Pane中运行,互不干扰
- 会话持久化:支持 detach/reattach,Agent 进程在后台持续运行,即使终端断开也不会中断
- 纯 Socket API:Agent 可以通过 Socket 接口直接控制 Herdr(创建Pane、读取输出、互相等待),无需复杂集成
- 键盘鼠标双支持:既支持 tmux 风格的快捷键(默认
Ctrl+B Q绑定),也支持鼠标点击、拖拽、分割 - 插件系统:支持自定义Pane和工作流,可通过 Marketplace 扩展功能
- 单二进制、无 Electron:用 Rust 编写,安装简单,跨平台支持 macOS、Windows、Linux
二、技术原理
2.1 核心架构
Herdr 的架构核心在于 Pane(窗格) 和 Session(会话) 两大概念。从 Cargo.toml 中可以看到,它依赖了以下关键技术栈:
# 终端渲染层
ratatui = { version = "0.30", features = ["unstable-rendered-line-info"] }
crossterm = "0.29"
# PTY 管理(伪终端)
portable-pty = "=0.9.0"
# 进程间通信
interprocess = "2.4.2"
# 异步运行时
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time"] }
其中 ratatui 负责 TUI 渲染(v0.30版本带 unstable-rendered-line-info),crossterm 处理终端输入,portable-pty 为每个 Agent 创建独立的伪终端。构建过程通过 Zig 编译 vendored 的 libghostty-vt 库来处理终端解析和渲染。
2.2 会话持久化原理
Herdr 的 detach/reattach 能力依赖于 interprocess 库实现命名管道(Named Pipe/FIFO)和 Unix Domain Socket,使得即便初始终端退出,Agent 进程仍可通过文件系统路径重新连接到会话。
// 核心会话管理思路(基于 Cargo.toml 推断)
tokio::sync::Mutex<pane_state> // 每个 Pane 的状态由 tokio 异步锁保护
interprocess::unnamed_pipe() // 创建 Agent 与 Herdr 主进程之间的通信管道
2.3 Socket API 的 Agent 间协作
Herdr 提供了纯 Socket API,Agent 之间可以实现复杂的协作模式:
- 子 Agent 派生:一个 Agent 可以通过 Socket 请求 Herdr 创建新的 Pane 并启动另一个 Agent
- 输出订阅:Agent 可以读取其他 Pane 的实时输出,实现跨 Agent 的状态感知
- 同步等待:Agent 可以等待另一个 Agent 完成某个阶段后再继续
这种设计让多 Agent 协作不再需要复杂的进程间通信机制,只需连接到 Herdr 的 Socket 即可。
三、安装与快速开始
3.1 环境要求
- macOS(x86_64 / Apple Silicon)、Linux(x86_64 / aarch64)、Windows(Beta)
- 支持 Homebrew 或 curl 脚本安装
3.2 安装步骤
方式一:官方安装脚本(推荐)
curl -fsSL https://herdr.dev/install.sh | sh
方式二:Homebrew
brew install herdr
方式三:mise(开发者常用)
mise use -g herdr
方式四:Windows(Beta)
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
3.3 快速启动
在需要工作的目录下启动 Herdr:
herdr
启动后会进入 TUI 界面,首次使用默认会创建一个Pane。按 Ctrl+B Q 退出(detach),下次运行 herdr 即可重新连接(reattach)。
详细入门指南请参考官方文档:herdr.dev/docs/quick-start
四、使用方法与实战
4.1 基础操作
Ctrl+B Q— 退出并保持会话(detach)herdr— 重新连接已有会话(reattach)- 鼠标点击Pane边框拖拽调整大小
Ctrl+B %/Ctrl+B "— 垂直/水平分割(tmux 风格)
4.2 AI Agent 集成
Herdr 的真正强大之处在于与 AI Agent 的深度集成。开发者只需让 Agent 连接到 Herdr 的 Socket API:
# Agent 通过 Socket 连接到 Herdr
# 官方提供了 herdr agent skill,详见:
# https://herdr.dev/docs/agent-skill/
4.3 插件使用
Herdr 支持通过插件扩展功能,浏览插件市场:herdr.dev/plugins
五、常见问题与解决方案
Q:安装脚本执行失败?
A:确保已安装 curl,在 macOS/Linux 上可直接使用。Windows 用户建议使用 PowerShell 方式安装。
Q:Herdr 无法连接到已有会话? A:检查是否在同一台机器上运行,且工作目录一致(Herdr 按目录管理会话)。
Q:多 Agent 之间如何通信? A:通过 Herdr 的 Socket API,Agent 之间可以互相创建Pane、读取输出和同步等待,无需额外部署消息队列。
Q:Rust 源码如何编译?
git clone https://github.com/herdrdev/herdr
cd herdr
cargo build --release
just test # 运行单元测试
just check # 格式化 + 测试 + 维护检查
六、总结
Herdr 填补了 AI 编程 Agent 在终端工具链上的空白。相比 tmux,它专为 Agent 场景设计,提供了原生的多 Agent 视图和 Socket API;相比简单的 nohup 后台运行,它保留了实时可见的交互能力。如果你经常运行多个 AI 编码助手,Herdr 是一个值得关注的新选择。