第一次看到 Herdr,很容易以为它也是某种 AI 编程助手。其实它不写代码,也不打算替代 Claude Code、Codex、OpenCode 或 Pi。Herdr 位于这些 Agent 的下一层,管理的是它们真正工作的 Terminal。
过去我们很少注意这一层。打开终端、运行命令、等它结束,然后关掉窗口就可以了。Coding Agent 改变了终端的生命周期:一个窗口可能承载一小时的任务,中途停下来等审批,在没人看的时候完成,或者长期绑定某个仓库;与此同时,其他项目里还有更多 Agent 在继续工作。
这时真正稀缺的不是执行能力,而是注意力。让所有进程继续运行只解决了一半问题。当你重新坐到电脑前,或者临时从手机连回来,最想知道的往往是:现在到底哪个项目需要我? Herdr 所做的,是把散落在终端里的持久状态整理成一套围绕 Project 和 Agent 的视图。
Herdr 本身还是一个很年轻的项目。GitHub 记录显示,仓库创建于 2026 年 3 月 27 日。8 月 6 日,作者 Can Celik 宣布 Herdr 加入 Y Combinator 2026 年秋季批次,当时公布的数据是 2.5 万 Stars 和 34 万 Downloads。到 8 月 30 日,GitHub API 显示约 3.34 万 Stars,Herdr 首页则显示超过 62.6 万次安装。
增长速度并不能证明它适合每一个人,但至少说明很多开发者都遇到了相似的问题。要判断 Herdr 是否有用,比起只看数字,更值得看清它的 Server、Workspace、Agent 状态、Persistence 机制,以及如何从手机进入这套工作流。
Herdr 是什么?
Herdr 是一个用 Rust 编写的开源 Terminal Workspace Manager 和 Agent Runtime。它运行在真正执行开发任务的地方,可以是笔记本、桌面工作站或服务器,并通过后台 Server 管理真实的 Terminal Process。
Herdr Client 负责显示这些终端,并把输入发送回去。关闭 Client 或 SSH 断开时,Server 仍可以继续保留 Pane 和其中的进程。稍后重新 Attach,看到的还是原来的 Workspace。
这听起来很像 Terminal Multiplexer,实际上也确实有重叠。不过 Herdr 在持久终端之上增加了一层 Agent 能力:
- 按项目级 Workspace 组织终端。
- 识别 Pane 中受支持的 Coding Agent。
- 将 Agent 标记为
working、blocked、done、idle或unknown。 - 在 Sidebar 中向上汇总状态,某个 Agent Blocked 时,对应项目会直接显示需要关注。
- 提供 CLI 和本地 Socket API,方便 Script、Agent 和 Plugin 控制。
- 官方 Integration 可以记录原生 Agent Session Identity,用于 Server 重启后的恢复。
Herdr 不会替代 Claude Code、Codex、OpenCode 或 Pi。它管理这些程序所在的 Terminal,并在外面补上组织与状态层。
为什么 Herdr 会突然流行?
Herdr 出现的时候,终端里的工作单位正在发生变化。以前一个 Terminal Window 通常代表一件当下正在做的事:编辑文件、查看日志或执行命令。现在一个 Coding Agent 可以占用终端一两个小时,在读取代码和执行命令之间反复切换,最后因为需要一个决定停在半路。
同时运行多个 Agent 后,会出现两个不同问题。
第一个是 Persistence:Terminal Client 关闭或 SSH 断线,不应该让正在执行的任务一起消失。
第二个是 Attention Management:即使所有进程都活着,还是要有人看清哪个 Agent 正在工作,哪个在等输入,哪个结果已经可以 Review。
tmux 等工具已经很好地解决了第一部分。Herdr 更特别的地方,是把 Coding Agent 当作一等对象,把多个项目里的状态整理成一个注意力队列。
它也没有强迫用户更换 Coding Agent。Herdr 是一个 Apache 2.0 License 的单一 Binary,继续运行你已经在用的 Agent CLI。在 YC 公告中,Celik 把内置 TUI 定义为开放 Runtime 上的一个 Client,社区还可以继续构建 Plugin 和其他界面。
理解 Herdr 的几个核心概念
| 对象 | 代表什么 |
|---|---|
| Server | 后台管理 Terminal Pane 和运行中进程 |
| Client | Attach 到 Server 并显示、控制状态的 TUI |
| Session | 一个持久 Herdr Server Namespace |
| Workspace | 一个仓库、任务或 Investigation 的顶层容器 |
| Tab | Workspace 内的一套 Layout,例如 Agents、Logs、Server 或 Review |
| Pane | 运行 Shell、Agent、测试、日志或服务的真实 Terminal |
| Agent | Herdr 在 Pane 中识别出的 Coding Agent Process |
一般应该优先使用 Workspace,而不是一开始就创建很多 Named Session。一个默认 Session 完全可以容纳多个项目 Workspace。只有确实需要独立 Server Namespace、Socket 和 Runtime State 时,Named Session 才更合适。
正是这套以项目为中心的层级,让五个 Agent 不再只是五个没有上下文的终端窗口。
Herdr 如何知道哪个 Agent 需要你?
Herdr 会先识别 Pane 的前台进程。根据不同 Agent,它可能接收 Lifecycle Hook,也可能读取 Terminal 底部最近的 Screen Snapshot,再用 Detection Manifest 判断当前状态。
working:Agent 正在执行。blocked:已识别的审批、问题或 Permission UI 正在等待输入。done:后台任务已经完成,但还没有被查看。idle:Agent 已经完成或可以接收输入,并且状态已经被看过。unknown:Herdr 识别到了 Agent,但无法可靠判断状态。
Herdr 对 blocked 的判断比较保守。如果新版本 Agent 出现一种没见过的 Prompt,它可能暂时显示为 Idle,而不是 Blocked。这个误差只影响状态展示,不会让 Herdr 自动批准操作或发送破坏性输入。
目前官方支持列表包括 Claude Code、Codex、OpenCode、Pi、GitHub Copilot CLI、Cursor Agent CLI、Devin CLI、Grok CLI、Kimi Code CLI 和 Qwen Code 等。其他 Terminal Program 仍然可以正常运行,只是可能没有完整的 Agent 状态。
断开连接后,究竟什么会留下?
Herdr 的 Persistence 有一条必须讲清楚的边界。
普通 Client Detach 或 SSH 断开时,Herdr Server 仍在运行。Pane、Shell、Agent、测试、日志和服务都还是原来的操作系统进程。再次运行 herdr,新的 Client 会 Attach 到这份仍然存活的状态。
如果 Herdr Server 或 Host 真正停止,旧进程就已经结束。Herdr 可以恢复保存的 Workspace、Tab、Pane、Working Directory、Layout 和 Focus;安装了当前官方 Integration 后,还可以通过原生 Session ID Resume 一部分受支持的 Agent 对话。
后者是重建,不是进程永生。Claude Code 或 Codex 对话被恢复,不代表被打断的编译器、开发服务器或普通 Shell Process 也穿过重启继续运行。
因此,如果希望任务实时继续,开发主机仍然必须保持开机和唤醒。后台 Runtime 无法让正在休眠的笔记本执行代码。
如何安装 Herdr
Herdr 应该安装在保存仓库并运行 Agent 的开发主机,而不是手机上。macOS 或 Linux 可以运行:
curl -fsSL https://herdr.dev/install.sh | sh
使用 Homebrew 时:
brew install herdr
然后进入项目并启动 Herdr:
cd ~/projects/your-app
herdr
在 Pane 中像平时一样启动 Agent:
claude
# 或:codex
# 或:opencode
# 或:pi
Herdr 会自动检测受支持的 Agent。如果还需要对应 Agent 的 Lifecycle Report 或原生 Session Identity,可以安装官方 Integration:
herdr integration install claude
herdr integration install codex
herdr integration status
按 Ctrl+B,再按 q 可以 Detach。Server 和 Pane Process 会继续留在 Host 上;再次运行 herdr 即可 Attach。只有明确执行 herdr server stop,才会停止 Session 和其中的进程。
如何在手机上使用 Herdr
Herdr 不要求安装官方手机 App,也不依赖 Web Dashboard。官方推荐的手机路径非常直接:用任意 SSH Client 连接运行 Herdr 的机器,然后在远程 Shell 中启动或 Attach Herdr。
ssh you@development-host
herdr
TUI 会适配手机窄屏。你可以切换 Workspace、查看 Agent 状态、找到正在等回答的 Pane,然后再次 Detach,而不用把仓库或 Agent Process 搬到手机上。
如果需要从外网访问,可以让手机和 Host 加入同一个 Tailscale tailnet,再在 SSH Client 中填写 Tailscale IP 或 MagicDNS Name。本文方案中,Tailscale 提供私有网络路径,标准 SSH 继续负责终端访问和身份认证。
完整链路是:
手机 → Tailscale → SSH → Host → Herdr Server → Agent Pane
Tailscale 指南介绍网络层配置;Shell、SSH 和 tmux 详解则解释为什么远程连接和终端持久化是两个不同问题。
Redock 在这里解决什么?
普通 SSH 加一条 herdr 命令,已经可以让整套工作流跑起来。真正的摩擦通常在手机变成常用控制端以后出现:选择正确的 Host、找到仓库入口、重新进入 Herdr Session、输入较长的 Agent Prompt,以及反复运行 Git、测试、构建、日志或服务命令。
这正是 Redock 的 Herdr 集成比较有价值的地方。先用 Tailscale 地址保存开发机 Host,再把 Session Persistence 设置为 Herdr。之后 Redock 通过 SSH 或 Mosh 连接时,会沿着 Herdr Session 的路径进入终端;从手机回来时,不用再手动把 Host、连接和 Session 命令重新走一遍。
再用 Project 关联这台 Host 和仓库目录,这种集成就不只是一条保存好的 SSH 命令:Project 负责回到开发入口,Herdr 负责恢复 Agent Workspace,Git、测试、构建、日志和服务命令则可以保存为 Action,并把结果保留成 Run。一次很短的手机 Check-in 结束后,命令输出也不会跟着 Terminal Scrollback 一起难以寻找。
两者职责并不冲突。Herdr 仍然管理 Host 上的持久 Terminal Workspace,并理解 Agent 状态;Redock 则把这层 Session Persistence 集成到手机端的 Host 和 Project 工作流中。代码不会因此被搬到新的 Cloud Runtime。
一套实际的手机工作流
一次有价值的手机 Check-in 应该很短:
- 打开仓库或 Host 对应的 Redock Project。
- 打开这台 Host 对应的 Herdr 持久终端。
- 从响应式切换菜单或 Sidebar 找到
blocked或done的 Agent。 - 发送输入之前,先看清当前 Pane。
- 回答问题,只批准理解的操作,或者补充一条聚焦的指令。
- 按
Ctrl+B,再按qDetach。 - 稍后回来检查
git diff、运行测试并 Review 结果。
手机并不是在替代桌面 IDE。它只是缩短了 Agent 需要决定到真正得到回应之间的等待时间。
Herdr 和 tmux 有什么区别?
| 选择 | 更适合 |
|---|---|
| tmux | 需要成熟、标准、可移植的 Multiplexer,管理少量持久终端 |
| Herdr | 同时运行多个 Coding Agent,需要项目 Workspace、可见 Agent 状态、直接 Agent Attach、API、Plugin 和原生 Session Restore |
Herdr 可以作为外层环境运行在 tmux 中,但如果希望正常识别 Agent,不要在 Herdr Pane 内再用一层 tmux 包住 Codex 或 Claude Code。Herdr 此时只会看到前台的 tmux Process,而看不到里面的 Agent。
更聚焦的 tmux 手机配置见 如何从手机运行 Claude Code;Codex 与 Herdr 的具体组合见 如何从手机运行 Codex。
Herdr 不会解决什么?
Herdr 不提供计算资源,不托管仓库,不替代 SSH Server,也不能让关机的机器继续执行任务。多个 Agent 并行修改代码时,仍然要用不同 Branch 或 Worktree 做 Git 隔离。
Agent 状态很有用,但不是绝对准确。基于 Screen 的检测可能跟不上 Agent UI 更新,只有识别到已知 Prompt Shape 时才会显示 blocked。批准命令之前,仍然应该查看真实 Pane 内容。
安全也还是用户自己的责任。限制 SSH 访问、优先使用 Key、认真配置 Tailscale Policy、保护 Host Account,并谨慎开启 Pane History。Terminal Output 里可能包含 Prompt、Token、路径和命令结果,应当按敏感数据处理。
FAQ
Herdr 是什么?
Herdr 是开源 Terminal Workspace Manager 和 Agent Runtime。后台 Server 管理真实 Terminal Process,Attach 的 Client 负责显示和控制。
Herdr 可以替代 tmux 吗?
在 Agent 密集型工作流中可以,但少量持久终端仍然更适合简单、标准的 tmux。Herdr 额外提供 Workspace、Agent Detection、状态汇总、API、Plugin 和原生 Agent Restore。
Herdr 有手机 App 吗?
使用 Herdr 不需要手机 App。用 iPhone 或 Android SSH Client 连接开发主机,再运行 herdr,TUI 会适配手机屏幕。
SSH 断开后 Herdr 会让 Agent 继续运行吗?
可以,前提是 Host 和 Herdr Server 仍在运行。Host 或 Server 停止会结束旧进程,之后只能分别恢复 Layout 和受支持的 Agent 对话。
Herdr 支持哪些 Coding Agent?
Herdr 可以识别 Claude Code、Codex、OpenCode、Pi、Copilot CLI、Cursor Agent CLI 和 Grok CLI 等常见 Agent。其他 Terminal Program 也可以运行,只是没有完整状态。
把 Agent 控制台带在身边
Herdr 让 Host 上的多个 Agent Terminal 保持运行并清晰可见;Redock 则把 Herdr 作为 Session Persistence 选项集成到 SSH/Mosh Host 和 Project 工作流中,再用 Action 承担 Agent 周围那些可重复的检查。开发机继续执行,手机只在真正需要关注时介入。