herdr 是一個跑在終端機裡的 agent 管理工具。它像 tmux 一樣把終端機切成 workspace、tab、pane,但多做了一件事:認得 pane 裡跑的是 Claude Code、Codex 還是一般 shell,並在側欄標出每個 agent 現在是在工作、卡住等你回應,還是閒著。
我在 Windows 11 上用官方 v0.9.5 實測了一輪:開 server、建 workspace、切 pane、用 CLI 送指令讀輸出、開 worktree、讓它偵測 Claude Code 的狀態,再把 server 關掉重開看還原了什麼。下面是它是什麼、我怎麼測的,以及測完我會提醒的幾個限制。
懶人包
| 項目 | 內容 |
|---|---|
| 是什麼 | 終端機裡的 agent 多工器(workspace/tab/pane)加上 agent 狀態偵測 |
| 形態 | Rust 寫的單一執行檔,TUI 介面,不需要 Electron 或瀏覽器 |
| 授權 | Apache-2.0,開源 |
| 平台 | macOS、Linux、Windows(Windows 原生版已 GA,走 ConPTY) |
| 狀態 | 2026-03-27 建立,2026-10-16 查有 44,296 星;最新版 v0.9.5(2026-10-14),還在 0.x |
| 核心功能 | 關掉視窗或 SSH 斷線,terminal 在背景 server 繼續跑;agent 可以透過 CLI 操作 herdr |
| 適合 | 平常就住在終端機裡、會 SSH 到遠端跑 agent、想同時盯好幾個 agent 的人 |
herdr 是什麼?
herdr 的 repo 是 herdrdev/herdr,官網 herdr.dev,自稱「the runtime your coding agents live on」。
它的分工很清楚:herdr 不改 agent 本身,也不替 agent 加一層殼,它管的是 agent 所在的終端機。你照常在 pane 裡打 claude 或 codex,herdr 在旁邊做這幾件事:
- 持久化:herdr 分成背景 server 和前景 client。關掉 client、SSH 斷線,pane 裡的程式繼續跑;再 attach 回來就看到原本的畫面。
- 狀態標示:每個 agent 在側欄有狀態,官方文件定義了
working、blocked、done、idle、unknown五種。blocked代表 agent 在等你回應,例如權限確認。 - 可以被程式操作:herdr 有完整的 CLI 和 socket API,可以建 workspace、切 pane、送指令、讀畫面。一個 agent 可以用這些指令開另一個 pane 給別的 agent。
- 多台機器:README 寫可以把好幾台機器的 session 放進同一個視窗。
- worktree:可以從 repo 開 git worktree,自動變成一個新的 workspace。
ctrl+b 進 prefix 模式,ctrl+b q 離開但不關 session;另外滑鼠也能直接點。
herdr 怎麼判斷 agent 在做什麼?
照官方 Concepts 文件,狀態偵測有三個來源:
- pane 前景跑的是哪個程式。
- screen manifest:比對畫面內容的規則檔,例如認得 Claude Code 的確認畫面長什麼樣。
- 選配的 integration:裝了之後,agent 直接回報狀態給 herdr,也能在 server 重啟後接回原本的對話。
herdr agent list 顯示這個 agent 是 blocked,側欄也亮紅點:
用 herdr agent explain 可以看它根據什麼判斷。我拿到的結果是:規則來自 agent-detection\remote\claude.toml,版本 2026.10.11.1,命中的規則叫 live_blocked_form。也就是說,這個判斷靠的是 herdr 從遠端下載的畫面比對規則,沒有裝任何 integration。
怎麼安裝 herdr?
macOS、Linux:
curl -fsSL https://herdr.dev/install.sh | sh
也可以用 Homebrew 或 mise:
brew install herdr
mise use -g herdr
Windows 用 PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
如果端點防護軟體擋住 PowerShell 腳本,官方另外給了一個 install.cmd 的版本:
curl.exe -fsSLo install.cmd https://herdr.dev/install.cmd && install.cmd && del install.cmd
我這次沒有用安裝腳本,而是從 GitHub Release 下載 v0.9.5 的 Windows zip,解壓後直接執行 herdr.exe,確認 herdr --version 回 0.9.5。
第一次開 TUI 會跳一個歡迎視窗,提醒 ctrl+b 進 prefix 模式、按 ? 看快捷鍵。
我怎麼實測 herdr?
為了不動到平常的環境,我用 --session 開了一個獨立的 session,在一個只有一個 commit 的測試 repo 裡跑。下面是我照順序跑過的指令:
# 起一個名為 blogtrial 的背景 server
herdr --session blogtrial server
# 建 workspace,左右切成兩個 pane
herdr --session blogtrial workspace create --cwd demo-repo --label demo
herdr --session blogtrial pane split w1:p1 --direction right
# 從外面送指令進 pane,再把輸出讀回來
herdr --session blogtrial pane run w1:p1 "git log --oneline"
herdr --session blogtrial pane read w1:p1
# 從 repo 開一個 worktree
herdr --session blogtrial worktree create --workspace w1 --branch feat-a
# 在右邊 pane 開 claude 後,查 agent 狀態與判斷依據
herdr --session blogtrial agent list
herdr --session blogtrial agent explain w1:p2
測到的結果:
| 測試 | 結果 |
|---|---|
| 背景 server | Windows 上 socket 放在 %APPDATA%\herdr\sessions\blogtrial\herdr.sock |
pane run/pane read | 送指令、讀回輸出都正常,git log 內容完整讀得到 |
worktree create | 預設建在 ~/.herdr/worktrees/<repo>/<branch>,自動開成新的 workspace |
| agent 偵測 | Claude Code 停在確認畫面時是 blocked |
worktree remove | 刪掉 worktree 資料夾,feat-a 這個 branch 留在 repo 裡 |
| 停掉 server 再起 | 2 個 workspace、3 個 pane 的版面都回來,pane 裡是新的 shell,原本的程式沒有了 |
關掉重開後,什麼會留下來?
官方 Session state 文件把三種情況分得很清楚:
| 情況 | 程式還在跑嗎 | 回來看到什麼 |
|---|---|---|
| detach(關掉 client、SSH 斷線) | 在,server 一直開著 | 原本的畫面,完全接得上 |
| server 重啟(例如重開機) | 不在 | 版面回來;畫面靠 pane 的歷史紀錄回放;對話要靠 agent 自己的 session 還原 |
herdr update --handoff | 盡量保留(best effort) | 更新 herdr 時嘗試把執行中的 pane 交接給新版本 |
用 herdr 之前要知道哪些限制?
Windows 的 integration 範圍比較窄。官方 Windows 文件寫明原生 Windows 已經 GA,但 plugins 還是 preview,integration 支援的範圍也比 Unix 少。我查資料時看到一篇第三方教學還寫 Windows 是 preview,那是舊資訊,以官方文件為準。
integration 會改 agent 的設定。TUI 的 settings 裡有 integrations 頁,在我的電腦上 claude、codex 顯示 available,其他十幾種 agent 顯示 not found。官方 integration 文件寫明,Claude Code 的 integration 是裝一個 Claude Code hook,等於會改到 agent 自己的設定,所以這次我只看沒裝。也可以用 herdr integration install claude 從命令列裝,herdr integration status 看裝了哪些。
偵測規則從遠端下載。沒裝 integration 時,狀態判斷靠 herdr 下載的畫面比對規則。agent 改版、畫面一變,規則就要跟著更新,判斷才會準。
pane wait-output 要錨定比對。我用 pane wait-output --match herdr-pane-2-ok 等輸出,結果它比對到的是我打的指令那一行本身(prompt 後面的 echo herdr-pane-2-ok),還沒等到真正的輸出就回來了。用 regex 錨定成整行完全等於那個字串,才會等到輸出那一行。
刪 worktree 不刪 branch。worktree remove 只刪資料夾,branch 要自己用 git branch -D 清。
版本還在 0.x。v0.9.3 到 v0.9.5 之間隔了兩週多,v0.9.5 是 v0.9.4 隔天的 hotfix,修了 CJK 輸入法下 prefix 鍵失效、Windows 使用者資料夾含非 ASCII 字元時 Claude Code session 追蹤失效等問題。用中文輸入法、使用者名稱有中文的話,至少要裝 v0.9.5。
herdr 和 Orca 怎麼選?
兩個都在解決「同時跑好幾個 coding agent」,做法不同:
| herdr | Orca | |
|---|---|---|
| 介面 | 終端機 TUI | Electron 桌面 app |
| 核心單位 | workspace/pane,可選擇開 worktree | 一個任務一個 worktree |
| 持久化 | 背景 server,SSH 斷線不影響 | 桌面 app 管理 |
| 看 diff、開 PR | 用你自己的工具 | 內建 diff viewer、PR 流程 |
| 授權 | Apache-2.0 | MIT |
FAQ
herdr 和 tmux 差在哪?
tmux 只管終端機,不知道裡面跑的是什麼。herdr 也是終端機多工器,但認得 pane 裡的 coding agent,會標出 working、blocked 等狀態,還有給 agent 用的 CLI 和 API,可以讓一個 agent 開 pane、派工給另一個 agent。
herdr 會把我的程式碼送出去嗎?
herdr 本身是本機的終端機工具,程式碼在你的電腦上,送到哪裡取決於你在 pane 裡跑的 agent。我觀察到的對外行為是下載 agent 偵測規則,規則檔存在 %LOCALAPPDATA%\herdr\agent-detection\remote\。
不想用了怎麼清乾淨?
刪掉 herdr 執行檔,再刪掉它的資料夾。在 Windows 上,我試用後留下的是 %APPDATA%\herdr(session 與 socket)、%LOCALAPPDATA%\herdr(偵測規則)和 ~/.herdr(worktree)。