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@server → herdr | 手機 / 平板 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
herdrTUI 會自適應窄螢幕,所以你可以在手機上檢視 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 ssh2. 網路連通
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 |
| 切 workspace | prefix+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:
| 值 | 行為 | 適用 |
|---|---|---|
herdr | App 內 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 Code | 6 | claude --resume <id> |
| Codex | 5 | codex 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+b用ctrl+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+qdetach(不要herdr server stop)
回來時:
-
herdr接回來 - 掃 sidebar:誰
done、誰blocked、誰還在working - 驗收看檔案,不要只看狀態(見 08-Claude當大腦-Codex當雙手)
🔗 相關筆記
- 10-實戰-Obsidian醫學筆記庫 — 上一步:實際的日常場景
- 12-設定檔-通知-Plugins-SocketAPI — 下一步:完整設定選項
- 02-安裝與環境選擇 — WSL2 與 iPhone 環境建置
- 03-核心概念 — client / server 分離的原理
最後更新:2026-08-04
