今天在 GitHub Trending 上看到一个有意思的项目:herdr,它为 AI 编程助手重新设计了终端复用器,让你在一个终端里同时管理多个 Agent,并实时感知每个助手的状态。
一、项目概述
herdr 是一个终端工作区管理器,专为 AI 编程助手(如 Claude Code、Codex、Pi 等)设计。它的核心定位是「为 Agent 重新构建的 tmux」——在一个终端里运行所有编程助手,并一目了然地看到谁被阻塞、谁在工作、谁已完成。
核心特性:
- 每个 Agent 拥有真实的终端(非模拟),支持全屏 TUI 正确渲染
- 侧边栏实时聚合每个 Agent 状态:🔴 阻塞、🟡 工作中、🔵 已完成、🟢 空闲
- 工作区、标签页、窗格自由组织,支持鼠标原生操作
- 后台服务器保持会话持久化,断开后可从任何终端(甚至手机 SSH)重新连接
- 单一 ~10MB Rust 二进制文件,无 GUI、无 Electron、无账号、无遥测
- 本地 Socket API + CLI,支持 Agent 自主编排
二、技术原理
架构设计
herdr 采用 Client-Server 架构:
- Server:后台持久化服务,管理所有工作区、标签页和窗格,保持 Agent 会话存活
- Client:终端 UI 客户端,通过 Unix Socket 与 Server 通信,渲染 Ratatui TUI
// Cargo.toml 关键依赖
ratatui = { version = "0.30", features = ["unstable-rendered-line-info"] }
portable-pty = { path = "vendor/portable-pty" } // fork 版本,修复 PTY 兼容性
interprocess = "2.4.2" // Unix Socket 通信
tokio = { features = ["rt-multi-thread", "macros", "sync", "time"] }
Agent 状态检测
herdr 通过进程名匹配 + 终端输出启发式分析,零配置检测 Agent 状态:
| 检测维度 | 实现方式 |
|---|---|
| Idle/Done | 进程输出静默检测 |
| Working | 终端输出活跃度分析 |
| Blocked | 特定提示符/等待模式匹配 |
支持 Claude Code、Codex、Pi、Droid、Amp、OpenCode 等 15+ 主流 AI 编程助手。
VT 渲染引擎
herdr 内嵌了从 Ghostty 终端提取的 VT(Virtual Terminal)库,通过 Zig 编译为静态库链接:
// build.rs 中调用 Zig 构建 libghostty-vt
fn main() {
let mut command = Command::new("zig");
command
.arg("build")
.arg("-Demit-lib-vt")
.arg(format!("-Doptimize={optimize}"))
.arg(format!("-Dtarget={zig_target}"));
// ...
}
这确保了即使全屏 TUI 应用(如 vim、top)也能正确渲染。
三、安装与快速开始
环境要求
- macOS / Linux(Windows 预览版)
- 无额外依赖,单一二进制文件
安装步骤
# 官方安装脚本(推荐)
curl -fsSL https://herdr.dev/install.sh | sh
# 或使用 Homebrew
brew install herdr
# 或使用 mise
mise use -g herdr
# 或从 GitHub Releases 下载稳定二进制
最简运行示例
# 启动或连接后台服务器
herdr
# 在窗格中运行 AI 助手
claude # 或 codex、pi 等
# 快捷键操作
ctrl+b 然后 c # 新建标签页
ctrl+b 然后 v # 垂直分屏
ctrl+b 然后 - # 水平分屏
ctrl+b 然后 w # 切换工作区
ctrl+b 然后 q # 断开连接(Agent 继续运行)
四、使用方法与实战
场景一:同时运行多个编程助手
herdr # 启动 herdr
# 在窗格 1 运行 Claude Code 重构模块 A
ctrl+b 然后 v # 分屏
# 在窗格 2 运行 Codex 编写测试
ctrl+b 然后 v # 再分屏
# 在窗格 3 运行 Pi 做代码审查
# 侧边栏实时显示:
# 窗格 1: 🟡 工作中(Claude 正在重构)
# 窗格 2: 🔴 阻塞(等待用户输入)
# 窗格 3: 🔵 已完成(审查报告已输出)
场景二:远程开发
# 在 VPS 上运行 herdr server
ssh you@your-vps
herdr # server 在后台启动
# 本地终端作为 client 连接
herdr --remote ssh://you@your-vps
# 即使本地断网,VPS 上的 Agent 继续运行
# 重新连接后,所有窗格状态完整恢复
Agent 自主编排
herdr 提供 Socket API,Agent 可以自主创建窗格、分割屏幕、读取输出:
# 安装 Agent Skill(让 AI 助手能够控制 herdr)
npx skills add ogulcancelik/herdr --skill herdr -g
// Socket API 示例:创建新窗格
{
"action": "pane_create",
"workspace_id": "main",
"tab_id": "tab-1"
}
五、常见问题与解决方案
安装失败
问题:curl | sh 安装脚本执行失败。
解决方案:
# 检查架构支持
uname -m # 支持 x86_64 / aarch64
# 或从 GitHub Releases 手动下载
# https://github.com/ogulcancelik/herdr/releases
Agent 状态检测不准确
问题:某些 Agent 的状态显示不正确。
解决方案:
# 安装官方集成插件,提供更精确的语义状态
herdr integration install claude # Claude Code
herdr integration install codex # OpenAI Codex
herdr integration install pi # Pi.dev
# 集成插件支持原生会话恢复和精确状态报告
SSH 远程连接断连
问题:SSH 连接断开后,本地终端无法重新连接。
解决方案:
# 使用 --remote 参数,保持 server 端持久化
herdr --remote ssh://you@your-vps
# 配置 SSH keepalive
# ~/.ssh/config
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
###Windows 支持问题
问题:Windows 版本功能不完整。
解决方案:
- Windows 版本目前处于预览 Beta 阶段
- 建议通过 WSL2 使用 Linux 版本获得完整体验
- 或使用远程连接到 Linux/macOS 机器
六、总结
herdr 巧妙地填补了 tmux 与 AI 编程助手之间的空白。它不是简单的终端复用器,而是为 Agent 时代重新设计的开发环境基础设施:
- 原生 Agent 感知:侧边栏实时聚合状态,无需手动检查每个窗格
- 真实终端渲染:每个 Agent 获得真实 PTY,全屏 TUI 完美支持
- 持久化 + 远程:后台 Server 保持会话,SSH 断开不影响 Agent 运行
- 可编程:Socket API 让 Agent 能够自主管理工作区
如果你同时使用多个 AI 编程助手,或者希望让 Agent 在断开连接后继续工作,herdr 会是一个值得尝试的工具。它用 Rust 编写,性能优秀,单一二进制无依赖,开箱即用。