升級 OpenClaw 之後你看到哪一種「壞掉」?gateway 起不來、RPC 探測失敗,還是 CLI 顯示已升級、使用者級 systemd/launchd 服務仍指向舊路徑?本文給營運讀者:七條隱含假設拆穿 split brain(新舊二進位分叉),症狀表分辨「設定戳記」與 Token/remote URL;六步安全復原 Runbook(PATH → gateway install --force → gateway restart → doctor)並說明破壞性環境變數閘門何時才值得開。內連 cron 與升級回流、遠端模式、生產觀測。
官方 troubleshooting:較新版本 OpenClaw 寫入 openclaw.json、更新 meta.lastTouchedVersion;若 PATH 解析到的仍是較舊 openclaw 執行檔,讀取仍可能發生,但一旦牽涉安裝/重啟/解除安裝等破壞性變更 CLI 會拒絕以避免半新半舊中介資料落盤——生產上常口語稱為 split brain。
把「npm 已成功」視同「服務已切到新執行檔」: npm install -g 只換全域前置路徑內程式;launchd/systemd --user Unit 仍可指著舊絕對路徑,下次重開機又復發。
登入 Shell 與服務環境混用 PATH: 互動式 which openclaw 正確,不代表 常駐服務環境一致。
忽略多套安裝來源並存: Homebrew、官方腳本與 npm global 可能同時存在多份程式;順序取決 PATH 前綴。
升級後略過 gateway install --force: 官方建議服務與實際二進位漂移時重裝服務包裝;只手動啟動一次 gateway,下次重新開機仍可能再分叉。
將每個 doctor錯一律當 JSON 壞掉: 有時是守衛與二進位不相符,先對齊版本再逐鍵。
遠端與本地反覆試錯不留設定截屏: 與遠端模式文章同款紀律:openclaw config get gateway.mode 再想探針要打哪台主機。
升級後只看 channels 不看排程面: Cron 與 Gateway 同屬進程族——回流請對照 cron 篇檢查清單。
共同根因:把「設定讀得到」誤當「執行面一致」。正確心智:戳記只代表誰最後寫檔,真正跑服務的二進位身分要另驗。
下表把值班紀錄從「感覺升級壞了」推進到「可簽字的分支」:
| 表徵 | 較像 split brain | 較像驗證/Session | 較像遠端 URL/拓樸 |
|---|---|---|---|
| doctor 關鍵字 | 提示新舊二進位分叉、擋下 gateway 破壞性動作 | Token/裝置相關錯誤碼,與二進位版本無關 | RPC 探針失敗且本機 gateway status --deep 指向意外主機 |
| gateway status | Runtime 行為與 CLI --version嚴重不一致 | Runtime OK 但仍 unauthorized | 本機顯示 stopped,遠端實際正在跑 |
| 首選動作 | 對齊 PATH → gateway install --force → restart | 輪替或對齊 token/裝置握手 | 核對 gateway.remote.url 與環境變數是否與 遠端模式篇一致 |
升級之夜金句:(A)哪個二進位在跑?(B)設定戳記被誰改過?兩件事對齊了再談頻道與 cron。
部署若搭配Tailscale/私有隧道別把「隧道通」等同「RPC通」——建議對照 Tailscale私網曝露篇做雙端驗收。
對順序敏感;若發現新舊仍分叉,請回到上一小節而不要並行改寫設定與二進位。
凍結現場: openclaw --version、服務 Unit 可見的執行檔路徑及 doctor輸出存證。
校正 PATH/別名: 在非互動環境確認 which openclaw 指向目標版本;移除遮蔽路徑的別名。
對齊來源: 選定單一路更新通道(文件建議的 npm/安裝腳本);避免長期 Brew/npm 混搭。
重裝服務包裝: 對同一使用者在 PATH 校對後執行 openclaw gateway install --force,刷新 launchd/systemd 中介資料。
冷啟動 Gateway: openclaw gateway restart,再跑 gateway status 與 RPC 探針。
回歸清單: openclaw doctor → channels status --probe → 對照 cron list 是否仍註冊。
openclaw --version command -v openclaw openclaw gateway status openclaw doctor openclaw gateway install --force openclaw gateway restart openclaw channels status --probe
提示:若日誌出現埠占用、記憶體尖峰或 compose 啟動順序,請並讀 Gateway not ready 與 closed(1000) RPC,勿把資源類故障誤判為 split brain。
官方 troubleshooting 視「較新設定+舊二進位」為危險組合:舊行程若仍可能寫入 gateway 服務中繼資料,磁碟狀態可能變成不可回放混合體。為保護使用者,新版本可能對破壞性 gateway 操作加硬閘——僅在明確需以舊二進位做單次緊急恢復時才設對應 OPENCLAW_*(名稱與語意以當期官方文件為準)。
注意:此類變數不是「繞過所有檢查」魔法開關;處理的是你已理解風險並接受可能損傷服務包裝之窄情境。預設應維持未設定,除非你按文件寫 rollback 紀錄。
工程上較可維持:修好 PATH→重裝服務→用新二進位跑完整升級;僅在供應商阻斷下載等特殊情形才把降級寫進獨立變更並保留稽核副本。
平台對內量化錨點:
openclaw --version輸出截圖,復原後二者應一致。doctor結果。純筆電或共用開發機上的 Gateway易受睡眠、系統更新與多使用者干扰;將 OpenClaw 放在可 7×24 常駐、SSH 可達、磁碟與網路口徑寫進合約的獨占遠端 Mac上,長期好過反覆「升級後又分叉」。NodeMini 雲端 Mac Mini 租賃提供固定 SSH與獨占算力,適合承載 AI 閘道與企業自動化;方案與接入見 租賃價格說明與 說明中心。更多 OpenClaw 實務可於部落格篩選 OpenClaw專欄,依「觀測 → cron → 遠端模式 → 本文分叉」遞進閱讀。
可視為「最後是哪一版 OpenClaw 寫完設定檔」的版本戳記;當 PATH 仍解析較舊二進位會出現「守衛擋住繼續寫服務」保護行為。修好 PATH 並依 Runbook 重裝服務後再看 doctor,通常早於逐行改 JSON。
split brain 排除前 cron 列表「看起來正常」但執行面可能拒動;先完成本篇第三節,再依照 cron 手冊做週期回流。更多文章見 OpenClaw 篩選。