OpenClaw 2026.10.5 升級:no-restart、snapshot 與 Gateway 驗收
執行 OpenClaw 更新時指定 --no-restart,Gateway 卻仍重啟;或者套件更新回報 successful,服務 readiness 仍有 warning。先確認安裝方式與是哪個程序負責重啟,再判斷是否失敗。2026.10.5 release將這條套件更新路徑的回報與實際服務驗證分開處理。
升級前確認備份可還原;升級後核對實際版本、Gateway runtime、Plugin 與 channel 收發。 2026-10-19 補上 10.5 的 no-restart 與 build identity 判讀,保留 10.4 的 snapshot、Doctor 及先前版本適用條件。本文是文件查核指南,沒有在本機執行升級、Doctor 或模型呼叫;驗收流程需在自己的隔離環境完成。
10.5:no-restart 不等於保證服務不中斷
10.5 stable 的 GitHub release published_at 為 2026-10-18 21<47>47> UTC,台灣時間是 10 月 19 日 05<47>47>,未標為 prerelease。不要把較早的 10.5 beta 公告日期當成正式版發布日;下列判讀固定依 10.5 Update CLI 文件。
對 npm、pnpm、bun global 套件安裝,--no-restart 略過的是 updater 管理的 restart 與尾端 readiness 等待。執行中的 Gateway 偵測安裝已被替換,仍會自行重啟;舊 runtime 繼續讀取已替換套件,可能找不到必要 chunks。這個旗標不能當成零停機承諾,也不該用來讓正式長任務在套件替換期間繼續跑。
PR #173409修正上述 package 路徑的回報:套件已安裝成功,但 Gateway readiness 尚未可用或仍回應舊版時,保留成功安裝並附 warning;不把這類觀測直接轉成整次安裝失敗。其他更新失敗仍保留原診斷,不能看到 10.5 就把所有 error 都降級忽略。
版本相同,還要核對 build
PR #174649補上 expected build ID 的比對。安裝目標若是版本 V、build B,仍在服務的版本 V、build A 不能被當成替換已驗證;可用時要核對 build,不只看版本字串。build 無法確認時,保留未驗證狀態,不能自行補上一個「應該已切換」。
對一次 no-restart 套件更新,建議把驗收紀錄拆成下列證據:
| 更新後證據 | 可以下的結論 | 仍要確認 |
|---|---|---|
| package 安裝 successful,Gateway 未就緒 | 套件安裝完成,服務尚未驗收 | 啟動後 status、實際 runtime 與任務結果 |
| Gateway 回應同版本、不同 build | 有服務回應,但不是預期替換身分 | build 是否已切換,保留 warning |
| 預期 runtime 身分已觀測到 | 此時的服務身分符合目標 | Plugin、provider、channel 與最小任務 |
在重新更新或 dry-run 前先保存原 openclaw update status --json 的結果與報告。等啟動完成後,再核對 openclaw gateway status,依官方指引執行 Doctor 與最小任務;Doctor 不屬於純唯讀檢查,執行前仍須保留備份並確認原安裝 owner。warning 還在時,先定位哪個驗收項未完成,不為了消除 warning 反覆替換套件。
Git checkout 與 immutable preparation-only 更新則保留操作者決定 activation 的行為,不能套用 package watcher 的推論。Doctor 也仍會恢復自己因維護而停止的服務,不能把這項旗標解讀為禁止所有重啟。以上僅於 2026-10-19 檢閱官方 release、版本固定文件與 PR;沒有執行真實服務更新、測量中斷時間或驗證 macOS 程序交接。
10.4:先找失敗階段,再決定是否需要 repair
10.4 stable 的實際發布時間是 2026-10-16 00<36>36> UTC,台灣時間為 10 月 16 日 08<36>36>;版本名稱中的 10.4 不代表 10 月 4 日發布。官方將它列為 10.3 的穩定性修補,沒有新增功能或設定變更。查核範圍固定為這個 release,不把較新 beta 的完整修復清單視為 stable 能力。
先保存原本失敗的 log 與 update status,再做新的 dry-run 或更新。以下是文件檢閱用的唯讀診斷命令,本文未執行:
openclaw --versionopenclaw update status --jsonopenclaw gateway status10.4 Update CLI 文件提醒,新的嘗試可能取代最新 history 的顯示;保存 lastRun 的 target、失敗階段、原始 updater 版本與 next action,才能對照先前發生的事。分享診斷時先移除憑證和私人路徑。
snapshot 準備失敗,不等於新 runtime 已啟動失敗
PR #171457將 activation 前的候選 snapshot 失敗正確分類為 candidate-snapshot-failed,避免落入 runtime-verification-failed。這條特定路徑是在切換前拒絕,原 Gateway 繼續服務;不能把所有同名或較早 updater 的錯誤都推論成「目前服務一定正常」。
讀取 record 時,分別確認 snapshot 的來源階段、第一個檔案系統或容量錯誤,以及現在的 Gateway 狀態。資料庫 snapshot 完成也不能證明後續 Plugin 路徑可讀。修正回報指出的原因後,才依 next action 重試;不要看到 runtime 字樣就重裝服務,更不要刪掉唯一的復原副本。
另一個症狀是 Database changed during capture。PR #170351修正 Gateway 已停止、已確認維護控制權且 agent SQLite 留有 WAL sidecar 時,snapshot 自己開啟來源資料庫造成的假變更判斷。真正的 capture 中寫入仍會偵測,沒有確認 Gateway 控制權的情況也不因此放寬。
這項 capture 修正屬於啟動更新的已安裝 updater:第一次從舊版升到 10.4,仍可能由舊程式執行 snapshot。目標套件含有修正,不代表已在執行的舊 updater 中途獲得它。保留原嘗試的 warning 與復原狀態,不能只因目標版本正確就宣稱自動資料庫回復可用。
migration 後的舊警告,要與目前 health 對照
PR #170130處理的是已記錄 candidate migration 後,舊 driver 再讀新 schema 造成的錯誤,以及目標 Gateway 已服務時留下的過期 runtime-verification 復原建議。修正需要相符的 migration 紀錄與目前回應的目標版本;未知或不符版本、health 無法取得及其他 unsafe 原因,仍保留限制。
驗收時把四項證據放在一起:原 record 的 target、migration 紀錄、目前 Gateway 回報版本與一次最小任務。歷史 outcome 不會因此被改寫,migration/rollback 限制也不會消失。只有 shell 的 openclaw --version 正確,尚不足以自行忽略 restart 警告。
app-owned Doctor 可以修 state,不接管 App 更新
PR #170768允許 standalone Doctor 在驗證 app-owned Gateway 已離線、且帳號與 state 相符時修復設定與資料。套件替換、service 安裝與 activation 仍由 OpenClaw.app 管理;Gateway 仍在執行時的 ownership 拒絕也保留。
因此,Doctor state repair、App 更新 receipt 與服務啟動是三個獨立驗收點。先依原 owner 的指引確認離線與備份,再決定是否執行修復;不要把一次 Doctor 結束當作 App 更新已完成,也不要同時啟動另一個 owner。以上於 2026-10-18 檢閱 release、版本固定的 CLI 文件與四個 PR,未執行實機復原;PR 作者的測試結果不算本文的本機測試。
10.3 卡住的更新,要按失敗階段驗收
2026.10.3 stable release於 10 月 13 日發布;版本固定的 changelog列出 receipt identity drift、handoff lease 遺失與舊 9.8 activation record 的復原修正。這些是特定更新狀態的修正,不能把任意卡住的 update 都判成同一原因。
先保存原更新 record 與第一個失敗階段,再核對 openclaw --version、openclaw update status 和 openclaw gateway status。將結果分成下列情況,能避免把套件、服務和資料問題混成一次重裝:
| 看見的狀態 | 接下來核對的證據 | 驗收通過條件 |
|---|---|---|
| 一直拒絕 retry、receipt/lease 或舊 activation 紀錄報錯 | 原更新來源版本、record 與官方 recovery next action | 恢復程序有完整結果,實際版本符合預期;沒有仍執行中的 updater |
| 套件版本已切換,Gateway 卻停止或又回復 | service owner、啟動命令、runtime、安裝方式與第一個 Doctor 錯誤 | 服務使用可持續存在的路徑,並完成一次最小任務 |
| Doctor repair 回報成功,但維護步驟未執行 | Doctor 是否確實執行、是否 skipped、repair 摘要 | 必要維護有執行結果,不能只看退出碼 |
| Doctor 後憑證、memory 或 Plugin 有差異 | 升級前清單、受控備份與逐項差異 | 資料仍完整、預期 Plugin enabled 狀態保留,認證與實際任務分別通過 |
10.3 涵蓋 Windows machine-qualified Scheduled Task account、短路徑及 Doctor ancestry 檢查,macOS protected Bun service command,以及 pnpm 12 launcher 的修正。對 pnpm 安裝,尤其要比對 service 命令是否留在 durable install link;PR #170003所處理的是服務路徑的生命週期,shell 裡 CLI 正常不能證明背景 service 的路徑也正常。
Doctor 的資料保留修正包括 legacy auth store 無法讀取時保留 canonical OAuth profile(PR #170256)、不以 replacement character 改寫損壞 UTF-8 memory,以及 path-safety block 時保留 Plugin enabled 設定。這些保障不會補回升級前已經遺失的資料;比對時仍要用原始備份,避免拿經過修復的檔案當唯一基準。
PR #167714另修正 Doctor maintenance 被略過時,openclaw update repair 不應回報成功。自動化驗收應把「必要步驟已執行」列為完成條件;若 record 顯示 skipped 或 recovery 尚未完成,就保留錯誤與復原素材,依 next action 處理,不能用成功文字自行解除維護狀態。
本節於 2026-10-14 檢閱 release、tagged changelog 與上述 PR,沒有執行更新、Doctor、service 重啟或資料還原。查核時也存在 10.5 beta release;本節範圍固定為 10.3 stable,不要求正式環境切換 beta。
10.1 更新後才報錯,先保留版本與失敗階段
PR #168849說明,已發布的 10.1 updater 在套件替換後載入 cleanup facade,可能過早關閉原本的 shared-state cleanup queue。10.2 所含修正保留舊 updater 需要的相容入口,讓第一次升級能完成;這不是要求使用者手動修改 queue 或設定檔。
Windows 的另一個特定症狀是 post-plugin-doctor-execution-failed,並出現 Unknown shared-state SQLite command。PR #169031補回 10.1 updater 在替換後仍會送出的 pending-migration 唯讀指令。這個修正不代表所有 Plugin Doctor 錯誤都有相同根因。
遇到上述症狀,先保留錯誤階段與 log,確認目前實際版本及 update status。套件可能已換過,不能只因 CLI 報錯就假設「完全沒更新」,更不能刪掉資料目錄重新開始。若仍有 updater 或 recovery 工作,先依該次回報的恢復指引處理;沒有必要重建 Plugin migration 資料來套用這兩項修正。
退出碼 0:分清 skipped、完成與 channel 警告
10.2 版本的 Update CLI 文件指出,未辨識到 package-manager owner 的安裝可以記錄 skipped、成功退出並保留 Gateway 運作。Docker image、獨立 tarball 或 Yarn global 安裝要依原安裝方式維護;skipped 不代表已安裝目標版本。
PR #169037則保留已記錄的成功 outcome:後續結果發布失敗改為 warning;repair 驗證也會另外列出仍停止或受抑制的 channel,不把它們一律轉成整次更新失敗。disabled 或未設定的 account 不列入這類 runtime warning。
檢查順序如下;前半段是唯讀或 dry-run 診斷,沒有執行更新:
openclaw --versionopenclaw update statusopenclaw update --dry-run接著對照原本那次更新回報:
- 顯示
skipped:確認 installation owner 與 next action,透過原安裝方式更新後再核對版本。 - 已完成但有 publication warning:保留 warning,核對已安裝版本與 Gateway runtime,不為了消除顯示而盲目重跑 update。
- 有 stopped/suppressed channel warning:確認預期啟用的 account,再測試一次實際收發。更新完成不能代替 channel 恢復。
CLI 的版本輸出、service 使用的 runtime 與實際任務結果要一起保存。如果目標版本正確但任務仍失敗,沿著 Plugin、provider 或 channel 層追查,保留升級前備份;不要把錯誤訊息變少當成驗收通過。
本文的 9.9 歷史段落於 2026-10-09 查核 2026.9.9 release notes、repair 文件、Telegram Mini App、Update CLI 與 Node requirements。沒有在本機 Gateway 執行升級、Doctor 或訊息測試;以下保留先前版本的適用條件,命令與驗收流程需在自己的隔離環境執行。
先分清 stable、beta 與實際發布日期
2026-10-13 查核 GitHub 2026.10.2 release,其 published_at 是 2026-10-12 05<34>34> UTC,台灣時間為 10 月 12 日 13<34>34>,未標為 prerelease。版本名稱中的 10.2 不能當成 10 月 2 日發布的證據。
後面的外部備份流程是 10.1 引入、於 2026-10-12 查核的功能,9.9、9.8 等段落則保留歷史適用條件。先前查核的 2026.10.5-beta.1仍是預覽版;本文不把它的整份修復清單當成 10.2 stable 已具備的能力。
先用前面的版本、status 與 dry-run 診斷,核對安裝方式、更新 channel 和預計目標。維護 stable 時,beta 公告本身不構成切換 channel 的理由。
10.1 的備份,要驗收到 staging 還原
10.1 官方 changelog 與 backup 指南說明,完整備份可放到外接磁碟、掛載儲存或 Cloudflare R2,再還原到新的 staging 目錄。排程與 retention 是選用設定;沒有 retention 旗標就不會自動刪除舊備份。
升級前把下列四個條件寫進自己的復原紀錄:
- 副本是否加密:外部上傳可選 passphrase 加密,明文則需明確選
none。即使上傳有加密,加上--output留下的本機.tar.gz仍是明文;不要把這份本機檔案當成可公開分享的加密副本。 - 備份屬於哪個安裝:同時運作的安裝各用獨立 namespace。要接手原 namespace,先停止原 owner;不要為了測試第二台 Gateway 就直接 claim 原備份,讓 retention 混在一起。
- 復原所需資訊是否齊全:保存原 passphrase、location marker 與 namespace,並讓執行備份的 Gateway 能取得所需 credentials。只有 archive 檔名,不能證明在新主機上可解密與定位原資料。
- 同一世代資料是否完整:設定、共享資料庫與需要的各 agent 資料庫必須來自同一份備份世代。不能拿新的設定配舊資料庫,也不能混入別份備份的 SQLite
-wal、-shm或-journal。
這些條件對應實際復原失敗邊界,不是要求先把 R2 接上才可升級。已有本機完整備份時,也能先做同樣的 staging 還原檢查。
不覆蓋正式資料的文件範例
以下來自官方 CLI 契約,本次只檢閱,未執行備份或還原。請在自己的 OpenClaw 10.1 安裝與受控備份位置執行,將 ARCHIVE 換成已建立、可信任的完整 archive:
ARCHIVE=/absolute/path/to/openclaw-backup.tar.gzopenclaw backup verify "$ARCHIVE"openclaw backup restore "$ARCHIVE" --target ./restored-openclaw./restored-openclaw 相對於目前工作目錄,必須不存在或為空,且不能位於 live state 或任何已設定的 live agent 目錄內。restore 會驗證並寫入 staging,不會直接覆寫正式 state,也沒有強制原址還原模式。先確認目的磁碟能同時容納原資料與解壓後的完整副本;把 live 資料改名到同一磁碟,不會釋放它占用的空間。
backup verify 驗的是 archive 結構、payload 與受管理的 SQLite snapshot 等項目,不會驗明來源可信,也不會把未知內容變安全。先確認 archive 來源,再檢查 manifest 記錄的 state、workspace 與 custom agent 路徑;不要從檔名猜原路徑。還原目錄可能含帳號憑證與 session,應比照原資料保護。
staging 能完成,才進入正式切換規劃:停止使用這些檔案的 Gateway 與 node hosts,保存目前狀態,依 manifest 對應資產位置,執行 Doctor,再重新啟動並驗收。Plugin 的 node_modules 不在完整 archive 中,需依官方指引更新或重新安裝;訊息 channel 的憑證狀態也可能因回復時間點而需要重新連結。因此「解壓完成」仍不是 Plugin 或訊息收發通過的證據。
2026.9.9 復原前先確認 updater 與 Doctor 狀態
9.9 的 Failed-update recovery 說明指出,受支援的 updater 可恢復相容安裝並保留本次嘗試期間寫入的資料;恢復到 9.8 後也能繼續更新。但已開始執行的舊 updater 不會獲得這些保障,macOS 與 Linux 也要等 Doctor 程序確認停止才可重新啟動。
復原時把「現在已安裝的版本」「執行這次更新的 updater」「預計恢復的版本」分開記錄。依官方 repair 指引完成後,再查 update record 與 Gateway status;若 Doctor 尚在 cleanup,或 recovery 指示尚未完成,就先停在這裡,不要平行開另一個 Gateway。應用程式可恢復,也不表示已提交的 archive/資料庫變更可逆。
Plugin 清單有保留,不代表 refresh 可以救回全部資料
9.9 的 Plugin installation records 說明有兩個限制:已遺失的紀錄仍需備份還原;另外仍有未解決的 registry-refresh 問題,可能覆寫已保留的項目。不要把 refresh 當成確定有效的復原步驟。
升級前後比對每個 Plugin 的來源、安裝位置、enabled 與 allowlist,而不只比總數;再用同一個無敏感資料的任務確認工具仍可載入。若少了項目,先保留原始紀錄、備份與錯誤,再依官方排障處理。新增模型名稱或 Gateway health 通過,都不能證明 Plugin inventory 完整。
Telegram 開 Control UI,要重新取得 /controlui 按鈕
9.9 將 Mini App 入口與 session dashboard 分開:在 bot 私訊送 /controlui 開啟 Control UI;/dashboard 改屬 session dashboard。依官方遷移說明,原本的捷徑需要替換並取得新按鈕,owner 設定也要包含使用者的 numeric Telegram ID,不能把 username 或 wildcard 當成同等條件。
這段適用於原本已完成 Mini App 設定的 bot;更換指令不會代替 HTTPS 與 Tailscale 發布設定。Owner ID 要核對目前 bot account 的有效 allowFrom 或 commands.ownerAllowFrom,不能只查另一個 account 的清單。先在測試 bot 私訊取得新按鈕,確認是預期 Gateway 的 Control UI,再驗收一次訊息收發。若只有舊按鈕失效,先查入口與 owner ID;若一般訊息也失敗,分開查 channel 狀態。不要以一次入口錯誤直接重裝 Gateway,也不要為了測試把正式 owner 規則放寬。
9.9 GitHub release仍註明 Telegram integration checks 被 release owner 豁免、未執行。這份紀錄是測試範圍限制,不能證明 Telegram 已故障,也不能替自己的 Mini App 與收發驗收背書。
2026.9.8 要分開驗收更新器與訊息工作流
9.8 官方 release notes列出 Windows 暫時檔案鎖、macOS 安裝路徑別名及更新 repair 的修復;但新修復只在新版 updater 開始執行後適用。已在舊版開始的更新不會中途換成新程式,不能以「目標版本已修」推論第一次升級一定成功。
遇到失敗時,先記錄目前安裝版本、目標版本、啟動更新的服務帳號與第一個錯誤,再對照更新排障文件:
- 9.5/9.6 出現
Assigning to rvalue類 snapshot parse error 時,先確認 log 指名的 Plugin;官方提供單次停用該 Plugin、更新、再啟用的流程。不要把全部 Plugin 一次刪除。 - Windows 9.4 的舊資料庫 reader 仍運作時,不能強迫不相容 migration。先保留備份,讓原安裝 owner 依官方獨立 shell 流程停止舊程序、手動更新、執行新版 Doctor,再啟動與驗證;服務帳號、npm prefix、profile 與 override 都要保持一致。
- 9.8 repair 保留 Plugin allowlist 與 enabled 設定,不等於不相容 Plugin 已可正常使用。比對升級前後設定,再用該 Plugin 的實際任務驗收。
這些是依錯誤選擇的復原路徑,沒有在本文環境執行。不要為了一般升級先套用 Windows 復原操作,也不要手動改 schema 標記來假裝 migration 完成。
原本依賴代理靜默完成的流程需要調整
9.8 的 internal session 必須回傳結果或繼續工作;舊的自動 peer 往返與 target announcement 回合被移除。Doctor 會遷移退役的 silentReply.internal 與 silentReply.direct,保留 silentReply.group。有自訂委派工作流時,應驗收原請求者是否收到一次結果,後續對話或 channel 發送改由明確的 follow-up/message 操作控制。
可以在無正式資料的測試對話中委派一個讀取範例檔的任務,記錄請求者、子任務與回覆數量;再測一次延遲完成。結果遺失或重複都不能只靠 Gateway health 判定通過。本文未執行代理委派測試。
channel 顯示 connected 後仍要測收發
9.8 修復 reload/喚醒後 listener 的生命週期問題;驗收應包括正常收發、設定 reload 後收發、主機喚醒後收發,以及明確 stop 後不再接收。這是在測工作流恢復,不是要求 production 做破壞性故障演練,先用隔離帳號完成。
官方 GitHub release也記錄此版 Telegram integration checks 被 release owner 豁免、未執行。發布成功不能取代自己的 channel 驗收;尚未測過的路徑應留在待驗收清單。若正要設定本機模型,另外參考 OpenClaw 與 Ollama 的模型檢查,不要把 provider 設定錯誤混成更新器故障。
9.6 headless node 要先完成一次手動更新
2026.9.7 release notes 說明:使用預設 Plugin 的 headless node,可以在閒置時啟用已準備的更新;但公開發布的 2026.9.6 節點需要先做一次:
openclaw updateopenclaw node restart請在該節點自己的安裝環境、工作結束並確認備份後執行。若是以前景模式跑 openclaw node run,應停止並重新啟動該前景程序,不能拿 service restart 代替。這些命令尚未在本次維護實際執行。
驗收時記錄節點版本、啟動方式與更新狀態,再用原本通過的節點任務確認連線和工具可用。Gateway 更新成功不能單獨證明遠端節點也完成切換。若更新仍延後,依官方排障文件檢查是否有執行中的工作、無法回報 idle 的 Plugin 或資料庫相容性限制;不要強制重啟來掩蓋延後原因。
2026.9.6 macOS app 出現啟動問題時先做什麼
OpenClaw 官方 release page 記錄,2026.9.6 最初的 macOS app build 會在啟動時崩潰,並於 2026-09-24 09<52>52> UTC 換成重建、重新 notarized 的版本。若你裝過舊 build 且 app 無法開啟,依 release page 重新下載目前 DMG 安裝一次;npm package 沒有更動,所以這個 app 問題不需要靠重裝 npm CLI 處理。
先確認症狀屬於哪一層:只有 macOS app 啟動失敗時,檢查 DMG build;若 CLI 或 Gateway 升級失敗,先看 Node 版本、update status 和 service runtime,不要把兩種錯誤當成同一個原因。
2026.9.5 引入、在後續升級仍需驗收的功能
Atomic Updates、回復與驗證檢查項目
| 變更 | 它能處理什麼 | 仍要由 operator 驗收什麼 |
|---|---|---|
| Atomic Updates | 在目前 Gateway 繼續運作時,先檢查候選版本,再切換並驗證更新後的安裝 | 相容的資料與設定、資料庫 migration、第三方 Plugin、channel 與外部 service |
| 更新回復與 repair | 失敗報告保留主要錯誤、後續 repair/cleanup 失敗,以及下一步建議;符合條件時可恢復被停止的 service | recovery check 不等於 rollback 已完成;恢復失敗仍要依指引處理 |
| Plugin readiness 與免重啟安裝路徑 | 部分 Plugin 可以在不重啟 Gateway 的情況下安裝或完成準備 | Plugin 權限、來源、secrets、restart 需求與實際任務仍要單獨測試 |
| Doctor/service 檢查 | 更清楚處理 Linux service、Gateway 啟動、保留的 repair 檔案與 migration 狀態 | 外部 systemd、launchd、Windows Task 或 container supervisor 仍由它的 owner 控制 |
Atomic Updates 的關鍵限制是:應用程式版本可以嘗試恢復,不代表資料庫或使用者資料也能倒回去。正式升級前仍要留有可讀取、可還原、已確認內容完整的備份。
升級前先確認 Node 與 service runtime
目前文件查核的 OpenClaw Node 基線是 Node 24 至少 24.16.0,或 Node 26 至少 26.1.0,並且連結的 SQLite 必須符合 WAL reset 安全要求。若是系統套件自行連結 SQLite,不能只用 Node 版本字串判定相容;依 Node 官方安裝文件確認 runtime capability checks。Node 22、23、25,以及較早的 24.x/26.x build 不應直接拿來判定目前版本相容。
| 目前 Node | 判斷 | 升級前動作 |
|---|---|---|
| Node 22、23、25 | 不在支援基線 | 先改用受支援的 Node 24 或 26 |
| Node 24.0–24.15 | patch 不足 | 至少升到 24.16.0 |
| Node 24.16+ | 版本符合基線 | 另查 SQLite capability,再做 dry-run 與 service 驗證 |
| Node 26.0 | patch 不足 | 至少升到 26.1.0 |
| Node 26.1+ | 版本符合建議版本線 | 另查 SQLite capability,確認 Gateway service runtime |
先記錄互動 shell 看到的版本與 Gateway 狀態:
node --versionwhich nodeopenclaw --versionopenclaw update statusopenclaw gateway status如果 shell 使用的是 Node 26.1+,但 systemd、launchd、container 或版本管理器啟動的 Gateway 仍指向另一個 Node,升級結果可能變成「CLI 正常、service 起不來」。這時先查 service 的 PATH、映像與啟動 log,不要先重裝 OpenClaw。
保存可以回復的證據
升級前至少保存以下資訊:
- OpenClaw、Node、安裝方式、Gateway 啟動方式與 service owner。
~/.openclaw的受控備份。這裡可能包含 API key、OAuth、private session 與其他敏感資料,不要上傳公開 repository。- 啟用中的 Plugin、model primary/fallback、provider account、channel 與 agent Skills 清單。
- 一個可以重複的 smoke test,例如讀取指定檔案、完成單次模型呼叫與傳送測試 channel 訊息。
Atomic Updates 的候選檢查只是在另一份環境驗證下一版,不是上述備份的替代品。尤其 release notes 明確提醒,回復應用程式版本不能撤銷已完成的資料庫 migration。
若要建立本機狀態備份,先停止會持續寫入資料的程序,再使用既有的加密備份流程。不要只複製 openclaw.json:發生 migration 或 session 損壞時,只有設定檔通常不足以恢復已知健康狀態。
先 status、再 dry-run,最後才 activation
先確認目前版本與預計目標:
openclaw update statusopenclaw update --dry-run檢查 Node、channel、目標版本、Plugin 變更與預計的 service 行為後,再安排 maintenance window 執行:
openclaw update執行時把以下條件寫進變更紀錄:
- 現在的版本、Node 路徑與備份位置。
- 預計會被停止或重啟的 Gateway、Plugin 與 channel。
- 停止條件:候選檢查失敗、Gateway health check 失敗、資料庫 migration 報錯或核心 smoke test 不通過。
- 回復負責人與 service owner;外部 supervisor 不能只靠 OpenClaw CLI 代替管理。
驗證 copy 成功只代表候選版本通過 OpenClaw 能檢查到的項目,不代表私有 Plugin、外部工具、channel、secrets 與自訂 service 已被你的環境驗收。
更新失敗怎麼讀
更新結果不只看最後一行的 failed 或 success。先保留 update record、Gateway log、Node 路徑、候選驗證結果與 service 狀態,再依序查看:
openclaw update statusopenclaw doctoropenclaw gateway status若 release notes 指示需要 repair,再使用對應的 repair 命令;不要為了「清掉錯誤」直接反覆執行帶有確認跳過的旗標。需要 JSON 或自動化處理時,也應先確認 updater 已結束、profile 與 state/config override 一致,再依官方指引執行:
openclaw update repair --yes --jsonAtomic Updates 的失敗處理有幾個容易誤判的邊界:
- 主要錯誤與 cleanup 錯誤分開看:後續 repair 失敗不能取代最初的 update failure。
- 恢復健康檢查未完成,不代表 rollback 完成:檢查失敗時保留的原因與 recovery commands 才是下一個線索。
- Gateway 可能維持 stopped:activation timeout、恢復未完成或外部 systemd 尚未由 owner 停止時,不要直接重新啟動多個副本。
- 保留 preserved originals:完成檢查前不要刪掉修復流程保留的檔案,否則可能失去比錯誤摘要更完整的證據。
如果問題是 Node 不支援,先修 service runtime;如果是第三方 Plugin,先在隔離環境停用並重跑;如果是設定 migration,從備份與 diff 找出具體欄位。回復的目標是恢復已知健康版本,不是強迫新版本在不相容狀態下啟動。
Plugin 可以免重啟,不代表可以免驗收
2026.9.5 的部分 Plugin 安裝流程可以不重啟 Gateway。這對維持對話或降低 maintenance window 有幫助,但不應被解讀成「安裝後立即安全」:
- 先確認 Plugin 來源、版本、權限、需要的 secrets 與外部連線。
- 在 read-only workspace 執行 discovery 或 health check,記錄實際載入的版本。
- 用最小權限任務驗證讀取、寫入、shell、browser 與外部 API 是否各自符合預期。
- 只有確認 Plugin readiness、Gateway log 與 smoke test 都正常後,才讓它進入既有工作流。
不要因為名稱看起來官方或推薦,就自動授予 shell、browser、寫檔與外部服務權限。更新本身通過候選檢查,也不會替你的組織完成 Plugin 的權限審查。
Skills、workspace 與資料分享要拆開測試
較早版本已把 Skills Workshop 的 ownership、Skills/Plugin discovery、雲端 workspace 重用與 public conversation 帶入更新流程。在後續升級前,仍應逐項確認:
- agent-owned Skills collection 是否完整,同名 Skill 是否因舊 workspace 複製而重複。
- discovery 找到的 Skill 或 Plugin 是否真的符合來源、版本、權限與 secrets 政策。
- private repository 的新 checkout 是否使用預期的 credentials、bind mount 與 workspace path。
- public conversation、Team Reports 或 browser session 是否意外擴大資料可見性;沒有明確分享需求時,不要只為測試點 publish。
- 舊 migration、session history 與 Doctor repair 是否完成;不要只看 UI 能否開啟就判定資料已正常。
先完成 Node、Gateway、模型、Plugin、Skills 與 channel 的基本驗收,再逐一啟用其他能力。把 runtime、資料可見性與 agent 權限混成一次大變更,會讓失敗原因難以還原。
升級後的驗收清單
完成 activation 後,先跑:
node --versionopenclaw --versionopenclaw update statusopenclaw gateway statusopenclaw doctor接著逐項驗收:
- Runtime:互動 shell 與 service 使用同一個受支援 Node,restart 後 Gateway health 正常。
- 更新記錄:update record、候選檢查結果與任何 Doctor warning 都可追溯。
- 模型與帳號:primary、fallback、provider account 順序沒有被意外改寫。
- Plugin/Skills:實際載入版本、ownership、權限與 secrets 邊界符合預期。
- 資料與 channel:舊記憶可讀、單次模型呼叫成功、實際 channel 能收發,沒有把斷線 session 誤報為 idle。
- 回復能力:備份可讀,負責人知道 service owner 與下一個 recovery command;不要把「目前看起來正常」當成已完成回復演練。
常見問題
Q: Atomic Updates 通過後,可以刪除升級前備份嗎?
A: 不可以。候選驗證是在 private copy 執行,回復應用程式也無法撤銷資料庫 migration。至少等 smoke test、資料檢查與一個實際工作流都完成,再依保留政策處理備份。
Q: Gateway 在更新後變成 stopped,該一直重跑 update 嗎?
A: 不要。先等 updater 與 child process 結束,查看 openclaw update status、Doctor 指引與 service owner。若是外部 systemd、launchd、Windows Task 或 container supervisor 管理,必須透過該 owner 停止、檢查與重啟。
Q: openclaw doctor 顯示 recovery check,是否代表 rollback 已完成?
A: 不代表。recovery check 只表示正在檢查或回報恢復結果;若 health check 失敗,仍要依保留的原因與 recovery commands 處理,並保留 preserved originals。
Q: Plugin 不需要重啟 Gateway,就可以直接放進 production 嗎?
A: 不行。免重啟是安裝與 readiness 的產品路徑,不是權限審查。仍要檢查來源、實際版本、secrets、外部連線與最小權限 smoke test。
參考資料:
OpenClaw GitHub:2026.10.3 stable release
OpenClaw:v2026.10.3 固定版本 changelog
OpenClaw:pnpm durable service path
OpenClaw:Doctor 保留 OAuth profiles
OpenClaw:略過 Doctor 時的 repair 結果
OpenClaw GitHub:2026.10.2 stable release
OpenClaw:從 stable 10.1 首次升級的 cleanup 相容修正
OpenClaw:Windows 10.1 updater 的 pending-migration 相容修正
OpenClaw:成功 outcome 與停止中的 channel 警告
OpenClaw:v2026.10.2 Update CLI 文件
OpenClaw GitHub:2026.10.1 stable release
OpenClaw:2026.10.1 官方 changelog
OpenClaw Docs:完整備份與 staging 還原
OpenClaw Docs:2026.9.9 release notes
OpenClaw GitHub:2026.9.9 release 與驗證範圍
OpenClaw Docs:repair 與 recovery
OpenClaw Docs:Telegram Mini App 遷移
OpenClaw Docs:2026.9.8 release notes
OpenClaw GitHub:2026.9.8 release 與驗證紀錄
OpenClaw Docs:2026.9.7 release notes
OpenClaw GitHub:2026.9.6 release 與 macOS rebuild 說明
OpenClaw:snapshot 失敗分類 #171457
OpenClaw:snapshot 假變更修正 #170351
OpenClaw:migration 後驗證修正 #170130
OpenClaw:app-owned offline Doctor #170768
OpenClaw:2026.10.5 stable release