herdr:给 AI 编码 Agent 的终端多路复用器,让多个 Agent 同屏协作 | Github Daily

herdr:给 AI 编码 Agent 的终端多路复用器,让多个 Agent 同屏协作 | Github Daily

每日开源 081|herdr:给 AI 编码 Agent 的终端多路复用器,让多个 Agent 同屏协作

2026-07-02 · 早间篇 · GitHub Trending 今日 +611 Stars

**免责声明:**本工具依赖境外公开数据源(GitHub 等),部分平台在中国大陆需合规网络环境。

如果你最近同时开过Claude CodeCodexCursor AgentOpenCode,一定经历过这种场景:三四个代理各占一个终端窗口,有的正在跑测试、有的卡在确认 prompt、有的已经跑完但你不知道。切来切去,全凭记忆和运气。

今天要聊的herdr,就是专门为这种「多 Agent 并行」场景设计的终端工具。它把自己定位为agent multiplexer——不是 tmux 的替代品,而是 AI 编码时代的终端调度中心。

一、项目速览

**项目名:**herdr

**作者:**ogulcancelik

**定位:**终端原生的 AI 编码 Agent 多路复用器

**Stars:**约 9.5k - 10k(今日 GitHub Trending +611 Stars)

**语言:**Rust

**许可证:**AGPL-3.0-or-later / 商业双许可

**官网:**herdr.dev

**代码:**github.com/ogulcancelik/herdr

~10MB单二进制体积

**15+**内置 Agent 集成

4Agent 状态可视化

977GitHub 提交数

二、它能解决什么问题?

AI 编码 Agent 和人的工作模式不一样。人类操作终端是「输入一个命令、等结果、再输入下一个」;Agent 是「长时间运行、可能中途要确认、可能自己卡住、也可能 quietly 跑完」。传统终端多路复用器(如 tmux)擅长管理「人的会话」,但不理解「Agent 的语义状态」。

herdr 针对四个真实痛点做了专门设计:

痛点 1:多 Agent 状态不可见。tmux 能看到窗格,但不知道里面是 Agent 在工作、被阻塞还是已完成。herdr 把状态抽象为 blocked / working / done / idle 四色信号。

痛点 2:会话断开进度丢失。Agent 一次任务可能跑几十分钟,SSH 断了或终端关了容易丢进度。herdr 支持 detach/reattach,后台 server 保持 pane 进程继续运行。

痛点 3:Agent 之间协作靠手动复制。不同 Agent 的输出需要人工搬运。herdr 提供 Socket API + CLI,让 Agent 可以编程式读取其他 pane 输出、等待状态变化、发送输入。

痛点 4:GUI 管理器太重。很多 Agent 客户端是 Electron 桌面应用,离开终端、绑架工作流。herdr 跑在你现有终端里(iTerm2、Ghostty、Warp、原生 Terminal 均可),不替换终端。

三、核心亮点

1. 真实终端 + Agent 状态感知

herdr 的每个 pane 都是真实终端进程,不是被改写的 Agent 视图。Agent 输出的 ANSI 序列、光标移动、alternate screen、progress bar、diff 高亮都会被完整保留。同时,herdr 通过三种方式识别 Agent 状态:

  • 集成上报:Pi、OMP、Claude Code、Codex、Cursor、Kimi、OpenCode、Kilo、Hermes 等通过官方 integration 主动上报状态;

  • 屏幕检测 + session identity:对 Claude Code、Codex、Copilot CLI、Devin、Droid、Qoder 等基于底部 live buffer 和进程名识别;

  • 纯屏幕检测:对 Amp、Grok、Antigravity、Kiro 等通过前台进程和屏幕快照判断。

blocked 的判定故意收紧,只在底部缓冲区出现明确的确认、批准或提问 UI 时才标记。这种 evidence-based 的检测方式避免了误判。

2. workspace / tab / pane 三层组织

herdr 的容器层级比 tmux 多了一层项目维度:

  • workspace:项目级容器,建议一个 repo 或一个任务一个 workspace;

  • tab:workspace 内的视图分组,比如 agents、logs、server、review;

  • pane:真实终端进程,可拆分、可重命名、可被 CLI/API 读取。

侧边栏会按 workspace 汇总状态。只要某个 pane 里的 Agent 被阻塞,整个 workspace 就会标红,提醒你优先处理。这种设计把「切 pane」变成「按优先级处理 attention」。

3. 五种会话恢复路径

herdr 把持久化做了细粒度拆分,不同场景对应不同恢复能力:

live persistence:detach 后原始进程根本没停,是最强的恢复路径。

snapshot restore:server 重启后恢复 workspace、tab、pane、布局和 cwd,但不恢复普通进程。

pane screen history replay:server 重启后回放最近的终端内容,默认关闭(避免泄露敏感信息)。

native agent session restore:利用 integration 上报的 session reference,在 server 重启后自动执行claude --resumecodex resume等命令接回 Agent 会话。

live handoff:实验性功能,herdr update --handoff在替换 server 时尝试把活 pane 迁移到新 server。

4. Socket API + 插件系统:Agent 也能编排 Agent

herdr 不仅给人用,也暴露给 Agent 用。本地 Unix socket(默认~/.config/herdr/herdr.sock)支持 NDJSON 协议,覆盖 workspace、tab、pane、agent、事件订阅、集成管理等完整控制能力。CLI 是其封装:

# 读取另一个 pane 的最近输出herdr panereadw1:p2--sourcerecent--lines50# 等待某个 Agent 进入 done 状态herdrwaitagent-status w1:p1--statusdone--timeout60000# 等待输出匹配特定模式herdrwaitoutput w1:p3--match"server.*ready"--regex--timeout30000# 右侧分屏并运行测试herdr panesplitw1:p1--directionright --no-focus herdr pane run w1:p2"cargo test"

此外,herdr 还有插件市场,支持任意语言编写的插件,并提供黑名单机制。插件可以声明自己的动作、打开终端 UI 窗格,并通过环境变量注入HERDR_PLUGIN_IDHERDR_WORKSPACE_ID等上下文。

5. Rust 工程实现:轻量、跨平台、无依赖

herdr 是单二进制 Rust 实现,核心依赖栈分工清晰:

  • ratatui:TUI 渲染;

  • crossterm:跨平台终端事件和控制;

  • portable-pty:跨平台 PTY;

  • tokio:异步调度;

  • interprocess:本地 IPC;

  • serde / bincode:配置与协议序列化。

项目约 10MB 单二进制,Linux 和 macOS 稳定支持,Windows 处于 preview beta。作者强调的几条工程约束也值得关注:状态与 runtime 分离、渲染函数纯函数、无 god objects、平台差异代码隔离、检测与 UI 解耦。

四、实战场景展示

场景 1:多 Agent 并行开发

左侧 pane 跑 Claude Code 改业务逻辑,右侧 pane 跑 Codex 执行测试,下面 pane 跑 dev server 或日志 tail。Claude 改完等待批准时 pane 变 red,Codex 测试完成后 pane 变 blue,一眼就能看到下一步该点哪个窗格。

场景 2:远程服务器上长时间跑 Agent

在远程 Linux 服务器上启动 herdr,跑一个需要半小时的代码重构任务。临时要开会,直接ctrl+b q离开。会后从任意终端(包括手机 SSH)执行herdr重新 attach,任务继续。

场景 3:Agent 编排脚本

一个协调 Agent 调用 herdr CLI 启动多个子 Agent:先起 Claude 写后端 API,再起 Codex 写前端页面,然后herdr wait agent-status claude --status idle等后端完成,再herdr agent read claude读取结果传给下一步。多 Agent 协作不再靠手动复制粘贴。

场景 4:对比不同 Agent 的输出

同一个需求,左边 pane 跑 Claude Code,右边 pane 跑 Codex,下面 pane 跑 OpenCode。通过 herdr 的状态栏和输出读取,快速横向对比三种 Agent 的实现思路与质量差异。

五、上手指南

1. 安装

推荐用官方一键脚本(Linux/macOS):

curl-fsSLhttps://herdr.dev/install.sh|sh

如果已经用 Homebrew:

brewinstallherdr

或者用 mise、Nix:

mise use-gherdr nix run github:ogulcancelik/herdr

Windows 用户目前处于 preview beta:

powershell-ExecutionPolicyBypass-c"irm https://herdr.dev/install.ps1 | iex"

2. 启动与基本操作

在项目目录下直接运行:

herdr

默认前缀键是ctrl+b(和 tmux 一致),常用快捷键:

ctrl+b shift+n:新建 workspace

ctrl+b vctrl+b -:垂直/水平分屏

ctrl+b c:新建 tab

ctrl+b w:切换 workspace

ctrl+b q:detach client(Agent 继续运行)

ctrl+b ?:查看所有快捷键

herdr 是鼠标原生的,点击、拖拽、分屏都可以不用快捷键。

3. 安装 Agent 集成

以 Claude Code 和 Codex 为例:

herdr integrationinstallclaude herdr integrationinstallcodex herdr integration status

安装后,herdr 能更准确识别这些 Agent 的状态,并在 server 重启后支持原生 session 恢复。

4. 命名 session 隔离项目

如果要同时运行多个完全独立的项目会话,可以用命名 session:

herdr session list herdr session attach work herdr session attach side-project

5. 更新

官方安装器管理的版本:

herdr update

Homebrew/mise/Nix 用户通过各自包管理器更新。大版本更新可能需要先 stop 旧 server:

herdr server stop herdr

**小提示:**第一次试用建议先只装 1-2 个最常用的 Agent 集成,确认状态栏真的改变了你的切换顺序后,再考虑替代 tmux。如果你只偶尔跑一个 Agent,herdr 可能 overkill;但只要你同时跑多个 Agent,它就会显著降低注意力切换成本。

六、适合与不适合

✅ 适合:同时跑多个 coding agent、经常因切 pane 和盲扫状态浪费注意力的人;想保留终端工作流、不想被 GUI 改写输出的人;需要脚本化或 Agent 化编排 terminal tasks 的人。

❌ 不适合:长期只跑一个 Agent、几乎没有并行调度需求;根本不想留在终端里、希望一切都在 GUI 中完成;需要稳定 Windows 体验(当前为 preview beta)。

七、今日总结与互动

herdr 不是 tmux 的替代品,而是为 AI 编码 Agent 时代重新设计的一类终端工具。它的核心价值在于:把「同时管理多个 Agent」从人肉轮询变成状态驱动的注意力调度。真实终端 + 状态可视化 + detach 持久化 + Socket API 编排,这四件事组合在一起,让它成为目前终端里最完整的 Agent 调度中心。

如果你已经在日常用 Claude Code、Codex 或 Cursor Agent,不妨试试把 herdr 作为第一个打开的命令。它可能会改变你对「终端里该有什么」的想象。

今日互动

你同时开过几个 AI 编码 Agent?

你觉得终端工具还需要补充哪些 Agent 原生能力?

欢迎在评论区聊聊你的多 Agent 工作流。