chore(i18n): refresh uk translations
This commit is contained in:
parent
2ae1f25788
commit
3d5bc53603
@ -5,18 +5,18 @@ read_when:
|
||||
summary: 'Команда Doctor: перевірки стану, міграції конфігурації та кроки відновлення'
|
||||
title: Doctor
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T02:10:27Z"
|
||||
generated_at: "2026-04-08T16:06:15Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3761a222d9db7088f78215575fa84e5896794ad701aa716e8bf9039a4424dca6
|
||||
source_hash: a2f701f5c22cd5afc6b62cf2d916f183155ee55b5cebf03ef0d1272b94121cf7
|
||||
source_path: gateway/doctor.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Doctor
|
||||
|
||||
`openclaw doctor` — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілий
|
||||
конфігураційний файл/стан, перевіряє працездатність і надає практичні кроки для відновлення.
|
||||
`openclaw doctor` — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілі
|
||||
конфігурації/стан, перевіряє стан системи та надає практичні кроки для відновлення.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
@ -24,13 +24,13 @@ x-i18n:
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
### Безголовий режим / автоматизація
|
||||
### Без інтерфейсу / автоматизація
|
||||
|
||||
```bash
|
||||
openclaw doctor --yes
|
||||
```
|
||||
|
||||
Прийняти типові значення без запитів (зокрема кроки відновлення перезапуску/служб/пісочниці, де це застосовно).
|
||||
Прийняти типові значення без запитів (зокрема кроки відновлення перезапуску/сервісів/пісочниці, якщо застосовно).
|
||||
|
||||
```bash
|
||||
openclaw doctor --repair
|
||||
@ -42,20 +42,20 @@ openclaw doctor --repair
|
||||
openclaw doctor --repair --force
|
||||
```
|
||||
|
||||
Застосувати також агресивні виправлення (перезаписує користувацькі конфігурації supervisor).
|
||||
Застосувати також агресивні виправлення (перезаписує власні конфігурації supervisor).
|
||||
|
||||
```bash
|
||||
openclaw doctor --non-interactive
|
||||
```
|
||||
|
||||
Запустити без запитів і застосувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії з перезапуском/службами/пісочницею, які потребують підтвердження людини.
|
||||
Запустити без запитів і застосовувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії з перезапуском/сервісами/пісочницею, які потребують підтвердження людини.
|
||||
Міграції застарілого стану запускаються автоматично, якщо їх виявлено.
|
||||
|
||||
```bash
|
||||
openclaw doctor --deep
|
||||
```
|
||||
|
||||
Просканувати системні служби на наявність додаткових встановлень gateway (launchd/systemd/schtasks).
|
||||
Сканувати системні сервіси на наявність додаткових інсталяцій gateway (launchd/systemd/schtasks).
|
||||
|
||||
Якщо ви хочете переглянути зміни перед записом, спочатку відкрийте файл конфігурації:
|
||||
|
||||
@ -63,49 +63,49 @@ openclaw doctor --deep
|
||||
cat ~/.openclaw/openclaw.json
|
||||
```
|
||||
|
||||
## Що він робить (стисло)
|
||||
## Що це робить (коротко)
|
||||
|
||||
- Необов’язкове попереднє оновлення для git-встановлень (лише в інтерактивному режимі).
|
||||
- Перевірка актуальності протоколу UI (перезбирає Control UI, якщо схема протоколу новіша).
|
||||
- Перевірка працездатності + запит на перезапуск.
|
||||
- Зведення стану Skills (доступні/відсутні/заблоковані) і стану plugin.
|
||||
- Необов’язкове попереднє оновлення для git-інсталяцій (лише в інтерактивному режимі).
|
||||
- Перевірка актуальності UI-протоколу (перебудовує Control UI, якщо схема протоколу новіша).
|
||||
- Перевірка стану + запит на перезапуск.
|
||||
- Підсумок стану Skills (доступні/відсутні/заблоковані) і стану plugin.
|
||||
- Нормалізація конфігурації для застарілих значень.
|
||||
- Міграція конфігурації Talk зі старих плоских полів `talk.*` у `talk.provider` + `talk.providers.<provider>`.
|
||||
- Перевірки міграції браузера для застарілих конфігурацій розширення Chrome і готовності Chrome MCP.
|
||||
- Міграція конфігурації Talk із застарілих плоских полів `talk.*` до `talk.provider` + `talk.providers.<provider>`.
|
||||
- Перевірки міграції браузера для застарілих конфігурацій розширення Chrome та готовності Chrome MCP.
|
||||
- Попередження про перевизначення провайдера OpenCode (`models.providers.opencode` / `models.providers.opencode-go`).
|
||||
- Попередження про затінення Codex OAuth (`models.providers.openai-codex`).
|
||||
- Перевірка вимог TLS для профілів OpenAI Codex OAuth.
|
||||
- Міграція застарілого стану на диску (сесії/каталог агента/автентифікація WhatsApp).
|
||||
- Міграція застарілих ключів контракту маніфесту plugin (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
|
||||
- Перевірка TLS-передумов OAuth для профілів OpenAI Codex OAuth.
|
||||
- Міграція застарілого стану на диску (sessions/каталог agent/автентифікація WhatsApp).
|
||||
- Міграція застарілих ключів контрактів у маніфестах plugin (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
|
||||
- Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля delivery/payload верхнього рівня, `provider` у payload, прості резервні webhook jobs з `notify: true`).
|
||||
- Перевірка файлів блокування сесій і очищення застарілих блокувань.
|
||||
- Перевірки цілісності стану та прав доступу (sessions, transcripts, каталог стану).
|
||||
- Перевірки цілісності стану та прав доступу (sessions, transcripts, каталог state).
|
||||
- Перевірки прав доступу до файлу конфігурації (`chmod 600`) під час локального запуску.
|
||||
- Стан автентифікації моделей: перевіряє строк дії OAuth, може оновлювати токени, що скоро спливають, і повідомляє про стани cooldown/disabled профілів автентифікації.
|
||||
- Стан автентифікації моделей: перевіряє строк дії OAuth, може оновити токени, строк дії яких спливає, і повідомляє про cooldown/disabled стани профілю автентифікації.
|
||||
- Виявлення додаткового каталогу workspace (`~/openclaw`).
|
||||
- Відновлення образу sandbox, якщо sandboxing увімкнено.
|
||||
- Міграція застарілих служб і виявлення додаткових gateway.
|
||||
- Відновлення образу пісочниці, коли пісочницю увімкнено.
|
||||
- Міграція застарілих сервісів і виявлення додаткових gateway.
|
||||
- Міграція застарілого стану каналу Matrix (у режимі `--fix` / `--repair`).
|
||||
- Перевірки середовища виконання gateway (службу встановлено, але вона не запущена; кешована мітка launchd).
|
||||
- Попередження про стан каналів (отримані з запущеного gateway).
|
||||
- Перевірки runtime gateway (сервіс встановлено, але не запущено; кешована мітка launchd).
|
||||
- Попередження про стан каналів (отримані через пробу із запущеного gateway).
|
||||
- Аудит конфігурації supervisor (launchd/systemd/schtasks) з необов’язковим відновленням.
|
||||
- Перевірки рекомендованих практик середовища виконання gateway (Node проти Bun, шляхи менеджерів версій).
|
||||
- Діагностика конфліктів портів gateway (типово `18789`).
|
||||
- Перевірки рекомендацій для runtime gateway (Node проти Bun, шляхи менеджерів версій).
|
||||
- Діагностика конфліктів порту gateway (типово `18789`).
|
||||
- Попередження безпеки для відкритих політик DM.
|
||||
- Перевірки автентифікації gateway для локального режиму токена (пропонує згенерувати токен, коли джерело токена відсутнє; не перезаписує конфігурації токенів SecretRef).
|
||||
- Перевірка systemd linger у Linux.
|
||||
- Перевірки автентифікації gateway для локального режиму токена (пропонує згенерувати токен, якщо джерело токена відсутнє; не перезаписує конфігурації токена через SecretRef).
|
||||
- Перевірка `linger` systemd у Linux.
|
||||
- Перевірка розміру bootstrap-файлів workspace (попередження про обрізання/наближення до ліміту для контекстних файлів).
|
||||
- Перевірка стану shell completion і автоматичне встановлення/оновлення.
|
||||
- Перевірка готовності провайдера embedding для пошуку в пам’яті (локальна модель, віддалений API key або бінарний файл QMD).
|
||||
- Перевірки встановлення з вихідного коду (невідповідність pnpm workspace, відсутні UI assets, відсутній бінарний файл tsx).
|
||||
- Перевірка стану автодоповнення shell та автоматичне встановлення/оновлення.
|
||||
- Перевірка готовності провайдера embedding для memory search (локальна модель, віддалений API-ключ або бінарник QMD).
|
||||
- Перевірки source-інсталяції (невідповідність pnpm workspace, відсутні UI-ресурси, відсутній бінарник tsx).
|
||||
- Записує оновлену конфігурацію + метадані майстра.
|
||||
|
||||
## Докладна поведінка та обґрунтування
|
||||
## Детальна поведінка та обґрунтування
|
||||
|
||||
### 0) Необов’язкове оновлення (git-встановлення)
|
||||
### 0) Необов’язкове оновлення (git-інсталяції)
|
||||
|
||||
Якщо це git checkout і doctor запущено в інтерактивному режимі, він пропонує
|
||||
оновити систему (fetch/rebase/build) перед запуском doctor.
|
||||
оновитися (fetch/rebase/build) перед запуском doctor.
|
||||
|
||||
### 1) Нормалізація конфігурації
|
||||
|
||||
@ -113,24 +113,25 @@ cat ~/.openclaw/openclaw.json
|
||||
без перевизначення для конкретного каналу), doctor нормалізує їх до поточної
|
||||
схеми.
|
||||
|
||||
Сюди також входять застарілі плоскі поля Talk. Поточна публічна конфігурація Talk —
|
||||
це `talk.provider` + `talk.providers.<provider>`. Doctor переписує старі
|
||||
форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` /
|
||||
Це також охоплює застарілі плоскі поля Talk. Поточна публічна конфігурація Talk —
|
||||
це `talk.provider` + `talk.providers.<provider>`. 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 jobs обробляються через `openclaw doctor --fix`.
|
||||
|
||||
Поточні міграції:
|
||||
@ -140,7 +141,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.<provider>`
|
||||
- `routing.agentToAgent` → `tools.agentToAgent`
|
||||
@ -155,7 +156,7 @@ 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 може зберегти наявну відповідну іменовану/типову ціль)
|
||||
- `identity` → `agents.list[].identity`
|
||||
- `agent.*` → `agents.defaults` + `tools.*` (tools/elevated/exec/sandbox/subagents)
|
||||
- `agent.model`/`allowedModels`/`modelAliases`/`modelFallbacks`/`imageModelFallbacks`
|
||||
@ -164,16 +165,16 @@ Gateway також автоматично запускає міграції doct
|
||||
- `browser.profiles.*.driver: "extension"` → `"existing-session"`
|
||||
- видалити `browser.relayBindHost` (застаріле налаштування relay для розширення)
|
||||
|
||||
Попередження doctor також містять рекомендації щодо типового облікового запису для багатокористувацьких каналів:
|
||||
Попередження doctor також містять рекомендації щодо типового акаунта для багатoакаунтних каналів:
|
||||
|
||||
- Якщо налаштовано два або більше записів `channels.<channel>.accounts` без `channels.<channel>.defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис.
|
||||
- Якщо `channels.<channel>.defaultAccount` установлено на невідомий ID облікового запису, doctor попереджає та перелічує налаштовані ID облікових записів.
|
||||
- Якщо налаштовано два або більше записів `channels.<channel>.accounts` без `channels.<channel>.defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний акаунт.
|
||||
- Якщо `channels.<channel>.defaultAccount` вказано на невідомий ID акаунта, doctor попереджає і перелічує налаштовані ID акаунтів.
|
||||
|
||||
### 2b) Перевизначення провайдера OpenCode
|
||||
|
||||
Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`,
|
||||
це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`.
|
||||
Це може спрямувати моделі на неправильний API або обнулити вартість. Doctor попереджає, щоб ви
|
||||
Це може примусово спрямувати моделі на неправильний API або обнулити вартість. Doctor попереджає, щоб ви
|
||||
могли прибрати перевизначення й відновити маршрутизацію API та вартість для кожної моделі.
|
||||
|
||||
### 2c) Міграція браузера та готовність Chrome MCP
|
||||
@ -188,83 +189,83 @@ Doctor також перевіряє шлях host-local Chrome MCP, коли в
|
||||
"user"` або налаштований профіль `existing-session`:
|
||||
|
||||
- перевіряє, чи встановлено Google Chrome на тому самому хості для типових
|
||||
профілів автопідключення
|
||||
профілів автоматичного підключення
|
||||
- перевіряє виявлену версію Chrome і попереджає, якщо вона нижча за Chrome 144
|
||||
- нагадує ввімкнути remote debugging на сторінці inspect браузера (наприклад
|
||||
`chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging`
|
||||
- нагадує увімкнути 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 у цьому браузері
|
||||
- підтвердження першого запиту на дозвіл attach у браузері
|
||||
- підтвердження першого запиту на дозвіл підключення в браузері
|
||||
|
||||
Готовність тут стосується лише локальних передумов attach. Existing-session зберігає
|
||||
Готовність тут стосується лише передумов локального підключення. Existing-session зберігає
|
||||
поточні обмеження маршрутів Chrome MCP; розширені маршрути, як-от `responsebody`, експорт PDF,
|
||||
перехоплення завантажень і пакетні дії, усе ще потребують керованого
|
||||
браузера або профілю raw CDP.
|
||||
перехоплення завантажень і пакетні дії, як і раніше, потребують керованого
|
||||
браузера або сирого профілю CDP.
|
||||
|
||||
Ця перевірка **не** застосовується до Docker, sandbox, remote-browser чи інших
|
||||
безголових сценаріїв. Вони, як і раніше, використовують raw CDP.
|
||||
Ця перевірка **не** стосується Docker, sandbox, remote-browser чи інших
|
||||
безголових сценаріїв. Вони, як і раніше, використовують сирий CDP.
|
||||
|
||||
### 2d) Вимоги OAuth TLS
|
||||
### 2d) TLS-передумови OAuth
|
||||
|
||||
Коли налаштовано профіль OpenAI Codex OAuth, doctor перевіряє кінцеву точку
|
||||
авторизації 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
|
||||
|
||||
Якщо ви раніше додали застарілі налаштування транспорту OpenAI у
|
||||
`models.providers.openai-codex`, вони можуть затіняти вбудований шлях
|
||||
Якщо ви раніше додали застарілі параметри транспорту OpenAI у
|
||||
`models.providers.openai-codex`, вони можуть затінити вбудований шлях
|
||||
провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить
|
||||
ці старі налаштування транспорту разом із Codex OAuth, щоб ви могли видалити або переписати
|
||||
застаріле перевизначення транспорту та повернути вбудовану поведінку маршрутизації/резервування.
|
||||
Користувацькі проксі та перевизначення лише заголовків, як і раніше, підтримуються й не
|
||||
ці старі параметри транспорту поруч із Codex OAuth, щоб ви могли видалити або переписати
|
||||
застаріле перевизначення транспорту й повернути вбудовану поведінку маршрутизації/резервування.
|
||||
Власні проксі й перевизначення лише заголовків і далі підтримуються та не
|
||||
викликають цього попередження.
|
||||
|
||||
### 3) Міграції застарілого стану (структура на диску)
|
||||
|
||||
Doctor може мігрувати старіші структури на диску до поточної:
|
||||
|
||||
- Сховище сесій + стенограми:
|
||||
- Сховище сесій + transcripts:
|
||||
- з `~/.openclaw/sessions/` до `~/.openclaw/agents/<agentId>/sessions/`
|
||||
- Каталог агента:
|
||||
- Каталог agent:
|
||||
- з `~/.openclaw/agent/` до `~/.openclaw/agents/<agentId>/agent/`
|
||||
- Стан автентифікації WhatsApp (Baileys):
|
||||
- зі старих `~/.openclaw/credentials/*.json` (крім `oauth.json`)
|
||||
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий ID облікового запису: `default`)
|
||||
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий ID акаунта: `default`)
|
||||
|
||||
Ці міграції виконуються за можливості та є ідемпотентними; doctor виведе попередження, якщо
|
||||
Ці міграції виконуються за принципом best-effort та є ідемпотентними; doctor виведе попередження, якщо
|
||||
залишить будь-які застарілі каталоги як резервні копії. Gateway/CLI також автоматично мігрує
|
||||
застарілі сесії та каталог агента під час запуску, тож історія/автентифікація/моделі потрапляють у шлях
|
||||
для конкретного агента без ручного запуску doctor. Автентифікація WhatsApp навмисно
|
||||
мігрується лише через `openclaw doctor`. Нормалізація Talk provider/provider-map тепер
|
||||
порівнює за структурною рівністю, тому відмінності лише в порядку ключів більше не викликають
|
||||
повторних порожніх змін `doctor --fix`.
|
||||
застарілі sessions + каталог agent під час старту, щоб history/auth/models потрапляли в
|
||||
шлях конкретного agent без ручного запуску doctor. Автентифікація WhatsApp навмисно мігрується
|
||||
лише через `openclaw doctor`. Нормалізація Talk provider/provider-map тепер
|
||||
порівнює за структурною рівністю, тож відмінності лише в порядку ключів більше не спричиняють
|
||||
повторних порожніх змін у `doctor --fix`.
|
||||
|
||||
### 3a) Міграції застарілих маніфестів plugin
|
||||
|
||||
Doctor сканує всі встановлені маніфести plugin на наявність застарілих ключів
|
||||
можливостей верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`,
|
||||
Doctor сканує всі встановлені маніфести plugin на наявність застарілих ключів можливостей верхнього рівня
|
||||
(`speechProviders`, `realtimeTranscriptionProviders`,
|
||||
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
||||
`imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`,
|
||||
`webSearchProviders`). Якщо їх знайдено, він пропонує перемістити їх до об’єкта `contracts`
|
||||
і переписати файл маніфесту на місці. Ця міграція ідемпотентна;
|
||||
`webSearchProviders`). Якщо їх знайдено, він пропонує перемістити їх у об’єкт `contracts`
|
||||
і переписати файл маніфесту безпосередньо на місці. Ця міграція є ідемпотентною;
|
||||
якщо ключ `contracts` уже містить ті самі значення, застарілий ключ видаляється
|
||||
без дублювання даних.
|
||||
|
||||
### 3b) Міграції застарілого сховища cron
|
||||
|
||||
Doctor також перевіряє сховище cron jobs (`~/.openclaw/cron/jobs.json` типово,
|
||||
або `cron.store`, якщо його перевизначено) на старі форми job, які планувальник усе ще
|
||||
або `cron.store`, якщо його перевизначено) на старі форми jobs, які планувальник досі
|
||||
приймає для сумісності.
|
||||
|
||||
Поточні очищення cron включають:
|
||||
@ -273,240 +274,245 @@ Doctor також перевіряє сховище cron jobs (`~/.openclaw/cron
|
||||
- `schedule.cron` → `schedule.expr`
|
||||
- поля payload верхнього рівня (`message`, `model`, `thinking`, ...) → `payload`
|
||||
- поля delivery верхнього рівня (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
|
||||
- псевдоніми delivery `provider` у payload → явний `delivery.channel`
|
||||
- псевдоніми доставки `provider` у payload → явний `delivery.channel`
|
||||
- прості застарілі резервні webhook jobs з `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook`
|
||||
|
||||
Doctor автоматично мігрує jobs з `notify: true` лише тоді, коли це можна зробити без
|
||||
зміни поведінки. Якщо job поєднує застарілий резервний notify з наявним
|
||||
не-webhook режимом delivery, doctor попереджає й залишає цей job для ручної перевірки.
|
||||
Doctor автоматично мігрує jobs з `notify: true` лише тоді, коли це можна зробити
|
||||
без зміни поведінки. Якщо job поєднує застарілий резервний notify із наявним
|
||||
режимом delivery, що не є webhook, doctor попереджає й залишає цей job для ручної перевірки.
|
||||
|
||||
### 3c) Очищення блокувань сесій
|
||||
|
||||
Doctor сканує каталог сесій кожного агента на наявність застарілих файлів блокування запису — файлів,
|
||||
що залишилися після аварійного завершення сесії. Для кожного знайденого файлу блокування він повідомляє:
|
||||
шлях, PID, чи PID усе ще активний, вік блокування та чи
|
||||
вважається воно застарілим (мертвий PID або вік понад 30 хвилин). У режимі `--fix` / `--repair`
|
||||
він автоматично видаляє застарілі файли блокування; інакше виводить примітку та
|
||||
пропонує повторити запуск з `--fix`.
|
||||
Doctor сканує каталог сесій кожного agent на наявність застарілих файлів блокування запису — файлів, що залишилися
|
||||
після аварійного завершення сесії. Для кожного знайденого файла блокування він повідомляє:
|
||||
шлях, PID, чи PID досі живий, вік блокування та чи
|
||||
вважається воно застарілим (мертвий PID або старше 30 хвилин). У режимі `--fix` / `--repair`
|
||||
він видаляє застарілі файли блокування автоматично; інакше виводить примітку та
|
||||
радить перезапустити з `--fix`.
|
||||
|
||||
### 4) Перевірки цілісності стану (збереження сесій, маршрутизація та безпека)
|
||||
|
||||
Каталог стану — це операційний стовбур мозку системи. Якщо він зникне, ви втратите
|
||||
Каталог стану — це операційний стовбур мозку. Якщо він зникне, ви втратите
|
||||
сесії, облікові дані, журнали та конфігурацію (якщо у вас немає резервних копій деінде).
|
||||
|
||||
Doctor перевіряє:
|
||||
|
||||
- **Відсутній каталог стану**: попереджає про катастрофічну втрату стану, пропонує відтворити
|
||||
каталог і нагадує, що не може відновити втрачені дані.
|
||||
- **Каталог стану відсутній**: попереджає про катастрофічну втрату стану, пропонує повторно створити
|
||||
каталог і нагадує, що він не може відновити втрачені дані.
|
||||
- **Права доступу до каталогу стану**: перевіряє можливість запису; пропонує виправити права
|
||||
(і виводить підказку `chown`, якщо виявлено невідповідність власника/групи).
|
||||
- **Каталог стану macOS у хмарній синхронізації**: попереджає, коли стан розгортається в iCloud Drive
|
||||
(і виводить підказку `chown`, якщо виявлено невідповідність owner/group).
|
||||
- **Каталог стану macOS у хмарній синхронізації**: попереджає, якщо стан знаходиться в iCloud Drive
|
||||
(`~/Library/Mobile Documents/com~apple~CloudDocs/...`) або
|
||||
`~/Library/CloudStorage/...`, оскільки шляхи із синхронізацією можуть спричиняти повільніший I/O
|
||||
і конфлікти блокувань/синхронізації.
|
||||
- **Каталог стану Linux на SD або eMMC**: попереджає, коли стан розгортається на джерелі монтування `mmcblk*`,
|
||||
оскільки випадковий I/O на SD або eMMC може бути повільнішим і швидше зношувати носій
|
||||
через записи сесій та облікових даних.
|
||||
- **Відсутні каталоги сесій**: `sessions/` і каталог сховища сесій
|
||||
`~/Library/CloudStorage/...`, тому що шляхи з синхронізацією можуть спричиняти повільніший I/O
|
||||
та гонки блокувань/синхронізації.
|
||||
- **Каталог стану Linux на SD або eMMC**: попереджає, якщо стан знаходиться на джерелі монтування `mmcblk*`,
|
||||
тому що випадковий I/O на SD або eMMC може бути повільнішим і швидше зношувати носій
|
||||
під час записів сесій та облікових даних.
|
||||
- **Каталоги сесій відсутні**: `sessions/` і каталог сховища сесій
|
||||
потрібні для збереження історії та уникнення збоїв `ENOENT`.
|
||||
- **Невідповідність стенограм**: попереджає, коли в недавніх записах сесій відсутні
|
||||
файли стенограм.
|
||||
- **Основна сесія “1-line JSONL”**: позначає випадки, коли основна стенограма має лише один
|
||||
- **Невідповідність transcript**: попереджає, коли в недавніх записах сесій відсутні
|
||||
файли transcript.
|
||||
- **Основна сесія “1-line JSONL”**: позначає випадки, коли основний transcript має лише один
|
||||
рядок (історія не накопичується).
|
||||
- **Кілька каталогів стану**: попереджає, коли існує кілька папок `~/.openclaw` у різних
|
||||
домашніх каталогах або коли `OPENCLAW_STATE_DIR` вказує в інше місце (історія може
|
||||
розділятися між установками).
|
||||
- **Нагадування про remote mode**: якщо `gateway.mode=remote`, doctor нагадує запустити
|
||||
його на віддаленому хості (стан зберігається саме там).
|
||||
- **Права доступу до файлу конфігурації**: попереджає, якщо `~/.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 або
|
||||
шлях налаштування Anthropic setup-token.
|
||||
спливає/вже сплив, і може оновити їх, коли це безпечно. Якщо профіль
|
||||
OAuth/token Anthropic застарів, він пропонує API-ключ Anthropic або
|
||||
шлях setup-token Anthropic.
|
||||
Запити на оновлення з’являються лише в інтерактивному режимі (TTY); `--non-interactive`
|
||||
пропускає спроби оновлення.
|
||||
|
||||
Коли оновлення OAuth остаточно завершується невдачею (наприклад `refresh_token_reused`,
|
||||
`invalid_grant` або коли провайдер просить увійти знову), doctor повідомляє,
|
||||
що потрібна повторна автентифікація, і виводить точну команду `openclaw models auth login --provider ...`,
|
||||
яку треба виконати.
|
||||
|
||||
Doctor також повідомляє про профілі автентифікації, які тимчасово непридатні до використання через:
|
||||
|
||||
- короткі cooldown (обмеження швидкості/тайм-аути/помилки автентифікації)
|
||||
- довші вимкнення (помилки білінгу/кредитів)
|
||||
- короткі cooldown-періоди (rate limits/timeouts/auth failures)
|
||||
- довші відключення (billing/credit failures)
|
||||
|
||||
### 6) Перевірка моделі hooks
|
||||
|
||||
Якщо встановлено `hooks.gmail.model`, doctor перевіряє посилання на модель за
|
||||
каталогом і allowlist та попереджає, коли його не вдається розв’язати або воно не дозволене.
|
||||
Якщо встановлено `hooks.gmail.model`, doctor перевіряє посилання на модель у
|
||||
каталозі та списку дозволених значень і попереджає, коли її не вдасться зіставити або вона заборонена.
|
||||
|
||||
### 7) Відновлення образу sandbox
|
||||
### 7) Відновлення образу пісочниці
|
||||
|
||||
Коли sandboxing увімкнено, doctor перевіряє образи Docker і пропонує зібрати їх або
|
||||
переключитися на застарілі імена, якщо поточний образ відсутній.
|
||||
Коли пісочницю увімкнено, doctor перевіряє Docker-образи і пропонує зібрати їх або
|
||||
перемкнутися на застарілі назви, якщо поточний образ відсутній.
|
||||
|
||||
### 7b) Runtime-залежності bundled plugin
|
||||
### 7b) Runtime-залежності вбудованих plugin
|
||||
|
||||
Doctor перевіряє, що runtime-залежності bundled plugin (наприклад
|
||||
runtime-пакети plugin Discord) присутні в корені встановлення OpenClaw.
|
||||
Якщо якихось не вистачає, doctor повідомляє про ці пакети та встановлює їх у
|
||||
Doctor перевіряє, чи присутні runtime-залежності вбудованих plugin (наприклад
|
||||
runtime-пакети plugin Discord) у корені інсталяції OpenClaw.
|
||||
Якщо якихось бракує, doctor повідомляє пакети й установлює їх у
|
||||
режимі `openclaw doctor --fix` / `openclaw doctor --repair`.
|
||||
|
||||
### 8) Міграції служб gateway та підказки з очищення
|
||||
### 8) Міграції сервісів gateway та підказки з очищення
|
||||
|
||||
Doctor виявляє застарілі служби gateway (launchd/systemd/schtasks) і
|
||||
пропонує видалити їх та встановити службу OpenClaw з поточним портом gateway.
|
||||
Він також може сканувати наявність додаткових gateway-подібних служб і виводити підказки з очищення.
|
||||
Іменовані за профілем служби OpenClaw gateway вважаються повноцінними і не
|
||||
Doctor виявляє застарілі сервіси gateway (launchd/systemd/schtasks) і
|
||||
пропонує видалити їх та встановити сервіс OpenClaw із поточним портом gateway.
|
||||
Він також може сканувати додаткові схожі на gateway сервіси та виводити підказки з очищення.
|
||||
Сервіси OpenClaw gateway з назвами профілів вважаються повноцінними й не
|
||||
позначаються як "додаткові".
|
||||
|
||||
### 8b) Стартова міграція Matrix
|
||||
### 8b) Міграція Matrix під час запуску
|
||||
|
||||
Коли обліковий запис каналу Matrix має очікувану або придатну до виконання міграцію застарілого стану,
|
||||
Коли акаунт каналу Matrix має очікувану або виконувану міграцію застарілого стану,
|
||||
doctor (у режимі `--fix` / `--repair`) створює знімок стану до міграції, а потім
|
||||
виконує найкращим можливим способом кроки міграції: міграцію застарілого стану Matrix і підготовку
|
||||
застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки записуються в журнал, а
|
||||
виконує кроки міграції за принципом best-effort: міграцію застарілого стану Matrix і підготовку
|
||||
застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, і
|
||||
запуск триває. У режимі лише читання (`openclaw doctor` без `--fix`) ця перевірка
|
||||
повністю пропускається.
|
||||
|
||||
### 9) Попередження безпеки
|
||||
|
||||
Doctor виводить попередження, коли провайдер відкритий для DM без allowlist або
|
||||
коли політику налаштовано небезпечним чином.
|
||||
Doctor виводить попередження, коли провайдер відкритий для DM без allowlist,
|
||||
або коли політику налаштовано небезпечно.
|
||||
|
||||
### 10) systemd linger (Linux)
|
||||
|
||||
Якщо система працює як користувацька служба systemd, doctor перевіряє, що lingering увімкнено, щоб
|
||||
Якщо робота ведеться як user-сервіс systemd, doctor перевіряє, що lingering увімкнено, щоб
|
||||
gateway залишався активним після виходу з системи.
|
||||
|
||||
### 11) Стан workspace (Skills, plugins і застарілі каталоги)
|
||||
|
||||
Doctor виводить зведення стану workspace для типового агента:
|
||||
Doctor виводить зведення стану workspace для типового agent:
|
||||
|
||||
- **Стан Skills**: кількість доступних, тих, що не відповідають вимогам, і заблокованих allowlist Skills.
|
||||
- **Стан Skills**: кількість доступних, з відсутніми вимогами та заблокованих allowlist навичок.
|
||||
- **Застарілі каталоги workspace**: попереджає, коли `~/openclaw` або інші застарілі каталоги workspace
|
||||
існують поруч із поточним workspace.
|
||||
- **Стан plugin**: кількість завантажених/вимкнених/plugin із помилками; перелічує ID plugin для будь-яких
|
||||
- **Стан plugin**: кількість завантажених/вимкнених/помилкових plugins; перелічує ID plugin для всіх
|
||||
помилок; повідомляє про можливості bundle plugin.
|
||||
- **Попередження про сумісність plugin**: позначає plugins, які мають проблеми сумісності з
|
||||
поточним runtime.
|
||||
- **Діагностика plugin**: показує будь-які попередження або помилки під час завантаження, які надіслав
|
||||
реєстр plugin.
|
||||
- **Діагностика plugin**: показує будь-які попередження чи помилки під час завантаження, які
|
||||
згенерував реєстр plugin.
|
||||
|
||||
### 11b) Розмір bootstrap-файлу
|
||||
|
||||
Doctor перевіряє, чи bootstrap-файли workspace (наприклад `AGENTS.md`,
|
||||
`CLAUDE.md` або інші впроваджені контекстні файли) наближаються до налаштованого
|
||||
ліміту символів або перевищують його. Він повідомляє для кожного файлу сирий та впроваджений обсяг символів, відсоток обрізання,
|
||||
причину обрізання (`max/file` або `max/total`) і загальну кількість впроваджених
|
||||
символів як частку від загального бюджету. Коли файли обрізано або вони наближаються до
|
||||
ліміту, doctor виводить поради щодо налаштування `agents.defaults.bootstrapMaxChars`
|
||||
`CLAUDE.md` або інші вбудовані контекстні файли) наближаються до
|
||||
налаштованого бюджету символів або перевищують його. Він повідомляє для кожного файла кількість сирих і
|
||||
вбудованих символів, відсоток обрізання, причину обрізання (`max/file` або `max/total`) і загальну кількість вбудованих
|
||||
символів як частку загального бюджету. Коли файли обрізано або вони наближаються до ліміту,
|
||||
doctor виводить поради щодо налаштування `agents.defaults.bootstrapMaxChars`
|
||||
і `agents.defaults.bootstrapTotalMaxChars`.
|
||||
|
||||
### 11c) Shell completion
|
||||
### 11c) Автодоповнення shell
|
||||
|
||||
Doctor перевіряє, чи встановлено tab completion для поточної оболонки
|
||||
Doctor перевіряє, чи встановлено автодоповнення для поточної shell
|
||||
(zsh, bash, fish або PowerShell):
|
||||
|
||||
- Якщо профіль оболонки використовує повільний шаблон динамічного completion
|
||||
- Якщо профіль shell використовує повільний шаблон динамічного автодоповнення
|
||||
(`source <(openclaw completion ...)`), doctor оновлює його до швидшого
|
||||
варіанту з кешованим файлом.
|
||||
- Якщо completion налаштовано в профілі, але файл кешу відсутній,
|
||||
варіанта з кешованим файлом.
|
||||
- Якщо автодоповнення налаштовано в профілі, але кешований файл відсутній,
|
||||
doctor автоматично відновлює кеш.
|
||||
- Якщо completion взагалі не налаштовано, doctor пропонує встановити його
|
||||
- Якщо автодоповнення взагалі не налаштовано, doctor пропонує встановити його
|
||||
(лише інтерактивний режим; пропускається з `--non-interactive`).
|
||||
|
||||
Запустіть `openclaw completion --write-state`, щоб відновити кеш вручну.
|
||||
Виконайте `openclaw completion --write-state`, щоб відновити кеш вручну.
|
||||
|
||||
### 12) Перевірки автентифікації gateway (локальний токен)
|
||||
|
||||
Doctor перевіряє готовність автентифікації локального токена 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
|
||||
|
||||
Деяким сценаріям відновлення потрібно перевіряти налаштовані облікові дані без послаблення поведінки швидкої відмови під час виконання.
|
||||
Деякі сценарії виправлення потребують перевірки налаштованих облікових даних без послаблення поведінки runtime fail-fast.
|
||||
|
||||
- `openclaw doctor --fix` тепер використовує ту саму модель зведення SecretRef у режимі лише читання, що й команди сімейства status, для цільових виправлень конфігурації.
|
||||
- Приклад: виправлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використовувати налаштовані облікові дані бота, коли вони доступні.
|
||||
- Якщо токен Telegram-бота налаштовано через SecretRef, але він недоступний у поточному шляху виконання команди, doctor повідомляє, що облікові дані налаштовано, але вони недоступні, і пропускає автоматичне розв’язання замість аварійного завершення або хибного повідомлення про відсутність токена.
|
||||
- `openclaw doctor --fix` тепер використовує ту саму модель стислого read-only подання SecretRef, що й команди сімейства status, для цільових виправлень конфігурації.
|
||||
- Приклад: виправлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані облікові дані бота, якщо вони доступні.
|
||||
- Якщо токен Telegram-бота налаштовано через SecretRef, але він недоступний у поточному шляху виконання команди, doctor повідомляє, що облікові дані налаштовано, але вони недоступні, і пропускає автоматичне зіставлення замість аварійного завершення або хибного повідомлення, що токен відсутній.
|
||||
|
||||
### 13) Перевірка працездатності gateway + перезапуск
|
||||
### 13) Перевірка стану gateway + перезапуск
|
||||
|
||||
Doctor запускає перевірку працездатності й пропонує перезапустити gateway, якщо той
|
||||
виглядає несправним.
|
||||
Doctor запускає перевірку стану й пропонує перезапустити gateway, якщо
|
||||
він виглядає несправним.
|
||||
|
||||
### 13b) Готовність пошуку в пам’яті
|
||||
### 13b) Готовність memory search
|
||||
|
||||
Doctor перевіряє, чи готовий налаштований провайдер embedding для пошуку в пам’яті
|
||||
для типового агента. Поведінка залежить від налаштованого backend і провайдера:
|
||||
Doctor перевіряє, чи готовий налаштований провайдер embedding для memory search
|
||||
для типового agent. Поведінка залежить від налаштованого backend і провайдера:
|
||||
|
||||
- **QMD backend**: перевіряє, чи доступний і чи запускається бінарний файл `qmd`.
|
||||
Якщо ні, виводить інструкції з виправлення, зокрема npm package та варіант ручного шляху до бінарного файла.
|
||||
- **Явно локальний провайдер**: перевіряє наявність локального файлу моделі або розпізнаваного
|
||||
- **QMD backend**: перевіряє, чи бінарник `qmd` доступний і чи його можна запустити.
|
||||
Якщо ні, виводить рекомендації щодо виправлення, зокрема npm-пакет і варіант ручного шляху до бінарника.
|
||||
- **Явний локальний провайдер**: перевіряє наявність локального файла моделі або розпізнаного
|
||||
URL віддаленої/завантажуваної моделі. Якщо його немає, пропонує перейти на віддаленого провайдера.
|
||||
- **Явно віддалений провайдер** (`openai`, `voyage` тощо): перевіряє, чи присутній API key
|
||||
у середовищі або сховищі автентифікації. Якщо його немає, виводить практичні підказки для виправлення.
|
||||
- **Автоматичний провайдер**: спочатку перевіряє доступність локальної моделі, а потім намагається використати кожного віддаленого
|
||||
- **Явний віддалений провайдер** (`openai`, `voyage` тощо): перевіряє, чи є API-ключ
|
||||
у середовищі або сховищі автентифікації. Якщо його немає, виводить практичні підказки щодо виправлення.
|
||||
- **Auto provider**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого
|
||||
провайдера в порядку автоматичного вибору.
|
||||
|
||||
Коли доступний результат перевірки gateway (gateway був справний на момент
|
||||
перевірки), doctor зіставляє його з конфігурацією, видимою CLI, і вказує
|
||||
на будь-які розбіжності.
|
||||
Коли доступний результат перевірки gateway (gateway був справним на момент
|
||||
перевірки), doctor звіряє його результат із конфігурацією, видимою CLI, і позначає
|
||||
будь-які розбіжності.
|
||||
|
||||
Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embedding під час виконання.
|
||||
Використайте `openclaw memory status --deep`, щоб перевірити готовність embedding під час runtime.
|
||||
|
||||
### 14) Попередження про стан каналів
|
||||
|
||||
Якщо gateway справний, doctor запускає перевірку стану каналів і повідомляє
|
||||
про попередження разом із пропозиціями щодо виправлення.
|
||||
Якщо gateway справний, doctor запускає пробу стану каналів і повідомляє
|
||||
попередження з рекомендованими виправленнями.
|
||||
|
||||
### 15) Аудит конфігурації supervisor + відновлення
|
||||
|
||||
Doctor перевіряє встановлену конфігурацію supervisor (launchd/systemd/schtasks) на наявність
|
||||
відсутніх або застарілих типових значень (наприклад, systemd network-online dependencies та
|
||||
затримка перезапуску). Коли він знаходить невідповідність, то
|
||||
рекомендує оновлення й може переписати файл служби/завдання відповідно до поточних типових значень.
|
||||
Doctor перевіряє встановлену конфігурацію supervisor (launchd/systemd/schtasks) на
|
||||
відсутні або застарілі типові значення (наприклад залежності systemd від network-online та
|
||||
затримку перезапуску). Коли він знаходить невідповідність, рекомендує оновлення і може
|
||||
перезаписати файл сервісу/завдання до поточних типових значень.
|
||||
|
||||
Примітки:
|
||||
|
||||
- `openclaw doctor` запитує підтвердження перед переписуванням конфігурації supervisor.
|
||||
- `openclaw doctor --yes` приймає типові запити на відновлення.
|
||||
- `openclaw doctor` запитує підтвердження перед перезаписом конфігурації supervisor.
|
||||
- `openclaw doctor --yes` приймає типові запити на виправлення.
|
||||
- `openclaw doctor --repair` застосовує рекомендовані виправлення без запитів.
|
||||
- `openclaw doctor --repair --force` перезаписує користувацькі конфігурації supervisor.
|
||||
- Якщо автентифікація токеном вимагає токен, а `gateway.auth.token` керується через SecretRef, під час встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв’язані відкриті значення токена в метадані середовища служби supervisor.
|
||||
- Якщо автентифікація токеном вимагає токен, а налаштований токен SecretRef не розв’язується, doctor блокує шлях встановлення/відновлення та надає практичні вказівки.
|
||||
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не встановлено, doctor блокує встановлення/відновлення, доки режим не буде явно задано.
|
||||
- Для користувацьких systemd unit у Linux перевірки розбіжності токенів у doctor тепер включають обидва джерела `Environment=` і `EnvironmentFile=` під час порівняння метаданих автентифікації служби.
|
||||
- `openclaw doctor --repair --force` перезаписує власні конфігурації supervisor.
|
||||
- Якщо автентифікація за токеном потребує токен, а `gateway.auth.token` керується через SecretRef, doctor під час встановлення/відновлення сервісу перевіряє SecretRef, але не зберігає розв’язані значення plaintext token у метаданих середовища сервісу supervisor.
|
||||
- Якщо автентифікація за токеном потребує токен, а налаштований token SecretRef не розв’язується, doctor блокує шлях встановлення/відновлення та надає практичні рекомендації.
|
||||
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/відновлення, доки режим не буде явно встановлено.
|
||||
- Для user-systemd units у Linux перевірки розходжень токена в doctor тепер охоплюють і джерела `Environment=`, і `EnvironmentFile=` під час порівняння метаданих автентифікації сервісу.
|
||||
- Ви завжди можете примусово виконати повний перезапис через `openclaw gateway install --force`.
|
||||
|
||||
### 16) Діагностика runtime gateway + порту
|
||||
|
||||
Doctor перевіряє runtime служби (PID, останній статус завершення) і попереджає, коли
|
||||
службу встановлено, але вона фактично не запущена. Він також перевіряє конфлікти портів
|
||||
Doctor перевіряє runtime сервісу (PID, останній статус виходу) і попереджає, коли
|
||||
сервіс встановлено, але фактично не запущено. Він також перевіряє конфлікти
|
||||
на порту gateway (типово `18789`) і повідомляє ймовірні причини (gateway уже
|
||||
працює, SSH tunnel).
|
||||
запущено, SSH-тунель).
|
||||
|
||||
### 17) Рекомендовані практики runtime gateway
|
||||
### 17) Рекомендації для runtime gateway
|
||||
|
||||
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,
|
||||
а шляхи менеджерів версій можуть ламатися після оновлень, тому що сервіс не
|
||||
завантажує ініціалізацію вашої shell. Doctor пропонує перейти на системну інсталяцію Node, якщо
|
||||
вона доступна (Homebrew/apt/choco).
|
||||
|
||||
### 18) Запис конфігурації + метадані майстра
|
||||
|
||||
Doctor зберігає будь-які зміни конфігурації та проставляє метадані майстра, щоб зафіксувати
|
||||
запуск doctor.
|
||||
|
||||
### 19) Поради щодо workspace (резервне копіювання + система пам’яті)
|
||||
### 19) Поради щодо workspace (резервне копіювання + memory system)
|
||||
|
||||
Doctor пропонує систему пам’яті workspace, якщо її немає, і виводить пораду щодо резервного копіювання,
|
||||
Doctor пропонує memory system для workspace, якщо його немає, і виводить пораду щодо резервного копіювання,
|
||||
якщо workspace ще не перебуває під git.
|
||||
|
||||
Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб отримати повний посібник зі
|
||||
структури workspace та резервного копіювання через git (рекомендовано приватний GitHub або GitLab).
|
||||
структури workspace та резервного копіювання в git (рекомендовано приватний GitHub або GitLab).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user