Herdr 是一款面向编程智能体(coding agents)的终端多路复用工具(terminal multiplexer),其核心作用是把终端组织为工作区(workspace)、标签页(tab)和窗格(pane),识别正在窗格中运行的编程智能体,并通过 herdr CLI 暴露当前会话以供检查和控制。
用途方面,Herdr 用于组织终端布局、检查相邻工作、创建终端布局、启动智能体与命令、读取输出以及等待状态变化。该技能仅在用户明确提到 Herdr,或要求使用 Herdr 来检查或控制窗格时使用。
主要能力方面,Herdr 提供多个命令组:herdr agent、herdr pane、herdr workspace、herdr tab、herdr worktree、herdr terminal、herdr notification、herdr integration、herdr session、herdr machine。其中,workspace、tab、pane 用于组织终端位置;pane 命令控制原始终端、shell、测试、服务器、输入与输出;agent 命令控制当前占用窗格的已识别编程智能体。智能体生命周期状态包括 idle、working、blocked、done 和 unknown:idle 与 done 都表示智能体可接受输入,CLI/API 通过服务端的 seen 状态区分二者,显式 focus 命令会标记目标为已读而读取操作不会;blocked 表示 Herdr 识别到审批或提问界面;unknown 表示存在智能体但无法自信分类,并不代表已完成。
使用方式方面,在发出任何控制命令前,必须先验证当前智能体是否运行在 Herdr 管理的窗格内:
test "${HERDR_ENV:-}" = 1
若检查失败,应说明自身未运行在 Herdr 内并停止,不得从 Herdr 外部检查或控制当前聚焦的 Herdr 会话。检查通过后,PATH 中的 herdr 二进制会与当前会话通信。已安装的二进制是命令语法的权威,应先运行 herdr --help,再通过运行不带子命令的组来查看相应命令组。不要运行裸 herdr 进行探索,因为它会启动或附接 TUI;不要通过省略参数来探测会变更状态的嵌套命令。
Herdr 的公开标识是不透明的稳定句柄:workspace 形如 w1,tab 形如 w1:t1,pane 形如 w1:p1。已关闭的 tab 与 pane ID 不会被复用;窗格移动到其他工作区后会获得新的带工作区限定的 pane ID,移动后应继续使用 .result.move_result.pane.pane_id 或实时智能体名称,旧值仅对移动进程继承的调用方上下文继续解析。标识与实时智能体名称的作用域限于单个服务器;两个已保存的 SSH 机器可以各自拥有 w1:p1 或名为 reviewer 的智能体。在 TUI 中选择某台机器不会改变你窗格中运行命令的目标:未加 --machine 时,命令仍使用继承的会话与 socket 上下文。要控制已保存的 SSH 机器,需在发现阶段和后续每条命令中使用相同的全局前缀,如 herdr --machine <label-or-id> agent list。该选择器必须是已启用的已保存配置 ID 或唯一的、区分大小写的标签,而非任意 SSH 主机名。
启动与协调智能体方面,默认在当前标签页创建同级窗格并使用当前工作目录,除非用户明确要求其他拓扑或位置。应遵循用户指定的方向,否则先检查调用方窗格布局(herdr pane layout --pane "$HERDR_PANE_ID"),宽窗格向右分、窄或高窗格向下分,避免重复同方向分裂。保持用户焦点在调用窗格并显式保留调用方工作目录,例如:
herdr pane split --current --direction right --cwd "$PWD" --no-focus
可用 shell 窗格必须处于交互式提示符下,且没有前台命令、编辑器或智能体在运行。启动受支持智能体的示例:
herdr agent start reviewer --kind codex --pane <returned-pane-id>
智能体启动成功仅在 Herdr 检测到同窗格中的预期智能体并认为其可接受交互输入后才返回;若启动期间被阻塞,命令会立即返回 agent_not_ready,但名称仍可用于 agent read 和 agent send-keys,应等其变为 idle 后再提示。提交工作示例:
herdr agent prompt reviewer "Review the current diff and report only actionable findings." --wait --timeout 120000
在另一窗格运行普通命令的示例流程:
herdr pane split --current --direction right --cwd "$PWD" --no-focus herdr pane run <returned-pane-id> "just test" herdr pane wait-output <returned-pane-id> --match "test result" --timeout 120000 herdr pane read <returned-pane-id> --source recent-unwrapped --lines 120
读取来源选项包括 visible(当前渲染视口)、recent(近期渲染输出,含软换行)、recent-unwrapped(拼接软换行的近期输出,推荐用于日志与记录)、detection(用于智能体检测的纯文本底部缓冲快照)。使用 --format ansi 可保留颜色与终端样式作为证据,否则使用 text。
安全与协调规则方面,除非用户要求切换上下文,后台工作应使用 --no-focus;应使用 --current、显式 pane ID 或唯一智能体名,不要依赖其他客户端的聚焦窗格;标识应解析自 JSON 响应,不能从侧栏顺序或示例中推导;不要关闭不是自己创建的工作区、标签页、窗格或会话,除非用户明确要求;workspace close --group 会关闭主工作区及其关联的 worktree 工作区,绝不能仅为绕过 workspace_group_close_required 而添加;--trust-repository 仅在用户已验证仓库后使用;客户端与服务器版本在更新后可能不一致,依赖新服务器功能前应检查 herdr status,缺少方法不代表可以停止或升级服务器;除非用户明确打算停止服务器及其窗格进程,否则不要在活动会话中运行 herdr server stop;不得杀死主 Herdr 进程,需要隔离服务器的实验应使用命名的测试会话。CLI 服务器错误以 JSON 形式输出到 stderr 并返回退出状态 1,CLI 语法错误返回退出状态 2。
适用场景包括:在 Herdr 管理的窗格内检查相邻工作、组织终端布局、启动智能体与命令、读取输出、等待状态变化,以及协调多个编程智能体完成任务。限制包括:必须先通过 HERDR_ENV 检查确认运行在 Herdr 内,否则停止;命令语法以已安装二进制为准;标识与实时智能体名称限定于单个服务器;远程机器转发要求两端安装均支持 machine API 转发、远程服务器已运行且 API 兼容,转发不会安装、启动或重启服务器,也不会回退到 Local;远程 worktree 路径必须为绝对路径、~ 或以 ~/ 开头,插件链接路径必须为绝对路径;连接失败不能证明变更未生效,重试前应检查远程状态。关于价格、收费与平台等信息,资料中暂未提供。