chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-04 22:57:49 +00:00
parent 6fdf2e9535
commit 0d1dc15265
3 changed files with 784 additions and 790 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,20 @@
---
read_when:
- Додавання або змінення міграцій doctor
- Запровадження несумісних змін конфігурації
- Впровадження несумісних змін конфігурації
sidebarTitle: Doctor
summary: 'Команда Doctor: перевірки працездатності, міграції конфігурації та кроки відновлення'
summary: 'Команда doctor: перевірки стану, міграції конфігурації та кроки відновлення'
title: Діагностика
x-i18n:
generated_at: "2026-05-04T19:04:53Z"
generated_at: "2026-05-04T22:54:33Z"
model: gpt-5.5
provider: openai
source_hash: e6b18967c4a352290057afc2da95f1d6a1389f46f9d1e49ad4864baf7b77d343
source_hash: 86d862ccc56c0d979c2a957272b2e2f5c5fc7bb1ae8142748630ede0003891de
source_path: gateway/doctor.md
workflow: 16
---
`openclaw doctor` — це інструмент ремонту й міграції для OpenClaw. Він виправляє застарілі конфігурацію/стан, перевіряє справність і надає дієві кроки для ремонту.
`openclaw doctor` — це інструмент ремонту та міграції для OpenClaw. Він виправляє застарілі конфігурацію/стан, перевіряє працездатність і надає практичні кроки для ремонту.
## Швидкий старт
@ -30,7 +30,7 @@ openclaw doctor
openclaw doctor --yes
```
Приймати типові значення без запитів (зокрема кроки ремонту перезапуску/служби/пісочниці, коли застосовно).
Прийняти типові значення без запитів (зокрема кроки ремонту перезапуску/служби/пісочниці, коли застосовно).
</Tab>
<Tab title="--repair">
@ -54,7 +54,7 @@ openclaw doctor
openclaw doctor --non-interactive
```
Запускати без запитів і застосовувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії перезапуску/служби/пісочниці, які потребують підтвердження людини. Міграції застарілого стану запускаються автоматично після виявлення.
Запустити без запитів і застосовувати лише безпечні міграції (нормалізація конфігурації + переміщення стану на диску). Пропускає дії перезапуску/служби/пісочниці, які потребують підтвердження людини. Міграції застарілого стану запускаються автоматично, коли їх виявлено.
</Tab>
<Tab title="--deep">
@ -62,12 +62,12 @@ openclaw doctor
openclaw doctor --deep
```
Сканувати системні служби на наявність додаткових встановлень Gateway (launchd/systemd/schtasks).
Сканувати системні служби на наявність додаткових встановлень gateway (launchd/systemd/schtasks).
</Tab>
</Tabs>
Якщо хочете переглянути зміни перед записом, спочатку відкрийте файл конфігурації:
Якщо ви хочете переглянути зміни перед записом, спершу відкрийте файл конфігурації:
```bash
cat ~/.openclaw/openclaw.json
@ -76,63 +76,63 @@ cat ~/.openclaw/openclaw.json
## Що він робить (підсумок)
<AccordionGroup>
<Accordion title="Справність, UI та оновлення">
- Необов’язкове попереднє оновлення для git-встановлень (лише інтерактивно).
<Accordion title="Стан, UI та оновлення">
- Необов’язкове попереднє оновлення для встановлень із git (лише інтерактивно).
- Перевірка актуальності протоколу UI (перезбирає Control UI, коли схема протоколу новіша).
- Перевірка справності + запит на перезапуск.
- Підсумок стану Skills (придатні/відсутні/заблоковані) і стан плагінів.
- Перевірка стану + запит на перезапуск.
- Підсумок стану Skills (придатні/відсутні/заблоковані) і стан Plugin.
</Accordion>
<Accordion title="Конфігурація та міграції">
- Нормалізація конфігурації для застарілих значень.
- Міграція конфігурації Talk із застарілих плоских полів `talk.*` до `talk.provider` + `talk.providers.<provider>`.
- Міграція конфігурації Talk із застарілих пласких полів `talk.*` у `talk.provider` + `talk.providers.<provider>`.
- Перевірки міграції браузера для застарілих конфігурацій розширення Chrome і готовності Chrome MCP.
- Попередження про перевизначення провайдера OpenCode (`models.providers.opencode` / `models.providers.opencode-go`).
- Попередження про затінення Codex OAuth (`models.providers.openai-codex`).
- Перевірка передумов OAuth TLS для профілів OpenAI Codex OAuth.
- Попередження allowlist плагінів/інструментів, коли `plugins.allow` є обмежувальним, але політика інструментів усе ще вимагає wildcard або інструменти, що належать плагінам.
- Міграція застарілого стану на диску (sessions/agent dir/WhatsApp auth).
- Міграція застарілих ключів контракту маніфесту плагіна (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders``contracts`).
- Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля доставки/payload верхнього рівня, payload `provider`, прості резервні завдання Webhook `notify: true`).
- Міграція застарілої політики виконання агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`.
- Очищення застарілої конфігурації плагінів, коли плагіни ввімкнені; коли `plugins.enabled=false`, застарілі посилання на плагіни вважаються інертною конфігурацією ізоляції та зберігаються.
- Попередження allowlist Plugin/інструментів, коли `plugins.allow` обмежувальний, але політика інструментів усе ще запитує wildcard або інструменти, що належать Plugin.
- Міграція застарілого стану на диску (сеанси/каталог агента/автентифікація WhatsApp).
- Міграція застарілих ключів контракту маніфесту Plugin (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders``contracts`).
- Міграція застарілого сховища cron (`jobId`, `schedule.cron`, поля доставки/навантаження верхнього рівня, payload `provider`, прості резервні webhook-завдання `notify: true`).
- Міграція застарілої runtime-політики агента до `agents.defaults.agentRuntime` і `agents.list[].agentRuntime`.
- Очищення застарілої конфігурації Plugin, коли plugins увімкнено; коли `plugins.enabled=false`, застарілі посилання на Plugin вважаються інертною конфігурацією стримування й зберігаються.
</Accordion>
<Accordion title="Стан і цілісність">
- Перевірка lock-файлів сесій і очищення застарілих lock-файлів.
- Ремонт транскриптів сесій для дубльованих гілок переписування prompt, створених ураженими збірками 2026.4.24.
- Виявлення tombstone відновлення після перезапуску завислого subagent, з підтримкою `--fix` для очищення застарілих прапорців перерваного відновлення, щоб під час запуску дочірній процес не продовжував вважатися перерваним перезапуском.
- Перевірки цілісності стану та дозволів (сесії, транскрипти, каталог стану).
- Перевірка файлів блокування сеансів і очищення застарілих блокувань.
- Ремонт транскриптів сеансів для дубльованих гілок переписування підказок, створених ураженими збірками 2026.4.24.
- Виявлення tombstone для відновлення після перезапуску завислих subagent, з підтримкою `--fix` для очищення застарілих aborted recovery flags, щоб запуск не продовжував вважати дочірній процес перерваним під час перезапуску.
- Перевірки цілісності стану та дозволів (сеанси, транскрипти, каталог стану).
- Перевірки дозволів файлу конфігурації (chmod 600) під час локального запуску.
- Справність автентифікації моделей: перевіряє завершення строку дії OAuth, може оновлювати токени, строк дії яких спливає, і повідомляє стани cooldown/disabled профілів автентифікації.
- Виявлення додаткового каталогу workspace (`~/openclaw`).
- Стан автентифікації моделі: перевіряє завершення OAuth, може оновлювати токени, термін яких спливає, і повідомляє про стани cooldown/disabled для auth-profile.
- Виявлення додаткового каталогу робочого простору (`~/openclaw`).
</Accordion>
<Accordion title="Gateway, служби та супервізори">
- Ремонт образу пісочниці, коли пісочницю ввімкнено.
- Міграція застарілої служби та виявлення додаткового Gateway.
- Ремонт образу пісочниці, коли sandboxing увімкнено.
- Міграція застарілих служб і виявлення додаткових gateway.
- Міграція застарілого стану каналу Matrix (у режимі `--fix` / `--repair`).
- Перевірки виконання Gateway (служба встановлена, але не запущена; кешована мітка launchd).
- Попередження стану каналів (перевірено із запущеного Gateway).
- Runtime-перевірки Gateway (службу встановлено, але не запущено; кешована мітка launchd).
- Попередження про стан каналу (пробуються із запущеного gateway).
- Аудит конфігурації супервізора (launchd/systemd/schtasks) з необов’язковим ремонтом.
- Очищення середовища вбудованого проксі для служб Gateway, які захопили значення shell `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` під час встановлення або оновлення.
- Перевірки найкращих практик виконання Gateway (Node проти Bun, шляхи менеджера версій).
- Діагностика конфліктів порту Gateway (типово `18789`).
- Очищення середовища вбудованого proxy для служб gateway, які захопили значення shell `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` під час встановлення або оновлення.
- Перевірки найкращих практик runtime Gateway (Node проти Bun, шляхи version-manager).
- Діагностика конфлікту портів Gateway (типовий `18789`).
</Accordion>
<Accordion title="Автентифікація, безпека та сполучення">
- Попередження безпеки для відкритих політик DM.
- Перевірки автентифікації Gateway для режиму локального токена (пропонує генерацію токена, коли джерела токена немає; не перезаписує конфігурації token SecretRef).
- Виявлення проблем зі сполученням пристрою (очікувані запити першого сполучення, очікувані підвищення ролі/області, розбіжність застарілого локального кешу device-token і розбіжність автентифікації запису сполучення).
- Виявлення проблем зі сполученням пристрою (очікувані первинні запити на сполучення, очікувані підвищення ролі/обсягу, drift застарілого локального кешу device-token і drift автентифікації paired-record).
</Accordion>
<Accordion title="Workspace і shell">
<Accordion title="Робочий простір і shell">
- Перевірка systemd linger у Linux.
- Перевірка розміру bootstrap-файлу workspace (попередження про обрізання/наближення до ліміту для контекстних файлів).
- Перевірка готовності Skills для типового агента; повідомляє дозволені навички з відсутніми bin, env, config або вимогами OS, а `--fix` може вимкнути недоступні навички в `skills.entries`.
- Перевірка стану shell completion і автоматичне встановлення/оновлення.
- Перевірка готовності провайдера embeddings для пошуку пам’яті (локальна модель, ключ віддаленого API або бінарний файл QMD).
- Перевірки встановлення з джерел (невідповідність pnpm workspace, відсутні UI-ресурси, відсутній бінарний файл tsx).
- Перевірка розміру bootstrap-файлу робочого простору (попередження про обрізання/наближення до ліміту для контекстних файлів).
- Перевірка готовності Skills для типового агента; повідомляє про дозволені skills із відсутніми bins, env, config або вимогами ОС, а `--fix` може вимкнути недоступні skills у `skills.entries`.
- Перевірка стану shell completion та автоматичне встановлення/оновлення.
- Перевірка готовності провайдера embedding для пошуку пам’яті (локальна модель, remote API key або QMD binary).
- Перевірки source install (невідповідність pnpm workspace, відсутні UI assets, відсутній tsx binary).
- Записує оновлену конфігурацію + метадані wizard.
</Accordion>
@ -140,21 +140,21 @@ cat ~/.openclaw/openclaw.json
## Зворотне заповнення та скидання Dreams UI
Сцена Dreams у Control UI містить дії **Backfill**, **Reset** і **Clear Grounded** для процесу grounded dreaming. Ці дії використовують RPC-методи Gateway у стилі doctor, але вони **не** є частиною ремонту/міграції CLI `openclaw doctor`.
Сцена Control UI Dreams містить дії **Backfill**, **Reset** і **Clear Grounded** для grounded dreaming workflow. Ці дії використовують RPC-методи у стилі gateway doctor, але вони **не** є частиною ремонту/міграції `openclaw doctor` CLI.
Що вони роблять:
- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному workspace, запускає grounded REM diary pass і записує оборотні записи backfill до `DREAMS.md`.
- **Reset** видаляє з `DREAMS.md` лише ці позначені записи backfill diary.
- **Clear Grounded** видаляє лише staged grounded-only короткострокові записи, що походять з історичного replay і ще не накопичили live recall або daily support.
- **Backfill** сканує історичні файли `memory/YYYY-MM-DD.md` в активному робочому просторі, запускає прохід grounded REM diary і записує оборотні записи backfill у `DREAMS.md`.
- **Reset** видаляє лише ці позначені backfill diary entries із `DREAMS.md`.
- **Clear Grounded** видаляє лише staged grounded-only short-term entries, які походять з історичного replay і ще не накопичили live recall або daily support.
Чого вони **не** роблять самі по собі:
Що вони **не** роблять самі по собі:
- вони не редагують `MEMORY.md`
- вони не запускають повні міграції doctor
- вони не додають автоматично grounded candidates до live short-term promotion store, якщо ви явно не запустите спочатку staged CLI path
- вони не запускають повні doctor migrations
- вони не додають grounded candidates автоматично до live short-term promotion store, якщо ви спершу явно не запустите staged CLI path
Якщо хочете, щоб grounded historical replay вплинув на звичайну deep promotion lane, натомість використовуйте CLI-потік:
Якщо ви хочете, щоб grounded historical replay впливав на звичайну deep promotion lane, натомість використовуйте CLI flow:
```bash
openclaw memory rem-backfill --path ./memory --stage-short-term
@ -165,18 +165,20 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
## Докладна поведінка та обґрунтування
<AccordionGroup>
<Accordion title="0. Необов’язкове оновлення (git-встановлення)">
Якщо це git checkout і doctor запущено інтерактивно, він пропонує оновитися (fetch/rebase/build) перед запуском doctor.
<Accordion title="0. Необов’язкове оновлення (git installs)">
Якщо це git checkout і doctor працює інтерактивно, він пропонує оновити (fetch/rebase/build) перед запуском doctor.
</Accordion>
<Accordion title="1. Нормалізація конфігурації">
Якщо конфігурація містить застарілі форми значень (наприклад `messages.ackReaction` без перевизначення для конкретного каналу), doctor нормалізує їх до поточної схеми.
Якщо конфігурація містить застарілі форми значень (наприклад, `messages.ackReaction` без перевизначення для конкретного каналу), doctor нормалізує їх у поточну схему.
Це включає застарілі плоскі поля Talk. Поточна публічна конфігурація Talk — це `talk.provider` + `talk.providers.<provider>`. Doctor переписує старі форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` у map провайдера.
Це включає застарілі пласкі поля Talk. Поточна публічна конфігурація Talk — це `talk.provider` + `talk.providers.<provider>`. Doctor переписує старі форми `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` у мапу провайдера.
Doctor також попереджає, коли `plugins.allow` не порожній, а політика інструментів використовує
wildcard або записи інструментів, що належать плагінам. `tools.allow: ["*"]` збігається лише з інструментами
з плагінів, які фактично завантажуються; він не обходить ексклюзивний
allowlist плагінів.
Doctor також попереджає, коли `plugins.allow` непорожній і політика інструментів використовує
wildcard або записи інструментів, що належать Plugin. `tools.allow: ["*"]` відповідає лише інструментам
із plugins, які фактично завантажуються; це не обходить ексклюзивний
allowlist Plugin. Doctor записує `plugins.bundledDiscovery: "compat"` для мігрованих
застарілих конфігурацій allowlist, щоб зберегти наявну поведінку bundled provider, а
потім вказує на суворіший параметр `"allowlist"`.
</Accordion>
<Accordion title="2. Міграції застарілих ключів конфігурації">
@ -186,9 +188,9 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
- Пояснить, які застарілі ключі знайдено.
- Покаже застосовану міграцію.
- Перепише `~/.openclaw/openclaw.json` з оновленою схемою.
- Перезапише `~/.openclaw/openclaw.json` оновленою схемою.
Gateway також автоматично запускає міграції doctor під час запуску, коли виявляє застарілий формат конфігурації, тож застарілі конфігурації ремонтуються без ручного втручання. Міграції сховища завдань Cron обробляються `openclaw doctor --fix`.
Gateway також автоматично запускає doctor migrations під час запуску, коли виявляє застарілий формат конфігурації, тож застарілі конфігурації ремонтуються без ручного втручання. Міграції сховища Cron job обробляються командою `openclaw doctor --fix`.
Поточні міграції:
@ -199,7 +201,7 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
- `channels.telegram.requireMention``channels.telegram.groups."*".requireMention`
- конфігурації налаштованих каналів без видимої політики відповідей → `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`
@ -215,24 +217,24 @@ 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` для тайм-аутів повільних провайдерів/моделей
- `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 і витрати для кожної моделі.
<Accordion title="2b. Перевизначення провайдера OpenCode">
Якщо ви вручну додали `models.providers.opencode`, `opencode-zen` або `opencode-go`, це перевизначає вбудований каталог OpenCode з `@mariozechner/pi-ai`. Це може примусово спрямувати моделі на неправильний API або обнулити витрати. Doctor попереджає, щоб ви могли видалити перевизначення та відновити маршрутизацію API + витрати для кожної моделі.
</Accordion>
<Accordion title="2c. Міграція браузера та готовність Chrome MCP">
Якщо ваша конфігурація браузера досі вказує на видалений шлях розширення Chrome, doctor нормалізує її до поточної моделі підключення Chrome MCP на локальному хості:
@ -242,262 +244,262 @@ openclaw memory rem-backfill --path ./memory --stage-short-term
Doctor також перевіряє шлях Chrome MCP на локальному хості, коли ви використовуєте `defaultProfile: "user"` або налаштований профіль `existing-session`:
- перевіряє, чи встановлено Google Chrome на тому самому хості для стандартних профілів автопідключення
- перевіряє виявлену версію Chrome і попереджає, якщо вона нижча за Chrome 144
- нагадує увімкнути віддалене налагодження на сторінці інспектування браузера (наприклад, `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` або `edge://inspect/#remote-debugging`)
- перевіряє, чи встановлено Google Chrome на тому самому хості для типових профілів автопідключення
- перевіряє виявлену версію Chrome і попереджає, коли вона нижча за Chrome 144
- нагадує увімкнути віддалене налагодження на сторінці інспекції браузера (наприклад, `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, щоб упевнитися, що локальний стек TLS Node/OpenSSL може перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприклад, `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, прострочений сертифікат або самопідписаний сертифікат), doctor виводить рекомендації з виправлення для конкретної платформи. На macOS з Homebrew Node виправлення зазвичай таке: `brew postinstall ca-certificates`. З `--deep` перевірка виконується навіть тоді, коли gateway справний.
Коли налаштовано профіль OpenAI Codex OAuth, doctor опитує endpoint авторизації OpenAI, щоб перевірити, чи локальний стек Node/OpenSSL TLS може перевірити ланцюжок сертифікатів. Якщо перевірка завершується помилкою сертифіката (наприклад, `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, прострочений сертифікат або самопідписаний сертифікат), doctor виводить поради з виправлення для конкретної платформи. На macOS з Homebrew Node виправленням зазвичай є `brew postinstall ca-certificates`. З `--deep` перевірка виконується навіть якщо Gateway справний.
</Accordion>
<Accordion title="2e. Перевизначення провайдера Codex OAuth">
Якщо раніше ви додали застарілі налаштування транспорту OpenAI у `models.providers.openai-codex`, вони можуть перекрити вбудований шлях провайдера Codex OAuth, який новіші випуски використовують автоматично. Doctor попереджає, коли бачить ці старі налаштування транспорту разом із Codex OAuth, щоб ви могли видалити або переписати застаріле перевизначення транспорту й повернути вбудовану поведінку маршрутизації/резервування. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не запускають це попередження.
Якщо раніше ви додали застарілі транспортні налаштування в `models.providers.openai-codex`, вони можуть затінити вбудований шлях провайдера Codex OAuth, який новіші релізи використовують автоматично. Doctor попереджає, коли бачить ці старі транспортні налаштування поруч із Codex OAuth, щоб ви могли видалити або переписати застаріле транспортне перевизначення та повернути вбудовану поведінку маршрутизації/резервування. Користувацькі проксі та перевизначення лише заголовків усе ще підтримуються й не спричиняють це попередження.
</Accordion>
<Accordion title="2f. Попередження маршрутів Plugin Codex">
Коли ввімкнено вбудований Plugin Codex, doctor також перевіряє, чи посилання на основні моделі `openai-codex/*` досі розв’язуються через стандартний runner PI. Така комбінація коректна, коли ви хочете використовувати автентифікацію Codex OAuth/підписки через PI, але її легко сплутати з нативним app-server harness Codex. Doctor попереджає та вказує на явну форму app-server: `openai/*` плюс `agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`.
Коли ввімкнено вбудований Plugin Codex, doctor також перевіряє, чи refs основної моделі `openai-codex/*` досі розв’язуються через типовий runner PI. Ця комбінація коректна, коли ви хочете використовувати Codex OAuth/автентифікацію підписки через PI, але її легко сплутати з нативним середовищем 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"` означає "виконати вбудований turn через нативний 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 може мігрувати старіші дискові структури в поточну структуру:
- Сховище сеансів + transcripts:
- Сховище сеансів + транскрипти:
- з `~/.openclaw/sessions/` до `~/.openclaw/agents/<agentId>/sessions/`
- Каталог агента:
- з `~/.openclaw/agent/` до `~/.openclaw/agents/<agentId>/agent/`
- Стан автентифікації WhatsApp (Baileys):
- із застарілих `~/.openclaw/credentials/*.json` (крім `oauth.json`)
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (стандартний ID облікового запису: `default`)
- до `~/.openclaw/credentials/whatsapp/<accountId>/...` (типовий ID облікового запису: `default`)
Ці міграції виконуються за принципом best-effort і є ідемпотентними; doctor виводитиме попередження, коли залишатиме будь-які застарілі папки як резервні копії. Gateway/CLI також автоматично мігрує застарілі сеанси + каталог агента під час запуску, щоб історія/автентифікація/моделі потрапляли в шлях для кожного агента без ручного запуску doctor. Автентифікацію WhatsApp навмисно мігрують лише через `openclaw doctor`. Нормалізація провайдера talk/мапи провайдерів тепер порівнює за структурною рівністю, тож відмінності лише в порядку ключів більше не запускають повторні no-op зміни `doctor --fix`.
Ці міграції виконуються за принципом best-effort та є ідемпотентними; doctor виводитиме попередження, коли залишає будь-які застарілі папки як резервні копії. Gateway/CLI також автоматично мігрує застаріле сховище сеансів + каталог агента під час запуску, щоб історія/автентифікація/моделі потрапляли в шлях для конкретного агента без ручного запуску doctor. Автентифікація WhatsApp навмисно мігрується лише через `openclaw doctor`. Нормалізація провайдера talk/карти провайдерів тепер порівнює за структурною рівністю, тому відмінності лише в порядку ключів більше не спричиняють повторних no-op змін `doctor --fix`.
</Accordion>
<Accordion title="3a. Міграції застарілих маніфестів Plugin">
Doctor сканує всі встановлені маніфести Plugin на наявність застарілих ключів можливостей верхнього рівня (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders`). Коли їх знайдено, він пропонує перемістити їх в об’єкт `contracts` і переписати файл маніфесту на місці. Ця міграція ідемпотентна; якщо ключ `contracts` уже має такі самі значення, застарілий ключ видаляється без дублювання даних.
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`, коли перевизначено) на старі форми завдань, які scheduler досі приймає для сумісності.
Поточні очищення cron включають:
Поточні очищення Cron містять:
- `jobId``id`
- `schedule.cron``schedule.expr`
- поля payload верхнього рівня (`message`, `model`, `thinking`, ...) → `payload`
- поля delivery верхнього рівня (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
- псевдоніми delivery для `provider` у payload → явний `delivery.channel`
- прості застарілі резервні webhook-завдання `notify: true` → явний `delivery.mode="webhook"` з `delivery.to=cron.webhook`
- верхньорівневі поля payload (`message`, `model`, `thinking`, ...) → `payload`
- верхньорівневі поля доставки (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
- псевдоніми доставки payload `provider` → явний `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`. Цей скрипт на локальному хості не підтримується поточним 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`.
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. Перевірки цілісності стану (збереження сеансів, маршрутизація та безпека)">
Каталог стану — це операційний мозковий стовбур. Якщо він зникне, ви втратите сеанси, облікові дані, журнали й конфігурацію (якщо не маєте резервних копій деінде).
Каталог стану — це операційний мозковий стовбур. Якщо він зникне, ви втратите сеанси, облікові дані, журнали та конфігурацію (якщо не маєте резервних копій в іншому місці).
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`.
- **Каталог стану відсутній**: попереджає про катастрофічну втрату стану, пропонує повторно створити каталог і нагадує, що не може відновити відсутні дані.
- **Дозволи каталогу стану**: перевіряє можливість запису; пропонує виправити дозволи (і виводить підказку `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`.
- **Головний сеанс "1-line JSONL"**: позначає випадок, коли головний транскрипт має лише один рядок (історія не накопичується).
- **Кілька каталогів стану**: попереджає, коли в домашніх каталогах існує кілька папок `~/.openclaw` або коли `OPENCLAW_STATE_DIR` вказує в інше місце (історія може розділитися між інсталяціями).
- **Нагадування про віддалений режим**: якщо `gateway.mode=remote`, doctor нагадує запустити його на віддаленому хості (стан зберігається там).
- **Дозволи конфігураційного файлу**: попереджає, якщо `~/.openclaw/openclaw.json` доступний для читання групі/всім, і пропонує посилити дозволи до `600`.
</Accordion>
<Accordion title="5. Стан автентифікації моделі (закінчення OAuth)">
Doctor перевіряє OAuth-профілі в сховищі автентифікації, попереджає, коли токени невдовзі завершаться або вже завершилися, і може безпечно оновити їх. Якщо профіль Anthropic OAuth/токена застарів, він пропонує ключ API Anthropic або шлях із setup-токеном 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 також повідомляє про профілі автентифікації, які тимчасово непридатні через:
- короткі періоди очікування (обмеження швидкості/тайм-аути/збої автентифікації)
- довші вимкнення (проблеми з оплатою/кредитами)
- короткі cooldown-и (обмеження швидкості/тайм-аути/збої автентифікації)
- довші вимкнення (збої білінгу/кредитів)
</Accordion>
<Accordion title="6. Перевірка моделі hooks">
Якщо задано `hooks.gmail.model`, Doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли воно не розвʼязується або заборонене.
<Accordion title="6. Валідація моделі hooks">
Якщо `hooks.gmail.model` задано, doctor перевіряє посилання на модель за каталогом і allowlist та попереджає, коли його неможливо розв’язати або воно заборонене.
</Accordion>
<Accordion title="7. Відновлення sandbox-образу">
Коли sandboxing увімкнено, Doctor перевіряє образи Docker і пропонує зібрати їх або перемкнутися на legacy-назви, якщо поточного образу бракує.
<Accordion title="7. Виправлення образу sandbox">
Коли sandboxing увімкнено, doctor перевіряє Docker-образи та пропонує зібрати або перейти на застарілі назви, якщо поточний образ відсутній.
</Accordion>
<Accordion title="7b. Очищення інсталяції Plugin">
Doctor видаляє legacy проміжний стан залежностей Plugin, згенерований OpenClaw, у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги етапу інсталяції, пакетні залишки від попереднього коду відновлення залежностей bundled-plugin, а також осиротілі або відновлені керовані npm-копії bundled `@openclaw/*` plugins, які можуть затіняти поточний bundled-маніфест.
<Accordion title="7b. Очищення встановлення Plugin">
Doctor видаляє застарілий staging-стан залежностей Plugin, згенерований OpenClaw, у режимі `openclaw doctor --fix` / `openclaw doctor --repair`. Це охоплює застарілі згенеровані корені залежностей, старі каталоги install-stage, локальні для package залишки від попереднього коду виправлення залежностей bundled-plugin, а також осиротілі або відновлені керовані npm-копії bundled `@openclaw/*` plugins, які можуть затіняти поточний bundled manifest.
Doctor також може перевстановлювати налаштовані downloadable plugins, коли конфігурація посилається на них, але локальний реєстр Plugin не може їх знайти. Для зовнішнього винесення bundled-plugin 2026.5.2 Doctor автоматично встановлює downloadable plugins, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей release-прохід лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; інсталяції Plugin лишаються явною роботою doctor/install/update.
Doctor також може повторно встановити налаштовані завантажувані plugins, коли конфігурація посилається на них, але локальний реєстр Plugin не може їх знайти. Для externalization bundled-plugin 2026.5.2 doctor автоматично встановлює завантажувані plugins, які вже використовує наявна конфігурація, а потім покладається на `meta.lastTouchedVersion`, щоб виконати цей релізний прохід лише один раз. Запуск Gateway і перезавантаження конфігурації не запускають менеджери пакетів; встановлення Plugin лишається явною роботою doctor/install/update.
</Accordion>
<Accordion title="8. Міграції служби Gateway і підказки з очищення">
Doctor виявляє legacy-служби gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити службу OpenClaw із поточним портом gateway. Він також може сканувати додаткові gateway-подібні служби й друкувати підказки з очищення. Служби gateway OpenClaw з іменами профілів вважаються повноцінними й не позначаються як "зайві".
Doctor виявляє застарілі служби gateway (launchd/systemd/schtasks) і пропонує видалити їх та встановити службу OpenClaw з поточним портом gateway. Він також може сканувати додаткові gateway-подібні служби й виводити підказки з очищення. Служби OpenClaw gateway з іменами профілів вважаються повноцінними й не позначаються як "extra."
На Linux, якщо користувацька служба gateway відсутня, але існує системна служба gateway OpenClaw, Doctor не встановлює автоматично другу користувацьку службу. Перевірте за допомогою `openclaw gateway status --deep` або `openclaw doctor --deep`, потім видаліть дублікат або задайте `OPENCLAW_SERVICE_REPAIR_POLICY=external`, коли системний supervisor керує життєвим циклом gateway.
У Linux, якщо user-level служба gateway відсутня, але існує system-level служба OpenClaw gateway, doctor не встановлює автоматично другу user-level службу. Перевірте через `openclaw gateway status --deep` або `openclaw doctor --deep`, потім видаліть дублікат або задайте `OPENCLAW_SERVICE_REPAIR_POLICY=external`, коли системний supervisor керує життєвим циклом gateway.
</Accordion>
<Accordion title="8b. Міграція Startup Matrix">
Коли обліковий запис каналу Matrix має очікувану або придатну до дії legacy-міграцію стану, Doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім запускає best-effort кроки міграції: legacy-міграцію стану Matrix і підготовку legacy зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск триває. У режимі лише для читання (`openclaw doctor` без `--fix`) ця перевірка повністю пропускається.
Коли обліковий запис каналу Matrix має очікувану або придатну до дії міграцію застарілого стану, doctor (у режимі `--fix` / `--repair`) створює знімок перед міграцією, а потім виконує best-effort кроки міграції: міграцію застарілого стану Matrix і підготовку застарілого зашифрованого стану. Обидва кроки не є фатальними; помилки журналюються, а запуск продовжується. У режимі лише для читання (`openclaw doctor` без `--fix`) ця перевірка повністю пропускається.
</Accordion>
<Accordion title="8c. Сполучення пристроїв і дрейф автентифікації">
Doctor тепер перевіряє стан сполучення пристроїв як частину звичайного проходу перевірки справності.
<Accordion title="8c. Спарювання пристроїв і дрейф автентифікації">
Doctor тепер перевіряє стан спарювання пристроїв як частину звичайного проходу перевірки здоров’я.
Що він повідомляє:
- очікувані запити першого сполучення
- очікувані підвищення ролі для вже сполучених пристроїв
- очікувані підвищення scope для вже сполучених пристроїв
- відновлення невідповідності відкритого ключа, коли id пристрою досі збігається, але ідентичність пристрою більше не збігається із затвердженим записом
- сполучені записи, яким бракує активного токена для затвердженої ролі
- сполучені токени, scope яких виходять за межі затвердженого базового рівня сполучення
- локальні кешовані записи device-token для поточної машини, що передують ротації токена на боці gateway або містять застарілі метадані scope
- очікувані запити на перше спарювання
- очікувані підвищення ролі для вже спарених пристроїв
- очікувані підвищення scope для вже спарених пристроїв
- виправлення невідповідності public-key, коли id пристрою досі збігається, але ідентичність пристрою більше не збігається із затвердженим записом
- спарені записи, яким бракує активного токена для затвердженої ролі
- спарені токени, чиї scopes відхилилися від затвердженої базової лінії спарювання
- локальні кешовані записи device-token для поточної машини, які передують ротації токена на стороні gateway або містять застарілі метадані scope
Doctor не схвалює автоматично запити на сполучення і не ротує автоматично токени пристроїв. Натомість він друкує точні наступні кроки:
Doctor не затверджує автоматично запити спарювання й не ротуються автоматично токени пристроїв. Натомість він виводить точні наступні кроки:
- перегляньте очікувані запити за допомогою `openclaw devices list`
- схваліть точний запит за допомогою `openclaw devices approve <requestId>`
- затвердьте точний запит за допомогою `openclaw devices approve <requestId>`
- згенеруйте свіжий токен ротацією за допомогою `openclaw devices rotate --device <deviceId> --role <role>`
- видаліть і повторно схваліть застарілий запис за допомогою `openclaw devices remove <deviceId>`
- видаліть і повторно затвердьте застарілий запис за допомогою `openclaw devices remove <deviceId>`
Це закриває поширену прогалину "already paired but still getting pairing required": Doctor тепер відрізняє перше сполучення від очікуваних підвищень ролі/scope і від дрейфу застарілого токена/ідентичності пристрою.
Це закриває поширену прогалину "already paired but still getting pairing required": doctor тепер відрізняє перше спарювання від очікуваних підвищень ролі/scope та від дрейфу застарілого токена/ідентичності пристрою.
</Accordion>
<Accordion title="9. Попередження безпеки">
Doctor виводить попередження, коли провайдер відкритий для DM без allowlist або коли політику налаштовано небезпечним способом.
</Accordion>
<Accordion title="10. systemd linger (Linux)">
Якщо запуск відбувається як користувацька служба systemd, Doctor гарантує, що lingering увімкнено, щоб gateway залишався активним після виходу з системи.
Якщо запущено як systemd user service, doctor гарантує, що lingering увімкнено, щоб gateway залишався активним після виходу з системи.
</Accordion>
<Accordion title="11. Стан робочого простору (Skills, plugins і legacy-каталоги)">
Doctor друкує підсумок стану робочого простору для агента за замовчуванням:
<Accordion title="11. Стан робочого простору (skills, plugins і застарілі каталоги)">
Doctor виводить зведення стану робочого простору для агента за замовчуванням:
- **Стан Skills**: рахує придатні, з відсутніми вимогами та заблоковані allowlist skills.
- **Legacy-каталоги робочого простору**: попереджає, коли `~/openclaw` або інші legacy-каталоги робочого простору існують поруч із поточним робочим простором.
- **Стан Plugin**: рахує ввімкнені/вимкнені/помилкові plugins; перелічує ID Plugin для будь-яких помилок; повідомляє про можливості bundle plugin.
- **Стан Skills**: рахує eligible, missing-requirements і allowlist-blocked skills.
- **Застарілі каталоги робочого простору**: попереджає, коли `~/openclaw` або інші застарілі каталоги робочого простору існують поруч із поточним робочим простором.
- **Стан Plugin**: рахує ввімкнені/вимкнені/помилкові plugins; перелічує Plugin IDs для будь-яких помилок; повідомляє можливості bundle plugin.
- **Попередження сумісності Plugin**: позначає plugins, що мають проблеми сумісності з поточним runtime.
- **Діагностика Plugin**: показує будь-які попередження або помилки під час завантаження, виведені реєстром Plugin.
- **Діагностика 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` або інші інжектовані файли контексту) близькі до налаштованого бюджету символів або перевищують його. Він повідомляє для кожного файлу raw і injected кількість символів, відсоток truncation, причину truncation (`max/file` або `max/total`) і загальну кількість injected символів як частку загального бюджету. Коли файли truncate-яться або близькі до ліміту, doctor виводить поради з налаштування `agents.defaults.bootstrapMaxChars` і `agents.defaults.bootstrapTotalMaxChars`.
</Accordion>
<Accordion title="11d. Очищення застарілого channel plugin">
Коли `openclaw doctor --fix` видаляє відсутній channel plugin, він також видаляє завислу конфігурацію в області каналу, що посилалася на цей Plugin: записи `channels.<id>`, цілі Heartbeat, які називали канал, і перевизначення `agents.*.models["<channel>/*"]`. Це запобігає boot loop Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway привʼязатися до нього.
<Accordion title="11d. Очищення застарілого Plugin каналу">
Коли `openclaw doctor --fix` видаляє відсутній Plugin каналу, він також видаляє dangling channel-scoped конфігурацію, що посилалася на цей Plugin: записи `channels.<id>`, цілі Heartbeat, які називали канал, і перевизначення `agents.*.models["<channel>/*"]`. Це запобігає boot loop-ам Gateway, коли runtime каналу зник, але конфігурація все ще просить gateway привязатися до нього.
</Accordion>
<Accordion title="11c. Автодоповнення shell">
Doctor перевіряє, чи встановлено автодоповнення вкладкою для поточного shell (zsh, bash, fish або PowerShell):
Doctor перевіряє, чи встановлено tab completion для поточного shell (zsh, bash, fish або PowerShell):
- Якщо профіль shell використовує повільний шаблон динамічного автодоповнення (`source <(openclaw completion ...)`), Doctor оновлює його до швидшого варіанта з кешованим файлом.
- Якщо автодоповнення налаштовано в профілі, але кеш-файл відсутній, Doctor автоматично регенерує кеш.
- Якщо автодоповнення взагалі не налаштовано, Doctor пропонує встановити його (лише інтерактивний режим; пропускається з `--non-interactive`).
- Якщо профіль shell використовує повільний динамічний шаблон completion (`source <(openclaw completion ...)`), doctor оновлює його до швидшого варіанта з кешованим файлом.
- Якщо completion налаштовано в профілі, але файл кешу відсутній, doctor автоматично регенерує кеш.
- Якщо completion взагалі не налаштовано, doctor пропонує встановити його (лише інтерактивний режим; пропускається з `--non-interactive`).
Запустіть `openclaw completion --write-state`, щоб регенерувати кеш вручну.
</Accordion>
<Accordion title="12. Перевірки автентифікації Gateway (локальний токен)">
Doctor перевіряє готовність автентифікації токена локального gateway.
Doctor перевіряє готовність автентифікації локального gateway токеном.
- Якщо режим токена потребує токена й джерела токена не існує, Doctor пропонує згенерувати його.
- Якщо `gateway.auth.token` керується SecretRef, але недоступний, Doctor попереджає і не перезаписує його відкритим текстом.
- `openclaw doctor --generate-gateway-token` примусово генерує токен лише тоді, коли не налаштовано SecretRef токена.
- Якщо режим токена потребує токена й джерела токена не існує, doctor пропонує згенерувати його.
- Якщо `gateway.auth.token` керується SecretRef, але недоступний, doctor попереджає й не перезаписує його plaintext.
- `openclaw doctor --generate-gateway-token` примусово генерує лише тоді, коли SecretRef токена не налаштовано.
</Accordion>
<Accordion title="12b. Відновлення з урахуванням SecretRef у режимі лише для читання">
Деякі потоки відновлення мають перевіряти налаштовані облікові дані, не послаблюючи runtime-поведінку fail-fast.
<Accordion title="12b. Виправлення з урахуванням SecretRef у режимі лише для читання">
Деяким потокам виправлення потрібно перевіряти налаштовані облікові дані, не послаблюючи runtime поведінку fail-fast.
- `openclaw doctor --fix` тепер використовує ту саму модель підсумку SecretRef лише для читання, що й команди родини status, для цільових відновлень конфігурації.
- Приклад: відновлення Telegram `allowFrom` / `groupAllowFrom` `@username` намагається використовувати налаштовані облікові дані бота, коли вони доступні.
- Якщо токен бота Telegram налаштовано через SecretRef, але він недоступний у поточному шляху команди, Doctor повідомляє, що облікові дані налаштовані, але недоступні, і пропускає автоматичне розвʼязання замість аварійного завершення або хибного повідомлення, що токен відсутній.
- `openclaw doctor --fix` тепер використовує ту саму read-only модель зведення SecretRef, що й команди status-family, для цільових виправлень конфігурації.
- Приклад: виправлення 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 у типовому шляху; використовуйте команду глибокого статусу памʼяті, коли потрібна live-перевірка постачальника.
Коли доступний кешований результат проби 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 і затримку перезапуску). Коли виявляє невідповідність, рекомендує оновлення та може переписати файл служби/завдання до поточних значень за замовчуванням.
Примітки:
- `openclaw doctor` запитує підтвердження перед переписуванням конфігурації супервізора.
- `openclaw doctor --yes` приймає типові запити на ремонт.
- `openclaw doctor --yes` приймає стандартні запити на відновлення.
- `openclaw doctor --repair` застосовує рекомендовані виправлення без запитів.
- `openclaw doctor --repair --force` перезаписує власні конфігурації супервізора.
- `OPENCLAW_SERVICE_REPAIR_POLICY=external` залишає doctor у режимі лише читання для життєвого циклу сервісу Gateway. Він усе одно повідомляє про справність сервісу й виконує ремонти, не повʼязані із сервісом, але пропускає встановлення/запуск/перезапуск/bootstrap сервісу, переписування конфігурації супервізора й очищення застарілого сервісу, бо цим життєвим циклом керує зовнішній супервізор.
- У Linux doctor не переписує метадані команди/entrypoint, доки відповідний systemd-юніт Gateway активний. Він також ігнорує неактивні незастарілі додаткові Gateway-подібні юніти під час сканування дубльованих сервісів, щоб супутні файли сервісів не створювали зайвого шуму очищення.
- Якщо автентифікація токеном вимагає токен і `gateway.auth.token` керується SecretRef, встановлення/ремонт сервісу doctor перевіряє SecretRef, але не зберігає розвʼязані відкриті значення токена в метадані середовища сервісу супервізора.
- Doctor виявляє керовані `.env`/SecretRef-backed значення середовища сервісу, які старіші встановлення LaunchAgent, systemd або Windows Scheduled Task вбудували inline, і переписує метадані сервісу так, щоб ці значення завантажувалися з джерела runtime, а не з визначення супервізора.
- Doctor виявляє, коли команда сервісу досі фіксує старий `--port` після зміни `gateway.port`, і переписує метадані сервісу на поточний порт.
- Якщо автентифікація токеном вимагає токен, а налаштований SecretRef токена не розвʼязується, doctor блокує шлях встановлення/ремонту з практичними рекомендаціями.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/ремонт, доки режим не буде задано явно.
- Для Linux user-systemd-юнітів перевірки дрейфу токена doctor тепер враховують джерела і `Environment=`, і `EnvironmentFile=` під час порівняння метаданих автентифікації сервісу.
- Ремонти сервісу doctor відмовляються переписувати, зупиняти або перезапускати сервіс Gateway зі старішого бінарного файла OpenClaw, коли конфігурацію востаннє записала новіша версія. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#split-brain-installs-and-newer-config-guard).
- `openclaw doctor --repair --force` перезаписує користувацькі конфігурації супервізора.
- `OPENCLAW_SERVICE_REPAIR_POLICY=external` залишає doctor у режимі лише читання для життєвого циклу служби gateway. Він і надалі повідомляє про стан служби та виконує відновлення, не пов’язані зі службою, але пропускає встановлення/запуск/перезапуск/bootstrap служби, переписування конфігурації супервізора та очищення застарілих служб, оскільки цим життєвим циклом керує зовнішній супервізор.
- У Linux doctor не переписує метадані команди/точки входу, поки відповідний systemd-модуль gateway активний. Він також ігнорує неактивні додаткові gateway-подібні модулі, які не є застарілими, під час сканування дубльованих служб, щоб супутні файли служб не створювали шуму очищення.
- Якщо автентифікація за токеном потребує токена, а `gateway.auth.token` керується SecretRef, встановлення/відновлення служби doctor перевіряє SecretRef, але не зберігає розв’язані значення токенів у відкритому тексті в метаданих середовища служби супервізора.
- Doctor виявляє керовані `.env`/SecretRef-backed значення середовища служби, які старіші інсталяції LaunchAgent, systemd або Windows Scheduled Task вбудовували inline, і переписує метадані служби так, щоб ці значення завантажувалися з джерела runtime, а не з визначення супервізора.
- Doctor виявляє, коли команда служби досі фіксує старий `--port` після зміни `gateway.port`, і переписує метадані служби на поточний порт.
- Якщо автентифікація за токеном потребує токена, а налаштований SecretRef токена не розв’язується, doctor блокує шлях встановлення/відновлення з дієвими інструкціями.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password`, а `gateway.auth.mode` не задано, doctor блокує встановлення/відновлення, доки режим не буде задано явно.
- Для Linux user-systemd модулів перевірки doctor на розбіжність токенів тепер включають джерела `Environment=` і `EnvironmentFile=` під час порівняння метаданих автентифікації служби.
- Відновлення служби doctor відмовляються переписувати, зупиняти або перезапускати службу gateway зі старішого бінарного файла OpenClaw, коли конфігурацію востаннє записала новіша версія. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#split-brain-installs-and-newer-config-guard).
- Ви завжди можете примусово виконати повне переписування через `openclaw 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`) і стабільні user-bin каталоги, але вгадані резервні каталоги менеджерів версій записуються в PATH сервісу лише тоді, коли ці каталоги існують на диску.
Нововстановлені або відновлені macOS LaunchAgents використовують канонічний системний PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) замість копіювання PATH інтерактивної оболонки, тому каталоги Volta, asdf, fnm, pnpm та інших менеджерів версій не змінюють, який Node розв’язують дочірні процеси. Служби Linux усе ще зберігають явні корені середовища (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) і стабільні user-bin каталоги, але вгадані fallback-каталоги менеджерів версій записуються до PATH служби лише тоді, коли ці каталоги існують на диску.
</Accordion>
<Accordion title="18. Запис конфігурації + метадані майстра">
Doctor зберігає будь-які зміни конфігурації та проставляє метадані майстра, щоб зафіксувати запуск doctor.
Doctor зберігає будь-які зміни конфігурації та ставить штамп метаданих майстра, щоб записати запуск doctor.
</Accordion>
<Accordion title="19. Поради щодо робочого простору (резервна копія + система памʼяті)">
Doctor пропонує систему памʼяті робочого простору, коли її бракує, і виводить пораду щодо резервної копії, якщо робочий простір ще не перебуває під git.
<Accordion title="19. Поради щодо робочого простору (резервна копія + система памяті)">
Doctor пропонує систему пам’яті робочого простору, якщо її немає, і виводить пораду щодо резервного копіювання, якщо робочий простір ще не перебуває під git.
Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace), щоб отримати повний посібник зі структури робочого простору та резервного копіювання git (рекомендовано приватний GitHub або GitLab).
Див. [/concepts/agent-workspace](/uk/concepts/agent-workspace) для повного посібника зі структури робочого простору та резервного копіювання git (рекомендовано приватний GitHub або GitLab).
</Accordion>
</AccordionGroup>
## Повʼязане
## Повязане
- [Runbook Gateway](/uk/gateway)
- [Усунення несправностей Gateway](/uk/gateway/troubleshooting)

View File

@ -4,38 +4,38 @@ read_when:
- Розуміння правил виявлення та завантаження Plugin
- Робота з пакетами Plugin, сумісними з Codex/Claude
sidebarTitle: Install and Configure
summary: Встановлення, налаштування й керування плагінами OpenClaw
summary: Встановлюйте, налаштовуйте та керуйте Plugin OpenClaw
title: Plugins
x-i18n:
generated_at: "2026-05-03T17:12:20Z"
generated_at: "2026-05-04T22:54:53Z"
model: gpt-5.5
provider: openai
source_hash: 30e3cffc15c5c52dd539e21103c207c9e38955f9fd3acd561a52964eefafb8f0
source_hash: 1de640f7766a6b312a2385075ae1abdb19f5c2afcb0e7063eba0d3edde697004
source_path: tools/plugin.md
workflow: 16
---
Plugins розширюють OpenClaw новими можливостями: канали, постачальники моделей,
середовища агентів, інструменти, Skills, мовлення, транскрипція в реальному часі,
голос у реальному часі, розуміння медіа, генерація зображень, генерація відео, веботримання, вебпошук
та інше. Деякі plugins є **основними** (постачаються з OpenClaw), інші
є **зовнішніми**. Більшість зовнішніх plugins публікуються й виявляються через
[ClawHub](/uk/tools/clawhub). Npm і далі підтримується для прямих установлень і для
тимчасового набору пакетів plugins, що належать OpenClaw, поки ця міграція завершується.
Plugins розширюють OpenClaw новими можливостями: каналами, постачальниками моделей,
агентними обв’язками, інструментами, Skills, мовленням, транскрипцією в реальному часі, голосом у реальному часі,
розумінням медіа, генерацією зображень, генерацією відео, отриманням даних з вебу, вебпошуком
та іншим. Деякі plugins є **core** (постачаються з OpenClaw), інші
є **зовнішніми**. Більшість зовнішніх plugins публікуються й знаходяться через
[ClawHub](/uk/tools/clawhub). Npm і далі підтримується для прямих встановлень і для
тимчасового набору пакетів plugins, що належать OpenClaw, доки ця міграція завершується.
## Швидкий старт
Приклади встановлення, перегляду списку, видалення, оновлення та публікації для копіювання і вставлення див.
Приклади встановлення, перегляду списку, видалення, оновлення та публікації для копіювання й вставлення дивіться в
[Керування plugins](/uk/plugins/manage-plugins).
<Steps>
<Step title="See what is loaded">
<Step title="Перегляньте, що завантажено">
```bash
openclaw plugins list
```
</Step>
<Step title="Install a plugin">
<Step title="Встановіть plugin">
```bash
# Search ClawHub plugins
openclaw plugins search "calendar"
@ -56,26 +56,26 @@ Plugins розширюють OpenClaw новими можливостями: к
</Step>
<Step title="Restart the Gateway">
<Step title="Перезапустіть Gateway">
```bash
openclaw gateway restart
```
Потім налаштуйте в `plugins.entries.\<id\>.config` у вашому файлі конфігурації.
Потім налаштуйте в `plugins.entries.\<id\>.config` у своєму файлі конфігурації.
</Step>
<Step title="Chat-native management">
У запущеному Gateway доступні лише власнику `/plugins enable` і `/plugins disable`
запускають перезавантажувач конфігурації Gateway. Gateway перезавантажує runtime-поверхні
plugin у поточному процесі, а нові ходи агента перебудовують свій список інструментів з
<Step title="Керування з чату">
У запущеному Gateway команди лише для власника `/plugins enable` і `/plugins disable`
запускають перезавантажувач конфігурації Gateway. Gateway перезавантажує runtime-поверхні plugin
у процесі, а нові ходи агента перебудовують свій список інструментів з
оновленого реєстру. `/plugins install` змінює вихідний код plugin, тому
Gateway запитує перезапуск замість того, щоб удавати, ніби поточний процес може
Gateway запитує перезапуск замість того, щоб вдавати, ніби поточний процес може
безпечно перезавантажити вже імпортовані модулі.
</Step>
<Step title="Verify the plugin">
<Step title="Перевірте plugin">
```bash
openclaw plugins inspect <plugin-id> --runtime --json
@ -83,14 +83,14 @@ Plugins розширюють OpenClaw новими можливостями: к
openclaw <plugin-command> --help
```
Використовуйте `--runtime`, коли потрібно довести зареєстровані інструменти, сервіси, методи gateway,
хуки або CLI-команди, що належать plugin. Звичайний `inspect` є холодною
перевіркою маніфесту/реєстру й навмисно уникає імпорту runtime plugin.
Використовуйте `--runtime`, коли потрібно підтвердити зареєстровані інструменти, служби, методи gateway,
hooks або CLI-команди, що належать plugin. Звичайний `inspect` — це холодна
перевірка маніфесту/реєстру, яка навмисно уникає імпортування runtime plugin.
</Step>
</Steps>
Якщо ви віддаєте перевагу керуванню безпосередньо з чату, увімкніть `commands.plugins: true` і використовуйте:
Якщо ви надаєте перевагу керуванню з чату, увімкніть `commands.plugins: true` і використовуйте:
```text
/plugin install clawhub:<package>
@ -98,54 +98,54 @@ Plugins розширюють OpenClaw новими можливостями: к
/plugin enable <plugin-id>
```
Шлях встановлення використовує той самий резолвер, що й CLI: локальний шлях/архів, явний
`clawhub:<pkg>`, явний `npm:<pkg>`, явний `git:<repo>` або проста специфікація пакета
Шлях встановлення використовує той самий resolver, що й CLI: локальний шлях/архів, явний
`clawhub:<pkg>`, явний `npm:<pkg>`, явний `git:<repo>` або специфікацію пакета без префікса
через npm.
Якщо конфігурація недійсна, встановлення зазвичай відмовляє закрито й спрямовує вас до
`openclaw doctor --fix`. Єдиний виняток для відновлення — вузький шлях перевстановлення
вбудованого plugin для plugins, які явно обирають
Якщо конфігурація недійсна, встановлення зазвичай завершується закрито та спрямовує вас до
`openclaw doctor --fix`. Єдиний виняток для відновлення — вузький шлях перевстановлення bundled-plugin
для plugins, які явно вмикають
`openclaw.install.allowInvalidConfigRecovery`.
Під час запуску Gateway недійсна конфігурація plugin відмовляє закрито, як і будь-яка інша недійсна
Під час запуску Gateway недійсна конфігурація plugin завершується закрито, як і будь-яка інша недійсна
конфігурація. Запустіть `openclaw doctor --fix`, щоб ізолювати погану конфігурацію plugin,
вимкнувши цей запис plugin і видаливши його недійсне корисне навантаження конфігурації; звичайна
вимкнувши цей запис plugin і видаливши його недійсний payload конфігурації; звичайна
резервна копія конфігурації зберігає попередні значення.
Коли конфігурація каналу посилається на plugin, який більше не виявляється, але той самий
застарілий id plugin лишається в конфігурації plugin або записах установлення, запуск Gateway
Коли конфігурація каналу посилається на plugin, який більше не можна знайти, але
той самий застарілий id plugin лишається в конфігурації plugin або записах встановлення, запуск Gateway
записує попередження в журнали й пропускає цей канал замість блокування всіх інших каналів.
Запустіть `openclaw doctor --fix`, щоб видалити застарілі записи каналу/plugin; невідомі
ключі каналів без доказів застарілого plugin і далі не проходять валідацію, щоб помилки друку залишались
ключі каналів без доказів застарілого plugin і далі не проходять перевірку, щоб друкарські помилки лишалися
помітними.
Якщо задано `plugins.enabled: false`, застарілі посилання на plugin трактуються як інертні:
Якщо встановлено `plugins.enabled: false`, застарілі посилання на plugin вважаються інертними:
запуск Gateway пропускає роботу з виявлення/завантаження plugin, а `openclaw doctor` зберігає
вимкнену конфігурацію plugin замість автоматичного видалення. Повторно ввімкніть plugins перед
вимкнену конфігурацію plugin замість її автоматичного видалення. Повторно увімкніть plugins перед
запуском очищення doctor, якщо хочете видалити застарілі id plugin.
Установлення залежностей plugin відбувається лише під час явних потоків install/update або
виправлення doctor. Запуск Gateway, перезавантаження конфігурації та інспекція runtime не
запускають менеджери пакетів і не відновлюють дерева залежностей. Локальні plugins вже повинні
мати встановлені залежності, тоді як npm, git і ClawHub plugins встановлюються
в керовані корені plugin OpenClaw. Залежності npm можуть бути підняті
в межах керованого npm-кореня OpenClaw; install/update сканує цей керований корінь перед
Встановлення залежностей plugin відбувається лише під час явних потоків install/update або
відновлення doctor. Запуск Gateway, перезавантаження конфігурації та runtime-інспекція
не запускають менеджери пакетів і не відновлюють дерева залежностей. Локальні plugins уже повинні
мати встановлені залежності, тоді як npm, git і ClawHub plugins
встановлюються під керованими коренями plugins OpenClaw. Залежності npm можуть бути hoisted
у межах керованого npm-кореня OpenClaw; install/update сканує цей керований корінь перед
довірою, а uninstall видаляє керовані npm пакети через npm. Зовнішні plugins
і власні шляхи завантаження все одно мають бути встановлені через `openclaw plugins install`.
і користувацькі шляхи завантаження все одно мають встановлюватися через `openclaw plugins install`.
Використовуйте `openclaw plugins list --json`, щоб побачити статичний `dependencyStatus` для кожного
видимого plugin без імпорту runtime-коду або відновлення залежностей.
Див. [Розв’язання залежностей Plugin](/uk/plugins/dependency-resolution) щодо
видимого plugin без імпорту runtime-коду чи відновлення залежностей.
Дивіться [Розв’язання залежностей Plugin](/uk/plugins/dependency-resolution) для
життєвого циклу під час встановлення.
Для npm-встановлень змінні селектори, такі як `latest` або dist-tag, розв’язуються
перед установленням, а потім закріплюються на точній перевіреній версії в керованому
Для встановлень npm змінні селектори, як-от `latest` або dist-tag, розв’язуються
перед встановленням, а потім закріплюються за точною перевіреною версією в керованому
npm-корені OpenClaw. Після завершення npm OpenClaw перевіряє, що встановлений
запис `package-lock.json` досі відповідає розв’язаній версії та цілісності. Якщо
npm записує інші метадані пакета, установлення завершується помилкою, а керований пакет
запис `package-lock.json` і далі відповідає розв’язаній версії та integrity. Якщо
npm записує інші метадані пакета, встановлення завершується помилкою, а керований пакет
відкочується замість прийняття іншого артефакту plugin.
Вихідні checkout-и є pnpm workspaces. Якщо ви клонуєте OpenClaw, щоб працювати над вбудованими
plugins, запустіть `pnpm install`; після цього OpenClaw завантажує вбудовані plugins з
`extensions/<id>`, тому зміни та локальні для пакета залежності використовуються напряму.
Звичайні встановлення в npm root призначені для пакетованого OpenClaw, а не для розробки
у checkout вихідного коду.
Вихідні checkout-и є pnpm workspaces. Якщо ви клонували OpenClaw, щоб працювати над bundled
plugins, запустіть `pnpm install`; після цього OpenClaw завантажуватиме bundled plugins з
`extensions/<id>`, тож зміни й локальні для пакета залежності використовуватимуться напряму.
Звичайні npm-встановлення в корінь призначені для упакованого OpenClaw, а не для розробки
з вихідного checkout.
## Типи Plugin
@ -153,30 +153,30 @@ OpenClaw розпізнає два формати plugin:
| Формат | Як це працює | Приклади |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
| **Нативний** | `openclaw.plugin.json` + runtime-модуль; виконується в процесі | Офіційні plugins, npm-пакети спільноти |
| **Bundle** | Сумісна з Codex/Claude/Cursor структура; зіставляється з функціями OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
| **Native** | `openclaw.plugin.json` + runtime-модуль; виконується в процесі | Офіційні plugins, npm-пакети спільноти |
| **Bundle** | Сумісна з Codex/Claude/Cursor структура; відображається на можливості OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
Обидва з’являються в `openclaw plugins list`. Див. [Plugin Bundles](/uk/plugins/bundles) для подробиць про bundle.
Обидва відображаються в `openclaw plugins list`. Дивіться [Plugin Bundles](/uk/plugins/bundles) для подробиць про bundles.
Якщо ви пишете нативний plugin, почніть з [Створення Plugins](/uk/plugins/building-plugins)
Якщо ви пишете native plugin, почніть із [Створення Plugins](/uk/plugins/building-plugins)
і [Огляд Plugin SDK](/uk/plugins/sdk-overview).
## Точки входу пакета
## Точки входу пакетів
Нативні npm-пакети plugin мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має залишатися всередині каталогу пакета й розв’язуватися до читабельного
runtime-файлу або до вихідного TypeScript-файлу з виведеним зібраним JavaScript
відповідником, як-от `src/index.ts` до `dist/index.js`.
Пакетовані встановлення мають постачати цей JavaScript runtime-вивід. Резервний варіант із
вихідним TypeScript призначений для checkout-ів вихідного коду та шляхів локальної розробки, а не для
npm-пакетів, установлених у керований корінь plugin OpenClaw.
Npm-пакети native plugin мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має лишатися всередині каталогу пакета й розв’язуватися в читабельний
runtime-файл або в вихідний TypeScript-файл із виведеним збудованим JavaScript
peer, наприклад `src/index.ts` до `dist/index.js`.
Упаковані встановлення мають постачати цей JavaScript runtime output. Fallback на TypeScript
source призначений для checkout-ів з вихідного коду та локальних шляхів розробки, а не для
npm-пакетів, установлених у керований корінь plugins OpenClaw.
Використовуйте `openclaw.runtimeExtensions`, коли опубліковані runtime-файли не розміщені за
тими самими шляхами, що й вихідні записи. Коли `runtimeExtensions` присутній, він має містити
рівно один запис для кожного запису `extensions`. Невідповідні списки провалюють встановлення та
виявлення plugin, а не тихо повертаються до вихідних шляхів. Якщо ви також
публікуєте `openclaw.setupEntry`, використовуйте `openclaw.runtimeSetupEntry` для його зібраного
JavaScript-відповідника; цей файл є обов’язковим, коли оголошений.
Використовуйте `openclaw.runtimeExtensions`, коли опубліковані runtime-файли не розташовані за
тими самими шляхами, що й source-записи. Якщо `runtimeExtensions` присутній, він має містити
рівно один запис для кожного запису `extensions`. Невідповідні списки призводять до помилки встановлення та
виявлення plugin замість тихого fallback до source-шляхів. Якщо ви також
публікуєте `openclaw.setupEntry`, використовуйте `openclaw.runtimeSetupEntry` для його збудованого
JavaScript peer; цей файл є обов’язковим, якщо оголошений.
```json
{
@ -192,14 +192,14 @@ JavaScript-відповідника; цей файл є обов’язкови
### Npm-пакети, що належать OpenClaw, під час міграції
ClawHub є основним шляхом розповсюдження для більшості plugins. Поточні пакетовані
випуски OpenClaw уже містять багато офіційних plugins, тому в нормальних налаштуваннях їм не потрібні
окремі npm-встановлення. Поки кожен plugin, що належить OpenClaw, не
мігрував до ClawHub, OpenClaw і далі постачає деякі пакети plugin `@openclaw/*` в
npm для старіших/власних установлень і прямих npm-процесів.
ClawHub є основним шляхом дистрибуції для більшості plugins. Поточні упаковані
випуски OpenClaw уже bundling багато офіційних plugins, тому їм не потрібні
окремі npm-встановлення у звичайних налаштуваннях. Доки кожен plugin, що належить OpenClaw, не
мігрує до ClawHub, OpenClaw все ще постачає деякі пакети plugins `@openclaw/*` на
npm для старіших/користувацьких встановлень і прямих npm workflows.
Якщо npm повідомляє, що пакет plugin `@openclaw/*` застарілий, ця версія пакета
походить зі старішої лінійки зовнішніх пакетів. Використовуйте вбудований plugin з
Якщо npm повідомляє, що пакет plugin `@openclaw/*` deprecated, ця версія пакета
походить зі старішої зовнішньої лінії пакетів. Використовуйте bundled plugin з
поточного OpenClaw або локальний checkout, доки не буде опубліковано новіший npm-пакет.
| Plugin | Пакет | Документація |
@ -218,10 +218,10 @@ npm для старіших/власних установлень і прями
| Zalo | `@openclaw/zalo` | [Zalo](/uk/channels/zalo) |
| Zalo Personal | `@openclaw/zalouser` | [Zalo Personal](/uk/plugins/zalouser) |
### Основні (постачаються з OpenClaw)
### Core (постачається з OpenClaw)
<AccordionGroup>
<Accordion title="Model providers (enabled by default)">
<Accordion title="Постачальники моделей (увімкнені за замовчуванням)">
`anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`,
`huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `qwen`,
`moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`,
@ -230,26 +230,26 @@ npm для старіших/власних установлень і прями
</Accordion>
<Accordion title="Memory plugins">
- `memory-core`вбудований пошук пам’яті (типово через `plugins.slots.memory`)
- `memory-lancedb` — довгострокова пам’ять на основі LanceDB з автоматичним пригадуванням/захопленням (задайте `plugins.slots.memory = "memory-lancedb"`)
- `memory-core`bundled memory search (типово через `plugins.slots.memory`)
- `memory-lancedb` — довготривала пам’ять на базі LanceDB з автоматичними recall/capture (встановіть `plugins.slots.memory = "memory-lancedb"`)
Див. [Memory LanceDB](/uk/plugins/memory-lancedb) щодо сумісного з OpenAI
налаштування embeddings, прикладів Ollama, обмежень пригадування та усунення несправностей.
Дивіться [Memory LanceDB](/uk/plugins/memory-lancedb) для OpenAI-сумісного
налаштування embedding, прикладів Ollama, лімітів recall і усунення несправностей.
</Accordion>
<Accordion title="Speech providers (enabled by default)">
<Accordion title="Постачальники мовлення (увімкнені за замовчуванням)">
`elevenlabs`, `microsoft`
</Accordion>
<Accordion title="Other">
- `browser`вбудований browser plugin для інструмента browser, CLI `openclaw browser`, gateway-методу `browser.request`, browser runtime і стандартного сервісу керування browser (увімкнено типово; вимкніть перед заміною)
- `copilot-proxy` — міст VS Code Copilot Proxy (вимкнено типово)
<Accordion title="Інше">
- `browser`bundled browser plugin для browser tool, CLI `openclaw browser`, gateway-методу `browser.request`, browser runtime і стандартної служби керування браузером (увімкнено за замовчуванням; вимкніть перед заміною)
- `copilot-proxy` — міст VS Code Copilot Proxy (вимкнено за замовчуванням)
</Accordion>
</AccordionGroup>
Шукаєте сторонні plugins? Див. [Plugins спільноти](/uk/plugins/community).
Шукаєте сторонні plugins? Дивіться [Plugins спільноти](/uk/plugins/community).
## Конфігурація
@ -267,31 +267,39 @@ npm для старіших/власних установлень і прями
}
```
| Поле | Опис |
| ---------------- | --------------------------------------------------------- |
| `enabled` | Головний перемикач (за замовчуванням: `true`) |
| `allow` | Список дозволених Plugin (необов'язково) |
| `deny` | Список заборонених Plugin (необов'язково; заборона має пріоритет) |
| `load.paths` | Додаткові файли/каталоги Plugin |
| `slots` | Ексклюзивні селектори слотів (наприклад, `memory`, `contextEngine`) |
| `entries.\<id\>` | Перемикачі та конфігурація для окремих Plugin |
| Поле | Опис |
| ------------------ | --------------------------------------------------------- |
| `enabled` | Головний перемикач (за замовчуванням: `true`) |
| `allow` | Список дозволених Plugin (необов’язково) |
| `bundledDiscovery` | Режим виявлення вбудованих Plugin (`allowlist` за замовчуванням) |
| `deny` | Список заборонених Plugin (необов’язково; заборона має пріоритет) |
| `load.paths` | Додаткові файли/каталоги Plugin |
| `slots` | Ексклюзивні селектори слотів (наприклад, `memory`, `contextEngine`) |
| `entries.\<id\>` | Перемикачі й конфігурація для окремого Plugin |
`plugins.allow` є ексклюзивним. Коли він непорожній, завантажуватися
або надавати інструменти можуть лише перелічені Plugin, навіть якщо `tools.allow` містить `"*"` або конкретну назву
або надавати інструменти можуть лише перелічені plugins, навіть якщо `tools.allow` містить `"*"` або конкретну назву
інструмента, що належить Plugin. Якщо список дозволених інструментів посилається на інструменти Plugin, додайте ідентифікатори Plugin-власників
до `plugins.allow` або вилучіть `plugins.allow`; `openclaw doctor` попереджає про таку
до `plugins.allow` або видаліть `plugins.allow`; `openclaw doctor` попереджає про таку
форму.
Зміни конфігурації, внесені через `/plugins enable` або `/plugins disable`, запускають
перезавантаження Plugin Gateway у межах процесу. Нові ходи агента перебудовують свій список інструментів із
`plugins.bundledDiscovery` за замовчуванням має значення `"allowlist"` для нових конфігурацій, тому
обмежувальний інвентар `plugins.allow` також блокує пропущені вбудовані
plugins постачальників, зокрема виявлення постачальника вебпошуку під час виконання. Doctor позначає старіші
обмежувальні конфігурації списку дозволених як `"compat"` під час міграції, щоб оновлення зберігали
успадковану поведінку вбудованих постачальників, доки оператор не ввімкне суворіший режим.
Порожній `plugins.allow` усе ще вважається невстановленим/відкритим.
Зміни конфігурації, зроблені через `/plugins enable` або `/plugins disable`, запускають
перезавантаження Plugin у Gateway в межах поточного процесу. Нові ходи агента перебудовують свій список інструментів із
оновленого реєстру Plugin. Операції, що змінюють джерело, як-от встановлення,
оновлення та видалення, усе ще перезапускають процес Gateway, оскільки вже імпортовані
модулі Plugin не можна безпечно замінити на місці.
`openclaw plugins list` — це локальний знімок реєстру/конфігурації Plugin. Plugin зі станом
`enabled` там означає, що збережений реєстр і поточна конфігурація дозволяють цьому
`enabled` там означає, що збережений реєстр і поточна конфігурація дозволяють
Plugin брати участь. Це не доводить, що вже запущений віддалений Gateway
перезавантажився або перезапустився з тим самим кодом Plugin. У налаштуваннях VPS/контейнерів
перезавантажився або перезапустився з тим самим кодом Plugin. У середовищах VPS/контейнерів
із процесами-обгортками надсилайте перезапуски або записи, що запускають перезавантаження, фактичному
процесу `openclaw gateway run`, або використовуйте `openclaw gateway restart` для
запущеного Gateway, коли перезавантаження повідомляє про помилку.
@ -299,88 +307,88 @@ Plugin брати участь. Це не доводить, що вже запу
<Accordion title="Стани Plugin: вимкнений, відсутній, недійсний">
- **Вимкнений**: Plugin існує, але правила ввімкнення його вимкнули. Конфігурація зберігається.
- **Відсутній**: конфігурація посилається на ідентифікатор Plugin, який виявлення не знайшло.
- **Недійсний**: Plugin існує, але його конфігурація не відповідає оголошеній схемі. Запуск Gateway пропускає лише цей Plugin; `openclaw doctor --fix` може помістити недійсний запис у карантин, вимкнувши його та вилучивши його конфігураційне навантаження.
- **Недійсний**: Plugin існує, але його конфігурація не відповідає оголошеній схемі. Запуск Gateway пропускає лише цей Plugin; `openclaw doctor --fix` може ізолювати недійсний запис, вимкнувши його та видаливши його конфігураційне навантаження.
</Accordion>
## Виявлення та пріоритет
OpenClaw сканує Plugin у такому порядку (перший збіг перемагає):
OpenClaw сканує plugins у такому порядку (перший збіг перемагає):
<Steps>
<Step title="Шляхи конфігурації">
`plugins.load.paths` — явні шляхи до файлів або каталогів. Шляхи, що вказують
назад на власні упаковані каталоги вбудованих Plugin OpenClaw, ігноруються;
виконайте `openclaw doctor --fix`, щоб вилучити ці застарілі псевдоніми.
запустіть `openclaw doctor --fix`, щоб видалити ці застарілі псевдоніми.
</Step>
<Step title="Plugin робочого простору">
<Step title="Plugins робочого простору">
`\<workspace\>/.openclaw/<plugin-root>/*.ts` і `\<workspace\>/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Глобальні Plugin">
<Step title="Глобальні plugins">
`~/.openclaw/<plugin-root>/*.ts` і `~/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Вбудовані Plugin">
<Step title="Вбудовані plugins">
Постачаються з OpenClaw. Багато з них увімкнені за замовчуванням (постачальники моделей, мовлення).
Інші потребують явного ввімкнення.
</Step>
</Steps>
Упаковані встановлення та образи Docker зазвичай визначають вбудовані Plugin з
скомпільованого дерева `dist/extensions`. Якщо вихідний каталог вбудованого Plugin
змонтовано поверх відповідного упакованого вихідного шляху, наприклад
`/app/extensions/synology-chat`, OpenClaw розглядає цей змонтований вихідний каталог
як вбудоване вихідне накладання та виявляє його перед упакованим
пакетом `/app/dist/extensions/synology-chat`. Це зберігає працездатність контейнерних
циклів супровідників без перемикання кожного вбудованого Plugin назад на вихідний код TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово використовувати упаковані dist-пакети
навіть за наявності змонтованих вихідних накладань.
Упаковані встановлення та Docker-образи зазвичай розв’язують вбудовані plugins із
скомпільованого дерева `dist/extensions`. Якщо каталог вихідного коду вбудованого Plugin
змонтовано поверх відповідного упакованого шляху до вихідного коду, наприклад
`/app/extensions/synology-chat`, OpenClaw розглядає цей змонтований каталог вихідного коду
як вихідне накладання вбудованого Plugin і виявляє його перед упакованим
пакетом `/app/dist/extensions/synology-chat`. Це дає змогу підтримувати контейнерні
цикли супроводжувачів без перемикання кожного вбудованого Plugin назад на вихідний код TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово використовувати упаковані dist-пакети,
навіть коли наявні монтування вихідних накладань.
### Правила ввімкнення
- `plugins.enabled: false` вимикає всі Plugin і пропускає роботу з виявлення/завантаження Plugin
- `plugins.deny` завжди має пріоритет над allow
- `plugins.enabled: false` вимикає всі plugins і пропускає роботу з виявлення/завантаження Plugin
- `plugins.deny` завжди має пріоритет над дозволом
- `plugins.entries.\<id\>.enabled: false` вимикає цей Plugin
- Plugin з походженням із робочого простору **вимкнені за замовчуванням** (їх потрібно явно ввімкнути)
- Вбудовані Plugin дотримуються вбудованого набору ввімкнених за замовчуванням, якщо це не перевизначено
- Plugins походженням із робочого простору **вимкнені за замовчуванням** (їх потрібно явно ввімкнути)
- Вбудовані plugins дотримуються вбудованого набору увімкнених за замовчуванням, якщо це не перевизначено
- Ексклюзивні слоти можуть примусово ввімкнути вибраний Plugin для цього слота
- Деякі вбудовані opt-in Plugin вмикаються автоматично, коли конфігурація називає
поверхню, що належить Plugin, як-от посилання на модель постачальника, конфігурація каналу або
runtime стенда
- Деякі вбудовані opt-in plugins вмикаються автоматично, коли конфігурація називає
поверхню, що належить Plugin, як-от посилання на модель постачальника, конфігурацію каналу або runtime
випробувального стенда
- Застаріла конфігурація Plugin зберігається, доки активний `plugins.enabled: false`;
повторно ввімкніть Plugin перед запуском очищення doctor, якщо хочете вилучити застарілі ідентифікатори
повторно ввімкніть plugins перед запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори
- Маршрути Codex сімейства OpenAI зберігають окремі межі Plugin:
`openai-codex/*` належить OpenAI Plugin, тоді як вбудований Plugin app-server Codex
`openai-codex/*` належить до Plugin OpenAI, тоді як вбудований Plugin сервера застосунку Codex
вибирається через `agentRuntime.id: "codex"` або застарілі
посилання на модель `codex/*`
посилання на моделі `codex/*`
## Усунення проблем із runtime-хуками
## Усунення неполадок runtime hooks
Якщо Plugin відображається в `plugins list`, але побічні ефекти або хуки `register(api)`
не виконуються в живому чат-трафіку, спершу перевірте це:
Якщо Plugin з’являється у `plugins list`, але побічні ефекти `register(api)` або hooks
не виконуються в живому трафіку чату, спочатку перевірте таке:
- Виконайте `openclaw gateway status --deep --require-rpc` і підтвердьте, що активні
- Запустіть `openclaw gateway status --deep --require-rpc` і підтвердьте, що активні
URL Gateway, профіль, шлях конфігурації та процес є саме тими, які ви редагуєте.
- Перезапустіть живий Gateway після змін встановлення/конфігурації/коду Plugin. У контейнерах-обгортках
PID 1 може бути лише супервізором; перезапустіть або надішліть сигнал дочірньому
процесу `openclaw gateway run`.
- Використайте `openclaw plugins inspect <id> --runtime --json`, щоб підтвердити реєстрації хуків і
діагностику. Невбудованим хукам розмови, як-от `llm_input`,
`llm_output`, `before_agent_finalize` і `agent_end`, потрібен
- Використовуйте `openclaw plugins inspect <id> --runtime --json`, щоб підтвердити реєстрації hook і
діагностику. Невбудовані conversation hooks, як-от `llm_input`,
`llm_output`, `before_agent_finalize` і `agent_end`, потребують
`plugins.entries.<id>.hooks.allowConversationAccess=true`.
- Для перемикання моделей віддавайте перевагу `before_model_resolve`. Він виконується перед розв'язанням моделі
- Для перемикання моделей надавайте перевагу `before_model_resolve`. Він виконується перед розвязанням моделі
для ходів агента; `llm_output` виконується лише після того, як спроба моделі
створить вивід асистента.
- Для підтвердження ефективної моделі сесії використовуйте `openclaw sessions` або
поверхні сесії/статусу Gateway, а під час налагодження навантажень постачальника запускайте
- Для доказу фактичної моделі сеансу використовуйте `openclaw sessions` або
поверхні сеансу/стану Gateway, а під час налагодження навантажень постачальника запускайте
Gateway з `--raw-stream --raw-stream-path <path>`.
### Повільне налаштування інструментів Plugin
Якщо здається, що ходи агента зависають під час підготовки інструментів, увімкніть трасувальне логування та
перевірте рядки часу виконання фабрики інструментів Plugin:
Якщо ходи агента наче зависають під час підготовки інструментів, увімкніть трасувальне журналювання та
перевірте рядки таймінгів фабрик інструментів Plugin:
```bash
openclaw config set logging.level trace
@ -393,28 +401,28 @@ openclaw logs --follow
[trace:plugin-tools] factory timings ...
```
Зведення перелічує загальний час фабрики та найповільніші фабрики інструментів Plugin,
включно з ідентифікатором Plugin, оголошеними назвами інструментів, формою результату та тим, чи є інструмент
необов'язковим. Повільні рядки підвищуються до попереджень, коли одна фабрика займає
щонайменше 1 с або загальна підготовка фабрик інструментів Plugin займає щонайменше 5 с.
Зведення перелічує загальний час фабрик і найповільніші фабрики інструментів Plugin,
зокрема ідентифікатор Plugin, оголошені назви інструментів, форму результату та чи є інструмент
необовязковим. Повільні рядки підвищуються до попереджень, коли одна фабрика триває
щонайменше 1 с або загальна підготовка фабрик інструментів Plugin триває щонайменше 5 с.
OpenClaw кешує успішні результати фабрик інструментів Plugin для повторних розв'язань
з тим самим ефективним контекстом запиту. Ключ кешу включає ефективну
runtime-конфігурацію, робочий простір, ідентифікатори агента/сесії, політику пісочниці, налаштування браузера,
OpenClaw кешує успішні результати фабрик інструментів Plugin для повторних розвязань
із тим самим фактичним контекстом запиту. Ключ кешу містить фактичну
runtime-конфігурацію, робочий простір, ідентифікатори агента/сеансу, політику sandbox, налаштування браузера,
контекст доставки, ідентичність запитувача та стан власності, тому фабрики, що
залежать від цих довірених полів, повторно виконуються, коли контекст змінюється.
залежать від цих довірених полів, запускаються повторно, коли контекст змінюється.
Якщо один Plugin домінує за часом, перевірте його runtime-реєстрації:
Якщо один Plugin домінує в таймінгу, перевірте його runtime-реєстрації:
```bash
openclaw plugins inspect <plugin-id> --runtime --json
```
Потім оновіть, перевстановіть або вимкніть цей Plugin. Автори Plugin мають переносити
дороге завантаження залежностей у шлях виконання інструмента, а не робити це
дороге завантаження залежностей за шлях виконання інструмента, а не робити це
всередині фабрики інструмента.
### Дубльоване володіння каналом або інструментом
### Дублювання власності каналу або інструмента
Симптоми:
@ -422,34 +430,35 @@ openclaw plugins inspect <plugin-id> --runtime --json
- `channel setup already registered: <channel-id> (<plugin-id>)`
- `plugin tool name conflict (<plugin-id>): <tool-name>`
Це означає, що більш ніж один увімкнений Plugin намагається володіти тим самим каналом,
Це означає, що кілька ввімкнених plugins намагаються володіти тим самим каналом,
потоком налаштування або назвою інструмента. Найпоширеніша причина — зовнішній Plugin каналу,
установлений поруч із вбудованим Plugin, який тепер надає той самий ідентифікатор каналу.
встановлений поруч із вбудованим Plugin, який тепер надає той самий ідентифікатор каналу.
Кроки налагодження:
- Виконайте `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений Plugin
- Запустіть `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений Plugin
і його походження.
- Виконайте `openclaw plugins inspect <id> --runtime --json` для кожного підозрюваного Plugin і
порівняйте `channels`, `channelConfigs`, `tools` та діагностику.
- Виконайте `openclaw plugins registry --refresh` після встановлення або вилучення
- Запустіть `openclaw plugins inspect <id> --runtime --json` для кожного підозрюваного Plugin і
порівняйте `channels`, `channelConfigs`, `tools` і діагностику.
- Запустіть `openclaw plugins registry --refresh` після встановлення або видалення
пакетів Plugin, щоб збережені метадані відображали поточне встановлення.
- Перезапустіть Gateway після змін встановлення, реєстру або конфігурації.
Варіанти виправлення:
- Якщо один Plugin навмисно замінює інший для того самого ідентифікатора каналу, бажаний
Plugin має оголосити `channelConfigs.<channel-id>.preferOver` з
ідентифікатором Plugin нижчого пріоритету. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
Plugin має оголосити `channelConfigs.<channel-id>.preferOver` з ідентифікатором
Plugin нижчого пріоритету. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
- Якщо дублювання випадкове, вимкніть один бік за допомогою
`plugins.entries.<plugin-id>.enabled: false` або вилучіть застаріле встановлення Plugin.
- Якщо ви явно ввімкнули обидва Plugin, OpenClaw зберігає цей запит і
повідомляє про конфлікт. Виберіть одного власника для каналу або перейменуйте інструменти, що належать Plugin,
щоб runtime-поверхня була однозначною.
`plugins.entries.<plugin-id>.enabled: false` або видаліть застаріле встановлення
Plugin.
- Якщо ви явно ввімкнули обидва plugins, OpenClaw зберігає цей запит і
повідомляє про конфлікт. Виберіть одного власника для каналу або перейменуйте інструменти,
що належать Plugin, щоб runtime-поверхня була однозначною.
## Слоти Plugin (ексклюзивні категорії)
Деякі категорії ексклюзивні (активною може бути лише одна одночасно):
Деякі категорії є ексклюзивними (активною може бути лише одна одночасно):
```json5
{
@ -464,10 +473,10 @@ openclaw plugins inspect <plugin-id> --runtime --json
| Слот | Що він контролює | За замовчуванням |
| --------------- | --------------------- | ------------------- |
| `memory` | Активний Plugin пам'яті | `memory-core` |
| `contextEngine` | Активний рушій контексту | `legacy` (вбудований) |
| `memory` | Plugin активної пам’яті | `memory-core` |
| `contextEngine` | Активний контекстний рушій | `legacy` (вбудований) |
## Довідка CLI
## Довідник CLI
```bash
openclaw plugins list # compact inventory
@ -515,82 +524,83 @@ openclaw plugins enable <id>
openclaw plugins disable <id>
```
Пакетні плагіни постачаються з OpenClaw. Багато з них увімкнено за замовчуванням (наприклад
пакетні постачальники моделей, пакетні постачальники мовлення та пакетний браузерний
плагін). Інші пакетні плагіни все ще потребують `openclaw plugins enable <id>`.
Вбудовані plugins постачаються разом з OpenClaw. Багато з них увімкнені за замовчуванням (наприклад,
вбудовані провайдери моделей, вбудовані мовленнєві провайдери та вбудований браузерний
plugin). Інші вбудовані plugins все одно потребують `openclaw plugins enable <id>`.
`--force` перезаписує наявний установлений плагін або набір хуків на місці. Використовуйте
`--force` перезаписує наявний установлений plugin або пакет hook на місці. Використовуйте
`openclaw plugins update <id-or-npm-spec>` для звичайних оновлень відстежуваних npm
плагінів. Він не підтримується разом із `--link`, який повторно використовує шлях до джерела замість
копіювання поверх керованої цілі встановлення.
plugins. Він не підтримується з `--link`, який повторно використовує вихідний шлях замість
копіювання до керованої цілі встановлення.
Коли `plugins.allow` уже задано, `openclaw plugins install` додає
ідентифікатор установленого плагіна до цього списку дозволених перед його ввімкненням. Якщо той самий ідентифікатор плагіна
є в `plugins.deny`, встановлення видаляє цей застарілий запис заборони, щоб
явно встановлений плагін можна було завантажити одразу після перезапуску.
ідентифікатор установленого plugin до цього allowlist перед його ввімкненням. Якщо той самий ідентифікатор plugin
присутній у `plugins.deny`, установлення видаляє цей застарілий запис deny, щоб
явне встановлення можна було завантажити одразу після перезапуску.
OpenClaw зберігає постійний локальний реєстр плагінів як модель холодного читання для
інвентаризації плагінів, володіння внесками та планування запуску. Потоки встановлення, оновлення,
видалення, увімкнення та вимкнення оновлюють цей реєстр після зміни стану плагіна.
Той самий файл `plugins/installs.json` зберігає довговічні метадані встановлення у
верхньорівневому `installRecords` і відновлювані метадані маніфестів у `plugins`. Якщо
OpenClaw зберігає постійний локальний реєстр plugin як модель холодного читання для
інвентаризації plugin, володіння внесками та планування запуску. Потоки встановлення, оновлення,
видалення, ввімкнення та вимкнення оновлюють цей реєстр після зміни стану plugin.
Той самий файл `plugins/installs.json` зберігає довговічні метадані встановлення в
верхньорівневих `installRecords` і відновлювані метадані маніфесту в `plugins`. Якщо
реєстр відсутній, застарілий або недійсний, `openclaw plugins registry
--refresh` перебудовує його подання маніфестів із записів встановлення, політики конфігурації та
метаданих маніфестів/пакетів без завантаження модулів середовища виконання плагінів.
`openclaw plugins update <id-or-npm-spec>` застосовується до відстежуваних встановлень. Передавання
специфікації npm пакета з dist-tag або точною версією зіставляє назву пакета
назад із відстежуваним записом плагіна та записує нову специфікацію для майбутніх оновлень.
Передавання назви пакета без версії повертає встановлення з точно зафіксованою версією назад до
стандартної лінії випусків реєстру. Якщо встановлений npm плагін уже відповідає
--refresh` перебудовує його подання маніфестів із записів установлення, політики конфігурації та
метаданих manifest/package без завантаження runtime-модулів plugin.
`openclaw plugins update <id-or-npm-spec>` застосовується до відстежуваних установлень. Передавання
специфікації npm-пакета з dist-tag або точною версією зіставляє назву пакета
назад із відстежуваним записом plugin і записує нову специфікацію для майбутніх оновлень.
Передавання назви пакета без версії повертає точно закріплене встановлення до
стандартної лінії випуску реєстру. Якщо встановлений npm plugin уже відповідає
розв’язаній версії та записаній ідентичності артефакту, OpenClaw пропускає оновлення
без завантаження, перевстановлення або переписування конфігурації.
без завантаження, повторного встановлення або переписування конфігурації.
Коли `openclaw update` виконується на beta-каналі, записи npm і ClawHub
плагінів стандартної лінії спершу пробують `@beta` і повертаються до default/latest, коли beta-випуску
плагіна немає. Точні версії та явні теги залишаються зафіксованими.
plugin стандартної лінії спершу пробують `@beta` і повертаються до default/latest, якщо beta-випуску
plugin не існує. Точні версії та явні теги залишаються закріпленими.
`--pin` призначений лише для npm. Він не підтримується з `--marketplace`, тому що
встановлення з маркетплейсу зберігають метадані джерела маркетплейсу замість npm специфікації.
`--pin` працює лише з npm. Він не підтримується з `--marketplace`, оскільки
marketplace-установлення зберігають метадані джерела marketplace замість npm-специфікації.
`--dangerously-force-unsafe-install`це аварійне перевизначення для хибних
спрацьовувань вбудованого сканера небезпечного коду. Воно дозволяє встановлення
плагінів і оновлення плагінів продовжуватися попри вбудовані знахідки `critical`, але все одно
не обходить блокування політики плагінів `before_install` або блокування через помилку сканування.
Сканування під час встановлення ігнорують поширені тестові файли й каталоги, як-от `tests/`,
`--dangerously-force-unsafe-install` — аварійне перевизначення для хибних
спрацювань вбудованого сканера небезпечного коду. Воно дозволяє встановлення plugin
і оновлення plugin продовжуватися попри вбудовані знахідки `critical`, але все одно
не обходить блокування політики plugin `before_install` або блокування через збій сканування.
Сканування встановлень ігнорує поширені тестові файли та каталоги, як-от `tests/`,
`__tests__/`, `*.test.*` і `*.spec.*`, щоб не блокувати запаковані тестові моки;
оголошені вхідні точки середовища виконання плагіна все одно скануються, навіть якщо вони використовують одну з
оголошені runtime-точки входу plugin все одно скануються, навіть якщо вони використовують одну з
цих назв.
Цей прапорець CLI застосовується лише до потоків встановлення/оновлення плагінів. Встановлення
залежностей Skills через Gateway використовують натомість відповідне перевизначення запиту
`dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком
завантаження/встановлення Skills із ClawHub.
Цей прапорець CLI застосовується лише до потоків встановлення/оновлення plugin. Встановлення
залежностей Skills на базі Gateway натомість використовують відповідне перевизначення запиту
`dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим
потоком завантаження/встановлення Skills із ClawHub.
Якщо плагін, який ви опублікували на ClawHub, приховано або заблоковано скануванням, відкрийте
панель ClawHub або виконайте `clawhub package rescan <name>`, щоб попросити ClawHub перевірити
його знову. `--dangerously-force-unsafe-install` впливає лише на встановлення на вашому власному
комп’ютері; він не просить ClawHub повторно просканувати плагін або зробити заблокований випуск
Якщо plugin, який ви опублікували на ClawHub, прихований або заблокований скануванням, відкрийте
панель ClawHub або запустіть `clawhub package rescan <name>`, щоб попросити ClawHub перевірити
його знову. `--dangerously-force-unsafe-install` впливає лише на встановлення на вашій власній
машині; він не просить ClawHub повторно просканувати plugin і не робить заблокований випуск
публічним.
Сумісні бандли беруть участь у тому самому потоці списку/інспектування/увімкнення/вимкнення
плагінів. Поточна підтримка середовища виконання охоплює бандлові Skills, command-skills Claude,
типові значення Claude `settings.json`, типові значення Claude `.lsp.json` і оголошені в маніфесті
`lspServers`, command-skills Cursor і сумісні каталоги хуків Codex.
Сумісні bundles беруть участь у тому самому потоці списку/інспектування/ввімкнення/вимкнення
plugin. Поточна runtime-підтримка включає bundle Skills, command-skills Claude,
стандартні налаштування Claude `settings.json`, стандартні налаштування Claude `.lsp.json` і
оголошені в маніфесті `lspServers`, command-skills Cursor і сумісні каталоги hook
Codex.
`openclaw plugins inspect <id>` також повідомляє виявлені можливості бандла, а також
підтримувані або непідтримувані записи серверів MCP і LSP для плагінів на основі бандлів.
`openclaw plugins inspect <id>` також повідомляє виявлені можливості bundle, а також
підтримувані або непідтримувані записи серверів MCP і LSP для plugin на базі bundle.
Джерела маркетплейсу можуть бути відомою Claude назвою маркетплейсу з
`~/.claude/plugins/known_marketplaces.json`, локальним коренем маркетплейсу або шляхом до
`marketplace.json`, скороченням GitHub на кшталт `owner/repo`, URL репозиторію GitHub
або git URL. Для віддалених маркетплейсів записи плагінів мають залишатися всередині
клонованого репозиторію маркетплейсу та використовувати лише відносні джерела шляхів.
Джерелами marketplace можуть бути відома назва marketplace Claude з
`~/.claude/plugins/known_marketplaces.json`, локальний корінь marketplace або шлях
`marketplace.json`, GitHub-скорочення на кшталт `owner/repo`, URL репозиторію GitHub
або git URL. Для віддалених marketplaces записи plugin мають залишатися всередині
клонованого репозиторію marketplace і використовувати лише відносні джерела шляхів.
Повні відомості дивіться в [довіднику CLI `openclaw plugins`](/uk/cli/plugins).
Див. [довідник CLI `openclaw plugins`](/uk/cli/plugins) для повних подробиць.
## Огляд API плагінів
## Огляд API Plugin
Нативні плагіни експортують об’єкт входу, який надає `register(api)`. Старіші
плагіни все ще можуть використовувати `activate(api)` як застарілий псевдонім, але новим плагінам слід
Нативні plugins експортують об’єкт входу, який надає `register(api)`. Старіші
plugins можуть усе ще використовувати `activate(api)` як застарілий alias, але нові plugins мають
використовувати `register`.
```typescript
@ -612,74 +622,74 @@ export default definePluginEntry({
```
OpenClaw завантажує об’єкт входу та викликає `register(api)` під час
активації плагіна. Завантажувач усе ще повертається до `activate(api)` для старіших плагінів,
але пакетні плагіни та нові зовнішні плагіни мають розглядати `register` як
активації plugin. Завантажувач усе ще повертається до `activate(api)` для старіших plugins,
але вбудовані plugins і нові зовнішні plugins мають розглядати `register` як
публічний контракт.
`api.registrationMode` повідомляє плагіну, чому його вхід завантажується:
`api.registrationMode` повідомляє plugin, чому завантажується його entry:
| Режим | Значення |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `full` | Активація середовища виконання. Реєструйте інструменти, хуки, служби, команди, маршрути та інші активні побічні ефекти. |
| `discovery` | Виявлення можливостей лише для читання. Реєструйте постачальників і метадані; довірений код входу плагіна може завантажуватися, але пропускайте активні побічні ефекти. |
| `setup-only` | Завантаження метаданих налаштування каналу через легкий вхід налаштування. |
| `setup-runtime` | Завантаження налаштування каналу, якому також потрібен вхід середовища виконання. |
| `full` | Runtime-активація. Реєструйте tools, hooks, services, commands, routes та інші активні побічні ефекти. |
| `discovery` | Виявлення можливостей лише для читання. Реєструйте providers і metadata; довірений entry-код plugin може завантажуватися, але пропускайте активні побічні ефекти. |
| `setup-only` | Завантаження метаданих налаштування channel через легковаговий setup entry. |
| `setup-runtime` | Завантаження налаштування channel, якому також потрібен runtime entry. |
| `cli-metadata` | Лише збирання метаданих команд CLI. |
Входи плагінів, які відкривають сокети, бази даних, фонові робочі процеси або довгоживучі
клієнти, мають обмежувати ці побічні ефекти умовою `api.registrationMode === "full"`.
Завантаження виявлення кешуються окремо від активаційних завантажень і не замінюють
поточний реєстр Gateway. Виявлення є неактиваційним, але не без імпорту:
OpenClaw може виконати довірений вхід плагіна або модуль плагіна каналу, щоб побудувати
знімок. Тримайте верхні рівні модулів легкими та без побічних ефектів, а
мережеві клієнти, підпроцеси, слухачі, читання облікових даних і запуск служб
переносьте за шляхи повного середовища виконання.
Entry plugin, які відкривають sockets, databases, background workers або довгоживучі
clients, мають захищати ці побічні ефекти перевіркою `api.registrationMode === "full"`.
Завантаження discovery кешуються окремо від активаційних завантажень і не замінюють
поточний реєстр Gateway. Discovery є неактиваційним, але не import-free:
OpenClaw може виконати довірений entry plugin або module channel plugin, щоб побудувати
snapshot. Тримайте верхній рівень modules легким і без побічних ефектів, а
network clients, subprocesses, listeners, читання credentials і запуск service переносіть
за full-runtime шляхи.
Поширені методи реєстрації:
| Метод | Що він реєструє |
| --------------------------------------- | --------------------------------------- |
| `registerProvider` | Постачальник моделей (LLM) |
| `registerChannel` | Канал чату |
| `registerTool` | Інструмент агента |
| `registerHook` / `on(...)` | Хуки життєвого циклу |
| `registerSpeechProvider` | Перетворення тексту на мовлення / STT |
| `registerRealtimeTranscriptionProvider` | Потоковий STT |
| `registerRealtimeVoiceProvider` | Дуплексний голос у реальному часі |
| `registerMediaUnderstandingProvider` | Аналіз зображень/аудіо |
| `registerImageGenerationProvider` | Генерація зображень |
| `registerMusicGenerationProvider` | Генерація музики |
| `registerVideoGenerationProvider` | Генерація відео |
| `registerWebFetchProvider` | Постачальник веботримання / скрейпінгу |
| `registerWebSearchProvider` | Вебпошук |
| `registerHttpRoute` | HTTP кінцева точка |
| `registerCommand` / `registerCli` | Команди CLI |
| `registerContextEngine` | Рушій контексту |
| `registerService` | Фонова служба |
| Метод | Що він реєструє |
| --------------------------------------- | ---------------------------- |
| `registerProvider` | Провайдер моделі (LLM) |
| `registerChannel` | Chat channel |
| `registerTool` | Agent tool |
| `registerHook` / `on(...)` | Lifecycle hooks |
| `registerSpeechProvider` | Text-to-speech / STT |
| `registerRealtimeTranscriptionProvider` | Потоковий STT |
| `registerRealtimeVoiceProvider` | Дуплексний realtime voice |
| `registerMediaUnderstandingProvider` | Аналіз зображень/аудіо |
| `registerImageGenerationProvider` | Генерація зображень |
| `registerMusicGenerationProvider` | Генерація музики |
| `registerVideoGenerationProvider` | Генерація відео |
| `registerWebFetchProvider` | Web fetch / scrape provider |
| `registerWebSearchProvider` | Web search |
| `registerHttpRoute` | HTTP endpoint |
| `registerCommand` / `registerCli` | Команди CLI |
| `registerContextEngine` | Context engine |
| `registerService` | Background service |
Поведінка захисту хуків для типізованих хуків життєвого циклу:
Поведінка guard для типізованих lifecycle hooks:
- `before_tool_call`: `{ block: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: `{ block: false }` є no-op і не очищує попереднє блокування.
- `before_install`: `{ block: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `before_install`: `{ block: false }` є no-op і не очищує попереднє блокування.
- `message_sending`: `{ cancel: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `message_sending`: `{ cancel: false }` є no-op і не очищує попереднє скасування.
- `before_tool_call`: `{ block: true }` є завершальним; handlers із нижчим пріоритетом пропускаються.
- `before_tool_call`: `{ block: false }` є no-op і не скасовує попереднє block.
- `before_install`: `{ block: true }` є завершальним; handlers із нижчим пріоритетом пропускаються.
- `before_install`: `{ block: false }` є no-op і не скасовує попереднє block.
- `message_sending`: `{ cancel: true }` є завершальним; handlers із нижчим пріоритетом пропускаються.
- `message_sending`: `{ cancel: false }` є no-op і не скасовує попереднє cancel.
Нативний app-server Codex мостить нативні події інструментів Codex назад у цю
поверхню хуків. Плагіни можуть блокувати нативні інструменти Codex через `before_tool_call`,
спостерігати результати через `after_tool_call` і брати участь у схваленнях Codex
`PermissionRequest`. Міст поки що не переписує аргументи нативних інструментів Codex.
Точна межа підтримки середовища виконання Codex описана в
Нативний app-server Codex прокидає нативні для Codex події tools назад у цю
поверхню hook. Plugins можуть блокувати нативні tools Codex через `before_tool_call`,
спостерігати результати через `after_tool_call` і брати участь у затвердженнях Codex
`PermissionRequest`. Bridge поки що не переписує аргументи нативних tools Codex.
Точна межа runtime-підтримки Codex описана в
[контракті підтримки Codex harness v1](/uk/plugins/codex-harness#v1-support-contract).
Повну поведінку типізованих хуків дивіться в [огляді SDK](/uk/plugins/sdk-overview#hook-decision-semantics).
Повну поведінку типізованих hook див. в [огляді SDK](/uk/plugins/sdk-overview#hook-decision-semantics).
## Пов’язане
- [Створення плагінів](/uk/plugins/building-plugins) — створіть власний плагін
- [Бандли плагінів](/uk/plugins/bundles) — сумісність бандлів Codex/Claude/Cursor
- [Маніфест плагіна](/uk/plugins/manifest) — схема маніфесту
- [Реєстрація інструментів](/uk/plugins/building-plugins#registering-agent-tools) — додайте інструменти агента в плагіні
- [Внутрішня архітектура плагінів](/uk/plugins/architecture) — модель можливостей і конвеєр завантаження
- [Плагіни спільноти](/uk/plugins/community) — списки сторонніх розробників
- [Створення Plugin](/uk/plugins/building-plugins) — створіть власний Plugin
- [Пакети Plugin](/uk/plugins/bundles) — сумісність пакетів Codex/Claude/Cursor
- [Маніфест Plugin](/uk/plugins/manifest) — схема маніфесту
- [Реєстрація інструментів](/uk/plugins/building-plugins#registering-agent-tools) — додайте інструменти агента в Plugin
- [Внутрішня архітектура Plugin](/uk/plugins/architecture) — модель можливостей і конвеєр завантаження
- [Plugin спільноти](/uk/plugins/community) — каталоги сторонніх розробників