herder:这是终极的智能体多路复用器吗?

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00Herder 是一个在你终端里运行的代理复用器,
00:00:05让你可以在不同的窗格或标签页中并排运行多个编程代理,
00:00:10并实时查看哪些正在运行,哪些被阻塞,哪些已完成。它内置系统通知,且是一个单一的 Rust 二进制文件,
00:00:15这意味着无需 Electron 或其他独立应用。它甚至有一种巧妙的方法可以在 SSH 上工作。但随着
00:00:20像 cmux 这样的工具越来越受欢迎,为什么要费心使用 Herder 呢?点击订阅,让我们一探究竟。
00:00:28Herder 是由一位名叫 Ogle Can Celix 的开发者构建的,我猜他把 “herder” 这个词里的 e 去掉了,
00:00:34可能是因为他是 2000 年代初期的粉丝吧。我不确定,但我想 Herder 是一个
00:00:39可以用来“放牧”多个代理的工具,就像牧羊人一样。这对于大多数
00:00:45使用 AI 进行开发的开发者来说是个难题,因为很难
00:00:49跟踪每个代理在做什么。Herder 从 Tmux 那里汲取了大量灵感,Tmux 是一个
00:00:54具有标签页、拆分窗格并能在你断开连接后保持会话的终端复用器。但 Tmux 是
00:01:00几十年前构建的,远在 AI 代理出现之前。所以如果你在它的某个窗格里运行代理,
00:01:06它根本不知道代理的存在或状态。这就是为什么 Warp 或 cmux 这样的工具存在,
00:01:12它们把你从自己的终端拉出来,放进它们自己的环境中,所以你必须学习别人的工作流程。
00:01:18这就是为什么 Ogle Can Celix 构建了 Herder,它能两者兼顾:Tmux 的持久性加上
00:01:24内置的代理感知能力。而且因为 Herder 只是一个用 Ratatui 构建的 Rust 二进制文件,整个东西其实就是
00:01:29向你的终端渲染文本,所以它可以在你的终端能运行的任何地方运行,包括通过 SSH。此外
00:01:35还有一个套接字 API,这意味着代理本身可以驱动 Herder,这看起来真的很令人印象深刻。
00:01:40事实上,让我们快速演示一下。安装 Herder 后,使用 brew、curl 甚至
00:01:46Nix flake(我很高兴他们添加了这个选项),你只需要运行 herder 命令,它就会给你
00:01:50展示这个视图,显示终端、一些工作区和一些代理。现在我放大了一点,所以有
00:01:56一些内容你可能看不全,比如命令的完整范围,但我会尽力
00:02:00展示 Herder 的功能。这里你可以看到没有任何工作区,默认的快捷键前缀
00:02:05是 Ctrl+b,类似于 Tmux,但我稍后会展示如何更改它。现在前缀已经
00:02:10激活了,从下面的导航栏可以看到,所以我只需要按下
00:02:14Shift+n 来创建一个新工作区。当然,你可以完全使用键盘进行导航,
00:02:19所以我可以按前缀加问号来查看所有键盘快捷键,但你也可以
00:02:23使用鼠标。我可以创建一个名为 2 的新标签页,右键点击来关闭标签页、重命名我的
00:02:28工作区为 test,创建新工作区,在菜单中访问这些设置等等。我甚至可以
00:02:34创建水平和垂直分割,以及重命名特定的窗格,并在
00:02:38窗格之间导航,所有这些都可以使用鼠标完成。但 Herder 真正的卖点在于它如何与代理交互。
00:02:43目前使用的是 bash,但我喜欢用 fish,所以我要把这两个终端都改成 fish,
00:02:46然后我要在上面打开 Claude Code,在下面打开 Codex。现在我们已经可以看到
00:02:51Herder 已经自动识别出了这些代理并给出了状态:Claude 是阻塞的,
00:02:55而 Codex 是空闲的。让我们给它们两个都提供这些目录的访问权限,当然我也可以
00:03:00给它们发送提示,比如“我正在使用什么模型”,Herder 会立即更新
00:03:05告诉我们 Claude 正在工作,这也适用于 Codex CLI。我还注意到我在错误的
00:03:09工作区里,所以删掉这个,把那个重命名为 test。但使用 Herder,代理也可以
00:03:15创建工作区、标签页和分割窗格。让我们看看它是如何工作的。我要退出 Claude Code,
00:03:20按下前缀加 q,然后你可以看到 Herder CLI 给我们的所有选项。
00:03:24所以我要做的是回到 Herder。这是一个卖点:它会恢复到
00:03:29我之前打开的确切工作区和代理,保留相同的会话。但我现在要创建一个
00:03:34新工作区,进入一个目录,然后打开 Claude Code。现在
00:03:38我要给它一个提示,使用 Herder CLI 启动两个包含 Claude Code 的窗格,
00:03:44一个运行此提示以总结项目中最大的文件,另一个运行此提示
00:03:49以在代码库中搜索任何硬编码的 API 密钥或机密。它已经加载了一个新的窗格,
00:03:54里面运行着 Claude Code,我实际上要缩小一点以便看得更清楚。现在它正在
00:03:58代码库中运行另一个提示。我们可以向上滚动看看这个已经完成了,我们也可以看到
00:04:03它给出了适当的标题,比如 “Claude Secrets” 和 “Discord”。这里它没有找到硬编码的 API
00:04:09密钥。从这里我们可以总结两个窗格的输出,然后让 Claude 关闭它们。现在
00:04:14它已经从第一个窗格获取了信息并将其关闭,现在正在对第二个窗格执行相同的操作,
00:04:18它也关闭了。在这里它给了我一个不错的总结。因为 Herder
00:04:23只是一个你可以安装到终端的二进制文件,我可以 SSH 进入一台 Linux 服务器并安装 Herder,
00:04:28方式和我安装在 Mac 上一样。你可以看到我之前做过这个,它恢复了我的上一个
00:04:32会话。所以我在一个窗格中打开了代码,在另一个窗格中用 Vim 查看代码。
00:04:36但这里的问题是,它没有带上我在本地 Mac 机上的 Herder 配置设置。
00:04:41老实说,我没有太多设置,我只是把按键从
00:04:45Ctrl+b 改成了 Ctrl+space,把主题改成了 “terminal”。但如果我有一个高度编辑的
00:04:50包含特定快捷键的配置文件,这可能会很烦人。所以一种解决方法
00:04:55是使用带有远程标志的 Herder,直接 SSH 进入你的服务器,我会在按下回车前
00:05:01解释一下它到底做了什么。Herder 的工作原理是运行一个服务器和一个通过
00:05:06Unix 套接字通信的轻量级客户端。客户端将按键发送给服务器,服务器管理
00:05:11标签页、窗格、持久性等。现在在 SSH 的情况下,使用远程模式时,服务器运行在
00:05:18远程机器上,而客户端实际运行在你的本地机器上,所以它通过 Unix
00:05:24套接字发送按键到服务器,服务器可以向客户端显示机器上的文件,
00:05:30但客户端本身可以使用所连接的本地机器上的所有配置设置。
00:05:35让我们看看实际效果。回到刚才的地方,现在如果我按下回车,
00:05:40它会直接连接到我的 SSH 机器,我们可以看到上面打开了代码,还有一个
00:05:45我们用 Vim 查看的代码文件。但如果我按 Ctrl+b,它似乎没有任何反应,因为它是使用
00:05:49我 Mac 上的配置,也就是用 Ctrl+space 来查看前缀。趁现在,让我们
00:05:54看看我们还能在菜单里做什么。我们可以查看快捷键,也就是我之前展示的,
00:05:59我们还可以更改主题。Herder 提供了许多主题可供选择,从 Nord 到 Gruvbox 甚至
00:06:04Catppuccin。还有一个触发声音警报和吐司提示菜单的选项,你可以通过
00:06:10终端或系统进行更改。现在,Herder 还有许多我
00:06:15没有涉及到的功能,比如 worktree 集成、官方代理集成(你们在演示中看到过其中的一些),
00:06:19它们让你的代理能够访问 Herder 的官方技能,并让你恢复
00:06:24你关闭 Herder 前的确切会话。老实说,它能在你现有的
00:06:29终端里工作,对我来说是最大的卖点,因为我虽然很喜欢用 cmux,但我更喜欢用 WezTerm,
00:06:35我已经把它配置成了我喜欢的样子。而且如果我想管理我的
00:06:39代理,我要做的就是在 WezTerm 里打开一个新的终端标签页,直接运行 Herder。是的,你
00:06:45会怀念 cmux 的网页浏览器,但老实说,我平时也没怎么用它。至于现在
00:06:50正在观看视频的 Windows 用户,我有坏消息要告诉你们,因为 Unix
00:06:54套接字机制,以及 Herder 使用终端 PTY 的事实,目前在 Windows 上支持并不理想,
00:06:59在录制时是这样。但如果你正在使用 Windows,我想是时候下定决心,
00:07:04双启动 Linux 了。是的,WSL 确实存在,但它毕竟不完全一样,对吧?

Key Takeaway

Herder 通过在传统终端复用器的基础上增加代理感知能力和套接字控制接口,实现了对多个编程代理的高效管理与跨设备会话持久化。

Highlights

  • Herder 是一个基于 Rust 构建的终端代理复用器,通过单一二进制文件运行,无需 Electron 等外部环境。

  • 该工具具备代理感知能力,能实时显示 Claude 或 Codex 等代理的工作状态(阻塞或空闲)。

  • 其套接字 API 允许代理本身控制工作区布局、创建拆分窗格并执行自动化任务。

  • 远程模式通过本地客户端与远程服务器的 Unix 套接字通信,确保在 SSH 会话中仍能使用本地配置文件。

  • Herder 支持通过 brew、curl 和 Nix flake 安装,并提供包括 Nord、Gruvbox 和 Catppuccin 在内的多种终端主题。

Timeline

Herder 的核心功能与设计定位

  • Herder 将类似 Tmux 的终端持久性与 AI 代理感知能力相结合。
  • 该工具采用 Ratatui 库编写,完全作为终端文本渲染,支持 SSH 环境。
  • 内置的套接字 API 让外部代理能主动操控终端界面。

传统终端复用器无法识别 AI 代理,而 Herder 填补了这一空白。作为轻量级 Rust 二进制文件,它消除了对 Electron 应用的需求。它允许开发者在不改变工作流的情况下,统一管理多个代理的状态。

界面导航与代理交互演示

  • 用户可通过默认的 Ctrl+b 前缀或鼠标操作管理窗格和工作区。
  • Herder 能自动识别 Claude Code 和 Codex 等代理的即时状态。
  • 代理能够通过 CLI 命令自动触发窗格分割和任务总结。

演示展示了如何通过 Herder 同时管理多个 Claude Code 实例。Herder 不仅显示代理是否阻塞,还能让代理自动执行搜索和代码分析任务,并在任务完成后自动关闭对应窗格,实现自动化闭环。

SSH 远程模式与配置同步

  • 远程模式使本地客户端的快捷键配置能在 SSH 服务器端生效。
  • 客户端与服务器通过 Unix 套接字同步,保证用户体验的一致性。
  • 目前 Windows 系统对该工具的支持有限,Linux 环境兼容性最佳。

在连接到远程服务器时,Herder 将按键处理保留在本地,从而避免了远程机器缺乏本地个性化配置(如快捷键修改)的问题。虽然 Windows 下的 PTY 支持尚不完善,但其在类 Unix 系统下的表现满足了多会话管理需求。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video