openclaw doctor to narzędzie do naprawy i migracji dla OpenClaw. Naprawia przestarzałą konfigurację/stan, sprawdza kondycję i podaje możliwe do wykonania kroki naprawcze.
Szybki start
Tryby headless i automatyzacji
- --yes
- --fix
- --lint
- --fix --force
- --non-interactive
- --deep
Tryb lint tylko do odczytu
openclaw doctor --lint to przyjazny automatyzacji odpowiednik
openclaw doctor --fix. Oba używają kontroli kondycji doctora, ale ich podejście jest
inne:
| Tryb | Monity | Zapisuje konfigurację/stan | Dane wyjściowe | Użyj do |
|---|---|---|---|---|
openclaw doctor | tak | nie | przyjazny raport kondycji | sprawdzania statusu przez człowieka |
openclaw doctor --fix | czasami | tak, zgodnie z polityką napraw | przyjazny dziennik naprawy | stosowania zatwierdzonych napraw |
openclaw doctor --lint | nie | nie | ustrukturyzowane ustalenia | CI, preflight i bramek przeglądu |
repair().
doctor --fix stosuje te naprawy, gdy istnieją, i nadal używa
istniejącego przepływu napraw doctora dla kontroli, które jeszcze nie zostały zmigrowane.
Ustrukturyzowany kontrakt napraw oddziela także raportowanie napraw od wykrywania:
detect() raportuje bieżące ustalenia, natomiast repair() może raportować zmiany,
różnice konfiguracji/plików oraz skutki uboczne niezwiązane z plikami. Dzięki temu ścieżka migracji pozostaje otwarta
dla przyszłych doctor --fix --dry-run i danych wyjściowych diff bez zmuszania kontroli lint
do planowania mutacji.
Przykłady:
ok: czy jakiekolwiek widoczne ustalenie spełniło wybrany próg ważnościchecksRun: liczba wykonanych kontroli kondycjichecksSkipped: kontrole pominięte przez wybrany profil,--onlylub--skipfindings: ustrukturyzowana diagnostyka zcheckId,severity,messageoraz opcjonalnymipath,line,column,ocPathifixHint
0: brak ustaleń na wybranym progu lub powyżej niego1: co najmniej jedno ustalenie spełniło wybrany próg2: awaria polecenia/środowiska uruchomieniowego, zanim można było wyemitować ustalenia lintowania
--severity-min info|warning|error, aby kontrolować zarówno to, co jest wypisywane, jak i to, co
powoduje niezerowy kod wyjścia lintowania. Użyj --all, aby uruchomić pełny zestaw lintowania,
w tym głębsze kontrole opt-in wykluczone z domyślnego zestawu automatyzacji. Użyj --only <id> dla wąskich bramek preflight oraz
--skip <id>, aby tymczasowo wykluczyć hałaśliwą kontrolę, zachowując aktywną resztę
przebiegu lintowania.
Opcje wyjścia lintowania, takie jak --json, --severity-min, --all, --only i
--skip, muszą być sparowane z --lint; zwykłe uruchomienia doctor i naprawy odrzucają
je.
Co robi (podsumowanie)
Kondycja, UI i aktualizacje
Kondycja, UI i aktualizacje
- Opcjonalna aktualizacja pre-flight dla instalacji git (tylko interaktywnie).
- Kontrola świeżości protokołu UI (przebudowuje Control UI, gdy schemat protokołu jest nowszy).
- Kontrola kondycji + monit o ponowne uruchomienie.
- Podsumowanie statusu Skills (kwalifikujące się/brakujące/zablokowane) i status Plugin.
Konfiguracja i migracje
Konfiguracja i migracje
- Normalizacja konfiguracji dla wartości legacy.
- Migracja konfiguracji Talk ze starszych płaskich pól
talk.*dotalk.provider+talk.providers.<provider>. - Kontrole migracji przeglądarki dla starszych konfiguracji rozszerzenia Chrome i gotowości Chrome MCP.
- Ostrzeżenia o nadpisaniach dostawcy OpenCode (
models.providers.opencode/models.providers.opencode-go). - Migracja starszego dostawcy/profilu OpenAI Codex (
openai-codex→openai) i ostrzeżenia o przesłanianiu dla nieaktualnegomodels.providers.openai-codex. - Kontrola wymagań wstępnych OAuth TLS dla profili OpenAI Codex OAuth.
- Ostrzeżenia allowlist Plugin/narzędzi, gdy
plugins.allowjest restrykcyjne, ale polityka narzędzi nadal żąda wildcard lub narzędzi należących do Plugin. - Migracja starszego stanu na dysku (sesje/katalog agenta/auth WhatsApp).
- Migracja starszych kluczy kontraktu manifestu Plugin (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migracja starszego magazynu cron (
jobId,schedule.cron, pola delivery/payload najwyższego poziomu, payloadprovider, zastępcze zadania Webhooknotify: true). - Czyszczenie starszej polityki środowiska uruchomieniowego całego agenta; polityka środowiska uruchomieniowego dostawcy/modelu jest aktywnym selektorem trasy.
- Czyszczenie nieaktualnej konfiguracji Plugin, gdy plugins są włączone; gdy
plugins.enabled=false, nieaktualne odwołania do Plugin są traktowane jako nieaktywna konfiguracja ograniczająca i są zachowywane.
Stan i integralność
Stan i integralność
- Inspekcja plików blokady sesji i czyszczenie nieaktualnych blokad.
- Naprawa transkrypcji sesji dla zduplikowanych gałęzi przepisywania promptów utworzonych przez dotknięte tym kompilacje 2026.4.24.
- Wykrywanie tombstone odzyskiwania po restarcie zablokowanego podagenta, z obsługą
--fixdo czyszczenia nieaktualnych flag przerwanego odzyskiwania, aby uruchamianie nie traktowało dalej procesu potomnego jako przerwanego przez restart. - Kontrole integralności stanu i uprawnień (sesje, transkrypcje, katalog stanu).
- Kontrole uprawnień pliku konfiguracji (chmod 600) przy uruchamianiu lokalnym.
- Kondycja autoryzacji modelu: sprawdza wygaśnięcie OAuth, może odświeżać wygasające tokeny i raportuje stany cooldown/disabled profilu autoryzacji.
Gateway, usługi i nadzorcy
Gateway, usługi i nadzorcy
- Naprawa obrazu sandbox, gdy sandboxing jest włączony.
- Migracja starszej usługi i wykrywanie dodatkowego gateway.
- Migracja starszego stanu kanału Matrix (w trybie
--fix/--repair). - Kontrole środowiska uruchomieniowego Gateway (usługa zainstalowana, ale nieuruchomiona; zbuforowana etykieta launchd).
- Ostrzeżenia statusu kanału (sondowane z działającego gateway).
- Kontrole uprawnień specyficzne dla kanału znajdują się pod
openclaw channels capabilities; na przykład uprawnienia kanału głosowego Discord są audytowane za pomocąopenclaw channels capabilities --channel discord --target channel:<channel-id>. - Kontrole responsywności WhatsApp dla obniżonej kondycji pętli zdarzeń Gateway przy nadal działających lokalnych klientach TUI;
--fixzatrzymuje tylko zweryfikowanych lokalnych klientów TUI. - Naprawa trasy Codex dla starszych referencji modeli
openai-codex/*w modelach głównych, fallbackach, modelach generowania obrazów/wideo, nadpisaniach heartbeat/podagenta/Compaction, hookach, nadpisaniach modeli kanałów i przypięciach tras sesji;--fixprzepisuje je naopenai/*, migruje profile/kolejność authopenai-codex:*doopenai:*, usuwa nieaktualne przypięcia środowiska uruchomieniowego sesji/całego agenta i pozostawia kanoniczne referencje agentów OpenAI na domyślnym harnessie Codex. - Audyt konfiguracji nadzorcy (launchd/systemd/schtasks) z opcjonalną naprawą.
- Czyszczenie osadzonego środowiska proxy dla usług gateway, które przechwyciły wartości shell
HTTP_PROXY/HTTPS_PROXY/NO_PROXYpodczas instalacji lub aktualizacji. - Kontrole najlepszych praktyk środowiska uruchomieniowego Gateway (Node kontra Bun, ścieżki menedżera wersji).
- Diagnostyka kolizji portu Gateway (domyślnie
18789).
Autoryzacja, bezpieczeństwo i parowanie
Autoryzacja, bezpieczeństwo i parowanie
- Ostrzeżenia bezpieczeństwa dla otwartych polityk DM.
- Kontrole auth Gateway dla trybu tokenu lokalnego (oferuje wygenerowanie tokenu, gdy nie istnieje źródło tokenu; nie nadpisuje konfiguracji SecretRef tokenu).
- Wykrywanie problemów z parowaniem urządzeń (oczekujące żądania pierwszego parowania, oczekujące podniesienia roli/zakresu, dryf nieaktualnego lokalnego cache tokenu urządzenia oraz dryf auth sparowanego rekordu).
Workspace i shell
Workspace i shell
- Kontrola systemd linger w systemie Linux.
- Kontrola rozmiaru pliku bootstrap workspace (ostrzeżenia o obcięciu/bliskości limitu dla plików kontekstu).
- Kontrola gotowości Skills dla domyślnego agenta; raportuje dozwolone skills z brakującymi binariami, env, konfiguracją lub wymaganiami systemu operacyjnego, a
--fixmoże wyłączyć niedostępne skills wskills.entries. - Kontrola statusu uzupełniania shell i automatyczna instalacja/aktualizacja.
- Kontrola gotowości dostawcy embeddingów wyszukiwania pamięci (model lokalny, zdalny klucz API lub binarium QMD).
- Kontrole instalacji ze źródeł (niezgodność workspace pnpm, brakujące zasoby UI, brakujące binarium tsx).
- Zapisuje zaktualizowaną konfigurację + metadane kreatora.
Wypełnianie wstecz i reset UI Dreams
Scena Dreams w Control UI obejmuje akcje Wypełnij wstecz, Resetuj i Wyczyść ugruntowane dla przepływu pracy ugruntowanego Dreaming. Te akcje używają metod RPC w stylu gateway doctor, ale nie są częścią naprawy/migracji CLIopenclaw doctor.
Co robią:
- Wypełnij wstecz skanuje historyczne pliki
memory/YYYY-MM-DD.mdw aktywnym workspace, uruchamia ugruntowany przebieg dziennika REM i zapisuje odwracalne wpisy wypełnienia wstecz doDREAMS.md. - Resetuj usuwa z
DREAMS.mdtylko te oznaczone wpisy dziennika wypełnienia wstecz. - Wyczyść ugruntowane usuwa tylko przygotowane krótkoterminowe wpisy wyłącznie ugruntowane, które pochodzą z historycznego odtworzenia i nie zgromadziły jeszcze bieżącego przypomnienia ani dziennego wsparcia.
- nie edytują
MEMORY.md - nie uruchamiają pełnych migracji doctor
- nie przygotowują automatycznie ugruntowanych kandydatów do aktywnego magazynu krótkoterminowej promocji, chyba że najpierw jawnie uruchomisz przygotowaną ścieżkę CLI
DREAMS.md jako powierzchnię przeglądu.
Szczegółowe zachowanie i uzasadnienie
0. Opcjonalna aktualizacja (instalacje git)
0. Opcjonalna aktualizacja (instalacje git)
1. Normalizacja konfiguracji
1. Normalizacja konfiguracji
messages.ackReaction bez nadpisania specyficznego dla kanału), doctor normalizuje je do bieżącego schematu.Obejmuje to starsze płaskie pola Talk. Bieżąca publiczna konfiguracja mowy Talk to talk.provider + talk.providers.<provider>, a konfiguracja głosu realtime to talk.realtime.*. Doctor przepisuje stare kształty talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey do mapy dostawców i przepisuje starsze selektory realtime najwyższego poziomu (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) do talk.realtime.Doctor ostrzega także, gdy plugins.allow nie jest puste, a zasady narzędzi używają wpisów z symbolem wieloznacznym lub wpisów narzędzi należących do Plugin. tools.allow: ["*"] dopasowuje tylko narzędzia z Plugin, które faktycznie się wczytują; nie omija wyłącznej listy dozwolonych Plugin.2. Migracje przestarzałych kluczy konfiguracji
2. Migracje przestarzałych kluczy konfiguracji
openclaw doctor.Doctor:- Wyjaśni, które przestarzałe klucze znaleziono.
- Pokaże zastosowaną migrację.
- Przepisze
~/.openclaw/openclaw.jsonze zaktualizowanym schematem.
openclaw doctor --fix; nie przepisuje openclaw.json podczas uruchamiania. Migracje magazynu zadań Cron są także obsługiwane przez openclaw doctor --fix.Obecne migracje:routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternschannels.telegram.requireMention→channels.telegram.groups."*".requireMention- usuń wycofane
channels.webchatigateway.webchat routing.queue→messages.queuerouting.bindings→ najwyższego poziomubindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].default- przestarzałe
talk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKey→talk.provider+talk.providers.<provider> - przestarzałe selektory Talk czasu rzeczywistego najwyższego poziomu (
talk.mode/talk.transport/talk.brain/talk.model/talk.voice) +talk.provider/talk.providers→talk.realtime routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>messages.tts.provider: "edge"imessages.tts.providers.edge→messages.tts.provider: "microsoft"imessages.tts.providers.microsoft- pola wyboru mówcy TTS (
voice/voiceName/voiceId) →speakerVoice/speakerVoiceId channels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.tts.provider: "edge"iplugins.entries.voice-call.config.tts.providers.edge→provider: "microsoft"iproviders.microsoftplugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold→plugins.entries.voice-call.config.streaming.providers.openai.*bindings[].match.accountID→bindings[].match.accountId- W przypadku kanałów z nazwanymi
accounts, ale z pozostającymi wartościami kanału najwyższego poziomu dla pojedynczego konta, przenieś te wartości o zakresie konta do promowanego konta wybranego dla tego kanału (accounts.defaultdla większości kanałów; Matrix może zachować istniejący pasujący nazwany/domyślny cel) identity→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- usuń
agents.defaults.llm; użyjmodels.providers.<id>.timeoutSecondsdla limitów czasu wolnych dostawców/modeli i utrzymuj limit czasu agenta/uruchomienia powyżej tej wartości, gdy całe uruchomienie musi trwać dłużej browser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- usuń
browser.relayBindHost(przestarzałe ustawienie przekaźnika rozszerzenia) - przestarzałe
models.providers.*.api: "openai"→"openai-completions"(uruchomienie Gateway pomija także dostawców, którychapijest ustawione na przyszłą lub nieznaną wartość wyliczenia, zamiast odmawiać działania) - usuń
plugins.entries.codex.config.codexDynamicToolsProfile; serwer aplikacji Codex zawsze zachowuje natywne dla Codex narzędzia obszaru roboczego jako natywne
- Jeśli skonfigurowano co najmniej dwa wpisy
channels.<channel>.accountsbezchannels.<channel>.defaultAccountlubaccounts.default, doctor ostrzega, że routing awaryjny może wybrać nieoczekiwane konto. - Jeśli
channels.<channel>.defaultAccountjest ustawione na nieznany identyfikator konta, doctor ostrzega i wyświetla skonfigurowane identyfikatory kont.
2b. Nadpisania dostawcy OpenCode
2b. Nadpisania dostawcy OpenCode
models.providers.opencode, opencode-zen lub opencode-go, nadpisuje to wbudowany katalog OpenCode z openclaw/plugin-sdk/llm. Może to wymusić modele na niewłaściwym API albo wyzerować koszty. Doctor ostrzega, aby można było usunąć nadpisanie i przywrócić routing API oraz koszty dla poszczególnych modeli.2c. Migracja przeglądarki i gotowość Chrome MCP
2c. Migracja przeglądarki i gotowość Chrome MCP
browser.profiles.*.driver: "extension"staje się"existing-session"browser.relayBindHostjest usuwane
defaultProfile: "user" lub skonfigurowanego profilu existing-session:- sprawdza, czy Google Chrome jest zainstalowany na tym samym hoście dla domyślnych profili automatycznego łączenia
- sprawdza wykrytą wersję Chrome i ostrzega, gdy jest niższa niż Chrome 144
- przypomina o włączeniu zdalnego debugowania na stronie inspekcji przeglądarki (na przykład
chrome://inspect/#remote-debugging,brave://inspect/#remote-debugginglubedge://inspect/#remote-debugging)
- przeglądarki opartej na Chromium w wersji 144+ na hoście Gateway/węzła
- lokalnie uruchomionej przeglądarki
- zdalnego debugowania włączonego w tej przeglądarce
- zatwierdzenia pierwszego monitu zgody na dołączenie w przeglądarce
responsebody, eksport PDF, przechwytywanie pobierania i akcje wsadowe, nadal wymagają zarządzanej przeglądarki lub surowego profilu CDP.Ta kontrola nie dotyczy Docker, sandbox, remote-browser ani innych przepływów headless. One nadal używają surowego CDP.2d. Wymagania wstępne OAuth TLS
2d. Wymagania wstępne OAuth TLS
UNABLE_TO_GET_ISSUER_CERT_LOCALLY, wygasły certyfikat lub certyfikat z podpisem własnym), doctor wypisuje wskazówki naprawcze specyficzne dla platformy. W macOS z Node z Homebrew naprawą jest zwykle brew postinstall ca-certificates. Z --deep sonda działa nawet wtedy, gdy Gateway jest zdrowy.2e. Nadpisania dostawcy OAuth Codex
2e. Nadpisania dostawcy OAuth Codex
models.providers.openai-codex, mogą one przesłaniać wbudowaną ścieżkę dostawcy OAuth Codex, której nowsze wydania używają automatycznie. Doctor ostrzega, gdy widzi te stare ustawienia transportu obok OAuth Codex, aby można było usunąć lub przepisać przestarzałe nadpisanie transportu i odzyskać wbudowane zachowanie routingu/awaryjne. Niestandardowe proxy i nadpisania wyłącznie nagłówków są nadal obsługiwane i nie wywołują tego ostrzeżenia.2f. Naprawa tras Codex
2f. Naprawa tras Codex
openai-codex/*. Natywny routing uprzęży Codex używa kanonicznych odwołań do modeli openai/*; tury agentów OpenAI przechodzą przez uprząż serwera aplikacji Codex zamiast przez ścieżkę dostawcy OpenAI w OpenClaw.W trybie --fix / --repair doctor przepisuje dotknięte odwołania agenta domyślnego i poszczególnych agentów, w tym modele główne, awaryjne, modele generowania obrazów/wideo, nadpisania heartbeat/subagent/compaction, hooks, nadpisania modeli kanałów i przestarzały utrwalony stan tras sesji:openai-codex/gpt-*staje sięopenai/gpt-*.- Intencja Codex przenosi się do wpisów
agentRuntime.id: "codex"o zakresie dostawcy/modelu dla naprawionych odwołań do modeli agentów. - Przestarzała konfiguracja środowiska uruchomieniowego całego agenta i utrwalone przypięcia środowiska uruchomieniowego sesji są usuwane, ponieważ wybór środowiska uruchomieniowego ma zakres dostawcy/modelu.
- Istniejące zasady środowiska uruchomieniowego dostawcy/modelu są zachowywane, chyba że naprawiane przestarzałe odwołanie do modelu wymaga routingu Codex, aby zachować starą ścieżkę uwierzytelniania.
- Istniejące listy modeli awaryjnych są zachowywane z przepisanymi przestarzałymi wpisami; skopiowane ustawienia dla poszczególnych modeli przenoszą się z przestarzałego klucza do kanonicznego klucza
openai/*. - Utrwalone sesyjne
modelProvider/providerOverride,model/modelOverride, powiadomienia o modelach awaryjnych i przypięcia profili uwierzytelniania są naprawiane we wszystkich wykrytych magazynach sesji agentów. /codex ...oznacza „steruj lub powiąż natywną konwersację Codex z czatu”./acp ...lubruntime: "acp"oznacza „użyj zewnętrznego adaptera ACP/acpx”.
2g. Czyszczenie tras sesji
2g. Czyszczenie tras sesji
openclaw doctor --fix może wyczyścić automatycznie utworzony przestarzały stan, taki jak przypięcia modelu modelOverrideSource: "auto", metadane modelu środowiska uruchomieniowego, przypięte identyfikatory uprzęży, powiązania sesji CLI i automatyczne nadpisania profilu uwierzytelniania, gdy należąca do nich trasa nie jest już skonfigurowana. Wyraźne wybory użytkownika lub przestarzałych modeli sesji są zgłaszane do ręcznego przeglądu i pozostawiane bez zmian; przełącz je za pomocą /model ..., /new albo zresetuj sesję, gdy ta trasa nie jest już zamierzona.3. Migracje przestarzałego stanu (układ dysku)
3. Migracje przestarzałego stanu (układ dysku)
- Magazyn sesji + transkrypcje:
- z
~/.openclaw/sessions/do~/.openclaw/agents/<agentId>/sessions/
- z
- Katalog agenta:
- z
~/.openclaw/agent/do~/.openclaw/agents/<agentId>/agent/
- z
- Stan uwierzytelniania WhatsApp (Baileys):
- ze starszego
~/.openclaw/credentials/*.json(opróczoauth.json) - do
~/.openclaw/credentials/whatsapp/<accountId>/...(domyślny identyfikator konta:default)
- ze starszego
doctor --fix, które nic nie robią.3a. Starsze migracje manifestu Plugin
3a. Starsze migracje manifestu Plugin
speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders). Gdy je znajdzie, proponuje przeniesienie ich do obiektu contracts i przepisanie pliku manifestu w miejscu. Ta migracja jest idempotentna; jeśli klucz contracts ma już te same wartości, starszy klucz jest usuwany bez duplikowania danych.3b. Starsze migracje magazynu Cron
3b. Starsze migracje magazynu Cron
~/.openclaw/cron/jobs.json domyślnie albo cron.store, gdy został nadpisany) pod kątem starych kształtów zadań, które harmonogram nadal akceptuje ze względów zgodności.Bieżące porządki Cron obejmują:jobId→idschedule.cron→schedule.expr- pola ładunku najwyższego poziomu (
message,model,thinking, …) →payload - pola dostarczania najwyższego poziomu (
deliver,channel,to,provider, …) →delivery - aliasy dostarczania
providerw ładunku → jawnedelivery.channel - starsze zadania awaryjne Webhook z
notify: true→ jawne dostarczanie Webhook zcron.webhook, gdy jest ustawione; zadania ogłoszeń zachowują dostarczanie czatu i otrzymujądelivery.completionDestination. Gdycron.webhooknie jest ustawione, bezczynny znacznik najwyższego poziomunotifyjest usuwany dla zadań bez celu (istniejące dostarczanie, w tym ogłoszenia, jest zachowywane), ponieważ dostarczanie w czasie wykonywania nigdy go nie odczytuje
jobs-quarantine.json obok aktywnego magazynu przed usunięciem ich z jobs.json; doctor raportuje wiersze poddane kwarantannie, aby można je było przejrzeć lub naprawić ręcznie.Uruchomienie Gateway normalizuje projekcję czasu wykonywania i ignoruje znacznik najwyższego poziomu notify, ale pozostawia utrwaloną konfigurację Cron do naprawy przez doctor. Gdy cron.webhook nie jest ustawione, doctor usuwa bezczynny znacznik dla zadań bez celu migracji (delivery.mode brak/nieobecne, nieużywalny cel Webhook albo istniejące dostarczanie ogłoszenia/czatu), pozostawiając istniejące dostarczanie bez zmian, więc powtarzane uruchomienia doctor --fix nie ostrzegają już ponownie o tym samym zadaniu. Jeśli cron.webhook jest ustawione, ale nie jest prawidłowym adresem URL HTTP(S), doctor nadal ostrzega i pozostawia znacznik, aby można było poprawić adres URL.W systemie Linux doctor ostrzega też, gdy crontab użytkownika nadal wywołuje starsze ~/.openclaw/bin/ensure-whatsapp.sh. Ten lokalny dla hosta skrypt nie jest utrzymywany przez bieżący OpenClaw i może zapisywać fałszywe komunikaty Gateway inactive do ~/.openclaw/logs/whatsapp-health.log, gdy Cron nie może dotrzeć do magistrali użytkownika systemd. Usuń przestarzały wpis crontab za pomocą crontab -e; do bieżących kontroli stanu używaj openclaw channels status --probe, openclaw doctor i openclaw gateway status.3c. Czyszczenie blokad sesji
3c. Czyszczenie blokad sesji
--fix / --repair automatycznie usuwa blokady z martwymi, osieroconymi, ponownie użytymi, starymi nieprawidłowymi lub nie-OpenClaw właścicielami. Stare blokady, które nadal należą do żywego procesu OpenClaw, są raportowane, ale pozostają na miejscu, aby doctor nie odciął aktywnego zapisującego transkrypcję.3d. Naprawa gałęzi transkrypcji sesji
3d. Naprawa gałęzi transkrypcji sesji
--fix / --repair doctor tworzy kopię zapasową każdego dotkniętego pliku obok oryginału i przepisuje transkrypcję do aktywnej gałęzi, dzięki czemu historia Gateway i czytniki pamięci nie widzą już zduplikowanych zwrotów.4. Kontrole integralności stanu (utrwalanie sesji, routing i bezpieczeństwo)
4. Kontrole integralności stanu (utrwalanie sesji, routing i bezpieczeństwo)
- Brak katalogu stanu: ostrzega przed katastrofalną utratą stanu, pyta o ponowne utworzenie katalogu i przypomina, że nie może odzyskać brakujących danych.
- Uprawnienia katalogu stanu: weryfikuje możliwość zapisu; proponuje naprawę uprawnień (i emituje wskazówkę
chown, gdy wykryje niezgodność właściciela/grupy). - Katalog stanu synchronizowany z chmurą macOS: ostrzega, gdy stan rozwiązuje się pod iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) lub~/Library/CloudStorage/..., ponieważ ścieżki oparte na synchronizacji mogą powodować wolniejsze I/O oraz wyścigi blokad/synchronizacji. - Katalog stanu Linux na SD lub eMMC: ostrzega, gdy stan rozwiązuje się do źródła montowania
mmcblk*, ponieważ losowe I/O oparte na SD lub eMMC może być wolniejsze i szybciej się zużywać przy zapisach sesji i poświadczeń. - Ulotny katalog stanu Linux: ostrzega, gdy stan rozwiązuje się do
tmpfslubramfs, ponieważ sesje, poświadczenia, konfiguracja oraz stan SQLite wraz z plikami pobocznymi WAL/dziennika znikną po ponownym uruchomieniu. Montowania Dockeroverlaycelowo nie są oznaczane, ponieważ ich warstwy zapisywalne utrzymują się między restartami hosta, dopóki kontener pozostaje. - Brak katalogów sesji:
sessions/i katalog magazynu sesji są wymagane do utrwalania historii i unikania awariiENOENT. - Niezgodność transkrypcji: ostrzega, gdy ostatnie wpisy sesji mają brakujące pliki transkrypcji.
- Główna sesja „1-line JSONL”: oznacza, gdy główna transkrypcja ma tylko jeden wiersz (historia się nie akumuluje).
- Wiele katalogów stanu: ostrzega, gdy istnieje wiele folderów
~/.openclaww katalogach domowych albo gdyOPENCLAW_STATE_DIRwskazuje gdzie indziej (historia może podzielić się między instalacje). - Przypomnienie o trybie zdalnym: jeśli
gateway.mode=remote, doctor przypomina, aby uruchomić go na zdalnym hoście (stan znajduje się tam). - Uprawnienia pliku konfiguracji: ostrzega, jeśli
~/.openclaw/openclaw.jsonjest odczytywalny dla grupy/świata i proponuje zaostrzenie do600.
5. Stan uwierzytelniania modeli (wygaśnięcie OAuth)
5. Stan uwierzytelniania modeli (wygaśnięcie OAuth)
--non-interactive pomija próby odświeżenia.Gdy odświeżenie OAuth kończy się trwale niepowodzeniem (na przykład refresh_token_reused, invalid_grant albo provider każe ponownie się zalogować), doctor raportuje, że wymagana jest ponowna autoryzacja, i wypisuje dokładne polecenie openclaw models auth login --provider ... do uruchomienia.Doctor raportuje też profile uwierzytelniania, które są tymczasowo nieużywalne z powodu:- krótkich okresów wyciszenia (limity szybkości/limity czasu/niepowodzenia uwierzytelniania)
- dłuższych wyłączeń (niepowodzenia rozliczeń/kredytów)
openclaw doctor --fix raz z interaktywnego terminala, aby zmigrować starsze tokeny oparte na Keychain w miejscu do auth-profiles.json; potem osadzone zwroty (Telegram, Cron, wysyłka podagentów) rozwiązują je jako kanoniczne profile OpenAI OAuth.6. Walidacja modelu hooków
6. Walidacja modelu hooków
hooks.gmail.model jest ustawione, doctor waliduje referencję modelu względem katalogu i listy dozwolonych oraz ostrzega, gdy nie zostanie rozwiązana lub jest niedozwolona.7. Naprawa obrazu piaskownicy
7. Naprawa obrazu piaskownicy
7b. Czyszczenie instalacji Plugin
7b. Czyszczenie instalacji Plugin
openclaw doctor --fix / openclaw doctor --repair. Obejmuje to przestarzałe wygenerowane katalogi główne zależności, stare katalogi etapu instalacji, lokalne dla pakietu pozostałości po wcześniejszym kodzie naprawy zależności dołączanych Plugin oraz osierocone lub odzyskane zarządzane kopie npm dołączanych Plugin @openclaw/*, które mogą przesłaniać bieżący dołączony manifest. Doctor ponownie łączy też pakiet hosta openclaw z zarządzanymi Plugin npm, które deklarują peerDependencies.openclaw, aby lokalne dla pakietu importy czasu wykonywania, takie jak openclaw/plugin-sdk/*, nadal rozwiązywały się po aktualizacjach lub naprawach npm.Doctor może też ponownie zainstalować brakujące Plugin do pobrania, gdy konfiguracja się do nich odwołuje, ale lokalny rejestr Plugin nie może ich znaleźć. Przykłady obejmują materialne plugins.entries, skonfigurowane ustawienia kanału/providera/wyszukiwania oraz skonfigurowane środowiska wykonawcze agentów. Podczas aktualizacji pakietów doctor unika uruchamiania naprawy Plugin przez menedżera pakietów, gdy pakiet core jest podmieniany; uruchom openclaw doctor --fix ponownie po aktualizacji, jeśli skonfigurowany Plugin nadal wymaga odzyskania. Uruchomienie Gateway i ponowne ładowanie konfiguracji nie uruchamiają menedżerów pakietów; instalacje Plugin pozostają jawną pracą doctor/install/update.8. Migracje usług Gateway i wskazówki czyszczenia
8. Migracje usług Gateway i wskazówki czyszczenia
openclaw gateway status --deep lub openclaw doctor --deep, a następnie usuń duplikat albo ustaw OPENCLAW_SERVICE_REPAIR_POLICY=external, gdy nadzorca systemowy jest właścicielem cyklu życia Gateway.8b. Migracja startowa Matrix
8b. Migracja startowa Matrix
--fix / --repair) tworzy migawkę przedmigracyjną, a następnie uruchamia kroki migracji w trybie najlepszych starań: migrację starszego stanu Matrix oraz przygotowanie starszego stanu szyfrowanego. Oba kroki nie są krytyczne; błędy są logowane, a uruchamianie trwa dalej. W trybie tylko do odczytu (openclaw doctor bez --fix) ta kontrola jest całkowicie pomijana.8c. Parowanie urządzeń i dryf uwierzytelniania
8c. Parowanie urządzeń i dryf uwierzytelniania
- oczekujące pierwsze żądania parowania
- oczekujące podniesienia roli dla już sparowanych urządzeń
- oczekujące podniesienia zakresu dla już sparowanych urządzeń
- naprawy niezgodności klucza publicznego, gdy identyfikator urządzenia nadal pasuje, ale tożsamość urządzenia nie pasuje już do zatwierdzonego rekordu
- sparowane rekordy bez aktywnego tokenu dla zatwierdzonej roli
- sparowane tokeny, których zakresy dryfują poza zatwierdzoną bazę parowania
- lokalne buforowane wpisy tokenów urządzeń dla bieżącej maszyny, które poprzedzają rotację tokenu po stronie Gateway albo zawierają nieaktualne metadane zakresu
- sprawdź oczekujące żądania za pomocą
openclaw devices list - zatwierdź dokładne żądanie za pomocą
openclaw devices approve <requestId> - zrotuj świeży token za pomocą
openclaw devices rotate --device <deviceId> --role <role> - usuń i ponownie zatwierdź przestarzały rekord za pomocą
openclaw devices remove <deviceId>
9. Ostrzeżenia bezpieczeństwa
9. Ostrzeżenia bezpieczeństwa
10. systemd linger (Linux)
10. systemd linger (Linux)
11. Stan workspace (Skills, pluginy i TaskFlows)
11. Stan workspace (Skills, pluginy i TaskFlows)
- Stan Skills: zlicza Skills kwalifikujące się, z brakującymi wymaganiami oraz zablokowane przez listę dozwolonych.
- Stan pluginów: zlicza włączone/wyłączone/błędne pluginy; wymienia identyfikatory pluginów dla wszystkich błędów; raportuje capabilities pluginów pakietowych.
- Ostrzeżenia zgodności pluginów: oznacza pluginy, które mają problemy ze zgodnością z bieżącym runtime.
- Diagnostyka pluginów: ujawnia wszelkie ostrzeżenia lub błędy z czasu ładowania emitowane przez rejestr pluginów.
- Odzyskiwanie TaskFlow: ujawnia podejrzane zarządzane TaskFlows, które wymagają ręcznej inspekcji lub anulowania.
11b. Rozmiar pliku bootstrap
11b. Rozmiar pliku bootstrap
AGENTS.md, CLAUDE.md lub inne wstrzykiwane pliki kontekstu) są blisko skonfigurowanego budżetu znaków albo go przekraczają. Raportuje dla każdego pliku surową liczbę znaków względem wstrzykniętej, procent obcięcia, przyczynę obcięcia (max/file lub max/total) oraz łączną liczbę wstrzykniętych znaków jako część całkowitego budżetu. Gdy pliki są obcięte lub blisko limitu, doctor wypisuje wskazówki dotyczące dostrajania agents.defaults.bootstrapMaxChars i agents.defaults.bootstrapTotalMaxChars.11d. Czyszczenie nieaktualnego pluginu kanału
11d. Czyszczenie nieaktualnego pluginu kanału
openclaw doctor --fix usuwa brakujący plugin kanału, usuwa także wiszącą konfigurację o zakresie kanału, która odwoływała się do tego pluginu: wpisy channels.<id>, cele Heartbeat wskazujące kanał oraz nadpisania agents.*.models["<channel>/*"]. Zapobiega to pętlom uruchamiania Gateway, w których runtime kanału już nie istnieje, ale konfiguracja nadal każe gateway się do niego powiązać.11c. Uzupełnianie powłoki
11c. Uzupełnianie powłoki
- Jeśli profil powłoki używa wolnego dynamicznego wzorca uzupełniania (
source <(openclaw completion ...)), doctor aktualizuje go do szybszego wariantu pliku z cache. - Jeśli uzupełnianie jest skonfigurowane w profilu, ale brakuje pliku cache, doctor automatycznie regeneruje cache.
- Jeśli uzupełnianie nie jest w ogóle skonfigurowane, doctor proponuje jego instalację (tylko tryb interaktywny; pomijane z
--non-interactive).
openclaw completion --write-state, aby ręcznie zregenerować cache.12. Kontrole auth Gateway (token lokalny)
12. Kontrole auth Gateway (token lokalny)
- Jeśli tryb tokenu wymaga tokenu i nie istnieje żadne źródło tokenu, doctor proponuje wygenerowanie tokenu.
- Jeśli
gateway.auth.tokenjest zarządzany przez SecretRef, ale niedostępny, doctor ostrzega i nie zastępuje go tekstem jawnym. openclaw doctor --generate-gateway-tokenwymusza generowanie tylko wtedy, gdy nie skonfigurowano SecretRef tokenu.
12b. Naprawy tylko do odczytu świadome SecretRef
12b. Naprawy tylko do odczytu świadome SecretRef
openclaw doctor --fixużywa teraz tego samego modelu podsumowania SecretRef tylko do odczytu co polecenia z rodziny statusu na potrzeby ukierunkowanych napraw konfiguracji.- Przykład: naprawa Telegram
allowFrom/groupAllowFrom@usernamepróbuje użyć skonfigurowanych credentials bota, gdy są dostępne. - Jeśli token bota Telegram jest skonfigurowany przez SecretRef, ale niedostępny w bieżącej ścieżce polecenia, doctor raportuje, że credential jest skonfigurowany, lecz niedostępny, i pomija automatyczne rozpoznawanie zamiast kończyć się awarią lub błędnie zgłaszać brak tokenu.
13. Kontrola kondycji Gateway + restart
13. Kontrola kondycji Gateway + restart
13b. Gotowość wyszukiwania pamięci
13b. Gotowość wyszukiwania pamięci
- Backend QMD: sprawdza, czy binarium
qmdjest dostępne i można je uruchomić. Jeśli nie, wypisuje wskazówki naprawy, w tym pakiet npm oraz opcję ręcznej ścieżki do binarium. - Jawny provider lokalny: sprawdza lokalny plik modelu albo rozpoznany zdalny/pobieralny URL modelu. Jeśli go brakuje, sugeruje przełączenie na providera zdalnego.
- Jawny provider zdalny (
openai,voyageitd.): weryfikuje, czy klucz API jest obecny w środowisku lub magazynie auth. Jeśli go brakuje, wypisuje praktyczne wskazówki naprawy. - Starszy provider auto: traktuje
memorySearch.provider: "auto"jako OpenAI, sprawdza gotowość OpenAI, adoctor --fixprzepisuje go naprovider: "openai".
openclaw memory status --deep, aby zweryfikować gotowość embeddingów w runtime.14. Ostrzeżenia o stanie kanałów
14. Ostrzeżenia o stanie kanałów
15. Audyt konfiguracji supervisora + naprawa
15. Audyt konfiguracji supervisora + naprawa
openclaw doctorpyta przed przepisaniem konfiguracji supervisora.openclaw doctor --yesakceptuje domyślne monity naprawy.openclaw doctor --fixstosuje zalecane poprawki bez monitów (--repairjest aliasem).openclaw doctor --fix --forcenadpisuje niestandardowe konfiguracje supervisora.OPENCLAW_SERVICE_REPAIR_POLICY=externalutrzymuje doctor w trybie tylko do odczytu dla cyklu życia usługi gateway. Nadal raportuje kondycję usługi i uruchamia naprawy niezwiązane z usługą, ale pomija instalację/uruchomienie/restart/bootstrap usługi, przepisywanie konfiguracji supervisora i czyszczenie starszych usług, ponieważ ten cykl życia należy do zewnętrznego supervisora.- W systemie Linux doctor nie przepisuje metadanych polecenia/entrypoint, gdy pasująca jednostka systemd gateway jest aktywna. Ignoruje też nieaktywne, niebędące starszymi dodatkowymi jednostki podobne do gateway podczas skanowania zduplikowanych usług, aby towarzyszące pliki usług nie generowały szumu czyszczenia.
- Jeśli auth tokenem wymaga tokenu, a
gateway.auth.tokenjest zarządzany przez SecretRef, instalacja/naprawa usługi doctor waliduje SecretRef, ale nie utrwala rozwiązanych wartości tokenu w tekście jawnym w metadanych środowiska usługi supervisora. - Doctor wykrywa wartości środowiska usługi zarządzane przez
.env/oparte na SecretRef, które starsze instalacje LaunchAgent, systemd lub Windows Scheduled Task osadziły inline, i przepisuje metadane usługi tak, aby te wartości były ładowane ze źródła runtime zamiast z definicji supervisora. - Doctor wykrywa, gdy polecenie usługi nadal przypina stary
--portpo zmianiegateway.port, i przepisuje metadane usługi na bieżący port. - Jeśli auth tokenem wymaga tokenu, a skonfigurowany SecretRef tokenu jest nierozwiązany, doctor blokuje ścieżkę instalacji/naprawy z praktycznymi wskazówkami.
- Jeśli skonfigurowano zarówno
gateway.auth.token, jak igateway.auth.password, agateway.auth.modenie jest ustawiony, doctor blokuje instalację/naprawę do czasu jawnego ustawienia trybu. - Dla jednostek user-systemd w systemie Linux kontrole dryfu tokenu doctor obejmują teraz zarówno źródła
Environment=, jak iEnvironmentFile=podczas porównywania metadanych auth usługi. - Naprawy usługi doctor odmawiają przepisania, zatrzymania lub restartu usługi gateway ze starszego binarium OpenClaw, gdy konfiguracja została ostatnio zapisana przez nowszą wersję. Zobacz Rozwiązywanie problemów z Gateway.
- Zawsze możesz wymusić pełne przepisanie przez
openclaw gateway install --force.
16. Runtime Gateway + diagnostyka portów
16. Runtime Gateway + diagnostyka portów
18789) i raportuje prawdopodobne przyczyny (gateway już działa, tunel SSH).17. Najlepsze praktyki runtime Gateway
17. Najlepsze praktyki runtime Gateway
nvm, fnm, volta, asdf itd.). Kanały WhatsApp + Telegram wymagają Node, a ścieżki menedżerów wersji mogą zepsuć się po aktualizacjach, ponieważ usługa nie ładuje inicjalizacji powłoki. Doctor proponuje migrację do systemowej instalacji Node, gdy jest dostępna (Homebrew/apt/choco).Nowo zainstalowane lub naprawione macOS LaunchAgents używają kanonicznego systemowego PATH (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) zamiast kopiować PATH interaktywnej powłoki, dzięki czemu binaria systemowe zarządzane przez Homebrew pozostają dostępne, a Volta, asdf, fnm, pnpm i inne katalogi menedżerów wersji nie zmieniają tego, który Node jest rozpoznawany przez procesy potomne. Usługi Linux nadal zachowują jawne korzenie środowiska (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) oraz stabilne katalogi user-bin, ale odgadnięte katalogi awaryjne menedżerów wersji są zapisywane w PATH usługi tylko wtedy, gdy istnieją na dysku.18. Zapis konfiguracji + metadane kreatora
18. Zapis konfiguracji + metadane kreatora
19. Wskazówki workspace (backup + system pamięci)
19. Wskazówki workspace (backup + system pamięci)