RepoDaily · 2026-07-05 · Infrastructure / Runtime

herdr:为 AI 编码 Agent 从头打造的 Rust 终端多路复用器

#8 Infrastructure / Runtime Rust +706 ogulcancelik/herdr 打开仓库

herdr 用一个 Rust 二进制为每个编码 Agent 分配真实终端,内置 Agent 状态感知、持久化后台会话和 Socket API 编排能力——没有 GUI、没有 Electron、无需注册账号。

项目类型Infrastructure / Runtime
最适合同时运行三个以上 AI 编码 Agent(Claude Code、Codex、OMP、OpenCode、Pi、Devin),需要在单一终端视图中查看实时 Agent 状态并通过 SSH 持久化会话的开发者。
风险等级中等——AGPL-3.0-or-later 许可证、单人维护、Windows 仍为 beta
评估时间30–60 分钟:安装、启动、将 Agent 添加到工作区、测试分离与重连、尝试 Socket API

核心问题: 你的多 Agent 工作流是否需要服务器端持久会话加上内置的 blocked/working/done 状态,还是普通 tmux 就够了?

92/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 92/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 6 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 7 个工作流步骤、6 个下一步动作,以及 3 个命令/安装信号。

66维护可信度

趋势热度为 +706 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

96生产准备度

采纳风险标记为 medium,并包含 6 条安全说明与 5 条跳过条件。

100差异化

3 个机会视角、5 个替代方案,以及 4 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

84Agent / AI 适配度

文章正文和元数据中检测到 6 个 AI/Agent 相关信号。

项目概览

herdr 是一个终端工作区管理器,将 AI 编码 Agent 视为一等公民。它用 Rust 编写,以单个约 10MB 的二进制文件分发,为每个 Agent 提供独立的真实伪终端(PTY),而非在应用内部重绘的模拟终端,因此全屏 TUI 应用可以正确渲染。后台服务器在分离后仍然保持所有窗格和 Agent 进程存活——你可以合上笔记本,从另一台终端或通过 SSH 从手机重新连接。

该项目明确将自身定位为两个类别之间的中间路线。相对于 tmux,它指出 tmux 诞生于 Agent 出现之前,没有原生的 pane 状态概念(阻塞、工作中、完成、空闲)。相对于 Conductor、cmux、Emdash 等 GUI Agent 管理器,它指出这些工具通常是 Mac 专属应用,将终端包裹在 GUI 内部而非运行在你已有的终端中。herdr 试图同时拥有 tmux 的持久化和 SSH 可达性,以及 GUI 管理器的 Agent 状态感知能力。

当前版本为 0.7.1(2026-06-24),更新日志显示了对 OMP、OpenCode、Pi、Devin 的 Agent 生命周期钩子、Git worktree 集成、可配置的窗格边框与间距、以及 Windows Terminal 粘贴处理的持续改进。项目采用双许可证模式:开源使用 AGPL-3.0-or-later,商业使用可购买独立商业许可。

在本期趋势周期内获得 706 颗星,并曾于 2026 年 6 月 30 日登上 GitHub Trending 日榜第一名,herdr 正在引起那些在 tmux 标签页或多个终端窗口间管理 Agent 会话时遇到瓶颈的开发者的共鸣。对于评估者来说,核心问题是:Agent 状态感知和 Socket 驱动的编排能力是否值得采用一个年轻、单人维护的工具,而非久经考验的多路复用器。

解决什么问题

  • tmux 没有原生的 Agent 状态概念:每个窗格看起来一样,为每个 harness 手动配置 blocked/working/done 钩子既繁琐又脆弱。
  • GUI Agent 管理器(Conductor、cmux、Emdash)通常在包装器内重绘终端,破坏全屏 TUI 渲染,并将你锁定在特定桌面应用中。
  • 关闭终端窗口或笔记本盖子时,Agent 进程会终止——丢失上下文、会话状态和进行中的工作。
  • 在多个终端窗口或 tmux 标签页中管理五个以上 Agent 时,无法共享查看哪些 Agent 被阻塞并需要人工干预。
  • 运行在服务器上的远程 Agent 集群没有可以从手机或 SSH 客户端访问的统一管理界面。

工作原理

  1. 在 Linux/macOS 上通过 `curl -fsSL https://herdr.dev/install.sh | sh` 安装,或使用 Windows 的 PowerShell 预览脚本。
  2. 在已有终端中启动 herdr,它会启动一个后台服务器进程来管理所有窗格和 Agent 会话。
  3. 按仓库或文件夹创建工作区,然后通过鼠标原生的点击、拖拽和分割操作创建窗格和标签页。
  4. 每个启动的 Agent 通过 vendored 的 portable-pty 库获得独立的真实 PTY,全屏 TUI 可按 Agent 预期方式渲染。
  5. 侧边栏自动将每个 Agent 分类为阻塞、工作中、完成或空闲——基础检测无需任何钩子或配置。
  6. 随时分离。后台服务器保持所有窗格和 Agent 存活。从另一个终端或通过 SSH 重新连接即可恢复。
  7. 使用本地 Socket API 和 CLI 来脚本化窗格创建、触发 worktree 操作,或通过任意语言编写的插件让 Agent 互相编排。

命令、配置项与安装方式

  • 安装(Linux/macOS):`curl -fsSL https://herdr.dev/install.sh | sh`
  • Windows 预览 beta:`powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"`
  • 手动更新:`herdr update` 在禁用后台检查后仍然可用。
  • 0.7.1 配置项:`[update].version_check`、`[update].manifest_check`、`ui.pane_borders`、`ui.pane_gaps`、`ui.agent_panel_sort = "priority"`
  • 主题配置:`[theme].auto_switch` 配合 `dark_name` 和 `light_name` 实现明暗 UI 自动切换。
  • 远程按键配置:`keys.remote_image_paste = "ctrl+v"`(`herdr --remote` 的默认值)。
  • 环境变量提示:`HERDR_AGENT=<agent>`,用于 Linux 上当 `/proc` 无法暴露 VM、Bubblewrap 或 `fence` 包装器背后真实命令时标识 Agent。
  • Worktree 创建在请求分支已存在时改为检出已有本地分支,而非报错失败(#729)。

架构与依赖栈

  • 单个 Rust 二进制,约 10MB,edition 2021,通过 `build.rs` 构建。
  • TUI 渲染:ratatui 0.30,启用 `unstable-rendered-line-info` 特性。
  • 终端 I/O:crossterm 0.29,提供跨平台终端控制。
  • 异步运行时:tokio,启用 `rt-multi-thread`、`macros`、`sync`、`time` 特性。
  • 本地 IPC:interprocess 2.4.2,实现 Agent 和脚本驱动的 Socket API。
  • PTY 管理:portable-pty 0.9.0,通过 crates.io patch 在本地 `vendor/portable-pty` 中 vendored。
  • Windows 支持:windows-sys 0.61.2,特性覆盖 Console、Threading、Pipes 和 Shell 子系统。
  • Schema 生成:schemars 1.2.1,API schema 包含在二进制包的 `docs/next/api/herdr-api.schema.json` 中。

Agent 集成与 Socket API

  • CHANGELOG 0.7.1 中确认的官方钩子集成:OMP、OpenCode、Pi、Devin。
  • Topic 标签引用 Claude Code 和 Codex 作为支持的 Agent 生态系统。
  • 钩子生命周期和会话报告现在更可靠地限定到预期的根 Agent 进程,减少了重启、嵌套命令和新会话后过期或跨进程会话绑定的问题(#614、#712、#719、#765)。
  • OMP 现在报告原生会话引用,支持在同一窗格退出后重新运行 `omp` 时使用 `omp --resume=<session>` 恢复(#614)。
  • Socket API 文档位于 https://herdr.dev/docs/socket-api/,JSON schema 包含在二进制包中。
  • 根据 README,插件可以用任意语言编写,Socket API 是主要的程序化接口。
  • 通过 Socket API 启动的 worktree 操作将长时间运行的 Git 工作延迟到应用运行时驱动,保持客户端响应(#657、#662、#686)。

维护与项目健康度

herdr 是 ogulcancelik 的个人项目,CONTRIBUTING.md 中明确说明了这一点。维护者指出许多设计和技术决策是经过深思熟虑的,该指南的存在是为了让 herdr 作为个人项目保持可控。新贡献者需要通过审批门:在提交第一个 PR 之前,必须在已接受的 issue 上获得维护者批准,并被添加到 `.github/APPROVED_CONTRIBUTORS`。

0.7.1 的 CHANGELOG 显示了相当广度:3 项新增功能、5 项行为变更、以及 10 多项修复,涵盖 Windows 粘贴处理、CJK 分支名截断、宿主终端颜色查询、钩子生命周期恢复和 Kitty 文件传输支持。Issue 编号已达到 #765,表明 issue 跟踪器活跃。然而,单人维护模式意味着巴士因子风险是真实的——在生产 Agent 集群中依赖 herdr 的组织应考虑通过商业许可建立支持关系。

谁适合关注

适合关注

  • 你经常在不同仓库中运行三个以上编码 Agent,并且搞不清哪个被阻塞了。
  • 你通过 SSH 在远程服务器上运行长时间 Agent 会话,需要它们在断连后存活。
  • 你现在使用 tmux,但尝试过为 Agent 状态检测配置 harness 钩子却未成功。
  • 你希望通过可编程接口(Socket API + CLI)来程序化启动、监控和编排 Agent。
  • 你运行的全屏 TUI Agent 在 GUI 包装应用中无法正常显示。

可以先跳过

  • 你一次只运行单个 Agent,当前终端已足够。
  • 你的组织无法遵守 AGPL-3.0 要求,且不打算谈判商业许可。
  • 你是 Windows 主力用户,需要生产级稳定性(Windows 仍为预览 beta)。
  • 你需要以 GUI 为主的体验和鼠标驱动的仪表板,而非终端原生工具。
  • 你的 Agent 不输出 TUI 内容,更简单的窗格管理器如 tmux 已能满足需求。

风险与注意事项

AGPL-3.0-or-later 许可证对在可公开访问的服务器上运行修改版本的组织施加了源码披露义务;单人维护导致巴士因子风险集中;Windows 支持仍为 beta。

  • AGPL-3.0-or-later 要求在公开服务器上运行的修改版本披露源码——组织需要评估合规性或购买商业许可(联系 hey@herdr.dev)。
  • 项目由单人开发者(ogulcancelik)维护,并设有明确的新贡献者审批门,限制了外部贡献的扩展速度。
  • Windows 列为预览 beta,0.7.1 修复了多个 Windows 特定的粘贴和焦点问题——该平台尚未达到生产级别。
  • 当前版本 0.7.1,API 接口和 Agent 检测清单格式在 1.0 稳定性承诺之前可能仍会变化。
  • 后台版本检查和远程 Agent 检测清单默认会联网,但两者均可通过配置独立禁用。
  • 后台版本检查和远程 Agent 检测清单可通过 `[update].version_check` 和 `[update].manifest_check` 独立禁用(#677)。
  • 无需注册账号或遥测——README 明确声明'no account, no telemetry'。
  • Socket API 是本地的(interprocess crate),默认不暴露到网络。
  • 单个自包含二进制,无运行时依赖,降低了软件供应链攻击面。
  • CONTRIBUTING.md 中的 Agent 注意事项指示 AI 代理不得使用 GitHub CLI/API 代表用户提交 issue——issue 必须由人工提交。
  • portable-pty 在本地 vendored(`vendor/portable-pty`),而非从 crates.io 拉取,让维护者直接控制 PTY 代码路径。

替代方案比较

方案适用场景代价
tmux
你需要一个成熟、久经考验的终端多路复用器,支持持久会话、窗格和 SSH 访问——但不需要内置的 Agent 状态感知。免费,ISC/BSD 许可证
Zellij
你想要一个现代的基于 Rust 的终端多路复用器,支持插件,但不需要 Agent 特定的状态追踪。免费,MIT 许可证
Conductor
你更喜欢一个 GUI 桌面应用来管理带有可视化仪表板的 Agent 状态,且使用 macOS。商业产品
cmux
你想要一个带有可视化状态指示器的 GUI Agent 管理器,并且可以接受其桌面应用模型。因供应商而异
Warp
你想要一个 AI 增强的终端体验,内置命令建议,而非多 Agent 会话管理器。免费层加付费功能

这个趋势说明了什么

Socket API 作为集群编排原语

本地 Socket API(https://herdr.dev/docs/socket-api/)暴露了窗格创建、worktree 操作和 Agent 生命周期钩子。构建内部 Agent 编排平台的团队可以将 herdr 作为执行层,从独立的控制服务驱动,并使用 docs/next/api/herdr-api.schema.json 中的 JSON schema 进行类型安全集成。

阅读 Socket API 文档,将脚本指向本地 socket,验证 worktree 创建(#729)和窗格生命周期事件是否通过 API 路径正确触发。

通过 SSH 进行远程 Agent 集群管理

由于 herdr 作为单个二进制运行在服务器上,后台进程在分离后存活,开发者可以从手机管理远程机器上的 Agent 集群。`HERDR_AGENT` 环境变量和 `herdr --remote` 按键配置专为这一场景设计。

通过 SSH 在远程 Linux 服务器上安装 herdr,启动三个 Agent,分离后从另一个 SSH 会话重连,确认所有窗格和 Agent 状态持续存在。

任意语言的插件生态

README 声称插件可以用任意语言编写并通过 Socket API 驱动。目前没有公开的插件注册表或 SDK,这意味着早期插件作者可以为特定 Agent harness(Claude Code 钩子、Codex 会话管理、内部自定义工具)定义集成模式。

用 Python 或 Node 编写一个连接 Socket API 的最小插件,创建一个窗格并报告其状态——然后检查 #657 中描述的插件生命周期事件是否按文档触发。

下一步建议

在本地安装 herdr 并运行三 Agent 冒烟测试

评估 Agent 状态感知是否值得采用 herdr 替代 tmux 的最快方式是:安装、在不同工作区启动三个 Agent、分离、再重连。这能在 30 分钟内测试核心差异点——真实终端渲染、实时状态侧边栏和持久后台服务器。

  1. 在 Linux 或 macOS 上运行 `curl -fsSL https://herdr.dev/install.sh | sh`。
  2. 在终端中启动 herdr,创建两个工作区(例如每个仓库一个)。
  3. 在每个工作区窗格中启动一个编码 Agent——确认侧边栏显示 blocked/working/done/idle 状态。
  4. 从会话分离(关闭终端或使用分离命令)。
  5. 打开一个新终端并重连——验证所有 Agent 和窗格仍然存活。
  6. 可选:将脚本指向本地 Socket API 以程序化创建窗格,并确认 JSON schema 与 docs/next/api/herdr-api.schema.json 一致。

RepoDaily 判断

herdr 解决了 tmux 无法覆盖的真实痛点——无需逐个检查窗格就能知道哪个 Agent 被阻塞。Rust 二进制运行快速,后台服务器模型合理,Socket API 开辟了合理的编排路径。主要限制是 AGPL-3.0 许可证对组织使用的影响、单人维护的巴士因子风险、以及 Windows 仍为 beta。对于已经在 Linux 或 macOS 上运行多个编码 Agent 且需要 SSH 可达持久化的开发者来说,herdr 值得花 30 分钟评估。

信息来源