Herdr:让编码代理在可重连终端里持续协作
给运行Claude Code等编码代理的人用的终端运行时,断线后能重连并统一管理多台机器。
GitHub herdrdev/herdr 更新 2026-11-12 分支 master 星标 50.3K 分叉 4.1K
Rust 编码代理运行时 CLI与Socket API SSH与终端

🧭 决策指南

适合,如果你

  • 你经常关闭客户端或断开SSH,但仍要保留Claude Code、Codex的工作布局
    README“detach without stopping work”说明后台服务器会保留终端并恢复保存的布局
  • 你在本机和多台SSH机器上同时运行编码代理
    README“several machines, one window”说明本地工作与保存的SSH机器共享代理列表并独立重连
  • 你希望代理通过CLI或Socket API创建窗格并等待其他代理阻塞
    README“agent-native”明确列出spawn panes、prompt each other和等待blocked代理

不适合,如果你

  • 你要求服务器或机器重启后原有代理进程本身继续存活
    README明确写出“the original processes do not survive”
  • 你的Windows环境属于端点保护场景,且不接受Windows Beta路径
    安装章节将endpoint-protected Windows单独链接到windows-beta文档
  • 你只需要单机、单终端的简单代理启动,不需要布局恢复或多机列表
    README的核心功能集中在后台会话、保存布局、SSH机器和代理状态管理

前置条件

  • 需要一个可用终端;README称herdr“runs in whatever terminal you already use”。
  • 需要按README安装herdr,例如curl安装脚本、Homebrew、mise或Windows PowerShell路径。
  • 若使用远程机器,需要README所述的保存SSH机器与独立重连能力。
  • 开发源码需要Rust构建链;README development章节使用cargo build --release。

第一步命令(README 原文)

curl -fsSL https://herdr.dev/install.sh | sh

要注意

  • 机器重启后不要把布局恢复误认为原进程恢复,README明确排除原进程存活
    README“session state”描述保存布局和支持的代理会话恢复,同时写明原进程不会存活
  • Windows端点保护用户需查看windows-beta文档,而非只执行通用安装命令
    install章节把endpoint-protected Windows链接到https://herdr.dev/docs/windows-beta/
  • 代理接入不是自动包装,README要求构建代理者阅读add herdr support文档
    README写明herdr“不 wrap or replace”现有代理,并提供add herdr support链接

替代方案

  • tmux:只需要经典终端复用,不需要herdr的代理状态、Socket API或多机代理列表时更直接
    README中的“tmux-style prefix keys”与通用领域知识

材料未说明

  • README没有说明支持的Claude Code、Codex、Cursor、OpenCode或Grok版本。
  • README没有给出CPU、内存、磁盘或网络带宽要求。
  • README没有说明服务器重启后哪些具体代理属于“supported agent sessions”。
  • README没有提供Windows Beta的稳定性范围、限制或正式发布日期。
  • README没有说明SSH认证方式、端口配置和远程机器数量上限。
  • README没有给出Socket API的认证、权限控制和兼容性细节。
  • README没有说明插件市场中的插件数量、维护状态或安全审核机制。
  • README没有提供v0.9.5相对前一版本的变更内容。

💡 深度解析

6
视情况 我需要机器重启后恢复保存的窗格布局和部分代理会话;herdr 能否保证原来的 Claude Code 或 Codex 进程继续执行?
适合读者: 需要在机器重启后恢复工作区、但不能接受代理进程被误认为持续运行的开发者

视情况,herdr 能恢复布局和部分受支持的代理会话,但不能保证原始 Claude Code 或 Codex 进程跨重启存活。

  • README 明确写出机器或服务器重启后会恢复 saved layout,并且“can resume supported agent sessions”。
  • 同一句话也明确限定:“the original processes do not survive”,因此这不是完整的进程级检查点或任务永生机制。
  • 恢复能力依赖代理是否属于 supported agent,以及是否保存了对应会话状态;README 列出了 Claude Code、Codex、Cursor、OpenCode 和 Grok,但没有逐一说明恢复覆盖范围。

因此,如果你的约束是恢复可视化工作区,项目匹配;如果约束是让原进程无缝继续执行,则不匹配。

  • README:detach without stopping work — “after a server or machine restart, herdr restores the saved layout and can resume supported agent sessions; the original processes do not survive”
  • README:runs what you already run — “claude code, codex, cursor, opencode, grok and the rest”
  • 项目洞察:usage limitations — “跨重启恢复能力并非完整进程级恢复”
herdr
材料未说明:README 未列出 Claude Code、Codex 等各代理具体支持哪些会话恢复能力。;README 未说明恢复失败时会保留哪些上下文、环境变量、临时文件或未提交代码状态。
适合 我已经使用 Claude Code、Cursor 和 OpenCode,团队不想迁移到新的代理封装层;herdr 会不会替换或重写这些代理?
适合读者: 正在维护现有 Claude Code、Cursor 和 OpenCode 工作流、又不想更换代理运行方式的软件工程师

适合,因为 README 明确表示 herdr 不封装或替换现有代理,而是负责拥有并管理它们的终端。

  • “runs what you already run”直接列出 Claude Code、Cursor、OpenCode、Codex 和 Grok,说明目标是承载既有工具。
  • README 原文是“herdr doesn’t wrap or replace them; it owns their terminals”,因此迁移重点是把代理放入 herdr 窗格,而不是改写代理调用方式。
  • 项目还提供 tmux 风格快捷键,以及鼠标点击、拖动和分屏,已有终端工作流不必完全改成图形化操作。

不过,通用终端承载不等于所有代理都具备完整状态识别、会话恢复或 agent-native 控制;这些能力是否可用,取决于具体代理的集成支持。

  • README:runs what you already run — “herdr doesn't wrap or replace them; it owns their terminals”
  • README:runs what you already run — “claude code, codex, cursor, opencode, grok and the rest”
  • README:keyboard and mouse, both first-class — “tmux-style prefix keys and click, drag, split”
herdr
材料未说明:README 未说明 Cursor、OpenCode 等工具在 working、blocked、idle 状态识别上的具体差异。;README 未说明每个代理是否都支持会话恢复、窗格创建或 Socket API 控制。
适合 我正在构建一个编码代理,希望它能通过 CLI 和 Socket API 创建窗格、提示其他代理并等待阻塞状态;herdr 是否提供这种控制面?
适合读者: 正在构建编码代理、希望让代理通过 CLI 和 Socket API 创建窗格并协调其他代理的工具开发者

适合,因为 agent-native 能力就是 herdr 的明确设计目标,并且 README 提供了对应文档入口。

  • “agent-native”说明代理可通过 CLI 和 Socket API 驱动 herdr,而不只是被动运行在终端里。
  • README 明确列出三类动作:spawn panes、prompt each other、wait until another agent is genuinely blocked,与你的编排需求直接对应。
  • 文档目录包含 “agent skill”“add herdr support” 和 “socket api”,说明项目为代理集成提供了专门接口,而不是仅依赖人工键盘操作。
  • 插件机制还允许扩展窗格和工作流。

但 README 没有给出 API schema、认证模型、错误返回、版本兼容策略或循环等待保护;这些信息不足以判断它能否直接满足生产级编排要求。

  • README:agent-native — “agents drive herdr through the cli and socket api: they can spawn panes, prompt each other, and wait until another agent is genuinely blocked”
  • README:docs — “agent skill” · “add herdr support” · “socket api”
  • README:plugins — “extend panes and workflows”
git clone https://github.com/herdrdev/herdr
材料未说明:README 未提供 Socket API 的完整请求格式、权限模型、错误处理和版本兼容承诺。;README 未说明代理创建窗格、相互等待和终止操作是否有配额、超时或权限隔离。
适合 我通过 SSH 连接云主机,同时运行 Claude Code 和 Codex;如果本地终端关闭或 SSH 断开,我能否继续管理这些代理?
适合读者: 通过 SSH 连接云主机、同时运行 Claude Code 和 Codex 的远程开发者

适合,因为它明确把终端生命周期与代理工作区分离,重点解决 SSH 断开和多代理并行管理。

  • README 的“detach without stopping work”说明,关闭客户端或 SSH 连接丢失后,终端仍由后台服务器运行。
  • “several machines, one window”支持把本地工作区和保存的 SSH 机器放在同一界面,并提供独立重连。
  • 项目明确兼容 Claude Code、Codex,并提供 working、blocked、idle 状态,便于识别需要回应的窗格。

但它不会修复云主机不可达、SSH 认证失效或远程资源不足等问题;远程连接配置、重连行为和多代理同时运行时的资源消耗,README 没有给出具体限制。

  • README:detach without stopping work — “herdr keeps terminals running in a background server when you close the client or lose your SSH connection”
  • README:several machines, one window — “keep local work and saved ssh machines together, with a combined agent list and independent reconnects”
  • README:runs what you already run — “claude code, codex, cursor, opencode, grok and the rest”
curl -fsSL https://herdr.dev/install.sh | sh
材料未说明:README 未说明同时运行多个 Claude Code、Codex 实例时的 CPU、内存或远程连接数量上限。;README 未说明 SSH 认证失败、网络抖动和目标主机不可达时的自动重连策略。
适合 我熟悉 tmux 的键盘操作,但需要同时观察多个代理的 working、blocked 和 idle 状态;herdr 是否会迫使我改用纯鼠标或完整桌面界面?
适合读者: 习惯 tmux 快捷键、同时想用鼠标和状态视图管理多个编码代理的终端高级用户

适合,因为 herdr 同时保留 tmux 风格键盘操作和鼠标交互,并把代理状态直接显示在窗格上。

  • README 的 “keyboard and mouse, both first-class” 明确支持 tmux-style prefix keys,以及 click、drag、split,说明键盘工作流不会被取消。
  • “never hunt for the stuck one”说明每个窗格会标记 working、blocked 或 idle,代理停止并等待回答时会提示用户。
  • 项目定位是终端运行时和 workspace manager,而不是 Electron 桌面应用;README 强调“one rust binary, no electron”。

但状态标记不代表所有代理都能被准确识别。项目洞察指出,不同代理的输出格式和交互模式可能影响阻塞检测;README 也未列出每个代理的识别规则或误报处理方式。

  • README:keyboard and mouse, both first-class — “tmux-style prefix keys and click, drag, split”
  • README:never hunt for the stuck one — “every pane is marked working, blocked, or idle”
  • README:one rust binary, no electron
  • 项目洞察:common pitfalls — “不同代理的输出格式、交互模式和阻塞识别能力可能不同”
herdr
材料未说明:README 未说明 working、blocked、idle 状态的判定规则、刷新延迟和误报率。;README 未说明同时显示大量窗格或代理时的界面容量与性能边界。
视情况 我需要在 Linux、macOS 和受端点保护的 Windows 环境部署同一个终端工具;herdr 的单二进制方式是否足够稳定?
适合读者: 在 Windows 端点保护环境中部署终端工具、同时需要 Linux 和 macOS 安装路径的开发者

视情况,herdr 的交付方式适合跨平台统一部署,但受端点保护的 Windows 场景仍需要单独验证。

  • README 将其描述为“one rust binary, no electron”,并说明可运行在用户已有的终端中,减少 Electron 运行时依赖。
  • 安装章节同时提供 Linux/macOS 的 Shell 安装、Homebrew、mise、Windows PowerShell 安装和 binaries 下载路径。
  • README 还单独链接 “endpoint-protected Windows”,项目洞察则指出 Windows Beta 路径可能存在企业兼容性或部署限制。
  • 项目数据表明主语言是 Rust,代码量绝大多数集中于 Rust,交付架构相对统一。

因此普通跨平台安装较匹配;若企业策略禁止远程脚本、限制执行策略或拦截未验证二进制,README 没有足够信息证明可直接部署。

  • README:one rust binary, no electron — “runs in whatever terminal you already use”
  • README:install — “brew install herdr · mise use -g herdr · windows: powershell ... · endpoint-protected Windows · binaries”
  • 项目数据:main_language 为 Rust;language_distribution 中 Rust 为 11926094
  • 项目洞察:usage limitations — “Windows Beta 路径”可能存在企业兼容性或部署限制
brew install herdr
材料未说明:README 未说明 endpoint-protected Windows 的具体支持版本、签名要求和企业策略兼容范围。;README 未说明各平台二进制是否具备代码签名、可离线验证或组织级发布渠道。

✨ 核心亮点

  • Rust单二进制,无Electron,直接运行在现有终端
  • SSH断线后保留终端,重连可恢复保存的布局
  • 统一管理本机与SSH机器上的Claude Code、Codex
  • CLI和Socket API支持代理创建窗格、互相提示

🔧 工程化

  • 用Ctrl+B Q分离,重新运行herdr即可重新连接会话
  • 每个窗格标记working、blocked或idle,显示代理是否等待回答
  • 支持Claude Code、Codex、Cursor、OpenCode和Grok原终端
  • 插件可扩展窗格与工作流,键盘和鼠标均可操作

⚠️ 风险

  • 重启后只能恢复支持的代理会话,原进程不会存活
  • Windows端点保护场景仍单列为Windows Beta文档
  • README未列出Claude Code等代理的具体支持版本

👥 适合谁?

  • 需要长期运行Claude Code或Codex的终端开发者
  • 通过SSH管理多台机器并想统一查看代理状态的团队
  • 正在构建代理并需要CLI或Socket API集成的开发者