醫生
openclaw doctor 是 OpenClaw 的修復與遷移工具。它會修正過期的
設定/狀態、檢查健康狀況,並提供可執行的修復步驟。 6. 修復過時的設定/狀態、檢查健康狀況,並提供可執行的修復步驟。
快速開始
無頭模式/自動化
它會做什麼(摘要)
- git 安裝的可選事前更新(僅互動式)。
- UI 協定新鮮度檢查(當協定結構較新時重建 Control UI)。
- 健康檢查+重新啟動提示。
- Skills 狀態摘要(可用/缺失/封鎖)。
- 舊版值的設定正規化。
- OpenCode Zen 提供者覆寫警告(
models.providers.opencode)。 - 舊版磁碟狀態遷移(sessions/agent 目錄/WhatsApp 驗證)。
- State integrity and permissions checks (sessions, transcripts, state dir).
-
- 本機執行時的設定檔權限檢查(chmod 600)。
- 模型驗證健康狀態:檢查 OAuth 到期時間、可重新整理即將到期的權杖,並回報 auth-profile 的冷卻/停用狀態。
-
- 額外的工作區目錄偵測(
~/openclaw)。
- 額外的工作區目錄偵測(
- 啟用沙箱隔離時的沙箱映像修復。
- 舊版服務遷移與額外 gateway 偵測。
- Gateway 執行期檢查(服務已安裝但未執行;快取的 launchd 標籤)。
- 頻道狀態警告(由執行中的 gateway 探測)。
- 監督程式設定稽核(launchd/systemd/schtasks),可選修復。
- Gateway 執行期最佳實務檢查(Node 與 Bun、版本管理器路徑)。
- Gateway 連接埠衝突診斷(預設
18789)。 - 開放私訊政策的安全性警告。
- 當未設定
gateway.auth.token時的 Gateway 驗證警告(本機模式;提供產生權杖)。 - Linux 上的 systemd linger 檢查。
- 原始碼安裝檢查(pnpm 工作區不相符、缺少 UI 資產、缺少 tsx 二進位檔)。
- Writes updated config + wizard metadata.
19. 詳細的行為與理由說明
0. 可選更新(git 安裝)
若這是 git 檢出且 doctor 以互動模式執行,會在執行 doctor 前提供 更新(fetch/rebase/build)。1. 設定正規化
若設定包含舊版值的形狀(例如messages.ackReaction
且沒有頻道專屬覆寫),doctor 會將其正規化為目前的
結構。
2. 舊版設定鍵遷移
當設定包含已棄用的鍵時,其他指令會拒絕執行並要求 你執行openclaw doctor。
Doctor 會:
- 說明找到哪些舊版鍵。
-
- 顯示其套用的遷移。
- 以更新後的結構重寫
~/.openclaw/openclaw.json。
routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternsrouting.queue→messages.queuerouting.bindings→ 頂層bindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].defaultrouting.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsbindings[].match.accountID→bindings[].match.accountIdidentity→agents.list[].identityagent.*→agents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks→agents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacks
2b) OpenCode Zen 提供者覆寫
若你手動加入models.providers.opencode(或 opencode-zen),它會
覆寫內建的 OpenCode Zen 目錄(來自 @mariozechner/pi-ai)。這可能
強制所有模型走同一個 API,或將成本歸零。Doctor 會發出警告,讓你
移除覆寫並恢復每個模型的 API 路由與成本。 That can
force every model onto a single API or zero out costs. That can
force every model onto a single API or zero out costs. Doctor 會警告你,讓你
移除覆寫並恢復各模型的 API 路由與成本。
3. 舊版狀態遷移(磁碟配置)
Doctor 可以將較舊的磁碟配置遷移到目前的結構:- Sessions 儲存區+逐字稿:
- 從
~/.openclaw/sessions/到~/.openclaw/agents/<agentId>/sessions/
- 從
- Agent 目錄:
- 從
~/.openclaw/agent/到~/.openclaw/agents/<agentId>/agent/
- 從
- WhatsApp 驗證狀態(Baileys):
- 從舊版
~/.openclaw/credentials/*.json(不含oauth.json) - 到
~/.openclaw/credentials/whatsapp/<accountId>/...(預設帳號 id:default)
- 從舊版
openclaw doctor 進行遷移。
4. 狀態完整性檢查(工作階段持久化、路由與安全)
- 狀態目錄是系統運作的腦幹。 17. 若它消失,你將失去 工作階段、憑證、日誌與設定(除非你在其他地方有備份)。
- 狀態目錄缺失:警告災難性的狀態遺失,提示重新建立 目錄,並提醒無法復原遺失的資料。
- 狀態目錄權限:驗證可寫性;提供修復權限
(當偵測到擁有者/群組不相符時,會給出
chown提示)。 - 工作階段目錄缺失:
sessions/與工作階段儲存目錄 是持久化歷史並避免ENOENT當機所必需。 -
- 逐字稿不一致:當近期工作階段項目缺少 逐字稿檔案時發出警告。
- 主要工作階段「單行 JSONL」:當主要逐字稿只有一行 (歷史未累積)時標記。
- 多個狀態目錄:當跨家目錄存在多個
~/.openclaw資料夾, 或OPENCLAW_STATE_DIR指向其他位置時發出警告(歷史可能在不同安裝間分裂)。 - 遠端模式提醒:若為
gateway.mode=remote,doctor 會提醒你在 遠端主機上執行(狀態存在於該處)。 - 設定檔權限:若
~/.openclaw/openclaw.json可被群組/其他人讀取則警告, 並提供收緊至600。
5. 模型驗證健康狀況(OAuth 到期)
Doctor 會檢查驗證儲存中的 OAuth 設定檔,在權杖即將到期/已到期時發出警告,並在安全時刷新它們。 20. 若 Anthropic Claude Code 設定檔過期,會建議執行claude setup-token(或貼上 setup-token)。
刷新提示僅在互動式(TTY)執行時出現;--non-interactive
會跳過刷新嘗試。
Doctor 也會回報因下列原因而暫時不可用的驗證設定檔:
- 短暫冷卻(速率限制/逾時/驗證失敗)
- 較長時間停用(帳務/額度失敗)
6. Hooks 模型驗證
若設定了hooks.gmail.model,doctor 會對照目錄與允許清單驗證模型參考,
並在無法解析或被禁止時發出警告。
7. 沙箱映像修復
- 啟用沙箱時,doctor 會檢查 Docker 映像,並在目前映像缺失時提供建置或 切換回舊版名稱的選項。
8. Gateway 服務遷移與清理提示
Doctor 會偵測舊版閘道服務(launchd/systemd/schtasks),並 提供移除它們並使用目前閘道連接埠安裝 OpenClaw 服務。 24. 它也能掃描額外類似閘道的服務並印出清理提示。 25. 以設定檔命名的 OpenClaw 閘道服務被視為一級公民, 不會被標示為「額外」。9. 安全性警告
當提供者在未設定允許清單的情況下開放私訊,或 策略以危險方式設定時,Doctor 會發出警告。10. systemd linger(Linux)
若以 systemd 使用者服務執行,doctor 會確保已啟用 lingering, 讓 gateway 在登出後仍能存活。11. Skills 狀態
Doctor 會為目前工作區輸出可用/缺失/封鎖 skills 的快速摘要。12. Gateway 驗證檢查(本機權杖)
當本機閘道缺少gateway.auth 時,Doctor 會發出警告並提供產生權杖。 28. 使用 openclaw doctor --generate-gateway-token 在自動化中
強制建立權杖。
13. Gateway 健康檢查+重新啟動
Doctor 會執行健康檢查,並在看起來不健康時提供重新啟動。14. 頻道狀態警告
若 gateway 健康,doctor 會執行頻道狀態探測,並回報 警告與建議的修正方式。15. 監督程式設定稽核+修復
Doctor 會檢查已安裝的監督程式設定(launchd/systemd/schtasks), 是否缺少或使用過期的預設值(例如 systemd 的 network-online 相依性與 重新啟動延遲)。當發現不一致時,會建議更新,並可 將服務檔/工作重寫為目前的預設值。 29. 當發現不一致時,它會建議更新,並可 將服務檔/工作排程重寫為目前的預設值。 注意事項:openclaw doctor在重寫監督程式設定前會提示。openclaw doctor --yes接受預設的修復提示。openclaw doctor --repair在不提示的情況下套用建議修復。openclaw doctor --repair --force會覆寫自訂的監督程式設定。- 你隨時可以透過
openclaw gateway install --force強制完整重寫。
16. Gateway 執行期+連接埠診斷
Doctor 會檢查服務執行狀態(PID、最後結束狀態),並在 服務已安裝但實際未執行時發出警告。 41. 它也會檢查 gateway 連接埠(預設18789)的
連接埠衝突,並回報可能原因(gateway 已在執行、SSH 通道)。
17. Gateway 執行期最佳實務
當 gateway 服務在 Bun 或版本管理的 Node 路徑 (nvm、fnm、volta、asdf 等)上執行時,Doctor 會發出警告。 33. WhatsApp + Telegram 頻道需要 Node,
而版本管理器路徑在升級後可能失效,因為服務不會載入你的 shell 初始化。 34. 在可用時,Doctor 會提供遷移到系統 Node 安裝的選項
(Homebrew/apt/choco)。