Herdr 手把手中文教程:让 10 个 AI Agent 在终端里协同工作
Herdr 是专门为管理一群 AI Agent 而造的第三代会话复用器,支持 21 种 Agent CLI,跨厂商统一管理。本文手把手演示四个核心功能:跨厂商统一管理、五种状态感知、按名字寻址协作、三层架构,以及五个真实应用场景,附 5 分钟上手指南。
Herdr 是专门为管理一群 AI Agent 而造的第三代会话复用器,支持 21 种 Agent CLI,跨厂商统一管理。本文手把手演示四个核心功能:跨厂商统一管理、五种状态感知、按名字寻址协作、三层架构,以及五个真实应用场景,附 5 分钟上手指南。
2026 年,让多个 AI Agent 协同工作的方案越来越多了。
Claude Code 加了子 Agent 和工作流;OpenAI Codex 有了后台任务;OpenClaw 在做开源的 Agent 运行时。每一种都在试图回答同一个问题:怎么同时管好一群 Agent?
我试过不少方案。最后留下来、每天实际在用的,是最不起眼的那一种——在终端 CLI 里,用一个专门给 Agent 造的会话复用器管着它们。
不是因为它最酷,是因为它解决了一个所有高级方案都不管的底层问题:
怎么在一个控制台里,统一管理不同厂商的 Agent?
每周都有新模型、新工具出来。Claude Code、Codex、Grok、Cursor、Gemini CLI、Kimi、Amp——每一种都是独立的 CLI,各自跑在各自的终端窗口里,彼此不知道对方的存在。你在 Claude Code 里干了一半想切到 Grok 看看效果,得自己记住哪个窗口是谁、在干什么、跑到哪了。
其他工具都把你锁在自己的生态里。 Claude Code 只管 Claude,Codex 只管 OpenAI,Cursor 只管 Cursor。你想同时用三种,就得自己当调度员。
Herdr 不管你用哪家的 Agent。它支持 21 种 Agent CLI——你在同一个会话终端里开 10 个窗口,3 个跑 Claude Code,2 个跑 Grok,2 个跑 Codex,3 个跑 Gemini,Herdr 全部认得出来,统一给你标状态、按名字寻址、一条命令派活。
这才是它最大的价值:一个与厂商无关的统一管理层。
这个工具叫 Herdr。
先说你不用 Herdr 的话,面对的是什么局面。
问题一:每个厂商锁在自己的世界里。 Claude Code 只认 Claude,Codex 只认 OpenAI,Cursor 只认 Cursor。你同时用三种——没有任何一个工具能帮你统一看它们的状态。你就是那个调度员,手动切窗口、手动记谁在干什么。
问题二:Agent 之间无法协作。 你让 Claude Code 写了一段代码,想让 Grok 来 review——没有任何通道让它们直接通信。你得自己当中转站:从 A 窗口复制结果,切到 B 窗口粘贴,告诉 B 上下文是什么。Agent 越多,你越像一个人肉消息队列。
问题三:进程和窗口绑死。 关窗口、合盖、断网,Agent 进程就死了。操作系统的规矩——终端关闭时内核会向所有子进程发挂断信号(SIGHUP),绝大多数程序收到就直接退出。老办法 nohup 能挡住信号,但你再也看不到那个进程的屏幕了——对一个随时需要你点「批准」的 Agent 来说,看不到等于没了。
这三个问题加在一起,就是为什么你明明有很多 Agent 工具可用,实际效率却提不上去。不是 Agent 不够好,是管 Agent 的方式还停留在手工阶段。
Herdr 是一个会话复用器(terminal multiplexer)——在你的终端和 Agent 之间插一层常驻的服务端。所有 Agent 跑在服务端下面,你的终端只是连上去的客户端。关窗口只是「客户端断开」,服务端和 Agent 都不受影响。
但 Herdr 不只是让进程不死。它是第三代会话复用器,专门为管理一群 AI Agent 而造:

| tmux(2007) | Zellij(2021) | Herdr(2026) | |
|---|---|---|---|
| 首要目标 | 远程会话不因断线而死 | 把默认值做对 | 让一群 AI Agent 有人看着 |
| 知道窗口里跑的是什么吗 | 不知道,都是字符流 | 不知道 | 认得出 20 多种 Agent CLI |
| 状态信息 | 无 | 无 | 五种状态,侧栏直接标 |
| 按名字寻址 | 只能按编号 | 同左 | 按名字发消息、查状态 |
Herdr 的名字来自 herder(放牧的人)——你养一群 Agent,它替你看着。
官方数据(2026-08-15 核对):当前版本 v0.8.0,GitHub Stars 29K+,Apache-2.0 开源免费。
装它一行命令:
brew install herdr
Herdr 认得出 21 种 Agent CLI:Claude Code、Codex、Grok、Cursor、Gemini CLI、Kimi、Kiro、Amp、Cline、Copilot 等等。你在同一个会话终端里混编不同厂商的 Agent,Herdr 全部认得出来——知道每个窗口跑的是谁家的什么工具。
这解决了前面说的第一个问题:再也不用自己当调度员了。 不管你用几种 Agent、开几个窗口,Herdr 统一给你管。
tmux 管十个窗口,你得一个个切过去看谁在忙、谁卡住了。Herdr 直接在侧栏标出来:

| 状态 | 含义 | 你该做什么 |
|---|---|---|
idle |
空闲 | 派新任务 |
working |
正在干活 | 别打扰 |
blocked |
在等你批准 | 立刻处理 |
done |
跑完了 | 收结果 |
unknown |
认不出来 | 去看看 |
原理比你想的朴素:它读窗口里的屏幕内容,按规则匹配。 比如屏幕上同时出现「Enter to select」和「Esc to cancel」,就判定这个 Agent 在等你批准。
一眼扫过去就知道十个窗口里哪三个需要你——最贵的不是切窗口的时间,是那些「在等你批准但你不知道」的窗口白等的半小时。
给每个窗口起名字,之后所有操作按名字来:
herdr agent list # 看全部 Agent 的名字和状态
herdr agent send writer "跑一遍测试" # 给名叫 writer 的 Agent 发指令
herdr agent wait scout # 等 scout 空下来再往下走
这不只是方便你操作——它打通了 Agent 之间的通信通道。 你可以写一个脚本让 writer 写完代码后自动通知 reviewer 来审查,reviewer 审完自动通知 deployer 去部署。Agent 之间不再需要你当中转站。
不用记编号,不用一个个切过去找。十个窗口、二十个窗口都一样。
Herdr 的组织结构是三层,搞清楚了后面所有配置都不会拧巴:
Session(会话) ← 服务端进程,一直在跑,只要 1 个
└── Workspace(工作区) ← 按项目分组,建 2 个
└── Tab(标签) ← 一个标签一个 Agent,每组 3-8 个
一个标签只跑一个 Agent。 状态检测靠读屏幕,两个 Agent 挤一屏,检测规则就废了。
两个工作区之间按 Ctrl-B Space 来回切,一个键。这是双工作区设计的核心收益。
我的日常编制是 10 个窗口:三个在主项目写代码,三个在副项目搞内容,两个跑调研采集数据,两个待命随时接活。
以前没有状态感知的时候,我的工作方式是手动巡逻:切到 1 号看一眼——还在跑,切到 2 号——在等批准但我不知道已经等了 20 分钟,切到 3 号——报错停了也没人告诉我。十个切一圈两三分钟,切完前面的状态又变了。
最贵的不是切的时间。是那些「在等你批准但你不知道」的窗口。 一个 Agent 卡在批准提示上干等半小时,这半小时就是纯浪费。十个窗口里有三个这样,整体产出直接砍掉三成。
现在打开 Herdr,侧栏一眼:两个 working(别打扰)、一个 blocked(马上处理)、三个 idle(可以派新活)、四个 done(收结果)。30 秒替代了 3 分钟的巡逻,而且不会漏。
晚上 11 点,你给三个 Agent 各派了一个任务就去睡了。早上起来通勤路上,打开手机连进 Herdr,侧栏上两个 blocked:
点两下批准,放回口袋。到公司的时候,两个任务已经跑完了。
如果没有手机远程,这两个 Agent 会从昨晚 11 点一直等到你今早 9 点坐下来——等了 10 个小时,干了 0 个小时。
午饭时间看一眼,三个都跑完了。再派两个新任务——一个跑 SEO 扫描,一个整理昨天的采集数据。吃完饭回来,结果已经在那儿等你了。
我有三台机器:一台笔记本日常用,一台 Mac Mini 跑长任务,一台服务器跑 24 小时的采集。三台共享同一份编队配置(一个 YAML 文件),各机按自己的 hostname 读自己那段。
在笔记本上一条命令,任务跑到服务器的窗口里:
herd send --host server scout "抓取这个网站的全部文章"
服务器上的 scout 窗口收到指令开始跑。你的笔记本可以合盖了——任务不在你这台机器上。
新加一台机器,往配置里加一段,跑一条 herd init --host newmachine 就完成。不用 SSH 上去手动建窗口。

这是 Herdr 最强大的用法。
你可以指定一个 Agent 当「调度中心」——给它一份角色卡和路由表,它的工作就是管其他 Agent:
你只负责告诉调度中心「要什么」,它负责安排谁来做、怎么做、什么时候收。
实测 12 条小任务:手工挨个发送加等待,381 秒。换成调度中心的事件驱动模式——上一个完了立刻派下一个,40 秒。差不多十倍的效率差。
把窗口编排写成脚本,重启、崩溃、手滑关错窗口,一条命令恢复全部:
herd init # 按编队配置重建,缺什么补什么,已有的不动
跑一次和跑十次结果一样——已经在跑的窗口不碰,缺的补上,多出来的报出来。
我的 10 个窗口配好之后,机器重启、macOS 更新、意外断电,跑一条 herd init,三分钟全部恢复。不用记哪个窗口在哪个目录、跑哪个 Agent、叫什么名字——全部写在配置里,由脚本负责。
三条边界想清楚,你对它的期待就落在正确的位置:
它保证的是连续性,不是正确性,也不是持久性。
不装任何额外的东西,就用 Herdr 本身,体验一次「关了再接回来」。
第一步:安装
brew install herdr # macOS
# 或者
curl -fsSL https://herdr.dev/install.sh | sh # macOS / Linux
第二步:进入
herdr
第一次运行会自动拉起服务端。你现在在一个 Herdr 会话里。
第三步:跑一个 Agent
在 Herdr 里面正常启动你的 Agent(Claude Code、Codex、Grok,用哪个都行):
claude # 或 codex,或 grok
随便给它一个小任务,让它跑起来。
第四步:分离
按 Ctrl-B,松开,按 q。你回到了普通命令行。Agent 还在后台跑着。
确认一下:
herdr session list # 应该看到 default,状态 running
herdr agent list # 应该看到你的 Agent
第五步:接回来
herdr
你的 Agent 还在原来的位置,刚才干的活一点没丢。
这就是全部。 从「关窗口 = 从头再来」到「关窗口 = 暂时不看」,就这五步。
这里有一个关键操作要记住:分离和退出不是一回事。 Ctrl-B q 是分离——取景器拿开,摄像机照拍。如果你直接输入 exit 退出 Agent 进程,那上下文就真没了。

上面只是入门。要真正搭起一套跨厂商的 Agent 协作系统,我把这一年踩的所有坑写成了 6 万字、15 章的完整最佳实践,覆盖从安装到多机协同的全链路:
打地基(1-4 章)
排编制(5-7 章)
跑起来(8-13 章)
实战收尾(14-15 章)
每章结尾都附了一段 Agent 提示词——粘给你的 Agent,它替你读环境、执行命令、验证结果,替你把整套系统搭起来。
这份完整最佳实践是翔宇工作流 AI 编程实操课的会员专属内容,加入会员即可拿到全部 15 章和提示词。
每周精选 AI 编程与自动化实战内容,直达你的邮箱