herder:究極のエージェントマルチプレクサーなのか?

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00「Herder」は、普段使っているターミナル内で動作するエージェントのマルチプレクサです。
00:00:05複数のコーディングエージェントを隣り合わせのペインやタブで実行し、
00:00:10どれが稼働中で、どれが停止中か、あるいは完了したかを把握できます。単一のRustバイナリで
00:00:15システム通知機能も備えています。Electronも不要で、別のアプリを立ち上げる必要もありません。巧妙な方法でSSH上でも動作します。
00:00:20人気の「zellij」のようなツールがある中で、なぜわざわざHerderを使うのでしょうか?チャンネル登録して、その理由を探っていきましょう。
00:00:28Herderを開発したのはogle-can-celixという開発者です。2000年代初頭のファンだから
00:00:34名前から「e」を抜いたのではないかと推測していますが……それはさておき、Herderは
00:00:39羊飼いのように複数のエージェントを束ねるためのツールです。これは、開発にAIを利用している
00:00:45ほとんどの開発者にとって共通の課題です。なぜなら、各エージェントの
00:00:49状況を把握し続けるのは難しいからです。Herderは、ターミナルマルチプレクサである「tmux」から
00:00:54多くのインスピレーションを得ています。tmuxはタブや分割ペイン、セッションの永続化が可能ですが、
00:01:00AIエージェントが存在する何十年も前に作られたものです。そのため、そのペイン内で
00:01:06エージェントを動かしても、それが存在することすら把握できません。だからこそWarpやzellijのようなツールが存在し、
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では、クイックデモを見ていきましょう。Homebrewやcurl、あるいは
00:01:46Nix flake(個人的に追加されて嬉しいオプションです)でインストールした後、`herder`コマンドを実行するだけで、
00:01:50ターミナル、いくつかのワークスペース、そしてエージェントを表示するこの画面が表示されます。少しズームしているので、
00:01:56すべては見えませんが、Herderの良さを精一杯お見せします。現在ワークスペースはありません。デフォルトでは
00:02:00tmuxと同様に、プレフィックスキーは「Ctrl + b」になっていますが、変更方法は後ほど説明します。
00:02:05プレフィックスは既に有効化されており、下のナビゲーションバーで確認できます。
00:02:10そこで「Shift + n」を押すと、新しいワークスペースが作成されます。もちろん
00:02:14キーボードだけで操作可能です。プレフィックスと「?」を押せば、すべてのキーボードショートカットを確認できますが、
00:02:19マウスを使うこともできます。新しいタブを「2」という名前で作成し、
00:02:23右クリックでタブを閉じたり、ワークスペース名を「test」に変更したりできます。新しいワークスペースを作ったり、メニューから設定にアクセスしたりも可能です。
00:02:28さらに、水平・垂直分割の作成や、特定のペインの名前変更、ペイン間の移動なども、
00:02:34すべてマウスで行えます。ですが、Herderの真の売りは、エージェントとの対話機能です。
00:02:38現在はbashを使っていますが、fishが好きなので両方のターミナルを変更します。
00:02:43そして上のペインで「Claude Code」を、下のペインで「Codex」を開きます。
00:02:46すると、Herderが自動的にエージェントを検知し、ステータスを表示してくれました。
00:02:51Claudeは「ブロック中」、Codexは「待機中」と出ていますね。ディレクトリへのアクセス権を与えてみましょう。
00:02:55両方に「今どのモデルを使っているか」というプロンプトを投げてみると、
00:03:00Herderが即座に更新され、Claudeが稼働中であることが分かります。これはCodex CLIでも同様です。
00:03:05ワークスペースを間違えたようなので、削除して「test」という名前に変更します。
00:03:09Herderでは、エージェント側からワークスペースやタブ、分割画面を作ることもできます。
00:03:15一度Herderから抜けて(プレフィックスと「q」を押します)、CLIの全オプションを見てみましょう。
00:03:20再びHerderに戻ると、元のワークスペースとエージェントの状態が完全に保持されています。
00:03:24これが非常に強力なポイントです。では、新しいワークスペースを作り、
00:03:29ディレクトリに移動してからClaude Codeを開きます。ここで
00:03:34Herder CLIを使って、Claude Codeを2つ起動するよう指示してみます。
00:03:38一つはプロジェクト最大のファイルを要約するプロンプト、もう一つは
00:03:44コードベース内にハードコードされたAPIキーや秘密情報を検索するプロンプトです。
00:03:49新しいペインが立ち上がりました。見やすいようにズームアウトしますね。もう一つの処理も始まりました。
00:03:54上へスクロールすると、一つは完了したようです。エージェントにも
00:03:58適切なタイトルが付いていますね。「Claude secrets」「discord」のように。APIキーは見つからなかったようです。
00:04:03ここから両方のペインの出力を要約させ、Claudeに閉じるように指示できます。
00:04:09最初のペインの情報を取得して閉じ、もう片方も同じように処理しています。
00:04:14両方閉じましたね。最後に素敵な要約を返してくれました。
00:04:18Herderはターミナルにインストールする単なるバイナリなので、
00:04:23Macと同じようにLinuxサーバーにSSHしてHerderをインストールすれば、
00:04:28先ほど開いたセッションが復元されます。codeを開いているペインと、
00:04:32Vimでコードを確認しているペインがそのままです。ただし問題は、
00:04:36ローカルのMacで行っていた設定が引き継がれないことです。設定ファイルはシンプルで、
00:04:41正直に言うと、設定はそれほど多くありません。キーを
00:04:45高度なキーボードショートカットをたくさん設定している場合、これは面倒になります。
00:04:50これを回避する方法が、Herderの「リモートフラグ」を使って
00:04:55直接サーバーにSSH接続することです。その仕組みを説明します。
00:05:01Herderはサーバーと、Unixソケットで通信する薄いクライアントで動作します。
00:05:06クライアントがサーバーにキー入力を送り、サーバーがタブやペイン、セッションの永続化を管理します。
00:05:11SSHの「remote」モードでは、サーバーはリモートマシン上で動き、
00:05:18クライアントはローカルで動きます。キー入力はUnixソケット経由でリモートサーバーに送られます。
00:05:24サーバーはリモートマシンのファイルをクライアントに表示し、
00:05:30ですがクライアント自体は、接続先のローカルマシンにある設定をすべて利用できます。
00:05:35SSHマシンに接続すると、先ほど見ていたコードが開かれています。
00:05:40ここで「Ctrl + b」を押しても何も起きません。Mac側の設定が反映されており、
00:05:45「Ctrl + space」でプレフィックスが効くようになっています。
00:05:49メニューを見てみましょう。キーバインドの確認以外にも、テーマの変更が可能です。
00:05:54NordからCatppuccinまで多彩なテーマがあり、サウンド通知や
00:05:59トースト通知の設定も可能です。紹介しきれなかった機能もまだたくさんあります。
00:06:04Worktreeとの統合や、公式エージェントプラグインなどもあって、
00:06:10Herderを閉じる直前のセッションを正確に再開できます。何より
00:06:15普段使いのターミナルで動作するというのが最大の売りです。私は
00:06:19zellijも大好きですが、普段の設定をそのままに、エージェントを管理するために
00:06:24ターミナルの新しいタブでHerderを立ち上げるだけでいいというのは最高です。
00:06:29zellijのブラウザ機能は少し恋しいかもしれませんが、あまり使っていなかったので問題ありません。
00:06:35Windowsユーザーの方には残念なお知らせですが、Unixソケットと
00:06:39ターミナルPTYの仕組み上、Windowsでの動作は現在サポートされていません。
00:06:45ですが、これを機にLinuxのデュアルブートに踏み切るのもいいかもしれませんね。
00:06:50そして今これを見ているWindowsユーザーの方には、残念なお知らせがあります。
00:06:54Unixソケットの問題と、Herderが端末のPTYを使用しているという事実により、
00:06:59動画が役に立った方はチャンネル登録をお願いします。
00:07:04それではまた。

Key Takeaway

Herderは、既存のターミナル環境にエージェント管理能力とセッション永続性を付与し、SSH越しでもローカルと同等の操作性を実現するターミナルマルチプレクサである。

Highlights

  • HerderはRatatuiで構築された単一のRustバイナリであり、ターミナル環境で複数のAIエージェントを一元管理できる。

  • tmuxと同様の永続的なセッション管理機能に加え、エージェントの稼働状況やステータスを可視化する機能を備えている。

  • ソケットAPIを介してエージェント自身がHerderのワークスペース、タブ、ペイン操作を直接制御できる。

  • SSHのリモートモードを使用すると、サーバー上のエージェントを操作しつつ、ローカルマシンのキーバインドや設定をそのまま適用できる。

  • UnixソケットとPTYを利用する設計のため、現時点ではWindows OSをサポートしていない。

Timeline

Herderの開発背景と基本構造

  • Herderは複数のコーディングエージェントを同一ターミナル内で管理するマルチプレクサである。
  • 従来のtmuxは永続性を持つがAIエージェントの存在を把握できず、専用アプリは学習コストが高い。
  • 単一のRustバイナリとして実装されており、ターミナルが使用可能なあらゆる場所で動作する。

開発者が抱える「AIエージェントの稼働状況を把握し続けるのが難しい」という課題に対し、tmuxの永続性と専用エージェント管理ツールの利便性を統合した。Electronのような外部アプリを必要とせず、Ratatuiを用いた描画によりSSH接続先でも同一の操作感を提供する。

エージェント操作とワークスペースのデモ

  • プレフィックスキーを用いたキーボード操作のほか、マウスによるペインやタブの直感的な制御に対応している。
  • Herderは実行中のエージェントを自動検知し、ブロック中や待機中といったステータスをリアルタイムで表示する。
  • HerderのCLIを通じて、エージェント自身に新しいペインやタスクを生成・指示することが可能である。

実際のデモでは、Claude CodeやCodexを異なるペインで起動し、それぞれのステータスが管理画面に反映される様子が示された。また、特定ディレクトリの検索やファイル要約などのタスクをCLI経由でエージェントに自動実行させ、完了後にペインを閉じるまでのフローが構築されている。

SSH接続と高度な設定管理

  • SSHのリモートフラグを使用することで、リモート環境でもローカル側の設定ファイルやキーバインドを維持できる。
  • サーバー側でUnixソケット経由の通信を行い、クライアント側で表示や操作を制御する仕組みを採用している。
  • テーマの変更や通知設定など、カスタマイズ可能な要素が提供されている。

リモート接続時に設定が引き継がれない問題を、リモートフラグによるクライアント・サーバー分離アーキテクチャで解決している。これにより、Linuxサーバー上のセッションであっても、手元のMac側で定義した「Ctrl + space」のようなプレフィックスキーや好みのテーマ設定をそのまま利用可能である。

Community Posts

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

Write about this video