Herdr:一个终端,统御一切
摘要
Herdr 是一个终端复用器,能让开发者在单独的终端中运行多个编程代理,无论是在任何机器上还是通过SSH,并且一目了然地查看持久会话。
暂无内容
查看缓存全文
缓存时间: 2026/07/07 20:14
# Herdr:一个终端管理所有代理
来源:https://herdr.dev/
代理多路复用器 · 一个二进制程序,而非一个应用
在任意设备上,甚至通过 SSH,从单个终端运行你所有的编码代理。每个代理都在自己真正的终端中运行,且运行在一个服务器上,当你合上笔记本时仍会保持存活。一目了然地查看**阻塞**、**工作中**和**已完成**的状态,并从你的手机重新连接。
稳定版安装
$`curl \-fsSL https://herdr\.dev/install\.sh \| sh`
PowerShell\>`irm https://herdr\.dev/install\.ps1 \| iex`
稳定版 Linux/macOS · Windows 预览测试版 · 无需 Electron,无需账户,无遥测
opencodeherdr\+
✻**Claude Code**v2\.1\.168
~/Projects/herdr · master
**❯**当代理快速切换状态时,侧边栏会闪烁
● 找到原因了。rollup 在每个 PTY 数据块上都会重新计算,所以两次状态切换会在帧中间重绘圆点。
● 计划:
· src/app/state\.rs — 每个 tick 缓冲状态事件
· src/ui/sidebar\.rs — 每帧重新绘制 rollup
**❯**继续,并添加一个回归测试
⠋工作中...(13m 36s· 按 esc 中断)
**❯**
~/Projects/herdr \> master \> ctx ─── 3% 34k/1M
\>\> 绕过权限(按 Shift+Tab 切换)
~/Projects/herdr*master*
**❯**bunrun dev
$ node scripts/prepare\-docs\.mjs && astro dev
02:10:44\[types\]生成完成 0ms
02:10:44\[content\]内容已同步
astrov5\.18\.1在 668 ms 内准备就绪
┃ Localhttp://localhost:4321/
Network 使用 --host 以暴露
02:10:44正在监听文件变更...
\+ 思考:468ms
→ 读取 src/main\.rs
\+ 思考:292ms
这是 src/main\.rs —— **herdr** 的入口点。它会执行以下操作:
1. 参数解析 —— session::configure\_from\_args,然后为 SSH 桥接解析远程参数。
2. 子命令分发 —— server、client、update —— 每个都会提前返回。
3. 会话模式 —— auto\_detect\_launch\(\) 连接到正在运行的服务器或启动一个新服务器。
构建 · MiMo V2\.5 Free · 16\.6s
构建· MiMo V2\.5 Free OpenCode Zen
25\.2K \(13%\) ctrl\+p 命令
迁移日志\+
✻**Claude Code**v2\.1\.168
~/Projects/llm\-proxy · master
**❯**准备请求日志迁移并执行
● 编写了 migrations/0007\_request\_log\.sql —— request\_log 表,基于 created\_at 的保留索引,每日 rollup 视图。
● 本地检查通过:sqlx prepare 干净,回填试运行涉及 41,209 行。准备应用。
**Bash 命令**
cargosqlx migrate run
应用待处理的数据库迁移
是否确认继续?
❯ 1\. 是
2\. 否,并告诉 Claude 需要调整的内容 (esc)
~/Projects/llm\-proxy*master*
**❯**tail\-f logs/proxy\.log
02:30:58INFO请求 id=4818 路由=/v1/messages 200 312ms
02:31:04INFO请求 id=4819 路由=/v1/messages 200 287ms
02:31:09DEBUG缓存命中率 0\.93
02:31:12INFO请求 id=4820 路由=/v1/messages 200 301ms
02:31:15WARN上游延迟 p99 1\.8s
02:31:18INFO请求 id=4821 路由=/v1/messages 200 295ms
02:31:21WARN上游返回 429,将在 2 秒后重试
02:31:24INFO请求 id=4822 路由=/v1/messages 200 1102ms
02:31:30DEBUG缓存命中率 0\.94
02:31:33INFO请求 id=4823 路由=/v1/embeddings 200 88ms
codexserver\+
•**已探索**
└ 读取 live\_handoff\.rs
•**已运行**
└ cargo nextest run \-E 'test\(live\_handoff\)'
└ 14 通过 · 0 失败 · 41\.3s
• 切换套件通过。窗格 PTY 在服务器替换后依然存活,长时间运行的工作负载 —— 包括下一个标签页中的 http.server —— 在之后继续响应。
• 接下来我可以将浸泡测试接入 nightly CI,并在 p95 回归时标记失败。需要这个吗?
**›**
gpt\-5\.5 medium · ~/qmp · master · 上下文使用 6%
~/qmp*master*
**❯**python3\-m http\.server 8080
在 0\.0\.0\.0:8080 上提供 HTTP 服务...
02:28:41"GET /runs/latest\.json"200
02:29:03"GET /runs/latest\.json"200
02:29:25"GET /qmp/report\.html"200
02:30:07"GET /runs/latest\.json"200
02:30:18"GET /favicon\.ico"404
02:30:42"GET /qmp/report\.html"200
02:31:09"GET /runs/latest\.json"200
所有代理集中在一个终端。点击侧边栏,它是一个真正的布局。
# 实际使用
## 深受以下公司工程师的喜爱
仅代表个人工程师,非公司背书。
JetBrainsJetBrains
DockerDocker
VercelVercel
KimiKimi
SentrySentry
GoogleGoogle
NVIDIANVIDIA
AWSAWS
ByteDanceByteDance
TencentTencent
AlibabaAlibaba
SalesforceSalesforce
IBMIBM
AtlassianAtlassian
WhopWhop
AutomatticAutomattic
# 为什么选择 Herdr
## 在需要的地方运行代理。从任何地方连接。
代理在需要的地方运行:一台服务器、一台 Mac Mini、一台沙箱虚拟机,任何你可以 SSH 到的地方。你从任何终端连接,甚至是一部手机。桌面代理管理器无法离开有图形界面的机器。Herdr 可以。为什么要从应用切换 → (https://herdr.dev/compare/)
本地### 你的机器
拆分窗格、创建标签页,并在终端来去时保持代理运行。
``
$ herdr
``
通过SSH### 像 tmux 一样,但在服务器上
SSH 进入并在远程 shell 上运行 Herdr。在你断开连接后会话依然存在,非常适合从手机 SSH 客户端使用。
``
$ ssh you@server
$ herdr
``
瘦客户端### 原生远程连接
一个连接到远程会话的本地客户端。为你安装 Herdr 到主机,桥接本地剪贴板(包括图片粘贴),并保留你的按键绑定。
``
$ herdr --remote workbox
``
# 响应式 TUI
### 当终端变小时,优先移动端适配。
Herdr 在通过手机或平板的 SSH 连接中依然可用。终端视图保持真实,而窄屏会获得一个为触屏设计的选择器。
手机上通过 SSH 的 Herdr 代理会话通过 SSH 的代理会话Herdr 在手机上的响应式切换菜单响应式切换菜单截图使用 moshi (https://getmoshi.app/)❤️ 在 iPhone 上
# 为何与众不同
## 大多数代理管理器是应用。Herdr 是一个多路复用器。
tmux 和 Zellij 擅长持久终端会话,但不理解代理。桌面代理应用理解代理,但它们只运行在一台机器上。Herdr 在你的终端中保留了多路复用器,并使其能够感知代理。查看完整对比 → (https://herdr.dev/compare/)
不是终端模拟器Ghostty、Kitty、iTerm、Alacritty:你的终端保持不变。
不是浏览器仪表板无 Web 视图,无账户,无托管控制平面。
不仅仅是面向代理的 tmux持久性加上可点击的窗格、代理状态、一个 API。
能力tmux / Zellij代理应用工作树编排工具Herdr在终端内运行✓——✓持久 PTY 会话✓有限内嵌✓远程 SSH 连接✓有限远程项目✓语义代理状态—部分工作区状态✓直接代理连接———✓代理可对其进行编排可脚本化部分工作流所有✓
### 在终端内运行
tmux/Zellij**✓**代理应用**—**工作树应用**—**Herdr**✓**
### 持久 PTY 会话
tmux/Zellij**✓**代理应用**有限**工作树应用**内嵌**Herdr**✓**
### 远程 SSH 连接
tmux/Zellij**✓**代理应用**有限**工作树应用**远程项目**Herdr**✓**
### 语义代理状态
tmux/Zellij**—**代理应用**部分**工作树应用**工作区状态**Herdr**✓**
### 直接代理连接
tmux/Zellij**—**代理应用**—**工作树应用**—**Herdr**✓**
### 代理可对其进行编排
tmux/Zellij**可脚本化**代理应用**部分**工作树应用**工作流所有**Herdr**✓**
# 你将获得什么
## 真正的窗格、代理状态,以及一个驱动它们的 API。
没有重建的聊天视图。真正的进程在真正的 PTY 中运行,具有可点击的布局、持久的会话,以及一个代理自己也能使用的控制界面。
### 真正的窗格
支持鼠标的窗格、标签页和工作区。保留你的 shell、字体和按键绑定。
### 代理状态
一眼查看整个会话中的阻塞、工作中、已完成和空闲状态。
### 持久性
断开并重新连接。会话和代理在终端关闭后依然存活。
### 控制界面
命令行和 JSON socket API 暴露了工作区、窗格、输出和等待操作。
``
# 创建工作区结构
herdr workspace create --cwd ~/project --label api
herdr tab create --label logs
# 拆分窗格并运行任务
herdr pane split 1-1 --direction right
herdr pane run 1-2 "just test"
# 等待、检查并继续
herdr wait agent-status 1-1 --status done
herdr pane read 1-2 --source recent-unwrapped
``
# 集成
## 将你现有的代理带入集群。
Pi
Claude Code
Codex
Droid
Amp
OpenCode
Grok CLI
Hermes
Cursor
Antigravity
Kimi
Kiro
Copilot
Qoder CLI
MastraCode
\+ 你的 (https://herdr.dev/docs/integrations/)
任何终端代理开箱即用。[集成](https://herdr.dev/docs/integrations/) 提供更丰富的状态和会话恢复能力。
# 市场
## 构建于其上,而不仅仅是与其一起工作。
Herdr 的 CLI 和 socket API 是插件接口,因此社区插件可以像代理那样驱动它:通知器、布局预设、链接处理器、发布检查。浏览人们已经构建的内容,或通过一个 GitHub 主题发布你自己的。
# 启动集群
## 安装 Herdr,运行两个代理,断开一次。
当你的终端消失后集群仍在运行,那第一次体验就能体现其价值。
相似文章
Herdr:运行在终端中的AI代理复用器
Herdr是一个开源的终端型AI代理复用器,用于管理多个AI代理会话,支持工作区、标签页、窗格和鼠标操作。它作为后台服务器运行,允许用户分离和重新连接,而不会丢失代理进程。
Herdr Studio
Herdr Studio 是一个社区构建的浏览器客户端,提供可视化工作空间,用于管理终端、会话、文件、差异和 Git 工作树,使开发者能够从任何现代浏览器监控和控制代理会话。
连接机器
Herdr 0.9 版本引入了多机支持,允许用户通过 SSH 从单个 TUI 界面管理和控制多台远程机器上的代理,从而提升工作流程效率。
@tobi:我向人们解释 herdr 最喜欢的方式就是打开一个新工作区,启动一个 agent,然后告诉它:读取 `herdr --…
@tobi 的一条推文,演示了如何使用 CLI 工具 herdr——启动一个 agent 并运行 `herdr --skill`,来打造一个科幻电影风格的骇客终端界面。
Herdr 发布原生应用
Herdr 推出了原生桌面应用,可在空间、标签页和远程机器之间管理终端与编码智能体,并提供 Linux、macOS 和 Windows 的安装程序。