hrdx Terminal Multiplexer

hrdx 是一款針對 AI agent 優化的終端機多工處理器

hrdx 是一款使用 Go 語言編寫的實驗性、極簡化終端機多工處理器,允許開發者並排運行多個 AI 編碼 agent(例如 Claude Code、Codex CLI、pi 和 zot)以及標準 shell。它將專案組織為側邊欄中的工作區,提供一個集中化的環境來監控並與不同目錄下的各種 agent 進行互動。

核心架構:真實終端機與持久性

與終端機封裝工具不同,hrdx 為每個面板(pane)使用真實的 PTY(偽終端)會話,並配備完整的終端機模擬器。這確保了 Agent TUI(文字使用者介面)能保持完整功能,包括串流、斜線指令(slash commands)以及滑鼠支援。工具可以透過 HRDX=1 環境變數來偵測自己是否正在 hrdx 中運行。

會話持久性

hrdx 使用輕量級的會話持有者進程(session holder process),即使在 TUI 關閉後仍能保持面板進程處於活動狀態。重新啟動時,hrdx 會重新連接到這些會話,恢復執行中指令的確切狀態、捲動回溯(scrollback)以及螢幕佈局(包括工作區、分頁與分割比例)。

工作區與 Agent 管理

視覺化組織

介面包含一個側邊欄,顯示工作區、Git 分支與面板的層級結構。為了減少雜亂,只有在工作區包含多個分頁時才會加入分頁列。

Agent 狀態追蹤

每個面板都包含一個狀態指示器來追蹤 agent 的活動:

  • Working: Agent 會顯示動畫化的點字旋轉器(braille spinners)。
  • Finished (Unfocused): 當一個未聚焦的 agent 完成任務時,會變為橘色。
  • Acknowledged: 聚焦該面板後,指示器會恢復為綠色。

自定義 Agent 整合

使用者可以透過 harness.json 檔案將任何 agent CLI 註冊為自定義 harness。這讓第三方 agent(例如 Aider 或 Goose)能夠整合進 hrdx 生態系統,使其能出現在選擇器與側邊欄中,並透過自定義的忙碌偵測字串來驅動狀態旋轉器。

可擴展性與控制

用於自動化的 Socket API

hrdx 提供一個 JSON socket API(透過 Unix socket),允許外部腳本、編輯器或其他 AI agent 來驅動會話。支援的指令包括:

  • workspace.create: 開啟一個目錄作為工作區。
  • pane.create: 在特定工作區中新增一個面板。
  • pane.send_text: 在面板中輸入文字。
  • pane.read: 取得可見螢幕的純文字內容。
  • pane.wait: 阻塞直到 agent 進入閒置或忙碌狀態。

遠端與容器化工作流

因為每個面板都是真實的 PTY,hrdx 支援遠端主機、Docker 容器以及 Kubernetes 工作負載。使用者可以透過類似 ssh -tt user@host 'cd /path/to/project && exec codex' 的指令,直接在遠端目標上啟動 agent。這些可以被註冊為自定義 harness,使其出現在原生的 hrdx 選擇器中。

設定與自定義

  • Keybindings: 前綴鍵(預設為 ctrl+b)可以透過 keys.json 進行重新映射。
  • Themes: 視覺風格可以透過 JSON 主題檔案來自定義,藉以覆寫 ANSI 256 色或十六進位碼。
  • Notifications: 使用者可以設定系統通知或自定義音效檔案,以便在 agent 完成一輪操作時提醒自己。

社群觀點

雖然有些使用者稱讚該工具的響應速度,以及它將開發者帶回終端機開發工作流的潛力,但也有人對其與 tmux 等成熟工具相比的實用性提出疑問。一位使用者指出:

"I hate to be that guy, but why would I use this over tmux? All of the features and qualities noted in the readme do not feel novel or unique."

然而,hrdx 與 tmux 的不同之處在於它提供了專門用於 agent 狀態監控的 UI,以及專門為 agent 驅動的自動化而設計的可程式化 socket API。

Sources

相關

  • 專案
  • 專案
  • Dispatch
  • 專案
  • 專案