讓 Claude 能直接呼叫語言伺服器,取得真實的型別資訊、錯誤診斷、定義跳轉——而不只是「看程式碼猜測」。
Herdr 是一個 agent 多工器(agent multiplexer)——官方一句話定位: 「Herdr 之於 coding agent,就像 tmux 之於終端機」。同時開好幾個 Claude Code / Codex 時, 它讓你在一個終端機裡看清楚:誰在跑、誰卡住等你、誰做完了;而且蓋上筆電,agent 照樣繼續跑。
把每一隻 coding agent 想成一隻羊:放出去工作後各忙各的,沒有牧羊人時你得一個視窗一個視窗巡。 Herdr(= herder,牧羊人)把整群羊圈進同一個終端機,側欄一眼告訴你—— 哪隻在吃草(working)、哪隻咩咩叫等你開門(blocked)、哪隻吃飽趴著了(done)。
| 能力 | tmux / Zellij | 桌面 Agent App | HERDR |
|---|---|---|---|
| 直接在你的終端機裡跑 | ✓ | — | ✓ |
| 關掉視窗後程序仍存活(持久 PTY) | ✓ | 有限 | ✓ |
| 從遠端 SSH 接回同一個畫面 | ✓ | 有限 | ✓ |
| 看得懂 agent 狀態(工作中 / 卡住 / 完成) | — | 部分 | ✓ |
| 單獨接上某一隻 agent 的終端機 | — | — | ✓ |
| agent 可反過來指揮它(CLI + JSON API) | 可寫指令稿 | 部分 | ✓ |
選一種你熟悉的安裝方式就好。裝完之後,啟動 Herdr 只需要打一個字:herdr。
# 指令稿(Linux / macOS,最快) $ curl -fsSL https://herdr.dev/install.sh | sh # Homebrew $ brew install herdr # mise $ mise use -g herdr # Windows(預覽測試版) PS> irm https://herdr.dev/install.ps1 | iex
$ cd ~/my-project $ herdr
這一行做了很多事:Herdr 會啟動(或接上)一個背景伺服器、自動開好第一個工作區。
你不用管 socket 或伺服器細節——之後就算你離開,agent 也會繼續跑。
如果 shell 說找不到 herdr,重開終端機或確認安裝目錄在 PATH 裡。
$ claude # 或 codex、opencode、pi、copilot …任選 # 側欄馬上出現這隻 agent,並開始顯示牠的狀態
在窗格裡照平常的方式啟動 coding agent,Herdr 會自動認出牠。 支援自動偵測的包括 Claude Code、Codex、Pi、OpenCode、GitHub Copilot CLI、Cursor、Droid、Amp 等; 沒列到的一樣能當普通終端機程式跑,只是狀態資訊比較陽春。
$ herdr update # 指令稿 / 手動安裝的人用這個 $ herdr channel set preview # 搶先試預覽版 $ herdr channel set stable # 換回穩定版 # Homebrew / mise 安裝的人,改用各自的套件管理器更新
herdr server stop 之後重新 herdr。
Herdr 的世界只有五種積木,由外往內一層包一層:Session → Workspace → Tab → Pane → Agent。 用牧場比喻一次記起來。
客戶端 vs 伺服器——為什麼關筆電羊還在? Herdr 拆成兩半:伺服器擁有所有窗格與程序(住在背景);客戶端只是你眼前的終端機介面。 按 Ctrl+B Q 把客戶端「摘掉」(detach),伺服器和所有 agent 完全不受影響。 直接關掉終端機視窗效果也一樣——都只是摘掉客戶端。
$ herdr # 接上(或啟動)預設 session # Ctrl+B 再按 Q → 摘掉客戶端,一切照跑 $ herdr # 隨時接回來,畫面跟離開時一樣 $ herdr server stop # 真的要收工:停伺服器,程序也會結束
五種 agent 狀態——這是 Herdr 的靈魂功能,側欄燈號的意義:
| 狀態 | 意思 | 你要做什麼 |
|---|---|---|
| working | 正在吃草:agent 埋頭工作中。 | 放著,先去忙別的專案。 |
| blocked | 咩咩叫等你:出現批准 / 提問 UI,需要你做決定。 | 最優先處理,會把整個工作區染紅。 |
| done | 做完了、但你還沒去看。 | 去驗收;看過那個分頁後轉為 idle。 |
| idle | 待命:事情看過了、也沒人在跑。 | 不用理。 |
| unknown | 認不出這個程序的狀態。 | 當普通終端機用即可。 |
done 和 idle 最容易搞混:底層是同一種「閒下來」,差別只在你看過了沒—— 而且用 CLI 讀輸出不算看過。
blocked 的判定刻意保守:只有畫面明確出現已知的批准 / 提問 UI 才標 blocked; 偵測只影響顯示與等待,絕不會替你按同意。
所有快捷鍵都是「前綴鍵」模式:先按 Ctrl+B,下一個鍵才是給 Herdr 的命令。 其實滑鼠就能做完所有事——點窗格聚焦、拖邊框調大小、右鍵開選單、拖曳選字即複製;鍵盤只是進階選配。
| 按鍵(先按 Ctrl+B) | 動作 |
|---|---|
| V | 向右分割窗格 |
| − | 向下分割窗格 |
| C | 開新分頁 |
| N / P | 切換下一個 / 上一個分頁 |
| Shift+N | 開新工作區 |
| W | 導覽模式:在專案(工作區)之間跳來跳去 |
| Q | 摘離(detach):摘掉客戶端,agent 照跑 |
# 會話 $ herdr # 接上(或啟動)預設 session $ herdr session list # 列出具名 session $ herdr session attach work # 完全獨立的另一套環境 $ herdr server stop # 收工:停伺服器(程序會結束) # Agent $ herdr agent attach reviewer # 不開整個介面,只接上一隻 agent $ herdr agent start reviewer --kind codex --pane w1:p2 $ herdr agent prompt reviewer "審查目前的 diff" --wait $ herdr agent read reviewer --source recent-unwrapped $ herdr integration install claude # 提升狀態偵測品質 # Pane(普通程序用這組,不是 agent 也能自動化) $ herdr pane split --current --direction right $ herdr pane run w1:p3 "just test" $ herdr pane wait-output w1:p3 --regex "passed|failed"
agent start 不會自己開窗格——窗格是地點、agent 是住客,要先用 pane split 準備好。
| 遠端模式 | 指令 | 特色 |
|---|---|---|
| 本機 | herdr | 最日常:羊養在自己電腦。 |
| SSH 上去跑 | ssh you@server 再 herdr | 像 tmux 的經典做法,手機 SSH App 也適用。 |
| 原生遠端接入 | herdr --remote workbox | 本機薄客戶端:沿用本機快捷鍵、剪貼簿橋接(連圖片都能貼過去)、遠端沒裝還會幫你裝。 |
$ herdr plugin install <owner>/<repo>
# 上架只要在 GitHub repo 加上 herdr-plugin topic,市集自動收錄