8121 字
41 分鐘

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> UTC,台灣時間是 10 月 19 日 05<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> UTC,台灣時間為 10 月 16 日 08<36>;版本名稱中的 10.4 不代表 10 月 4 日發布。官方將它列為 10.3 的穩定性修補,沒有新增功能或設定變更。查核範圍固定為這個 release,不把較新 beta 的完整修復清單視為 stable 能力。

先保存原本失敗的 log 與 update status,再做新的 dry-run 或更新。以下是文件檢閱用的唯讀診斷命令,本文未執行:

Terminal window
openclaw --version
openclaw update status --json
openclaw gateway status

10.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 診斷,沒有執行更新:

Terminal window
openclaw --version
openclaw update status
openclaw 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> UTC,台灣時間為 10 月 12 日 13<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 旗標就不會自動刪除舊備份。

升級前把下列四個條件寫進自己的復原紀錄:

  1. 副本是否加密:外部上傳可選 passphrase 加密,明文則需明確選 none。即使上傳有加密,加上 --output 留下的本機 .tar.gz 仍是明文;不要把這份本機檔案當成可公開分享的加密副本。
  2. 備份屬於哪個安裝:同時運作的安裝各用獨立 namespace。要接手原 namespace,先停止原 owner;不要為了測試第二台 Gateway 就直接 claim 原備份,讓 retention 混在一起。
  3. 復原所需資訊是否齊全:保存原 passphrase、location marker 與 namespace,並讓執行備份的 Gateway 能取得所需 credentials。只有 archive 檔名,不能證明在新主機上可解密與定位原資料。
  4. 同一世代資料是否完整:設定、共享資料庫與需要的各 agent 資料庫必須來自同一份備份世代。不能拿新的設定配舊資料庫,也不能混入別份備份的 SQLite -wal、-shm 或 -journal。

這些條件對應實際復原失敗邊界,不是要求先把 R2 接上才可升級。已有本機完整備份時,也能先做同樣的 staging 還原檢查。

不覆蓋正式資料的文件範例#

以下來自官方 CLI 契約,本次只檢閱,未執行備份或還原。請在自己的 OpenClaw 10.1 安裝與受控備份位置執行,將 ARCHIVE 換成已建立、可信任的完整 archive:

Terminal window
ARCHIVE=/absolute/path/to/openclaw-backup.tar.gz
openclaw 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 節點需要先做一次:

Terminal window
openclaw update
openclaw 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> 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 失敗,以及下一步建議;符合條件時可恢復被停止的 servicerecovery 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.15patch 不足至少升到 24.16.0
Node 24.16+版本符合基線另查 SQLite capability,再做 dry-run 與 service 驗證
Node 26.0patch 不足至少升到 26.1.0
Node 26.1+版本符合建議版本線另查 SQLite capability,確認 Gateway service runtime

先記錄互動 shell 看到的版本與 Gateway 狀態:

Terminal window
node --version
which node
openclaw --version
openclaw update status
openclaw gateway status

如果 shell 使用的是 Node 26.1+,但 systemd、launchd、container 或版本管理器啟動的 Gateway 仍指向另一個 Node,升級結果可能變成「CLI 正常、service 起不來」。這時先查 service 的 PATH、映像與啟動 log,不要先重裝 OpenClaw。

保存可以回復的證據#

升級前至少保存以下資訊:

  1. OpenClaw、Node、安裝方式、Gateway 啟動方式與 service owner。
  2. ~/.openclaw 的受控備份。這裡可能包含 API key、OAuth、private session 與其他敏感資料,不要上傳公開 repository。
  3. 啟用中的 Plugin、model primary/fallback、provider account、channel 與 agent Skills 清單。
  4. 一個可以重複的 smoke test,例如讀取指定檔案、完成單次模型呼叫與傳送測試 channel 訊息。

Atomic Updates 的候選檢查只是在另一份環境驗證下一版,不是上述備份的替代品。尤其 release notes 明確提醒,回復應用程式版本不能撤銷已完成的資料庫 migration。

若要建立本機狀態備份,先停止會持續寫入資料的程序,再使用既有的加密備份流程。不要只複製 openclaw.json:發生 migration 或 session 損壞時,只有設定檔通常不足以恢復已知健康狀態。

先 status、再 dry-run,最後才 activation#

先確認目前版本與預計目標:

Terminal window
openclaw update status
openclaw update --dry-run

檢查 Node、channel、目標版本、Plugin 變更與預計的 service 行為後,再安排 maintenance window 執行:

Terminal 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 狀態,再依序查看:

Terminal window
openclaw update status
openclaw doctor
openclaw gateway status

若 release notes 指示需要 repair,再使用對應的 repair 命令;不要為了「清掉錯誤」直接反覆執行帶有確認跳過的旗標。需要 JSON 或自動化處理時,也應先確認 updater 已結束、profile 與 state/config override 一致,再依官方指引執行:

Terminal window
openclaw update repair --yes --json

Atomic 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 有幫助,但不應被解讀成「安裝後立即安全」:

  1. 先確認 Plugin 來源、版本、權限、需要的 secrets 與外部連線。
  2. 在 read-only workspace 執行 discovery 或 health check,記錄實際載入的版本。
  3. 用最小權限任務驗證讀取、寫入、shell、browser 與外部 API 是否各自符合預期。
  4. 只有確認 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 後,先跑:

Terminal window
node --version
openclaw --version
openclaw update status
openclaw gateway status
openclaw doctor

接著逐項驗收:

  1. Runtime:互動 shell 與 service 使用同一個受支援 Node,restart 後 Gateway health 正常。
  2. 更新記錄:update record、候選檢查結果與任何 Doctor warning 都可追溯。
  3. 模型與帳號:primary、fallback、provider account 順序沒有被意外改寫。
  4. Plugin/Skills:實際載入版本、ownership、權限與 secrets 邊界符合預期。
  5. 資料與 channel:舊記憶可讀、單次模型呼叫成功、實際 channel 能收發,沒有把斷線 session 誤報為 idle。
  6. 回復能力:備份可讀,負責人知道 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:備份目的地

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 Docs:更新疑難排解

OpenClaw GitHub:2026.9.6 release 與 macOS rebuild 說明

OpenClaw Docs:2026.9.5 release notes

OpenClaw Docs:Update CLI

OpenClaw Docs:Node requirements

OpenClaw:2026.10.4 release

OpenClaw:10.4 Update CLI

OpenClaw:snapshot 失敗分類 #171457

OpenClaw:snapshot 假變更修正 #170351

OpenClaw:migration 後驗證修正 #170130

OpenClaw:app-owned offline Doctor #170768

OpenClaw:2026.10.5 stable release

OpenClaw:10.5 Update CLI

OpenClaw:no-restart 套件更新回報 #173409

OpenClaw:同版本不同 build 的驗證 #174649

OpenClaw 2026.10.5 升級:no-restart、snapshot 與 Gateway 驗收
https://laplusda.com/posts/openclaw-2026-9-3-upgrade-checklist/
作者
Zero
發佈於
2026-09-10
許可協議
CC BY-NC-SA 4.0