11 - 遠端與手機工作流(iPhone)

10-實戰-Obsidian醫學筆記庫 | 00-Index | 下一篇 → 12-設定檔-通知-Plugins-SocketAPI


核心觀念:Herdr 跑在「工作所在的機器」上

一句話:Run Herdr where the work lives. Attach from wherever you are.

Herdr = 背景 session server + 一個或多個終端 client。Pane 在 server 裡跑,client 只是接上去畫畫面。

所以「用手機看 agent」不是「把 agent 搬到手機上」,而是「用手機當 client 接回那台電腦」。


三條路徑

路徑指令什麼時候用
本機herdr平常在自己電腦前
SSH 進去再跑(tmux 式)ssh you@serverherdr手機 / 平板 SSH client、或你本來就活在 SSH shell 裡
本機薄客戶端連遠端herdr --remote workbox想讓遠端 session「感覺像本機」,需要本機剪貼簿貼圖

⚠️ 原生 Windows binary 不支援 herdr --remote(也不支援 direct terminal attach 和 live handoff)。從 Windows 要連遠端,官方建議就是 ssh you@server 再跑 herdr


iPhone 怎麼用(你的實際情境)

官方講得很直白:

You do not need a Herdr mobile app or a web dashboard. Install any SSH client on your phone, connect to the machine where your agents run, and start Herdr there.

ssh you@server
herdr

TUI 會自適應窄螢幕,所以你可以在手機上檢視 agent、切 workspace、看 pane。官方在 iPhone 上推薦 moshi(Termius、Blink 也可以)。

你需要搭建的東西(⚠️ 以下非 Herdr 官方文件,是環境建置建議)

你的 agent 跑在 Windows PC(建議在 WSL2 裡,理由見 02-安裝與環境選擇)。要讓 iPhone 連進去:

1. 在 WSL2 裡跑 sshd

sudo apt install -y openssh-server
sudo systemctl enable --now ssh

2. 網路連通

WSL2 是 NAT 網路,從外部連進來要處理。兩個選項:

做法優點缺點
Tailscale(推薦)不用開 router port、不用固定 IP、自動加密、手機直接裝 app多一個服務要管
Windows netsh portproxy + router port forwarding不依賴第三方設定繁瑣、WSL2 IP 會變、暴露在公網要自己顧安全

Tailscale 直接裝在 WSL2 裡:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

手機裝 Tailscale app 登入同帳號,就能用 ssh you@<tailscale-name> 連進去。

3. 手機端

ssh you@wsl-box
herdr

接回同一個 session,電腦上跑到一半的 Codex 原封不動在那裡。


手機上實際要做的事(別想太多)

手機螢幕小,不要試圖在上面寫程式。它的價值是巡場

動作怎麼做
掃一眼誰在跑、誰卡住看 sidebar(prefix+b 開關)
回答 blocked 的批准提示點進那個 pane,按 y / Enter
切 workspaceprefix+w 或直接點
快速跳轉prefix+g
讀某個 agent 的結論點進去用 prefix+[ copy 模式捲
派下一批任務切到 Claude 那個 pane 打字
走人prefix+q detach

💡 手機上打長 prompt 很痛苦。實務做法:在電腦上先把任務檔寫好,手機上只要跟 Claude 說「跑第 3 批」就好。


通知設定(手機情境的關鍵)

Herdr 可以在 agent 做完或需要輸入時通知你:

[ui.toast]
delivery = "terminal"      # SSH 情境用這個
delay_seconds = 1

四種 delivery:

行為適用
herdrApp 內 toast坐在電腦前
terminal外層終端機通知,SSH 上運作良好手機 / 遠端
system本機 OS 通知服務本機桌面
off關掉

Herdr 會自動抑制 active tab 的彈出通知(你正在看的東西不用再通知你)。

聲音:

[ui.sound]
done_path = "sounds/done.mp3"
request_path = "sounds/request.mp3"
 
[ui.sound.agents]
codex = "on"
claude = "on"

⚠️ 聲音是在「本機 Herdr client」播的。所以你 detach 之後電腦不會響;手機 attach 著的話,是手機那個終端 app 的行為。

腳本裡主動叫自己:

herdr notification show "詳解量產完成" --body "114 心臟 24 題已產出" --sound done

什麼東西撐得過什麼(持久性總表)

這張表決定你能多放心地關東西:

情況Process 繼續跑版面回來近期畫面回來Agent 對話續接
Detach / reattach✅ 從活的終端✅ process 從沒停過
Server 重啟只有開 pane history 才有只有 native session restore 才有
更新(無 --handoff相容的 server 繼續跑;需重啟的可能要 stop/restart✅ 重啟後同上同上
更新(--handoff支援的 server 盡力保留✅ handoff 成功的話✅ process 沒停

1. Detach 是最強的持久性

因為原本的 process 從來沒有停過。這是你日常最該依賴的路徑。

prefix+q          → detach(或直接關終端機視窗)
herdr             → 回來
herdr server stop → 真的結束(會停掉所有 pane process)

2. Snapshot restore(server 重啟後)

Server 停掉再開,原本的 pane process 就沒了。Herdr 會還原版面形狀:workspace、tab、pane、cwd、layout、focus。不會還原正在跑的 shell、server、測試或任意 process——它們變回該目錄下的新 shell。

3. Pane screen history(預設關閉)⚠️

可以在 server 全重啟後還原近期終端內容(還原的是「畫面」,不是 process):

[experimental]
pane_history = true

🔴 預設關閉是有理由的:pane 輸出可能包含密碼、token、prompt 和指令輸出。開了之後 Herdr 會存在 session-history.json(在 session.json 旁邊)。把 Herdr 的 config/session 目錄當成 shell history 一樣看待。

你的 vault 有醫學內容、理財對帳單資料,建議不要開,或至少想清楚再開。

4. Native agent session restore(預設開啟)

有些 agent 可以續接自己的對話。Herdr 用 integration 回報的原生 session reference,在 server 重啟後重新啟動這些 agent pane:

Agent最低 integration 版本續接指令
Claude Code6claude --resume <id>
Codex5codex resume <id>

檢查你裝的版本:

herdr integration status
herdr integration install claude   # 過舊就重裝

要關掉:

[session]
resume_agents_on_restore = false

💡 如果 native session restore 適用於某個 pane,Herdr 會優先續接 agent session,而不是重播 pane history


herdr --remote(Linux/macOS client 才有)

如果你之後有 Linux/macOS 機器當 client:

herdr --remote workbox
herdr --remote ssh://you@server:2222
herdr --remote workbox --session agents      # 遠端的具名 session

本機 Herdr 當薄客戶端:透過 SSH 連線、啟動或接上遠端 Herdr server、把 UI 串回本機終端。

好處是本機桌面功能可以橋接到遠端(例如剪貼簿貼圖:把圖複製到遠端暫存檔再貼路徑)。如果你是先 SSH 再跑 herdr,Herdr 整個跑在 server 上,讀不到你本機桌面的剪貼簿

SSH config 讓它更好用:

Host workbox
  HostName server.example.com
  User you
  Port 2222

其他細節:

  • 預設用本機的 keybinding(保留肌肉記憶);要用遠端設定就 --remote-keybindings server。本機 keybinding 是 attach 當下的快照,改完要 detach 再 attach。
  • 遠端沒有相容 binary 時,互動式執行會問要不要裝到 ~/.local/bin/herdr;非互動式則直接失敗(不會偷改主機)。
  • 用 passphrase 保護的 key 且在無法顯示提示的環境(腳本、CI、手機終端)→ 先 ssh-add
  • 認證失敗時,先確認 ssh workbox 這個純 SSH 能不能通,再回頭試 herdr --remote

Direct terminal attach(Unix only)

不想開整個 Herdr UI,只想接一個終端:

herdr agent attach reviewer
herdr agent attach reviewer --takeover
herdr terminal attach term_abc123
  • Detach 用 ctrl+b q;送出字面上的 ctrl+bctrl+b ctrl+b
  • 用滑鼠滾輪或 PageUp/PageDown 捲動;正常輸入會跳回底部
  • 同時只有一個可寫的 direct attach client 擁有輸入和 resize 權,要搶用 --takeover

⚠️ Windows beta 不支援 direct terminal attach。

手機上的實用場景:只想看某一個 Codex 的畫面、不想被整個 TUI 的 sidebar 佔掉小螢幕時,herdr agent attach w-心臟a 會清爽很多(前提是你連的是 Linux/WSL 端)。


一個實際的「離開電腦」檢查清單

離開前:

  • 每個 worker 都已經 agent prompt 派完工了嗎?
  • 有沒有哪個 pane 正等著你回 y/n?(sidebar 看 blocked
  • [ui.toast] delivery 設成 terminal 了嗎?
  • prefix+q detach(不要 herdr server stop

回來時:


🔗 相關筆記


最後更新:2026-08-04