chore(i18n): refresh uk translations
This commit is contained in:
parent
61bba1c328
commit
207f0a435c
@ -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.<provider>`.
|
||||
- Перевірки міграції 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.<provider>`. Doctor переписує старі форми
|
||||
`talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` /
|
||||
`talk.apiKey` у мапу постачальників.
|
||||
це `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 виконуються через `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.<provider>`
|
||||
- `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.<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` встановлено на невідомий ідентифікатор облікового запису, 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/<agentId>/sessions/`
|
||||
- Каталог agent:
|
||||
- з `~/.openclaw/agent/` до `~/.openclaw/agents/<agentId>/agent/`
|
||||
- Стан автентифікації WhatsApp (Baileys):
|
||||
- із застарілого `~/.openclaw/credentials/*.json` (крім `oauth.json`)
|
||||
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий ID облікового запису: `default`)
|
||||
- із застарілих `~/.openclaw/credentials/*.json` (крім `oauth.json`)
|
||||
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий 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 <requestId>`
|
||||
- виконайте ротацію нового токена за допомогою `openclaw devices rotate --device <deviceId> --role <role>`
|
||||
- видаліть застарілий запис і повторно схваліть його за допомогою `openclaw devices remove <deviceId>`
|
||||
|
||||
Це закриває типову прогалину "вже 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).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user