模式
- 本機(這台 Mac):所有內容都在筆記型電腦上執行;不涉及 SSH。
- 透過 SSH 遠端(預設):OpenClaw 命令在遠端主機上執行。應用程式會使用
-o BatchMode、你選擇的身分/金鑰,以及本機連接埠轉送開啟 SSH 連線。 - 遠端直連(ws/wss):不使用 SSH 通道;應用程式會直接連線到閘道 URL(區域網路、Tailscale、Tailscale Serve,或公開 HTTPS 反向代理)。
遠端傳輸
- SSH 通道(預設):使用
ssh -N -L ...將閘道連接埠轉送到 localhost。因為通道是 loopback,閘道會看到節點 IP 為127.0.0.1。 - 直連(ws/wss):直接連線到閘道 URL。閘道會看到真實的用戶端 IP。
ControlMaster 或 ForkAfterAuthentication,它也能監控並重新啟動確切的程序。
SSH 主機金鑰驗證預設為嚴格,因為閘道認證會透過此通道傳輸。若要改用受管理 SSH 別名自身的信任行為,請透過 openclaw-mac configure-remote 設定 --ssh-host-key-policy openssh,或直接將 gateway.remote.sshHostKeyPolicy 設為 "openssh"。選擇加入前,請檢閱該別名以及任何相符的 Host * 或系統設定。在應用程式中或透過 configure-remote 變更 SSH 目標時,除非你為新目標再次明確選擇加入,否則原則會重設回 strict。
在 SSH 通道模式中,探索到的區域網路/tailnet 主機名稱會儲存為 gateway.remote.sshTarget。應用程式會將 gateway.remote.url 保持在本機通道端點(例如 ws://127.0.0.1:18789),讓命令列介面、網頁聊天與本機節點主機服務都使用相同的 loopback 傳輸。當探索同時傳回原始 Tailnet IP 與穩定主機名稱時,應用程式會偏好 Tailscale MagicDNS 或區域網路名稱,使連線更能承受位址變更。如果本機通道連接埠與遠端閘道連接埠不同,請將 gateway.remote.remotePort 設為遠端主機上的連接埠。
遠端模式中的瀏覽器自動化由命令列介面節點主機擁有,而不是原生 macOS 應用程式節點。應用程式會在可行時啟動已安裝的節點主機服務;若要從該 Mac 啟用瀏覽器控制,請使用 openclaw node install ... 安裝/啟動它並執行 openclaw node start(或在前景執行 openclaw node run ...),然後指向該具備瀏覽器能力的節點。
遠端主機的先決條件
- 安裝節點 + pnpm,並建置/安裝 OpenClaw 命令列介面(
pnpm install && pnpm build && pnpm link --global)。 - 確保
openclaw位於非互動式 shell 的 PATH 上(如有需要,符號連結到/usr/local/bin或/opt/homebrew/bin)。 - 對於 SSH 傳輸:設定以金鑰為基礎的 SSH 驗證。建議使用 Tailscale IP,以便在離開區域網路時仍可穩定連線。
macOS 應用程式設定
若要不經歡迎流程而預先設定應用程式,請透過 SSH:~/.openclaw/openclaw.json、標記入門設定完成,並讓應用程式在下次啟動時擁有所選傳輸。--local-port/--remote-port 預設為 18789。其他旗標:--password、--identity <path>、--ssh-host-key-policy <strict|openssh>、--project-root <path>、--cli-path <path>、--json。執行 openclaw-mac configure-remote --help 以取得完整參考。
若要改從 UI 設定:
- 開啟 設定 -> 一般。
- 在 OpenClaw 執行位置 下,選擇 遠端 並設定:
- 傳輸:SSH 通道 或 直連(ws/wss)。
- SSH 目標:
user@host(可選:port)。如果閘道位於同一個區域網路且公告 Bonjour,請從探索清單中選取它,以自動填入此欄位。 - 閘道 URL(僅直連):
wss://gateway.example.ts.net(或本機/區域網路使用ws://...)。 - 身分檔案(進階):你的金鑰路徑。
- 專案根目錄(進階):用於命令的遠端 checkout 路徑。
- 命令列介面路徑(進階):可選的可執行
openclaw進入點/二進位檔路徑(公告時會自動填入)。
- 按下 測試遠端。成功表示遠端
openclaw status --json已正確執行。失敗通常代表 PATH/命令列介面問題;結束碼 127 表示在遠端找不到命令列介面。 - 健康檢查與網頁聊天現在會自動透過所選傳輸執行。
網頁聊天
- SSH 通道:透過轉送的 WebSocket 控制連接埠連線到閘道(預設 18789)。
- 直連(ws/wss):直接連線到已設定的閘道 URL。
- 沒有獨立的網頁聊天 HTTP 伺服器。
權限
- 遠端主機需要與本機相同的 TCC 核准(自動化、輔助使用、螢幕錄製、麥克風、語音辨識、通知)。在該機器上執行一次入門設定以授予它們。
- 節點會透過
node.list/node.describe公告其權限狀態,讓代理知道可用項目。
安全性注意事項
- 偏好在遠端主機上使用 loopback 繫結,並透過 SSH、Tailscale Serve,或受信任的 Tailnet/區域網路直連 URL 連線。
- SSH 通道預設需要已受信任的主機金鑰。請先信任主機金鑰(將其新增到已設定的 known-hosts 檔案),或針對你接受其 OpenSSH 信任原則的受管理別名,明確設定
gateway.remote.sshHostKeyPolicy: "openssh"。 - 如果你將閘道繫結到非 loopback 介面,請要求有效的閘道驗證:token、密碼,或搭配
gateway.auth.mode: "trusted-proxy"的身分感知反向代理。 - 請參閱安全性與 Tailscale。
WhatsApp 登入流程(遠端)
- 在遠端主機上執行
openclaw channels login --channel whatsapp --verbose。使用手機上的 WhatsApp 掃描 QR。 - 如果驗證過期,請在該主機上重新執行登入。健康檢查會顯示連結問題。
疑難排解
| 症狀 | 原因/修正 |
|---|---|
exit 127 / 找不到 | openclaw 不在非登入 shell 的 PATH 中。請將它加入 /etc/paths、你的 shell rc,或建立符號連結到 /usr/local/bin//opt/homebrew/bin。 |
| 健康探測失敗 | 檢查 SSH 可連線性、PATH,以及 Baileys (WhatsApp) 已登入 (openclaw status --json)。 |
| Web Chat 卡住 | 確認閘道正在遠端主機上執行,且轉送的連接埠符合閘道 WS 連接埠;UI 需要健康的 WS 連線。 |
節點 IP 顯示 127.0.0.1 | 使用 SSH 隧道時屬預期行為。如果你想讓閘道看到真實用戶端 IP,請將 Transport 切換為 Direct (ws/wss)。 |
| Dashboard 可運作,但 Mac 功能離線 | 操作者/控制連線健康,但配套節點連線未連接,或缺少其命令介面。開啟選單列裝置區段,檢查 Mac 是否為 paired · disconnected。對於 wss://*.ts.net Tailscale Serve 端點,App 會在憑證輪替後偵測過期的舊版 TLS 葉憑證釘選;一旦 macOS 信任新憑證,就會清除過期釘選並自動重試。如果憑證未受系統信任,或主機不是 Tailscale Serve 名稱,請將 gateway.remote.tlsFingerprint 設為預期的憑證指紋、檢閱憑證,或切換至 Remote over SSH。 |
| Voice Wake | 在遠端模式下,觸發短語會自動轉送;不需要另外的轉送器。 |
通知音效
從腳本搭配openclaw nodes notify 為每則通知選擇音效,例如: