openclaw doctor 是 OpenClaw 的修復與遷移工具。它會修正過時的設定/狀態、檢查健康情況,並提供可採取行動的修復步驟。
快速開始
無介面與自動化模式
- --yes
- --fix
- --lint
- --fix --force
- --non-interactive
- --deep
唯讀 lint 模式
openclaw doctor --lint 是
openclaw doctor --fix 適合自動化使用的同類模式。兩者共用相同的 Doctor 規則登錄庫,但
選取及執行規則的方式並不相同:
doctor --lint 會執行廣泛且安全的自動化設定檔:執行靜態、本機,
且有助於 CI 或前置檢查輸出的檢查。它會略過選擇加入的檢查,包括建議性、
對環境敏感、依賴即時服務、帳號/工作區清查,或歷史清理的檢查。若要執行
完整的已登錄 lint 稽核(包括這些選擇加入的檢查),請使用 doctor --lint --all;若要
執行特定檢查,則使用 --only <id>。
doctor --fix 不會使用 lint 預設設定檔,也不接受
--all。它會執行 Doctor 的依序修復路徑:現代健康檢查可以提供
選用的 repair() 實作,而較舊的區域仍使用其舊版
Doctor 修復流程。部分 lint 發現項目刻意僅供診斷,因此某項檢查出現在 --lint --all 中,
並不代表 --fix 會變更該區域。
此合約將 detect()(回報發現項目)與 repair()(回報
變更/差異/副作用)分開,為未來的
doctor --fix --dry-run 保留實作空間,而不會將 lint 檢查變成變更規劃器。
部分內建檢查在內部預設為停用,使其仍可供
--all、--only 及 Doctor 修復流程使用,而不會成為預設
doctor --lint 自動化設定檔的一部分。每個發現項目仍會輸出其嚴重性
(info、warning 或 error);預設選取與否並非嚴重性
等級。
ok:是否有任何發現項目達到所選的嚴重性門檻checksRun/checksSkipped:計數(因設定檔、--only或--skip而略過)findings:包含checkId、severity、message,以及選用的path、line、column、ocPath、source、target、requirement、fixHint的結構化診斷
--severity-min info|warning|error(預設為warning):控制輸出的內容,以及哪些情況會造成非零結束代碼。--all:執行每個已登錄的 lint 檢查,包括未納入預設自動化集合的選擇加入檢查。--only <id>(可重複):僅執行指定 ID 的檢查;未知的 ID 會回報為錯誤發現項目。--skip <id>(可重複):排除某項檢查,同時繼續執行其餘檢查。--json、--severity-min、--all、--only及--skip需要--lint;純openclaw doctor與--fix執行會拒絕這些旗標。
功能摘要
健康狀態、UI 與更新
健康狀態、UI 與更新
- 針對 git 安裝的選用前置更新(僅限互動模式)。
- UI 通訊協定時效檢查(當通訊協定結構描述較新時,重新建置 Control UI)。
- 健康檢查 + 重新啟動提示。
- 僅顯示有問題的 skill 與外掛附註;健康的清查資訊保留在
openclaw skills check與openclaw plugins list中。
設定與遷移
設定與遷移
- 舊版值結構的設定正規化。
- 將 Talk 設定從舊版扁平
talk.*欄位遷移至talk.provider+talk.providers.<provider>。 - 舊版 Chrome 擴充功能設定及 Chrome MCP 就緒狀態的瀏覽器遷移檢查。
- OpenCode 提供者覆寫警告(
models.providers.opencode/opencode-zen/opencode-go)。 - 舊版 OpenAI Codex 提供者/設定檔遷移(
openai-codex→openai),以及過時models.providers.openai-codex的遮蔽警告。 - OpenAI Codex OAuth 設定檔的 OAuth TLS 先決條件檢查。
- 當
plugins.allow有限制,但工具原則仍要求萬用字元或外掛擁有的工具時,顯示外掛/工具允許清單警告。 - 舊版磁碟狀態遷移(工作階段/代理程式目錄/WhatsApp 驗證)。
- 舊版外掛資訊清單合約鍵遷移(
speechProviders、realtimeTranscriptionProviders、realtimeVoiceProviders、mediaUnderstandingProviders、imageGenerationProviders、videoGenerationProviders、webFetchProviders、webSearchProviders→contracts)。 - 舊版排程儲存區遷移(
jobId、schedule.cron、頂層傳遞/承載資料欄位、承載資料provider、notify: true網路鉤子後援工作)。 - 在
agents.defaults、agents.entries.*及models.providers.*(包括各模型項目)中修復 Codex 命令列介面執行階段釘選(agentRuntime.id: "codex-cli"→"codex")。 - 啟用外掛時清理過時的外掛設定;當
plugins.enabled=false時,過時的外掛參照會保留為非作用中的隔離設定。
狀態與完整性
狀態與完整性
- 檢查工作階段鎖定檔並清理過時的鎖定。
- 修復受影響的 2026.4.24 組建所建立、含重複提示重寫分支的工作階段文字記錄。
- 偵測卡住的主要工作階段與子代理程式重新啟動復原墓碑。Doctor 會回報遭封鎖的工作階段,且僅修復與現有墓碑衝突的過時中止旗標;不會重新啟用自動復原。
- 狀態完整性與權限檢查(工作階段、文字記錄、狀態目錄)。
- 在本機執行時檢查設定檔權限(chmod 600)。
- 模型驗證健康狀態:檢查 OAuth 到期時間、可重新整理即將到期的權杖,並回報驗證設定檔的冷卻/停用狀態。
閘道、服務與監督程式
閘道、服務與監督程式
- 啟用沙箱時修復沙箱映像檔。
- 舊版服務遷移及額外閘道偵測。
- Matrix 頻道舊版狀態遷移(在
--fix/--repair模式中)。 - 閘道執行階段檢查(服務已安裝但未執行;快取的 launchd 標籤)。
- 頻道狀態警告(從執行中的閘道探查)。
- 頻道特定的權限檢查位於
openclaw channels capabilities下;例如,使用openclaw channels capabilities --channel discord --target channel:<channel-id>稽核 Discord 語音頻道權限。 - 當閘道事件迴圈健康狀態降級,但本機終端介面用戶端仍在執行時,檢查 WhatsApp 回應能力;
--fix僅停止已驗證的本機終端介面用戶端。 - 修復主要模型、後援模型、影像/影片生成模型、心跳偵測/子代理程式/壓縮覆寫、掛鉤、頻道模型覆寫及工作階段路由釘選中的舊版
openai-codex/*模型參照;--fix會將其重寫為openai/*、將openai-codex:*驗證設定檔/順序遷移至openai:*、移除過時的工作階段/整個代理程式執行階段釘選,並由修復後的有效路由判斷 Codex 是否相容。 - 監督程式設定稽核(launchd/systemd/schtasks),可選擇進行修復。
- 清理在安裝或更新期間擷取到 shell
HTTP_PROXY/HTTPS_PROXY/NO_PROXY值的閘道服務內嵌 Proxy 環境。 - 閘道執行階段檢查(不支援的舊版 Bun 服務、版本管理工具路徑)。
- 閘道連接埠衝突診斷(預設
18789)。
驗證、安全性與配對
驗證、安全性與配對
- 開放 DM 原則的安全性警告。
- 本機權杖模式的閘道驗證檢查(當不存在權杖來源時提供產生權杖的選項;不會覆寫權杖 SecretRef 設定)。
- 裝置配對問題偵測(待處理的首次配對要求、待處理的角色/範圍升級、過時的本機裝置權杖快取偏移,以及已配對記錄的驗證偏移)。
工作區與 shell
工作區與 shell
- Linux 上的 systemd linger 檢查。
- 工作區啟動檔案大小檢查(內容檔案的截斷/接近上限警告)。
- 預設代理程式的 Skills 就緒狀態檢查;回報缺少執行檔、環境、設定或作業系統需求的已允許 skill,而
--fix可在skills.entries中停用不可用的 skill。 - Shell 自動補齊狀態檢查與自動安裝/升級。
- 記憶搜尋嵌入提供者就緒狀態檢查(本機模型、遠端 API 金鑰或 QMD 執行檔)。
- 原始碼安裝檢查(pnpm 工作區不符、缺少 UI 資產、缺少 tsx 執行檔)。
- 寫入更新後的設定 + 精靈中繼資料。
夢境 UI 回填與重設
Control UI 的夢境場景包含用於落地夢境整理工作流程的 回填、重設 和 清除落地項目 操作。這些操作使用閘道的 doctor 風格 RPC 方法,但不屬於openclaw doctor 命令列介面的修復/遷移功能。
MEMORY.md、執行完整的 doctor 遷移,也不會自行將落地候選項目暫存至即時短期提升儲存區。若要將落地的歷史重播內容送入一般的深度提升管道,請改用命令列介面流程:
DREAMS.md 保持作為審查介面。
詳細行為與設計理由
0. 選用更新(git 安裝)
0. 選用更新(git 安裝)
1. 設定正規化
1. 設定正規化
talk.provider + talk.providers.<provider>,即時語音設定則位於 talk.realtime.* 下。Doctor 會將舊版 talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey 格式重寫至提供者對應表,並將舊版頂層即時選擇器(talk.mode、talk.transport、talk.brain、talk.model、talk.voice)重寫至 talk.realtime。當 plugins.allow 非空白,且工具原則使用萬用字元或外掛所擁有的工具項目時,Doctor 也會發出警告。tools.allow: ["*"] 僅比對來自實際載入之外掛的工具;它不會略過排他性的外掛允許清單。2. 舊版設定鍵遷移
2. 舊版設定鍵遷移
openclaw doctor。Doctor 會說明找到哪些舊版鍵、顯示所套用的遷移,並使用更新後的結構描述重寫 ~/.openclaw/openclaw.json。閘道啟動時會拒絕舊版設定格式,並要求你執行 openclaw doctor --fix;它不會在啟動時重寫 openclaw.json。排程工作儲存區的遷移也由 openclaw doctor --fix 處理。routing.queue、routing.bindings、routing.agents/defaultAgentId、
routing.transcribeAudio、頂層 agent.*,或多代理程式設定格式推出前的頂層 identity)
已不再提供遷移路徑;目前使用這些鍵的設定會直接驗證失敗,而不會進行重寫。
請依照目前的設定參考資料手動修正這些鍵,doctor 才能繼續執行。plugins.entries.voice-call.config.* 列會在每次載入設定時,由語音通話外掛本身正規化,而不是由 openclaw doctor 正規化。該外掛也會記錄啟動警告並指向 openclaw doctor --fix,但 doctor 目前不會針對這些鍵重寫
openclaw.json;在執行階段套用變更的是外掛本身的正規化機制。- 如果設定了兩個以上的
channels.<channel>.accounts項目,但未設定channels.<channel>.defaultAccount或accounts.default,doctor 會警告備援路由可能選到非預期的帳號。 - 如果將
channels.<channel>.defaultAccount設為未知的帳號 ID,doctor 會發出警告並列出已設定的帳號 ID。
2b. OpenCode 提供者覆寫
2b. OpenCode 提供者覆寫
models.providers.opencode、opencode-zen 或 opencode-go,它會覆寫來自 openclaw/plugin-sdk/llm 的內建 OpenCode 目錄。這可能會強制模型使用錯誤的 API,或將成本歸零。Doctor 會發出警告,讓你移除覆寫並還原各模型的 API 路由與成本。2c. 瀏覽器遷移與 Chrome MCP 就緒狀態
2c. 瀏覽器遷移與 Chrome MCP 就緒狀態
browser.profiles.*.driver: "extension" → "existing-session";移除 browser.relayBindHost)。當你使用 defaultProfile: "user" 或已設定的 existing-session 設定檔時,doctor 也會稽核主機本機的 Chrome MCP 路徑:- 針對預設自動連線設定檔,檢查同一台主機上是否已安裝 Google Chrome
- 檢查偵測到的 Chrome 版本,並在低於 Chrome 144 時發出警告
- 提醒你在瀏覽器檢查頁面中啟用遠端偵錯(例如
chrome://inspect/#remote-debugging、brave://inspect/#remote-debugging或edge://inspect/#remote-debugging)
responsebody、PDF 匯出、下載攔截及批次動作等進階路由,仍需要受管理的瀏覽器或原始 CDP 設定檔。此檢查不適用於 Docker、沙箱、遠端瀏覽器或其他無頭流程;這些流程會繼續使用原始 CDP。2d. OAuth TLS 必要條件
2d. OAuth TLS 必要條件
UNABLE_TO_GET_ISSUER_CERT_LOCALLY、憑證已過期或自我簽署憑證),doctor 會輸出平台專屬的修正指引。在使用 Homebrew Node 的 macOS 上,修正方式通常是 brew postinstall ca-certificates。使用 --deep 時,即使閘道運作正常,也會執行探測。2e. Codex OAuth 提供者覆寫
2e. Codex OAuth 提供者覆寫
models.providers.openai-codex 下新增了舊版 OpenAI 傳輸設定,這些設定可能會遮蔽內建的 Codex OAuth 提供者路徑。Doctor 同時看到這些舊傳輸設定與 Codex OAuth 時會發出警告,讓你移除或重寫過時的傳輸覆寫,並還原目前的路由行為。自訂 Proxy 與僅限標頭的覆寫仍受支援,且不會觸發此警告,但這些自行定義的要求路由不符合隱含 Codex 選擇的資格。2f. Codex 路由修復
2f. Codex 路由修復
openai-codex/* 模型參照。原生 Codex 控制框架路由使用標準的 openai/* 模型參照,但僅憑前綴絕不會選取 Codex。當執行階段政策未設定或為 auto 時,只有完全相符的官方 HTTPS Platform Responses 或 ChatGPT Responses 路由,且沒有自行定義的要求覆寫,才符合資格。請參閱 OpenAI 隱含代理程式執行階段。在 --fix / --repair 模式下,doctor 會重寫受影響的預設代理程式與個別代理程式參照,包括主要模型、備援模型、影像/影片生成模型、心跳偵測/子代理程式/壓縮覆寫、掛鉤、頻道模型覆寫,以及過時的持續保存工作階段路由狀態:openai-codex/gpt-*會變成openai/gpt-*。- 對於已修復的代理程式模型參照,Codex 使用意圖會移至以提供者/模型為範圍的
agentRuntime.id: "codex"項目。 - 系統會移除過時的完整代理程式執行階段設定與持續保存的工作階段執行階段固定項目,因為執行階段選擇是以提供者/模型為範圍。
- 除非已修復的舊版模型參照需要 Codex 路由以保留舊有驗證路徑,否則會保留現有的提供者/模型執行階段政策。
- 會保留現有模型備援清單並重寫其中的舊版項目;複製的個別模型設定會從舊版鍵移至標準的
openai/*鍵。 - 系統會在所有探索到的代理程式工作階段儲存區中,修復持續保存的工作階段
modelProvider/providerOverride、model/modelOverride、備援通知及驗證設定檔固定項目。 - Doctor 會另外在
agents.defaults、agents.entries.*與models.providers.*模型項目中,將過時的agentRuntime.id: "codex-cli"固定項目(一個不同的舊版執行階段 ID)修復為"codex"。 /codex ...表示「從聊天中控制或繫結原生 Codex 對話」。/acp ...或runtime: "acp"表示「使用外部 ACP/acpx 轉接器」。
2g. 工作階段路由清理
2g. 工作階段路由清理
openclaw doctor --fix 可以清除自動建立的過時狀態,例如 modelOverrideSource: "auto" 模型固定項目、執行階段模型中繼資料、固定的控制框架 ID、命令列介面工作階段繫結,以及自動驗證設定檔覆寫。明確的使用者或舊版工作階段模型選擇會回報供人工審查,並保持不變;若不再需要該路由,請使用 /model ...、/new 切換,或重設工作階段。3. 舊版狀態遷移(磁碟配置)
3. 舊版狀態遷移(磁碟配置)
- 工作階段儲存區與對話記錄:從
~/.openclaw/sessions/遷移至~/.openclaw/agents/<agentId>/sessions/ - 代理程式目錄:從
~/.openclaw/agent/遷移至~/.openclaw/agents/<agentId>/agent/ - WhatsApp 驗證狀態(Baileys):從舊版
~/.openclaw/credentials/*.json(oauth.json除外)遷移至~/.openclaw/credentials/whatsapp/<accountId>/...(預設帳號 ID:default) - 已簽署的裝置身分:從
~/.openclaw/identity/device.json遷移至state/openclaw.sqlite中的primarydevice_identities列;獨立的裝置驗證檔案保持不變
openclaw doctor 遷移。Talk 提供者/提供者對應表正規化會依結構相等性比較,因此僅鍵順序不同的差異不再重複觸發無實質變更的 doctor --fix 變更。3a. 舊版外掛資訊清單遷移
3a. 舊版外掛資訊清單遷移
speechProviders、realtimeTranscriptionProviders、realtimeVoiceProviders、mediaUnderstandingProviders、imageGenerationProviders、videoGenerationProviders、webFetchProviders、webSearchProviders)。發現時,它會提議將這些鍵移至 contracts 物件,並就地重寫資訊清單檔案。此遷移具等冪性;如果 contracts 已有相同值,系統會移除舊版鍵,而不會重複資料。3b. 舊版排程儲存區遷移
3b. 舊版排程儲存區遷移
~/.openclaw/cron/jobs.json)中的舊工作結構。目前的排程清理包括:jobId→idschedule.cron→schedule.expr- 頂層承載資料欄位(
message、model、thinking,……)→payload - 頂層遞送欄位(
deliver、channel、to、provider,……)→delivery - 承載資料中的
provider遞送別名 → 明確的delivery.channel - 舊版
notify: true網路鉤子備援工作 → 若已淘汰的原始cron.webhook值有效,則改為明確的網路鉤子遞送;公告工作會保留其聊天遞送,並取得delivery.completionDestination。接著 doctor 會移除舊設定鍵。如果沒有可用的舊版網路鉤子,對於沒有目標的工作,系統會移除無作用的頂層notify標記(保留現有遞送,包括公告),因為執行階段遞送從不讀取該標記。
jobs.json 移除之前,原始格式錯誤的列會複製到有效儲存區旁的 jobs-quarantine.json;doctor 會回報已隔離的列,讓你可以人工審查或修復。閘道啟動時會正規化執行階段投影並忽略頂層 notify 標記,但會保留持續保存的排程狀態供 doctor 修復。對於沒有遷移目標的工作(delivery.mode 為無/不存在、舊版網路鉤子目標無法使用,或已有公告/聊天遞送),doctor 會移除無作用的標記,並保持現有遞送不變,因此重複執行 doctor --fix 時,不再針對同一工作反覆發出警告。在 Linux 上,當使用者的 crontab 仍呼叫舊版 ~/.openclaw/bin/ensure-whatsapp.sh 時,doctor 也會發出警告。目前的 OpenClaw 不維護該主機本機指令碼;當排程無法連線至 systemd 使用者匯流排時,它可能會將錯誤的 Gateway inactive 訊息寫入 ~/.openclaw/logs/whatsapp-health.log。請使用 crontab -e 移除過時的 crontab 項目;目前的健康狀態檢查請使用 openclaw channels status --probe、openclaw doctor 與 openclaw gateway status。3c. 工作階段鎖定清理
3c. 工作階段鎖定清理
--fix / --repair 模式下,它會自動移除擁有者已終止、孤立、遭重複使用、格式錯誤且過舊,或不屬於 OpenClaw 的鎖定。仍由執行中的 OpenClaw 程序擁有的舊鎖定會被回報但保留原狀,確保 doctor 不會中斷仍在活動中的逐字稿寫入程序。3d. 工作階段逐字稿分支修復
3d. 工作階段逐字稿分支修復
--fix / --repair 模式下,doctor 會在每個受影響檔案的原始檔旁建立備份,並將逐字稿重寫至活動分支,使閘道歷程與記憶讀取器不再看到重複回合。4. 狀態完整性檢查(工作階段持續保存、路由與安全性)
4. 狀態完整性檢查(工作階段持續保存、路由與安全性)
- 狀態目錄不存在:警告災難性的狀態遺失、提示重新建立目錄,並提醒你它無法復原遺失的資料。
- 狀態目錄權限:驗證是否可寫入;提供修復權限的選項(偵測到擁有者/群組不符時,會顯示
chown提示)。 - macOS 雲端同步狀態目錄:當狀態解析至 iCloud Drive(
~/Library/Mobile Documents/com~apple~CloudDocs/...)或~/Library/CloudStorage/...下方時發出警告,因為同步支援的路徑可能造成較慢的 I/O,以及鎖定/同步競爭。 - Linux SD 或 eMMC 狀態目錄:當狀態解析至
mmcblk*掛載來源時發出警告,因為以 SD/eMMC 為基礎的隨機 I/O 可能較慢,且在工作階段與認證資訊寫入時耗損得更快。 - Linux 揮發性狀態目錄:當狀態解析至
tmpfs或ramfs時發出警告,因為工作階段、認證資訊、設定與 SQLite 狀態(含 WAL/日誌附屬檔案)會在重新啟動時消失。Dockeroverlay掛載不會刻意標示,因為只要容器仍存在,其可寫入層就會在主機重新啟動後持續保留。 - 工作階段目錄不存在:必須有
sessions/與工作階段存放區目錄,才能持續保存歷程並避免ENOENT當機。 - 逐字稿不符:近期工作階段項目缺少逐字稿檔案時發出警告。
- 主要工作階段「單行 JSONL」:主要逐字稿只有一行時標示異常(歷程未持續累積)。
- 多個狀態目錄:當多個家目錄中存在多個
~/.openclaw資料夾,或OPENCLAW_STATE_DIR指向其他位置時發出警告(歷程可能分散在不同安裝之間)。 - 遠端模式提醒:若為
gateway.mode=remote,doctor 會提醒你在遠端主機上執行(狀態儲存在該處)。 - 設定檔權限:若群組/所有人可讀取
~/.openclaw/openclaw.json,則發出警告並提供將權限收緊為600的選項。
5. 模型驗證健康狀態(OAuth 到期)
5. 模型驗證健康狀態(OAuth 到期)
--non-interactive 會略過重新整理嘗試。OAuth 重新整理永久失敗時(例如 refresh_token_reused、invalid_grant,或供應商要求你重新登入),doctor 會回報必須重新驗證,並顯示要執行的確切 openclaw models auth login --provider ... 命令。Doctor 也會回報因短暫冷卻期(速率限制/逾時/驗證失敗)或較長時間停用(帳務/額度失敗)而暫時無法使用的驗證設定檔。權杖儲存在 macOS Keychain 中的舊版 Codex OAuth 設定檔(採用檔案型附屬配置之前的舊版初始設定)只能由 doctor 修復。請從互動式終端機執行一次 openclaw doctor --fix,將由 Keychain 支援的舊版權杖就地遷移至 auth-profiles.json;之後,內嵌回合(Telegram、排程、子代理程式分派)會將其解析為標準 OpenAI OAuth 設定檔。6. Hooks 模型驗證
6. Hooks 模型驗證
hooks.gmail.model,doctor 會根據目錄與允許清單驗證模型參照,並在無法解析或不允許時發出警告。7. 沙箱映像修復
7. 沙箱映像修復
7b. 外掛安裝清理
7b. 外掛安裝清理
openclaw doctor --fix / openclaw doctor --repair 模式下,Doctor 會移除 OpenClaw 產生的舊版外掛相依套件暫存狀態:過期的已產生相依套件根目錄、舊安裝暫存目錄、先前內建外掛相依套件修復程式碼留下的套件本機殘留項目,以及孤立或已復原、受管理的內建 @openclaw/* 外掛 npm 副本,這些副本可能遮蔽目前的內建資訊清單。Doctor 也會將主機的 openclaw 套件重新連結至宣告 peerDependencies.openclaw 的受管理 npm 外掛,確保 openclaw/plugin-sdk/* 等套件本機執行階段匯入在更新或 npm 修復後仍能解析。當設定參照可下載的外掛,但本機外掛登錄找不到它們時,Doctor 也可以重新安裝這些遺失的外掛(實質 plugins.entries、已設定的頻道/供應商/搜尋設定、已設定的代理程式執行階段)。套件更新期間,doctor 會在核心套件正被替換時避免重新安裝外掛套件;若更新後已設定的外掛仍需復原,請再次執行 openclaw doctor --fix。除了下述容器映像啟動例外,閘道啟動與設定重新載入不會執行套件修復;外掛安裝仍須明確透過 doctor/安裝/更新作業執行。容器化閘道啟動有一項範圍有限的升級例外:當 openclaw gateway run 在新的 OpenClaw 版本上啟動時,它會先執行安全的狀態遷移與既有的核心更新後外掛收斂程序,再進入就緒狀態,之後記錄每個版本的檢查點。此啟動程序可清理過期的內建外掛記錄、修復本機外掛連結、在收斂路徑需要時重新安裝已設定的外掛套件,並檢查活動中的外掛承載內容。若啟動時無法安全修復,請先使用 openclaw doctor --fix,針對相同的已掛載狀態/設定執行同一映像一次,再正常重新啟動容器。8. 閘道服務遷移與清理提示
8. 閘道服務遷移與清理提示
openclaw gateway status --deep 或 openclaw doctor --deep 檢查,然後移除重複項目;若閘道生命週期由系統監督程式管理,則設定 OPENCLAW_SERVICE_REPAIR_POLICY=external。8b. 啟動時 Matrix 遷移
8b. 啟動時 Matrix 遷移
--fix / --repair 模式下)會建立遷移前快照,然後執行盡力而為的遷移步驟:舊版 Matrix 狀態遷移與舊版加密狀態準備。這兩個步驟都不會造成致命錯誤;錯誤會記錄至日誌,啟動程序則繼續。在唯讀模式(使用 openclaw doctor 且未使用 --fix)下,會完全略過此檢查。8c. 裝置配對與驗證偏移
8c. 裝置配對與驗證偏移
- 待處理的首次配對要求
- 已配對裝置待處理的角色或範圍升級
- 裝置 ID 仍相符,但裝置身分不再符合已核准記錄時的公開金鑰不符修復
- 已配對記錄缺少已核准角色的活動權杖
- 範圍偏離已核准配對基準的已配對權杖
- 目前機器上早於閘道端權杖輪替,或帶有過期範圍中繼資料的本機快取裝置權杖項目
- 使用
openclaw devices list檢查待處理要求 - 使用
openclaw devices approve <requestId>核准確切要求 - 使用
openclaw devices rotate --device <deviceId> --role <role>輪替出新權杖 - 使用
openclaw devices remove <deviceId>移除並重新核准過期記錄
9. 安全性警告
9. 安全性警告
openclaw security audit 可查看完整的安全性清單。10. systemd 持續執行(Linux)
10. systemd 持續執行(Linux)
11. 工作區狀態(Skills、外掛與 TaskFlow)
11. 工作區狀態(Skills、外掛與 TaskFlow)
- Skills:列出已允許但無法使用的 skill 名稱;使用
openclaw skills check可查看需求詳細資料與完整計數。 - 外掛:僅回報發生錯誤的外掛 ID;使用
openclaw plugins list可查看已載入、已匯入、已停用及內建外掛清單。 - 外掛相容性警告:標示與目前執行階段存在相容性問題的外掛。
- 外掛診斷:呈現外掛登錄在載入時發出的任何警告或錯誤。
- TaskFlow 復原:呈現需要手動檢查或取消的可疑受管理 TaskFlow。
- Claude 命令列介面:僅回報二進位檔、驗證、設定檔、工作區或專案目錄問題;省略健康狀態探測詳細資料。
11b. 啟動載入檔案大小
11b. 啟動載入檔案大小
AGENTS.md、CLAUDE.md 或其他注入的情境檔案)是否接近或超過設定的字元預算。它會回報每個檔案的原始字元數與注入字元數、截斷百分比、截斷原因(max/file 或 max/total),以及注入字元總數占總預算的比例。當檔案遭截斷或接近限制時,doctor 會顯示調整 agents.defaults.bootstrapMaxChars 與 agents.defaults.bootstrapTotalMaxChars 的提示。11c. Shell 自動完成
11c. Shell 自動完成
- 如果 shell 設定檔使用緩慢的動態補全模式(
source <(openclaw completion ...)),doctor 會將其升級為速度更快的快取檔案版本。 - 如果設定檔中已設定補全,但快取檔案遺失,doctor 會自動重新產生快取。
- 如果完全未設定補全,doctor 會提示安裝(僅限互動模式;使用
--non-interactive時會略過)。
openclaw completion --write-state 可手動重新產生快取。11d. 清理過時的頻道外掛
11d. 清理過時的頻道外掛
openclaw doctor --fix 移除遺失的頻道外掛時,也會移除參照該外掛而懸空的頻道範圍設定:channels.<id> 項目、以該頻道為名的心跳偵測目標,以及 agents.*.models["<channel>/*"] 覆寫。這可避免頻道執行階段已不存在,但設定仍要求閘道繫結該頻道而導致的閘道啟動迴圈。12. 閘道驗證檢查(本機權杖)
12. 閘道驗證檢查(本機權杖)
- 如果權杖模式需要權杖,但不存在任何權杖來源,doctor 會提供產生權杖的選項。
- 如果
gateway.auth.token由 SecretRef 管理但無法使用,doctor 會發出警告,且不會以純文字覆寫。 openclaw doctor --generate-gateway-token僅會在未設定權杖 SecretRef 時強制產生權杖。
12b. 可感知 SecretRef 的唯讀修復
12b. 可感知 SecretRef 的唯讀修復
openclaw doctor --fix使用與狀態系列命令相同的唯讀 SecretRef 摘要模型,以進行特定設定修復。- 範例:Telegram
allowFrom/groupAllowFrom@username修復會嘗試使用可用的已設定機器人認證資訊。 - 如果 Telegram 機器人權杖是透過 SecretRef 設定,但在目前的命令路徑中無法使用,doctor 會回報該認證資訊已設定但無法使用,並略過自動解析,而不是當機或誤報權杖遺失。
13. 閘道健康狀態檢查與重新啟動
13. 閘道健康狀態檢查與重新啟動
13b. 記憶搜尋就緒狀態
13b. 記憶搜尋就緒狀態
- QMD 後端:探測
qmd二進位檔是否可用且可啟動。若不可用,會列印修正指引,包括npm install -g @tobilu/qmd(或對應的 Bun 命令),以及手動指定二進位檔路徑的選項。 - 明確指定的本機提供者:檢查是否有本機模型檔案,或可辨識的遠端/可下載模型 URL。若遺失,會建議切換至遠端提供者。
- 明確指定的遠端提供者(
openai、voyage等):確認環境或驗證儲存區中是否存在 API 金鑰。若遺失,會列印可採取行動的修正提示。 - 舊版自動提供者:將
memorySearch.provider: "auto"視為 OpenAI、檢查 OpenAI 是否就緒,且doctor --fix會將其重寫為provider: "openai"。
openclaw memory status --deep 可在執行階段驗證嵌入功能是否就緒。14. 頻道狀態警告
14. 頻道狀態警告
15. 監督程式設定稽核與修復
15. 監督程式設定稽核與修復
openclaw doctor會在重寫監督程式設定前提示確認。openclaw doctor --yes會接受預設的修復提示。openclaw doctor --fix會在不提示的情況下套用建議的修正(--repair是別名)。openclaw doctor --fix --force會覆寫自訂監督程式設定。OPENCLAW_SERVICE_REPAIR_POLICY=external會讓 doctor 對閘道服務生命週期維持唯讀。它仍會回報服務健康狀態並執行非服務修復,但會略過服務安裝/啟動/重新啟動/啟動程序、監督程式設定重寫,以及舊版服務清理,因為該生命週期由外部監督程式管理。- 在 Linux 上,當相符的 systemd 閘道單元處於作用中時,doctor 不會重寫命令/進入點中繼資料。它也會在重複服務掃描期間忽略非作用中、非舊版的額外類閘道單元,避免附屬服務檔案產生清理雜訊。
- 如果權杖驗證需要權杖,且
gateway.auth.token由 SecretRef 管理,doctor 的服務安裝/修復會驗證 SecretRef,但不會將解析出的純文字權杖值保存至監督程式服務環境中繼資料。 - Doctor 會偵測舊版 LaunchAgent、systemd 或 Windows 排定工作安裝中以內嵌方式儲存的受管理
.env/SecretRef 支援服務環境值,並重寫服務中繼資料,讓這些值改由執行階段來源載入,而非從監督程式定義載入。 - Doctor 會偵測服務命令是否在
gateway.port變更後仍固定使用舊的--port,並將服務中繼資料重寫為目前的連接埠。 - 如果權杖驗證需要權杖,但已設定的權杖 SecretRef 無法解析,doctor 會封鎖安裝/修復路徑,並提供可採取行動的指引。
- 如果同時設定了
gateway.auth.token與gateway.auth.password,但未設定gateway.auth.mode,doctor 會封鎖安裝/修復,直到明確設定模式為止。 - 對於 Linux 使用者 systemd 單元,doctor 在比較服務驗證中繼資料時,權杖漂移檢查會同時納入
Environment=與EnvironmentFile=來源。 - 如果設定最後是由較新的版本寫入,Doctor 服務修復會拒絕使用較舊的 OpenClaw 二進位檔重寫、停止或重新啟動閘道服務。請參閱閘道疑難排解。
- 你隨時可以透過
openclaw gateway install --force強制完整重寫。
16. 閘道執行階段與連接埠診斷
16. 閘道執行階段與連接埠診斷
18789)是否發生連接埠衝突,並回報可能的原因(閘道已在執行、SSH 通道)。17. 閘道執行階段最佳實務
17. 閘道執行階段最佳實務
nvm、fnm、volta、asdf 等)上執行時,doctor 會發出警告。Bun 無法開啟 OpenClaw 的 node:sqlite 狀態儲存區,因此修復會將舊版 Bun 服務遷移至 Node。版本管理工具路徑可能在升級後失效,因為服務不會載入你的 shell 初始化設定。當有可用的系統 Node 安裝時(Homebrew/apt/choco),doctor 會提供遷移選項。新安裝或修復的 macOS LaunchAgent 會使用標準系統 PATH(/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin),而不是複製互動式 shell 的 PATH,讓 Homebrew 管理的系統二進位檔持續可用,同時避免 Volta、asdf、fnm、pnpm 及其他版本管理工具目錄改變 Node 子程序解析到的版本。Linux 服務仍會保留明確的環境根目錄(NVM_DIR、FNM_DIR、VOLTA_HOME、ASDF_DATA_DIR、BUN_INSTALL、PNPM_HOME)及穩定的使用者二進位檔目錄,但推測的版本管理工具備援目錄只有在磁碟上確實存在時,才會寫入服務 PATH。18. 寫入設定與精靈中繼資料
18. 寫入設定與精靈中繼資料
19. 工作區提示(備份與記憶系統)
19. 工作區提示(備份與記憶系統)