Doctor
openclaw doctor — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілий
конфігураційний стан, перевіряє справність і надає практичні кроки для відновлення.
Швидкий старт
Безголовий режим / автоматизація
Що він робить (зведення)
- Необов’язкове попереднє оновлення для git-інсталяцій (лише в інтерактивному режимі).
- Перевірка актуальності протоколу UI (перебудовує Control UI, якщо схема протоколу новіша).
- Перевірка справності + запит на перезапуск.
- Підсумок стану Skills (доступні/відсутні/заблоковані) і стану плагінів.
- Нормалізація конфігурації для застарілих значень.
- Міграція конфігурації Talk із застарілих плоских полів
talk.*уtalk.provider+talk.providers.<provider>. - Перевірки міграції browser для застарілих конфігурацій розширення Chrome та готовності Chrome MCP.
- Попередження про перевизначення постачальника OpenCode (
models.providers.opencode/models.providers.opencode-go). - Попередження про затінення Codex OAuth (
models.providers.openai-codex). - Перевірка TLS-передумов OAuth для профілів OpenAI Codex OAuth.
- Міграція застарілого стану на диску (sessions/каталог agent/автентифікація WhatsApp).
- Міграція ключів контрактів маніфесту застарілих плагінів (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Міграція сховища застарілих cron (
jobId,schedule.cron, поля delivery/payload верхнього рівня,providerу payload, прості резервні webhook-завдання зnotify: true). - Перевірка файлів блокування сесій і очищення застарілих блокувань.
- Перевірки цілісності стану та прав доступу (sessions, transcripts, каталог state).
- Перевірки прав доступу до файла конфігурації (
chmod 600) під час локального запуску. - Стан автентифікації моделі: перевіряє строк дії OAuth, може оновлювати токени, строк дії яких добігає кінця, і повідомляє про стани cooldown/disabled для профілів автентифікації.
- Виявлення додаткового каталогу workspace (
~/openclaw). - Відновлення образу sandbox, коли sandbox увімкнено.
- Міграція застарілих служб і виявлення додаткових gateway.
- Міграція застарілого стану каналу Matrix (у режимі
--fix/--repair). - Перевірки runtime gateway (службу встановлено, але вона не працює; кешована мітка launchd).
- Попередження про стан каналів (перевіряються з запущеного gateway).
- Аудит конфігурації supervisor (launchd/systemd/schtasks) з необов’язковим виправленням.
- Перевірки найкращих практик runtime gateway (Node проти Bun, шляхи менеджерів версій).
- Діагностика конфліктів портів gateway (типово
18789). - Попередження безпеки для відкритих політик DM.
- Перевірки автентифікації gateway для локального режиму токена (пропонує згенерувати токен, якщо джерела токена немає; не перезаписує конфігурації токенів SecretRef).
- Перевірка systemd linger у Linux.
- Перевірка розміру bootstrap-файлів workspace (попередження про обрізання/наближення до ліміту для контекстних файлів).
- Перевірка стану автодоповнення оболонки та автоматичне встановлення/оновлення.
- Перевірка готовності постачальника embedding для memory search (локальна модель, віддалений API key або двійковий файл QMD).
- Перевірки інсталяції з джерел (невідповідність workspace pnpm, відсутні ресурси UI, відсутній двійковий файл tsx).
- Записує оновлений конфіг + метадані майстра.
Backfill і reset у Dreams UI
Сцена Dreams у Control UI містить дії Backfill, Reset і Clear Grounded для робочого процесу grounded dreaming. Ці дії використовують gateway-подібні RPC-методи в стилі doctor, але вони не є частиною CLI відновлення/міграціїopenclaw doctor.
Що вони роблять:
- Backfill сканує історичні файли
memory/YYYY-MM-DD.mdв активному workspace, запускає grounded REM diary pass і записує оборотні записи backfill уDREAMS.md. - Reset видаляє лише ті позначені записи backfill diary із
DREAMS.md. - Clear Grounded видаляє лише staged grounded-only короткострокові записи, які з’явилися внаслідок історичного відтворення й ще не накопичили live recall або daily support.
- вони не редагують
MEMORY.md - вони не запускають повні міграції doctor
- вони не переміщують автоматично grounded candidates у live short-term promotion store, якщо ви явно спочатку не запустили staged CLI path
DREAMS.md як поверхню для перегляду.
Детальна поведінка та обґрунтування
0) Необов’язкове оновлення (git-інсталяції)
Якщо це git checkout і doctor запущено в інтерактивному режимі, він пропонує оновитися (fetch/rebase/build) перед запуском doctor.1) Нормалізація конфігурації
Якщо конфігурація містить застарілі форми значень (наприкладmessages.ackReaction
без перевизначення для конкретного каналу), doctor нормалізує їх до поточної
схеми.
Це також включає застарілі плоскі поля Talk. Поточна публічна конфігурація Talk —
це talk.provider + talk.providers.<provider>. Doctor переписує старі форми
talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat /
talk.apiKey у мапу постачальників.
2) Міграції застарілих ключів конфігурації
Коли конфігурація містить застарілі ключі, інші команди відмовляються працювати і просять вас запуститиopenclaw doctor.
Doctor виконає таке:
- Пояснить, які застарілі ключі було знайдено.
- Покажe міграцію, яку він застосував.
- Перезапише
~/.openclaw/openclaw.jsonоновленою схемою.
openclaw doctor --fix.
Поточні міграції:
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[].default- застарілі
talk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKey→talk.provider+talk.providers.<provider> routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>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.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- Для каналів з іменованими
accounts, але з залишковими однокористувацькими значеннями каналу верхнього рівня, перемістити ці значення рівня облікового запису до просунутого облікового запису, обраного для цього каналу (accounts.defaultдля більшості каналів; Matrix може зберегти наявну відповідну іменовану/типову ціль) 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/fallbacksbrowser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- видалити
browser.relayBindHost(застаріле налаштування relay для extension)
- Якщо налаштовано два або більше записів
channels.<channel>.accountsбезchannels.<channel>.defaultAccountабоaccounts.default, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис. - Якщо
channels.<channel>.defaultAccountзадано як невідомий ID облікового запису, doctor попереджає та перелічує налаштовані ID облікових записів.
2b) Перевизначення постачальника OpenCode
Якщо ви вручну додалиmodels.providers.opencode, opencode-zen або opencode-go,
це перевизначає вбудований каталог OpenCode з @mariozechner/pi-ai.
Через це моделі можуть використовувати неправильний API або мати нульову вартість. Doctor попереджає, щоб ви
могли прибрати перевизначення й відновити маршрутизацію API та вартість для кожної моделі.
2c) Міграція browser і готовність Chrome MCP
Якщо конфігурація browser досі вказує на видалений шлях розширення Chrome, doctor нормалізує її до поточної host-local моделі підключення Chrome MCP:browser.profiles.*.driver: "extension"стає"existing-session"browser.relayBindHostвидаляється
defaultProfile: "user" або налаштований профіль existing-session:
- перевіряє, чи встановлено Google Chrome на тому самому хості для типових профілів автопідключення
- перевіряє виявлену версію Chrome й попереджає, якщо вона нижча за Chrome 144
- нагадує увімкнути remote debugging на сторінці inspect у браузері (наприклад
chrome://inspect/#remote-debugging,brave://inspect/#remote-debugging, абоedge://inspect/#remote-debugging)
- браузер на базі Chromium 144+ на хості gateway/node
- браузер запущений локально
- у цьому браузері увімкнено remote debugging
- схвалено перший запит на згоду підключення в браузері
responsebody, експорт PDF,
перехоплення завантажень і пакетні дії, як і раніше, потребують керованого
browser або raw CDP profile.
Ця перевірка не застосовується до Docker, sandbox, remote-browser або інших
headless-потоків. Вони й надалі використовують raw CDP.
2d) TLS-передумови OAuth
Коли налаштовано профіль OpenAI Codex OAuth, doctor перевіряє endpoint авторизації OpenAI, щоб упевнитися, що локальний стек TLS Node/OpenSSL може перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприкладUNABLE_TO_GET_ISSUER_CERT_LOCALLY, прострочений сертифікат або самопідписаний сертифікат),
doctor виводить рекомендації щодо виправлення для конкретної платформи. У macOS з Node, встановленим через Homebrew,
зазвичай виправленням є brew postinstall ca-certificates. З --deep перевірка
виконується, навіть якщо gateway справний.
2c) Перевизначення постачальника Codex OAuth
Якщо ви раніше додали застарілі налаштування транспорту OpenAI уmodels.providers.openai-codex, вони можуть затінити вбудований шлях
постачальника Codex OAuth, який новіші випуски використовують автоматично. Doctor
попереджає, коли бачить ці старі транспортні налаштування поруч із Codex OAuth, щоб ви
могли прибрати або переписати застаріле транспортне перевизначення і повернути
вбудовану маршрутизацію/резервну поведінку. Користувацькі проксі та перевизначення лише для заголовків
і далі підтримуються та не викликають цього попередження.
3) Міграції застарілого стану (розмітка диска)
Doctor може мігрувати старіші розмітки на диску до поточної структури:- Сховище сесій + transcripts:
- з
~/.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. Нормалізація provider/provider-map Talk тепер
порівнює за структурною рівністю, тож відмінності лише в порядку ключів більше не викликають
повторних порожніх змін doctor --fix.
3a) Міграції застарілих маніфестів плагінів
Doctor сканує всі встановлені маніфести плагінів на наявність застарілих ключів можливостей верхнього рівня (speechProviders, realtimeTranscriptionProviders,
realtimeVoiceProviders, mediaUnderstandingProviders,
imageGenerationProviders, videoGenerationProviders, webFetchProviders,
webSearchProviders). Якщо їх знайдено, він пропонує перемістити їх до об’єкта contracts
і переписати файл маніфесту на місці. Ця міграція ідемпотентна;
якщо ключ contracts уже містить ті самі значення, застарілий ключ видаляється
без дублювання даних.
3b) Міграції застарілого сховища cron
Doctor також перевіряє сховище cron job (~/.openclaw/cron/jobs.json типово,
або cron.store, якщо перевизначено) на старі форми завдань, які scheduler досі
приймає для сумісності.
Поточні очищення cron включають:
jobId→idschedule.cron→schedule.expr- поля payload верхнього рівня (
message,model,thinking, …) →payload - поля delivery верхнього рівня (
deliver,channel,to,provider, …) →delivery - псевдоніми delivery
providerу payload → явнийdelivery.channel - прості застарілі резервні webhook-завдання
notify: true→ явнийdelivery.mode="webhook"зdelivery.to=cron.webhook
notify: true, лише якщо може зробити це без
зміни поведінки. Якщо завдання поєднує застарілий резервний notify з наявним
режимом delivery, відмінним від webhook, doctor попереджає й залишає це завдання
для ручної перевірки.
3c) Очищення блокувань сесій
Doctor сканує каталог сесій кожного агента на наявність застарілих файлів блокування запису — файлів, що залишилися після аварійного завершення сесії. Для кожного знайденого файла блокування він повідомляє: шлях, PID, чи PID іще активний, вік блокування та чи вважається воно застарілим (мертвий PID або старше 30 хвилин). У режимі--fix / --repair
він видаляє застарілі файли блокування автоматично; в іншому разі лише друкує примітку та
просить вас повторно запустити команду з --fix.
4) Перевірки цілісності стану (збереження сесій, маршрутизація та безпека)
Каталог стану — це операційний стовбур системи. Якщо він зникне, ви втратите sessions, credentials, logs і config (якщо у вас немає резервних копій деінде). Doctor перевіряє:- Каталог state відсутній: попереджає про катастрофічну втрату стану, пропонує відтворити каталог і нагадує, що не може відновити відсутні дані.
- Права доступу до каталогу state: перевіряє можливість запису; пропонує виправити права
(і виводить підказку
chown, якщо виявлено невідповідність власника/групи). - Каталог state у macOS із хмарною синхронізацією: попереджає, коли state розміщено в iCloud Drive
(
~/Library/Mobile Documents/com~apple~CloudDocs/...) або~/Library/CloudStorage/..., оскільки шляхи з резервним синхронізуванням можуть спричиняти повільніший I/O та гонки блокувань/синхронізації. - Каталог state на Linux у SD або eMMC: попереджає, коли state вказує на джерело монтування
mmcblk*, оскільки випадковий I/O на SD або eMMC може бути повільнішим і сильніше зношувати носій під час запису сесій і credentials. - Каталоги сесій відсутні:
sessions/і каталог сховища сесій є необхідними для збереження history та уникнення збоївENOENT. - Невідповідність transcript: попереджає, коли для останніх записів сесій бракує файлів transcript.
- Основна сесія “1-line JSONL”: позначає випадки, коли основний transcript має лише один рядок (історія не накопичується).
- Кілька каталогів state: попереджає, коли існує кілька каталогів
~/.openclawу різних домашніх каталогах або колиOPENCLAW_STATE_DIRвказує на інше місце (історія може розділитися між інсталяціями). - Нагадування про віддалений режим: якщо
gateway.mode=remote, doctor нагадує вам запускати його на віддаленому хості (state зберігається там). - Права доступу до файла конфігурації: попереджає, якщо
~/.openclaw/openclaw.jsonдоступний для читання групою/усіма й пропонує обмежити доступ до600.
5) Стан автентифікації моделей (строк дії OAuth)
Doctor перевіряє профілі OAuth у сховищі автентифікації, попереджає, коли строк дії токенів добігає кінця або вже вичерпано, і може оновлювати їх, коли це безпечно. Якщо профіль Anthropic OAuth/token застарів, він пропонує Anthropic API key або шлях із setup-token Anthropic. Запити на оновлення з’являються лише під час інтерактивного запуску (TTY);--non-interactive
пропускає спроби оновлення.
Коли оновлення OAuth остаточно завершується невдачею (наприклад refresh_token_reused,
invalid_grant або постачальник вимагає повторного входу), doctor повідомляє,
що потрібна повторна автентифікація, і виводить точну команду
openclaw models auth login --provider ..., яку треба виконати.
Doctor також повідомляє про профілі автентифікації, які тимчасово непридатні через:
- короткі cooldown-и (rate limits/timeouts/auth failures)
- триваліші вимкнення (помилки billing/credit)
6) Перевірка моделі hooks
Якщо заданоhooks.gmail.model, doctor перевіряє посилання на модель у
каталозі та allowlist і попереджає, якщо її не вдасться знайти або вона заборонена.
7) Відновлення образу sandbox
Коли sandbox увімкнено, doctor перевіряє Docker-образи та пропонує зібрати їх або перейти на застарілі назви, якщо поточний образ відсутній.7b) Runtime-залежності вбудованих плагінів
Doctor перевіряє, чи присутні runtime-залежності вбудованих плагінів (наприклад пакети runtime плагіна Discord) у корені інсталяції OpenClaw. Якщо якихось бракує, doctor повідомляє про пакети та встановлює їх у режиміopenclaw doctor --fix / openclaw doctor --repair.
8) Міграції служб gateway і підказки з очищення
Doctor виявляє застарілі служби gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити службу OpenClaw з поточним портом gateway. Він також може сканувати наявність додаткових схожих на gateway служб і виводити підказки з очищення. Іменовані профілем служби gateway OpenClaw вважаються повноцінними й не позначаються як “додаткові”.8b) Стартова міграція Matrix
Коли обліковий запис каналу Matrix має очікувану або застосовну міграцію застарілого стану, doctor (у режимі--fix / --repair) створює знімок до міграції, а потім
запускає кроки міграції в режимі best-effort: міграцію застарілого стану Matrix і підготовку
застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, і
запуск триває. У режимі лише читання (openclaw doctor без --fix) цю перевірку
повністю пропущено.
9) Попередження безпеки
Doctor виводить попередження, коли постачальник відкритий для DM без allowlist, або коли політику налаштовано в небезпечний спосіб.10) systemd linger (Linux)
Якщо використовується користувацька служба systemd, doctor перевіряє, що linger увімкнено, щоб gateway продовжував працювати після виходу із системи.11) Стан workspace (Skills, плагіни та застарілі каталоги)
Doctor друкує зведення про стан workspace для типового агента:- Стан Skills: підраховує доступні, ті що мають відсутні вимоги, і заблоковані allowlist навички.
- Застарілі каталоги workspace: попереджає, коли
~/openclawабо інші застарілі каталоги workspace існують поруч із поточним workspace. - Стан плагінів: підраховує завантажені/вимкнені/помилкові плагіни; перелічує ID плагінів для будь-яких помилок; повідомляє про можливості bundle-плагінів.
- Попередження про сумісність плагінів: позначає плагіни, що мають проблеми сумісності з поточним runtime.
- Діагностика плагінів: виводить усі попередження або помилки під час завантаження, які видав реєстр плагінів.
11b) Розмір bootstrap-файлів
Doctor перевіряє, чи bootstrap-файли workspace (наприкладAGENTS.md,
CLAUDE.md або інші ін’єктовані контекстні файли) не наблизилися або не перевищили налаштований
бюджет символів. Він повідомляє для кожного файла необроблену та ін’єктовану кількість символів,
відсоток обрізання, причину обрізання (max/file або max/total) і загальну кількість ін’єктованих
символів як частку від загального бюджету. Коли файли обрізано або вони близькі до межі,
doctor виводить поради щодо налаштування agents.defaults.bootstrapMaxChars
та agents.defaults.bootstrapTotalMaxChars.
11c) Автодоповнення оболонки
Doctor перевіряє, чи встановлено tab completion для поточної оболонки (zsh, bash, fish або PowerShell):- Якщо профіль оболонки використовує повільний шаблон динамічного completion
(
source <(openclaw completion ...)), doctor оновлює його до швидшого варіанта з кешованим файлом. - Якщо completion налаштовано у профілі, але файл кешу відсутній, doctor автоматично регенерує кеш.
- Якщо completion взагалі не налаштовано, doctor пропонує встановити його
(лише в інтерактивному режимі; пропускається з
--non-interactive).
openclaw completion --write-state.
12) Перевірки автентифікації gateway (локальний токен)
Doctor перевіряє готовність автентифікації локального токена gateway.- Якщо для режиму токена потрібен токен і джерела токена немає, doctor пропонує згенерувати його.
- Якщо
gateway.auth.tokenкерується через SecretRef, але недоступний, doctor попереджає й не перезаписує його звичайним текстом. openclaw doctor --generate-gateway-tokenпримусово генерує токен лише тоді, коли не налаштовано SecretRef для токена.
12b) Виправлення в режимі лише читання з урахуванням SecretRef
Деяким потокам відновлення потрібно перевіряти налаштовані credentials без послаблення runtime-поведінки fail-fast.openclaw doctor --fixтепер використовує ту саму модель зведення SecretRef лише для читання, що й команди сімейства status, для цільових виправлень конфігурації.- Приклад: виправлення Telegram
allowFrom/groupAllowFrom@usernameнамагається використати налаштовані облікові дані бота, якщо вони доступні. - Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, doctor повідомляє, що credential налаштовано, але він недоступний, і пропускає автоматичне визначення замість аварійного завершення або хибного повідомлення про відсутній токен.
13) Перевірка справності gateway + перезапуск
Doctor запускає перевірку справності й пропонує перезапустити gateway, якщо той виглядає несправним.13b) Готовність memory search
Doctor перевіряє, чи готовий налаштований постачальник embedding для memory search для типового агента. Поведінка залежить від налаштованого backend і provider:- QMD backend: перевіряє, чи доступний і чи може запускатися двійковий файл
qmd. Якщо ні — виводить рекомендації з виправлення, включно з npm-пакетом і варіантом ручного шляху до двійкового файла. - Явний локальний provider: перевіряє наявність локального файла моделі або розпізнаваної віддаленої/доступної для завантаження URL моделі. Якщо його немає, пропонує перейти на віддаленого provider.
- Явний віддалений provider (
openai,voyageтощо): перевіряє, чи є API key у середовищі або сховищі автентифікації. Якщо бракує, виводить практичні підказки для виправлення. - Auto provider: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого provider у порядку auto-selection.
openclaw memory status --deep, щоб перевірити готовність embedding у runtime.
14) Попередження про стан каналів
Якщо gateway справний, doctor виконує перевірку стану каналів і повідомляє про попередження з рекомендованими виправленнями.15) Аудит конфігурації supervisor + відновлення
Doctor перевіряє встановлену конфігурацію supervisor (launchd/systemd/schtasks) на відсутність або застарілі типові значення (наприклад залежності systemd від network-online і затримку перезапуску). Коли виявляється невідповідність, він рекомендує оновлення та може переписати файл служби/завдання відповідно до поточних типових значень. Примітки:openclaw doctorзапитує підтвердження перед переписуванням конфігурації supervisor.openclaw doctor --yesприймає типові запити на виправлення.openclaw doctor --repairзастосовує рекомендовані виправлення без запитів.openclaw doctor --repair --forceперезаписує користувацькі конфігурації supervisor.- Якщо для автентифікації токена потрібен токен і
gateway.auth.tokenкерується через SecretRef, встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв’язані значення токенів у відкритому тексті в метаданих середовища служби supervisor. - Якщо для автентифікації токена потрібен токен, а налаштований token SecretRef не розв’язується, doctor блокує шлях встановлення/відновлення та надає практичні вказівки.
- Якщо одночасно налаштовано
gateway.auth.tokenіgateway.auth.password, аgateway.auth.modeне задано, doctor блокує встановлення/відновлення, доки режим не буде задано явно. - Для користувацьких модулів systemd у Linux перевірки розходження токенів у doctor тепер включають як джерела
Environment=, так іEnvironmentFile=під час порівняння метаданих автентифікації служби. - Ви завжди можете примусово виконати повний перезапис через
openclaw gateway install --force.
16) Діагностика runtime gateway + портів
Doctor перевіряє runtime служби (PID, останній статус виходу) і попереджає, коли службу встановлено, але вона фактично не працює. Він також перевіряє конфлікти портів gateway (типово18789) і повідомляє про ймовірні причини (gateway уже
працює, SSH tunnel).
17) Найкращі практики runtime gateway
Doctor попереджає, коли служба gateway працює на Bun або через шлях Node, керований менеджером версій (nvm, fnm, volta, asdf тощо). Канали WhatsApp і Telegram потребують Node,
а шляхи менеджерів версій можуть ламатися після оновлень, оскільки служба не
завантажує ініціалізацію вашої оболонки. Doctor пропонує перейти на системну інсталяцію Node, коли
вона доступна (Homebrew/apt/choco).