Herdr:多 Agent 时代的终端工作台——tmux 之后,谁来「看着」你的 AI 编码智能体

Herdr:多 Agent 时代的终端工作台——tmux 之后,谁来「看着」你的 AI 编码智能体

Author: zhiqiu16 | Create: 2026-09-05 14:19:27 | Update: 2026-09-05 14:19:27 | 分类:智能体与 Harness

herdr多Agent终端工作台AI编程

事实核对:本文基于 herdr 官方文档(herdr.dev/docs,v0.8.2)与本机安装的 herdr 0.8.2 实测信息整理;仓库数据(star 数、开源协议、创建时间)核对自 GitHub herdrdev/herdr,核对日期:2026-09-05。文中界面图为示意绘制,非真实截图。

先说一个每天都在发生的场面

你现在大概是这样干活的:一个项目开一个 claudecodex,任务丢进去,切走,忙别的。等它跑完,回来验收、继续派活。

一个 agent 很爽。那三个呢?五个呢?

我见过最真实的混乱长这样:终端开了七八个标签页,谁在跑、谁卡住了、谁早就干完在等你看,全靠挨个点过去确认。跑在本地 GPU 服务器上的那个 agent 更是麻烦——关掉 SSH 它就死了,你只能让它在你离开时也一直挂着。几个项目并行时,我经常要做的其实是同一件事:找一个正在等我输入的 agent

这就是 herdr 想解决的问题。它给自己的定位一句话就能说清——「the runtime your coding agents live on」,你的编码智能体赖以生存的运行时

Herdr 是什么

Herdr 是一个面向 AI 编码 Agent 的终端工作区管理器,GitHub 上的 herdrdev/herdr,Apache-2.0 开源,截至 2026-09-05 已有 3.5 万+ star,首个提交在 2026 年 3 月,迭代非常快(我本机装的 0.8.2 已是稳定通道版本)。

你可以把它理解成三件事叠在一起:

  1. 一个更现代的 tmux:后台 server 持有真实终端进程,客户端只是「附着」上去渲染。你关掉终端、断开 SSH、甚至合上电脑,pane 里的进程照跑不误。
  2. 一个鼠标优先的终端 UI:pane、tab、工作区全部可以点选,分栏边框可以拖拽,右键有菜单,拖选文本直接复制——不需要先背一串快捷键。
  3. 一个 agent-aware 的「牧羊人」:它能识别 pane 里跑的是哪个编码 agent(claude、codex、pi、qwen-code……),并在侧边栏实时显示每个 agent 是 working(工作中)、blocked(等你处理)、done(干完没看)还是 idle(待命中)。

最后一条是它和传统终端复用器的本质区别:tmux 管理的是「终端」,herdr 管理的是「智能体」。你不需要给每个 agent 开一个终端再自己盯梢——侧边栏替你盯。

五个概念看懂它

Herdr 的概念模型非常干净,从大到小五层:

层级 含义 说明
Session 会话 后台常驻的 server 命名空间 默认 herdr 连默认会话;herdr session attach work 开独立命名空间
Workspace 工作区 项目级容器 一个仓库 / 一个任务一个,侧边栏按它汇总状态
Tab 标签页 工作区内的布局 用来分开「agents / logs / server」这类视图
Pane 面板 一个真实终端 可向右、向下分裂;detach 后进程继续跑
Agent 智能体 pane 里被识别出的编码 agent 有生命周期状态,名字随 pane 占用者走

herdr 概念分层与侧边栏状态汇总

一个容易绕晕的点是 pane 和 agent 的区别:pane 是「地」,agent 是「住进去的人」。地一直都在,人可能换——你在 pane 里退出 claude 换成 codex,herdr 会重新识别并更新状态。agent 的名字只跟随当前占用者,退出即清空。

侧边栏:把「谁在等我」变成一眼可见的信号

用 herdr 之后我感受最深的变化,是终端的信息结构变了。

以前我判断「哪个 agent 需要我」,靠的是记忆和轮询;现在靠侧边栏的状态点,五个状态含义非常明确:

  • blocked:agent 在等你输入、批准或做决策——这是唯一需要你立刻行动的格子
  • working:正在跑,不用管它;
  • done:活干完了但你还没看过,需要回去验收;
  • idle:已就绪且已被你看过;
  • unknown:识别不了,不证明完成。

herdr 界面示意:多工作区多 agent,侧边栏摊开每个状态

注意它的状态是向上汇总的:pane 的状态会 roll up 到所在 tab 和 workspace。所以哪怕你在看项目 A,侧边栏也会告诉你项目 B 有个 codex 正卡在批准界面——多项目并行的「盲区」就这样被填上了。

它怎么认出 pane 里是谁、在干嘛?

这是 herdr 技术含量最高的地方,也是它和「给每个 agent 开个 tmux 窗口」最不一样的地方。识别有两条路径:

  • 路径 A:屏幕识别(零配置,开箱即用)。herdr 先识别 pane 的前台进程,再读取终端底部 buffer 的实时快照,按该 agent 的 manifest 规则判断状态。为什么读底部而不是整个滚动区?因为 agent 的活动 UI(提问、进度、结果)永远在屏幕最下面几行,滚动历史不影响判断。claude、codex、qwen、copilot、cursor 等一大批 agent 都在这个支持表里。
  • 路径 B:官方集成(lifecycle hooks)。装了集成后,agent 自己通过 hook 上报 idle / working / blocked,成为该 pane 的「状态权威」,画面识别就不再重复判断。目前提供完整生命周期上报的有 pi、omp、kimi-code、opencode、kilo、mastracode 等;而 claude / codex 等集成主要提供「原生会话恢复」,状态仍走屏幕识别。

agent 状态识别的两条路径

几个值得一提的细节:

  • blocked 的判定故意很严格:只有画面真的匹配到确认 / 授权 / 提问界面才算,宁可少报也不乱报——因为它知道 blocked 是唯一会打扰你的状态。
  • 每个 pane 只有一个状态权威,避免两套信号打架。
  • agent 被沙箱 / wrapper 包住导致识别不到时,可以用 HERDR_AGENT=claude 这样的环境变量给提示。

上手:六十秒跑起来

安装就一条命令(Linux / macOS),装完在项目目录里直接运行:

curl -fsSL https://herdr.dev/install.sh | sh
cd ~/projects/web-app
herdr

首次运行会自动建一个工作区,之后你在 pane 里正常启动 agent 即可——claudecodexpi 都行,herdr 会自动识别。我的第一步是装 pi 的集成,让状态上报走 hook 更精确:

herdr integration install pi

接着,忘掉快捷键,先用手点:点 pane / tab / 工作区切换焦点,拖分栏边框调整大小,右键出菜单(分屏、建 tab 都在里面),拖选文本直接复制、双击复制单个 token——这些都不需要 Ctrl+C。真要用键盘,前缀是 ctrl+b

动作 按键 动作 按键
向右分屏 prefix+v 新工作区 prefix+shift+n
向下分屏 prefix+- 切换工作区 prefix+w
新标签页 prefix+c 复制模式 prefix+[
上/下一个 tab prefix+n / prefix+p 脱离客户端 prefix+q

prefix+? 随时可看当前全部生效的绑定。键位、主题、侧边栏宽度全部可以在 ~/.config/herdr/config.toml 里改(macOS / Linux;herdr --default-config 打印完整默认配置),改完 herdr server reload-config 热加载。想纯键盘操作、不想要鼠标捕获,把 [ui] mouse_capture = false 打开即可。

脱离、重连、远程:agent 是你的,但不用绑在你的终端上

prefix+q 或直接关掉终端窗口,pane 和 agent 继续在后台跑。想回来干活?再敲一次 herdr

  • 本机:关终端 → 回来重连,一切还在。要真正全部停掉才用 herdr server stop
  • 远程:SSH 到有代码和凭据的机器上跑 herdr,跟 tmux 一样自然;也可以本机做瘦客户端 herdr --remote <host> 附着过去。
  • 手机:装个 SSH 客户端连到机器再跑 herdr——TUI 会自适应窄屏,我在通勤路上也能看哪个 agent 卡住了。

我的用法是:agent 跑在远程 GPU 机器上,人在哪都能连回去看状态、批操作。以前这是 tmux + 一堆脚本才能凑合的事,现在一个命令搞定。

更进一步:工作台本身是可编程的

Herdr 不只是个 TUI。它把整个会话暴露成一条本地 CLI 和一个 socket API,返回结构化 JSON,所以脚本和别的 agent 也可以驱动它

herdr workspace list                 # 列出工作区
herdr agent list                     # 每个 agent 的状态一览
herdr pane split --direction right   # 程序化分屏
herdr agent wait <name> --until done # 等某个 agent 干完

工作区、tab、pane 都有稳定的公开 ID(形如 w1w1:t1w1:p1)。这意味着「多 agent 协作」可以被编排:让 agent A 干完活、写个脚本等 agent B 空闲、再把结果喂给它——这套原语已经超出「终端管理器」的范畴,更像是一个多 agent 的运行时。herdr 还内置了插件机制和社区 marketplace,生态刚起步但方向很明确:终端这个最古老的生产力界面,正在被重新做成 AI 时代的工作台底座。

什么时候值得用它

我不会说人人需要 herdr——单项目单 agent、习惯终端开满标签页也没觉得乱的人,它只是锦上添花。但如果你命中以下任何一条,它大概率能改变你的工作方式:

  1. 同时跑多个编码 agent(不同项目、不同模型),需要一眼看出谁在等你;
  2. agent 跑在远程 / 服务器上,关掉终端它就断,需要持久会话;
  3. 想让 agent 之间协作,需要程序化控制 pane、读输出、等状态;
  4. 受够了 tmux 的键位和学习成本,想要一个鼠标就能上手的复用器

它和 tmux 不是替代关系,而是两条路线:tmux 把「终端进程」管得很好,herdr 把「编码智能体」管得很好。当你的工作重心从「敲命令」变成「指挥几个 AI 同时干活」时,你会发现你需要的不是一个更好的终端,而是一个能看见每个 agent 在想什么、卡在哪里的牧场。Herdr 想做的是这个牧场——而且它已经相当好用了。

如果你也装了 pi 或者其他编码 agent,装个 herdr 试试,先开两个项目各丢一个任务,然后去干点别的。回来的时候,侧边栏会告诉你一切。

评论(0)

暂无评论,来抢沙发~


关于本站 · RSS

浙ICP备2025156991号浙公网安备33010802013816号 浙公网安备33010802013816号 © 2026 智能体工场 - [从善如登] All rights reserved.