From 207f0a435cc7ca3020450b78a52d9dec429b6dae Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 20 Apr 2026 06:10:09 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/gateway/doctor.md | 559 ++++++++++++++++++++------------------ 1 file changed, 288 insertions(+), 271 deletions(-) diff --git a/docs/uk/gateway/doctor.md b/docs/uk/gateway/doctor.md index d592495cb..deb364fb6 100644 --- a/docs/uk/gateway/doctor.md +++ b/docs/uk/gateway/doctor.md @@ -1,22 +1,21 @@ --- read_when: - - Додавання або змінення міграцій doctor + - Додавання або зміна міграцій doctor - Запровадження несумісних змін конфігурації -summary: 'Команда Doctor: перевірки стану, міграції конфігурації та кроки відновлення' +summary: 'Команда doctor: перевірки стану, міграції конфігурації та кроки відновлення' title: Doctor x-i18n: - generated_at: "2026-04-08T22:27:45Z" + generated_at: "2026-04-20T06:08:07Z" model: gpt-5.4 provider: openai - source_hash: 75d321bd1ad0e16c29f2382e249c51edfc3a8d33b55bdceea39e7dbcd4901fce + source_hash: 61a5e01a306058c49be6095f7c8082d779a55d63cf3b5f4c4096173943faf51b source_path: gateway/doctor.md workflow: 15 --- # Doctor -`openclaw doctor` — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілий -конфігураційний стан, перевіряє справність і надає практичні кроки для відновлення. +`openclaw doctor` — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілі конфігурації/стан, перевіряє стан системи та надає практичні кроки для відновлення. ## Швидкий старт @@ -24,19 +23,19 @@ x-i18n: openclaw doctor ``` -### Безголовий режим / автоматизація +### Headless / автоматизація ```bash openclaw doctor --yes ``` -Прийняти типові значення без запитів (зокрема кроки відновлення перезапуску/служб/sandbox, коли це застосовно). +Прийняти типові значення без запитів (зокрема кроки відновлення перезапуску/служб/sandbox, якщо застосовно). ```bash openclaw doctor --repair ``` -Застосувати рекомендовані виправлення без запитів (виправлення + перезапуски там, де це безпечно). +Застосувати рекомендовані виправлення без запитів (виправлення + перезапуски, де це безпечно). ```bash openclaw doctor --repair --force @@ -48,14 +47,14 @@ openclaw doctor --repair --force openclaw doctor --non-interactive ``` -Запуск без запитів і застосування лише безпечних міграцій (нормалізація конфігурації + перенесення стану на диску). Пропускає дії з перезапуском/службами/sandbox, які потребують підтвердження людини. -Міграції застарілого стану запускаються автоматично, якщо їх виявлено. +Запустити без запитів і застосувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії з перезапуском/службами/sandbox, які потребують підтвердження людини. +Міграції застарілого стану виконуються автоматично, якщо їх виявлено. ```bash openclaw doctor --deep ``` -Просканувати системні служби на наявність додаткових інсталяцій gateway (launchd/systemd/schtasks). +Сканувати системні служби на наявність додаткових інсталяцій gateway (`launchd/systemd/schtasks`). Якщо ви хочете переглянути зміни перед записом, спочатку відкрийте файл конфігурації: @@ -63,109 +62,101 @@ openclaw doctor --deep cat ~/.openclaw/openclaw.json ``` -## Що він робить (зведення) +## Що він робить (коротко) - Необов’язкове попереднє оновлення для git-інсталяцій (лише в інтерактивному режимі). - Перевірка актуальності протоколу UI (перебудовує Control UI, якщо схема протоколу новіша). -- Перевірка справності + запит на перезапуск. -- Підсумок стану Skills (доступні/відсутні/заблоковані) і стану плагінів. +- Перевірка стану + запит на перезапуск. +- Підсумок стану Skills (доступні/відсутні/заблоковані) і стану plugin. - Нормалізація конфігурації для застарілих значень. - Міграція конфігурації Talk із застарілих плоских полів `talk.*` у `talk.provider` + `talk.providers.`. -- Перевірки міграції browser для застарілих конфігурацій розширення Chrome та готовності Chrome MCP. -- Попередження про перевизначення постачальника OpenCode (`models.providers.opencode` / `models.providers.opencode-go`). -- Попередження про затінення Codex OAuth (`models.providers.openai-codex`). +- Перевірки міграції browser для застарілих конфігурацій розширення Chrome і готовності Chrome MCP. +- Попередження про перевизначення провайдера OpenCode (`models.providers.opencode` / `models.providers.opencode-go`). +- Попередження про затінення OAuth Codex (`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`). +- Міграція застарілого ключа контракту маніфесту plugin (`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 увімкнено. +- Перевірка прав доступу до файлу конфігурації (`chmod 600`) під час локального запуску. +- Стан автентифікації моделей: перевіряє строк дії OAuth, може оновлювати токени, строк дії яких спливає, і повідомляє про стани cooldown/disabled профілю автентифікації. +- Виявлення додаткового робочого каталогу (`~/openclaw`). +- Відновлення образу sandbox, коли sandboxing увімкнено. - Міграція застарілих служб і виявлення додаткових gateway. - Міграція застарілого стану каналу Matrix (у режимі `--fix` / `--repair`). -- Перевірки runtime gateway (службу встановлено, але вона не працює; кешована мітка launchd). -- Попередження про стан каналів (перевіряються з запущеного gateway). -- Аудит конфігурації supervisor (launchd/systemd/schtasks) з необов’язковим виправленням. -- Перевірки найкращих практик runtime gateway (Node проти Bun, шляхи менеджерів версій). -- Діагностика конфліктів портів gateway (типово `18789`). +- Перевірки середовища виконання gateway (службу встановлено, але не запущено; кешований label `launchd`). +- Попередження про стан каналів (зондуються із запущеного gateway). +- Аудит конфігурації supervisor (`launchd/systemd/schtasks`) з необов’язковим відновленням. +- Перевірки рекомендованих практик для середовища виконання gateway (Node vs Bun, шляхи менеджера версій). +- Діагностика конфліктів порту gateway (типово `18789`). - Попередження безпеки для відкритих політик DM. -- Перевірки автентифікації gateway для локального режиму токена (пропонує згенерувати токен, якщо джерела токена немає; не перезаписує конфігурації токенів SecretRef). -- Перевірка systemd linger у Linux. -- Перевірка розміру bootstrap-файлів workspace (попередження про обрізання/наближення до ліміту для контекстних файлів). -- Перевірка стану автодоповнення оболонки та автоматичне встановлення/оновлення. -- Перевірка готовності постачальника embedding для memory search (локальна модель, віддалений API key або двійковий файл QMD). -- Перевірки інсталяції з джерел (невідповідність workspace pnpm, відсутні ресурси UI, відсутній двійковий файл tsx). -- Записує оновлений конфіг + метадані майстра. +- Перевірки автентифікації gateway для режиму локального токена (пропонує згенерувати токен, якщо джерело токена відсутнє; не перезаписує конфігурації токенів SecretRef). +- Виявлення проблем із pairing пристроїв (очікувані перші запити на pairing, очікувані підвищення ролі/області дії, застарілий дрейф локального кешу токенів пристрою та дрейф автентифікації записів paired). +- Перевірка `systemd linger` на Linux. +- Перевірка розміру файлів bootstrap робочого простору (попередження про обрізання/наближення до ліміту для контекстних файлів). +- Перевірка стану shell completion та автоматичне встановлення/оновлення. +- Перевірка готовності провайдера embedding для пошуку в пам’яті (локальна модель, віддалений ключ API або бінарний файл QMD). +- Перевірки інсталяції з вихідного коду (невідповідність робочого простору pnpm, відсутні ресурси UI, відсутній бінарний файл tsx). +- Записує оновлену конфігурацію та метадані wizard. -## Backfill і reset у Dreams UI +## Заповнення Dreams UI і скидання Сцена Dreams у Control UI містить дії **Backfill**, **Reset** і **Clear Grounded** -для робочого процесу grounded dreaming. Ці дії використовують gateway-подібні -RPC-методи в стилі doctor, але вони **не** є частиною CLI -відновлення/міграції `openclaw doctor`. +для процесу grounded dreaming. Ці дії використовують RPC-методи в стилі doctor для gateway, але вони **не** є частиною 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. +- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному робочому просторі, виконує grounded REM-прохід щоденника та записує оборотні записи backfill у `DREAMS.md`. +- **Reset** видаляє з `DREAMS.md` лише ті записи щоденника backfill, що мають відповідну позначку. +- **Clear Grounded** видаляє лише staged grounded-only короткострокові записи, що походять з історичного відтворення і ще не накопичили live recall або щоденну підтримку. -Чого вони **не** роблять самі по собі: +Чого вони самі по собі **не** роблять: - вони не редагують `MEMORY.md` - вони не запускають повні міграції doctor -- вони не переміщують автоматично grounded candidates у live short-term - promotion store, якщо ви явно спочатку не запустили staged CLI path +- вони не переводять автоматично grounded candidates до живого сховища підвищення short-term, якщо ви явно не запустили staged CLI-шлях раніше -Якщо ви хочете, щоб grounded historical replay впливав на звичайний deep promotion -lane, натомість використайте CLI-потік: +Якщо ви хочете, щоб grounded historical replay впливав на звичайний шлях deep promotion, використовуйте натомість CLI-процес: ```bash openclaw memory rem-backfill --path ./memory --stage-short-term ``` -Це додає grounded durable candidates до short-term dreaming store, залишаючи -`DREAMS.md` як поверхню для перегляду. +Це переводить grounded durable candidates до сховища short-term dreaming, зберігаючи `DREAMS.md` як поверхню перегляду. -## Детальна поведінка та обґрунтування +## Докладна поведінка та обґрунтування ### 0) Необов’язкове оновлення (git-інсталяції) -Якщо це git checkout і doctor запущено в інтерактивному режимі, він пропонує +Якщо це git checkout і doctor запущено в інтерактивному режимі, він запропонує оновитися (fetch/rebase/build) перед запуском doctor. ### 1) Нормалізація конфігурації -Якщо конфігурація містить застарілі форми значень (наприклад `messages.ackReaction` -без перевизначення для конкретного каналу), doctor нормалізує їх до поточної +Якщо конфігурація містить застарілі форми значень (наприклад, `messages.ackReaction` +без channel-specific перевизначення), doctor нормалізує їх до поточної схеми. Це також включає застарілі плоскі поля Talk. Поточна публічна конфігурація Talk — -це `talk.provider` + `talk.providers.`. Doctor переписує старі форми -`talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / -`talk.apiKey` у мапу постачальників. +це `talk.provider` + `talk.providers.`. Doctor переписує старі +форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / +`talk.apiKey` у мапу провайдерів. ### 2) Міграції застарілих ключів конфігурації -Коли конфігурація містить застарілі ключі, інші команди відмовляються працювати -і просять вас запустити `openclaw doctor`. +Коли конфігурація містить застарілі ключі, інші команди відмовляються запускатися і просять +вас виконати `openclaw doctor`. Doctor виконає таке: - Пояснить, які застарілі ключі було знайдено. - Покажe міграцію, яку він застосував. -- Перезапише `~/.openclaw/openclaw.json` оновленою схемою. +- Перезапише `~/.openclaw/openclaw.json` з оновленою схемою. -Gateway також автоматично запускає міграції doctor під час запуску, коли виявляє -застарілий формат конфігурації, тож застарілі конфіги виправляються без ручного втручання. -Міграції сховища cron виконуються через `openclaw doctor --fix`. +Gateway також автоматично запускає міграції doctor під час старту, коли виявляє +застарілий формат конфігурації, тож застарілі конфігурації виправляються без ручного втручання. +Міграції сховища Cron обробляються командою `openclaw doctor --fix`. Поточні міграції: @@ -174,7 +165,7 @@ Gateway також автоматично запускає міграції doct - `routing.groupChat.historyLimit` → `messages.groupChat.historyLimit` - `routing.groupChat.mentionPatterns` → `messages.groupChat.mentionPatterns` - `routing.queue` → `messages.queue` -- `routing.bindings` → верхньорівневий `bindings` +- `routing.bindings` → `bindings` верхнього рівня - `routing.agents`/`routing.defaultAgentId` → `agents.list` + `agents.list[].default` - застарілі `talk.voiceId`/`talk.voiceAliases`/`talk.modelId`/`talk.outputFormat`/`talk.apiKey` → `talk.provider` + `talk.providers.` - `routing.agentToAgent` → `tools.agentToAgent` @@ -189,364 +180,390 @@ Gateway також автоматично запускає міграції doct - `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 може зберегти наявну відповідну ціль named/default) - `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` - `browser.ssrfPolicy.allowPrivateNetwork` → `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` - `browser.profiles.*.driver: "extension"` → `"existing-session"` -- видалити `browser.relayBindHost` (застаріле налаштування relay для extension) +- видалити `browser.relayBindHost` (застарілий параметр relay для extension) -Попередження doctor також містять рекомендації щодо типового облікового запису для багатокористувацьких каналів: +Попередження doctor також містять рекомендації щодо default account для багатокористувацьких каналів: -- Якщо налаштовано два або більше записів `channels..accounts` без `channels..defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис. -- Якщо `channels..defaultAccount` задано як невідомий ID облікового запису, doctor попереджає та перелічує налаштовані ID облікових записів. +- Якщо налаштовано два або більше записи `channels..accounts` без `channels..defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис. +- Якщо `channels..defaultAccount` встановлено на невідомий ідентифікатор облікового запису, doctor попереджає та перелічує налаштовані ідентифікатори облікових записів. -### 2b) Перевизначення постачальника OpenCode +### 2b) Перевизначення провайдера OpenCode Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. -Через це моделі можуть використовувати неправильний API або мати нульову вартість. Doctor попереджає, щоб ви -могли прибрати перевизначення й відновити маршрутизацію API та вартість для кожної моделі. +Це може змусити моделі використовувати неправильний API або обнулити вартість. Doctor попереджає про це, щоб ви +могли видалити перевизначення і відновити маршрутизацію API та вартість для кожної моделі. ### 2c) Міграція browser і готовність Chrome MCP -Якщо конфігурація browser досі вказує на видалений шлях розширення Chrome, doctor -нормалізує її до поточної host-local моделі підключення Chrome MCP: +Якщо ваша конфігурація browser усе ще вказує на видалений шлях розширення Chrome, doctor +нормалізує її до поточної моделі підключення host-local Chrome MCP: - `browser.profiles.*.driver: "extension"` стає `"existing-session"` - `browser.relayBindHost` видаляється -Doctor також перевіряє host-local шлях Chrome MCP, коли ви використовуєте `defaultProfile: +Doctor також перевіряє шлях host-local Chrome MCP, коли ви використовуєте `defaultProfile: "user"` або налаштований профіль `existing-session`: - перевіряє, чи встановлено Google Chrome на тому самому хості для типових - профілів автопідключення -- перевіряє виявлену версію Chrome й попереджає, якщо вона нижча за Chrome 144 -- нагадує увімкнути remote debugging на сторінці inspect у браузері (наприклад + профілів з автоматичним підключенням +- перевіряє виявлену версію Chrome і попереджає, якщо вона нижча за Chrome 144 +- нагадує увімкнути remote debugging на сторінці inspect браузера (наприклад `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging`, або `edge://inspect/#remote-debugging`) -Doctor не може ввімкнути це налаштування в Chrome за вас. Host-local Chrome MCP -досі потребує такого: +Doctor не може увімкнути цей параметр на стороні Chrome за вас. Host-local Chrome MCP +досі потребує: -- браузер на базі Chromium 144+ на хості gateway/node -- браузер запущений локально -- у цьому браузері увімкнено remote debugging -- схвалено перший запит на згоду підключення в браузері +- браузер на основі Chromium 144+ на хості gateway/node +- локально запущений браузер +- увімкнений remote debugging у цьому браузері +- підтвердження першого запиту на attach consent у браузері -Готовність тут стосується лише локальних передумов для підключення. Existing-session зберігає -поточні обмеження маршруту Chrome MCP; розширені маршрути, як-от `responsebody`, експорт PDF, -перехоплення завантажень і пакетні дії, як і раніше, потребують керованого -browser або raw CDP profile. +Готовність тут стосується лише передумов локального attach. Existing-session зберігає +поточні обмеження маршрутів Chrome MCP; розширені маршрути, як-от `responsebody`, експорт PDF, +перехоплення завантажень та пакетні дії, як і раніше, потребують керованого +browser або сирого профілю CDP. -Ця перевірка **не** застосовується до Docker, sandbox, remote-browser або інших -headless-потоків. Вони й надалі використовують raw CDP. +Ця перевірка **не** застосовується до Docker, sandbox, remote-browser чи інших +headless-сценаріїв. Вони й надалі використовують сирий CDP. ### 2d) TLS-передумови OAuth -Коли налаштовано профіль OpenAI Codex OAuth, doctor перевіряє endpoint -авторизації OpenAI, щоб упевнитися, що локальний стек TLS Node/OpenSSL може -перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприклад +Коли налаштовано профіль 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 справний. +doctor виводить специфічні для платформи рекомендації щодо виправлення. На macOS з Node від Homebrew +виправленням зазвичай є `brew postinstall ca-certificates`. З `--deep` перевірка виконується +навіть якщо gateway у справному стані. -### 2c) Перевизначення постачальника Codex OAuth +### 2c) Перевизначення провайдера Codex OAuth -Якщо ви раніше додали застарілі налаштування транспорту OpenAI у -`models.providers.openai-codex`, вони можуть затінити вбудований шлях -постачальника Codex OAuth, який новіші випуски використовують автоматично. Doctor -попереджає, коли бачить ці старі транспортні налаштування поруч із Codex OAuth, щоб ви -могли прибрати або переписати застаріле транспортне перевизначення і повернути -вбудовану маршрутизацію/резервну поведінку. Користувацькі проксі та перевизначення лише для заголовків -і далі підтримуються та не викликають цього попередження. +Якщо ви раніше додали застарілі параметри транспорту OpenAI у +`models.providers.openai-codex`, вони можуть затіняти вбудований шлях +провайдера Codex OAuth, який новіші релізи використовують автоматично. Doctor попереджає, коли бачить +ці старі параметри транспорту разом із Codex OAuth, щоб ви могли видалити або переписати +застаріле перевизначення транспорту й повернути вбудовану поведінку +маршрутизації/резервного перемикання. Користувацькі проксі та перевизначення лише заголовків, як і раніше, підтримуються й не +викликають цього попередження. -### 3) Міграції застарілого стану (розмітка диска) +### 3) Міграції застарілого стану (структура на диску) -Doctor може мігрувати старіші розмітки на диску до поточної структури: +Doctor може мігрувати старіші структури на диску до поточної структури: -- Сховище сесій + transcripts: +- Сховище sessions + transcripts: - з `~/.openclaw/sessions/` до `~/.openclaw/agents//sessions/` - Каталог agent: - з `~/.openclaw/agent/` до `~/.openclaw/agents//agent/` - Стан автентифікації WhatsApp (Baileys): - - із застарілого `~/.openclaw/credentials/*.json` (крім `oauth.json`) - - до `~/.openclaw/credentials/whatsapp//...` (типовий ID облікового запису: `default`) + - із застарілих `~/.openclaw/credentials/*.json` (крім `oauth.json`) + - до `~/.openclaw/credentials/whatsapp//...` (типовий id облікового запису: `default`) -Ці міграції є найкращими можливими та ідемпотентними; doctor виведе попередження, якщо -залишить якісь застарілі каталоги як резервні копії. Gateway/CLI також автоматично мігрує -застарілі sessions + каталог agent під час запуску, тож history/auth/models потрапляють у -шлях для конкретного агента без ручного запуску doctor. Автентифікація WhatsApp навмисно -мігрується лише через `openclaw doctor`. Нормалізація provider/provider-map Talk тепер +Ці міграції виконуються за принципом best-effort та є ідемпотентними; doctor виводить попередження, коли +залишає будь-які застарілі каталоги як резервні копії. Gateway/CLI також автоматично мігрує +застарілі sessions + каталог agent під час запуску, тож історія/автентифікація/моделі потрапляють у шлях +для конкретного agent без ручного запуску doctor. Автентифікація WhatsApp навмисно +мігрується лише через `openclaw doctor`. Нормалізація Talk provider/provider-map тепер порівнює за структурною рівністю, тож відмінності лише в порядку ключів більше не викликають -повторних порожніх змін `doctor --fix`. +повторних порожніх змін у `doctor --fix`. -### 3a) Міграції застарілих маніфестів плагінів +### 3a) Міграції застарілих маніфестів plugin -Doctor сканує всі встановлені маніфести плагінів на наявність застарілих ключів -можливостей верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`, +Doctor сканує всі встановлені маніфести plugin на наявність застарілих capability-ключів +верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, -`webSearchProviders`). Якщо їх знайдено, він пропонує перемістити їх до об’єкта `contracts` -і переписати файл маніфесту на місці. Ця міграція ідемпотентна; +`webSearchProviders`). Якщо їх знайдено, він пропонує перемістити їх в об’єкт `contracts` +і переписати файл маніфесту на місці. Ця міграція є ідемпотентною; якщо ключ `contracts` уже містить ті самі значення, застарілий ключ видаляється без дублювання даних. -### 3b) Міграції застарілого сховища cron +### 3b) Міграції застарілого сховища Cron -Doctor також перевіряє сховище cron job (`~/.openclaw/cron/jobs.json` типово, -або `cron.store`, якщо перевизначено) на старі форми завдань, які scheduler досі -приймає для сумісності. +Doctor також перевіряє сховище завдань Cron (`~/.openclaw/cron/jobs.json` типово, +або `cron.store`, якщо його перевизначено) на наявність старих форм завдань, які планувальник +досі приймає для сумісності. -Поточні очищення cron включають: +Поточні очищення Cron включають: - `jobId` → `id` - `schedule.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` +- псевдоніми доставки payload `provider` → явний `delivery.channel` +- прості застарілі резервні Webhook-завдання `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook` -Doctor автоматично мігрує завдання `notify: true`, лише якщо може зробити це без -зміни поведінки. Якщо завдання поєднує застарілий резервний notify з наявним -режимом delivery, відмінним від webhook, doctor попереджає й залишає це завдання -для ручної перевірки. +Doctor автоматично мігрує завдання `notify: true`, лише коли може зробити це +без зміни поведінки. Якщо завдання поєднує застарілий резервний notify із вже наявним +режимом доставки не через webhook, doctor попереджає і залишає це завдання для ручної перевірки. ### 3c) Очищення блокувань сесій -Doctor сканує каталог сесій кожного агента на наявність застарілих файлів блокування запису — -файлів, що залишилися після аварійного завершення сесії. Для кожного знайденого файла блокування він повідомляє: -шлях, PID, чи PID іще активний, вік блокування та чи +Doctor сканує каталог сесій кожного agent на наявність застарілих файлів блокування запису — +файлів, що залишилися після аварійного завершення сесії. Для кожного знайденого файлу блокування він повідомляє: +шлях, PID, чи активний цей PID, вік блокування та чи вважається воно застарілим (мертвий PID або старше 30 хвилин). У режимі `--fix` / `--repair` -він видаляє застарілі файли блокування автоматично; в іншому разі лише друкує примітку та -просить вас повторно запустити команду з `--fix`. +він автоматично видаляє застарілі файли блокування; інакше лише виводить примітку та +пропонує перезапустити з `--fix`. -### 4) Перевірки цілісності стану (збереження сесій, маршрутизація та безпека) +### 4) Перевірки цілісності стану (збереження сесії, маршрутизація та безпека) Каталог стану — це операційний стовбур системи. Якщо він зникне, ви втратите -sessions, credentials, logs і config (якщо у вас немає резервних копій деінде). +sessions, credentials, logs і config (якщо тільки в вас немає резервних копій в іншому місці). Doctor перевіряє: -- **Каталог state відсутній**: попереджає про катастрофічну втрату стану, пропонує відтворити +- **Відсутній каталог стану**: попереджає про катастрофічну втрату стану, пропонує повторно створити каталог і нагадує, що не може відновити відсутні дані. -- **Права доступу до каталогу state**: перевіряє можливість запису; пропонує виправити права +- **Права доступу до каталогу стану**: перевіряє можливість запису; пропонує відновити права доступу (і виводить підказку `chown`, якщо виявлено невідповідність власника/групи). -- **Каталог state у macOS із хмарною синхронізацією**: попереджає, коли state розміщено в iCloud Drive +- **Каталог стану macOS, синхронізований із хмарою**: попереджає, коли стан розміщено в 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 має лише один + `~/Library/CloudStorage/...`, оскільки шляхи із синхронізацією можуть спричиняти повільніший I/O + і перегони блокування/синхронізації. +- **Каталог стану Linux на SD або eMMC**: попереджає, коли стан розміщено на джерелі монтування `mmcblk*`, + оскільки випадковий I/O на SD або eMMC може бути повільнішим і швидше зношувати носій + під час запису sessions і credentials. +- **Відсутні каталоги sessions**: `sessions/` і каталог сховища сесій + потрібні для збереження історії та уникнення аварій `ENOENT`. +- **Невідповідність transcript**: попереджає, коли в недавніх записах сесії відсутні + файли transcript. +- **Основна сесія “1-line JSONL”**: позначає випадки, коли основний transcript містить лише один рядок (історія не накопичується). -- **Кілька каталогів state**: попереджає, коли існує кілька каталогів `~/.openclaw` у різних - домашніх каталогах або коли `OPENCLAW_STATE_DIR` вказує на інше місце (історія може - розділитися між інсталяціями). -- **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, doctor нагадує вам запускати - його на віддаленому хості (state зберігається там). -- **Права доступу до файла конфігурації**: попереджає, якщо `~/.openclaw/openclaw.json` - доступний для читання групою/усіма й пропонує обмежити доступ до `600`. +- **Кілька каталогів стану**: попереджає, коли існує кілька каталогів `~/.openclaw` у різних + домашніх каталогах або коли `OPENCLAW_STATE_DIR` вказує в інше місце (історія може + розділятися між інсталяціями). +- **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, doctor нагадує виконати + його на віддаленому хості (там розміщується стан). +- **Права доступу до файлу конфігурації**: попереджає, якщо `~/.openclaw/openclaw.json` + доступний для читання групі/усім, і пропонує обмежити права до `600`. ### 5) Стан автентифікації моделей (строк дії OAuth) -Doctor перевіряє профілі OAuth у сховищі автентифікації, попереджає, коли строк дії токенів -добігає кінця або вже вичерпано, і може оновлювати їх, коли це безпечно. Якщо профіль -Anthropic OAuth/token застарів, він пропонує Anthropic API key або -шлях із setup-token Anthropic. -Запити на оновлення з’являються лише під час інтерактивного запуску (TTY); `--non-interactive` +Doctor перевіряє профілі OAuth у сховищі автентифікації, попереджає, коли токени +спливають/уже спливли, і може оновлювати їх, коли це безпечно. Якщо профіль +OAuth/token Anthropic застарів, він пропонує ключ Anthropic API або +шлях Anthropic setup-token. +Запити на оновлення з’являються лише в інтерактивному режимі (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 також повідомляє про профілі автентифікації, які тимчасово непридатні через: +Doctor також повідомляє про профілі автентифікації, які тимчасово непридатні до використання через: -- короткі cooldown-и (rate limits/timeouts/auth failures) -- триваліші вимкнення (помилки billing/credit) +- короткі періоди cooldown (обмеження швидкості/тайм-аути/помилки автентифікації) +- довші вимкнення (помилки білінгу/кредитів) ### 6) Перевірка моделі hooks -Якщо задано `hooks.gmail.model`, doctor перевіряє посилання на модель у -каталозі та allowlist і попереджає, якщо її не вдасться знайти або вона заборонена. +Якщо встановлено `hooks.gmail.model`, doctor перевіряє посилання на модель щодо +каталогу та allowlist і попереджає, якщо воно не буде дозволене або не може бути знайдене. ### 7) Відновлення образу sandbox -Коли sandbox увімкнено, doctor перевіряє Docker-образи та пропонує зібрати їх або +Коли sandboxing увімкнено, doctor перевіряє образи Docker і пропонує зібрати їх або перейти на застарілі назви, якщо поточний образ відсутній. -### 7b) Runtime-залежності вбудованих плагінів +### 7b) Runtime-залежності bundled plugin -Doctor перевіряє, чи присутні runtime-залежності вбудованих плагінів (наприклад -пакети runtime плагіна Discord) у корені інсталяції OpenClaw. -Якщо якихось бракує, doctor повідомляє про пакети та встановлює їх у режимі +Doctor перевіряє, що runtime-залежності bundled plugin (наприклад, +runtime-пакети plugin Discord) присутні в корені інсталяції OpenClaw. +Якщо чогось бракує, doctor повідомляє про пакети й установлює їх у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. ### 8) Міграції служб gateway і підказки з очищення -Doctor виявляє застарілі служби gateway (launchd/systemd/schtasks) і -пропонує видалити їх та встановити службу OpenClaw з поточним портом gateway. -Він також може сканувати наявність додаткових схожих на gateway служб і виводити підказки з очищення. -Іменовані профілем служби gateway OpenClaw вважаються повноцінними й не -позначаються як “додаткові”. +Doctor виявляє застарілі служби gateway (`launchd/systemd/schtasks`) і +пропонує видалити їх та встановити службу OpenClaw з використанням поточного +порту gateway. Він також може сканувати наявність додаткових служб, схожих на gateway, і виводити підказки з очищення. +Іменовані за профілем служби OpenClaw gateway вважаються повноцінними й не +позначаються як "зайві". ### 8b) Стартова міграція Matrix -Коли обліковий запис каналу Matrix має очікувану або застосовну міграцію застарілого стану, +Коли обліковий запис каналу Matrix має очікувану або придатну до виконання міграцію застарілого стану, doctor (у режимі `--fix` / `--repair`) створює знімок до міграції, а потім -запускає кроки міграції в режимі best-effort: міграцію застарілого стану Matrix і підготовку -застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, і -запуск триває. У режимі лише читання (`openclaw doctor` без `--fix`) цю перевірку -повністю пропущено. +виконує кроки міграції за принципом best-effort: міграцію застарілого стану Matrix +та підготовку застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а +запуск триває. У режимі лише читання (`openclaw doctor` без `--fix`) ця перевірка +повністю пропускається. + +### 8c) Pairing пристроїв і дрейф автентифікації + +Doctor тепер перевіряє стан pairing пристроїв як частину звичайної перевірки стану. + +Що він повідомляє: + +- очікувані запити на pairing уперше +- очікувані підвищення ролей для вже paired пристроїв +- очікувані підвищення scope для вже paired пристроїв +- відновлення невідповідностей публічного ключа, коли id пристрою все ще збігається, але + ідентичність пристрою більше не збігається зі схваленим записом +- paired-записи без активного токена для схваленої ролі +- paired-токени, чиї scope відхиляються від затвердженої базової лінії pairing +- локальні кешовані записи токенів пристрою для поточної машини, які передують + ротації токена на боці gateway або містять застарілі метадані scope + +Doctor не схвалює запити на pairing автоматично й не виконує автоматичну ротацію токенів пристрою. Натомість +він виводить точні наступні кроки: + +- перегляньте очікувані запити за допомогою `openclaw devices list` +- схваліть точний запит за допомогою `openclaw devices approve ` +- виконайте ротацію нового токена за допомогою `openclaw devices rotate --device --role ` +- видаліть застарілий запис і повторно схваліть його за допомогою `openclaw devices remove ` + +Це закриває типову прогалину "вже paired, але все ще отримує pairing required": +doctor тепер розрізняє pairing уперше, очікувані підвищення ролі/scope +та дрейф застарілого токена/ідентичності пристрою. ### 9) Попередження безпеки -Doctor виводить попередження, коли постачальник відкритий для DM без allowlist, -або коли політику налаштовано в небезпечний спосіб. +Doctor виводить попередження, коли провайдер відкритий для DM без allowlist, або +коли політику налаштовано небезпечним чином. -### 10) systemd linger (Linux) +### 10) `systemd linger` (Linux) -Якщо використовується користувацька служба systemd, doctor перевіряє, що linger увімкнено, щоб -gateway продовжував працювати після виходу із системи. +Якщо запуск відбувається як користувацька служба systemd, doctor перевіряє, що linger увімкнено, щоб +gateway залишався активним після виходу з системи. -### 11) Стан workspace (Skills, плагіни та застарілі каталоги) +### 11) Стан робочого простору (skills, plugins і застарілі каталоги) -Doctor друкує зведення про стан workspace для типового агента: +Doctor виводить підсумок стану робочого простору для типового agent: -- **Стан Skills**: підраховує доступні, ті що мають відсутні вимоги, і заблоковані allowlist навички. -- **Застарілі каталоги workspace**: попереджає, коли `~/openclaw` або інші застарілі каталоги workspace - існують поруч із поточним workspace. -- **Стан плагінів**: підраховує завантажені/вимкнені/помилкові плагіни; перелічує ID плагінів для будь-яких - помилок; повідомляє про можливості bundle-плагінів. -- **Попередження про сумісність плагінів**: позначає плагіни, що мають проблеми сумісності з +- **Стан Skills**: кількість доступних skills, skills із відсутніми вимогами та skills, заблокованих allowlist. +- **Застарілі каталоги робочого простору**: попереджає, коли `~/openclaw` або інші застарілі каталоги робочого простору + існують поруч із поточним робочим простором. +- **Стан plugin**: кількість завантажених/вимкнених/plugin з помилками; перелічує ID plugin для всіх + помилок; повідомляє про можливості bundled plugin. +- **Попередження сумісності plugin**: позначає plugins, які мають проблеми сумісності з поточним runtime. -- **Діагностика плагінів**: виводить усі попередження або помилки під час завантаження, які видав - реєстр плагінів. +- **Діагностика plugin**: показує всі попередження або помилки під час завантаження, які видав + реєстр plugin. ### 11b) Розмір bootstrap-файлів -Doctor перевіряє, чи bootstrap-файли workspace (наприклад `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`. -### 11c) Автодоповнення оболонки +### 11c) Shell completion Doctor перевіряє, чи встановлено tab completion для поточної оболонки (zsh, bash, fish або PowerShell): -- Якщо профіль оболонки використовує повільний шаблон динамічного completion +- Якщо профіль оболонки використовує повільний динамічний шаблон completion (`source <(openclaw completion ...)`), doctor оновлює його до швидшого - варіанта з кешованим файлом. -- Якщо completion налаштовано у профілі, але файл кешу відсутній, - doctor автоматично регенерує кеш. + варіанту з кешованим файлом. +- Якщо completion налаштовано в профілі, але файл кешу відсутній, + doctor автоматично перебудовує кеш. - Якщо completion взагалі не налаштовано, doctor пропонує встановити його (лише в інтерактивному режимі; пропускається з `--non-interactive`). -Щоб вручну регенерувати кеш, виконайте `openclaw completion --write-state`. +Виконайте `openclaw completion --write-state`, щоб вручну перебудувати кеш. ### 12) Перевірки автентифікації gateway (локальний токен) Doctor перевіряє готовність автентифікації локального токена gateway. -- Якщо для режиму токена потрібен токен і джерела токена немає, doctor пропонує згенерувати його. -- Якщо `gateway.auth.token` керується через SecretRef, але недоступний, doctor попереджає й не перезаписує його звичайним текстом. -- `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано SecretRef для токена. +- Якщо режим токена потребує токен, а джерело токена відсутнє, doctor пропонує згенерувати його. +- Якщо `gateway.auth.token` керується через SecretRef, але недоступний, doctor попереджає і не перезаписує його відкритим текстом. +- `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано токен SecretRef. -### 12b) Виправлення в режимі лише читання з урахуванням SecretRef +### 12b) Відновлення в режимі лише читання з урахуванням SecretRef -Деяким потокам відновлення потрібно перевіряти налаштовані credentials без послаблення runtime-поведінки fail-fast. +Деякі сценарії відновлення потребують перевірки налаштованих credentials без послаблення поведінки runtime fail-fast. -- `openclaw doctor --fix` тепер використовує ту саму модель зведення SecretRef лише для читання, що й команди сімейства status, для цільових виправлень конфігурації. -- Приклад: виправлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані облікові дані бота, якщо вони доступні. -- Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, doctor повідомляє, що credential налаштовано, але він недоступний, і пропускає автоматичне визначення замість аварійного завершення або хибного повідомлення про відсутній токен. +- `openclaw doctor --fix` тепер використовує ту саму модель підсумку SecretRef лише для читання, що й команди сімейства status, для цільового відновлення конфігурації. +- Приклад: відновлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані credentials бота, якщо вони доступні. +- Якщо токен Telegram-бота налаштовано через SecretRef, але він недоступний у поточному шляху команди, doctor повідомляє, що credential налаштовано, але недоступний, і пропускає автоматичне визначення замість аварійного завершення або помилкового повідомлення, що токен відсутній. -### 13) Перевірка справності gateway + перезапуск +### 13) Перевірка стану gateway + перезапуск -Doctor запускає перевірку справності й пропонує перезапустити gateway, якщо той -виглядає несправним. +Doctor виконує перевірку стану і пропонує перезапустити gateway, якщо він виглядає +несправним. -### 13b) Готовність memory search +### 13b) Готовність пошуку в пам’яті -Doctor перевіряє, чи готовий налаштований постачальник embedding для memory search -для типового агента. Поведінка залежить від налаштованого backend і provider: +Doctor перевіряє, чи готовий налаштований провайдер embedding для пошуку в пам’яті +для типового agent. Поведінка залежить від налаштованого бекенда та провайдера: -- **QMD backend**: перевіряє, чи доступний і чи може запускатися двійковий файл `qmd`. - Якщо ні — виводить рекомендації з виправлення, включно з npm-пакетом і варіантом ручного шляху до двійкового файла. -- **Явний локальний provider**: перевіряє наявність локального файла моделі або розпізнаваної - віддаленої/доступної для завантаження URL моделі. Якщо його немає, пропонує перейти на віддаленого provider. -- **Явний віддалений provider** (`openai`, `voyage` тощо): перевіряє, чи є API key - у середовищі або сховищі автентифікації. Якщо бракує, виводить практичні підказки для виправлення. -- **Auto provider**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого - provider у порядку auto-selection. +- **Бекенд QMD**: перевіряє, чи бінарний файл `qmd` доступний і може запускатися. + Якщо ні, виводить підказки щодо виправлення, зокрема npm-пакет і варіант ручного шляху до бінарного файла. +- **Явно заданий локальний провайдер**: перевіряє наявність локального файла моделі або розпізнаного + URL віддаленої/завантажуваної моделі. Якщо відсутній, пропонує перейти на віддаленого провайдера. +- **Явно заданий віддалений провайдер** (`openai`, `voyage` тощо): перевіряє, чи присутній API-ключ + у середовищі або сховищі автентифікації. Якщо ключ відсутній, виводить практичні підказки щодо виправлення. +- **Автоматичний провайдер**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого + провайдера в порядку автоматичного вибору. -Коли доступний результат перевірки gateway (gateway був справний на момент -перевірки), doctor зіставляє цей результат із конфігурацією, видимою CLI, і зазначає +Коли результат probe gateway доступний (gateway був справний на момент +перевірки), doctor звіряє цей результат із конфігурацією, видимою CLI, і зазначає будь-які розбіжності. -Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embedding у runtime. +Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embedding під час виконання. ### 14) Попередження про стан каналів -Якщо gateway справний, doctor виконує перевірку стану каналів і повідомляє -про попередження з рекомендованими виправленнями. +Якщо gateway справний, doctor запускає probe стану каналів і повідомляє +попередження разом із запропонованими виправленнями. ### 15) Аудит конфігурації supervisor + відновлення -Doctor перевіряє встановлену конфігурацію supervisor (launchd/systemd/schtasks) на -відсутність або застарілі типові значення (наприклад залежності systemd від network-online і -затримку перезапуску). Коли виявляється невідповідність, він рекомендує оновлення та може +Doctor перевіряє встановлену конфігурацію supervisor (`launchd/systemd/schtasks`) на +відсутні або застарілі типові значення (наприклад, залежності `network-online` у systemd та +затримку перезапуску). Коли він знаходить невідповідність, то рекомендує оновлення і може переписати файл служби/завдання відповідно до поточних типових значень. Примітки: - `openclaw doctor` запитує підтвердження перед переписуванням конфігурації supervisor. -- `openclaw doctor --yes` приймає типові запити на виправлення. +- `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=` під час порівняння метаданих автентифікації служби. +- Якщо автентифікація токеном потребує токен, а `gateway.auth.token` керується через SecretRef, встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв’язані plaintext-значення токена в метаданих середовища служби supervisor. +- Якщо автентифікація токеном потребує токен, а налаштований токен SecretRef не розв’язано, doctor блокує шлях встановлення/відновлення і надає практичні вказівки. +- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/відновлення, доки режим не буде явно встановлено. +- Для користувацьких модулів user-systemd у Linux перевірки дрейфу токена в doctor тепер охоплюють і джерела `Environment=`, і `EnvironmentFile=` під час порівняння метаданих автентифікації служби. - Ви завжди можете примусово виконати повний перезапис через `openclaw gateway install --force`. -### 16) Діагностика runtime gateway + портів +### 16) Діагностика середовища виконання gateway + порту -Doctor перевіряє runtime служби (PID, останній статус виходу) і попереджає, коли -службу встановлено, але вона фактично не працює. Він також перевіряє конфлікти -портів gateway (типово `18789`) і повідомляє про ймовірні причини (gateway уже -працює, SSH tunnel). +Doctor перевіряє середовище виконання служби (PID, останній статус виходу) і попереджає, якщо +службу встановлено, але вона фактично не запущена. Він також перевіряє конфлікти портів +на порту gateway (типово `18789`) і повідомляє ймовірні причини (gateway уже запущено, +SSH-тунель). -### 17) Найкращі практики runtime gateway +### 17) Рекомендовані практики для середовища виконання gateway -Doctor попереджає, коли служба gateway працює на Bun або через шлях Node, керований менеджером версій -(`nvm`, `fnm`, `volta`, `asdf` тощо). Канали WhatsApp і Telegram потребують Node, -а шляхи менеджерів версій можуть ламатися після оновлень, оскільки служба не -завантажує ініціалізацію вашої оболонки. Doctor пропонує перейти на системну інсталяцію Node, коли +Doctor попереджає, коли служба gateway працює на Bun або на шляху Node, керованому менеджером версій +(`nvm`, `fnm`, `volta`, `asdf` тощо). Канали WhatsApp + Telegram потребують Node, +а шляхи менеджера версій можуть ламатися після оновлень, оскільки служба не +завантажує ініціалізацію вашої оболонки. Doctor пропонує перейти на системну інсталяцію Node, якщо вона доступна (Homebrew/apt/choco). -### 18) Запис конфігурації + метадані майстра +### 18) Запис конфігурації + метадані wizard -Doctor зберігає всі зміни конфігурації та проставляє метадані майстра, щоб зафіксувати +Doctor зберігає будь-які зміни конфігурації та проставляє метадані wizard, щоб зафіксувати запуск doctor. -### 19) Поради щодо workspace (резервні копії + memory system) +### 19) Поради щодо робочого простору (резервне копіювання + система пам’яті) -Doctor пропонує memory system для workspace, якщо її немає, і виводить пораду щодо резервного копіювання, -якщо workspace ще не перебуває під git. +Doctor пропонує систему пам’яті робочого простору, якщо вона відсутня, і виводить пораду щодо резервного копіювання, +якщо робочий простір ще не перебуває під git. -Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб ознайомитися з повним посібником зі -структури workspace та резервного копіювання через git (рекомендовано приватний GitHub або GitLab). +Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб ознайомитися з повним посібником щодо +структури робочого простору та резервного копіювання через git (рекомендовано приватний GitHub або GitLab).