chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-04 09:39:31 +00:00
parent c4b87ea455
commit d353a0e3db
2 changed files with 331 additions and 331 deletions

View File

@ -1,36 +1,36 @@
---
read_when:
- Ви хочете встановити або керувати плагінами Gateway чи сумісними пакетами
- Ви хочете налагодити збої завантаження Plugin
- Ви хочете встановити або керувати Plugin Gateway чи сумісними пакетами
- Ви хочете діагностувати збої завантаження Plugin
sidebarTitle: Plugins
summary: Довідник CLI для `openclaw plugins` (список, встановлення, маркетплейс, видалення, увімкнення/вимкнення, doctor)
title: Плагіни
summary: Довідник CLI для `openclaw plugins` (list, install, marketplace, uninstall, enable/disable, doctor)
title: Plugins
x-i18n:
generated_at: "2026-05-04T08:21:39Z"
generated_at: "2026-05-04T09:37:09Z"
model: gpt-5.5
provider: openai
source_hash: d3f0ac9412e24f3598e9bab6389f770b3d0d26268d9907891697919d9371f1c1
source_hash: f561ce098181b07f25db3520b1726162863469ac05fb4a3e786915257d97c9a4
source_path: cli/plugins.md
workflow: 16
---
Керуйте Gateway plugins, наборами хуків і сумісними пакетами.
Керуйте Plugin для Gateway, пакетами хуків і сумісними наборами.
<CardGroup cols={2}>
<Card title="Plugin system" href="/uk/tools/plugin">
Посібник для кінцевих користувачів щодо встановлення, увімкнення й усунення несправностей plugins.
<Card title="Система Plugin" href="/uk/tools/plugin">
Посібник для кінцевих користувачів зі встановлення, увімкнення й усунення проблем із plugins.
</Card>
<Card title="Manage plugins" href="/uk/plugins/manage-plugins">
Короткі приклади для встановлення, перегляду списку, оновлення, видалення й публікації.
<Card title="Керування plugins" href="/uk/plugins/manage-plugins">
Короткі приклади встановлення, виведення списку, оновлення, видалення та публікації.
</Card>
<Card title="Plugin bundles" href="/uk/plugins/bundles">
Модель сумісності пакетів.
<Card title="Набори Plugin" href="/uk/plugins/bundles">
Модель сумісності наборів.
</Card>
<Card title="Plugin manifest" href="/uk/plugins/manifest">
Поля маніфесту й схема конфігурації.
<Card title="Маніфест Plugin" href="/uk/plugins/manifest">
Поля маніфесту та схема конфігурації.
</Card>
<Card title="Security" href="/uk/gateway/security">
Посилення безпеки для встановлення plugin.
<Card title="Безпека" href="/uk/gateway/security">
Посилення безпеки для встановлень Plugin.
</Card>
</CardGroup>
@ -62,16 +62,16 @@ openclaw plugins marketplace list <marketplace>
openclaw plugins marketplace list <marketplace> --json
```
Для дослідження повільного встановлення, перевірки, видалення або оновлення реєстру запустіть
Щоб дослідити повільне встановлення, інспектування, видалення або оновлення реєстру, запустіть
команду з `OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1`. Трасування записує таймінги фаз
у stderr і зберігає JSON-вивід придатним для парсингу. Див. [Налагодження](/uk/help/debugging#plugin-lifecycle-trace).
у stderr і залишає JSON-вивід придатним для парсингу. Див. [Налагодження](/uk/help/debugging#plugin-lifecycle-trace).
<Note>
Вбудовані plugins постачаються з OpenClaw. Деякі ввімкнені за замовчуванням (наприклад, вбудовані постачальники моделей, вбудовані постачальники мовлення та вбудований браузерний plugin); інші потребують `plugins enable`.
Вбудовані plugins постачаються разом з OpenClaw. Деякі ввімкнені типово (наприклад, вбудовані провайдери моделей, вбудовані провайдери мовлення та вбудований браузерний Plugin); інші потребують `plugins enable`.
Нативні OpenClaw plugins мають постачати `openclaw.plugin.json` із вбудованою JSON Schema (`configSchema`, навіть якщо вона порожня). Сумісні пакети натомість використовують власні маніфести пакетів.
Нативні OpenClaw plugins мають постачати `openclaw.plugin.json` з inline JSON Schema (`configSchema`, навіть якщо порожня). Сумісні набори натомість використовують власні маніфести наборів.
`plugins list` показує `Format: openclaw` або `Format: bundle`. Докладний вивід list/info також показує підтип пакета (`codex`, `claude` або `cursor`) та виявлені можливості пакета.
`plugins list` показує `Format: openclaw` або `Format: bundle`. Деталізований вивід list/info також показує підтип набору (`codex`, `claude` або `cursor`) плюс виявлені можливості набору.
</Note>
### Встановлення
@ -93,71 +93,71 @@ openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo
```
<Warning>
Голі назви пакетів під час переходу після запуску за замовчуванням встановлюються з npm. Використовуйте `clawhub:<package>` для ClawHub. Ставтеся до встановлення plugin як до запуску коду. Надавайте перевагу закріпленим версіям.
Під час перехідного запуску голі імена пакетів типово встановлюються з npm. Використовуйте `clawhub:<package>` для ClawHub. Ставтеся до встановлення Plugin як до запуску коду. Надавайте перевагу закріпленим версіям.
</Warning>
`plugins search` запитує ClawHub щодо доступних для встановлення пакетів plugin і виводить
назви пакетів, готові до встановлення. Він шукає пакети code-plugin і bundle-plugin,
`plugins search` надсилає запит до ClawHub щодо встановлюваних пакетів Plugin і друкує
готові до встановлення імена пакетів. Він шукає пакети code-plugin і bundle-plugin,
а не skills. Використовуйте `openclaw skills search` для ClawHub skills.
<Note>
ClawHub є основною поверхнею поширення й виявлення для більшості plugins. Npm
залишається підтримуваним резервним і прямим шляхом встановлення. Пакети plugin
ClawHub є основною поверхнею розповсюдження та пошуку для більшості plugins. Npm
залишається підтримуваним резервним і прямим шляхом встановлення. Пакети Plugin
`@openclaw/*`, що належать OpenClaw, знову публікуються в npm; див. поточний список
на [npmjs.com/org/openclaw](https://www.npmjs.com/org/openclaw) або в
[інвентарі plugin](/uk/plugins/plugin-inventory). Стабільні встановлення використовують `latest`.
Встановлення й оновлення бета-каналу надають перевагу npm dist-tag `beta`, коли цей тег
на [npmjs.com/org/openclaw](https://www.npmjs.com/org/openclaw) або
[інвентар Plugin](/uk/plugins/plugin-inventory). Стабільні встановлення використовують `latest`.
Встановлення та оновлення beta-каналу надають перевагу npm `beta` dist-tag, коли такий тег
доступний, а потім повертаються до `latest`.
</Note>
<AccordionGroup>
<Accordion title="Config includes and invalid-config repair">
Якщо ваш розділ `plugins` підтримується однофайловим `$include`, `plugins install/update/enable/disable/uninstall` записують зміни в цей включений файл і залишають `openclaw.json` без змін. Кореневі include, масиви include та include із сусідніми перевизначеннями завершуються закрито замість сплющування. Див. [Config includes](/uk/gateway/configuration) щодо підтримуваних форм.
<Accordion title="Включення конфігурації та відновлення некоректної конфігурації">
Якщо ваш розділ `plugins` спирається на однофайловий `$include`, `plugins install/update/enable/disable/uninstall` записує зміни в цей включений файл і залишає `openclaw.json` без змін. Кореневі включення, масиви включень і включення з сусідніми перевизначеннями завершуються закрито замість сплющення. Див. [Включення конфігурації](/uk/gateway/configuration) щодо підтримуваних форм.
Якщо під час встановлення конфігурація недійсна, `plugins install` зазвичай завершується закрито й повідомляє, що спершу потрібно виконати `openclaw doctor --fix`. Під час запуску Gateway і гарячого перезавантаження недійсна конфігурація plugin завершується закрито, як і будь-яка інша недійсна конфігурація; `openclaw doctor --fix` може помістити недійсний запис plugin у карантин. Єдиний задокументований виняток під час встановлення — вузький шлях відновлення вбудованого plugin для plugins, які явно вмикають `openclaw.install.allowInvalidConfigRecovery`.
Якщо конфігурація некоректна під час встановлення, `plugins install` зазвичай завершується закрито й повідомляє, що спершу потрібно запустити `openclaw doctor --fix`. Під час запуску Gateway і гарячого перезавантаження некоректна конфігурація Plugin завершується закрито, як і будь-яка інша некоректна конфігурація; `openclaw doctor --fix` може помістити некоректний запис Plugin у карантин. Єдиний задокументований виняток під час встановлення — вузький шлях відновлення вбудованого Plugin для plugins, які явно вмикають `openclaw.install.allowInvalidConfigRecovery`.
</Accordion>
<Accordion title="--force and reinstall vs update">
`--force` повторно використовує наявну ціль встановлення й перезаписує вже встановлений plugin або набір хуків на місці. Використовуйте це, коли навмисно перевстановлюєте той самий id із нового локального шляху, архіву, пакета ClawHub або артефакта npm. Для звичайних оновлень уже відстежуваного npm plugin надавайте перевагу `openclaw plugins update <id-or-npm-spec>`.
<Accordion title="--force і перевстановлення порівняно з оновленням">
`--force` повторно використовує наявну ціль встановлення й перезаписує вже встановлений Plugin або пакет хуків на місці. Використовуйте його, коли ви навмисно перевстановлюєте той самий id з нового локального шляху, архіву, пакета ClawHub або артефакта npm. Для звичайних оновлень уже відстежуваного npm Plugin надавайте перевагу `openclaw plugins update <id-or-npm-spec>`.
Якщо ви запускаєте `plugins install` для id plugin, який уже встановлено, OpenClaw зупиняється й спрямовує вас до `plugins update <id-or-npm-spec>` для звичайного оновлення або до `plugins install <package> --force`, коли ви справді хочете перезаписати поточне встановлення з іншого джерела.
Якщо ви запускаєте `plugins install` для id Plugin, який уже встановлено, OpenClaw зупиняється й спрямовує вас до `plugins update <id-or-npm-spec>` для звичайного оновлення або до `plugins install <package> --force`, коли ви справді хочете перезаписати поточне встановлення з іншого джерела.
</Accordion>
<Accordion title="--pin scope">
`--pin` застосовується лише до встановлень npm. Він не підтримується з установленнями `git:`; використовуйте явний git ref, наприклад `git:github.com/acme/plugin@v1.2.3`, коли потрібне закріплене джерело. Він не підтримується з `--marketplace`, бо встановлення marketplace зберігають метадані джерела marketplace замість npm spec.
<Accordion title="Область дії --pin">
`--pin` застосовується лише до встановлень npm. Він не підтримується з установленнями `git:`; використовуйте явне посилання git, наприклад `git:github.com/acme/plugin@v1.2.3`, коли потрібне закріплене джерело. Він не підтримується з `--marketplace`, оскільки встановлення з маркетплейсу зберігають метадані джерела маркетплейсу замість npm spec.
</Accordion>
<Accordion title="--dangerously-force-unsafe-install">
`--dangerously-force-unsafe-install` — це аварійна опція для хибнопозитивних спрацьовувань у вбудованому сканері небезпечного коду. Вона дозволяє продовжити встановлення навіть тоді, коли вбудований сканер повідомляє про знахідки `critical`, але **не** обходить блокування політики хуків plugin `before_install` і **не** обходить збої сканування.
`--dangerously-force-unsafe-install` — це аварійний параметр для хибних спрацьовувань у вбудованому сканері небезпечного коду. Він дозволяє продовжити встановлення, навіть коли вбудований сканер повідомляє про знахідки `critical`, але **не** обходить блокування політик хука `before_install` Plugin і **не** обходить збої сканування.
Цей прапорець CLI застосовується до потоків встановлення/оновлення plugin. Встановлення залежностей Skills через Gateway використовують відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком завантаження/встановлення Skills із ClawHub.
Цей прапорець CLI застосовується до потоків встановлення/оновлення Plugin. Встановлення залежностей skill через Gateway використовують відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком завантаження/встановлення ClawHub skill.
Якщо plugin, який ви опублікували в ClawHub, заблоковано скануванням реєстру, скористайтеся кроками для видавця в [ClawHub](/uk/tools/clawhub).
Якщо Plugin, який ви опублікували на ClawHub, заблоковано скануванням реєстру, скористайтеся кроками для видавця в [ClawHub](/uk/tools/clawhub).
</Accordion>
<Accordion title="Hook packs and npm specs">
`plugins install` також є поверхнею встановлення для наборів хуків, які надають `openclaw.hooks` у `package.json`. Використовуйте `openclaw hooks` для фільтрованої видимості хуків і ввімкнення окремих хуків, а не для встановлення пакета.
<Accordion title="Пакети хуків і npm specs">
`plugins install` також є поверхнею встановлення для пакетів хуків, які надають `openclaw.hooks` у `package.json`. Використовуйте `openclaw hooks` для фільтрованої видимості хуків і ввімкнення окремих хуків, а не для встановлення пакетів.
Npm specs є **лише реєстровими** (назва пакета + необов’язкова **точна версія** або **dist-tag**). Git/URL/file specs і діапазони semver відхиляються. Встановлення залежностей виконуються локально для проєкту з `--ignore-scripts` для безпеки, навіть якщо у вашій оболонці налаштовані глобальні параметри встановлення npm.
Npm specs є **лише реєстровими** (ім’я пакета + необов’язкова **точна версія** або **dist-tag**). Git/URL/file specs і діапазони semver відхиляються. Встановлення залежностей виконується локально для проєкту з `--ignore-scripts` заради безпеки, навіть якщо ваша оболонка має глобальні налаштування встановлення npm.
Використовуйте `npm:<package>`, коли хочете зробити розв’язання npm явним. Голі package specs також встановлюються безпосередньо з npm під час переходу після запуску.
Використовуйте `npm:<package>`, коли хочете зробити npm-розв’язання явним. Під час перехідного запуску голі package specs також встановлюються напряму з npm.
Голі specs і `@latest` залишаються на стабільному каналі. Датовані корекційні версії OpenClaw, такі як `2026.5.3-1`, є стабільними релізами для цієї перевірки. Якщо npm розв’язує будь-який із них у prerelease, OpenClaw зупиняється й просить явно погодитися за допомогою prerelease-тега, такого як `@beta`/`@rc`, або точної prerelease-версії, наприклад `@1.2.3-beta.4`.
Голі specs і `@latest` залишаються на стабільному каналі. Версії виправлень OpenClaw із датою, як-от `2026.5.3-1`, є стабільними релізами для цієї перевірки. Якщо npm розв’язує будь-який із них у prerelease, OpenClaw зупиняється й просить вас явно погодитися за допомогою prerelease-тега, як-от `@beta`/`@rc`, або точної prerelease-версії, як-от `@1.2.3-beta.4`.
Якщо голий install spec збігається з офіційним id plugin (наприклад `diffs`), OpenClaw встановлює запис каталогу напряму. Щоб встановити пакет npm із такою самою назвою, використовуйте явний scoped spec (наприклад `@scope/diffs`).
Якщо голий spec встановлення збігається з офіційним id Plugin (наприклад `diffs`), OpenClaw встановлює запис каталогу напряму. Щоб установити npm-пакет із тією самою назвою, використовуйте явний scoped spec (наприклад `@scope/diffs`).
</Accordion>
<Accordion title="Git repositories">
Використовуйте `git:<repo>`, щоб встановити безпосередньо з git-репозиторію. Підтримувані форми включають `git:github.com/owner/repo`, `git:owner/repo`, повні URL клонування `https://`, `ssh://`, `git://`, `file://` і `git@host:owner/repo.git`. Додайте `@<ref>` або `#<ref>`, щоб перед встановленням перейти на гілку, тег або коміт.
<Accordion title="Репозиторії Git">
Використовуйте `git:<repo>` для встановлення напряму з репозиторію git. Підтримувані форми включають `git:github.com/owner/repo`, `git:owner/repo`, повні URL клонування `https://`, `ssh://`, `git://`, `file://` і `git@host:owner/repo.git`. Додайте `@<ref>` або `#<ref>`, щоб отримати гілку, тег або коміт перед встановленням.
Git-встановлення клонують у тимчасовий каталог, переходять на запитаний ref, якщо він є, а потім використовують звичайний інсталятор каталогу plugin. Це означає, що перевірка маніфесту, сканування небезпечного коду, робота встановлення через менеджер пакетів і записи встановлення поводяться як npm-встановлення. Записані git-встановлення містять URL/ref джерела та розв’язаний коміт, щоб `openclaw plugins update` міг пізніше повторно розв’язати джерело.
Установлення Git клонують у тимчасовий каталог, отримують запитаний ref, якщо він присутній, а потім використовують звичайний інсталятор каталогу Plugin. Це означає, що валідація маніфесту, сканування небезпечного коду, робота встановлення менеджера пакетів і записи встановлення поводяться як npm-встановлення. Записані git-встановлення містять URL/ref джерела плюс розв’язаний коміт, щоб `openclaw plugins update` міг пізніше повторно розв’язати джерело.
Після встановлення з git використовуйте `openclaw plugins inspect <id> --runtime --json`, щоб перевірити runtime-реєстрації, як-от методи gateway і команди CLI. Якщо plugin зареєстрував корінь CLI через `api.registerCli`, виконайте цю команду напряму через кореневий CLI OpenClaw, наприклад `openclaw demo-plugin ping`.
Після встановлення з git використовуйте `openclaw plugins inspect <id> --runtime --json`, щоб перевірити runtime-реєстрації, як-от методи gateway і команди CLI. Якщо Plugin зареєстрував CLI-корінь через `api.registerCli`, виконайте цю команду напряму через кореневий CLI OpenClaw, наприклад `openclaw demo-plugin ping`.
</Accordion>
<Accordion title="Archives">
Підтримувані архіви: `.zip`, `.tgz`, `.tar.gz`, `.tar`. Архіви нативних OpenClaw plugin мають містити дійсний `openclaw.plugin.json` у корені витягнутого plugin; архіви, що містять лише `package.json`, відхиляються до того, як OpenClaw запише записи встановлення.
<Accordion title="Архіви">
Підтримувані архіви: `.zip`, `.tgz`, `.tar.gz`, `.tar`. Архіви нативних OpenClaw Plugin мають містити валідний `openclaw.plugin.json` у корені розпакованого Plugin; архіви, що містять лише `package.json`, відхиляються до того, як OpenClaw записує записи встановлення.
Встановлення Claude marketplace також підтримуються.
Установлення з маркетплейсу Claude також підтримуються.
</Accordion>
</AccordionGroup>
@ -169,32 +169,32 @@ openclaw plugins install clawhub:openclaw-codex-app-server
openclaw plugins install clawhub:openclaw-codex-app-server@1.2.3
```
Голі npm-safe specs plugin під час переходу після запуску за замовчуванням встановлюються з npm:
Голі npm-safe specs Plugin типово встановлюються з npm під час перехідного запуску:
```bash
openclaw plugins install openclaw-codex-app-server
```
Використовуйте `npm:`, щоб зробити розв’язання лише через npm явним:
Використовуйте `npm:`, щоб зробити npm-only розв’язання явним:
```bash
openclaw plugins install npm:openclaw-codex-app-server
openclaw plugins install npm:@scope/plugin-name@1.0.1
```
OpenClaw перед установленням перевіряє заявлену сумісність plugin API / мінімального gateway. Коли вибрана версія ClawHub публікує артефакт ClawPack, OpenClaw завантажує версійний npm-pack `.tgz`, перевіряє digest-заголовок ClawHub і digest артефакта, а потім встановлює його через звичайний шлях архіву. Старіші версії ClawHub без метаданих ClawPack усе ще встановлюються через застарілий шлях перевірки архіву пакета. Записані встановлення зберігають свої метадані джерела ClawHub, тип артефакта, npm integrity, npm shasum, назву tarball і факти digest ClawPack для подальших оновлень.
Неверсійовані встановлення ClawHub зберігають неверсійований записаний spec, щоб `openclaw plugins update` міг відстежувати новіші релізи ClawHub; явні селектори версії або тега, такі як `clawhub:pkg@1.2.3` і `clawhub:pkg@beta`, залишаються закріпленими на цьому селекторі.
OpenClaw перевіряє оголошену сумісність plugin API / мінімального gateway перед встановленням. Коли вибрана версія ClawHub публікує артефакт ClawPack, OpenClaw завантажує версійний npm-pack `.tgz`, перевіряє digest-заголовок ClawHub і digest артефакта, а потім встановлює його через звичайний шлях архіву. Старіші версії ClawHub без метаданих ClawPack усе ще встановлюються через застарілий шлях перевірки архіву пакета. Записані встановлення зберігають свої метадані джерела ClawHub, тип артефакта, npm integrity, npm shasum, ім’я tarball і факти digest ClawPack для подальших оновлень.
Неверсійовані встановлення ClawHub зберігають неверсійований записаний spec, щоб `openclaw plugins update` міг відстежувати новіші релізи ClawHub; явні селектори версії або тега, як-от `clawhub:pkg@1.2.3` і `clawhub:pkg@beta`, залишаються закріпленими за цим селектором.
#### Скорочення marketplace
#### Скорочення маркетплейсу
Використовуйте скорочення `plugin@marketplace`, коли назва marketplace існує в локальному кеші реєстру Claude за адресою `~/.claude/plugins/known_marketplaces.json`:
Використовуйте скорочення `plugin@marketplace`, коли назва маркетплейсу існує в локальному кеші реєстру Claude за адресою `~/.claude/plugins/known_marketplaces.json`:
```bash
openclaw plugins marketplace list <marketplace-name>
openclaw plugins install <plugin-name>@<marketplace-name>
```
Використовуйте `--marketplace`, коли хочете явно передати джерело marketplace:
Використовуйте `--marketplace`, коли хочете явно передати джерело маркетплейсу:
```bash
openclaw plugins install <plugin-name> --marketplace <marketplace-name>
@ -204,28 +204,28 @@ openclaw plugins install <plugin-name> --marketplace ./my-marketplace
```
<Tabs>
<Tab title="Джерела marketplace">
- назва відомого marketplace Claude з `~/.claude/plugins/known_marketplaces.json`
- локальний корінь marketplace або шлях `marketplace.json`
- скорочення репозиторію GitHub, наприклад `owner/repo`
- URL репозиторію GitHub, наприклад `https://github.com/owner/repo`
- git URL
<Tab title="Джерела маркетплейсу">
- назва відомого маркетплейсу Claude з `~/.claude/plugins/known_marketplaces.json`
- корінь локального маркетплейсу або шлях `marketplace.json`
- скорочення репозиторію GitHub, як-от `owner/repo`
- URL репозиторію GitHub, як-от `https://github.com/owner/repo`
- URL git
</Tab>
<Tab title="Правила віддаленого marketplace">
Для віддалених marketplace, завантажених із GitHub або git, записи Plugin мають залишатися всередині клонованого репозиторію marketplace. OpenClaw приймає джерела відносних шляхів із цього репозиторію та відхиляє HTTP(S), абсолютні шляхи, git, GitHub та інші непутеві джерела Plugin із віддалених маніфестів.
<Tab title="Правила віддаленого маркетплейсу">
Для віддалених маркетплейсів, завантажених із GitHub або git, записи плагінів мають залишатися всередині клонованого репозиторію маркетплейсу. OpenClaw приймає джерела відносних шляхів із цього репозиторію та відхиляє HTTP(S), абсолютні шляхи, git, GitHub та інші непутьові джерела плагінів із віддалених маніфестів.
</Tab>
</Tabs>
Для локальних шляхів і архівів OpenClaw автоматично визначає:
- нативні plugins OpenClaw (`openclaw.plugin.json`)
- нативні плагіни OpenClaw (`openclaw.plugin.json`)
- сумісні з Codex пакети (`.codex-plugin/plugin.json`)
- сумісні з Claude пакети (`.claude-plugin/plugin.json` або стандартний макет компонентів Claude)
- сумісні з Claude пакети (`.claude-plugin/plugin.json` або типовий макет компонентів Claude)
- сумісні з Cursor пакети (`.cursor-plugin/plugin.json`)
<Note>
Сумісні пакети встановлюються у звичайний корінь plugins і беруть участь у тому самому потоці list/info/enable/disable. Наразі підтримуються Skills пакета, command-skills Claude, типові значення Claude `settings.json`, типові значення Claude `.lsp.json` / оголошених у маніфесті `lspServers`, command-skills Cursor і сумісні каталоги hook Codex; інші виявлені можливості пакетів показуються в діагностиці/info, але ще не підключені до виконання в runtime.
Сумісні пакети встановлюються у звичайний корінь плагінів і беруть участь у тому самому потоці list/info/enable/disable. Наразі підтримуються Skills пакета, command-Skills Claude, типові значення Claude `settings.json`, типові значення Claude `.lsp.json` / оголошені в маніфесті `lspServers`, command-Skills Cursor і сумісні каталоги хуків Codex; інші виявлені можливості пакетів показуються в діагностиці/info, але ще не підключені до виконання під час роботи.
</Note>
### Список
@ -241,41 +241,41 @@ openclaw plugins search <query> --json
```
<ParamField path="--enabled" type="boolean">
Показувати лише ввімкнені plugins.
Показувати лише ввімкнені плагіни.
</ParamField>
<ParamField path="--verbose" type="boolean">
Перемкнутися з табличного подання на рядки деталей для кожного Plugin з метаданими джерела/походження/версії/активації.
Перемкнутися з табличного подання на рядки деталізації для кожного плагіна з метаданими джерела/походження/версії/активації.
</ParamField>
<ParamField path="--json" type="boolean">
Машиночитаний інвентар, а також діагностика registry і стан установлення залежностей пакета.
Машиночитний інвентар, а також діагностика реєстру й стан встановлення залежностей пакетів.
</ParamField>
<Note>
`plugins list` спочатку читає збережений локальний registry plugins, із резервним варіантом на основі лише маніфесту, коли registry відсутній або недійсний. Це корисно для перевірки, чи Plugin встановлений, увімкнений і видимий для планування холодного запуску, але це не живий runtime-зонд уже запущеного процесу Gateway. Після зміни коду Plugin, увімкнення, політики hook або `plugins.load.paths` перезапустіть Gateway, який обслуговує канал, перш ніж очікувати запуск нового коду `register(api)` або hooks. Для віддалених/container розгортань перевірте, що ви перезапускаєте фактичний дочірній процес `openclaw gateway run`, а не лише процес-обгортку.
`plugins list` спочатку читає збережений локальний реєстр плагінів із резервним варіантом, виведеним лише з маніфестів, коли реєстр відсутній або недійсний. Це корисно для перевірки, чи плагін встановлено, увімкнено та видно для планування холодного запуску, але це не live-перевірка runtime уже запущеного процесу Gateway. Після зміни коду плагіна, увімкнення, політики хуків або `plugins.load.paths` перезапустіть Gateway, який обслуговує канал, перш ніж очікувати запуску нового коду `register(api)` або хуків. Для віддалених/контейнерних розгортань перевірте, що перезапускаєте фактичний дочірній процес `openclaw gateway run`, а не лише процес-обгортку.
`plugins list --json` містить `dependencyStatus` кожного Plugin з `package.json`
`plugins list --json` містить `dependencyStatus` кожного плагіна з `package.json`
`dependencies` і `optionalDependencies`. OpenClaw перевіряє, чи ці назви пакетів
присутні вздовж звичайного шляху пошуку Node `node_modules` для Plugin; він
не імпортує runtime-код Plugin, не запускає менеджер пакетів і не виправляє
наявні вздовж звичайного шляху пошуку Node `node_modules` для плагіна; він
не імпортує runtime-код плагіна, не запускає менеджер пакетів і не виправляє
відсутні залежності.
</Note>
`plugins search` — це віддалений пошук у каталозі ClawHub. Він не перевіряє локальний
стан, не змінює config, не встановлює пакети й не завантажує runtime-код Plugin. Результати
пошуку містять назву пакета ClawHub, сімейство, канал, версію, підсумок і
підказку встановлення, наприклад `openclaw plugins install clawhub:<package>`.
`plugins search` — це пошук у віддаленому каталозі ClawHub. Він не перевіряє локальний
стан, не змінює конфігурацію, не встановлює пакети й не завантажує runtime-код плагіна. Результати пошуку
містять назву пакета ClawHub, сімейство, канал, версію, короткий опис і
підказку для встановлення, як-от `openclaw plugins install clawhub:<package>`.
Для роботи з комплектним Plugin усередині packaged Docker image змонтуйте каталог
джерела Plugin поверх відповідного packaged source path, наприклад
`/app/extensions/synology-chat`. OpenClaw виявить це змонтоване source
overlay перед `/app/dist/extensions/synology-chat`; звичайний скопійований source
directory залишається інертним, тож звичайні packaged installs і далі використовують скомпільований dist.
Для роботи з bundled plugin усередині запакованого Docker-образу змонтуйте з прив'язкою
каталог джерел плагіна поверх відповідного запакованого шляху джерел, як-от
`/app/extensions/synology-chat`. OpenClaw виявить це змонтоване накладання джерел
перед `/app/dist/extensions/synology-chat`; звичайно скопійований каталог джерел
залишається неактивним, тож звичайні запаковані встановлення й далі використовують скомпільований dist.
Для налагодження runtime hook:
Для налагодження runtime-хуків:
- `openclaw plugins inspect <id> --runtime --json` показує зареєстровані hooks і діагностику з проходу перевірки із завантаженням модуля. Runtime-перевірка ніколи не встановлює залежності; використовуйте `openclaw doctor --fix`, щоб очистити legacy dependency state або встановити відсутні налаштовані downloadable plugins.
- `openclaw gateway status --deep --require-rpc` підтверджує досяжний Gateway, підказки service/process, шлях config і справність RPC.
- Некомплектні conversation hooks (`llm_input`, `llm_output`, `before_agent_finalize`, `agent_end`) потребують `plugins.entries.<id>.hooks.allowConversationAccess=true`.
- `openclaw plugins inspect <id> --runtime --json` показує зареєстровані хуки та діагностику з проходу інспекції із завантаженим модулем. Runtime-інспекція ніколи не встановлює залежності; використовуйте `openclaw doctor --fix`, щоб очистити застарілий стан залежностей або встановити відсутні налаштовані завантажувані плагіни.
- `openclaw gateway status --deep --require-rpc` підтверджує доступний Gateway, підказки сервісу/процесу, шлях конфігурації та справність RPC.
- Невбудовані хуки розмови (`llm_input`, `llm_output`, `before_agent_finalize`, `agent_end`) потребують `plugins.entries.<id>.hooks.allowConversationAccess=true`.
Використовуйте `--link`, щоб не копіювати локальний каталог (додає до `plugins.load.paths`):
@ -284,16 +284,16 @@ openclaw plugins install -l ./my-plugin
```
<Note>
`--force` не підтримується з `--link`, оскільки linked installs повторно використовують source path замість копіювання поверх керованої install target.
`--force` не підтримується з `--link`, оскільки пов'язані встановлення повторно використовують шлях джерела замість копіювання поверх керованої цілі встановлення.
Використовуйте `--pin` під час npm installs, щоб зберегти resolved exact spec (`name@version`) у керованому індексі Plugin, залишаючи типову поведінку без фіксації.
Використовуйте `--pin` для npm-встановлень, щоб зберегти розв'язану точну специфікацію (`name@version`) у керованому індексі плагінів, залишаючи типову поведінку без закріплення.
</Note>
### Індекс Plugin
Метадані встановлення Plugin — це керований машиною стан, а не user config. Встановлення й оновлення записують його до `plugins/installs.json` в активному каталозі стану OpenClaw. Його map верхнього рівня `installRecords` є довготривалим джерелом метаданих встановлення, включно із записами для пошкоджених або відсутніх маніфестів Plugin. Масив `plugins` — це похідний від маніфестів кеш cold registry. Файл містить попередження не редагувати й використовується `openclaw plugins update`, uninstall, diagnostics і cold plugin registry.
Метадані встановлення Plugin — це стан, керований машиною, а не конфігурація користувача. Встановлення й оновлення записують його до `plugins/installs.json` в активному каталозі стану OpenClaw. Його верхньорівнева мапа `installRecords` є сталим джерелом метаданих встановлення, включно із записами для пошкоджених або відсутніх маніфестів плагінів. Масив `plugins` — це холодний кеш реєстру, виведений із маніфестів. Файл містить попередження не редагувати його та використовується `openclaw plugins update`, видаленням, діагностикою й холодним реєстром плагінів.
Коли OpenClaw бачить shipped legacy записи `plugins.installs` у config, він переміщує їх до індексу Plugin і видаляє config key; якщо будь-який запис не вдається, config records зберігаються, щоб метадані встановлення не були втрачені.
Коли OpenClaw бачить поставлені застарілі записи `plugins.installs` у конфігурації, він переміщує їх в індекс плагінів і видаляє ключ конфігурації; якщо будь-який запис не вдається, записи конфігурації зберігаються, щоб метадані встановлення не було втрачено.
### Видалення
@ -303,10 +303,10 @@ openclaw plugins uninstall <id> --dry-run
openclaw plugins uninstall <id> --keep-files
```
`uninstall` видаляє записи Plugin з `plugins.entries`, збереженого індексу Plugin, записів списку allow/deny для Plugin і linked записів `plugins.load.paths`, коли це застосовно. Якщо `--keep-files` не встановлено, uninstall також видаляє відстежуваний керований install directory, коли він розташований усередині кореня plugin extensions OpenClaw. Для plugins active memory слот memory скидається до `memory-core`.
`uninstall` видаляє записи плагіна з `plugins.entries`, збереженого індексу плагінів, записів списків дозволу/заборони плагінів і пов'язаних записів `plugins.load.paths`, коли це застосовно. Якщо `--keep-files` не задано, видалення також вилучає відстежуваний керований каталог встановлення, коли він розташований усередині кореня розширень плагінів OpenClaw. Для плагінів Active Memory слот пам'яті скидається до `memory-core`.
<Note>
`--keep-config` підтримується як застарілий alias для `--keep-files`.
`--keep-config` підтримується як застарілий псевдонім для `--keep-files`.
</Note>
### Оновлення
@ -319,33 +319,33 @@ openclaw plugins update @openclaw/voice-call
openclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install
```
Оновлення застосовуються до відстежуваних installs Plugin у керованому індексі Plugin і відстежуваних installs hook-pack у `hooks.internal.installs`.
Оновлення застосовуються до відстежуваних встановлень плагінів у керованому індексі плагінів і відстежуваних встановлень hook-pack у `hooks.internal.installs`.
<AccordionGroup>
<Accordion title="Визначення plugin id порівняно з npm spec">
Коли ви передаєте plugin id, OpenClaw повторно використовує recorded install spec для цього Plugin. Це означає, що раніше збережені dist-tags, як-от `@beta`, і точні pinned versions продовжують використовуватися під час наступних запусків `update <id>`.
<Accordion title="Розв'язання ідентифікатора плагіна й npm-специфікації">
Коли ви передаєте ідентифікатор плагіна, OpenClaw повторно використовує записану специфікацію встановлення для цього плагіна. Це означає, що раніше збережені dist-теги, як-от `@beta`, і точні закріплені версії й надалі використовуються під час пізніших запусків `update <id>`.
Для npm installs ви також можете передати явний npm package spec з dist-tag або exact version. OpenClaw зіставляє цю назву пакета назад із відстежуваним записом Plugin, оновлює цей встановлений Plugin і записує новий npm spec для майбутніх оновлень на основі id.
Для npm-встановлень ви також можете передати явну специфікацію npm-пакета з dist-тегом або точною версією. OpenClaw розв'язує цю назву пакета назад до відстежуваного запису плагіна, оновлює цей встановлений плагін і записує нову npm-специфікацію для майбутніх оновлень на основі ідентифікатора.
Передавання назви npm package без версії або tag також зіставляється назад із відстежуваним записом Plugin. Використовуйте це, коли Plugin було pinned до точної версії, і ви хочете повернути його до стандартної лінії випусків registry.
Передавання назви npm-пакета без версії або тегу також розв'язується назад до відстежуваного запису плагіна. Використовуйте це, коли плагін було закріплено до точної версії, а ви хочете повернути його до типової лінії випусків реєстру.
</Accordion>
<Accordion title="Оновлення beta channel">
`openclaw plugins update` повторно використовує відстежуваний plugin spec, якщо ви не передасте новий spec. `openclaw update` додатково знає активний OpenClaw update channel: на beta channel записи default-line npm і ClawHub Plugin спочатку пробують `@beta`, а потім повертаються до записаного default/latest spec, якщо beta release Plugin не існує. Exact versions і explicit tags залишаються pinned до цього selector.
<Accordion title="Оновлення бета-каналу">
`openclaw plugins update` повторно використовує відстежувану специфікацію плагіна, якщо ви не передаєте нову специфікацію. `openclaw update` додатково знає активний канал оновлень OpenClaw: на бета-каналі записи плагінів npm і ClawHub типової лінії спочатку пробують `@beta`, а потім повертаються до записаної типової/останньої специфікації, якщо бета-випуску плагіна не існує. Точні версії та явні теги залишаються закріпленими за цим селектором.
</Accordion>
<Accordion title="Перевірки версій і drift цілісності">
Перед живим npm update OpenClaw перевіряє встановлену версію пакета за метаданими npm registry. Якщо встановлена версія та recorded artifact identity уже відповідають resolved target, оновлення пропускається без завантаження, повторного встановлення або перезапису `openclaw.json`.
<Accordion title="Перевірки версій і дрейф цілісності">
Перед live-оновленням npm OpenClaw перевіряє встановлену версію пакета щодо метаданих npm-реєстру. Якщо встановлена версія та записана ідентичність артефакта вже збігаються з розв'язаною ціллю, оновлення пропускається без завантаження, повторного встановлення або переписування `openclaw.json`.
Коли існує збережений integrity hash і хеш отриманого artifact змінюється, OpenClaw розглядає це як npm artifact drift. Інтерактивна команда `openclaw plugins update` друкує expected і actual hashes та запитує підтвердження перед продовженням. Non-interactive update helpers завершуються закрито, якщо caller не надає explicit continuation policy.
Коли збережений хеш цілісності існує, а хеш отриманого артефакта змінюється, OpenClaw трактує це як дрейф npm-артефакта. Інтерактивна команда `openclaw plugins update` друкує очікуваний і фактичний хеші та запитує підтвердження перед продовженням. Неінтерактивні помічники оновлення завершуються відмовою за замовчуванням, якщо викликач не надає явну політику продовження.
</Accordion>
<Accordion title="--dangerously-force-unsafe-install під час update">
`--dangerously-force-unsafe-install` також доступний у `plugins update` як break-glass override для хибнопозитивних результатів built-in dangerous-code scan під час оновлень Plugin. Він усе одно не обходить policy blocks Plugin `before_install` або scan-failure blocking і застосовується лише до оновлень Plugin, а не до оновлень hook-pack.
<Accordion title="--dangerously-force-unsafe-install під час оновлення">
`--dangerously-force-unsafe-install` також доступний у `plugins update` як екстрене перевизначення для хибних спрацьовувань вбудованого сканування небезпечного коду під час оновлень плагінів. Він усе одно не обходить блокування політики `before_install` плагіна або блокування через помилку сканування, і застосовується лише до оновлень плагінів, а не до оновлень hook-pack.
</Accordion>
</AccordionGroup>
### Перевірка
### Інспекція
```bash
openclaw plugins inspect <id>
@ -353,36 +353,36 @@ openclaw plugins inspect <id> --runtime
openclaw plugins inspect <id> --json
```
Inspect показує identity, load status, source, можливості manifest, policy flags, diagnostics, install metadata, bundle capabilities і будь-яку виявлену підтримку server MCP або LSP без імпорту runtime Plugin за замовчуванням. Додайте `--runtime`, щоб завантажити модуль Plugin і включити registered hooks, tools, commands, services, gateway methods і HTTP routes. Runtime-перевірка повідомляє про відсутні залежності Plugin напряму; installs і repairs залишаються в `openclaw plugins install`, `openclaw plugins update` і `openclaw doctor --fix`.
Inspect показує ідентичність, стан завантаження, джерело, можливості маніфесту, прапорці політик, діагностику, метадані встановлення, можливості пакета та будь-яку виявлену підтримку серверів MCP або LSP без імпорту runtime плагіна за замовчуванням. Додайте `--runtime`, щоб завантажити модуль плагіна та включити зареєстровані хуки, інструменти, команди, сервіси, методи Gateway і HTTP-маршрути. Runtime-інспекція повідомляє про відсутні залежності плагіна напряму; встановлення та виправлення залишаються в `openclaw plugins install`, `openclaw plugins update` і `openclaw doctor --fix`.
CLI-команди, якими володіє Plugin, встановлюються як кореневі групи команд `openclaw`. Після того як `inspect --runtime` покаже команду в `cliCommands`, запустіть її як `openclaw <command> ...`; наприклад, Plugin, який реєструє `demo-git`, можна перевірити за допомогою `openclaw demo-git ping`.
CLI-команди, якими володіє плагін, встановлюються як кореневі групи команд `openclaw`. Після того як `inspect --runtime` покаже команду в `cliCommands`, запускайте її як `openclaw <command> ...`; наприклад, плагін, що реєструє `demo-git`, можна перевірити через `openclaw demo-git ping`.
Кожен Plugin класифікується за тим, що він фактично реєструє під час runtime:
Кожен плагін класифікується за тим, що він фактично реєструє під час виконання:
- **plain-capability** — один тип capability (наприклад, Plugin лише для provider)
- **hybrid-capability** — кілька типів capability (наприклад, text + speech + images)
- **hook-only** — лише hooks, без capabilities або surfaces
- **non-capability**tools/commands/services, але без capabilities
- **plain-capability** — один тип можливостей (наприклад, плагін лише провайдера)
- **hybrid-capability** — кілька типів можливостей (наприклад, текст + мовлення + зображення)
- **hook-only** — лише хуки, без можливостей або поверхонь
- **non-capability**інструменти/команди/сервіси, але без можливостей
Див. [Форми Plugin](/uk/plugins/architecture#plugin-shapes), щоб дізнатися більше про модель capability.
Див. [Форми Plugin](/uk/plugins/architecture#plugin-shapes), щоб дізнатися більше про модель можливостей.
<Note>
Прапорець `--json` виводить машиночитаний звіт, придатний для scripting і auditing. `inspect --all` рендерить fleet-wide table зі shape, capability kinds, compatibility notices, bundle capabilities і стовпцями hook summary. `info` — це alias для `inspect`.
Прапорець `--json` виводить машиночитний звіт, придатний для скриптів і аудиту. `inspect --all` відображає таблицю для всього набору зі стовпцями форми, видів можливостей, приміток сумісності, можливостей пакета та підсумку хуків. `info` — псевдонім для `inspect`.
</Note>
### Doctor
### Діагностика
```bash
openclaw plugins doctor
```
`doctor` повідомляє про помилки завантаження Plugin, діагностику manifest/discovery і compatibility notices. Коли все чисто, він друкує `No plugin issues detected.`
`doctor` повідомляє про помилки завантаження плагінів, діагностику маніфестів/виявлення та примітки сумісності. Коли все чисто, він друкує `No plugin issues detected.`
Якщо налаштований Plugin присутній на диску, але заблокований перевірками path-safety у loader, config validation зберігає запис Plugin і повідомляє про нього як `present but blocked`. Виправте попередню blocked-plugin diagnostic, наприклад ownership path або world-writable permissions, замість видалення config `plugins.entries.<id>` або `plugins.allow`.
Якщо налаштований плагін наявний на диску, але заблокований перевірками безпеки шляхів завантажувача, валідація конфігурації зберігає запис плагіна й повідомляє про нього як `present but blocked`. Виправте попередню діагностику заблокованого плагіна, як-от власність шляху або дозволи на запис для всіх, замість видалення конфігурації `plugins.entries.<id>` або `plugins.allow`.
Для збоїв форми модуля, як-от відсутні exports `register`/`activate`, повторно запустіть з `OPENCLAW_PLUGIN_LOAD_DEBUG=1`, щоб включити компактний підсумок export-shape у diagnostic output.
Для збоїв форми модуля, як-от відсутні експорти `register`/`activate`, перезапустіть із `OPENCLAW_PLUGIN_LOAD_DEBUG=1`, щоб включити стислий підсумок форми експортів у діагностичний вивід.
### Registry
### Реєстр
```bash
openclaw plugins registry
@ -390,27 +390,27 @@ openclaw plugins registry --refresh
openclaw plugins registry --json
```
Локальний registry Plugin — це збережена cold read model OpenClaw для identity встановленого Plugin, enablement, source metadata і contribution ownership. Звичайний запуск, provider owner lookup, channel setup classification і plugin inventory можуть читати його без імпорту runtime modules Plugin.
Локальний реєстр плагінів — це збережена холодна модель читання OpenClaw для встановленої ідентичності плагінів, увімкнення, метаданих джерела та власників внесків. Звичайний запуск, пошук власника провайдера, класифікація налаштування каналу та інвентар плагінів можуть читати його без імпорту runtime-модулів плагінів.
Використовуйте `plugins registry`, щоб перевірити, чи збережений реєстр наявний, актуальний або застарілий. Використовуйте `--refresh`, щоб перебудувати його зі збереженого індексу Plugin, політики конфігурації та метаданих маніфесту/пакета. Це шлях відновлення, а не шлях активації під час виконання.
Використовуйте `plugins registry`, щоб перевірити, чи наявний збережений реєстр, чи він актуальний або застарілий. Використовуйте `--refresh`, щоб перебудувати його зі збереженого індексу Plugin, політики конфігурації та метаданих маніфесту/пакета. Це шлях відновлення, а не шлях активації під час виконання.
`openclaw doctor --fix` також виправляє суміжне з реєстром відхилення керованого npm: якщо осиротілий пакет `@openclaw/*` у корені npm керованого Plugin затіняє вбудований Plugin, doctor видаляє цей застарілий пакет і перебудовує реєстр, щоб запуск перевірявся за вбудованим маніфестом.
`openclaw doctor --fix` також виправляє кероване розходження npm поруч із реєстром: якщо осиротілий або відновлений пакет `@openclaw/*` у керованому npm-корені Plugin затінює вбудований Plugin, doctor видаляє цей застарілий пакет і перебудовує реєстр, щоб запуск перевірявся за вбудованим маніфестом.
<Warning>
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` — це застарілий аварійний перемикач сумісності для збоїв читання реєстру. Надавайте перевагу `plugins registry --refresh` або `openclaw doctor --fix`; резервний варіант через env призначений лише для аварійного відновлення запуску під час розгортання міграції.
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` — це застарілий аварійний перемикач сумісності для збоїв читання реєстру. Надавайте перевагу `plugins registry --refresh` або `openclaw doctor --fix`; резервний варіант через змінну середовища призначений лише для аварійного відновлення запуску, поки міграція розгортається.
</Warning>
### Marketplace
### Маркетплейс
```bash
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
```
Список Marketplace приймає локальний шлях Marketplace, шлях `marketplace.json`, скорочення GitHub на кшталт `owner/repo`, URL репозиторію GitHub або git URL. `--json` виводить мітку розпізнаного джерела разом із розібраним маніфестом Marketplace і записами Plugin.
Список маркетплейсу приймає локальний шлях до маркетплейсу, шлях до `marketplace.json`, скорочення GitHub на кшталт `owner/repo`, URL репозиторію GitHub або git URL. `--json` виводить мітку розв’язаного джерела, а також розібраний маніфест маркетплейсу та записи Plugin.
## Пов’язане
- [Створення Plugin](/uk/plugins/building-plugins)
- [Довідник CLI](/uk/cli)
- [Plugin спільноти](/uk/plugins/community)
- [Спільнотні Plugin](/uk/plugins/community)

View File

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