chore(i18n): refresh uk translations
This commit is contained in:
parent
03b55fdc3d
commit
cbc53811bc
@ -3,34 +3,34 @@ read_when:
|
||||
- Ви хочете встановити або керувати плагінами Gateway чи сумісними пакетами
|
||||
- Ви хочете налагодити збої завантаження Plugin
|
||||
sidebarTitle: Plugins
|
||||
summary: Довідник CLI для `openclaw plugins` (list, install, marketplace, uninstall, enable/disable, doctor)
|
||||
summary: Довідник CLI для `openclaw plugins` (список, встановлення, маркетплейс, видалення, увімкнення/вимкнення, doctor)
|
||||
title: Плагіни
|
||||
x-i18n:
|
||||
generated_at: "2026-05-04T04:43:52Z"
|
||||
generated_at: "2026-05-04T08:21:39Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 36ae7edb12986ead7e126f25e0761bf312b2644b35017181b674082105886776
|
||||
source_hash: d3f0ac9412e24f3598e9bab6389f770b3d0d26268d9907891697919d9371f1c1
|
||||
source_path: cli/plugins.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Керуйте Plugin-ами Gateway, пакетами хуків і сумісними бандлами.
|
||||
Керуйте Gateway plugins, наборами хуків і сумісними пакетами.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Plugin system" href="/uk/tools/plugin">
|
||||
Посібник для кінцевих користувачів зі встановлення, увімкнення та усунення проблем із Plugin-ами.
|
||||
Посібник для кінцевих користувачів щодо встановлення, увімкнення й усунення несправностей plugins.
|
||||
</Card>
|
||||
<Card title="Manage plugins" href="/uk/plugins/manage-plugins">
|
||||
Короткі приклади для встановлення, перегляду списку, оновлення, видалення та публікації.
|
||||
Короткі приклади для встановлення, перегляду списку, оновлення, видалення й публікації.
|
||||
</Card>
|
||||
<Card title="Plugin bundles" href="/uk/plugins/bundles">
|
||||
Модель сумісності бандлів.
|
||||
Модель сумісності пакетів.
|
||||
</Card>
|
||||
<Card title="Plugin manifest" href="/uk/plugins/manifest">
|
||||
Поля маніфесту та схема конфігурації.
|
||||
Поля маніфесту й схема конфігурації.
|
||||
</Card>
|
||||
<Card title="Security" href="/uk/gateway/security">
|
||||
Посилення безпеки для встановлень Plugin-ів.
|
||||
Посилення безпеки для встановлення 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).
|
||||
|
||||
<Note>
|
||||
Вбудовані Plugin-и постачаються з OpenClaw. Деякі ввімкнені за замовчуванням (наприклад, вбудовані провайдери моделей, вбудовані провайдери мовлення та вбудований браузерний Plugin); інші потребують `plugins enable`.
|
||||
Вбудовані plugins постачаються з OpenClaw. Деякі ввімкнені за замовчуванням (наприклад, вбудовані постачальники моделей, вбудовані постачальники мовлення та вбудований браузерний plugin); інші потребують `plugins enable`.
|
||||
|
||||
Нативні Plugin-и OpenClaw мають постачати `openclaw.plugin.json` із вбудованою JSON Schema (`configSchema`, навіть якщо вона порожня). Сумісні бандли натомість використовують власні маніфести бандлів.
|
||||
Нативні OpenClaw plugins мають постачати `openclaw.plugin.json` із вбудованою 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,
|
||||
а не skills. Використовуйте `openclaw skills search` для Skills ClawHub.
|
||||
`plugins search` запитує ClawHub щодо доступних для встановлення пакетів plugin і виводить
|
||||
назви пакетів, готові до встановлення. Він шукає пакети code-plugin і bundle-plugin,
|
||||
а не skills. Використовуйте `openclaw skills search` для ClawHub skills.
|
||||
|
||||
<Note>
|
||||
ClawHub є основною поверхнею розповсюдження й пошуку для більшості Plugin-ів. Npm
|
||||
залишається підтримуваним резервним варіантом і шляхом прямого встановлення. Належні OpenClaw
|
||||
пакети Plugin-ів `@openclaw/*` знову публікуються в npm; див. поточний список
|
||||
на [npmjs.com/org/openclaw](https://www.npmjs.com/org/openclaw) або
|
||||
[інвентар Plugin-ів](/uk/plugins/plugin-inventory). Стабільні встановлення використовують `latest`.
|
||||
Встановлення та оновлення beta-каналу віддають перевагу npm `beta` dist-tag, коли цей тег
|
||||
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`, коли цей тег
|
||||
доступний, а потім повертаються до `latest`.
|
||||
</Note>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Config includes and invalid-config repair">
|
||||
Якщо ваш розділ `plugins` підтримується однофайловим `$include`, `plugins install/update/enable/disable/uninstall` записують зміни в цей включений файл і залишають `openclaw.json` без змін. Кореневі includes, масиви includes та includes із сусідніми перевизначеннями завершуються закрито замість вирівнювання. Див. [Включення конфігурації](/uk/gateway/configuration) для підтримуваних форм.
|
||||
Якщо ваш розділ `plugins` підтримується однофайловим `$include`, `plugins install/update/enable/disable/uninstall` записують зміни в цей включений файл і залишають `openclaw.json` без змін. Кореневі include, масиви include та include із сусідніми перевизначеннями завершуються закрито замість сплющування. Див. [Config includes](/uk/gateway/configuration) щодо підтримуваних форм.
|
||||
|
||||
Якщо конфігурація недійсна під час встановлення, `plugins install` зазвичай завершується закрито й повідомляє, що спершу потрібно запустити `openclaw doctor --fix`. Під час запуску Gateway і гарячого перезавантаження недійсна конфігурація Plugin-ів завершується закрито, як і будь-яка інша недійсна конфігурація; `openclaw doctor --fix` може ізолювати недійсний запис Plugin. Єдиний задокументований виняток під час встановлення — вузький шлях відновлення вбудованого Plugin для Plugin-ів, які явно погоджуються на `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>`.
|
||||
`--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-посилання, як-от `git:github.com/acme/plugin@v1.2.3`, коли хочете закріплене джерело. Він не підтримується з `--marketplace`, оскільки встановлення з marketplace зберігають метадані джерела marketplace замість npm spec.
|
||||
`--pin` застосовується лише до встановлень npm. Він не підтримується з установленнями `git:`; використовуйте явний git ref, наприклад `git:github.com/acme/plugin@v1.2.3`, коли потрібне закріплене джерело. Він не підтримується з `--marketplace`, бо встановлення marketplace зберігають метадані джерела marketplace замість npm spec.
|
||||
</Accordion>
|
||||
<Accordion title="--dangerously-force-unsafe-install">
|
||||
`--dangerously-force-unsafe-install` — це аварійна опція для хибнопозитивних спрацювань вбудованого сканера небезпечного коду. Вона дає змогу продовжити встановлення навіть тоді, коли вбудований сканер повідомляє про знахідки `critical`, але вона **не** обходить блокування політики хуків Plugin `before_install` і **не** обходить збої сканування.
|
||||
`--dangerously-force-unsafe-install` — це аварійна опція для хибнопозитивних спрацьовувань у вбудованому сканері небезпечного коду. Вона дозволяє продовжити встановлення навіть тоді, коли вбудований сканер повідомляє про знахідки `critical`, але **не** обходить блокування політики хуків plugin `before_install` і **не** обходить збої сканування.
|
||||
|
||||
Цей CLI-прапорець застосовується до потоків встановлення/оновлення Plugin. Встановлення залежностей Skills через Gateway використовує відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком завантаження/встановлення Skills із ClawHub.
|
||||
Цей прапорець CLI застосовується до потоків встановлення/оновлення plugin. Встановлення залежностей Skills через Gateway використовують відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком завантаження/встановлення Skills із ClawHub.
|
||||
|
||||
Якщо 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` для відфільтрованої видимості хуків і ввімкнення окремих хуків, а не для встановлення пакетів.
|
||||
`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`.
|
||||
|
||||
Якщо простий spec встановлення збігається з офіційним id Plugin (наприклад, `diffs`), OpenClaw встановлює запис каталогу напряму. Щоб встановити npm-пакет із такою самою назвою, використовуйте явний scoped spec (наприклад, `@scope/diffs`).
|
||||
Якщо голий install 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>`, щоб перед встановленням перейти на гілку, тег або commit.
|
||||
Використовуйте `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 джерела та розв’язаний commit, щоб `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`. Архіви нативних Plugin-ів OpenClaw мають містити дійсний `openclaw.plugin.json` у витягнутому корені Plugin; архіви, що містять лише `package.json`, відхиляються до того, як OpenClaw запише записи встановлення.
|
||||
Підтримувані архіви: `.zip`, `.tgz`, `.tar.gz`, `.tar`. Архіви нативних OpenClaw plugin мають містити дійсний `openclaw.plugin.json` у корені витягнутого plugin; архіви, що містять лише `package.json`, відхиляються до того, як OpenClaw запише записи встановлення.
|
||||
|
||||
Встановлення з Claude marketplace також підтримуються.
|
||||
Встановлення Claude marketplace також підтримуються.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -169,21 +169,21 @@ openclaw plugins install clawhub:openclaw-codex-app-server
|
||||
openclaw plugins install clawhub:openclaw-codex-app-server@1.2.3
|
||||
```
|
||||
|
||||
Прості npm-безпечні specs Plugin встановлюються з npm за замовчуванням під час перехідного запуску:
|
||||
Голі npm-safe specs plugin під час переходу після запуску за замовчуванням встановлюються з npm:
|
||||
|
||||
```bash
|
||||
openclaw plugins install openclaw-codex-app-server
|
||||
```
|
||||
|
||||
Використовуйте `npm:`, щоб зробити npm-only розв’язання явним:
|
||||
Використовуйте `npm:`, щоб зробити розв’язання лише через npm явним:
|
||||
|
||||
```bash
|
||||
openclaw plugins install npm:openclaw-codex-app-server
|
||||
openclaw plugins install npm:@scope/plugin-name@1.0.1
|
||||
```
|
||||
|
||||
OpenClaw перевіряє оголошену сумісність plugin API / minimum 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
|
||||
|
||||
@ -204,28 +204,28 @@ openclaw plugins install <plugin-name> --marketplace ./my-marketplace
|
||||
```
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Marketplace sources">
|
||||
<Tab title="Джерела marketplace">
|
||||
- назва відомого marketplace Claude з `~/.claude/plugins/known_marketplaces.json`
|
||||
- корінь локального marketplace або шлях `marketplace.json`
|
||||
- локальний корінь marketplace або шлях `marketplace.json`
|
||||
- скорочення репозиторію GitHub, наприклад `owner/repo`
|
||||
- URL репозиторію GitHub, наприклад `https://github.com/owner/repo`
|
||||
- git URL
|
||||
|
||||
</Tab>
|
||||
<Tab title="Remote marketplace rules">
|
||||
Для віддалених marketplace, завантажених із GitHub або git, записи плагінів мають залишатися всередині клонованого репозиторію marketplace. OpenClaw приймає джерела з відносними шляхами з цього репозиторію та відхиляє HTTP(S), абсолютні шляхи, git, GitHub та інші джерела плагінів, що не є шляхами, з віддалених маніфестів.
|
||||
<Tab title="Правила віддаленого marketplace">
|
||||
Для віддалених marketplace, завантажених із GitHub або git, записи Plugin мають залишатися всередині клонованого репозиторію marketplace. OpenClaw приймає джерела відносних шляхів із цього репозиторію та відхиляє HTTP(S), абсолютні шляхи, git, GitHub та інші непутеві джерела Plugin із віддалених маніфестів.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Для локальних шляхів і архівів OpenClaw автоматично визначає:
|
||||
|
||||
- нативні плагіни OpenClaw (`openclaw.plugin.json`)
|
||||
- сумісні з Codex бандли (`.codex-plugin/plugin.json`)
|
||||
- сумісні з Claude бандли (`.claude-plugin/plugin.json` або стандартний макет компонентів Claude)
|
||||
- сумісні з Cursor бандли (`.cursor-plugin/plugin.json`)
|
||||
- нативні plugins OpenClaw (`openclaw.plugin.json`)
|
||||
- сумісні з Codex пакети (`.codex-plugin/plugin.json`)
|
||||
- сумісні з Claude пакети (`.claude-plugin/plugin.json` або стандартний макет компонентів Claude)
|
||||
- сумісні з Cursor пакети (`.cursor-plugin/plugin.json`)
|
||||
|
||||
<Note>
|
||||
Сумісні бандли встановлюються у звичайний корінь плагінів і беруть участь у тому самому потоці list/info/enable/disable. Наразі підтримуються навички бандлів, Claude command-skills, стандартні значення Claude `settings.json`, стандартні значення Claude `.lsp.json` / оголошені в маніфесті `lspServers`, Cursor command-skills і сумісні директорії хуків Codex; інші виявлені можливості бандлів показуються в діагностиці/info, але ще не підключені до виконання під час роботи.
|
||||
Сумісні пакети встановлюються у звичайний корінь plugins і беруть участь у тому самому потоці list/info/enable/disable. Наразі підтримуються Skills пакета, command-skills Claude, типові значення Claude `settings.json`, типові значення Claude `.lsp.json` / оголошених у маніфесті `lspServers`, command-skills Cursor і сумісні каталоги hook Codex; інші виявлені можливості пакетів показуються в діагностиці/info, але ще не підключені до виконання в runtime.
|
||||
</Note>
|
||||
|
||||
### Список
|
||||
@ -241,59 +241,59 @@ 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` спершу читає збережений локальний реєстр плагінів, із похідним резервним варіантом лише на основі маніфестів, якщо реєстр відсутній або недійсний. Це корисно для перевірки, чи плагін встановлено, увімкнено та видно для планування холодного запуску, але це не живий runtime-зонд уже запущеного процесу Gateway. Після зміни коду плагіна, стану ввімкнення, політики хуків або `plugins.load.paths` перезапустіть Gateway, який обслуговує канал, перш ніж очікувати запуску нового коду `register(api)` або хуків. Для віддалених/контейнерних розгортань перевірте, що ви перезапускаєте фактичний дочірній процес `openclaw gateway run`, а не лише процес-обгортку.
|
||||
`plugins list` спочатку читає збережений локальний registry plugins, із резервним варіантом на основі лише маніфесту, коли registry відсутній або недійсний. Це корисно для перевірки, чи Plugin встановлений, увімкнений і видимий для планування холодного запуску, але це не живий runtime-зонд уже запущеного процесу Gateway. Після зміни коду Plugin, увімкнення, політики hook або `plugins.load.paths` перезапустіть Gateway, який обслуговує канал, перш ніж очікувати запуск нового коду `register(api)` або hooks. Для віддалених/container розгортань перевірте, що ви перезапускаєте фактичний дочірній процес `openclaw gateway run`, а не лише процес-обгортку.
|
||||
|
||||
`plugins list --json` включає `dependencyStatus` кожного плагіна з `package.json`
|
||||
`plugins list --json` містить `dependencyStatus` кожного Plugin з `package.json`
|
||||
`dependencies` і `optionalDependencies`. OpenClaw перевіряє, чи ці назви пакетів
|
||||
присутні на звичайному для плагіна шляху пошуку Node `node_modules`; він
|
||||
не імпортує runtime-код плагіна, не запускає менеджер пакетів і не виправляє
|
||||
присутні вздовж звичайного шляху пошуку Node `node_modules` для Plugin; він
|
||||
не імпортує runtime-код Plugin, не запускає менеджер пакетів і не виправляє
|
||||
відсутні залежності.
|
||||
</Note>
|
||||
|
||||
`plugins search` — це віддалений пошук у каталозі ClawHub. Він не перевіряє локальний
|
||||
стан, не змінює конфігурацію, не встановлює пакети й не завантажує runtime-код плагіна. Результати пошуку
|
||||
містять назву пакета ClawHub, родину, канал, версію, підсумок і
|
||||
підказку щодо встановлення, наприклад `openclaw plugins install clawhub:<package>`.
|
||||
стан, не змінює config, не встановлює пакети й не завантажує runtime-код Plugin. Результати
|
||||
пошуку містять назву пакета ClawHub, сімейство, канал, версію, підсумок і
|
||||
підказку встановлення, наприклад `openclaw plugins install clawhub:<package>`.
|
||||
|
||||
Для роботи з вбудованим плагіном усередині запакованого Docker-образу змонтуйте директорію
|
||||
джерела плагіна поверх відповідного запакованого шляху джерела, наприклад
|
||||
`/app/extensions/synology-chat`. OpenClaw виявить це змонтоване накладання джерела
|
||||
перед `/app/dist/extensions/synology-chat`; звичайна скопійована директорія джерела
|
||||
залишається неактивною, тому звичайні запаковані встановлення й далі використовують скомпільований dist.
|
||||
Для роботи з комплектним 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.
|
||||
|
||||
Для налагодження runtime-хуків:
|
||||
Для налагодження runtime hook:
|
||||
|
||||
- `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`.
|
||||
- `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`.
|
||||
|
||||
Використовуйте `--link`, щоб не копіювати локальну директорію (додає до `plugins.load.paths`):
|
||||
Використовуйте `--link`, щоб не копіювати локальний каталог (додає до `plugins.load.paths`):
|
||||
|
||||
```bash
|
||||
openclaw plugins install -l ./my-plugin
|
||||
```
|
||||
|
||||
<Note>
|
||||
`--force` не підтримується з `--link`, оскільки пов'язані встановлення повторно використовують шлях джерела замість копіювання поверх керованої цілі встановлення.
|
||||
`--force` не підтримується з `--link`, оскільки linked installs повторно використовують source path замість копіювання поверх керованої install target.
|
||||
|
||||
Використовуйте `--pin` для npm-встановлень, щоб зберегти розв'язану точну специфікацію (`name@version`) у керованому індексі плагінів, залишаючи стандартну поведінку незакріпленою.
|
||||
Використовуйте `--pin` під час npm installs, щоб зберегти resolved exact spec (`name@version`) у керованому індексі Plugin, залишаючи типову поведінку без фіксації.
|
||||
</Note>
|
||||
|
||||
### Індекс плагінів
|
||||
### Індекс Plugin
|
||||
|
||||
Метадані встановлення плагінів — це стан, керований машиною, а не користувацька конфігурація. Встановлення та оновлення записують його до `plugins/installs.json` у активній директорії стану OpenClaw. Його верхньорівнева мапа `installRecords` є стійким джерелом метаданих встановлення, зокрема записів для зламаних або відсутніх маніфестів плагінів. Масив `plugins` — це похідний із маніфестів кеш холодного реєстру. Файл містить попередження не редагувати його та використовується `openclaw plugins update`, видаленням, діагностикою і холодним реєстром плагінів.
|
||||
Метадані встановлення Plugin — це керований машиною стан, а не user config. Встановлення й оновлення записують його до `plugins/installs.json` в активному каталозі стану OpenClaw. Його map верхнього рівня `installRecords` є довготривалим джерелом метаданих встановлення, включно із записами для пошкоджених або відсутніх маніфестів Plugin. Масив `plugins` — це похідний від маніфестів кеш cold registry. Файл містить попередження не редагувати й використовується `openclaw plugins update`, uninstall, diagnostics і cold plugin registry.
|
||||
|
||||
Коли OpenClaw бачить поставлені застарілі записи `plugins.installs` у конфігурації, він переносить їх в індекс плагінів і видаляє ключ конфігурації; якщо будь-який запис не вдається, записи конфігурації зберігаються, щоб метадані встановлення не були втрачені.
|
||||
Коли OpenClaw бачить shipped legacy записи `plugins.installs` у config, він переміщує їх до індексу Plugin і видаляє config key; якщо будь-який запис не вдається, config records зберігаються, щоб метадані встановлення не були втрачені.
|
||||
|
||||
### Видалення
|
||||
|
||||
@ -303,10 +303,10 @@ openclaw plugins uninstall <id> --dry-run
|
||||
openclaw plugins uninstall <id> --keep-files
|
||||
```
|
||||
|
||||
`uninstall` видаляє записи плагіна з `plugins.entries`, збереженого індексу плагінів, записів списків дозволу/заборони плагінів і пов'язаних записів `plugins.load.paths`, коли це застосовно. Якщо `--keep-files` не встановлено, видалення також прибирає відстежувану керовану директорію встановлення, коли вона розташована всередині кореня розширень плагінів OpenClaw. Для плагінів активної пам'яті слот пам'яті скидається до `memory-core`.
|
||||
`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`.
|
||||
|
||||
<Note>
|
||||
`--keep-config` підтримується як застарілий псевдонім для `--keep-files`.
|
||||
`--keep-config` підтримується як застарілий alias для `--keep-files`.
|
||||
</Note>
|
||||
|
||||
### Оновлення
|
||||
@ -319,33 +319,33 @@ openclaw plugins update @openclaw/voice-call
|
||||
openclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install
|
||||
```
|
||||
|
||||
Оновлення застосовуються до відстежуваних встановлень плагінів у керованому індексі плагінів і відстежуваних встановлень hook-pack у `hooks.internal.installs`.
|
||||
Оновлення застосовуються до відстежуваних installs Plugin у керованому індексі Plugin і відстежуваних installs hook-pack у `hooks.internal.installs`.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Resolving plugin id vs npm spec">
|
||||
Коли ви передаєте id плагіна, OpenClaw повторно використовує записану специфікацію встановлення для цього плагіна. Це означає, що раніше збережені dist-tags, як-от `@beta`, і точні закріплені версії продовжують використовуватися під час наступних запусків `update <id>`.
|
||||
<Accordion title="Визначення plugin id порівняно з npm spec">
|
||||
Коли ви передаєте plugin id, OpenClaw повторно використовує recorded install spec для цього Plugin. Це означає, що раніше збережені dist-tags, як-от `@beta`, і точні pinned versions продовжують використовуватися під час наступних запусків `update <id>`.
|
||||
|
||||
Для npm-встановлень ви також можете передати явну специфікацію npm-пакета з dist-tag або точною версією. OpenClaw зіставляє цю назву пакета назад із відстежуваним записом плагіна, оновлює цей встановлений плагін і записує нову npm-специфікацію для майбутніх оновлень на основі id.
|
||||
Для npm installs ви також можете передати явний npm package spec з dist-tag або exact version. OpenClaw зіставляє цю назву пакета назад із відстежуваним записом Plugin, оновлює цей встановлений Plugin і записує новий npm spec для майбутніх оновлень на основі id.
|
||||
|
||||
Передання назви npm-пакета без версії або тега також зіставляється назад із відстежуваним записом плагіна. Використовуйте це, коли плагін було закріплено на точній версії, і ви хочете повернути його до стандартної лінії випусків реєстру.
|
||||
Передавання назви npm package без версії або tag також зіставляється назад із відстежуваним записом Plugin. Використовуйте це, коли Plugin було pinned до точної версії, і ви хочете повернути його до стандартної лінії випусків registry.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Beta channel updates">
|
||||
`openclaw plugins update` повторно використовує відстежувану специфікацію плагіна, якщо ви не передасте нову специфікацію. `openclaw update` додатково знає активний канал оновлення OpenClaw: на beta-каналі записи npm і плагінів ClawHub зі стандартної лінії спершу пробують `@beta`, а потім повертаються до записаної специфікації default/latest, якщо beta-випуску плагіна не існує. Точні версії та явні теги залишаються закріпленими на цьому селекторі.
|
||||
<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>
|
||||
<Accordion title="Version checks and integrity drift">
|
||||
Перед живим npm-оновленням OpenClaw перевіряє встановлену версію пакета відносно метаданих npm-реєстру. Якщо встановлена версія та записана ідентичність артефакта вже відповідають розв'язаній цілі, оновлення пропускається без завантаження, повторного встановлення або перезапису `openclaw.json`.
|
||||
<Accordion title="Перевірки версій і drift цілісності">
|
||||
Перед живим npm update OpenClaw перевіряє встановлену версію пакета за метаданими npm registry. Якщо встановлена версія та recorded artifact identity уже відповідають resolved target, оновлення пропускається без завантаження, повторного встановлення або перезапису `openclaw.json`.
|
||||
|
||||
Коли існує збережений хеш цілісності й хеш отриманого артефакта змінюється, OpenClaw трактує це як дрейф npm-артефакта. Інтерактивна команда `openclaw plugins update` друкує очікуваний і фактичний хеші та запитує підтвердження перед продовженням. Неінтерактивні помічники оновлення завершуються закрито, якщо викликач не надає явну політику продовження.
|
||||
Коли існує збережений integrity hash і хеш отриманого artifact змінюється, OpenClaw розглядає це як npm artifact drift. Інтерактивна команда `openclaw plugins update` друкує expected і actual hashes та запитує підтвердження перед продовженням. Non-interactive update helpers завершуються закрито, якщо caller не надає explicit continuation policy.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="--dangerously-force-unsafe-install on update">
|
||||
`--dangerously-force-unsafe-install` також доступний у `plugins update` як аварійне перевизначення для хибних спрацювань вбудованого сканування небезпечного коду під час оновлень плагінів. Він усе одно не обходить блокування політики `before_install` плагіна або блокування через помилки сканування, і застосовується лише до оновлень плагінів, а не до оновлень hook-pack.
|
||||
<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>
|
||||
</AccordionGroup>
|
||||
|
||||
### Інспекція
|
||||
### Перевірка
|
||||
|
||||
```bash
|
||||
openclaw plugins inspect <id>
|
||||
@ -353,21 +353,21 @@ openclaw plugins inspect <id> --runtime
|
||||
openclaw plugins inspect <id> --json
|
||||
```
|
||||
|
||||
Інспекція показує ідентичність, стан завантаження, джерело, можливості маніфесту, прапорці політики, діагностику, метадані встановлення, можливості бандла та будь-яку виявлену підтримку серверів MCP або LSP без імпорту runtime плагіна за замовчуванням. Додайте `--runtime`, щоб завантажити модуль плагіна та включити зареєстровані хуки, інструменти, команди, сервіси, методи gateway і HTTP-маршрути. Runtime-інспекція повідомляє про відсутні залежності плагіна напряму; встановлення та виправлення залишаються в `openclaw plugins install`, `openclaw plugins update` і `openclaw doctor --fix`.
|
||||
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`.
|
||||
|
||||
Команди CLI, якими володіє плагін, встановлюються як кореневі групи команд `openclaw`. Після того як `inspect --runtime` покаже команду під `cliCommands`, запустіть її як `openclaw <command> ...`; наприклад, плагін, який реєструє `demo-git`, можна перевірити за допомогою `openclaw demo-git ping`.
|
||||
CLI-команди, якими володіє Plugin, встановлюються як кореневі групи команд `openclaw`. Після того як `inspect --runtime` покаже команду в `cliCommands`, запустіть її як `openclaw <command> ...`; наприклад, Plugin, який реєструє `demo-git`, можна перевірити за допомогою `openclaw demo-git ping`.
|
||||
|
||||
Кожен плагін класифікується за тим, що він фактично реєструє під час роботи:
|
||||
Кожен Plugin класифікується за тим, що він фактично реєструє під час runtime:
|
||||
|
||||
- **plain-capability** — один тип можливості (наприклад, плагін лише провайдера)
|
||||
- **hybrid-capability** — кілька типів можливостей (наприклад, текст + мовлення + зображення)
|
||||
- **hook-only** — лише хуки, без можливостей або поверхонь
|
||||
- **non-capability** — інструменти/команди/сервіси, але без можливостей
|
||||
- **plain-capability** — один тип capability (наприклад, Plugin лише для provider)
|
||||
- **hybrid-capability** — кілька типів capability (наприклад, text + speech + images)
|
||||
- **hook-only** — лише hooks, без capabilities або surfaces
|
||||
- **non-capability** — tools/commands/services, але без capabilities
|
||||
|
||||
Див. [Форми плагінів](/uk/plugins/architecture#plugin-shapes), щоб дізнатися більше про модель можливостей.
|
||||
Див. [Форми Plugin](/uk/plugins/architecture#plugin-shapes), щоб дізнатися більше про модель capability.
|
||||
|
||||
<Note>
|
||||
Прапорець `--json` виводить машиночитний звіт, придатний для скриптів і аудиту. `inspect --all` відображає таблицю для всього парку з формою, видами можливостей, повідомленнями сумісності, можливостями бандлів і колонками підсумку хуків. `info` є псевдонімом для `inspect`.
|
||||
Прапорець `--json` виводить машиночитаний звіт, придатний для scripting і auditing. `inspect --all` рендерить fleet-wide table зі shape, capability kinds, compatibility notices, bundle capabilities і стовпцями hook summary. `info` — це alias для `inspect`.
|
||||
</Note>
|
||||
|
||||
### Doctor
|
||||
@ -376,13 +376,13 @@ openclaw plugins inspect <id> --json
|
||||
openclaw plugins doctor
|
||||
```
|
||||
|
||||
`doctor` повідомляє про помилки завантаження плагінів, діагностику маніфестів/виявлення та повідомлення сумісності. Коли все чисто, він друкує `No plugin issues detected.`
|
||||
`doctor` повідомляє про помилки завантаження Plugin, діагностику manifest/discovery і compatibility notices. Коли все чисто, він друкує `No plugin issues detected.`
|
||||
|
||||
Якщо налаштований плагін присутній на диску, але заблокований перевірками безпеки шляхів завантажувача, перевірка конфігурації зберігає запис плагіна та повідомляє про нього як `present but blocked`. Виправте попередню діагностику заблокованого плагіна, наприклад власника шляху або дозволи world-writable, замість видалення конфігурації `plugins.entries.<id>` або `plugins.allow`.
|
||||
Якщо налаштований Plugin присутній на диску, але заблокований перевірками path-safety у loader, config validation зберігає запис Plugin і повідомляє про нього як `present but blocked`. Виправте попередню blocked-plugin diagnostic, наприклад ownership path або world-writable permissions, замість видалення config `plugins.entries.<id>` або `plugins.allow`.
|
||||
|
||||
Для збоїв форми модуля, як-от відсутні експорти `register`/`activate`, повторно запустіть із `OPENCLAW_PLUGIN_LOAD_DEBUG=1`, щоб включити компактний підсумок форми експортів у діагностичний вивід.
|
||||
Для збоїв форми модуля, як-от відсутні exports `register`/`activate`, повторно запустіть з `OPENCLAW_PLUGIN_LOAD_DEBUG=1`, щоб включити компактний підсумок export-shape у diagnostic output.
|
||||
|
||||
### Реєстр
|
||||
### Registry
|
||||
|
||||
```bash
|
||||
openclaw plugins registry
|
||||
@ -390,25 +390,27 @@ openclaw plugins registry --refresh
|
||||
openclaw plugins registry --json
|
||||
```
|
||||
|
||||
Локальний реєстр плагінів — це збережена в OpenClaw модель холодного читання для ідентичності встановлених плагінів, стану ввімкнення, метаданих джерела та власності внесків. Звичайний запуск, пошук власника провайдера, класифікація налаштування каналу та інвентар плагінів можуть читати його без імпорту runtime-модулів плагінів.
|
||||
Локальний registry Plugin — це збережена cold read model OpenClaw для identity встановленого Plugin, enablement, source metadata і contribution ownership. Звичайний запуск, provider owner lookup, channel setup classification і plugin inventory можуть читати його без імпорту runtime modules Plugin.
|
||||
|
||||
Використовуйте `plugins registry`, щоб перевірити, чи збережений реєстр наявний, актуальний або застарілий. Використовуйте `--refresh`, щоб перебудувати його зі збереженого індексу Plugin, політики конфігурації та метаданих маніфесту/пакета. Це шлях відновлення, а не шлях активації під час виконання.
|
||||
|
||||
`openclaw doctor --fix` також виправляє суміжне з реєстром відхилення керованого npm: якщо осиротілий пакет `@openclaw/*` у корені npm керованого Plugin затіняє вбудований Plugin, doctor видаляє цей застарілий пакет і перебудовує реєстр, щоб запуск перевірявся за вбудованим маніфестом.
|
||||
|
||||
<Warning>
|
||||
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` — застарілий аварійний перемикач сумісності для збоїв читання реєстру. Надавайте перевагу `plugins registry --refresh` або `openclaw doctor --fix`; резервний варіант через змінну середовища призначений лише для аварійного відновлення запуску, поки міграція розгортається.
|
||||
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` — це застарілий аварійний перемикач сумісності для збоїв читання реєстру. Надавайте перевагу `plugins registry --refresh` або `openclaw doctor --fix`; резервний варіант через env призначений лише для аварійного відновлення запуску під час розгортання міграції.
|
||||
</Warning>
|
||||
|
||||
### Маркетплейс
|
||||
### Marketplace
|
||||
|
||||
```bash
|
||||
openclaw plugins marketplace list <source>
|
||||
openclaw plugins marketplace list <source> --json
|
||||
```
|
||||
|
||||
Список маркетплейсу приймає локальний шлях до маркетплейсу, шлях до `marketplace.json`, скорочений запис GitHub на кшталт `owner/repo`, URL репозиторію GitHub або git URL. `--json` виводить визначену мітку джерела разом із розібраним маніфестом маркетплейсу та записами Plugin.
|
||||
Список Marketplace приймає локальний шлях Marketplace, шлях `marketplace.json`, скорочення GitHub на кшталт `owner/repo`, URL репозиторію GitHub або git URL. `--json` виводить мітку розпізнаного джерела разом із розібраним маніфестом Marketplace і записами Plugin.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Створення Plugin](/uk/plugins/building-plugins)
|
||||
- [Довідник CLI](/uk/cli)
|
||||
- [Спільнотні Plugin](/uk/plugins/community)
|
||||
- [Plugin спільноти](/uk/plugins/community)
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
---
|
||||
read_when:
|
||||
- Додавання або зміна міграцій doctor
|
||||
- Внесення несумісних змін конфігурації
|
||||
- Додавання або змінення міграцій doctor
|
||||
- Запровадження несумісних змін конфігурації
|
||||
sidebarTitle: Doctor
|
||||
summary: 'Команда doctor: перевірки справності, міграції конфігурації та кроки відновлення'
|
||||
summary: 'Команда doctor: перевірки стану, міграції конфігурації та кроки відновлення'
|
||||
title: Діагностика
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T09:37:06Z"
|
||||
generated_at: "2026-05-04T08:21:28Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 20b2cb3c3cd88e01050cb285a08a020603642439bd35668b7414360801fc03ff
|
||||
source_hash: 00124eb5d85445080439d2603c65b78e85b0a2fded1cff121f21c330464f42cf
|
||||
source_path: gateway/doctor.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
`openclaw doctor` — це інструмент відновлення та міграції для OpenClaw. Він виправляє застарілі конфігурацію/стан, перевіряє справність і надає дієві кроки для відновлення.
|
||||
`openclaw doctor` — це інструмент відновлення + міграції для OpenClaw. Він виправляє застарілу конфігурацію/стан, перевіряє справність і надає придатні до виконання кроки відновлення.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
@ -30,7 +30,7 @@ openclaw doctor
|
||||
openclaw doctor --yes
|
||||
```
|
||||
|
||||
Прийняти значення за замовчуванням без запитів (зокрема кроки перезапуску/служби/відновлення sandbox, коли застосовно).
|
||||
Прийняти стандартні значення без запитів (зокрема кроки перезапуску/сервісу/відновлення пісочниці, коли застосовно).
|
||||
|
||||
</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
|
||||
```
|
||||
|
||||
Застосувати також агресивні відновлення (перезаписує користувацькі конфіги supervisor).
|
||||
Також застосувати агресивні відновлення (перезаписує користувацькі конфігурації супервізора).
|
||||
|
||||
</Tab>
|
||||
<Tab title="--non-interactive">
|
||||
@ -54,7 +54,7 @@ openclaw doctor
|
||||
openclaw doctor --non-interactive
|
||||
```
|
||||
|
||||
Запустити без запитів і застосувати лише безпечні міграції (нормалізацію конфігурації + перенесення стану на диску). Пропускає дії перезапуску/служби/sandbox, які потребують підтвердження людини. Міграції застарілого стану запускаються автоматично, коли їх виявлено.
|
||||
Запустити без запитів і застосовувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії перезапуску/сервісу/пісочниці, які потребують підтвердження людини. Міграції застарілого стану виконуються автоматично, коли їх виявлено.
|
||||
|
||||
</Tab>
|
||||
<Tab title="--deep">
|
||||
@ -62,7 +62,7 @@ openclaw doctor
|
||||
openclaw doctor --deep
|
||||
```
|
||||
|
||||
Просканувати системні служби на наявність додаткових інсталяцій Gateway (launchd/systemd/schtasks).
|
||||
Сканувати системні сервіси на наявність додаткових встановлень gateway (launchd/systemd/schtasks).
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@ -76,118 +76,119 @@ cat ~/.openclaw/openclaw.json
|
||||
## Що він робить (коротко)
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Справність, інтерфейс і оновлення">
|
||||
- Необов’язкове попереднє оновлення для git-інсталяцій (лише інтерактивно).
|
||||
- Перевірка актуальності протоколу інтерфейсу (перезбирає Control UI, коли схема протоколу новіша).
|
||||
<Accordion title="Справність, UI та оновлення">
|
||||
- Необов’язкове попереднє оновлення для git-встановлень (лише інтерактивно).
|
||||
- Перевірка актуальності протоколу UI (перезбирає Control UI, коли схема протоколу новіша).
|
||||
- Перевірка справності + запит на перезапуск.
|
||||
- Зведення стану Skills (придатні/відсутні/заблоковані) і стан Plugin.
|
||||
- Зведення стану Skills (придатні/відсутні/заблоковані) і стан plugin.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Конфігурація та міграції">
|
||||
- Нормалізація конфігурації для застарілих значень.
|
||||
- Міграція конфігурації Talk із застарілих плоских полів `talk.*` у `talk.provider` + `talk.providers.<provider>`.
|
||||
- Перевірки міграції браузера для застарілих конфігів Chrome extension і готовності Chrome MCP.
|
||||
- Перевірки міграції браузера для застарілих конфігурацій розширення Chrome і готовності Chrome MCP.
|
||||
- Попередження про перевизначення провайдера OpenCode (`models.providers.opencode` / `models.providers.opencode-go`).
|
||||
- Попередження про затінення OAuth Codex (`models.providers.openai-codex`).
|
||||
- Попередження про затінення Codex OAuth (`models.providers.openai-codex`).
|
||||
- Перевірка передумов OAuth TLS для профілів OpenAI Codex OAuth.
|
||||
- Попередження про allowlist Plugin/інструментів, коли `plugins.allow` обмежувальний, але політика інструментів усе ще запитує wildcard або інструменти, що належать Plugin.
|
||||
- Міграція застарілого стану на диску (sessions/agent dir/WhatsApp auth).
|
||||
- Міграція застарілих ключів контракту маніфесту Plugin (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
|
||||
- Міграція застарілого сховища Cron (`jobId`, `schedule.cron`, поля delivery/payload верхнього рівня, payload `provider`, прості резервні завдання Webhook `notify: true`).
|
||||
- Міграція застарілої runtime-policy агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`.
|
||||
- Очищення застарілої конфігурації Plugin, коли plugins увімкнено; коли `plugins.enabled=false`, застарілі посилання на Plugin вважаються інертною конфігурацією ізоляції та зберігаються.
|
||||
- Попередження allowlist plugin/інструментів, коли `plugins.allow` обмежувальний, але політика інструментів усе ще запитує wildcard або інструменти, що належать plugin.
|
||||
- Міграція застарілого стану на диску (сеанси/каталог агента/автентифікація WhatsApp).
|
||||
- Міграція застарілих ключів контракту маніфесту plugin (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
|
||||
- Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля delivery/payload верхнього рівня, payload `provider`, прості fallback-завдання webhook `notify: true`).
|
||||
- Міграція застарілої runtime-політики агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`.
|
||||
- Очищення застарілої конфігурації plugin, коли plugins увімкнено; коли `plugins.enabled=false`, застарілі посилання на plugin вважаються інертною containment-конфігурацією і зберігаються.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Стан і цілісність">
|
||||
- Перевірка lock-файла сесії та очищення застарілих lock.
|
||||
- Відновлення transcript сесії для дубльованих гілок prompt-rewrite, створених ураженими збірками 2026.4.24.
|
||||
- Виявлення tombstone для відновлення після перезапуску застряглого subagent, з підтримкою `--fix` для очищення застарілих прапорців aborted recovery, щоб запуск не продовжував трактувати дочірній процес як restart-aborted.
|
||||
- Перевірки цілісності стану та дозволів (sessions, transcripts, state dir).
|
||||
- Перевірка файлів блокування сеансів і очищення застарілих блокувань.
|
||||
- Відновлення транскриптів сеансів для дубльованих гілок prompt-rewrite, створених у вразливих збірках 2026.4.24.
|
||||
- Виявлення tombstone для відновлення після перезапуску завислого subagent, з підтримкою `--fix` для очищення застарілих прапорців перерваного відновлення, щоб startup не продовжував вважати дочірній процес перерваним перезапуском.
|
||||
- Перевірки цілісності стану та дозволів (сеанси, транскрипти, каталог стану).
|
||||
- Перевірки дозволів файлу конфігурації (chmod 600) під час локального запуску.
|
||||
- Справність автентифікації моделей: перевіряє завершення строку OAuth, може оновлювати токени, строк дії яких спливає, і повідомляє про стани cooldown/disabled auth-profile.
|
||||
- Виявлення додаткової директорії workspace (`~/openclaw`).
|
||||
- Виявлення додаткового каталогу робочого простору (`~/openclaw`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Gateway, служби та supervisor">
|
||||
- Відновлення sandbox image, коли sandboxing увімкнено.
|
||||
- Міграція застарілих служб і виявлення додаткового Gateway.
|
||||
<Accordion title="Gateway, сервіси та супервізори">
|
||||
- Відновлення образу пісочниці, коли sandboxing увімкнено.
|
||||
- Міграція застарілих сервісів і виявлення додаткового gateway.
|
||||
- Міграція застарілого стану каналу Matrix (у режимі `--fix` / `--repair`).
|
||||
- Runtime-перевірки Gateway (службу встановлено, але не запущено; кешована launchd label).
|
||||
- Попередження про стан каналів (перевіряються із запущеного Gateway).
|
||||
- Аудит конфігурації supervisor (launchd/systemd/schtasks) з необов’язковим відновленням.
|
||||
- Очищення середовища вбудованого proxy для служб Gateway, які захопили значення shell `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` під час інсталяції або оновлення.
|
||||
- Перевірки найкращих практик runtime Gateway (Node проти Bun, шляхи version-manager).
|
||||
- Діагностика конфліктів порту Gateway (типово `18789`).
|
||||
- Перевірки runtime Gateway (сервіс встановлено, але не запущено; кешована мітка launchd).
|
||||
- Попередження стану каналів (перевіряються з запущеного gateway).
|
||||
- Аудит конфігурації супервізора (launchd/systemd/schtasks) з необов’язковим відновленням.
|
||||
- Очищення середовища вбудованого proxy для сервісів gateway, які захопили значення оболонки `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` під час встановлення або оновлення.
|
||||
- Перевірки найкращих практик runtime Gateway (Node проти Bun, шляхи менеджерів версій).
|
||||
- Діагностика конфлікту портів Gateway (стандартний `18789`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Автентифікація, безпека та сполучення">
|
||||
<Accordion title="Автентифікація, безпека та pairing">
|
||||
- Попередження безпеки для відкритих політик DM.
|
||||
- Перевірки автентифікації Gateway для режиму локального токена (пропонує генерацію токена, коли джерела токена немає; не перезаписує конфіги токена SecretRef).
|
||||
- Виявлення проблем зі сполученням пристрою (очікувані перші запити на сполучення, очікувані підвищення ролі/області, дрейф застарілого локального кешу device-token і дрейф автентифікації paired-record).
|
||||
- Перевірки автентифікації Gateway для режиму локального токена (пропонує генерацію токена, коли немає джерела токена; не перезаписує конфігурації token SecretRef).
|
||||
- Виявлення проблем pairing пристрою (очікувані перші запити pairing, очікувані підвищення ролі/області, дрейф застарілого локального кешу device-token і дрейф автентифікації paired-record).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Workspace і shell">
|
||||
<Accordion title="Робочий простір і оболонка">
|
||||
- Перевірка systemd linger у Linux.
|
||||
- Перевірка розміру bootstrap-файла workspace (попередження про обрізання/наближення до ліміту для файлів контексту).
|
||||
- Перевірка готовності Skills для агента за замовчуванням; повідомляє про дозволені skills з відсутніми bins, env, config або вимогами ОС, а `--fix` може вимкнути недоступні skills у `skills.entries`.
|
||||
- Перевірка стану shell completion і автоматична інсталяція/оновлення.
|
||||
- Перевірка готовності провайдера embeddings для пошуку пам’яті (локальна модель, ключ віддаленого API або QMD binary).
|
||||
- Перевірки source install (невідповідність pnpm workspace, відсутні UI assets, відсутній tsx binary).
|
||||
- Записує оновлену конфігурацію + metadata wizard.
|
||||
- Перевірка розміру файлу bootstrap робочого простору (попередження про обрізання/наближення до ліміту для контекстних файлів).
|
||||
- Перевірка готовності Skills для стандартного агента; повідомляє про дозволені skills із відсутніми bins, env, config або вимогами ОС, а `--fix` може вимкнути недоступні skills у `skills.entries`.
|
||||
- Перевірка стану shell completion і автоматичне встановлення/оновлення.
|
||||
- Перевірка готовності провайдера embeddings пошуку пам’яті (локальна модель, віддалений API key або binary QMD).
|
||||
- Перевірки встановлення з вихідного коду (невідповідність робочого простору pnpm, відсутні UI assets, відсутній binary tsx).
|
||||
- Записує оновлену конфігурацію + metadata майстра.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Зворотне заповнення та скидання UI Dreams
|
||||
## Зворотне заповнення та скидання Dreams UI
|
||||
|
||||
Сцена Dreams у Control UI містить дії **Зворотне заповнення**, **Скидання** та **Очистити обґрунтоване** для робочого процесу обґрунтованого Dreaming. Ці дії використовують RPC-методи Gateway у стилі doctor, але вони **не** є частиною відновлення/міграції CLI `openclaw doctor`.
|
||||
Сцена Dreams у Control UI містить дії **Backfill**, **Reset** і **Clear Grounded** для робочого процесу grounded dreaming. Ці дії використовують RPC-методи в стилі gateway doctor, але вони **не** є частиною repair/migration CLI `openclaw doctor`.
|
||||
|
||||
Що вони роблять:
|
||||
|
||||
- **Зворотне заповнення** сканує історичні файли `memory/YYYY-MM-DD.md` в активному workspace, запускає grounded REM diary pass і записує оборотні backfill entries у `DREAMS.md`.
|
||||
- **Скидання** видаляє з `DREAMS.md` лише ці позначені backfill diary entries.
|
||||
- **Очистити обґрунтоване** видаляє лише підготовлені grounded-only short-term entries, що надійшли з історичного replay і ще не накопичили live recall або daily support.
|
||||
- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному робочому просторі, запускає grounded REM diary pass і записує оборотні backfill-записи в `DREAMS.md`.
|
||||
- **Reset** видаляє лише ці позначені backfill-записи щоденника з `DREAMS.md`.
|
||||
- **Clear Grounded** видаляє лише staged grounded-only короткострокові записи, які походять з історичного replay і ще не накопичили live recall або daily support.
|
||||
|
||||
Чого вони самі **не** роблять:
|
||||
Чого вони самі по собі **не** роблять:
|
||||
|
||||
- вони не редагують `MEMORY.md`
|
||||
- вони не запускають повні міграції doctor
|
||||
- вони не додають автоматично grounded candidates до live short-term promotion store, якщо ви спочатку явно не запустите staged CLI path
|
||||
- вони не розміщують автоматично grounded candidates у live short-term promotion store, якщо ви спершу явно не запустите staged CLI path
|
||||
|
||||
Якщо ви хочете, щоб grounded historical replay впливав на звичайну deep promotion lane, натомість використовуйте CLI flow:
|
||||
Якщо ви хочете, щоб grounded historical replay впливав на звичайну глибоку promotion lane, використовуйте натомість CLI-потік:
|
||||
|
||||
```bash
|
||||
openclaw memory rem-backfill --path ./memory --stage-short-term
|
||||
```
|
||||
|
||||
Це додає grounded durable candidates до short-term dreaming store, водночас залишаючи `DREAMS.md` як поверхню для перегляду.
|
||||
Це розміщує grounded durable candidates у short-term dreaming store, залишаючи `DREAMS.md` поверхнею для review.
|
||||
|
||||
## Докладна поведінка та обґрунтування
|
||||
## Детальна поведінка та обґрунтування
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="0. Необов’язкове оновлення (git-інсталяції)">
|
||||
<Accordion title="0. Необов’язкове оновлення (git-встановлення)">
|
||||
Якщо це git checkout і doctor працює інтерактивно, він пропонує оновитися (fetch/rebase/build) перед запуском doctor.
|
||||
</Accordion>
|
||||
<Accordion title="1. Нормалізація конфігурації">
|
||||
Якщо конфігурація містить застарілі форми значень (наприклад, `messages.ackReaction` без channel-specific override), doctor нормалізує їх у поточну схему.
|
||||
Якщо конфігурація містить застарілі форми значень (наприклад `messages.ackReaction` без перевизначення для конкретного каналу), doctor нормалізує їх до поточної схеми.
|
||||
|
||||
Це включає застарілі плоскі поля Talk. Поточна публічна конфігурація Talk — це `talk.provider` + `talk.providers.<provider>`. Doctor переписує старі форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` у provider map.
|
||||
Це охоплює застарілі плоскі поля 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 або записи інструментів, що належать plugin. `tools.allow: ["*"]` відповідає лише інструментам
|
||||
із plugins, які фактично завантажуються; він не обходить ексклюзивний
|
||||
allowlist plugin.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="2. Міграції застарілих ключів конфігурації">
|
||||
Коли конфігурація містить застарілі ключі, інші команди відмовляються запускатися й просять вас виконати `openclaw doctor`.
|
||||
Коли конфігурація містить застарілі ключі, інші команди відмовляються запускатися й просять виконати `openclaw doctor`.
|
||||
|
||||
Doctor:
|
||||
|
||||
- Пояснить, які застарілі ключі знайдено.
|
||||
- Пояснить, які застарілі ключі було знайдено.
|
||||
- Покаже застосовану міграцію.
|
||||
- Перепише `~/.openclaw/openclaw.json` з оновленою схемою.
|
||||
|
||||
Gateway також автоматично запускає міграції doctor під час запуску, коли виявляє застарілий формат конфігурації, тож застарілі конфіги відновлюються без ручного втручання. Міграції сховища завдань Cron обробляються командою `openclaw doctor --fix`.
|
||||
Gateway також автоматично запускає міграції doctor під час startup, коли виявляє застарілий формат конфігурації, тому застарілі конфігурації відновлюються без ручного втручання. Міграції сховища cron jobs обробляються `openclaw doctor --fix`.
|
||||
|
||||
Поточні міграції:
|
||||
|
||||
@ -195,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`
|
||||
@ -213,249 +214,249 @@ 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>.accounts` без `channels.<channel>.defaultAccount` або `accounts.default`, doctor попереджає, що резервна маршрутизація може вибрати неочікуваний обліковий запис.
|
||||
- Якщо `channels.<channel>.defaultAccount` установлено на невідомий ID облікового запису, doctor попереджає і перелічує налаштовані ID облікових записів.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="2b. Перевизначення провайдера OpenCode">
|
||||
Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. Це може примусово спрямувати моделі на неправильний API або обнулити витрати. Doctor попереджає, щоб ви могли видалити перевизначення й відновити маршрутизацію API та витрати для кожної моделі.
|
||||
Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. Це може примусово спрямувати моделі на неправильний API або обнулити витрати. Doctor попереджає, щоб ви могли вилучити перевизначення й відновити маршрутизацію API та витрати для кожної моделі.
|
||||
</Accordion>
|
||||
<Accordion title="2c. Міграція браузера та готовність Chrome MCP">
|
||||
Якщо ваша конфігурація браузера все ще вказує на видалений шлях розширення Chrome, doctor нормалізує її до поточної моделі приєднання Chrome MCP на локальному хості:
|
||||
<Accordion title="2c. Міграція браузера й готовність Chrome MCP">
|
||||
Якщо ваша конфігурація браузера все ще вказує на вилучений шлях розширення 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, перехоплення завантажень і пакетні дії, все ще потребують керованого браузера або сирого профілю CDP.
|
||||
|
||||
Ця перевірка **не** застосовується до Docker, sandbox, remote-browser або інших headless-потоків. Вони й надалі використовують сирий 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 справний.
|
||||
Коли налаштовано профіль 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>
|
||||
<Accordion title="2e. Перевизначення провайдера Codex OAuth">
|
||||
Якщо раніше ви додали застарілі налаштування транспорту OpenAI у `models.providers.openai-codex`, вони можуть затінити вбудований шлях провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить ці старі налаштування транспорту поруч із Codex OAuth, щоб ви могли видалити або переписати застаріле перевизначення транспорту й повернути вбудовану маршрутизацію/резервну поведінку. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не викликають це попередження.
|
||||
Якщо раніше ви додали застарілі налаштування транспорту OpenAI у `models.providers.openai-codex`, вони можуть затіняти вбудований шлях провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить ці старі налаштування транспорту поруч із Codex OAuth, щоб ви могли вилучити або переписати застаріле перевизначення транспорту й повернути вбудовану поведінку маршрутизації/резервного перемикання. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не запускають це попередження.
|
||||
</Accordion>
|
||||
<Accordion title="2f. Попередження маршрутів Plugin Codex">
|
||||
Коли ввімкнено вбудований Plugin Codex, doctor також перевіряє, чи посилання первинних моделей `openai-codex/*` усе ще розв’язуються через стандартний PI runner. Така комбінація чинна, коли вам потрібна автентифікація Codex OAuth/підписки через PI, але її легко сплутати з нативним app-server harness Codex. Doctor попереджає та вказує на явну форму app-server: `openai/*` плюс `agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`.
|
||||
<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`.
|
||||
|
||||
Doctor не виправляє це автоматично, тому що обидва маршрути чинні:
|
||||
Doctor не виправляє це автоматично, бо обидва маршрути чинні:
|
||||
|
||||
- `openai-codex/*` + PI означає «використовувати автентифікацію Codex OAuth/підписки через звичайний runner OpenClaw».
|
||||
- `openai/*` + `agentRuntime.id: "codex"` означає «виконувати вбудований хід через нативний app-server Codex».
|
||||
- `/codex ...` означає «керувати або прив’язати нативну розмову Codex з чату».
|
||||
- `/acp ...` або `runtime: "acp"` означає «використовувати зовнішній адаптер ACP/acpx».
|
||||
- `openai-codex/*` + PI означає "використовувати автентифікацію Codex OAuth/підписки через звичайний runner OpenClaw."
|
||||
- `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. Міграції застарілого стану (розкладка диска)">
|
||||
Doctor може мігрувати старіші розкладки на диску в поточну структуру:
|
||||
|
||||
- Сховище сесій + транскрипти:
|
||||
- з `~/.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/*.json` (крім `oauth.json`)
|
||||
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий ID облікового запису: `default`)
|
||||
|
||||
Ці міграції виконуються за принципом best-effort та є ідемпотентними; doctor видаватиме попередження, коли залишатиме будь-які застарілі папки як резервні копії. Gateway/CLI також автоматично мігрує застарілі сесії + каталог агента під час запуску, щоб історія/автентифікація/моделі потрапляли в шлях для конкретного агента без ручного запуску doctor. Автентифікація WhatsApp навмисно мігрується лише через `openclaw doctor`. Нормалізація talk-провайдера/мапи провайдерів тепер порівнює за структурною рівністю, тому відмінності лише в порядку ключів більше не спричиняють повторні no-op зміни `doctor --fix`.
|
||||
Ці міграції виконуються за принципом best-effort і є ідемпотентними; doctor видаватиме попередження, коли залишатиме застарілі папки як резервні копії. Gateway/CLI також автоматично мігрує застарілі сесії + каталог агента під час запуску, щоб історія/auth/моделі потрапляли в шлях для кожного агента без ручного запуску 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` уже має ті самі значення, застарілий ключ видаляється без дублювання даних.
|
||||
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. Міграції застарілого сховища Cron">
|
||||
Doctor також перевіряє сховище завдань cron (`~/.openclaw/cron/jobs.json` за замовчуванням або `cron.store`, якщо перевизначено) на наявність старих форм завдань, які планувальник усе ще приймає для сумісності.
|
||||
|
||||
Поточні очищення cron включають:
|
||||
Поточні очищення cron містять:
|
||||
|
||||
- `jobId` → `id`
|
||||
- `schedule.cron` → `schedule.expr`
|
||||
- верхньорівневі поля payload (`message`, `model`, `thinking`, ...) → `payload`
|
||||
- верхньорівневі поля доставки (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
|
||||
- псевдоніми доставки payload `provider` → явний `delivery.channel`
|
||||
- прості застарілі резервні завдання webhook `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook`
|
||||
- верхньорівневі поля delivery (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
|
||||
- псевдоніми delivery `provider` у payload → явний `delivery.channel`
|
||||
- прості застарілі резервні webhook-завдання `notify: true` → явне `delivery.mode="webhook"` з `delivery.to=cron.webhook`
|
||||
|
||||
Doctor автоматично мігрує завдання `notify: true` лише тоді, коли це можна зробити без зміни поведінки. Якщо завдання поєднує застарілий резерв notify з наявним режимом доставки не через webhook, doctor попереджає й залишає це завдання для ручного перегляду.
|
||||
Doctor автоматично мігрує завдання `notify: true` лише тоді, коли може зробити це без зміни поведінки. Якщо завдання поєднує застарілий резервний notify із наявним режимом доставки, що не є webhook, doctor попереджає й залишає це завдання для ручного перегляду.
|
||||
|
||||
На Linux doctor також попереджає, коли crontab користувача все ще викликає застарілий `~/.openclaw/bin/ensure-whatsapp.sh`. Цей скрипт на локальному хості не підтримується поточним OpenClaw і може записувати хибні повідомлення `Gateway inactive` у `~/.openclaw/logs/whatsapp-health.log`, коли cron не може дістатися до користувацької шини systemd. Видаліть застарілий запис crontab за допомогою `crontab -e`; використовуйте `openclaw channels status --probe`, `openclaw doctor` і `openclaw gateway status` для поточних перевірок стану.
|
||||
На Linux doctor також попереджає, коли crontab користувача все ще викликає застарілий `~/.openclaw/bin/ensure-whatsapp.sh`. Цей host-local скрипт не підтримується поточним 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"**: позначає випадки, коли основна стенограма має лише один рядок (історія не накопичується).
|
||||
- **Кілька каталогів стану**: попереджає, коли в різних домашніх каталогах існує кілька папок `~/.openclaw` або коли `OPENCLAW_STATE_DIR` вказує деінде (історія може розділитися між інсталяціями).
|
||||
- **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, doctor нагадує запустити його на віддаленому хості (стан зберігається там).
|
||||
- **Дозволи файла конфігурації**: попереджає, якщо `~/.openclaw/openclaw.json` доступний для читання групі/усім, і пропонує посилити дозволи до `600`.
|
||||
- **Синхронізований із хмарою каталог стану 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`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="5. Стан автентифікації моделей (закінчення OAuth)">
|
||||
Doctor перевіряє OAuth-профілі у сховищі автентифікації, попереджає, коли токени скоро закінчаться або вже закінчилися, і може оновити їх, коли це безпечно. Якщо OAuth/токен-профіль Anthropic застарів, він пропонує API-ключ Anthropic або шлях із setup-token Anthropic. Запити на оновлення з’являються лише під час інтерактивного запуску (TTY); `--non-interactive` пропускає спроби оновлення.
|
||||
<Accordion title="5. Стан автентифікації моделей (закінчення строку OAuth)">
|
||||
Doctor перевіряє профілі OAuth у сховищі автентифікації, попереджає, коли строк дії токенів завершується або вже завершився, і може безпечно їх оновити. Якщо профіль Anthropic OAuth/токена застарів, він пропонує ключ 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 також повідомляє про профілі автентифікації, тимчасово непридатні через:
|
||||
Doctor також повідомляє про профілі автентифікації, які тимчасово непридатні через:
|
||||
|
||||
- короткі періоди очікування (обмеження частоти/тайм-аути/помилки автентифікації)
|
||||
- короткі періоди охолодження (обмеження частоти/тайм-аути/помилки автентифікації)
|
||||
- довші вимкнення (помилки білінгу/кредитів)
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="6. Перевірка моделі hooks">
|
||||
Якщо встановлено `hooks.gmail.model`, doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли воно не розв’яжеться або заборонене.
|
||||
Якщо встановлено `hooks.gmail.model`, doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли воно не розв’язується або заборонене.
|
||||
</Accordion>
|
||||
<Accordion title="7. Відновлення образу пісочниці">
|
||||
Коли пісочницю ввімкнено, doctor перевіряє образи Docker і пропонує зібрати їх або перемкнутися на застарілі назви, якщо поточний образ відсутній.
|
||||
<Accordion title="7. Відновлення образу sandbox">
|
||||
Коли sandboxing увімкнено, doctor перевіряє образи Docker і пропонує зібрати їх або перемкнутися на застарілі назви, якщо поточний образ відсутній.
|
||||
</Accordion>
|
||||
<Accordion title="7b. Очищення встановлення Plugin">
|
||||
Doctor видаляє застарілий проміжний стан залежностей Plugin, згенерований OpenClaw, у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги етапу встановлення та локальне для пакета сміття від попереднього коду відновлення залежностей bundled-plugin.
|
||||
<Accordion title="7b. Очищення інсталяції Plugin">
|
||||
Doctor видаляє застарілий згенерований OpenClaw проміжний стан залежностей плагінів у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги етапу інсталяції, локальні для пакета залишки від попереднього коду відновлення залежностей bundled-plugin і осиротілі керовані npm-копії bundled-плагінів `@openclaw/*`, які можуть затіняти поточний bundled-маніфест.
|
||||
|
||||
Doctor також може перевстановити налаштовані завантажувані plugins, коли конфігурація посилається на них, але локальний реєстр plugins не може їх знайти. Для externalization bundled-plugin 2026.5.2 doctor автоматично встановлює завантажувані plugins, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей релізний прохід лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; встановлення plugins лишається явною роботою doctor/install/update.
|
||||
Doctor також може повторно інсталювати налаштовані завантажувані плагіни, коли конфігурація посилається на них, але локальний реєстр плагінів не може їх знайти. Для зовнішнього винесення bundled-plugin 2026.5.2 doctor автоматично інсталює завантажувані плагіни, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей прохід релізу лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; інсталяції плагінів залишаються явною роботою doctor/install/update.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="8. Міграції служби Gateway і підказки з очищення">
|
||||
Doctor виявляє застарілі служби gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити службу OpenClaw з використанням поточного порту gateway. Він також може сканувати додаткові служби, схожі на gateway, і друкувати підказки з очищення. Служби OpenClaw gateway з назвами профілів вважаються повноцінними й не позначаються як "extra."
|
||||
<Accordion title="8. Міграції сервісу Gateway і підказки з очищення">
|
||||
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`, коли системний supervisor керує життєвим циклом gateway.
|
||||
У Linux, якщо користувацький сервіс Gateway відсутній, але існує системний сервіс OpenClaw gateway, doctor не встановлює автоматично другий користувацький сервіс. Перевірте через `openclaw gateway status --deep` або `openclaw doctor --deep`, потім видаліть дублікат або встановіть `OPENCLAW_SERVICE_REPAIR_POLICY=external`, коли системний супервізор керує життєвим циклом Gateway.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="8b. Міграція Startup Matrix">
|
||||
Коли обліковий запис каналу Matrix має очікувану або придатну до дії міграцію застарілого стану, doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім виконує best-effort кроки міграції: міграцію застарілого стану Matrix і підготовку застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск продовжується. У режимі лише читання (`openclaw doctor` без `--fix`) цю перевірку повністю пропущено.
|
||||
<Accordion title="8b. Міграція запуску Matrix">
|
||||
Коли обліковий запис каналу Matrix має очікувану або придатну до дії міграцію застарілого стану, doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім виконує best-effort кроки міграції: міграцію застарілого стану Matrix і підготовку застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск продовжується. У режимі лише читання (`openclaw doctor` без `--fix`) ця перевірка повністю пропускається.
|
||||
</Accordion>
|
||||
<Accordion title="8c. Сполучення пристроїв і дрейф автентифікації">
|
||||
Doctor тепер перевіряє стан сполучення пристроїв як частину звичайного проходу перевірки здоров’я.
|
||||
Doctor тепер перевіряє стан сполучення пристроїв як частину звичайного проходу перевірки справності.
|
||||
|
||||
Що він повідомляє:
|
||||
|
||||
- очікувані запити першого сполучення
|
||||
- очікувані підвищення ролі для вже сполучених пристроїв
|
||||
- очікувані підвищення scope для вже сполучених пристроїв
|
||||
- відновлення невідповідності публічного ключа, коли id пристрою все ще збігається, але ідентичність пристрою більше не збігається зі схваленим записом
|
||||
- сполучені записи, у яких немає активного токена для схваленої ролі
|
||||
- сполучені токени, чиї scopes відхилилися за межі схваленої базової лінії сполучення
|
||||
- локальні кешовані записи device-token для поточної машини, що передують ротації токена на боці gateway або мають застарілі метадані scope
|
||||
- запити на перше сполучення, що очікують розгляду
|
||||
- підвищення ролі для вже сполучених пристроїв, що очікують розгляду
|
||||
- підвищення області доступу для вже сполучених пристроїв, що очікують розгляду
|
||||
- виправлення невідповідності відкритого ключа, коли ідентифікатор пристрою все ще збігається, але ідентичність пристрою більше не збігається із затвердженим записом
|
||||
- сполучені записи, у яких немає активного токена для затвердженої ролі
|
||||
- сполучені токени, області доступу яких відхилилися від затвердженої базової лінії сполучення
|
||||
- локальні кешовані записи токенів пристроїв для поточної машини, які передують ротації токена на боці Gateway або містять застарілі метадані області доступу
|
||||
|
||||
Doctor не схвалює запити сполучення автоматично і не виконує автоматичну ротацію токенів пристроїв. Натомість він друкує точні наступні кроки:
|
||||
Doctor не схвалює запити на сполучення автоматично й не виконує автоматичну ротацію токенів пристроїв. Натомість він виводить точні наступні кроки:
|
||||
|
||||
- переглянути очікувані запити за допомогою `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>`
|
||||
|
||||
Це закриває поширену прогалину "already paired but still getting pairing required": doctor тепер відрізняє перше сполучення від очікуваних підвищень ролі/scope і від дрейфу застарілого токена/ідентичності пристрою.
|
||||
Це закриває поширену прогалину «уже сполучено, але все одно потрібно сполучення»: doctor тепер розрізняє перше сполучення, підвищення ролі/області доступу, що очікують розгляду, і відхилення застарілого токена або ідентичності пристрою.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="9. Попередження безпеки">
|
||||
Doctor виводить попередження, коли провайдер відкритий для DM без allowlist або коли політика налаштована небезпечним чином.
|
||||
Doctor виводить попередження, коли провайдер відкритий для приватних повідомлень без 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, plugins і застарілі каталоги)">
|
||||
Doctor виводить підсумок стану робочого простору для агента за замовчуванням:
|
||||
|
||||
- **Стан Skills**: рахує придатні skills, skills з відсутніми вимогами та skills, заблоковані allowlist.
|
||||
- **Застарілі каталоги робочої області**: попереджає, коли `~/openclaw` або інші застарілі каталоги робочої області існують поруч із поточною робочою областю.
|
||||
- **Стан Plugin**: рахує ввімкнені/вимкнені/помилкові plugins; перелічує ID plugins для будь-яких помилок; повідомляє можливості bundle plugin.
|
||||
- **Попередження сумісності Plugin**: позначає plugins, що мають проблеми сумісності з поточним runtime.
|
||||
- **Діагностика Plugin**: показує будь-які попередження або помилки під час завантаження, виведені реєстром plugins.
|
||||
- **Стан Skills**: підраховує придатні skills, skills із відсутніми вимогами та skills, заблоковані allowlist.
|
||||
- **Застарілі каталоги робочого простору**: попереджає, коли `~/openclaw` або інші застарілі каталоги робочого простору існують поруч із поточним робочим простором.
|
||||
- **Стан Plugin**: підраховує увімкнені/вимкнені/помилкові plugins; перелічує ідентифікатори plugin для будь-яких помилок; повідомляє можливості bundle plugin.
|
||||
- **Попередження сумісності Plugin**: позначає plugins, які мають проблеми сумісності з поточним 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 каналу, він також видаляє dangling конфігурацію в scope каналу, що посилалася на цей Plugin: записи `channels.<id>`, цілі heartbeat, що називали канал, і перевизначення `agents.*.models["<channel>/*"]`. Це запобігає циклам завантаження Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway прив’язатися до нього.
|
||||
<Accordion title="11d. Очищення застарілого plugin каналу">
|
||||
Коли `openclaw doctor --fix` видаляє відсутній plugin каналу, він також видаляє завислу конфігурацію в області каналу, яка посилалася на цей plugin: записи `channels.<id>`, цілі heartbeat, що називали канал, і перевизначення `agents.*.models["<channel>/*"]`. Це запобігає циклам завантаження Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway прив’язатися до нього.
|
||||
</Accordion>
|
||||
<Accordion title="11c. Автодоповнення оболонки">
|
||||
Doctor перевіряє, чи встановлено автодоповнення клавішею Tab для поточної оболонки (zsh, bash, fish або PowerShell):
|
||||
|
||||
- Якщо профіль оболонки використовує повільний динамічний шаблон автодоповнення (`source <(openclaw completion ...)`), doctor оновлює його до швидшого варіанта з кешованим файлом.
|
||||
- Якщо автодоповнення налаштовано в профілі, але файл кешу відсутній, doctor автоматично регенерує кеш.
|
||||
- Якщо автодоповнення взагалі не налаштовано, doctor пропонує встановити його (лише інтерактивний режим; пропускається з `--non-interactive`).
|
||||
- Якщо профіль оболонки використовує повільний динамічний шаблон доповнення (`source <(openclaw completion ...)`), doctor оновлює його до швидшого варіанта з кешованим файлом.
|
||||
- Якщо доповнення налаштовано в профілі, але кеш-файл відсутній, doctor автоматично регенерує кеш.
|
||||
- Якщо доповнення взагалі не налаштовано, doctor пропонує встановити його (лише в інтерактивному режимі; пропускається з `--non-interactive`).
|
||||
|
||||
Запустіть `openclaw completion --write-state`, щоб регенерувати кеш вручну.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="12. Перевірки автентифікації Gateway (локальний токен)">
|
||||
Doctor перевіряє готовність автентифікації токена локального gateway.
|
||||
Doctor перевіряє готовність локальної автентифікації токена Gateway.
|
||||
|
||||
- Якщо режим токена потребує токена, а джерела токена немає, doctor пропонує згенерувати його.
|
||||
- Якщо `gateway.auth.token` керується SecretRef, але недоступний, doctor попереджає і не перезаписує його відкритим текстом.
|
||||
- Якщо режим токена потребує токен, а джерела токена немає, doctor пропонує згенерувати його.
|
||||
- Якщо `gateway.auth.token` керується SecretRef, але недоступний, doctor попереджає й не перезаписує його відкритим текстом.
|
||||
- `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано SecretRef токена.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="12b. SecretRef-aware відновлення лише для читання">
|
||||
Деяким потокам відновлення потрібно перевіряти налаштовані облікові дані, не послаблюючи fail-fast поведінку runtime.
|
||||
<Accordion title="12b. Виправлення з урахуванням SecretRef лише для читання">
|
||||
Деякі потоки виправлення мають перевіряти налаштовані облікові дані без послаблення поведінки runtime, що швидко завершується з помилкою.
|
||||
|
||||
- `openclaw doctor --fix` тепер використовує ту саму модель read-only підсумку SecretRef, що й команди сімейства status, для цільових відновлень конфігурації.
|
||||
- Приклад: відновлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані облікові дані бота, коли вони доступні.
|
||||
- `openclaw doctor --fix` тепер використовує ту саму модель підсумку SecretRef лише для читання, що й команди сімейства status, для цільових виправлень конфігурації.
|
||||
- Приклад: виправлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використати налаштовані облікові дані бота, коли вони доступні.
|
||||
- Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, doctor повідомляє, що облікові дані налаштовані, але недоступні, і пропускає автоматичне розв’язання замість аварійного завершення або помилкового повідомлення, що токен відсутній.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="13. Перевірка стану Gateway + перезапуск">
|
||||
Doctor виконує перевірку стану й пропонує перезапустити gateway, коли він виглядає несправним.
|
||||
<Accordion title="13. Перевірка справності Gateway + перезапуск">
|
||||
Doctor виконує перевірку справності та пропонує перезапустити Gateway, коли він виглядає несправним.
|
||||
</Accordion>
|
||||
<Accordion title="13b. Готовність пошуку пам’яті">
|
||||
Doctor перевіряє, чи налаштований постачальник embedding для пошуку пам’яті готовий для агента за замовчуванням. Поведінка залежить від налаштованого бекенда й постачальника:
|
||||
<Accordion title="13b. Готовність пошуку в пам’яті">
|
||||
Doctor перевіряє, чи налаштований провайдер embedding для пошуку в пам’яті готовий для стандартного агента. Поведінка залежить від налаштованого бекенду та провайдера:
|
||||
|
||||
- **Бекенд QMD**: перевіряє, чи доступний і придатний до запуску бінарний файл `qmd`. Якщо ні, виводить підказки щодо виправлення, зокрема npm-пакет і варіант ручного шляху до бінарного файла.
|
||||
- **Явний локальний постачальник**: перевіряє наявність локального файла моделі або розпізнаної віддаленої/завантажуваної URL-адреси моделі. Якщо її немає, пропонує перейти на віддаленого постачальника.
|
||||
- **Явний віддалений постачальник** (`openai`, `voyage` тощо): перевіряє наявність API-ключа в середовищі або сховищі автентифікації. Якщо його немає, виводить практичні підказки щодо виправлення.
|
||||
- **Автоматичний постачальник**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого постачальника в порядку автоматичного вибору.
|
||||
- **Бекенд QMD**: перевіряє, чи доступний і придатний до запуску бінарний файл `qmd`. Якщо ні, виводить інструкції з виправленням, зокрема npm-пакет і варіант із ручним шляхом до бінарного файлу.
|
||||
- **Явний локальний провайдер**: перевіряє локальний файл моделі або розпізнану віддалену/доступну для завантаження URL-адресу моделі. Якщо її немає, пропонує перейти на віддаленого провайдера.
|
||||
- **Явний віддалений провайдер** (`openai`, `voyage` тощо): перевіряє, чи ключ API присутній у середовищі або сховищі автентифікації. Якщо його немає, виводить практичні підказки для виправлення.
|
||||
- **Автоматичний провайдер**: спочатку перевіряє доступність локальної моделі, а потім пробує кожного віддаленого провайдера в порядку автоматичного вибору.
|
||||
|
||||
Коли доступний кешований результат проби gateway (gateway був справним на момент перевірки), doctor зіставляє його результат із конфігурацією, видимою для CLI, і зазначає будь-яку невідповідність. Doctor не запускає новий embedding ping у стандартному шляху; використовуйте команду глибокого статусу пам’яті, коли потрібна жива перевірка постачальника.
|
||||
Коли доступний кешований результат перевірки Gateway (Gateway був справним на момент перевірки), doctor зіставляє його результат із конфігурацією, видимою для CLI, і зазначає будь-яку невідповідність. Doctor не запускає новий embedding ping у стандартному шляху; використовуйте команду поглибленого стану пам’яті, коли потрібна жива перевірка провайдера.
|
||||
|
||||
Використовуйте `openclaw memory status --deep`, щоб перевірити готовність embedding під час виконання.
|
||||
|
||||
</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 і затримку перезапуску). Коли він знаходить невідповідність, рекомендує оновлення та може переписати файл служби/завдання до поточних стандартних значень.
|
||||
|
||||
Примітки:
|
||||
|
||||
@ -463,34 +464,34 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
|
||||
- `openclaw doctor --yes` приймає стандартні запити на відновлення.
|
||||
- `openclaw doctor --repair` застосовує рекомендовані виправлення без запитів.
|
||||
- `openclaw doctor --repair --force` перезаписує користувацькі конфігурації супервізора.
|
||||
- `OPENCLAW_SERVICE_REPAIR_POLICY=external` залишає doctor у режимі лише читання для життєвого циклу служби gateway. Він усе ще повідомляє про стан служби й виконує відновлення, не пов’язані зі службою, але пропускає install/start/restart/bootstrap служби, переписування конфігурації супервізора й очищення застарілих служб, оскільки цим життєвим циклом керує зовнішній супервізор.
|
||||
- На Linux doctor не переписує метадані команди/entrypoint, доки відповідний systemd-unit gateway активний. Він також ігнорує неактивні не застарілі додаткові unit-и, схожі на gateway, під час сканування дублікатів служб, щоб супутні файли служб не створювали зайвого шуму очищення.
|
||||
- Якщо автентифікація токеном вимагає токен і `gateway.auth.token` керується через SecretRef, встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв’язані значення токена відкритим текстом у метадані середовища служби супервізора.
|
||||
- Doctor виявляє керовані значення середовища служби на основі `.env`/SecretRef, які старіші інсталяції LaunchAgent, systemd або Windows Scheduled Task вбудували inline, і переписує метадані служби так, щоб ці значення завантажувалися з runtime-джерела, а не з визначення супервізора.
|
||||
- Doctor виявляє, коли команда служби досі фіксує старий `--port` після зміни `gateway.port`, і переписує метадані служби на поточний порт.
|
||||
- `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 unit-ів перевірки розбіжності токенів doctor тепер охоплюють джерела `Environment=` і `EnvironmentFile=` під час порівняння метаданих автентифікації служби.
|
||||
- Відновлення служби doctor відмовляються переписувати, зупиняти або перезапускати службу gateway зі старішого бінарного файла OpenClaw, коли конфігурацію востаннє було записано новішою версією. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#split-brain-installs-and-newer-config-guard).
|
||||
- Для Linux user-systemd юнітів перевірки дрейфу токена 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-тунель).
|
||||
<Accordion title="16. Runtime Gateway + діагностика порту">
|
||||
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`) і стабільні користувацькі bin-каталоги, але припущені fallback-каталоги менеджерів версій записуються до PATH служби лише тоді, коли ці каталоги існують на диску.
|
||||
Нововстановлені або відновлені macOS LaunchAgents використовують канонічний системний PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) замість копіювання PATH інтерактивної оболонки, тому Volta, asdf, fnm, pnpm та інші каталоги менеджерів версій не змінюють те, який Node розв’язують дочірні процеси. Служби Linux усе ще зберігають явні корені середовища (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) і стабільні каталоги user-bin, але припущені резервні каталоги менеджерів версій записуються до PATH служби лише тоді, коли ці каталоги існують на диску.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="18. Запис конфігурації + метадані майстра">
|
||||
Doctor зберігає всі зміни конфігурації та ставить мітку метаданих майстра, щоб зафіксувати запуск doctor.
|
||||
Doctor зберігає всі зміни конфігурації та позначає метадані майстра, щоб зафіксувати запуск doctor.
|
||||
</Accordion>
|
||||
<Accordion title="19. Поради щодо робочого простору (резервна копія + система пам’яті)">
|
||||
Doctor пропонує систему пам’яті робочого простору, коли її немає, і виводить пораду щодо резервного копіювання, якщо робочий простір ще не перебуває під git.
|
||||
Doctor пропонує систему пам’яті робочого простору, коли її немає, і виводить пораду щодо резервного копіювання, якщо робочий простір ще не перебуває під керуванням git.
|
||||
|
||||
Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace) для повного посібника зі структури робочого простору й резервного копіювання git (рекомендовано приватний GitHub або GitLab).
|
||||
Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб отримати повний посібник зі структури робочого простору та резервного копіювання git (рекомендовано приватний GitHub або GitLab).
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user