diff --git a/docs/uk/gateway/doctor.md b/docs/uk/gateway/doctor.md index f2349236d..39a81e222 100644 --- a/docs/uk/gateway/doctor.md +++ b/docs/uk/gateway/doctor.md @@ -3,18 +3,18 @@ read_when: - Додавання або змінення міграцій doctor - Запровадження несумісних змін конфігурації sidebarTitle: Doctor -summary: 'Команда doctor: перевірки працездатності, міграції конфігурації та кроки відновлення' +summary: 'Команда Doctor: перевірки працездатності, міграції конфігурації та кроки відновлення' title: Діагностика x-i18n: - generated_at: "2026-05-04T09:37:04Z" + generated_at: "2026-05-04T19:04:53Z" model: gpt-5.5 provider: openai - source_hash: 1bc8615f5e49e8c20785a9dc9779c447fd0d5794c80663d2396b0a20b4187798 + source_hash: e6b18967c4a352290057afc2da95f1d6a1389f46f9d1e49ad4864baf7b77d343 source_path: gateway/doctor.md workflow: 16 --- -`openclaw doctor` — це інструмент ремонту + міграції для OpenClaw. Він виправляє застарілі конфігурацію/стан, перевіряє справність і надає дієві кроки для ремонту. +`openclaw doctor` — це інструмент ремонту й міграції для OpenClaw. Він виправляє застарілі конфігурацію/стан, перевіряє справність і надає дієві кроки для ремонту. ## Швидкий старт @@ -30,7 +30,7 @@ openclaw doctor openclaw doctor --yes ``` - Прийняти типові значення без запитів (зокрема кроки ремонту перезапуску/сервісу/пісочниці, коли застосовно). + Приймати типові значення без запитів (зокрема кроки ремонту перезапуску/служби/пісочниці, коли застосовно). @@ -46,7 +46,7 @@ openclaw doctor openclaw doctor --repair --force ``` - Застосувати також агресивні ремонти (перезаписує власні конфігурації супервізора). + Також застосувати агресивні ремонти (перезаписує користувацькі конфігурації супервізора). @@ -54,7 +54,7 @@ openclaw doctor openclaw doctor --non-interactive ``` - Запустити без запитів і застосувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії перезапуску/сервісу/пісочниці, які потребують підтвердження людини. Міграції застарілого стану запускаються автоматично після виявлення. + Запускати без запитів і застосовувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії перезапуску/служби/пісочниці, які потребують підтвердження людини. Міграції застарілого стану запускаються автоматично після виявлення. @@ -62,12 +62,12 @@ openclaw doctor openclaw doctor --deep ``` - Сканувати системні сервіси на додаткові встановлення Gateway (launchd/systemd/schtasks). + Сканувати системні служби на наявність додаткових встановлень Gateway (launchd/systemd/schtasks). -Якщо хочете переглянути зміни перед записом, спершу відкрийте файл конфігурації: +Якщо хочете переглянути зміни перед записом, спочатку відкрийте файл конфігурації: ```bash cat ~/.openclaw/openclaw.json @@ -77,7 +77,7 @@ cat ~/.openclaw/openclaw.json - - Необов’язкове попереднє оновлення для встановлень із git (лише інтерактивно). + - Необов’язкове попереднє оновлення для git-встановлень (лише інтерактивно). - Перевірка актуальності протоколу UI (перезбирає Control UI, коли схема протоколу новіша). - Перевірка справності + запит на перезапуск. - Підсумок стану Skills (придатні/відсутні/заблоковані) і стан плагінів. @@ -85,102 +85,102 @@ cat ~/.openclaw/openclaw.json - Нормалізація конфігурації для застарілих значень. - - Міграція конфігурації Talk із застарілих пласких полів `talk.*` у `talk.provider` + `talk.providers.`. + - Міграція конфігурації Talk із застарілих плоских полів `talk.*` до `talk.provider` + `talk.providers.`. - Перевірки міграції браузера для застарілих конфігурацій розширення Chrome і готовності Chrome MCP. - Попередження про перевизначення провайдера OpenCode (`models.providers.opencode` / `models.providers.opencode-go`). - - Попередження про затінення OAuth Codex (`models.providers.openai-codex`). + - Попередження про затінення Codex OAuth (`models.providers.openai-codex`). - Перевірка передумов OAuth TLS для профілів OpenAI Codex OAuth. - - Попередження allowlist плагінів/інструментів, коли `plugins.allow` обмежувальний, але політика інструментів усе ще запитує wildcard або інструменти, що належать плагінам. - - Міграція застарілого стану на диску (сеанси/каталог агента/автентифікація WhatsApp). - - Міграція застарілого ключа контракту маніфесту плагіна (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`). - - Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля delivery/payload верхнього рівня, `provider` у payload, прості резервні завдання webhook `notify: true`). - - Міграція застарілої runtime-політики агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`. - - Очищення застарілої конфігурації плагінів, коли плагіни ввімкнено; коли `plugins.enabled=false`, застарілі посилання на плагіни вважаються інертною конфігурацією стримування й зберігаються. + - Попередження allowlist плагінів/інструментів, коли `plugins.allow` є обмежувальним, але політика інструментів усе ще вимагає wildcard або інструменти, що належать плагінам. + - Міграція застарілого стану на диску (sessions/agent dir/WhatsApp auth). + - Міграція застарілих ключів контракту маніфесту плагіна (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`). + - Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля доставки/payload верхнього рівня, payload `provider`, прості резервні завдання Webhook `notify: true`). + - Міграція застарілої політики виконання агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`. + - Очищення застарілої конфігурації плагінів, коли плагіни ввімкнені; коли `plugins.enabled=false`, застарілі посилання на плагіни вважаються інертною конфігурацією ізоляції та зберігаються. - - Перевірка файлів блокування сеансів і очищення застарілих блокувань. - - Ремонт транскриптів сеансів для дубльованих гілок переписування промптів, створених ураженими збірками 2026.4.24. - - Виявлення tombstone відновлення-після-перезапуску для завислого субагента з підтримкою `--fix` для очищення застарілих прапорців перерваного відновлення, щоб запуск не продовжував вважати дочірній процес перерваним через перезапуск. - - Перевірки цілісності стану та дозволів (сеанси, транскрипти, каталог стану). + - Перевірка lock-файлів сесій і очищення застарілих lock-файлів. + - Ремонт транскриптів сесій для дубльованих гілок переписування prompt, створених ураженими збірками 2026.4.24. + - Виявлення tombstone відновлення після перезапуску завислого subagent, з підтримкою `--fix` для очищення застарілих прапорців перерваного відновлення, щоб під час запуску дочірній процес не продовжував вважатися перерваним перезапуском. + - Перевірки цілісності стану та дозволів (сесії, транскрипти, каталог стану). - Перевірки дозволів файлу конфігурації (chmod 600) під час локального запуску. - - Справність автентифікації моделей: перевіряє завершення терміну OAuth, може оновлювати токени, що скоро спливають, і повідомляє про стани cooldown/disabled для auth-profile. - - Виявлення додаткового каталогу робочого простору (`~/openclaw`). + - Справність автентифікації моделей: перевіряє завершення строку дії OAuth, може оновлювати токени, строк дії яких спливає, і повідомляє стани cooldown/disabled профілів автентифікації. + - Виявлення додаткового каталогу workspace (`~/openclaw`). - + - Ремонт образу пісочниці, коли пісочницю ввімкнено. - - Міграція застарілих сервісів і виявлення додаткових Gateway. + - Міграція застарілої служби та виявлення додаткового Gateway. - Міграція застарілого стану каналу Matrix (у режимі `--fix` / `--repair`). - - Перевірки runtime Gateway (сервіс установлено, але не запущено; кешована мітка launchd). - - Попередження стану каналів (перевіряються з запущеного Gateway). - - Аудит конфігурації супервізора (launchd/systemd/schtasks) із необов’язковим ремонтом. - - Очищення середовища вбудованого проксі для сервісів Gateway, які під час встановлення або оновлення захопили значення оболонки `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY`. - - Перевірки найкращих практик runtime Gateway (Node проти Bun, шляхи менеджера версій). - - Діагностика конфліктів портів Gateway (типовий `18789`). + - Перевірки виконання Gateway (служба встановлена, але не запущена; кешована мітка launchd). + - Попередження стану каналів (перевірено із запущеного Gateway). + - Аудит конфігурації супервізора (launchd/systemd/schtasks) з необов’язковим ремонтом. + - Очищення середовища вбудованого проксі для служб Gateway, які захопили значення shell `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` під час встановлення або оновлення. + - Перевірки найкращих практик виконання Gateway (Node проти Bun, шляхи менеджера версій). + - Діагностика конфліктів порту Gateway (типово `18789`). - Попередження безпеки для відкритих політик DM. - - Перевірки автентифікації Gateway для режиму локального токена (пропонує створення токена, коли джерела токена немає; не перезаписує конфігурації token SecretRef). - - Виявлення проблем сполучення пристроїв (очікувані запити першого сполучення, очікувані підвищення ролі/області, дрейф застарілого локального кешу device-token і дрейф автентифікації paired-record). + - Перевірки автентифікації Gateway для режиму локального токена (пропонує генерацію токена, коли джерела токена немає; не перезаписує конфігурації token SecretRef). + - Виявлення проблем зі сполученням пристрою (очікувані запити першого сполучення, очікувані підвищення ролі/області, розбіжність застарілого локального кешу device-token і розбіжність автентифікації запису сполучення). - + - Перевірка systemd linger у Linux. - - Перевірка розміру bootstrap-файлу робочого простору (попередження про обрізання/наближення до ліміту для файлів контексту). - - Перевірка готовності Skills для типового агента; повідомляє про дозволені skills із відсутніми bin, env, config або вимогами до ОС, а `--fix` може вимкнути недоступні skills у `skills.entries`. - - Перевірка стану автодоповнення оболонки та автоматичне встановлення/оновлення. - - Перевірка готовності провайдера embedding для пошуку пам’яті (локальна модель, ключ віддаленого API або бінарний файл QMD). - - Перевірки встановлення з вихідного коду (невідповідність робочого простору pnpm, відсутні UI-ресурси, відсутній бінарний файл tsx). - - Записує оновлену конфігурацію + метадані майстра. + - Перевірка розміру bootstrap-файлу workspace (попередження про обрізання/наближення до ліміту для контекстних файлів). + - Перевірка готовності Skills для типового агента; повідомляє дозволені навички з відсутніми bin, env, config або вимогами OS, а `--fix` може вимкнути недоступні навички в `skills.entries`. + - Перевірка стану shell completion і автоматичне встановлення/оновлення. + - Перевірка готовності провайдера embeddings для пошуку пам’яті (локальна модель, ключ віддаленого API або бінарний файл QMD). + - Перевірки встановлення з джерел (невідповідність pnpm workspace, відсутні UI-ресурси, відсутній бінарний файл tsx). + - Записує оновлену конфігурацію + метадані wizard. -## Backfill і reset у Dreams UI +## Зворотне заповнення та скидання Dreams UI -Сцена Dreams у Control UI містить дії **Backfill**, **Reset** і **Clear Grounded** для робочого процесу grounded dreaming. Ці дії використовують RPC-методи в стилі doctor Gateway, але вони **не** є частиною ремонту/міграції CLI `openclaw doctor`. +Сцена Dreams у Control UI містить дії **Backfill**, **Reset** і **Clear Grounded** для процесу grounded dreaming. Ці дії використовують RPC-методи Gateway у стилі doctor, але вони **не** є частиною ремонту/міграції CLI `openclaw doctor`. Що вони роблять: -- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному робочому просторі, запускає grounded REM diary pass і записує оборотні backfill-записи в `DREAMS.md`. -- **Reset** видаляє з `DREAMS.md` лише ці позначені backfill diary entries. -- **Clear Grounded** видаляє лише staged grounded-only короткострокові записи, які походять з історичного replay і ще не накопичили live recall або daily support. +- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному workspace, запускає grounded REM diary pass і записує оборотні записи backfill до `DREAMS.md`. +- **Reset** видаляє з `DREAMS.md` лише ці позначені записи backfill diary. +- **Clear Grounded** видаляє лише staged grounded-only короткострокові записи, що походять з історичного replay і ще не накопичили live recall або daily support. Чого вони **не** роблять самі по собі: - вони не редагують `MEMORY.md` - вони не запускають повні міграції doctor -- вони автоматично не stage grounded candidates у live short-term promotion store, якщо ви явно не запустите staged CLI path спершу +- вони не додають автоматично grounded candidates до live short-term promotion store, якщо ви явно не запустите спочатку staged CLI path -Якщо хочете, щоб grounded historical replay впливав на звичайну deep promotion lane, натомість використайте CLI-процес: +Якщо хочете, щоб grounded historical replay вплинув на звичайну deep promotion lane, натомість використовуйте CLI-потік: ```bash openclaw memory rem-backfill --path ./memory --stage-short-term ``` -Це stage grounded durable candidates у short-term dreaming store, водночас залишаючи `DREAMS.md` поверхнею для перегляду. +Це додає grounded durable candidates до short-term dreaming store, зберігаючи `DREAMS.md` як поверхню для перегляду. -## Детальна поведінка та обґрунтування +## Докладна поведінка та обґрунтування - Якщо це git checkout і doctor запускається інтерактивно, він пропонує оновитися (fetch/rebase/build) перед запуском doctor. + Якщо це git checkout і doctor запущено інтерактивно, він пропонує оновитися (fetch/rebase/build) перед запуском doctor. - Якщо конфігурація містить застарілі форми значень (наприклад, `messages.ackReaction` без перевизначення для конкретного каналу), doctor нормалізує їх у поточну схему. + Якщо конфігурація містить застарілі форми значень (наприклад `messages.ackReaction` без перевизначення для конкретного каналу), doctor нормалізує їх до поточної схеми. - Це включає застарілі пласкі поля Talk. Поточна публічна конфігурація Talk — це `talk.provider` + `talk.providers.`. Doctor переписує старі форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` у мапу провайдерів. + Це включає застарілі плоскі поля Talk. Поточна публічна конфігурація Talk — це `talk.provider` + `talk.providers.`. Doctor переписує старі форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` у map провайдера. Doctor також попереджає, коли `plugins.allow` не порожній, а політика інструментів використовує - wildcard або записи інструментів, що належать плагінам. `tools.allow: ["*"]` відповідає лише інструментам - із плагінів, які фактично завантажуються; він не обходить ексклюзивний + wildcard або записи інструментів, що належать плагінам. `tools.allow: ["*"]` збігається лише з інструментами + з плагінів, які фактично завантажуються; він не обходить ексклюзивний allowlist плагінів. - Коли конфігурація містить застарілі ключі, інші команди відмовляються запускатися й просять запустити `openclaw doctor`. + Коли конфігурація містить застарілі ключі, інші команди відмовляються запускатися й просять вас виконати `openclaw doctor`. Doctor: @@ -188,7 +188,7 @@ openclaw memory rem-backfill --path ./memory --stage-short-term - Покаже застосовану міграцію. - Перепише `~/.openclaw/openclaw.json` з оновленою схемою. - Gateway також автоматично запускає міграції doctor під час запуску, коли виявляє застарілий формат конфігурації, тож застарілі конфігурації ремонтуються без ручного втручання. Міграції сховища cron-завдань обробляє `openclaw doctor --fix`. + Gateway також автоматично запускає міграції doctor під час запуску, коли виявляє застарілий формат конфігурації, тож застарілі конфігурації ремонтуються без ручного втручання. Міграції сховища завдань Cron обробляються `openclaw doctor --fix`. Поточні міграції: @@ -196,7 +196,8 @@ openclaw memory rem-backfill --path ./memory --stage-short-term - `routing.groupChat.requireMention` → `channels.whatsapp/telegram/imessage.groups."*".requireMention` - `routing.groupChat.historyLimit` → `messages.groupChat.historyLimit` - `routing.groupChat.mentionPatterns` → `messages.groupChat.mentionPatterns` - - у конфігураціях налаштованих каналів відсутня видима політика відповіді → `messages.groupChat.visibleReplies: "message_tool"` + - `channels.telegram.requireMention` → `channels.telegram.groups."*".requireMention` + - конфігурації налаштованих каналів без видимої політики відповідей → `messages.groupChat.visibleReplies: "message_tool"` - `routing.queue` → `messages.queue` - `routing.bindings` → `bindings` верхнього рівня - `routing.agents`/`routing.defaultAgentId` → `agents.list` + `agents.list[].default` @@ -214,70 +215,70 @@ openclaw memory rem-backfill --path ./memory --stage-short-term - `plugins.entries.voice-call.config.streaming.sttProvider` → `plugins.entries.voice-call.config.streaming.provider` - `plugins.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 може зберегти наявну відповідну іменовану/типову ціль) + - Для каналів з іменованими `accounts`, але залишковими значеннями каналу верхнього рівня для одного облікового запису, перемістіть ці значення з областю дії облікового запису в підвищений обліковий запис, вибраний для цього каналу (`accounts.default` для більшості каналів; Matrix може зберегти наявну відповідну іменовану/стандартну ціль) - `identity` → `agents.list[].identity` - `agent.*` → `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` - - видаліть `agents.defaults.llm`; використовуйте `models.providers..timeoutSeconds` для таймаутів повільних провайдерів/моделей + - видалити `agents.defaults.llm`; використовуйте `models.providers..timeoutSeconds` для тайм-аутів повільних провайдерів/моделей - `browser.ssrfPolicy.allowPrivateNetwork` → `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` - `browser.profiles.*.driver: "extension"` → `"existing-session"` - - видаліть `browser.relayBindHost` (застаріле налаштування ретранслятора розширення) - - застаріле `models.providers.*.api: "openai"` → `"openai-completions"` (запуск Gateway також пропускає провайдерів, чиє `api` задано як майбутнє або невідоме значення enum, замість відмови із закритим режимом) + - видалити `browser.relayBindHost` (застаріле налаштування ретрансляції розширення) + - застаріле `models.providers.*.api: "openai"` → `"openai-completions"` (запуск Gateway також пропускає провайдерів, у яких `api` задано як майбутнє або невідоме значення enum, замість аварійного завершення) - Попередження doctor також містять настанови щодо типового облікового запису для каналів із кількома обліковими записами: + Попередження doctor також містять рекомендації щодо стандартного облікового запису для багатоканальних облікових записів: - - Якщо налаштовано два або більше записів `channels..accounts` без `channels..defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис. - - Якщо `channels..defaultAccount` задано як невідомий ідентифікатор облікового запису, doctor попереджає про це й перелічує налаштовані ідентифікатори облікових записів. + - Якщо два або більше записів `channels..accounts` налаштовано без `channels..defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис. + - Якщо `channels..defaultAccount` задано як невідомий ID облікового запису, doctor попереджає і перелічує налаштовані ID облікових записів. - - Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. Це може примусово спрямувати моделі на неправильний API або обнулити витрати. Doctor попереджає, щоб ви могли видалити перевизначення й відновити маршрутизацію API та витрати для кожної моделі. + + Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. Це може примусово спрямувати моделі на неправильний API або занулити витрати. Doctor попереджає, щоб ви могли видалити перевизначення та відновити маршрутизацію API і витрати для кожної моделі. - - Якщо конфігурація браузера все ще вказує на видалений шлях розширення Chrome, doctor нормалізує її до поточної моделі приєднання Chrome MCP на локальному хості: + + Якщо ваша конфігурація браузера досі вказує на видалений шлях розширення Chrome, doctor нормалізує її до поточної моделі підключення Chrome MCP на локальному хості: - `browser.profiles.*.driver: "extension"` стає `"existing-session"` - `browser.relayBindHost` видаляється Doctor також перевіряє шлях Chrome MCP на локальному хості, коли ви використовуєте `defaultProfile: "user"` або налаштований профіль `existing-session`: - - перевіряє, чи встановлено Google Chrome на тому самому хості для типових профілів автоматичного підключення + - перевіряє, чи встановлено Google Chrome на тому самому хості для стандартних профілів автопідключення - перевіряє виявлену версію Chrome і попереджає, якщо вона нижча за Chrome 144 - - нагадує ввімкнути віддалене налагодження на сторінці інспекції браузера (наприклад, `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` або `edge://inspect/#remote-debugging`) + - нагадує увімкнути віддалене налагодження на сторінці інспектування браузера (наприклад, `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` або `edge://inspect/#remote-debugging`) - Doctor не може ввімкнути для вас налаштування на боці Chrome. Chrome MCP на локальному хості все ще потребує: + Doctor не може увімкнути це налаштування на стороні Chrome за вас. Chrome MCP на локальному хості все ще потребує: - - браузер на основі Chromium 144+ на хості gateway/node - - браузер, запущений локально - - віддалене налагодження, увімкнене в цьому браузері - - схвалення першого запиту згоди на приєднання в браузері + - браузер на базі Chromium 144+ на хості gateway/node + - браузер запущено локально + - у цьому браузері увімкнено віддалене налагодження + - схвалення першого запиту згоди на підключення в браузері - Готовність тут стосується лише передумов локального приєднання. Existing-session зберігає поточні обмеження маршрутів Chrome MCP; розширені маршрути на кшталт `responsebody`, експорту PDF, перехоплення завантажень і пакетних дій усе ще потребують керованого браузера або raw CDP профілю. + Готовність тут стосується лише передумов локального підключення. Existing-session зберігає поточні обмеження маршрутів Chrome MCP; розширені маршрути на кшталт `responsebody`, експорту PDF, перехоплення завантажень і пакетних дій усе ще потребують керованого браузера або сирого профілю CDP. - Ця перевірка **не** застосовується до Docker, sandbox, remote-browser або інших headless-потоків. Вони й надалі використовують raw CDP. + Ця перевірка **не** застосовується до Docker, sandbox, remote-browser або інших headless-потоків. Вони й надалі використовують сирий CDP. - - Коли налаштовано профіль OpenAI Codex OAuth, doctor перевіряє endpoint авторизації OpenAI, щоб переконатися, що локальний стек Node/OpenSSL TLS може перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприклад, `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, прострочений сертифікат або самопідписаний сертифікат), doctor виводить настанови з виправлення для конкретної платформи. На macOS з Homebrew Node виправлення зазвичай таке: `brew postinstall ca-certificates`. З `--deep` перевірка виконується, навіть якщо gateway справний. + + Коли налаштовано профіль OpenAI Codex OAuth, doctor перевіряє кінцеву точку авторизації OpenAI, щоб упевнитися, що локальний стек TLS Node/OpenSSL може перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприклад, `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, прострочений сертифікат або самопідписаний сертифікат), doctor виводить рекомендації з виправлення для конкретної платформи. На macOS з Homebrew Node виправлення зазвичай таке: `brew postinstall ca-certificates`. З `--deep` перевірка виконується навіть тоді, коли gateway справний. - - Якщо раніше ви додали застарілі налаштування транспорту OpenAI у `models.providers.openai-codex`, вони можуть затінити вбудований шлях провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить ці старі налаштування транспорту поруч із Codex OAuth, щоб ви могли видалити або переписати застаріле перевизначення транспорту й повернути вбудовану поведінку маршрутизації/резервування. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не спричиняють це попередження. + + Якщо раніше ви додали застарілі налаштування транспорту OpenAI у `models.providers.openai-codex`, вони можуть перекрити вбудований шлях провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить ці старі налаштування транспорту разом із Codex OAuth, щоб ви могли видалити або переписати застаріле перевизначення транспорту й повернути вбудовану поведінку маршрутизації/резервування. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не запускають це попередження. - - Коли увімкнено вбудований Codex Plugin, doctor також перевіряє, чи refs основної моделі `openai-codex/*` усе ще розв’язуються через типовий PI runner. Така комбінація чинна, коли ви хочете використовувати автентифікацію Codex OAuth/підписки через PI, але її легко сплутати з нативним app-server harness Codex. Doctor попереджає й указує на явну форму app-server: `openai/*` плюс `agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`. + + Коли ввімкнено вбудований Plugin Codex, doctor також перевіряє, чи посилання на основні моделі `openai-codex/*` досі розв’язуються через стандартний runner PI. Така комбінація коректна, коли ви хочете використовувати автентифікацію Codex OAuth/підписки через PI, але її легко сплутати з нативним app-server harness Codex. Doctor попереджає та вказує на явну форму app-server: `openai/*` плюс `agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`. - Doctor не виправляє це автоматично, бо обидва маршрути чинні: + Doctor не виправляє це автоматично, оскільки обидва маршрути коректні: - `openai-codex/*` + PI означає "використовувати автентифікацію Codex OAuth/підписки через звичайний runner OpenClaw." - - `openai/*` + `agentRuntime.id: "codex"` означає "запустити вбудований turn через нативний app-server Codex." + - `openai/*` + `agentRuntime.id: "codex"` означає "виконати вбудований turn через нативний app-server Codex." - `/codex ...` означає "керувати нативною розмовою Codex або прив’язати її з чату." - `/acp ...` або `runtime: "acp"` означає "використовувати зовнішній адаптер ACP/acpx." - Якщо з’являється попередження, виберіть потрібний маршрут і вручну відредагуйте конфігурацію. Залиште попередження без змін, коли PI Codex OAuth є навмисним. + Якщо з’являється попередження, виберіть задуманий маршрут і відредагуйте конфігурацію вручну. Залиште попередження як є, коли PI Codex OAuth використовується навмисно. - - Doctor може мігрувати старіші дискові структури до поточної структури: + + Doctor може мігрувати старіші структури на диску до поточної структури: - Сховище сеансів + transcripts: - з `~/.openclaw/sessions/` до `~/.openclaw/agents//sessions/` @@ -285,16 +286,16 @@ openclaw memory rem-backfill --path ./memory --stage-short-term - з `~/.openclaw/agent/` до `~/.openclaw/agents//agent/` - Стан автентифікації WhatsApp (Baileys): - із застарілих `~/.openclaw/credentials/*.json` (крім `oauth.json`) - - до `~/.openclaw/credentials/whatsapp//...` (типовий ідентифікатор облікового запису: `default`) + - до `~/.openclaw/credentials/whatsapp//...` (стандартний ID облікового запису: `default`) - Ці міграції виконуються за принципом best-effort та є ідемпотентними; doctor виводитиме попередження, коли залишає будь-які застарілі каталоги як резервні копії. Gateway/CLI також автоматично мігрує застарілі сеанси + каталог агента під час запуску, щоб історія/автентифікація/моделі потрапляли до шляху конкретного агента без ручного запуску doctor. Автентифікація WhatsApp навмисно мігрується лише через `openclaw doctor`. Нормалізація провайдера/карти провайдерів talk тепер порівнює за структурною рівністю, тому відмінності лише в порядку ключів більше не спричиняють повторні no-op зміни `doctor --fix`. + Ці міграції виконуються за принципом best-effort і є ідемпотентними; doctor виводитиме попередження, коли залишатиме будь-які застарілі папки як резервні копії. Gateway/CLI також автоматично мігрує застарілі сеанси + каталог агента під час запуску, щоб історія/автентифікація/моделі потрапляли в шлях для кожного агента без ручного запуску doctor. Автентифікацію WhatsApp навмисно мігрують лише через `openclaw doctor`. Нормалізація провайдера talk/мапи провайдерів тепер порівнює за структурною рівністю, тож відмінності лише в порядку ключів більше не запускають повторні no-op зміни `doctor --fix`. - - Doctor сканує всі встановлені маніфести Plugin на наявність застарілих ключів можливостей верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders`). Якщо їх знайдено, він пропонує перемістити їх до об’єкта `contracts` і перезаписати файл маніфесту на місці. Ця міграція ідемпотентна; якщо ключ `contracts` уже має ті самі значення, застарілий ключ видаляється без дублювання даних. + + Doctor сканує всі встановлені маніфести Plugin на наявність застарілих ключів можливостей верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders`). Коли їх знайдено, він пропонує перемістити їх в об’єкт `contracts` і переписати файл маніфесту на місці. Ця міграція ідемпотентна; якщо ключ `contracts` уже має такі самі значення, застарілий ключ видаляється без дублювання даних. - - Doctor також перевіряє сховище завдань cron (`~/.openclaw/cron/jobs.json` за замовчуванням або `cron.store`, якщо перевизначено) на старі форми завдань, які scheduler усе ще приймає для сумісності. + + Doctor також перевіряє сховище завдань cron (`~/.openclaw/cron/jobs.json` за замовчуванням або `cron.store`, якщо перевизначено) на старі форми завдань, які планувальник досі приймає для сумісності. Поточні очищення cron включають: @@ -302,201 +303,201 @@ openclaw memory rem-backfill --path ./memory --stage-short-term - `schedule.cron` → `schedule.expr` - поля payload верхнього рівня (`message`, `model`, `thinking`, ...) → `payload` - поля delivery верхнього рівня (`deliver`, `channel`, `to`, `provider`, ...) → `delivery` - - псевдоніми delivery `provider` у payload → явний `delivery.channel` - - прості застарілі fallback-завдання webhook `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook` + - псевдоніми delivery для `provider` у payload → явний `delivery.channel` + - прості застарілі резервні webhook-завдання `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook` - Doctor автоматично мігрує завдання `notify: true` лише тоді, коли може зробити це без зміни поведінки. Якщо завдання поєднує застарілий notify fallback з наявним режимом delivery, що не є webhook, doctor попереджає й залишає це завдання для ручного перегляду. + Doctor автоматично мігрує завдання `notify: true` лише тоді, коли може зробити це без зміни поведінки. Якщо завдання поєднує застарілий резервний notify з наявним режимом доставки не через webhook, doctor попереджає і залишає це завдання для ручного перегляду. - На Linux doctor також попереджає, коли crontab користувача все ще викликає застарілий `~/.openclaw/bin/ensure-whatsapp.sh`. Цей скрипт локального хоста не підтримується поточним OpenClaw і може записувати хибні повідомлення `Gateway inactive` до `~/.openclaw/logs/whatsapp-health.log`, коли cron не може дістатися до користувацької шини systemd. Видаліть застарілий запис crontab за допомогою `crontab -e`; використовуйте `openclaw channels status --probe`, `openclaw doctor` і `openclaw gateway status` для поточних перевірок справності. + На Linux doctor також попереджає, коли crontab користувача досі викликає застарілий `~/.openclaw/bin/ensure-whatsapp.sh`. Цей скрипт локального хоста не підтримується поточним OpenClaw і може записувати хибні повідомлення `Gateway inactive` до `~/.openclaw/logs/whatsapp-health.log`, коли cron не може звернутися до шини користувача systemd. Видаліть застарілий запис crontab за допомогою `crontab -e`; використовуйте `openclaw channels status --probe`, `openclaw doctor` і `openclaw gateway status` для поточних перевірок стану. - - Doctor сканує кожен каталог сеансів агента на наявність застарілих файлів блокування запису — файлів, що залишилися після аварійного завершення сеансу. Для кожного знайденого файла блокування він повідомляє: шлях, PID, чи PID досі активний, вік блокування та чи вважається воно застарілим (мертвий PID або старше за 30 хвилин). У режимі `--fix` / `--repair` він автоматично видаляє застарілі файли блокування; інакше друкує примітку та вказує повторно запустити з `--fix`. + + Doctor сканує кожен каталог сеансів агентів на наявність застарілих файлів блокування запису — файлів, що лишилися після аварійного завершення сеансу. Для кожного знайденого файла блокування він повідомляє: шлях, PID, чи PID досі активний, вік блокування та чи вважається воно застарілим (мертвий PID або старше за 30 хвилин). У режимі `--fix` / `--repair` він автоматично видаляє застарілі файли блокування; інакше друкує примітку та вказує повторно запустити з `--fix`. - Doctor сканує JSONL-файли сеансів агента на наявність дубльованої форми гілки, створеної помилкою переписування транскрипту промпта 2026.4.24: покинутий хід користувача з внутрішнім runtime-контекстом OpenClaw плюс активний суміжний елемент із тим самим видимим промптом користувача. У режимі `--fix` / `--repair` doctor створює резервну копію кожного зачепленого файла поруч з оригіналом і переписує транскрипт на активну гілку, щоб історія Gateway і читачі пам’яті більше не бачили дубльовані ходи. + Doctor сканує JSONL-файли сеансів агентів на наявність дубльованої форми гілки, створеної помилкою переписування транскрипту промпта 2026.4.24: покинутий хід користувача з внутрішнім runtime-контекстом OpenClaw плюс активний сусідній елемент із тим самим видимим промптом користувача. У режимі `--fix` / `--repair` Doctor створює резервну копію кожного ураженого файла поруч з оригіналом і переписує транскрипт до активної гілки, щоб історія gateway і зчитувачі памʼяті більше не бачили дубльованих ходів. - Каталог стану — це операційний стовбур системи. Якщо він зникне, ви втратите сеанси, облікові дані, журнали та конфігурацію (якщо у вас немає резервних копій деінде). + Каталог стану — це операційний мозковий стовбур. Якщо він зникне, ви втратите сеанси, облікові дані, журнали й конфігурацію (якщо не маєте резервних копій деінде). Doctor перевіряє: - - **Каталог стану відсутній**: попереджає про катастрофічну втрату стану, пропонує повторно створити каталог і нагадує, що не може відновити відсутні дані. - - **Дозволи каталогу стану**: перевіряє можливість запису; пропонує виправити дозволи (і виводить підказку `chown`, коли виявлено невідповідність власника/групи). - - **Синхронізований із хмарою каталог стану macOS**: попереджає, коли стан розташовано в iCloud Drive (`~/Library/Mobile Documents/com~apple~CloudDocs/...`) або `~/Library/CloudStorage/...`, бо шляхи з синхронізацією можуть спричиняти повільніший I/O і перегони блокування/синхронізації. - - **Каталог стану Linux на SD або eMMC**: попереджає, коли стан розташовано на джерелі монтування `mmcblk*`, бо випадковий I/O на SD або eMMC може бути повільнішим і швидше зношувати носій під час записів сеансів та облікових даних. - - **Каталоги сеансів відсутні**: `sessions/` і каталог сховища сеансів потрібні для збереження історії та уникнення аварій `ENOENT`. - - **Невідповідність транскрипту**: попереджає, коли в нещодавніх записах сеансів відсутні файли транскриптів. - - **Основний сеанс "1-line JSONL"**: позначає випадок, коли основний транскрипт має лише один рядок (історія не накопичується). - - **Кілька каталогів стану**: попереджає, коли кілька папок `~/.openclaw` існують у різних домашніх каталогах або коли `OPENCLAW_STATE_DIR` вказує в інше місце (історія може розділитися між інсталяціями). - - **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, doctor нагадує запустити його на віддаленому хості (стан зберігається там). - - **Дозволи файла конфігурації**: попереджає, якщо `~/.openclaw/openclaw.json` доступний для читання групі/всім, і пропонує посилити дозволи до `600`. + - **Відсутній каталог стану**: попереджає про катастрофічну втрату стану, пропонує повторно створити каталог і нагадує, що не може відновити відсутні дані. + - **Дозволи каталогу стану**: перевіряє доступність для запису; пропонує відновити дозволи (і виводить підказку `chown`, коли виявлено невідповідність власника/групи). + - **Синхронізований із хмарою каталог стану на macOS**: попереджає, коли стан розміщується в iCloud Drive (`~/Library/Mobile Documents/com~apple~CloudDocs/...`) або `~/Library/CloudStorage/...`, бо шляхи з синхронізацією можуть спричиняти повільніше I/O та гонки блокування/синхронізації. + - **Каталог стану Linux на SD або eMMC**: попереджає, коли стан розміщується на джерелі монтування `mmcblk*`, бо випадкове I/O на SD або eMMC може бути повільнішим і швидше зношувати носій під час записів сеансів та облікових даних. + - **Відсутні каталоги сеансів**: `sessions/` і каталог сховища сеансів потрібні для збереження історії та уникнення аварій `ENOENT`. + - **Невідповідність транскрипту**: попереджає, коли в нещодавніх записах сеансів бракує файлів транскриптів. + - **Основний сеанс "1-line JSONL"**: позначає, коли основний транскрипт має лише один рядок (історія не накопичується). + - **Кілька каталогів стану**: попереджає, коли в різних домашніх каталогах існує кілька папок `~/.openclaw` або коли `OPENCLAW_STATE_DIR` вказує в інше місце (історія може розділитися між інсталяціями). + - **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, Doctor нагадує запустити його на віддаленому хості (стан зберігається там). + - **Дозволи файла конфігурації**: попереджає, якщо `~/.openclaw/openclaw.json` доступний для читання групі/всім, і пропонує обмежити до `600`. - - Doctor перевіряє OAuth-профілі в сховищі автентифікації, попереджає, коли термін дії токенів завершується або вже завершився, і може безпечно оновити їх. Якщо OAuth/token-профіль Anthropic застарів, він пропонує API-ключ Anthropic або шлях setup-token Anthropic. Запити на оновлення з’являються лише під час інтерактивного запуску (TTY); `--non-interactive` пропускає спроби оновлення. + + Doctor перевіряє OAuth-профілі в сховищі автентифікації, попереджає, коли токени невдовзі завершаться або вже завершилися, і може безпечно оновити їх. Якщо профіль Anthropic OAuth/токена застарів, він пропонує ключ API Anthropic або шлях із setup-токеном Anthropic. Запити на оновлення зʼявляються лише під час інтерактивного запуску (TTY); `--non-interactive` пропускає спроби оновлення. - Коли оновлення OAuth остаточно не вдається (наприклад, `refresh_token_reused`, `invalid_grant` або провайдер повідомляє, що потрібно ввійти знову), doctor повідомляє, що потрібна повторна автентифікація, і друкує точну команду `openclaw models auth login --provider ...`, яку треба виконати. + Коли оновлення OAuth остаточно не вдається (наприклад, `refresh_token_reused`, `invalid_grant` або провайдер просить увійти знову), Doctor повідомляє, що потрібна повторна автентифікація, і друкує точну команду `openclaw models auth login --provider ...` для запуску. Doctor також повідомляє про профілі автентифікації, які тимчасово непридатні через: - - короткі періоди очікування (обмеження швидкості/тайм-аути/помилки автентифікації) - - триваліші вимкнення (помилки білінгу/кредитів) + - короткі періоди очікування (обмеження швидкості/тайм-аути/збої автентифікації) + - довші вимкнення (проблеми з оплатою/кредитами) - Якщо `hooks.gmail.model` задано, doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли воно не розв’язується або заборонене. + Якщо задано `hooks.gmail.model`, Doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли воно не розвʼязується або заборонене. - - Коли sandboxing увімкнено, doctor перевіряє Docker-образи та пропонує зібрати їх або перемкнутися на застарілі назви, якщо поточний образ відсутній. + + Коли sandboxing увімкнено, Doctor перевіряє образи Docker і пропонує зібрати їх або перемкнутися на legacy-назви, якщо поточного образу бракує. - - Doctor видаляє застарілий staging-стан залежностей Plugin, згенерований OpenClaw, у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги етапу встановлення, локальне сміття пакетів із попереднього коду відновлення залежностей bundled-plugin, а також осиротілі або відновлені керовані npm-копії bundled `@openclaw/*` Plugin, які можуть затіняти поточний bundled manifest. + + Doctor видаляє legacy проміжний стан залежностей Plugin, згенерований OpenClaw, у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги етапу інсталяції, пакетні залишки від попереднього коду відновлення залежностей bundled-plugin, а також осиротілі або відновлені керовані npm-копії bundled `@openclaw/*` plugins, які можуть затіняти поточний bundled-маніфест. - Doctor також може повторно встановлювати налаштовані завантажувані Plugin, коли конфігурація посилається на них, але локальний реєстр Plugin не може їх знайти. Для externalization bundled-plugin 2026.5.2 doctor автоматично встановлює завантажувані Plugin, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей прохід випуску лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; встановлення Plugin залишаються явною роботою doctor/install/update. + Doctor також може перевстановлювати налаштовані downloadable plugins, коли конфігурація посилається на них, але локальний реєстр Plugin не може їх знайти. Для зовнішнього винесення bundled-plugin 2026.5.2 Doctor автоматично встановлює downloadable plugins, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей release-прохід лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; інсталяції Plugin лишаються явною роботою doctor/install/update. - - Doctor виявляє застарілі сервіси Gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити сервіс OpenClaw із використанням поточного порту Gateway. Він також може сканувати додаткові схожі на Gateway сервіси й друкувати підказки з очищення. Сервіси OpenClaw Gateway з іменами профілів вважаються повноцінними й не позначаються як "extra." + + Doctor виявляє legacy-служби gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити службу OpenClaw із поточним портом gateway. Він також може сканувати додаткові gateway-подібні служби й друкувати підказки з очищення. Служби gateway OpenClaw з іменами профілів вважаються повноцінними й не позначаються як "зайві". - У Linux, якщо сервіс Gateway рівня користувача відсутній, але існує сервіс OpenClaw Gateway рівня системи, doctor не встановлює автоматично другий сервіс рівня користувача. Перевірте за допомогою `openclaw gateway status --deep` або `openclaw doctor --deep`, потім видаліть дублікат або задайте `OPENCLAW_SERVICE_REPAIR_POLICY=external`, коли життєвим циклом Gateway керує системний supervisor. + На Linux, якщо користувацька служба gateway відсутня, але існує системна служба gateway OpenClaw, Doctor не встановлює автоматично другу користувацьку службу. Перевірте за допомогою `openclaw gateway status --deep` або `openclaw doctor --deep`, потім видаліть дублікат або задайте `OPENCLAW_SERVICE_REPAIR_POLICY=external`, коли системний supervisor керує життєвим циклом gateway. - - Коли обліковий запис каналу Matrix має очікувану або придатну до дії міграцію застарілого стану, doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім виконує best-effort кроки міграції: міграцію застарілого стану Matrix і підготовку застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск продовжується. У режимі лише читання (`openclaw doctor` без `--fix`) цю перевірку повністю пропущено. + + Коли обліковий запис каналу Matrix має очікувану або придатну до дії legacy-міграцію стану, Doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім запускає best-effort кроки міграції: legacy-міграцію стану Matrix і підготовку legacy зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск триває. У режимі лише для читання (`openclaw doctor` без `--fix`) ця перевірка повністю пропускається. - Doctor тепер перевіряє стан сполучення пристроїв як частину звичайного проходу перевірки стану. + Doctor тепер перевіряє стан сполучення пристроїв як частину звичайного проходу перевірки справності. Що він повідомляє: - очікувані запити першого сполучення - очікувані підвищення ролі для вже сполучених пристроїв - очікувані підвищення scope для вже сполучених пристроїв - - відновлення невідповідності публічного ключа, коли id пристрою досі збігається, але ідентичність пристрою більше не збігається із затвердженим записом - - сполучені записи без активного токена для затвердженої ролі - - сполучені токени, чиї scope відхилилися за межі затвердженої бази сполучення - - локальні кешовані записи device-token для поточної машини, які передують ротації токена на боці Gateway або містять застарілі метадані scope + - відновлення невідповідності відкритого ключа, коли id пристрою досі збігається, але ідентичність пристрою більше не збігається із затвердженим записом + - сполучені записи, яким бракує активного токена для затвердженої ролі + - сполучені токени, scope яких виходять за межі затвердженого базового рівня сполучення + - локальні кешовані записи device-token для поточної машини, що передують ротації токена на боці gateway або містять застарілі метадані scope - Doctor не auto-approve запити сполучення і не auto-rotate токени пристроїв. Натомість він друкує точні наступні кроки: + Doctor не схвалює автоматично запити на сполучення і не ротує автоматично токени пристроїв. Натомість він друкує точні наступні кроки: - - переглянути очікувані запити за допомогою `openclaw devices list` - - затвердити точний запит за допомогою `openclaw devices approve ` - - ротувати свіжий токен за допомогою `openclaw devices rotate --device --role ` - - видалити й повторно затвердити застарілий запис за допомогою `openclaw devices remove ` + - перегляньте очікувані запити за допомогою `openclaw devices list` + - схваліть точний запит за допомогою `openclaw devices approve ` + - згенеруйте свіжий токен ротацією за допомогою `openclaw devices rotate --device --role ` + - видаліть і повторно схваліть застарілий запис за допомогою `openclaw devices remove ` - Це закриває поширену прогалину "already paired but still getting pairing required": doctor тепер відрізняє перше сполучення від очікуваних підвищень ролі/scope і від дрейфу застарілого токена/ідентичності пристрою. + Це закриває поширену прогалину "already paired but still getting pairing required": Doctor тепер відрізняє перше сполучення від очікуваних підвищень ролі/scope і від дрейфу застарілого токена/ідентичності пристрою. - Doctor видає попередження, коли провайдер відкритий для DM без allowlist або коли політику налаштовано небезпечним способом. + Doctor виводить попередження, коли провайдер відкритий для DM без allowlist або коли політику налаштовано небезпечним способом. - Якщо запущено як користувацький сервіс systemd, doctor забезпечує ввімкнення lingering, щоб Gateway залишався активним після виходу з системи. + Якщо запуск відбувається як користувацька служба systemd, Doctor гарантує, що lingering увімкнено, щоб gateway залишався активним після виходу з системи. - - Doctor друкує підсумок стану робочого простору для стандартного агента: + + Doctor друкує підсумок стану робочого простору для агента за замовчуванням: - - **Стан Skills**: підраховує придатні, з відсутніми вимогами та заблоковані allowlist skills. - - **Застарілі каталоги робочого простору**: попереджає, коли `~/openclaw` або інші застарілі каталоги робочого простору існують поруч із поточним робочим простором. - - **Стан Plugin**: підраховує ввімкнені/вимкнені/помилкові Plugin; перелічує ID Plugin для будь-яких помилок; повідомляє можливості bundle Plugin. - - **Попередження сумісності Plugin**: позначає Plugin, які мають проблеми сумісності з поточним runtime. - - **Діагностика Plugin**: показує будь-які попередження або помилки під час завантаження, видані реєстром Plugin. + - **Стан Skills**: рахує придатні, з відсутніми вимогами та заблоковані allowlist skills. + - **Legacy-каталоги робочого простору**: попереджає, коли `~/openclaw` або інші legacy-каталоги робочого простору існують поруч із поточним робочим простором. + - **Стан Plugin**: рахує ввімкнені/вимкнені/помилкові plugins; перелічує ID Plugin для будь-яких помилок; повідомляє про можливості bundle plugin. + - **Попередження сумісності Plugin**: позначає plugins, що мають проблеми сумісності з поточним runtime. + - **Діагностика Plugin**: показує будь-які попередження або помилки під час завантаження, виведені реєстром Plugin. - Doctor перевіряє, чи bootstrap-файли робочого простору (наприклад `AGENTS.md`, `CLAUDE.md` або інші інжектовані контекстні файли) близькі до налаштованого бюджету символів або перевищують його. Він повідомляє для кожного файла кількість необроблених і інжектованих символів, відсоток усічення, причину усічення (`max/file` або `max/total`) і загальну кількість інжектованих символів як частку загального бюджету. Коли файли усічено або вони близькі до ліміту, doctor друкує поради щодо налаштування `agents.defaults.bootstrapMaxChars` і `agents.defaults.bootstrapTotalMaxChars`. + Doctor перевіряє, чи bootstrap-файли робочого простору (наприклад, `AGENTS.md`, `CLAUDE.md` або інші інжектовані файли контексту) наближаються до налаштованого бюджету символів або перевищують його. Він повідомляє для кожного файла необроблену кількість символів проти інжектованої, відсоток обрізання, причину обрізання (`max/file` або `max/total`) і загальну кількість інжектованих символів як частку від загального бюджету. Коли файли обрізані або близькі до ліміту, Doctor друкує поради щодо налаштування `agents.defaults.bootstrapMaxChars` і `agents.defaults.bootstrapTotalMaxChars`. - - Коли `openclaw doctor --fix` видаляє відсутній Plugin каналу, він також видаляє dangling конфігурацію з областю каналу, яка посилалася на цей Plugin: записи `channels.`, цілі heartbeat, що називали канал, і перевизначення `agents.*.models["/*"]`. Це запобігає циклам завантаження Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway прив’язатися до нього. + + Коли `openclaw doctor --fix` видаляє відсутній channel plugin, він також видаляє завислу конфігурацію в області каналу, що посилалася на цей Plugin: записи `channels.`, цілі Heartbeat, які називали канал, і перевизначення `agents.*.models["/*"]`. Це запобігає boot loop Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway привʼязатися до нього. - - Doctor перевіряє, чи встановлено tab completion для поточної оболонки (zsh, bash, fish або PowerShell): + + Doctor перевіряє, чи встановлено автодоповнення вкладкою для поточного shell (zsh, bash, fish або PowerShell): - - Якщо профіль оболонки використовує повільний шаблон динамічного completion (`source <(openclaw completion ...)`), doctor оновлює його до швидшого варіанта з кешованим файлом. - - Якщо completion налаштовано в профілі, але кеш-файл відсутній, doctor автоматично регенерує кеш. - - Якщо completion взагалі не налаштовано, doctor пропонує встановити його (лише інтерактивний режим; пропущено з `--non-interactive`). + - Якщо профіль shell використовує повільний шаблон динамічного автодоповнення (`source <(openclaw completion ...)`), Doctor оновлює його до швидшого варіанта з кешованим файлом. + - Якщо автодоповнення налаштовано в профілі, але кеш-файл відсутній, Doctor автоматично регенерує кеш. + - Якщо автодоповнення взагалі не налаштовано, Doctor пропонує встановити його (лише інтерактивний режим; пропускається з `--non-interactive`). Запустіть `openclaw completion --write-state`, щоб регенерувати кеш вручну. - Doctor перевіряє готовність локальної автентифікації токена Gateway. + Doctor перевіряє готовність автентифікації токена локального gateway. - - Якщо режим токена потребує токен і джерело токена відсутнє, doctor пропонує згенерувати його. - - Якщо `gateway.auth.token` керується SecretRef, але недоступний, doctor попереджає і не перезаписує його plaintext-значенням. - - `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано токен SecretRef. + - Якщо режим токена потребує токена й джерела токена не існує, Doctor пропонує згенерувати його. + - Якщо `gateway.auth.token` керується SecretRef, але недоступний, Doctor попереджає і не перезаписує його відкритим текстом. + - `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано SecretRef токена. - - Деяким потокам відновлення потрібно перевіряти налаштовані облікові дані без послаблення fail-fast поведінки runtime. + + Деякі потоки відновлення мають перевіряти налаштовані облікові дані, не послаблюючи runtime-поведінку fail-fast. - - `openclaw doctor --fix` тепер використовує ту саму модель підсумку SecretRef лише для читання, що й команди status-family, для цільових відновлень конфігурації. - - Приклад: відновлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані облікові дані бота, коли вони доступні. - - Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, doctor повідомляє, що облікові дані налаштовані, але недоступні, і пропускає auto-resolution замість аварійного завершення або помилкового повідомлення, що токен відсутній. + - `openclaw doctor --fix` тепер використовує ту саму модель підсумку SecretRef лише для читання, що й команди родини status, для цільових відновлень конфігурації. + - Приклад: відновлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використовувати налаштовані облікові дані бота, коли вони доступні. + - Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, Doctor повідомляє, що облікові дані налаштовані, але недоступні, і пропускає автоматичне розвʼязання замість аварійного завершення або хибного повідомлення, що токен відсутній. - - Doctor виконує перевірку стану та пропонує перезапустити Gateway, коли він виглядає несправним. + + Doctor виконує перевірку справності та пропонує перезапустити Gateway, коли він виглядає несправним. - - Doctor перевіряє, чи налаштований постачальник embeddings для пошуку пам'яті готовий для агента за замовчуванням. Поведінка залежить від налаштованого бекенда та постачальника: + + Doctor перевіряє, чи налаштований постачальник embedding для пошуку в памʼяті готовий для агента за замовчуванням. Поведінка залежить від налаштованого бекенда й постачальника: - - **Бекенд QMD**: перевіряє, чи доступний і чи може запускатися бінарний файл `qmd`. Якщо ні, виводить поради щодо виправлення, зокрема npm-пакет і варіант ручного шляху до бінарного файлу. - - **Явний локальний постачальник**: перевіряє наявність локального файла моделі або розпізнаної віддаленої/доступної для завантаження URL-адреси моделі. Якщо вона відсутня, пропонує перейти на віддаленого постачальника. - - **Явний віддалений постачальник** (`openai`, `voyage` тощо): перевіряє, чи API-ключ присутній у середовищі або сховищі автентифікації. Якщо його немає, виводить практичні підказки щодо виправлення. + - **Бекенд QMD**: перевіряє, чи доступний і придатний до запуску бінарний файл `qmd`. Якщо ні, виводить рекомендації щодо виправлення, зокрема npm-пакет і варіант ручного шляху до бінарного файлу. + - **Явний локальний постачальник**: перевіряє наявність локального файла моделі або розпізнаної віддаленої/завантажуваної URL-адреси моделі. Якщо її бракує, пропонує перейти на віддаленого постачальника. + - **Явний віддалений постачальник** (`openai`, `voyage` тощо): перевіряє, чи є API-ключ у середовищі або сховищі автентифікації. Якщо його бракує, виводить практичні підказки для виправлення. - **Автоматичний постачальник**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого постачальника в порядку автоматичного вибору. - Коли доступний кешований результат перевірки Gateway (Gateway був справний на момент перевірки), doctor зіставляє його результат із конфігурацією, видимою для CLI, і зазначає будь-яку невідповідність. Doctor не запускає новий embedding ping у типовому шляху; використовуйте команду глибокого статусу пам'яті, коли потрібна жива перевірка постачальника. + Коли доступний кешований результат перевірки Gateway (Gateway був справним на момент перевірки), doctor зіставляє його результат із конфігурацією, видимою для CLI, і зазначає будь-яку невідповідність. Doctor не запускає новий embedding ping у типовому шляху; використовуйте команду глибокого статусу памʼяті, коли потрібна live-перевірка постачальника. - Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embeddings під час виконання. + Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embedding під час виконання. - - Якщо Gateway справний, doctor запускає перевірку статусу каналу й повідомляє попередження із запропонованими виправленнями. + + Якщо Gateway справний, doctor запускає перевірку стану каналу й повідомляє попередження із запропонованими виправленнями. - - Doctor перевіряє встановлену конфігурацію супервізора (launchd/systemd/schtasks) на відсутні або застарілі значення за замовчуванням (наприклад, залежності systemd від network-online і затримку перезапуску). Коли він знаходить невідповідність, рекомендує оновлення та може переписати файл служби/завдання до поточних значень за замовчуванням. + + Doctor перевіряє встановлену конфігурацію супервізора (launchd/systemd/schtasks) на відсутні або застарілі типові значення (наприклад, залежності systemd від network-online і затримку перезапуску). Коли знаходить невідповідність, він рекомендує оновлення й може переписати файл сервісу/завдання до поточних типових значень. Примітки: - `openclaw doctor` запитує підтвердження перед переписуванням конфігурації супервізора. - - `openclaw doctor --yes` приймає типові запити на відновлення. + - `openclaw doctor --yes` приймає типові запити на ремонт. - `openclaw doctor --repair` застосовує рекомендовані виправлення без запитів. - - `openclaw doctor --repair --force` перезаписує користувацькі конфігурації супервізора. - - `OPENCLAW_SERVICE_REPAIR_POLICY=external` залишає doctor у режимі лише читання для життєвого циклу служби Gateway. Він усе ще повідомляє стан служби та виконує відновлення, не пов'язані зі службою, але пропускає встановлення/запуск/перезапуск/бутстрап служби, переписування конфігурації супервізора та очищення застарілих служб, оскільки цим життєвим циклом керує зовнішній супервізор. - - На Linux doctor не переписує метадані команди/entrypoint, доки відповідний systemd-модуль Gateway активний. Він також ігнорує неактивні незастарілі додаткові Gateway-подібні модулі під час сканування дубльованих служб, щоб супутні файли служб не створювали зайвого шуму очищення. - - Якщо автентифікація за токеном вимагає токен і `gateway.auth.token` керується SecretRef, встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв'язані значення токена у відкритому тексті в метадані середовища служби супервізора. - - Doctor виявляє керовані `.env`/SecretRef значення середовища служби, які старіші встановлення LaunchAgent, systemd або Windows Scheduled Task вбудовували inline, і переписує метадані служби так, щоб ці значення завантажувалися з runtime-джерела, а не з визначення супервізора. - - Doctor виявляє, коли команда служби все ще фіксує старий `--port` після змін `gateway.port`, і переписує метадані служби на поточний порт. - - Якщо автентифікація за токеном вимагає токен, а налаштований токен SecretRef не розв'язується, doctor блокує шлях встановлення/відновлення з практичними порадами. - - Якщо одночасно налаштовані `gateway.auth.token` і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/відновлення, доки режим не буде задано явно. - - Для користувацьких systemd-модулів Linux перевірки розбіжності токена doctor тепер включають джерела `Environment=` і `EnvironmentFile=` під час порівняння метаданих автентифікації служби. - - Відновлення служб doctor відмовляються переписувати, зупиняти або перезапускати службу Gateway зі старішого бінарного файла OpenClaw, коли конфігурацію востаннє записала новіша версія. Див. [Усунення несправностей Gateway](/uk/gateway/troubleshooting#split-brain-installs-and-newer-config-guard). + - `openclaw doctor --repair --force` перезаписує власні конфігурації супервізора. + - `OPENCLAW_SERVICE_REPAIR_POLICY=external` залишає doctor у режимі лише читання для життєвого циклу сервісу Gateway. Він усе одно повідомляє про справність сервісу й виконує ремонти, не повʼязані із сервісом, але пропускає встановлення/запуск/перезапуск/bootstrap сервісу, переписування конфігурації супервізора й очищення застарілого сервісу, бо цим життєвим циклом керує зовнішній супервізор. + - У Linux doctor не переписує метадані команди/entrypoint, доки відповідний systemd-юніт Gateway активний. Він також ігнорує неактивні незастарілі додаткові Gateway-подібні юніти під час сканування дубльованих сервісів, щоб супутні файли сервісів не створювали зайвого шуму очищення. + - Якщо автентифікація токеном вимагає токен і `gateway.auth.token` керується SecretRef, встановлення/ремонт сервісу doctor перевіряє SecretRef, але не зберігає розвʼязані відкриті значення токена в метадані середовища сервісу супервізора. + - Doctor виявляє керовані `.env`/SecretRef-backed значення середовища сервісу, які старіші встановлення LaunchAgent, systemd або Windows Scheduled Task вбудували inline, і переписує метадані сервісу так, щоб ці значення завантажувалися з джерела runtime, а не з визначення супервізора. + - Doctor виявляє, коли команда сервісу досі фіксує старий `--port` після зміни `gateway.port`, і переписує метадані сервісу на поточний порт. + - Якщо автентифікація токеном вимагає токен, а налаштований SecretRef токена не розвʼязується, doctor блокує шлях встановлення/ремонту з практичними рекомендаціями. + - Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/ремонт, доки режим не буде задано явно. + - Для Linux user-systemd-юнітів перевірки дрейфу токена doctor тепер враховують джерела і `Environment=`, і `EnvironmentFile=` під час порівняння метаданих автентифікації сервісу. + - Ремонти сервісу doctor відмовляються переписувати, зупиняти або перезапускати сервіс Gateway зі старішого бінарного файла OpenClaw, коли конфігурацію востаннє записала новіша версія. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#split-brain-installs-and-newer-config-guard). - Ви завжди можете примусово виконати повне переписування через `openclaw gateway install --force`. - - Doctor перевіряє runtime служби (PID, останній статус виходу) і попереджає, коли служба встановлена, але фактично не працює. Він також перевіряє конфлікти портів на порту Gateway (типово `18789`) і повідомляє ймовірні причини (Gateway уже запущений, SSH-тунель). + + Doctor перевіряє runtime сервісу (PID, останній статус виходу) і попереджає, коли сервіс встановлено, але він фактично не працює. Він також перевіряє конфлікти портів на порту Gateway (типово `18789`) і повідомляє ймовірні причини (Gateway уже запущений, SSH-тунель). - Doctor попереджає, коли служба Gateway працює на Bun або за шляхом Node, керованим менеджером версій (`nvm`, `fnm`, `volta`, `asdf` тощо). Канали WhatsApp + Telegram потребують Node, а шляхи менеджера версій можуть ламатися після оновлень, оскільки служба не завантажує ініціалізацію вашої оболонки. Doctor пропонує мігрувати на системне встановлення Node, коли воно доступне (Homebrew/apt/choco). + Doctor попереджає, коли сервіс Gateway працює на Bun або шляху Node, керованому менеджером версій (`nvm`, `fnm`, `volta`, `asdf` тощо). Канали WhatsApp + Telegram потребують Node, а шляхи менеджерів версій можуть ламатися після оновлень, бо сервіс не завантажує ініціалізацію вашої оболонки. Doctor пропонує мігрувати на системне встановлення Node, коли воно доступне (Homebrew/apt/choco). - Нововстановлені або відновлені macOS LaunchAgents використовують канонічний системний PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) замість копіювання PATH інтерактивної оболонки, тому каталоги Volta, asdf, fnm, pnpm та інших менеджерів версій не змінюють, які дочірні процеси Node розв'язуються. Служби Linux і далі зберігають явні корені середовища (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) і стабільні користувацькі bin-каталоги, але припущені резервні каталоги менеджерів версій записуються до PATH служби лише тоді, коли ці каталоги існують на диску. + Ново встановлені або відремонтовані macOS LaunchAgents використовують канонічний системний PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) замість копіювання PATH інтерактивної оболонки, тому каталоги Volta, asdf, fnm, pnpm та інших менеджерів версій не змінюють, які дочірні процеси Node розвʼязуються. Linux-сервіси все ще зберігають явні корені середовища (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) і стабільні user-bin каталоги, але вгадані резервні каталоги менеджерів версій записуються в PATH сервісу лише тоді, коли ці каталоги існують на диску. - Doctor зберігає будь-які зміни конфігурації та ставить мітку метаданих майстра, щоб зафіксувати запуск doctor. + Doctor зберігає будь-які зміни конфігурації та проставляє метадані майстра, щоб зафіксувати запуск doctor. - - Doctor пропонує систему пам'яті робочої області, коли її немає, і виводить пораду щодо резервної копії, якщо робоча область ще не перебуває під git. + + Doctor пропонує систему памʼяті робочого простору, коли її бракує, і виводить пораду щодо резервної копії, якщо робочий простір ще не перебуває під git. - Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace) для повного посібника зі структури робочої області та резервного копіювання git (рекомендовано приватний GitHub або GitLab). + Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб отримати повний посібник зі структури робочого простору та резервного копіювання git (рекомендовано приватний GitHub або GitLab). -## Пов'язане +## Повʼязане - [Runbook Gateway](/uk/gateway) - [Усунення несправностей Gateway](/uk/gateway/troubleshooting)