2026 OpenClaw 升級後除錯 split brain、PATH、gateway install --force 與 doctor 一次串好恢復順序

升級 OpenClaw 之後你看到哪一種「壞掉」?gateway 起不來、RPC 探測失敗,還是 CLI 顯示已升級、使用者級 systemd/launchd 服務仍指向舊路徑?本文給營運讀者:七條隱含假設拆穿 split brain(新舊二進位分叉),症狀表分辨「設定戳記」與 Token/remote URL;六步安全復原 Runbook(PATH → gateway install --forcegateway restartdoctor)並說明破壞性環境變數閘門何時才值得開。內連 cron 與升級回流遠端模式生產觀測

01

事故檢討裡七個讓「升級」扛鍋的潛規則假設

官方 troubleshooting:較新版本 OpenClaw 寫入 openclaw.json、更新 meta.lastTouchedVersion;若 PATH 解析到的仍是較舊 openclaw 執行檔,讀取仍可能發生,但一旦牽涉安裝/重啟/解除安裝等破壞性變更 CLI 會拒絕以避免半新半舊中介資料落盤——生產上常口語稱為 split brain。

  1. 01

    把「npm 已成功」視同「服務已切到新執行檔」: npm install -g 只換全域前置路徑內程式;launchdsystemd --user Unit 仍可指著舊絕對路徑,下次重開機又復發。

  2. 02

    登入 Shell 與服務環境混用 PATH: 互動式 which openclaw 正確,不代表 常駐服務環境一致。

  3. 03

    忽略多套安裝來源並存: Homebrew、官方腳本與 npm global 可能同時存在多份程式;順序取決 PATH 前綴。

  4. 04

    升級後略過 gateway install --force: 官方建議服務與實際二進位漂移時重裝服務包裝;只手動啟動一次 gateway,下次重新開機仍可能再分叉。

  5. 05

    將每個 doctor錯一律當 JSON 壞掉: 有時是守衛與二進位不相符,先對齊版本再逐鍵。

  6. 06

    遠端與本地反覆試錯不留設定截屏:遠端模式文章同款紀律:openclaw config get gateway.mode 再想探針要打哪台主機。

  7. 07

    升級後只看 channels 不看排程面: Cron 與 Gateway 同屬進程族——回流請對照 cron 篇檢查清單

共同根因:把「設定讀得到」誤當「執行面一致」。正確心智:戳記只代表誰最後寫檔真正跑服務的二進位身分要另驗

02

症狀對照:split brain、驗證漂移、遠端 URL 混線

下表把值班紀錄從「感覺升級壞了」推進到「可簽字的分支」:

表徵較像 split brain較像驗證/Session較像遠端 URL/拓樸
doctor 關鍵字提示新舊二進位分叉、擋下 gateway 破壞性動作Token/裝置相關錯誤碼,與二進位版本無關RPC 探針失敗且本機 gateway status --deep 指向意外主機
gateway statusRuntime 行為與 CLI --version嚴重不一致Runtime OK 但仍 unauthorized本機顯示 stopped,遠端實際正在跑
首選動作對齊 PATH → gateway install --force → restart輪替或對齊 token/裝置握手核對 gateway.remote.url 與環境變數是否與 遠端模式篇一致

升級之夜金句:(A)哪個二進位在跑?(B)設定戳記被誰改過?兩件事對齊了再談頻道與 cron。

部署若搭配Tailscale/私有隧道別把「隧道通」等同「RPC通」——建議對照 Tailscale私網曝露篇做雙端驗收。

03

六步復原 Runbook(依序跑,少走鄉問偏方)

對順序敏感;若發現新舊仍分叉,請回到上一小節而不要並行改寫設定與二進位。

  1. 01

    凍結現場: openclaw --version、服務 Unit 可見的執行檔路徑及 doctor輸出存證。

  2. 02

    校正 PATH/別名: 在非互動環境確認 which openclaw 指向目標版本;移除遮蔽路徑的別名。

  3. 03

    對齊來源: 選定單一路更新通道(文件建議的 npm/安裝腳本);避免長期 Brew/npm 混搭。

  4. 04

    重裝服務包裝:同一使用者在 PATH 校對後執行 openclaw gateway install --force,刷新 launchd/systemd 中介資料。

  5. 05

    冷啟動 Gateway: openclaw gateway restart,再跑 gateway status 與 RPC 探針。

  6. 06

    回歸清單: openclaw doctorchannels status --probe → 對照 cron list 是否仍註冊。

bash · 診斷順序(範例)
openclaw --version
command -v openclaw
openclaw gateway status
openclaw doctor
openclaw gateway install --force
openclaw gateway restart
openclaw channels status --probe
info

提示:若日誌出現埠占用、記憶體尖峰或 compose 啟動順序,請並讀 Gateway not readyclosed(1000) RPC,勿把資源類故障誤判為 split brain。

04

破壞性環境變數閘門:何時才考慮「允許舊二進位做毀滅性動作」

官方 troubleshooting 視「較新設定+舊二進位」為危險組合:舊行程若仍可能寫入 gateway 服務中繼資料,磁碟狀態可能變成不可回放混合體。為保護使用者,新版本可能對破壞性 gateway 操作加硬閘——僅在明確需以舊二進位做單次緊急恢復時才設對應 OPENCLAW_*(名稱與語意以當期官方文件為準)。

warning

注意:此類變數不是「繞過所有檢查」魔法開關;處理的是你已理解風險並接受可能損傷服務包裝之窄情境。預設應維持未設定,除非你按文件寫 rollback 紀錄。

工程上較可維持:修好 PATH→重裝服務→用新二進位跑完整升級;僅在供應商阻斷下載等特殊情形才把降級寫進獨立變更並保留稽核副本。

05

三條可寫入變更單的取證口徑(與收尾)

平台對內量化錨點:

  • 版本雙簽:同時保留互動會話與 systemd/launchd Unit 中的 openclaw --version輸出截圖,復原後二者應一致。
  • 破壞性動作窗口:若必須開啟緊急變數,變更單須紀錄持續時間、操作者、回復命令與事後 doctor結果。
  • 業務回歸:升級後連續觀察至少一個完整 cron 週期與一次人工訊息往返,再解除維護公告;與 生產觀測篇之日誌保留策略一致。

純筆電或共用開發機上的 Gateway易受睡眠、系統更新與多使用者干扰;將 OpenClaw 放在可 7×24 常駐、SSH 可達、磁碟與網路口徑寫進合約的獨占遠端 Mac上,長期好過反覆「升級後又分叉」。NodeMini 雲端 Mac Mini 租賃提供固定 SSH與獨占算力,適合承載 AI 閘道與企業自動化;方案與接入見 租賃價格說明說明中心。更多 OpenClaw 實務可於部落格篩選 OpenClaw專欄,依「觀測 → cron → 遠端模式 → 本文分叉」遞進閱讀。

FAQ

常見問題

可視為「最後是哪一版 OpenClaw 寫完設定檔」的版本戳記;當 PATH 仍解析較舊二進位會出現「守衛擋住繼續寫服務」保護行為。修好 PATH 並依 Runbook 重裝服務後再看 doctor,通常早於逐行改 JSON。

split brain 排除前 cron 列表「看起來正常」但執行面可能拒動;先完成本篇第三節,再依照 cron 手冊做週期回流。更多文章見 OpenClaw 篩選

gateway.modegateway.remote.url 與兩端的 gateway status 對照——細節走 遠端模式排查。需要機器資源決策可看 租賃說明