编码代理运行时基础设施,在独立终端中管理多个并发代理,保持状态与上下文生命周期。提供 CLI 和 JSON Socket API,支持本地/SSH/远程接入。
大多数关于 AI 编程工具的讨论,仍然把注意力集中在 Agent 本身:模型、IDE 扩展、benchmark、演示。
这些固然有用,但并不完整。一旦 Agent 足够强大,瓶颈就会转移到协调上。
如果一个 Agent 可以在我审查 diff 的同时调查一个 bug,那么三个 Agent 就可以同时调查三件不同的事情。真正的挑战在于:让它们持续运行、了解哪一个需要关注,以及避免终端崩溃或笔记本进入睡眠后丢失上下文。
这正是 Herdr 最吸引我的地方。
Herdr 并不是又一个编程 Agent,而是一个 Agent multiplexer。简而言之,它是“面向编程 Agent 的 tmux”,但这里真正重要的词是 multiplexer。它运行在实际工作发生的地方,让真正的终端 pane 持续存活,理解 Agent 的状态,并提供 CLI 和 JSON socket API。这让它更像是运行时基础设施,而不是一个应用。
Herdr 的主页明确说明了它的产品形态:它是一个二进制程序,而不是一个应用。它可以运行在任何带有终端的机器上,包括服务器、Mac Mini、VM 或笔记本电脑。每个 Agent 都运行在自己独立的真实终端中。即使终端客户端已经断开,Herdr server 仍会让 pane 保持运行;你可以在本地重新连接,也可以通过 SSH,甚至可以从手机尺寸的终端重新接入。
严肃的 Agent 工作很少只是聊天。它需要 repository、依赖、测试数据库、日志、本地服务、限定范围的凭证,有时还需要运行某条你不希望因为合上笔记本屏幕而被终止的命令。
多年前,tmux 就已经为人类的终端工作解决了这个问题。Herdr 正在把同样的基本思路应用到 Agent 工作中,并在此基础上补充 tmux 所不具备的 Agent 专属能力。
手机这个卖点听起来有些讨巧,直到你真正开始使用 Agent。我不想在手机上审查一次支付迁移,但我确实希望能在手机上回答一条被阻塞的“run the dry-run command?” prompt。
最朴素的 AI 编程循环仍然是串行的:提出要求、等待、阅读、调整方向、再次等待。这已经比所有事情都手动完成要好,但人类依然承担着调度器的角色。
Herdr 的价值在于,它为另一种工作循环提供了必要的组成部分:
这种性能提升并不是什么魔法,而是普通的并行执行,只不过减少了注意力的浪费。
如果三个任务彼此独立,却还要一个接一个执行,那就是人为制造延迟。人们之所以仍然这么做,是因为在普通终端里监管多个 Agent 非常麻烦。语义状态改变了这一点。如果 multiplexer 能告诉我“这个 Agent 被阻塞了”“这个 Agent 正在工作”“这个 Agent 已经完成”,我就可以把注意力用在真正重要的地方。
API 让这件事开始产生复利效应。Herdr 的 socket API 暴露了 pane、Agent、事件、等待机制和 session 快照。CLI 封装了常用操作,最近的版本还新增了一个面向在线 Agent 的 CLI facade,提供具名的 start、prompt、send-keys,以及由 server 管理的 wait 工作流。监督者不必再是一个盯着终端看的人类。
下面是我会采用的一套具体工作流。
首先,由一个人在 repo 中启动 Herdr session,然后创建三个 Agent pane:
herdr workspace create --cwd ~/work/billing --label billing
herdr pane split w1:p1 --direction right
herdr pane split w1:p2 --direction down
herdr pane run w1:p1 "codex"
herdr pane run w1:p2 "claude"
herdr pane run w1:p3 "opencode"
接下来,由人类或 Agent 担任监督者,为它们分配范围明确的任务:
herdr agent prompt w1:p1 "Find why refund_webhook_test is flaky. Report evidence only."
herdr agent prompt w1:p2 "Upgrade the Stripe SDK. Run unit tests. Stop before config changes."
herdr agent prompt w1:p3 "Review pending migrations and propose a backfill plan."
现在,监督者可以等待状态变化,而不是同时盯着三个屏幕:
herdr agent wait w1:p1 --until done
herdr pane read w1:p1 --source recent --lines 80
该项目周边的一些示例采用了 herdr wait agent-status 这种形式。当前版本的 release notes 表示,wait 工作流已经移到了 agent wait 下,因此请以已安装版本的 CLI reference 为准。设计思路并没有改变:等待语义状态发生变化,然后读取相关 pane。
人类仍然需要审查所有内容。改进之处在于,人类不再需要耗费脑力去记住每个终端分别在做什么。
tmux 和 Zellij 是最显而易见的比较对象。它们都是非常优秀的终端 multiplexer,能够持久化 pane,支持 detach 和 reattach,并且天然适合通过 SSH 使用。它们的局限在于:它们能够理解终端,却不能理解 Agent。tmux pane 可以让 Claude 或 Codex 持续运行,但 tmux 不知道该 Agent 是处于 blocked、done、idle,还是正在等待批准。
桌面端 Agent 应用通常面临相反的取舍。它们更了解 Agent 的使用体验,可以提供精致的审查界面、通知和 onboarding 流程。代价是,它们往往只能存在于 GUI 所在的地方。如果实际工作发生在服务器、Mac Mini 或 VM 上,以应用为中心的模式就会变得很别扭。
Worktree orchestrator 是另一个类别。Conductor、Emdash 和 Superset 等工具更接近工作流管理器。它们可以负责创建 branch、分配任务、收集 diff 和组织审查流程。Herdr 所处的层级更低。它提供持久存活的实时终端、Agent 状态和控制界面。你可以将它与 worktree、脚本、审查工具,以及任何你已经信任的编程 Agent 配合使用。
这种灵活性是它的优势。缺点则是,Herdr 仍然是一款以终端为原生环境的工具。如果你的团队需要 dashboard、托管的历史记录,以及便于管理层阅读的报告,那么 Herdr 并不打算解决这些问题。
并行 Agent 会成倍增加产出,也会成倍放大错误。
因此,我认为经验丰富的工程师最能发挥 Herdr 的价值。任何人都可以运行它,但 API 和并行监管都是锋利的工具。如果一个 Agent 能产生一份糟糕的 diff,那么三个 Agent 就能迅速产生三份糟糕的 diff。
正确的工作流其实很朴素:拆分范围明确的任务,在必要时使用相互隔离的 branch 或 worktree,进行明确的验证,并开展真正的人工审查。请谨慎对待 bypass-permissions mode。便利性不能代替安全模型。
我喜欢那些能提升吞吐量、同时又不会假装问责责任已经消失的工具。Herdr 看起来就属于这一类。它为工程负责人提供了一个更好的控制平面,用来管理基于终端运行的 Agent,但它并不会让审查负担凭空消失。
这是件好事。我想要的未来,是拥有这样一个运行时:可以在靠近代码的地方运行多个 Agent,让工作持续存活,一眼查看状态,并自动完成那些枯燥的协调工作。Herdr 瞄准的正是这一层。
Herdr 对比页面
Herdr socket API 文档
Herdr Agent skill 文件文档
Herdr GitHub repository
为了测试我的项目,我使用 Railway。如果你想获得 20 美元的启动额度,可以使用这个链接。
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。