HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Goで書かれた、また一つ別のミニマルで軽量なターミナルマルチプレクサ

Show HN: Yet another minimal and lightweight terminal multiplexer written in Go. (github.com)

20 pointsby patriceckhart7 コメント

要約

hrdxは、エージェント時代のために構築された実験的でミニマルかつ軽量なターミナルマルチプレクサです。プロジェクトをサイドバーのワークスペースとして管理し、ワークスペースごとにタブ、そして実際のターミナルペインでCodex CLI、Claude Code、pi、zot、またはプレーンシェルを並べて実行できます。ペインは本物のPTYセッションであり、エージェントのTUIはスタンドアロンの場合と全く同じように動作します。すべての要素が視覚的に把握でき、セッションは中断したところから再開されます。JSONファイルでカスタマイズ可能で、JSONソケットAPIを通じて外部からのスクリプト操作も可能です。

全文翻訳

hrdx.dev これは何ですか? hrdxは、エージェント時代のために構築された実験的で、ミニマルかつ軽量なターミナルマルチプレクサです。サイドバーのワークスペースとしてプロジェクトを管理し、ワークスペースごとにタブを持ち、実際のターミナルペインでCodex CLI、Claude Code、pi、zot、またはプレーンシェルを並べて実行できます。あるプロジェクトでエージェントを起動し、次のプロジェクトに切り替えて、サイドバーのスピナーが誰がまだ作業しているかを示してくれるようにします。 ラッパーではなく、リアルなターミナルです。 各ペインは本物のPTYセッションであり、背後には完全なターミナルエミュレータがあります。エージェントのTUIは、スタンドアロンの場合と全く同じように動作します:ストリーミング、スラッシュコマンド、セッション、マウスサポート、すべてです。ペインはクリーンなターミナルIDを提供するため、機能検出(capability-sniffing)TUIはマルチプレクサ内で動作するレンダリングパスを選択し、HRDX=1はツールがhrdx内で実行されていることを検出できるようにします。 すべてが見えるように。 サイドバーには、ワークスペース、Gitブランチ、ペインの階層が表示され、ワークスペースに複数のタブがある場合にのみタブ行が追加されます。各ペインには共有ステータス円があります:エージェントは作業中にアニメーション化されたブレイルスピナーになり、フォーカスされていないエージェントは終了時にオレンジ色に変わります。ペインにフォーカスすると認識され、緑色に戻ります。 ターミナルのように感じます。 スクロールバック、クリップボードコピー付きのマウス選択、ドラッグしてリサイズする分割、ドラッグして並べ替えるワークスペース、右クリックコンテキストメニュー、およびkittyキーボードプロトコルパススルーにより、ctrl+1のようなエキゾチックなコードでもエージェントに届きます。 中断したところから再開します。 終了して再起動しても、シェルとエージェントは軽量セッションホルダーで実行を継続し、中断したまさにその場所で再アタッチされます。コマンドなどもすべてです。ワークスペース、タブ、分割、比率も復元され、セッションが完全に失われた場合でも、エージェントは独自のセッションストアから最新の会話を再開します。 調整可能。 設定ウィンドウ(ctrl+b , またはサイドバーの歯車アイコン)で、個々のエージェントのオン/オフを切り替えたり、終了したターンの通知音(自分のオーディオファイルを含む)を選択したり、カラーテーマを変更したりできます。ユーザーテーマは簡単なJSONファイルです。すべて永続化されます。テーマを参照してください。 独自のエージェントを持ち込む。 カスタムハーネスとして任意のエージェントCLIを小さなJSONファイルで登録できます。これには、サイドバースピナーと終了サウンド用の独自のビジー検出が含まれます。組み込みエージェントと同様に、ピッカー、サイクリング、設定に表示されます。カスタムハーネスを参照してください。 外部からスクリプト化可能。 JSONソケットAPIにより、スクリプトやエディタはワークスペースとペインの状態を検査し、プロジェクトを開き、ペインを生成し、エージェントにタイプし、終了を待ち、画面を読み取り、ライブイベントを購読できます。ソケットAPIを参照してください。 インストール curl -fsSL https://www.hrdx.dev/install.sh | bash irm https://www.hrdx.dev/install.ps1 | iex macOS、Linux、またはWindows(10 1809+ / 11、ConPTY経由)、およびPATHに少なくとも1つのエージェントCLIが必要です:codex、claude、pi、またはzot。 どのサポートされているプラットフォームでも `hrdx update` で更新できます。 実行 hrdx 複数のプロジェクトを同時に開くか、デフォルトのエージェントを選択します: hrdx --cwd ~/Developer/api --cwd ~/Developer/web hrdx --agent claude フラグ フラグ | 目的 --cwd PATH | プロジェクトをワークスペースとして開く、繰り返し可能 --agent ID | 新しいペインのデフォルトエージェント:zot、pi、claude、codex(デフォルトはzot) --provider ID | すべてのzotペインにプロバイダーを渡す(zotのみ) --model ID | すべてのzotペインにモデルを渡す(zotのみ) --reasoning LEVEL | 推論レベルを設定する(zotのみ) --continue | 各プロジェクトの最新セッションを再開する --codex-bin PATH | 特定のcodexバイナリを使用する --claude-bin PATH | 特定のclaudeバイナリを使用する --pi-bin PATH | 特定のpiバイナリを使用する --zot-bin PATH | 特定のzotバイナリを使用する --shell PATH | シェルペイン用のシェル(デフォルトは$SHELL。Windowsでは解決可能な場合のみ、それ以外は%COMSPEC%/powershell.exe) --state PATH | ワークスペース永続化用の状態ファイル(空の場合は無効) --fresh 保存されたワークスペースを無視してクリーンに開始する --api | Unixソケットで制御APIをサーブする(デフォルトはオン、--api=falseで無効) --persist | セッションホルダーを介して再起動中にペインプロセスをアクティブに保つ(デフォルトはオン) ネイティブWindowsのhrdx.exeをGit Bashから起動すると、Windowsが解決できないMSYS専用のSHELL値(例:/usr/bin/bash)を無視し、%COMSPEC%にフォールバックします。ペインにGit Bashを使用するには、ネイティブパスを明示的に渡してください。例:hrdx --shell "C:/Program Files/Git/bin/bash.exe"。 キー すべてのキーはフォーカスされたターミナルに送信されます。ただし、ctrl+bプレフィックス(tmuxスタイル)を除きます。 ctrl+b の後 | アクション c または C | 右/下に分割(ピッカーを開きます:インストール済みエージェントまたはシェル) a または A | デフォルトエージェントを直接右/下に分割 s または S | 新しいシェルペインを直接(右/下)分割、%/" および |/- も同様 w | 新しいワークスペース(ディレクトリプロンプトとタブ補完、その後エージェント/シェルピッカー) t | 現在のワークスペースで新しいタブ(エージェント/シェルピッカーを開きます) n または p | 次のタブ / 前のタブ ] または [ | 次のワークスペースタブ / 前のワークスペースタブ、またはshift+tab ; | 次のペイン / 前のペイン。繰り返しジャンプするためにプレフィックスモードを維持します。escで終了します。 / | すべてのワークスペース、タブ、ペインのファジーファインダー:タイプしてフィルタリング、矢印で選択、Enterでジャンプします。 r | フォーカスされたペインの名前を変更します。 m | ペインコンテキストメニューを開きます。 = | すべての分割を均等化します。 u または d (またはpgup/pgdown) | フォーカスされたペインの履歴をスクロールします。 esc / G | ライブ出力に戻る、選択をクリアします。 , | 設定ウィンドウ:エージェント、通知の有効/無効を切り替えます。 x | ペインを閉じます(隣接するペインがそのスペースを取ります)。 X | ワークスペースを閉じます。 ctrl+b | ペインにリテラルのctrl+bを送信します。 q | 終了します。 left / right | フッターのヒント行をスクロールします(狭いターミナル)。 プロセスが終了したペイン(例:シェルでexit)は自動的に閉じます。隣接するペインがスペースを取ります。開始に失敗したペインはエラーとともに表示されたままになります。 カスタムキー プレフィックスキーは、状態ファイル(macOSでは~/Library/Application Support/hrdx/keys.json、Linuxでは$XDG_CONFIG_HOME/hrdx/keys.json、Windowsでは%AppData%\hrdx\keys.json)の隣にあるkeys.jsonを介して再マッピング可能です。アクション名を単一のキーにマッピングします。オーバーライドは、そのアクションのデフォルトキーを置き換えます。プレフィックスアクションは、内部のアクションだけでなく、ctrl+bトリガー自体を再マッピングします: { "find": "f", "quit": "Q", "agent-cycle": "g" } アクション:prefix, literal, quit, picker-right, picker-down, agent-right, agent-down, agent-cycle (デフォルトではバインドされていません), shell-right, shell-down, workspace, tab-new, tab-next, tab-prev, space-next, space-prev, pane-next, pane-prev, find, close-pane, close-space, equalize, rename, menu, settings, scroll-up, scroll-down, live。 マウス すべてクリック可能です:サイドバーのワークスペース、タブ、ペインの行、メインのタブバー、メニュー、および下部にある設定エントリ。ワークスペースをドラッグして並べ替え、ペインの境界線をドラッグしてリサイズし、右クリックしてコンテキストメニューを表示し、左ボタンでドラッグしてテキストを選択します(クリップボードに直接コピーされます)。ホイールイベントはカーソル下のペインに送信されます:エージェントTUIは自身をスクロールし、シェルはローカル履歴をスクロールし、shift+pgup / shift+pgdnはキーボードから同じことを行います。 リモートおよびコンテナペイン 各ペインは実際のPTYであるため、シェルペインはリモートホスト、Dockerコンテナ、またはKubernetesワークロードに接続できます。インタラクティブシェルについては: ssh user@host docker exec -it -w /workspace container-name sh kubectl exec -it -n namespace deploy/app -- sh ターゲットにインストールされたエージェントは直接起動できます: ssh -tt user@host 'cd /path/to/project && exec codex' docker exec -it -w /workspace container-name codex kubectl exec -it -n namespace deploy/app -- codex サポートされているエージェントまたはカスタムエージェントについては、同じパターンを使用してください。認証、エージェント実行可能ファイル、設定、認証情報、およびプロジェクトファイルはターゲットで利用可能である必要があります。リモートおよびコンテナエージェントをピッカー、エージェントサイクリング、設定、サイドバーに表示するには、クライアントコマンドをカスタムハーネスとして登録します: [ { "kind": "remote-codex", "binary": "ssh", "args": ["-tt", "user@host", "cd /path/to/project && exec codex"] }, { "kind": "docker-codex", "binary": "docker", "args": ["exec", "-it", "-w", "/workspace", "container-name", "codex"] }, { "kind": "k8s-codex", "binary": "kubectl", "args": ["exec", "-it", "-n", "namespace", "deploy/app", "--", "codex"] } ] ラッパースクリプトは、ホスト、コンテナ、名前空間、ポッド、作業ディレクトリ、または認証設定が動的な場合に役立ちます。ハーネスバイナリをラッパーパスに設定し、固定パラメータをすべて指定します。