chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-12 02:35:43 +00:00
parent e5617933eb
commit 9baaf1c50f
2 changed files with 891 additions and 890 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,13 +2,13 @@
read_when:
- Ви створюєте плагін OpenClaw
- Вам потрібно постачати схему конфігурації плагіна або налагоджувати помилки валідації плагіна
summary: Маніфест плагіна + вимоги до JSON schema (сувора валідація конфігурації)
summary: Вимоги до маніфесту плагіна + JSON schema (сувора валідація конфігурації)
title: Маніфест плагіна
x-i18n:
generated_at: "2026-04-11T11:37:24Z"
generated_at: "2026-04-12T02:30:56Z"
model: gpt-5.4
provider: openai
source_hash: 42d454b560a8f6bf714c5d782f34216be1216d83d0a319d08d7349332c91a9e4
source_hash: bf666b0f41f07641375a248f52e29ba6a68c3ec20404bedb6b52a20a5cd92e91
source_path: plugins/manifest.md
workflow: 15
---
@ -17,35 +17,35 @@ x-i18n:
Ця сторінка стосується лише **власного маніфесту плагіна OpenClaw**.
Сумісні макети пакетів описано в [Пакети плагінів](/uk/plugins/bundles).
Сумісні макети пакунків описано в [Пакунки плагінів](/uk/plugins/bundles).
Сумісні формати пакетів використовують інші файли маніфесту:
Сумісні формати пакунків використовують інші файли маніфесту:
- Пакет Codex: `.codex-plugin/plugin.json`
- Пакет Claude: `.claude-plugin/plugin.json` або стандартний макет компонента Claude
- Пакунок Codex: `.codex-plugin/plugin.json`
- Пакунок Claude: `.claude-plugin/plugin.json` або типовий макет компонентів Claude
без маніфесту
- Пакет Cursor: `.cursor-plugin/plugin.json`
- Пакунок Cursor: `.cursor-plugin/plugin.json`
OpenClaw також автоматично виявляє ці макети пакетів, але вони не проходять валідацію
OpenClaw також автоматично виявляє ці макети пакунків, але вони не проходять валідацію
за схемою `openclaw.plugin.json`, описаною тут.
Для сумісних пакетів OpenClaw наразі читає метадані пакета, а також оголошені
кореневі каталоги Skills, кореневі каталоги команд Claude, типові значення `settings.json` пакета Claude,
типові значення LSP пакета Claude та підтримувані набори хуків, якщо макет відповідає
Для сумісних пакунків OpenClaw наразі зчитує метадані пакунка, а також оголошені
кореневі каталоги skill, кореневі каталоги команд Claude, типові значення `settings.json` у пакунку Claude,
типові значення LSP у пакунку Claude та підтримувані набори hooks, якщо макет відповідає
очікуванням середовища виконання OpenClaw.
Кожен власний плагін OpenClaw **повинен** постачатися з файлом `openclaw.plugin.json` у
Кожен власний плагін OpenClaw **має** постачатися з файлом `openclaw.plugin.json` у
**корені плагіна**. OpenClaw використовує цей маніфест для валідації конфігурації
**без виконання коду плагіна**. Відсутні або невалідні маніфести вважаються
помилками плагіна і блокують валідацію конфігурації.
помилками плагіна та блокують валідацію конфігурації.
Повний посібник із системи плагінів див. у [Плагіни](/uk/tools/plugin).
Для власної моделі можливостей і поточних рекомендацій щодо зовнішньої сумісності:
Дивіться повний посібник із системи плагінів: [Плагіни](/uk/tools/plugin).
Щодо власної моделі можливостей і поточних рекомендацій щодо зовнішньої сумісності:
[Модель можливостей](/uk/plugins/architecture#public-capability-model).
## Для чого потрібен цей файл
## Що робить цей файл
`openclaw.plugin.json` — це метадані, які OpenClaw читає до завантаження коду
`openclaw.plugin.json` — це метадані, які OpenClaw зчитує перед завантаженням коду
вашого плагіна.
Використовуйте його для:
@ -54,27 +54,25 @@ OpenClaw також автоматично виявляє ці макети па
- валідації конфігурації
- метаданих автентифікації та онбордингу, які мають бути доступні без запуску
середовища виконання плагіна
- легких підказок активації, які поверхні control-plane можуть перевіряти до
завантаження середовища виконання
- легких дескрипторів налаштування, які поверхні налаштування/онбордингу можуть перевіряти до
завантаження середовища виконання
- метаданих псевдонімів і автоувімкнення, які мають визначатися до завантаження
середовища виконання плагіна
- скорочених метаданих належності до сімейства моделей, які мають автоматично активувати
плагін до завантаження середовища виконання
- статичних знімків належності можливостей, що використовуються для сумісної обв’язки
bundled-плагінів і покриття контрактів
- метаданих конфігурації каналу, специфічних для каналу, які мають зливатися в поверхні
каталогу та валідації без завантаження середовища виконання
- легковагих підказок активації, які поверхні control plane можуть перевіряти до завантаження runtime
- легковагих дескрипторів налаштування, які поверхні setup/onboarding можуть перевіряти до завантаження
runtime
- метаданих псевдонімів і автоувімкнення, які мають визначатися до завантаження runtime плагіна
- скорочених метаданих належності до сімейств моделей, які мають автоматично активувати
плагін до завантаження runtime
- статичних знімків належності можливостей, які використовуються для bundled compat wiring і
покриття контрактів
- метаданих конфігурації каналу, специфічних для каналу, які мають об’єднуватися в поверхні каталогу та валідації
без завантаження runtime
- підказок UI для конфігурації
Не використовуйте його для:
- реєстрації поведінки під час виконання
- оголошення кодових entrypoint
- реєстрації поведінки runtime
- оголошення entrypoint коду
- метаданих встановлення npm
Це належить до коду вашого плагіна та `package.json`.
Це належить вашому коду плагіна та `package.json`.
## Мінімальний приклад
@ -145,64 +143,64 @@ OpenClaw також автоматично виявляє ці макети па
}
```
## Довідка щодо полів верхнього рівня
## Довідник полів верхнього рівня
| Поле | Обов’язкове | Тип | Що це означає |
| Поле | Обов’язкове | Тип | Що воно означає |
| ----------------------------------- | ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id` | Так | `string` | Канонічний id плагіна. Це id, який використовується в `plugins.entries.<id>`. |
| `configSchema` | Так | `object` | Вбудована JSON Schema для конфігурації цього плагіна. |
| `enabledByDefault` | Ні | `true` | Позначає bundled-плагін як увімкнений типово. Пропустіть це поле або встановіть будь-яке значення, відмінне від `true`, щоб залишити плагін вимкненим типово. |
| `enabledByDefault` | Ні | `true` | Позначає bundled plugin як увімкнений за замовчуванням. Опустіть це поле або встановіть будь-яке значення, відмінне від `true`, щоб плагін залишався вимкненим за замовчуванням. |
| `legacyPluginIds` | Ні | `string[]` | Застарілі id, які нормалізуються до цього канонічного id плагіна. |
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Id провайдерів, які мають автоматично вмикати цей плагін, коли автентифікація, конфігурація або посилання на моделі згадують їх. |
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує винятковий вид плагіна, який використовується `plugins.slots.*`. |
| `channels` | Ні | `string[]` | Id каналів, якими володіє цей плагін. Використовується для виявлення та валідації конфігурації. |
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Id провайдерів, які мають автоматично вмикати цей плагін, коли на них посилаються auth, config або model refs. |
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує виключний тип плагіна, який використовується `plugins.slots.*`. |
| `channels` | Ні | `string[]` | Id каналів, якими володіє цей плагін. Використовуються для виявлення та валідації конфігурації. |
| `providers` | Ні | `string[]` | Id провайдерів, якими володіє цей плагін. |
| `modelSupport` | Ні | `object` | Скорочені метадані сімейства моделей, якими володіє маніфест, що використовуються для автоматичного завантаження плагіна до середовища виконання. |
| `cliBackends` | Ні | `string[]` | Id backend у CLI, якими володіє цей плагін. Використовується для автоактивації під час запуску з явних посилань у конфігурації. |
| `commandAliases` | Ні | `object[]` | Назви команд, якими володіє цей плагін, що мають створювати діагностику конфігурації й CLI з урахуванням плагіна до завантаження середовища виконання. |
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легкі метадані env для автентифікації провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
| `providerAuthAliases` | Ні | `Record<string, string>` | Id провайдерів, які мають повторно використовувати інший id провайдера для пошуку автентифікації, наприклад coding-провайдер, що ділить API key і профілі автентифікації з базовим провайдером. |
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легкі метадані env каналу, які OpenClaw може перевіряти без завантаження коду плагіна. Використовуйте це для налаштування каналу через env або поверхонь автентифікації, які мають бачити типові помічники запуску/конфігурації. |
| `providerAuthChoices` | Ні | `object[]` | Легкі метадані варіантів автентифікації для picker онбордингу, визначення бажаного провайдера та простого зв’язування прапорців CLI. |
| `activation` | Ні | `object` | Легкі підказки активації для завантаження, що запускається провайдером, командою, каналом, маршрутом і можливістю. Лише метадані; фактична поведінка як і раніше належить середовищу виконання плагіна. |
| `setup` | Ні | `object` | Легкі дескриптори налаштування/онбордингу, які поверхні виявлення та налаштування можуть перевіряти без завантаження середовища виконання плагіна. |
| `contracts` | Ні | `object` | Статичний bundled-знімок можливостей для speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search і належності інструментів. |
| `channelConfigs` | Ні | `Record<string, object>` | Метадані конфігурації каналу, якими володіє маніфест, що зливаються в поверхні виявлення та валідації до завантаження середовища виконання. |
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження відносно кореня плагіна. |
| `name` | Ні | `string` | Зручна для читання назва плагіна. |
| `description` | Ні | `string` | Короткий опис, що показується в поверхнях плагіна. |
| `version` | Ні | `string` | Інформаційна версія плагіна. |
| `uiHints` | Ні | `Record<string, object>` | Мітки UI, placeholders і підказки чутливості для полів конфігурації. |
| `modelSupport` | Ні | `object` | Скорочені метадані сімейств моделей, якими володіє маніфест, що використовуються для автоматичного завантаження плагіна до runtime. |
| `cliBackends` | Ні | `string[]` | Id backend для висновування в CLI, якими володіє цей плагін. Використовуються для автоматичної активації під час запуску з явних посилань у config. |
| `commandAliases` | Ні | `object[]` | Назви команд, якими володіє цей плагін, і які мають створювати діагностику конфігурації та CLI з урахуванням плагіна до завантаження runtime. |
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легковагі метадані env для auth провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
| `providerAuthAliases` | Ні | `Record<string, string>` | Id провайдерів, які мають повторно використовувати інший id провайдера для пошуку auth, наприклад coding provider, що спільно використовує API key базового провайдера та профілі auth. |
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легковагі метадані env каналу, які OpenClaw може перевіряти без завантаження коду плагіна. Використовуйте це для налаштування каналів через env або поверхонь auth, які мають бачити загальні helpers запуску/config. |
| `providerAuthChoices` | Ні | `object[]` | Легковагі метадані вибору auth для picker-ів онбордингу, визначення preferred provider і простого зв’язування прапорців CLI. |
| `activation` | Ні | `object` | Легковагі підказки активації для завантаження, що запускається провайдером, командою, каналом, маршрутом або можливістю. Лише метадані; фактичною поведінкою як і раніше володіє runtime плагіна. |
| `setup` | Ні | `object` | Легковагі дескриптори setup/onboarding, які поверхні виявлення та налаштування можуть перевіряти без завантаження runtime плагіна. |
| `contracts` | Ні | `object` | Статичний знімок bundled capability для speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search і належності tool. |
| `channelConfigs` | Ні | `Record<string, object>` | Метадані конфігурації каналу, якими володіє маніфест, що об’єднуються в поверхні виявлення та валідації до завантаження runtime. |
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження, відносно кореня плагіна. |
| `name` | Ні | `string` | Людинозрозуміла назва плагіна. |
| `description` | Ні | `string` | Короткий опис, що показується в поверхнях плагіна. |
| `version` | Ні | `string` | Інформаційна версія плагіна. |
| `uiHints` | Ні | `Record<string, object>` | Мітки UI, placeholders і підказки щодо чутливості для полів конфігурації. |
## Довідка щодо `providerAuthChoices`
## Довідник `providerAuthChoices`
Кожен запис `providerAuthChoices` описує один варіант онбордингу або автентифікації.
OpenClaw читає це до завантаження середовища виконання провайдера.
Кожен запис `providerAuthChoices` описує один варіант онбордингу або auth.
OpenClaw зчитує це до завантаження runtime провайдера.
| Поле | Обов’язкове | Тип | Що це означає |
| --------------------- | ----------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `provider` | Так | `string` | Id провайдера, до якого належить цей варіант. |
| `method` | Так | `string` | Id методу автентифікації, до якого слід спрямувати запит. |
| `choiceId` | Так | `string` | Стабільний id варіанта автентифікації, який використовується в онбордингу та потоках CLI. |
| `choiceLabel` | Ні | `string` | Мітка для користувача. Якщо пропущено, OpenClaw використовує `choiceId`. |
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для picker. |
| `assistantPriority` | Ні | `number` | Менші значення сортуються раніше в інтерактивних picker, керованих асистентом. |
| `assistantVisibility` | Ні | `"visible"` \| `"manual-only"` | Приховує варіант із picker асистента, але все одно дозволяє ручний вибір через CLI. |
| `deprecatedChoiceIds` | Ні | `string[]` | Застарілі id варіантів, які мають перенаправляти користувачів до цього варіанта-заміни. |
| `groupId` | Ні | `string` | Необов’язковий id групи для групування пов’язаних варіантів. |
| `groupLabel` | Ні | `string` | Мітка цієї групи для користувача. |
| `groupHint` | Ні | `string` | Короткий допоміжний текст для групи. |
| `optionKey` | Ні | `string` | Внутрішній ключ опції для простих потоків автентифікації з одним прапорцем. |
| `cliFlag` | Ні | `string` | Назва прапорця CLI, наприклад `--openrouter-api-key`. |
| `cliOption` | Ні | `string` | Повна форма опції CLI, наприклад `--openrouter-api-key <key>`. |
| `cliDescription` | Ні | `string` | Опис, що використовується в довідці CLI. |
| `onboardingScopes` | Ні | `Array<"text-inference" \| "image-generation">` | У яких поверхнях онбордингу має з’являтися цей варіант. Якщо пропущено, типово використовується `["text-inference"]`. |
| Поле | Обов’язкове | Тип | Що воно означає |
| --------------------- | ----------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `provider` | Так | `string` | Id провайдера, до якого належить цей варіант. |
| `method` | Так | `string` | Id методу auth, до якого слід диспетчеризувати. |
| `choiceId` | Так | `string` | Стабільний id варіанта auth, який використовується в потоках онбордингу та CLI. |
| `choiceLabel` | Ні | `string` | Мітка для користувача. Якщо її не вказано, OpenClaw використовує `choiceId`. |
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для picker-а. |
| `assistantPriority` | Ні | `number` | Менші значення сортуються раніше в інтерактивних picker-ах, керованих асистентом. |
| `assistantVisibility` | Ні | `"visible"` \| `"manual-only"` | Приховує варіант із picker-ів асистента, але все ще дозволяє ручний вибір через CLI. |
| `deprecatedChoiceIds` | Ні | `string[]` | Застарілі id варіантів, які мають перенаправляти користувачів на цей варіант-заміну. |
| `groupId` | Ні | `string` | Необов’язковий id групи для групування пов’язаних варіантів. |
| `groupLabel` | Ні | `string` | Мітка для користувача для цієї групи. |
| `groupHint` | Ні | `string` | Короткий допоміжний текст для групи. |
| `optionKey` | Ні | `string` | Внутрішній ключ параметра для простих потоків auth з одним прапорцем. |
| `cliFlag` | Ні | `string` | Назва прапорця CLI, наприклад `--openrouter-api-key`. |
| `cliOption` | Ні | `string` | Повна форма параметра CLI, наприклад `--openrouter-api-key <key>`. |
| `cliDescription` | Ні | `string` | Опис, який використовується в довідці CLI. |
| `onboardingScopes` | Ні | `Array<"text-inference" \| "image-generation">` | У яких поверхнях онбордингу має з’являтися цей варіант. Якщо не вказано, використовується `["text-inference"]`. |
## Довідка щодо `commandAliases`
## Довідник `commandAliases`
Використовуйте `commandAliases`, коли плагін володіє назвою runtime-команди, яку користувачі можуть
помилково помістити в `plugins.allow` або спробувати запустити як кореневу команду CLI. OpenClaw
використовує ці метадані для діагностики без імпорту коду середовища виконання плагіна.
використовує ці метадані для діагностики без імпорту коду runtime плагіна.
```json
{
@ -216,19 +214,19 @@ OpenClaw читає це до завантаження середовища ви
}
```
| Поле | Обов’язкове | Тип | Що це означає |
| ------------ | ----------- | ----------------- | ------------------------------------------------------------------------ |
| `name` | Так | `string` | Назва команди, яка належить цьому плагіну. |
| `kind` | Ні | `"runtime-slash"` | Позначає псевдонім як slash-команду чату, а не як кореневу команду CLI. |
| `cliCommand` | Ні | `string` | Пов’язана коренева команда CLI, яку слід запропонувати для операцій CLI, якщо вона існує. |
| Поле | Обов’язкове | Тип | Що воно означає |
| ------------ | ----------- | ----------------- | --------------------------------------------------------------------------- |
| `name` | Так | `string` | Назва команди, яка належить цьому плагіну. |
| `kind` | Ні | `"runtime-slash"` | Позначає псевдонім як slash-команду чату, а не кореневу команду CLI. |
| `cliCommand` | Ні | `string` | Пов’язана коренева команда CLI, яку слід рекомендувати для операцій CLI, якщо вона існує. |
## Довідка щодо `activation`
## Довідник `activation`
Використовуйте `activation`, коли плагін може дешево оголосити, які події control-plane
Використовуйте `activation`, коли плагін може дешево оголосити, які події control plane
мають активувати його пізніше.
Цей блок містить лише метадані. Він не реєструє поведінку під час виконання і
не замінює `register(...)`, `setupEntry` чи інші entrypoint runtime/плагіна.
Цей блок містить лише метадані. Він не реєструє поведінку runtime і не
замінює `register(...)`, `setupEntry` або інші runtime/plugin entrypoint-и.
```json
{
@ -242,18 +240,18 @@ OpenClaw читає це до завантаження середовища ви
}
```
| Поле | Обов’язкове | Тип | Що це означає |
| ---------------- | ----------- | ---------------------------------------------------- | ------------------------------------------------------------------ |
| `onProviders` | Ні | `string[]` | Id провайдерів, які мають активувати цей плагін за запитом. |
| `onCommands` | Ні | `string[]` | Id команд, які мають активувати цей плагін. |
| `onChannels` | Ні | `string[]` | Id каналів, які мають активувати цей плагін. |
| `onRoutes` | Ні | `string[]` | Види маршрутів, які мають активувати цей плагін. |
| `onCapabilities` | Ні | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Загальні підказки щодо можливостей, які використовуються в плануванні активації control-plane. |
| Поле | Обов’язкове | Тип | Що воно означає |
| ---------------- | ----------- | ---------------------------------------------------- | --------------------------------------------------------------- |
| `onProviders` | Ні | `string[]` | Id провайдерів, які мають активувати цей плагін за запитом. |
| `onCommands` | Ні | `string[]` | Id команд, які мають активувати цей плагін. |
| `onChannels` | Ні | `string[]` | Id каналів, які мають активувати цей плагін. |
| `onRoutes` | Ні | `string[]` | Типи маршрутів, які мають активувати цей плагін. |
| `onCapabilities` | Ні | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Загальні підказки можливостей, що використовуються в плануванні активації control plane. |
## Довідка щодо `setup`
## Довідник `setup`
Використовуйте `setup`, коли поверхням налаштування та онбордингу потрібні дешеві метадані, якими володіє плагін,
до завантаження середовища виконання.
Використовуйте `setup`, коли поверхням setup та онбордингу потрібні дешеві метадані,
якими володіє плагін, до завантаження runtime.
```json
{
@ -272,30 +270,40 @@ OpenClaw читає це до завантаження середовища ви
}
```
Поле верхнього рівня `cliBackends` залишається валідним і надалі описує backend інференсу CLI.
`setup.cliBackends` — це поверхня дескриптора, специфічна для налаштування,
для потоків control-plane/налаштування, яка має залишатися лише метаданими.
`cliBackends` верхнього рівня залишається валідним і надалі описує backend-и
висновування CLI. `setup.cliBackends` — це поверхня дескрипторів, специфічна для setup,
для потоків control plane/setup, яка має залишатися лише метаданими.
### Довідка щодо `setup.providers`
Якщо вони присутні, `setup.providers` і `setup.cliBackends` є бажаною
поверхнею пошуку на основі дескрипторів для виявлення setup. Якщо дескриптор лише
звужує коло плагінів-кандидатів, а setup все ще потребує багатших runtime hooks під час setup,
встановіть `requiresRuntime: true` і залиште `setup-api` як резервний шлях виконання.
| Поле | Обов’язкове | Тип | Що це означає |
| ------------- | ----------- | ---------- | -------------------------------------------------------------------------------- |
| `id` | Так | `string` | Id провайдера, який показується під час налаштування або онбордингу. |
| `authMethods` | Ні | `string[]` | Id методів налаштування/автентифікації, які цей провайдер підтримує без завантаження повного runtime. |
| `envVars` | Ні | `string[]` | Env vars, які типові поверхні налаштування/статусу можуть перевіряти до завантаження runtime плагіна. |
Оскільки пошук setup може виконувати код `setup-api`, яким володіє плагін, нормалізовані
значення `setup.providers[].id` і `setup.cliBackends[]` мають залишатися унікальними серед
виявлених плагінів. Неоднозначна належність завершується без вибору замість того, щоб
обирати переможця за порядком виявлення.
### Довідник `setup.providers`
| Поле | Обов’язкове | Тип | Що воно означає |
| ------------- | ----------- | ---------- | -------------------------------------------------------------------------------------- |
| `id` | Так | `string` | Id провайдера, який надається під час setup або онбордингу. Нормалізовані id мають бути глобально унікальними. |
| `authMethods` | Ні | `string[]` | Id методів setup/auth, які цей провайдер підтримує без завантаження повного runtime. |
| `envVars` | Ні | `string[]` | Env vars, які загальні поверхні setup/status можуть перевіряти до завантаження runtime плагіна. |
### Поля `setup`
| Поле | Обов’язкове | Тип | Що це означає |
| ------------------ | ----------- | ---------- | ------------------------------------------------------------------------ |
| `providers` | Ні | `object[]` | Дескриптори налаштування провайдерів, які показуються під час налаштування та онбордингу. |
| `cliBackends` | Ні | `string[]` | Id backend, доступних під час налаштування без повної активації runtime. |
| `configMigrations` | Ні | `string[]` | Id міграцій конфігурації, якими володіє поверхня налаштування цього плагіна. |
| `requiresRuntime` | Ні | `boolean` | Чи потребує налаштування виконання runtime плагіна після пошуку дескриптора. |
| Поле | Обов’язкове | Тип | Що воно означає |
| ------------------ | ----------- | ---------- | ----------------------------------------------------------------------------------------------------- |
| `providers` | Ні | `object[]` | Дескриптори setup провайдерів, доступні під час setup та онбордингу. |
| `cliBackends` | Ні | `string[]` | Id backend-ів для часу setup, які використовуються для пошуку setup за принципом descriptor-first. Нормалізовані id мають бути глобально унікальними. |
| `configMigrations` | Ні | `string[]` | Id міграцій конфігурації, якими володіє поверхня setup цього плагіна. |
| `requiresRuntime` | Ні | `boolean` | Чи потребує setup виконання `setup-api` після пошуку за дескриптором. |
## Довідка щодо `uiHints`
## Довідник `uiHints`
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок рендерингу.
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок для відображення.
```json
{
@ -310,9 +318,9 @@ OpenClaw читає це до завантаження середовища ви
}
```
Кожна підказка поля може містити:
Кожна підказка для поля може містити:
| Поле | Тип | Що це означає |
| Поле | Тип | Що воно означає |
| ------------- | ---------- | --------------------------------------- |
| `label` | `string` | Мітка поля для користувача. |
| `help` | `string` | Короткий допоміжний текст. |
@ -321,10 +329,10 @@ OpenClaw читає це до завантаження середовища ви
| `sensitive` | `boolean` | Позначає поле як секретне або чутливе. |
| `placeholder` | `string` | Текст placeholder для полів форми. |
## Довідка щодо `contracts`
## Довідник `contracts`
Використовуйте `contracts` лише для статичних метаданих належності можливостей, які OpenClaw може
читати без імпорту runtime плагіна.
зчитувати без імпорту runtime плагіна.
```json
{
@ -344,22 +352,22 @@ OpenClaw читає це до завантаження середовища ви
Кожен список є необов’язковим:
| Поле | Тип | Що це означає |
| -------------------------------- | ---------- | -------------------------------------------------------------- |
| `speechProviders` | `string[]` | Id speech-провайдерів, якими володіє цей плагін. |
| `realtimeTranscriptionProviders` | `string[]` | Id провайдерів realtime transcription, якими володіє цей плагін. |
| `realtimeVoiceProviders` | `string[]` | Id провайдерів realtime voice, якими володіє цей плагін. |
| `mediaUnderstandingProviders` | `string[]` | Id провайдерів media-understanding, якими володіє цей плагін. |
| `imageGenerationProviders` | `string[]` | Id провайдерів image-generation, якими володіє цей плагін. |
| `videoGenerationProviders` | `string[]` | Id провайдерів video-generation, якими володіє цей плагін. |
| `webFetchProviders` | `string[]` | Id провайдерів web-fetch, якими володіє цей плагін. |
| `webSearchProviders` | `string[]` | Id провайдерів web search, якими володіє цей плагін. |
| `tools` | `string[]` | Назви інструментів агента, якими володіє цей плагін, для bundled-перевірок контрактів. |
| Поле | Тип | Що воно означає |
| -------------------------------- | ---------- | ------------------------------------------------------------- |
| `speechProviders` | `string[]` | Id speech-провайдерів, якими володіє цей плагін. |
| `realtimeTranscriptionProviders` | `string[]` | Id провайдерів realtime-transcription, якими володіє цей плагін. |
| `realtimeVoiceProviders` | `string[]` | Id провайдерів realtime-voice, якими володіє цей плагін. |
| `mediaUnderstandingProviders` | `string[]` | Id провайдерів media-understanding, якими володіє цей плагін. |
| `imageGenerationProviders` | `string[]` | Id провайдерів image-generation, якими володіє цей плагін. |
| `videoGenerationProviders` | `string[]` | Id провайдерів video-generation, якими володіє цей плагін. |
| `webFetchProviders` | `string[]` | Id провайдерів web-fetch, якими володіє цей плагін. |
| `webSearchProviders` | `string[]` | Id провайдерів web-search, якими володіє цей плагін. |
| `tools` | `string[]` | Назви agent tool, якими володіє цей плагін, для bundled перевірок контрактів. |
## Довідка щодо `channelConfigs`
## Довідник `channelConfigs`
Використовуйте `channelConfigs`, коли плагіну каналу потрібні дешеві метадані конфігурації
до завантаження runtime.
Використовуйте `channelConfigs`, коли плагіну каналу потрібні дешеві метадані конфігурації до
завантаження runtime.
```json
{
@ -379,7 +387,7 @@ OpenClaw читає це до завантаження середовища ви
}
},
"label": "Matrix",
"description": "Підключення до homeserver Matrix",
"description": "Matrix homeserver connection",
"preferOver": ["matrix-legacy"]
}
}
@ -388,18 +396,19 @@ OpenClaw читає це до завантаження середовища ви
Кожен запис каналу може містити:
| Поле | Тип | Що це означає |
| ------------ | ------------------------ | --------------------------------------------------------------------------------------------- |
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкова для кожного оголошеного запису конфігурації каналу. |
| `uiHints` | `Record<string, object>` | Необов’язкові мітки UI/placeholders/підказки чутливості для цього розділу конфігурації каналу. |
| `label` | `string` | Мітка каналу, що зливається в поверхні picker та inspect, коли метадані runtime ще не готові. |
| `description`| `string` | Короткий опис каналу для поверхонь inspect і каталогу. |
| `preferOver` | `string[]` | Id застарілих або нижчопріоритетних плагінів, які цей канал має випереджати в поверхнях вибору. |
| Поле | Тип | Що воно означає |
| ------------- | ------------------------ | ----------------------------------------------------------------------------------------------- |
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкова для кожного оголошеного запису конфігурації каналу. |
| `uiHints` | `Record<string, object>` | Необов’язкові мітки UI/placeholders/підказки чутливості для цього розділу конфігурації каналу. |
| `label` | `string` | Мітка каналу, що об’єднується в picker та inspect surfaces, коли метадані runtime ще не готові. |
| `description` | `string` | Короткий опис каналу для поверхонь inspect і catalog. |
| `preferOver` | `string[]` | Застарілі або нижчопріоритетні id плагінів, які цей канал має випереджати в поверхнях вибору. |
## Довідка щодо `modelSupport`
## Довідник `modelSupport`
Використовуйте `modelSupport`, коли OpenClaw має визначати ваш плагін провайдера з
коротких id моделей, таких як `gpt-5.4` або `claude-sonnet-4.6`, до завантаження runtime плагіна.
коротких id моделей, таких як `gpt-5.4` або `claude-sonnet-4.6`, до завантаження runtime
плагіна.
```json
{
@ -410,75 +419,75 @@ OpenClaw читає це до завантаження середовища ви
}
```
OpenClaw застосовує такий пріоритет:
OpenClaw застосовує таку пріоритетність:
- явні посилання `provider/model` використовують метадані маніфесту власника `providers`
- `modelPatterns` мають пріоритет над `modelPrefixes`
- якщо збігаються один не-bundled плагін і один bundled-плагін, перемагає не-bundled
- явні посилання `provider/model` використовують метадані маніфесту `providers`, якими володіє плагін
- `modelPatterns` мають вищий пріоритет за `modelPrefixes`
- якщо збігаються один небандлований плагін і один bundled plugin, перемагає небандлований
плагін
- решта неоднозначностей ігнорується, доки користувач або конфігурація не вкажуть провайдера
- решта неоднозначностей ігноруються, доки користувач або config не вкаже провайдера
Поля:
| Поле | Тип | Що це означає |
| --------------- | ---------- | ------------------------------------------------------------------------------ |
| `modelPrefixes` | `string[]` | Префікси, які зіставляються через `startsWith` із короткими id моделей. |
| `modelPatterns` | `string[]` | Джерела regex, що зіставляються з короткими id моделей після видалення суфікса профілю. |
| Поле | Тип | Що воно означає |
| --------------- | ---------- | ------------------------------------------------------------------------------------- |
| `modelPrefixes` | `string[]` | Префікси, що зіставляються через `startsWith` із короткими id моделей. |
| `modelPatterns` | `string[]` | Джерела regex, які зіставляються з короткими id моделей після видалення суфікса профілю. |
Застарілі ключі можливостей верхнього рівня не рекомендовані. Використовуйте `openclaw doctor --fix`, щоб
Застарілі ключі можливостей верхнього рівня не рекомендуються. Використовуйте `openclaw doctor --fix`, щоб
перемістити `speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`,
`webFetchProviders` і `webSearchProviders` у `contracts`; звичайне
`webFetchProviders` і `webSearchProviders` до `contracts`; звичайне
завантаження маніфесту більше не трактує ці поля верхнього рівня як
належність можливостей.
## Маніфест і package.json
## Маніфест проти package.json
Ці два файли виконують різні завдання:
Ці два файли виконують різні ролі:
| Файл | Для чого його використовувати |
| Файл | Використовуйте його для |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів автентифікації та підказки UI, які мають існувати до запуску коду плагіна |
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, що використовується для entrypoint, обмежень встановлення, налаштування або метаданих каталогу |
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані вибору auth і підказки UI, які мають існувати до запуску коду плагіна |
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, який використовується для entrypoint-ів, обмежень установлення, setup або метаданих каталогу |
Якщо ви не впевнені, куди має належати певний фрагмент метаданих, користуйтеся таким правилом:
- якщо OpenClaw повинен знати це до завантаження коду плагіна, помістіть це в `openclaw.plugin.json`
- якщо це стосується пакування, entry-файлів або поведінки встановлення npm, помістіть це в `package.json`
- якщо OpenClaw має знати це до завантаження коду плагіна, помістіть це в `openclaw.plugin.json`
- якщо це стосується пакування, файлів входу або поведінки встановлення npm, помістіть це в `package.json`
### Поля `package.json`, які впливають на виявлення
### Поля package.json, які впливають на виявлення
Частина метаданих плагіна до runtime навмисно зберігається в `package.json` у блоці
`openclaw`, а не в `openclaw.plugin.json`.
Важливі приклади:
| Поле | Що це означає |
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.extensions` | Оголошує entrypoint власних плагінів. |
| `openclaw.setupEntry` | Легкий entrypoint лише для налаштування, який використовується під час онбордингу та відкладеного запуску каналу. |
| `openclaw.channel` | Легкі метадані каталогу каналів, такі як мітки, шляхи до документації, псевдоніми та текст для вибору. |
| `openclaw.channel.configuredState` | Легкі метадані перевірки налаштованого стану, які можуть відповісти на запитання «чи вже існує налаштування лише через env?» без завантаження повного runtime каналу. |
| `openclaw.channel.persistedAuthState` | Легкі метадані перевірки збереженого стану автентифікації, які можуть відповісти на запитання «чи вже щось увійшло в систему?» без завантаження повного runtime каналу. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки встановлення/оновлення для bundled-плагінів і зовнішньо опублікованих плагінів. |
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw із нижньою межею semver, наприклад `>=2026.3.22`. |
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення перевстановлення bundled-плагіна, коли конфігурація невалідна. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє завантажувати поверхні каналу лише для налаштування до повного плагіна каналу під час запуску. |
| Поле | Що воно означає |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `openclaw.extensions` | Оголошує entrypoint власних плагінів. |
| `openclaw.setupEntry` | Легковагий entrypoint лише для setup, який використовується під час онбордингу та відкладеного запуску каналу. |
| `openclaw.channel` | Легковагі метадані каталогу каналів, як-от мітки, шляхи до документації, псевдоніми та текст для вибору. |
| `openclaw.channel.configuredState` | Легковагі метадані перевірки configured-state, які можуть відповісти на запитання «чи вже існує налаштування лише через env?» без завантаження повного runtime каналу. |
| `openclaw.channel.persistedAuthState` | Легковагі метадані перевірки persisted-auth, які можуть відповісти на запитання «чи вже десь виконано вхід?» без завантаження повного runtime каналу. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки встановлення/оновлення для bundled і зовнішньо опублікованих плагінів. |
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw, із нижньою межею semver на кшталт `>=2026.3.22`. |
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення перевстановлення bundled plugin, коли конфігурація невалідна. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє поверхням каналу лише для setup завантажуватися до повного плагіна каналу під час запуску. |
`openclaw.install.minHostVersion` перевіряється під час встановлення та
`openclaw.install.minHostVersion` застосовується під час встановлення та
завантаження реєстру маніфестів. Невалідні значення відхиляються; новіші, але валідні значення пропускають
плагін на старіших хостах.
`openclaw.install.allowInvalidConfigRecovery` навмисно має вузьке застосування. Воно
не робить довільно зламані конфігурації придатними до встановлення. Наразі воно лише дозволяє потокам встановлення
відновлюватися після певних застарілих збоїв оновлення bundled-плагінів, наприклад відсутнього шляху до bundled-плагіна
або застарілого запису `channels.<id>` для того самого
bundled-плагіна. Непов’язані помилки конфігурації все одно блокують встановлення та спрямовують операторів
не робить довільні зламані конфігурації придатними до встановлення. Наразі воно лише дозволяє потокам встановлення
відновлюватися після певних застарілих збоїв оновлення bundled plugin, наприклад
відсутнього шляху bundled plugin або застарілого запису `channels.<id>` для того самого
bundled plugin. Непов’язані помилки конфігурації все одно блокують встановлення та спрямовують операторів
до `openclaw doctor --fix`.
`openclaw.channel.persistedAuthState` — це метадані пакета для маленького модуля перевірки:
`openclaw.channel.persistedAuthState` — це метадані пакунка для маленького модуля перевірки:
```json
{
@ -494,12 +503,11 @@ bundled-плагіна. Непов’язані помилки конфігур
}
```
Використовуйте це, коли потокам налаштування, doctor або configured-state потрібна дешева перевірка автентифікації
так/ні до завантаження повного плагіна каналу. Цільовий експорт має бути невеликою
функцією, що лише читає збережений стан; не спрямовуйте її через повний barrel runtime каналу.
Використовуйте це, коли потокам setup, doctor або configured-state потрібна дешева перевірка auth
типу так/ні до завантаження повного плагіна каналу. Цільовий export має бути невеликою
функцією, яка лише читає збережений стан; не спрямовуйте її через повний barrel runtime каналу.
`openclaw.channel.configuredState` має таку саму форму для дешевих перевірок
налаштованого стану лише через env:
`openclaw.channel.configuredState` має ту саму форму для дешевих перевірок configured-state лише через env:
```json
{
@ -515,63 +523,63 @@ bundled-плагіна. Непов’язані помилки конфігур
}
```
Використовуйте це, коли канал може визначити налаштований стан за env або іншими невеликими
не-runtime входами. Якщо перевірка потребує повного визначення конфігурації або реального
runtime каналу, залиште цю логіку в хуку плагіна `config.hasConfiguredState`.
Використовуйте це, коли канал може визначити configured-state через env або інші невеликі
входи, не пов’язані з runtime. Якщо перевірка потребує повного розв’язання config або справжнього
runtime каналу, залиште цю логіку в hook `config.hasConfiguredState` плагіна.
## Вимоги до JSON Schema
- **Кожен плагін повинен постачатися з JSON Schema**, навіть якщо він не приймає конфігурацію.
- Порожня схема допустима (наприклад, `{ "type": "object", "additionalProperties": false }`).
- Схеми проходять валідацію під час читання/запису конфігурації, а не під час runtime.
- **Кожен плагін має постачатися з JSON Schema**, навіть якщо він не приймає конфігурації.
- Порожня схема припустима (наприклад, `{ "type": "object", "additionalProperties": false }`).
- Схеми проходять валідацію під час читання/запису config, а не під час runtime.
## Поведінка валідації
- Невідомі ключі `channels.*` є **помилками**, якщо тільки id каналу не оголошено
маніфестом плагіна.
- Невідомі ключі `channels.*` є **помилками**, якщо тільки id каналу не оголошений
у маніфесті плагіна.
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` і `plugins.slots.*`
повинні посилатися на **виявлювані** id плагінів. Невідомі id є **помилками**.
- Якщо плагін встановлено, але він має зламаний або відсутній маніфест чи схему,
мають посилатися на id плагінів, які **можна виявити**. Невідомі id є **помилками**.
- Якщо плагін установлено, але він має зламаний або відсутній маніфест чи схему,
валідація завершується помилкою, а Doctor повідомляє про помилку плагіна.
- Якщо конфігурація плагіна існує, але сам плагін **вимкнений**, конфігурація зберігається, і
у Doctor + журналах відображається **попередження**.
- Якщо конфігурація плагіна існує, але сам плагін **вимкнено**, конфігурація зберігається, і
у Doctor + logs відображається **попередження**.
Повну схему `plugins.*` див. у [Довідник конфігурації](/uk/gateway/configuration).
Дивіться [Довідник конфігурації](/uk/gateway/configuration) для повної схеми `plugins.*`.
## Примітки
- Маніфест **обов’язковий для власних плагінів OpenClaw**, включно із завантаженням із локальної файлової системи.
- Runtime і далі завантажує модуль плагіна окремо; маніфест використовується лише для
- Runtime, як і раніше, завантажує модуль плагіна окремо; маніфест призначений лише для
виявлення + валідації.
- Власні маніфести розбираються за допомогою JSON5, тому коментарі, кінцеві коми та
ключі без лапок допускаються, якщо кінцеве значення все одно є об’єктом.
- Завантажувач маніфесту читає лише задокументовані поля маніфесту. Уникайте додавання
тут власних ключів верхнього рівня.
- `providerAuthEnvVars` — це шлях дешевих метаданих для перевірок автентифікації, валідації
env-маркерів та подібних поверхонь автентифікації провайдера, які не повинні запускати runtime плагіна
ключі без лапок допускаються, якщо кінцеве значення все ще є об’єктом.
- Завантажувач маніфестів читає лише задокументовані поля маніфесту. Уникайте додавання
власних ключів верхнього рівня сюди.
- `providerAuthEnvVars` — це дешевий шлях метаданих для перевірок auth, валідації
env-marker та подібних поверхонь auth провайдера, які не повинні запускати runtime плагіна
лише для перевірки назв env.
- `providerAuthAliases` дозволяє варіантам провайдерів повторно використовувати vars env автентифікації,
профілі автентифікації, автентифікацію на основі конфігурації та варіант онбордингу з API key іншого провайдера
- `providerAuthAliases` дозволяє варіантам провайдерів повторно використовувати auth
env vars, auth profiles, auth на основі config та варіант онбордингу API key іншого провайдера
без жорсткого кодування цього зв’язку в core.
- `channelEnvVars` — це шлях дешевих метаданих для fallback через shell-env, підказок налаштування
- `channelEnvVars` — це дешевий шлях метаданих для резервного використання shell-env, підказок setup
та подібних поверхонь каналів, які не повинні запускати runtime плагіна
лише для перевірки назв env.
- `providerAuthChoices` — це шлях дешевих метаданих для picker варіантів автентифікації,
визначення `--auth-choice`, мапінгу бажаного провайдера та простої реєстрації
прапорців CLI для онбордингу до завантаження runtime провайдера. Для метаданих wizard runtime,
які потребують коду провайдера, див.
[Хуки runtime провайдера](/uk/plugins/architecture#provider-runtime-hooks).
- Виняткові види плагінів вибираються через `plugins.slots.*`.
- `providerAuthChoices` — це дешевий шлях метаданих для picker-ів вибору auth,
розв’язання `--auth-choice`, мапінгу preferred provider і простої реєстрації прапорців CLI
під час онбордингу до завантаження runtime провайдера. Для метаданих wizard runtime,
які потребують коду провайдера, дивіться
[Runtime hooks провайдера](/uk/plugins/architecture#provider-runtime-hooks).
- Виключні типи плагінів вибираються через `plugins.slots.*`.
- `kind: "memory"` вибирається через `plugins.slots.memory`.
- `kind: "context-engine"` вибирається через `plugins.slots.contextEngine`
(типово: вбудований `legacy`).
(типове значення: вбудований `legacy`).
- `channels`, `providers`, `cliBackends` і `skills` можна не вказувати, якщо
плагіну вони не потрібні.
- Якщо ваш плагін залежить від native-модулів, задокументуйте кроки збирання та будь-які
вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts`
- Якщо ваш плагін залежить від native modules, задокументуйте кроки збірки та всі
вимоги до allowlist менеджера пакунків (наприклад, pnpm `allow-build-scripts`
- `pnpm rebuild <package>`).
## Пов’язане
## Пов’язані матеріали
- [Створення плагінів](/uk/plugins/building-plugins) — початок роботи з плагінами
- [Архітектура плагінів](/uk/plugins/architecture) — внутрішня архітектура