chore(i18n): refresh uk translations
This commit is contained in:
parent
fff35744e8
commit
cdfb5e7dc8
File diff suppressed because it is too large
Load Diff
@ -1,64 +1,65 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви створюєте Plugin для OpenClaw
|
||||
- Вам потрібно постачати schema конфігурації Plugin або налагоджувати помилки валідації Plugin
|
||||
summary: Маніфест Plugin + вимоги до JSON schema (сувора валідація конфігурації)
|
||||
- Ви створюєте Plugin OpenClaw
|
||||
- Вам потрібно постачати схему конфігурації Plugin або налагоджувати помилки валідації Plugin
|
||||
summary: Вимоги до маніфесту Plugin та JSON schema (сувора валідація конфігурації)
|
||||
title: Маніфест Plugin
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T18:12:11Z"
|
||||
generated_at: "2026-04-24T18:19:00Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 9118ed34fc7bb8923aff6b7f0ac795a1d637d255ef5f6ce0b37293e9a3812253
|
||||
source_hash: bbef814f015b285ada8e656050d85e3113c218017840a5d1002e04348587dd5d
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Ця сторінка стосується лише **нативного маніфесту Plugin OpenClaw**.
|
||||
Ця сторінка призначена лише для **нативного маніфесту Plugin OpenClaw**.
|
||||
|
||||
Сумісні макети bundle див. у [Plugin bundles](/uk/plugins/bundles).
|
||||
Для сумісних макетів bundle дивіться [Plugin bundles](/uk/plugins/bundles).
|
||||
|
||||
Сумісні формати bundle використовують інші файли маніфесту:
|
||||
|
||||
- Codex bundle: `.codex-plugin/plugin.json`
|
||||
- Claude bundle: `.claude-plugin/plugin.json` або типовий макет компонента Claude
|
||||
- Claude bundle: `.claude-plugin/plugin.json` або стандартний макет компонента Claude
|
||||
без маніфесту
|
||||
- Cursor bundle: `.cursor-plugin/plugin.json`
|
||||
|
||||
OpenClaw також автоматично визначає ці макети bundle, але вони не проходять валідацію
|
||||
за schema `openclaw.plugin.json`, описаною тут.
|
||||
за схемою `openclaw.plugin.json`, описаною тут.
|
||||
|
||||
Для сумісних bundle OpenClaw наразі читає метадані bundle плюс оголошені
|
||||
корені Skills, корені команд Claude, типові значення `settings.json` bundle Claude,
|
||||
типові значення LSP bundle Claude та підтримувані пакети hook, коли макет відповідає
|
||||
очікуванням runtime OpenClaw.
|
||||
Для сумісних bundle OpenClaw наразі зчитує метадані bundle, а також оголошені
|
||||
корені skill, корені команд Claude, значення за замовчуванням `settings.json` для Claude bundle,
|
||||
значення за замовчуванням LSP для Claude bundle та підтримувані набори hook, коли макет відповідає
|
||||
очікуванням середовища виконання OpenClaw.
|
||||
|
||||
Кожен нативний Plugin OpenClaw **повинен** постачатися з файлом `openclaw.plugin.json` у
|
||||
Кожен нативний Plugin OpenClaw **повинен** містити файл `openclaw.plugin.json` у
|
||||
**корені Plugin**. OpenClaw використовує цей маніфест для валідації конфігурації
|
||||
**без виконання коду Plugin**. Відсутні або невалідні маніфести вважаються
|
||||
помилками Plugin і блокують валідацію конфігурації.
|
||||
|
||||
Повний посібник по системі Plugin див.: [Plugins](/uk/tools/plugin).
|
||||
Для нативної моделі можливостей і поточних рекомендацій щодо зовнішньої сумісності:
|
||||
Дивіться повний посібник із системи Plugin: [Plugins](/uk/tools/plugin).
|
||||
Щодо нативної моделі можливостей і поточних рекомендацій із зовнішньої сумісності:
|
||||
[Модель можливостей](/uk/plugins/architecture#public-capability-model).
|
||||
|
||||
## Що робить цей файл
|
||||
|
||||
`openclaw.plugin.json` — це метадані, які OpenClaw читає **до завантаження коду
|
||||
вашого Plugin**. Усе нижче має бути достатньо недорогим для перевірки без запуску
|
||||
runtime Plugin.
|
||||
`openclaw.plugin.json` — це метадані, які OpenClaw зчитує **до завантаження коду
|
||||
вашого Plugin**. Усе нижче має бути достатньо дешевим для перевірки без запуску
|
||||
середовища виконання Plugin.
|
||||
|
||||
**Використовуйте його для:**
|
||||
|
||||
- ідентичності Plugin, валідації конфігурації та підказок для UI конфігурації
|
||||
- метаданих auth, onboarding і налаштування (alias, auto-enable, env vars провайдера, варіанти auth)
|
||||
- підказок активації для поверхонь control-plane
|
||||
- володіння скороченими сімействами моделей
|
||||
- ідентичності Plugin, валідації конфігурації та підказок UI для конфігурації
|
||||
- метаданих автентифікації, онбордингу та налаштування (псевдонім, автоувімкнення, змінні середовища provider, варіанти автентифікації)
|
||||
- підказок активації для поверхонь control plane
|
||||
- скороченого володіння сімейством моделей
|
||||
- статичних знімків володіння можливостями (`contracts`)
|
||||
- метаданих QA runner, які може перевіряти спільний хост `openclaw qa`
|
||||
- метаданих конфігурації, специфічних для каналу, які об’єднуються в surfaces каталогу та валідації
|
||||
- метаданих конфігурації, специфічних для channel, які об’єднуються в каталог і поверхні валідації
|
||||
|
||||
**Не використовуйте його для:** реєстрації поведінки runtime, оголошення code entrypoints,
|
||||
або метаданих встановлення npm. Це належить до коду вашого Plugin і `package.json`.
|
||||
**Не використовуйте його для:** реєстрації поведінки під час виконання, оголошення
|
||||
точок входу коду або метаданих встановлення npm. Це належить до коду вашого Plugin
|
||||
і `package.json`.
|
||||
|
||||
## Мінімальний приклад
|
||||
|
||||
@ -79,7 +80,7 @@ runtime Plugin.
|
||||
{
|
||||
"id": "openrouter",
|
||||
"name": "OpenRouter",
|
||||
"description": "Plugin провайдера OpenRouter",
|
||||
"description": "OpenRouter provider plugin",
|
||||
"version": "1.0.0",
|
||||
"providers": ["openrouter"],
|
||||
"modelSupport": {
|
||||
@ -107,19 +108,19 @@ runtime Plugin.
|
||||
"provider": "openrouter",
|
||||
"method": "api-key",
|
||||
"choiceId": "openrouter-api-key",
|
||||
"choiceLabel": "Ключ API OpenRouter",
|
||||
"choiceLabel": "OpenRouter API key",
|
||||
"groupId": "openrouter",
|
||||
"groupLabel": "OpenRouter",
|
||||
"optionKey": "openrouterApiKey",
|
||||
"cliFlag": "--openrouter-api-key",
|
||||
"cliOption": "--openrouter-api-key <key>",
|
||||
"cliDescription": "Ключ API OpenRouter",
|
||||
"cliDescription": "OpenRouter API key",
|
||||
"onboardingScopes": ["text-inference"]
|
||||
}
|
||||
],
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "Ключ API",
|
||||
"label": "API key",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -136,70 +137,70 @@ runtime Plugin.
|
||||
}
|
||||
```
|
||||
|
||||
## Довідка щодо полів верхнього рівня
|
||||
## Довідник полів верхнього рівня
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ------------------------------------ | -------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Так | `string` | Канонічний id Plugin. Саме цей id використовується в `plugins.entries.<id>`. |
|
||||
| `configSchema` | Так | `object` | Вбудована JSON Schema для конфігурації цього Plugin. |
|
||||
| `enabledByDefault` | Ні | `true` | Позначає вбудований Plugin як увімкнений за замовчуванням. Опустіть це поле або встановіть будь-яке значення, відмінне від `true`, щоб Plugin лишався вимкненим за замовчуванням. |
|
||||
| `legacyPluginIds` | Ні | `string[]` | Застарілі id, які нормалізуються до цього канонічного id Plugin. |
|
||||
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Id провайдерів, які мають автоматично вмикати цей Plugin, коли auth, конфігурація або посилання на моделі згадують їх. |
|
||||
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує ексклюзивний тип Plugin, який використовується `plugins.slots.*`. |
|
||||
| `channels` | Ні | `string[]` | Id каналів, якими володіє цей Plugin. Використовується для виявлення та валідації конфігурації. |
|
||||
| `providers` | Ні | `string[]` | Id провайдерів, якими володіє цей Plugin. |
|
||||
| `providerDiscoveryEntry` | Ні | `string` | Шлях до легковагового модуля виявлення провайдера, відносний до кореня Plugin, для метаданих каталогу провайдера в межах маніфесту, які можна завантажити без активації повного runtime Plugin. |
|
||||
| `modelSupport` | Ні | `object` | Керовані маніфестом метадані скорочених сімейств моделей, які використовуються для автозавантаження Plugin до запуску runtime. |
|
||||
| `providerEndpoints` | Ні | `object[]` | Керовані маніфестом метадані host/baseUrl endpoint-ів для маршрутів провайдера, які core має класифікувати до завантаження runtime провайдера. |
|
||||
| `cliBackends` | Ні | `string[]` | Id CLI backend-ів інференсу, якими володіє цей Plugin. Використовується для автоактивації під час запуску з явних посилань у конфігурації. |
|
||||
| `syntheticAuthRefs` | Ні | `string[]` | Посилання на провайдер або CLI backend, для яких слід перевіряти synthetic auth hook, що належить Plugin, під час cold discovery моделей до завантаження runtime. |
|
||||
| `nonSecretAuthMarkers` | Ні | `string[]` | Значення-заповнювачі API key, що належать вбудованому Plugin і представляють несекретний локальний, OAuth або ambient-стан облікових даних. |
|
||||
| `commandAliases` | Ні | `object[]` | Імена команд, якими володіє цей Plugin і які мають створювати обізнану щодо Plugin діагностику конфігурації та CLI до завантаження runtime. |
|
||||
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Недорогі метадані env для auth провайдера, які OpenClaw може перевіряти без завантаження коду Plugin. |
|
||||
| `providerAuthAliases` | Ні | `Record<string, string>` | Id провайдерів, які мають повторно використовувати id іншого провайдера для пошуку auth, наприклад provider coding, що використовує спільний API key і профілі auth базового провайдера. |
|
||||
| `channelEnvVars` | Ні | `Record<string, string[]>` | Недорогі метадані env каналу, які OpenClaw може перевіряти без завантаження коду Plugin. Використовуйте це для налаштування каналу через env або поверхонь auth, які мають бачити узагальнені helper-и запуску/конфігурації. |
|
||||
| `providerAuthChoices` | Ні | `object[]` | Недорогі метадані варіантів auth для picker-ів onboarding, визначення бажаного провайдера та простого зв’язування CLI flags. |
|
||||
| `activation` | Ні | `object` | Недорогі метадані планувальника активації для завантаження, що запускається провайдером, командою, каналом, маршрутом або можливістю. Лише метадані; фактичною поведінкою все одно володіє runtime Plugin. |
|
||||
| `setup` | Ні | `object` | Недорогі дескриптори setup/onboarding, які поверхні виявлення та налаштування можуть перевіряти без завантаження runtime Plugin. |
|
||||
| `qaRunners` | Ні | `object[]` | Недорогі дескриптори QA runner-ів, які спільний хост `openclaw qa` використовує до завантаження runtime Plugin. |
|
||||
| `contracts` | Ні | `object` | Статичний знімок можливостей вбудованого Plugin для зовнішніх auth hook-ів, speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search і володіння інструментами. |
|
||||
| `mediaUnderstandingProviderMetadata` | Ні | `Record<string, object>` | Недорогі типові значення media-understanding для id провайдерів, оголошених у `contracts.mediaUnderstandingProviders`. |
|
||||
| `channelConfigs` | Ні | `Record<string, object>` | Керовані маніфестом метадані конфігурації каналу, які об’єднуються в поверхнях виявлення й валідації до завантаження runtime. |
|
||||
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження, відносні до кореня Plugin. |
|
||||
| `name` | Ні | `string` | Людинозрозуміла назва Plugin. |
|
||||
| `description` | Ні | `string` | Короткий опис, що показується в поверхнях Plugin. |
|
||||
| `version` | Ні | `string` | Інформаційна версія Plugin. |
|
||||
| `uiHints` | Ні | `Record<string, object>` | Мітки UI, placeholders і підказки щодо чутливості для полів конфігурації. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------------------------ | ----------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Так | `string` | Канонічний id Plugin. Це id, який використовується в `plugins.entries.<id>`. |
|
||||
| `configSchema` | Так | `object` | Вбудована JSON Schema для конфігурації цього Plugin. |
|
||||
| `enabledByDefault` | Ні | `true` | Позначає bundle Plugin як увімкнений за замовчуванням. Пропустіть це поле або вкажіть будь-яке значення, відмінне від `true`, щоб залишити Plugin вимкненим за замовчуванням. |
|
||||
| `legacyPluginIds` | Ні | `string[]` | Застарілі id, які нормалізуються до цього канонічного id Plugin. |
|
||||
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | id provider, які мають автоматично вмикати цей Plugin, коли автентифікація, конфігурація або посилання на модель згадують їх. |
|
||||
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує ексклюзивний тип Plugin, який використовується `plugins.slots.*`. |
|
||||
| `channels` | Ні | `string[]` | id channel, що належать цьому Plugin. Використовується для виявлення та валідації конфігурації. |
|
||||
| `providers` | Ні | `string[]` | id provider, що належать цьому Plugin. |
|
||||
| `providerDiscoveryEntry` | Ні | `string` | Шлях до легковагового модуля виявлення provider, відносний до кореня Plugin, для метаданих каталогу provider в межах маніфесту, які можна завантажити без активації повного середовища виконання Plugin. |
|
||||
| `modelSupport` | Ні | `object` | Скорочені метадані сімейства моделей, що належать маніфесту та використовуються для автоматичного завантаження Plugin до запуску середовища виконання. |
|
||||
| `providerEndpoints` | Ні | `object[]` | Метадані host/baseUrl кінцевих точок, що належать маніфесту, для маршрутів provider, які ядро має класифікувати до завантаження середовища виконання provider. |
|
||||
| `cliBackends` | Ні | `string[]` | id backend CLI, що належать цьому Plugin. Використовується для автоматичної активації під час запуску з явних посилань у конфігурації. |
|
||||
| `syntheticAuthRefs` | Ні | `string[]` | Посилання provider або backend CLI, для яких слід перевіряти синтетичний hook автентифікації, що належить Plugin, під час холодного виявлення моделей до завантаження середовища виконання. |
|
||||
| `nonSecretAuthMarkers` | Ні | `string[]` | Значення-заповнювачі API key, що належать bundle Plugin і представляють не секретний локальний стан, OAuth або ambient credential state. |
|
||||
| `commandAliases` | Ні | `object[]` | Назви команд, що належать цьому Plugin і мають формувати діагностику конфігурації та CLI з урахуванням Plugin до завантаження середовища виконання. |
|
||||
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легковагові env-метадані автентифікації provider, які OpenClaw може перевіряти без завантаження коду Plugin. |
|
||||
| `providerAuthAliases` | Ні | `Record<string, string>` | id provider, які мають повторно використовувати id іншого provider для пошуку автентифікації, наприклад provider для кодування, який спільно використовує API key базового provider і профілі автентифікації. |
|
||||
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легковагові env-метадані channel, які OpenClaw може перевіряти без завантаження коду Plugin. Використовуйте це для setup channel на основі env або поверхонь автентифікації, які мають бачити узагальнені допоміжні засоби запуску/конфігурації. |
|
||||
| `providerAuthChoices` | Ні | `object[]` | Легковагові метадані варіантів автентифікації для picker під час онбордингу, визначення пріоритетного provider і простого зв’язування прапорців CLI. |
|
||||
| `activation` | Ні | `object` | Легковагові метадані планувальника активації для завантаження за provider, командою, channel, маршрутом і можливістю. Лише метадані; фактична поведінка, як і раніше, належить середовищу виконання Plugin. |
|
||||
| `setup` | Ні | `object` | Легковагові дескриптори setup/онбордингу, які поверхні виявлення та setup можуть перевіряти без завантаження середовища виконання Plugin. |
|
||||
| `qaRunners` | Ні | `object[]` | Легковагові дескриптори QA runner, які використовуються спільним хостом `openclaw qa` до завантаження середовища виконання Plugin. |
|
||||
| `contracts` | Ні | `object` | Статичний знімок bundle capability для зовнішніх hook автентифікації, speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search і володіння tool. |
|
||||
| `mediaUnderstandingProviderMetadata` | Ні | `Record<string, object>` | Легковагові значення за замовчуванням media-understanding для id provider, оголошених у `contracts.mediaUnderstandingProviders`. |
|
||||
| `channelConfigs` | Ні | `Record<string, object>` | Метадані конфігурації channel, що належать маніфесту та об’єднуються з поверхнями виявлення й валідації до завантаження середовища виконання. |
|
||||
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження, відносні до кореня Plugin. |
|
||||
| `name` | Ні | `string` | Зрозуміла людині назва Plugin. |
|
||||
| `description` | Ні | `string` | Короткий опис, що показується на поверхнях Plugin. |
|
||||
| `version` | Ні | `string` | Інформаційна версія Plugin. |
|
||||
| `uiHints` | Ні | `Record<string, object>` | Мітки UI, placeholders і підказки щодо чутливості для полів конфігурації. |
|
||||
|
||||
## Довідка щодо `providerAuthChoices`
|
||||
## Довідник `providerAuthChoices`
|
||||
|
||||
Кожен запис `providerAuthChoices` описує один варіант onboarding або auth.
|
||||
OpenClaw читає це до завантаження runtime провайдера.
|
||||
Кожен запис `providerAuthChoices` описує один варіант онбордингу або автентифікації.
|
||||
OpenClaw зчитує це до завантаження середовища виконання provider.
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| --------------------- | -------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Так | `string` | Id провайдера, до якого належить цей варіант. |
|
||||
| `method` | Так | `string` | Id методу auth, до якого треба диспетчеризувати. |
|
||||
| `choiceId` | Так | `string` | Стабільний id варіанта auth, який використовується в onboarding і 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">` | У яких поверхнях onboarding має з’являтися цей варіант. Якщо не вказано, типово використовується `["text-inference"]`. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| --------------------- | ----------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Так | `string` | id provider, до якого належить цей варіант. |
|
||||
| `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"]`. |
|
||||
|
||||
## Довідка щодо `commandAliases`
|
||||
## Довідник `commandAliases`
|
||||
|
||||
Використовуйте `commandAliases`, коли Plugin володіє назвою runtime-команди, яку користувачі можуть
|
||||
помилково додати в `plugins.allow` або спробувати запустити як кореневу CLI-команду. OpenClaw
|
||||
використовує ці метадані для діагностики без імпорту коду runtime Plugin.
|
||||
Використовуйте `commandAliases`, коли Plugin володіє назвою команди середовища виконання, яку користувачі можуть
|
||||
помилково додати до `plugins.allow` або спробувати виконати як кореневу команду CLI. OpenClaw
|
||||
використовує ці метадані для діагностики без імпорту коду середовища виконання Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -213,32 +214,34 @@ OpenClaw читає це до завантаження runtime провайде
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ------------ | -------- | ----------------- | ----------------------------------------------------------------------- |
|
||||
| `name` | Так | `string` | Назва команди, яка належить цьому Plugin. |
|
||||
| `kind` | Ні | `"runtime-slash"` | Позначає alias як slash-команду чату, а не кореневу CLI-команду. |
|
||||
| `cliCommand` | Ні | `string` | Пов’язана коренева CLI-команда, яку слід пропонувати для CLI-операцій, якщо вона існує. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------ | ----------- | ----------------- | ----------------------------------------------------------------------- |
|
||||
| `name` | Так | `string` | Назва команди, що належить цьому Plugin. |
|
||||
| `kind` | Ні | `"runtime-slash"` | Позначає псевдонім як slash-команду чату, а не кореневу команду CLI. |
|
||||
| `cliCommand` | Ні | `string` | Пов’язана коренева команда CLI, яку слід запропонувати для CLI-операцій, якщо така існує. |
|
||||
|
||||
## Довідка щодо `activation`
|
||||
## Довідник `activation`
|
||||
|
||||
Використовуйте `activation`, коли Plugin може недорого оголосити, які події control-plane
|
||||
мають включати його в план активації/завантаження.
|
||||
Використовуйте `activation`, коли Plugin може дешево оголосити, які події control plane
|
||||
мають включати його до плану активації/завантаження.
|
||||
|
||||
Цей блок є метаданими планувальника, а не API життєвого циклу. Він не реєструє
|
||||
поведінку runtime, не замінює `register(...)` і не гарантує, що
|
||||
код Plugin уже виконувався. Планувальник активації використовує ці поля, щоб
|
||||
звузити коло кандидатів Plugin, перш ніж переходити до наявних метаданих
|
||||
володіння з маніфесту, таких як `providers`, `channels`, `commandAliases`,
|
||||
`setup.providers`, `contracts.tools` і hook-и.
|
||||
поведінку під час виконання, не замінює `register(...)` і не гарантує, що
|
||||
код Plugin уже був виконаний. Планувальник активації використовує ці поля для
|
||||
звуження набору кандидатів Plugin, перш ніж повертатися до наявних
|
||||
метаданих володіння з маніфесту, таких як `providers`, `channels`, `commandAliases`, `setup.providers`,
|
||||
`contracts.tools` і hooks.
|
||||
|
||||
Надавайте перевагу найвужчим метаданим, які вже описують володіння. Використовуйте
|
||||
`providers`, `channels`, `commandAliases`, дескриптори setup або `contracts`,
|
||||
коли ці поля виражають зв’язок. Використовуйте `activation` для додаткових підказок планувальника, які не можна представити цими полями володіння.
|
||||
коли ці поля виражають зв’язок. Використовуйте `activation` для додаткових підказок планувальника,
|
||||
які не можна представити через ці поля володіння.
|
||||
|
||||
Цей блок містить лише метадані. Він не реєструє поведінку runtime і не
|
||||
замінює `register(...)`, `setupEntry` або інші entrypoint-и runtime/Plugin.
|
||||
Поточні споживачі використовують його як підказку для звуження перед ширшим завантаженням Plugin, тому відсутність метаданих activation зазвичай впливає лише на продуктивність; вона не повинна
|
||||
впливати на коректність, доки ще існують застарілі резервні механізми володіння з маніфесту.
|
||||
Цей блок — лише метадані. Він не реєструє поведінку під час виконання та не
|
||||
замінює `register(...)`, `setupEntry` або інші точки входу середовища виконання/Plugin.
|
||||
Поточні споживачі використовують його як підказку для звуження перед ширшим завантаженням Plugin, тому
|
||||
відсутність метаданих активації зазвичай лише впливає на продуктивність; це не повинно
|
||||
змінювати коректність, доки ще існують застарілі fallback-механізми володіння в маніфесті.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -252,56 +255,58 @@ OpenClaw читає це до завантаження runtime провайде
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `onProviders` | Ні | `string[]` | Id провайдерів, які мають включати цей Plugin у плани активації/завантаження. |
|
||||
| `onCommands` | Ні | `string[]` | Id команд, які мають включати цей Plugin у плани активації/завантаження. |
|
||||
| `onChannels` | Ні | `string[]` | Id каналів, які мають включати цей Plugin у плани активації/завантаження. |
|
||||
| `onRoutes` | Ні | `string[]` | Типи маршрутів, які мають включати цей Plugin у плани активації/завантаження. |
|
||||
| `onCapabilities` | Ні | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Широкі підказки можливостей, що використовуються плануванням активації control-plane. Коли можливо, віддавайте перевагу вужчим полям. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ---------------- | ----------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `onProviders` | Ні | `string[]` | id provider, які мають включати цей Plugin до планів активації/завантаження. |
|
||||
| `onCommands` | Ні | `string[]` | id команд, які мають включати цей Plugin до планів активації/завантаження. |
|
||||
| `onChannels` | Ні | `string[]` | id channel, які мають включати цей Plugin до планів активації/завантаження. |
|
||||
| `onRoutes` | Ні | `string[]` | Типи маршрутів, які мають включати цей Plugin до планів активації/завантаження. |
|
||||
| `onCapabilities` | Ні | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Загальні підказки щодо можливостей, які використовуються в плануванні активації control plane. За можливості надавайте перевагу вужчим полям. |
|
||||
|
||||
Поточні live-споживачі:
|
||||
Поточні активні споживачі:
|
||||
|
||||
- планування CLI, що запускається командою, використовує резервний перехід до застарілих
|
||||
- планування CLI, ініційоване командою, повертається до застарілих
|
||||
`commandAliases[].cliCommand` або `commandAliases[].name`
|
||||
- планування setup/каналу, що запускається каналом, використовує резервний перехід до застарілого володіння `channels[]`, коли явні метадані активації каналу відсутні
|
||||
- планування setup/runtime, що запускається провайдером, використовує резервний перехід до застарілого
|
||||
володіння `providers[]` і `cliBackends[]` верхнього рівня, коли явні метадані активації провайдера відсутні
|
||||
- планування setup/channel, ініційоване channel, повертається до застарілого володіння `channels[]`,
|
||||
коли явні метадані активації channel відсутні
|
||||
- планування setup/середовища виконання, ініційоване provider, повертається до застарілого
|
||||
володіння `providers[]` і верхньорівневого `cliBackends[]`, коли явні метадані активації provider
|
||||
відсутні
|
||||
|
||||
Діагностика планувальника може відрізняти явні підказки activation від
|
||||
резервного володіння з маніфесту. Наприклад, `activation-command-hint` означає, що
|
||||
збіглося `activation.onCommands`, а `manifest-command-alias` означає, що
|
||||
Діагностика планувальника може розрізняти явні підказки активації та fallback на
|
||||
володіння з маніфесту. Наприклад, `activation-command-hint` означає, що
|
||||
збіглося `activation.onCommands`, тоді як `manifest-command-alias` означає, що
|
||||
планувальник натомість використав володіння `commandAliases`. Ці мітки причин призначені для
|
||||
діагностики хоста й тестів; авторам Plugin слід і далі оголошувати метадані,
|
||||
діагностики хоста та тестів; авторам Plugin слід і надалі оголошувати метадані,
|
||||
які найкраще описують володіння.
|
||||
|
||||
## Довідка щодо `qaRunners`
|
||||
## Довідник `qaRunners`
|
||||
|
||||
Використовуйте `qaRunners`, коли Plugin додає один або більше transport runner-ів під
|
||||
спільним коренем `openclaw qa`. Зберігайте ці метадані недорогими й статичними; фактичною
|
||||
реєстрацією CLI все одно володіє runtime Plugin через легковагову surface
|
||||
`runtime-api.ts`, яка експортує `qaRunnerCliRegistrations`.
|
||||
Використовуйте `qaRunners`, коли Plugin додає один або кілька transport runner під
|
||||
спільним коренем `openclaw qa`. Зберігайте ці метадані легковаговими та статичними; фактичною
|
||||
реєстрацією CLI, як і раніше, керує середовище виконання Plugin через легковагову
|
||||
поверхню `runtime-api.ts`, яка експортує `qaRunnerCliRegistrations`.
|
||||
|
||||
```json
|
||||
{
|
||||
"qaRunners": [
|
||||
{
|
||||
"commandName": "matrix",
|
||||
"description": "Запустити live QA lane Matrix на базі Docker проти тимчасового homeserver"
|
||||
"description": "Run the Docker-backed Matrix live QA lane against a disposable homeserver"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ------------- | -------- | -------- | ------------------------------------------------------------------ |
|
||||
| `commandName` | Так | `string` | Підкоманда, змонтована під `openclaw qa`, наприклад `matrix`. |
|
||||
| `description` | Ні | `string` | Резервний текст довідки, який використовується, коли спільному хосту потрібна stub-команда. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------- | ----------- | -------- | ------------------------------------------------------------------- |
|
||||
| `commandName` | Так | `string` | Підкоманда, змонтована під `openclaw qa`, наприклад `matrix`. |
|
||||
| `description` | Ні | `string` | Резервний текст довідки, що використовується, коли спільному хосту потрібна stub-команда. |
|
||||
|
||||
## Довідка щодо `setup`
|
||||
## Довідник `setup`
|
||||
|
||||
Використовуйте `setup`, коли поверхням setup і onboarding потрібні недорогі метадані Plugin
|
||||
до завантаження runtime.
|
||||
Використовуйте `setup`, коли поверхням setup та онбордингу потрібні дешеві метадані, що належать Plugin,
|
||||
до завантаження середовища виконання.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -320,52 +325,58 @@ OpenClaw читає це до завантаження runtime провайде
|
||||
}
|
||||
```
|
||||
|
||||
`cliBackends` верхнього рівня лишається валідним і далі описує CLI backend-и
|
||||
інференсу. `setup.cliBackends` — це surface дескрипторів, специфічна для setup,
|
||||
для control-plane/setup-сценаріїв, які мають залишатися лише метаданими.
|
||||
Верхньорівневе `cliBackends` залишається валідним і надалі описує backend інференсу CLI.
|
||||
`setup.cliBackends` — це поверхня дескрипторів, специфічна для setup, для
|
||||
потоків control plane/setup, які мають залишатися лише метаданими.
|
||||
|
||||
Коли вони присутні, `setup.providers` і `setup.cliBackends` є бажаною
|
||||
surface пошуку setup за принципом descriptor-first для виявлення setup. Якщо дескриптор лише звужує коло кандидата Plugin, а setup усе ще потребує багатших runtime hook-ів на етапі setup, встановіть `requiresRuntime: true` і залиште `setup-api` як
|
||||
Якщо присутні, `setup.providers` і `setup.cliBackends` є пріоритетною
|
||||
поверхнею пошуку descriptor-first для виявлення setup. Якщо дескриптор лише
|
||||
звужує candidate Plugin, а setup усе ще потребує багатших hook під час setup, встановіть `requiresRuntime: true` і залиште `setup-api` як
|
||||
резервний шлях виконання.
|
||||
|
||||
Встановлюйте `requiresRuntime: false` лише тоді, коли цих дескрипторів достатньо для
|
||||
Установлюйте `requiresRuntime: false` лише тоді, коли цих дескрипторів достатньо для
|
||||
поверхні setup. OpenClaw трактує явне `false` як контракт лише на дескриптори
|
||||
і не виконуватиме `setup-api` для пошуку setup. Якщо `requiresRuntime`
|
||||
пропущено, зберігається застаріла резервна поведінка, щоб наявні Plugin, які додали дескриптори
|
||||
і не виконуватиме `setup-api` для пошуку setup. Пропущений `requiresRuntime`
|
||||
зберігає застарілу fallback-поведінку, щоб наявні Plugin, які додали дескриптори
|
||||
без цього прапорця, не зламалися.
|
||||
|
||||
Оскільки пошук setup може виконувати код `setup-api`, що належить Plugin, нормалізовані
|
||||
значення `setup.providers[].id` і `setup.cliBackends[]` мають залишатися глобально унікальними серед
|
||||
виявлених Plugin. Неоднозначне володіння закривається в безпечний спосіб замість вибору
|
||||
значення `setup.providers[].id` і `setup.cliBackends[]` мають залишатися унікальними
|
||||
серед виявлених Plugin. Неоднозначне володіння завершується безпечною відмовою, а не вибором
|
||||
переможця за порядком виявлення.
|
||||
|
||||
### Довідка щодо `setup.providers`
|
||||
Коли середовище виконання setup усе ж виконується, діагностика реєстру setup повідомляє про
|
||||
розбіжність дескрипторів, якщо `setup-api` реєструє provider або backend CLI, які
|
||||
не оголошені дескрипторами маніфесту, або якщо дескриптор не має відповідної
|
||||
реєстрації під час виконання. Ця діагностика є додатковою і не відхиляє застарілі Plugin.
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ------------- | -------- | ---------- | ------------------------------------------------------------------------------------ |
|
||||
| `id` | Так | `string` | Id провайдера, що показується під час setup або onboarding. Нормалізовані id мають бути глобально унікальними. |
|
||||
| `authMethods` | Ні | `string[]` | Id методів setup/auth, які цей провайдер підтримує без завантаження повного runtime. |
|
||||
| `envVars` | Ні | `string[]` | Env vars, які узагальнені поверхні setup/status можуть перевіряти до завантаження runtime Plugin. |
|
||||
### Довідник `setup.providers`
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------- | ----------- | ---------- | ------------------------------------------------------------------------------------- |
|
||||
| `id` | Так | `string` | id provider, що надається під час setup або онбордингу. Зберігайте нормалізовані id глобально унікальними. |
|
||||
| `authMethods` | Ні | `string[]` | id методів setup/автентифікації, які цей provider підтримує без завантаження повного середовища виконання. |
|
||||
| `envVars` | Ні | `string[]` | Env vars, які узагальнені поверхні setup/status можуть перевіряти до завантаження середовища виконання Plugin. |
|
||||
|
||||
### Поля `setup`
|
||||
|
||||
| Field | Required | Type | What it means |
|
||||
| ------------------ | -------- | ---------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | Ні | `object[]` | Дескриптори setup провайдерів, що показуються під час setup та onboarding. |
|
||||
| `cliBackends` | Ні | `string[]` | Id backend-ів на етапі setup, що використовуються для descriptor-first пошуку setup. Нормалізовані id мають залишатися глобально унікальними. |
|
||||
| `configMigrations` | Ні | `string[]` | Id міграцій конфігурації, якими володіє surface setup цього Plugin. |
|
||||
| `requiresRuntime` | Ні | `boolean` | Чи потребує setup виконання `setup-api` після пошуку за дескриптором. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------ | ----------- | ---------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `providers` | Ні | `object[]` | Дескриптори setup provider, доступні під час setup та онбордингу. |
|
||||
| `cliBackends` | Ні | `string[]` | id backend для setup, що використовуються для descriptor-first пошуку setup. Зберігайте нормалізовані id глобально унікальними. |
|
||||
| `configMigrations` | Ні | `string[]` | id міграцій конфігурації, що належать поверхні setup цього Plugin. |
|
||||
| `requiresRuntime` | Ні | `boolean` | Чи потребує setup виконання `setup-api` після пошуку за дескриптором. |
|
||||
|
||||
## Довідка щодо `uiHints`
|
||||
## Довідник `uiHints`
|
||||
|
||||
`uiHints` — це мапа від імен полів конфігурації до невеликих підказок рендерингу.
|
||||
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок для рендерингу.
|
||||
|
||||
```json
|
||||
{
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "Ключ API",
|
||||
"help": "Використовується для запитів OpenRouter",
|
||||
"label": "API key",
|
||||
"help": "Used for OpenRouter requests",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -373,9 +384,9 @@ surface пошуку setup за принципом descriptor-first для ви
|
||||
}
|
||||
```
|
||||
|
||||
Кожна підказка поля може містити:
|
||||
Кожна підказка для поля може містити:
|
||||
|
||||
| Field | Type | What it means |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ------------- | ---------- | --------------------------------------- |
|
||||
| `label` | `string` | Мітка поля для користувача. |
|
||||
| `help` | `string` | Короткий допоміжний текст. |
|
||||
@ -384,10 +395,10 @@ surface пошуку setup за принципом descriptor-first для ви
|
||||
| `sensitive` | `boolean` | Позначає поле як секретне або чутливе. |
|
||||
| `placeholder` | `string` | Текст placeholder для полів форми. |
|
||||
|
||||
## Довідка щодо `contracts`
|
||||
## Довідник `contracts`
|
||||
|
||||
Використовуйте `contracts` лише для статичних метаданих володіння можливостями, які OpenClaw може
|
||||
прочитати без імпорту runtime Plugin.
|
||||
зчитати без імпорту середовища виконання Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -410,37 +421,37 @@ surface пошуку setup за принципом descriptor-first для ви
|
||||
|
||||
Кожен список є необов’язковим:
|
||||
|
||||
| Field | Type | What it means |
|
||||
| -------------------------------- | ---------- | ----------------------------------------------------------------- |
|
||||
| `embeddedExtensionFactories` | `string[]` | Id вбудованого runtime, для яких вбудований Plugin може реєструвати factories. |
|
||||
| `externalAuthProviders` | `string[]` | Id провайдерів, чий hook зовнішнього auth profile належить цьому Plugin. |
|
||||
| `speechProviders` | `string[]` | Id провайдерів speech, якими володіє цей Plugin. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Id провайдерів realtime transcription, якими володіє цей Plugin. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Id провайдерів realtime voice, якими володіє цей Plugin. |
|
||||
| `memoryEmbeddingProviders` | `string[]` | Id провайдерів memory embedding, якими володіє цей Plugin. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Id провайдерів media-understanding, якими володіє цей Plugin. |
|
||||
| `imageGenerationProviders` | `string[]` | Id провайдерів image-generation, якими володіє цей Plugin. |
|
||||
| `videoGenerationProviders` | `string[]` | Id провайдерів video-generation, якими володіє цей Plugin. |
|
||||
| `webFetchProviders` | `string[]` | Id провайдерів web-fetch, якими володіє цей Plugin. |
|
||||
| `webSearchProviders` | `string[]` | Id провайдерів web search, якими володіє цей Plugin. |
|
||||
| `tools` | `string[]` | Імена інструментів агента, якими володіє цей Plugin, для перевірок контрактів вбудованих Plugin. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| -------------------------------- | ---------- | ------------------------------------------------------------------- |
|
||||
| `embeddedExtensionFactories` | `string[]` | id вбудованого середовища виконання, для яких bundle Plugin може реєструвати factory. |
|
||||
| `externalAuthProviders` | `string[]` | id provider, чий зовнішній hook профілю автентифікації належить цьому Plugin. |
|
||||
| `speechProviders` | `string[]` | id provider мовлення, які належать цьому Plugin. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | id provider транскрипції в реальному часі, які належать цьому Plugin. |
|
||||
| `realtimeVoiceProviders` | `string[]` | id provider голосу в реальному часі, які належать цьому Plugin. |
|
||||
| `memoryEmbeddingProviders` | `string[]` | id provider embedding для пам’яті, які належать цьому Plugin. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | id provider media-understanding, які належать цьому Plugin. |
|
||||
| `imageGenerationProviders` | `string[]` | id provider генерації зображень, які належать цьому Plugin. |
|
||||
| `videoGenerationProviders` | `string[]` | id provider генерації відео, які належать цьому Plugin. |
|
||||
| `webFetchProviders` | `string[]` | id provider web-fetch, які належать цьому Plugin. |
|
||||
| `webSearchProviders` | `string[]` | id provider web search, які належать цьому Plugin. |
|
||||
| `tools` | `string[]` | Назви tool агента, які належать цьому Plugin для bundle-перевірок контрактів. |
|
||||
|
||||
Plugin провайдера, які реалізують `resolveExternalAuthProfiles`, мають оголошувати
|
||||
Plugin provider, які реалізують `resolveExternalAuthProfiles`, повинні оголошувати
|
||||
`contracts.externalAuthProviders`. Plugin без цього оголошення все ще працюють
|
||||
через застарілий резервний механізм сумісності, але цей механізм повільніший і
|
||||
буде видалений після завершення вікна міграції.
|
||||
через застарілий fallback-механізм сумісності, але він повільніший і
|
||||
буде вилучений після вікна міграції.
|
||||
|
||||
Вбудовані провайдери memory embedding мають оголошувати
|
||||
`contracts.memoryEmbeddingProviders` для кожного id адаптера, який вони надають, включно з
|
||||
вбудованими адаптерами, такими як `local`. Окремі шляхи CLI використовують цей контракт
|
||||
маніфесту, щоб завантажувати лише Plugin-власник до того, як повний runtime Gateway
|
||||
зареєструє провайдерів.
|
||||
Bundle Plugin provider embedding для пам’яті повинні оголошувати
|
||||
`contracts.memoryEmbeddingProviders` для кожного id adapter, який вони надають, включно з
|
||||
вбудованими adapter, такими як `local`. Автономні шляхи CLI використовують цей контракт маніфесту,
|
||||
щоб завантажувати лише Plugin-власник до того, як повне середовище виконання Gateway
|
||||
зареєструє provider.
|
||||
|
||||
## Довідка щодо `mediaUnderstandingProviderMetadata`
|
||||
## Довідник `mediaUnderstandingProviderMetadata`
|
||||
|
||||
Використовуйте `mediaUnderstandingProviderMetadata`, коли провайдер media-understanding має
|
||||
типові моделі, пріоритет резервного auto-auth або нативну підтримку документів, які
|
||||
узагальненим helper-ам core потрібні до завантаження runtime. Ключі також мають бути оголошені в
|
||||
Використовуйте `mediaUnderstandingProviderMetadata`, коли provider media-understanding має
|
||||
моделі за замовчуванням, пріоритет fallback автоматичної автентифікації або нативну підтримку документів,
|
||||
які потрібні узагальненим допоміжним засобам ядра до завантаження середовища виконання. Ключі також мають бути оголошені в
|
||||
`contracts.mediaUnderstandingProviders`.
|
||||
|
||||
```json
|
||||
@ -464,19 +475,19 @@ Plugin провайдера, які реалізують `resolveExternalAuthPro
|
||||
}
|
||||
```
|
||||
|
||||
Кожен запис провайдера може містити:
|
||||
Кожен запис provider може містити:
|
||||
|
||||
| Field | Type | What it means |
|
||||
| ---------------------- | ----------------------------------- | ---------------------------------------------------------------------------- |
|
||||
| `capabilities` | `("image" \| "audio" \| "video")[]` | Медіаможливості, які надає цей провайдер. |
|
||||
| `defaultModels` | `Record<string, string>` | Типові значення відповідності можливість→модель, що використовуються, коли в конфігурації не вказано модель. |
|
||||
| `autoPriority` | `Record<string, number>` | Менші числа сортуються раніше для автоматичного резервного вибору провайдера на основі облікових даних. |
|
||||
| `nativeDocumentInputs` | `"pdf"[]` | Нативні формати документів, які підтримує провайдер. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ---------------------- | ----------------------------------- | ------------------------------------------------------------------------ |
|
||||
| `capabilities` | `("image" \| "audio" \| "video")[]` | Медіаможливості, які надає цей provider. |
|
||||
| `defaultModels` | `Record<string, string>` | Значення моделей за замовчуванням для можливостей, які використовуються, коли конфігурація не вказує модель. |
|
||||
| `autoPriority` | `Record<string, number>` | Менші числа сортуються раніше для автоматичного fallback provider на основі облікових даних. |
|
||||
| `nativeDocumentInputs` | `"pdf"[]` | Нативні входи документів, які підтримує provider. |
|
||||
|
||||
## Довідка щодо `channelConfigs`
|
||||
## Довідник `channelConfigs`
|
||||
|
||||
Використовуйте `channelConfigs`, коли канальному Plugin потрібні недорогі метадані конфігурації
|
||||
до завантаження runtime.
|
||||
Використовуйте `channelConfigs`, коли Plugin channel потребує дешевих метаданих конфігурації до
|
||||
завантаження середовища виконання.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -491,32 +502,32 @@ Plugin провайдера, які реалізують `resolveExternalAuthPro
|
||||
},
|
||||
"uiHints": {
|
||||
"homeserverUrl": {
|
||||
"label": "URL homeserver",
|
||||
"label": "Homeserver URL",
|
||||
"placeholder": "https://matrix.example.com"
|
||||
}
|
||||
},
|
||||
"label": "Matrix",
|
||||
"description": "Підключення до homeserver Matrix",
|
||||
"description": "Matrix homeserver connection",
|
||||
"preferOver": ["matrix-legacy"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Кожен запис каналу може містити:
|
||||
Кожен запис channel може містити:
|
||||
|
||||
| Field | Type | What it means |
|
||||
| ------------- | ------------------------ | ----------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкова для кожного оголошеного запису конфігурації каналу. |
|
||||
| `uiHints` | `Record<string, object>` | Необов’язкові мітки UI/placeholders/підказки чутливості для цього розділу конфігурації каналу. |
|
||||
| `label` | `string` | Мітка каналу, що об’єднується в surfaces picker та inspect, коли метадані runtime ще не готові. |
|
||||
| `description` | `string` | Короткий опис каналу для surfaces inspect і catalog. |
|
||||
| `preferOver` | `string[]` | Id застарілих або менш пріоритетних Plugin, які цей канал має випереджати в surfaces вибору. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ------------- | ------------------------ | ------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкове для кожного оголошеного запису конфігурації channel. |
|
||||
| `uiHints` | `Record<string, object>` | Необов’язкові мітки UI/placeholders/підказки чутливості для цього розділу конфігурації channel. |
|
||||
| `label` | `string` | Мітка channel, що об’єднується з поверхнями picker та inspect, коли метадані середовища виконання ще не готові. |
|
||||
| `description` | `string` | Короткий опис channel для поверхонь inspect і catalog. |
|
||||
| `preferOver` | `string[]` | id застарілих або менш пріоритетних Plugin, які цей channel має випереджати на поверхнях вибору. |
|
||||
|
||||
## Довідка щодо `modelSupport`
|
||||
## Довідник `modelSupport`
|
||||
|
||||
Використовуйте `modelSupport`, коли OpenClaw має виводити ваш Plugin провайдера з
|
||||
скорочених id моделей на кшталт `gpt-5.5` або `claude-sonnet-4.6` до завантаження runtime Plugin.
|
||||
Використовуйте `modelSupport`, коли OpenClaw має виводити ваш Plugin provider із
|
||||
скорочених id моделей, таких як `gpt-5.5` або `claude-sonnet-4.6`, до завантаження середовища виконання Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -529,98 +540,105 @@ Plugin провайдера, які реалізують `resolveExternalAuthPro
|
||||
|
||||
OpenClaw застосовує такий пріоритет:
|
||||
|
||||
- явні посилання `provider/model` використовують метадані маніфесту `providers` власника
|
||||
- `modelPatterns` мають пріоритет над `modelPrefixes`
|
||||
- якщо збігаються один невбудований Plugin і один вбудований Plugin, перемагає невбудований
|
||||
- явні посилання `provider/model` використовують метадані маніфесту `providers`, що належать власнику
|
||||
- `modelPatterns` мають вищий пріоритет, ніж `modelPrefixes`
|
||||
- якщо збігаються один небандлований Plugin і один bundle Plugin, перемагає небандлований
|
||||
Plugin
|
||||
- решта неоднозначностей ігноруються, доки користувач або конфігурація не задасть провайдера
|
||||
- решта неоднозначностей ігноруються, доки користувач або конфігурація не вкажуть provider
|
||||
|
||||
Поля:
|
||||
|
||||
| Field | Type | What it means |
|
||||
| --------------- | ---------- | ------------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Префікси, що зіставляються через `startsWith` зі скороченими id моделей. |
|
||||
| `modelPatterns` | `string[]` | Джерела regex, що зіставляються зі скороченими id моделей після видалення суфікса профілю. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| --------------- | ---------- | ----------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Префікси, які зіставляються через `startsWith` зі скороченими id моделей. |
|
||||
| `modelPatterns` | `string[]` | Джерела regex, які зіставляються зі скороченими id моделей після видалення суфікса профілю. |
|
||||
|
||||
Застарілі ключі можливостей верхнього рівня є deprecated. Використовуйте `openclaw doctor --fix`, щоб
|
||||
перемістити `speechProviders`, `realtimeTranscriptionProviders`,
|
||||
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
||||
`imageGenerationProviders`, `videoGenerationProviders`,
|
||||
`webFetchProviders` і `webSearchProviders` до `contracts`; звичайне
|
||||
`webFetchProviders` і `webSearchProviders` під `contracts`; звичайне
|
||||
завантаження маніфесту більше не трактує ці поля верхнього рівня як
|
||||
володіння можливостями.
|
||||
|
||||
## Маніфест проти package.json
|
||||
## Маніфест і `package.json`
|
||||
|
||||
Ці два файли виконують різні завдання:
|
||||
|
||||
| File | Use it for |
|
||||
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів auth і підказки UI, які мають існувати до запуску коду Plugin |
|
||||
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, що використовується для entrypoints, обмежень встановлення, setup або метаданих каталогу |
|
||||
| Файл | Для чого використовувати |
|
||||
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів автентифікації та підказки UI, які мають існувати до запуску коду Plugin |
|
||||
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, що використовується для точок входу, обмеження встановлення, setup або метаданих catalog |
|
||||
|
||||
Якщо ви не впевнені, куди має належати певний фрагмент метаданих, використовуйте таке правило:
|
||||
Якщо ви не впевнені, де має належати певний фрагмент метаданих, використовуйте таке правило:
|
||||
|
||||
- якщо OpenClaw повинен знати це до завантаження коду Plugin, розміщуйте це в `openclaw.plugin.json`
|
||||
- якщо це стосується пакування, entry-файлів або поведінки встановлення npm, розміщуйте це в `package.json`
|
||||
- якщо OpenClaw має знати це до завантаження коду Plugin, помістіть це в `openclaw.plugin.json`
|
||||
- якщо це стосується пакування, файлів входу або поведінки встановлення npm, помістіть це в `package.json`
|
||||
|
||||
### Поля `package.json`, які впливають на виявлення
|
||||
|
||||
Деякі метадані Plugin до запуску runtime навмисно зберігаються в `package.json` у блоці
|
||||
Деякі метадані Plugin до запуску середовища виконання навмисно зберігаються в `package.json` у блоці
|
||||
`openclaw`, а не в `openclaw.plugin.json`.
|
||||
|
||||
Важливі приклади:
|
||||
|
||||
| Field | What it means |
|
||||
| Поле | Що воно означає |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `openclaw.extensions` | Оголошує native entrypoint-и Plugin. Вони мають залишатися всередині каталогу пакета Plugin. |
|
||||
| `openclaw.runtimeExtensions` | Оголошує entrypoint-и built JavaScript runtime для встановлених пакетів. Вони мають залишатися всередині каталогу пакета Plugin. |
|
||||
| `openclaw.setupEntry` | Легковаговий entrypoint лише для setup, який використовується під час onboarding, відкладеного запуску каналу та read-only виявлення channel status/SecretRef. Має залишатися всередині каталогу пакета Plugin. |
|
||||
| `openclaw.runtimeSetupEntry` | Оголошує built JavaScript entrypoint setup для встановлених пакетів. Має залишатися всередині каталогу пакета Plugin. |
|
||||
| `openclaw.channel` | Недорогі метадані каталогу каналу, такі як labels, шляхи до документації, alias-и та текст для вибору. |
|
||||
| `openclaw.channel.configuredState` | Недорогі метадані перевірки configured-state, які можуть відповісти на питання «чи вже існує налаштування лише через env?» без завантаження повного runtime каналу. |
|
||||
| `openclaw.channel.persistedAuthState` | Недорогі метадані перевірки persisted-auth, які можуть відповісти на питання «чи вже є якийсь активний вхід?» без завантаження повного runtime каналу. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки для встановлення/оновлення вбудованих і зовнішньо опублікованих Plugin. |
|
||||
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
|
||||
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw із нижньою межею semver, наприклад `>=2026.3.22`. |
|
||||
| `openclaw.install.expectedIntegrity` | Очікуваний рядок integrity для npm dist, наприклад `sha512-...`; сценарії встановлення й оновлення перевіряють отриманий артефакт щодо нього. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення перевстановлення вбудованого Plugin, коли конфігурація невалідна. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дає змогу поверхням каналу лише для setup завантажуватися до повного Plugin каналу під час запуску. |
|
||||
| `openclaw.extensions` | Оголошує точки входу нативного Plugin. Має залишатися в межах каталогу пакета Plugin. |
|
||||
| `openclaw.runtimeExtensions` | Оголошує точки входу built JavaScript runtime для встановлених пакетів. Має залишатися в межах каталогу пакета Plugin. |
|
||||
| `openclaw.setupEntry` | Легковагова точка входу лише для setup, що використовується під час онбордингу, відкладеного запуску channel і виявлення статусу channel/SecretRef у режимі лише читання. Має залишатися в межах каталогу пакета Plugin. |
|
||||
| `openclaw.runtimeSetupEntry` | Оголошує built JavaScript точку входу setup для встановлених пакетів. Має залишатися в межах каталогу пакета Plugin. |
|
||||
| `openclaw.channel` | Легковагові метадані catalog channel, такі як мітки, шляхи до документації, псевдоніми та текст для вибору. |
|
||||
| `openclaw.channel.configuredState` | Легковагові метадані перевірки configured-state, які можуть відповісти на запитання «чи вже існує setup лише через env?» без завантаження повного середовища виконання channel. |
|
||||
| `openclaw.channel.persistedAuthState` | Легковагові метадані перевірки persisted-auth, які можуть відповісти на запитання «чи вже є хтось увійшов у систему?» без завантаження повного середовища виконання channel. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки встановлення/оновлення для bundle Plugin і Plugin, опублікованих зовні. |
|
||||
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
|
||||
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw із використанням нижньої межі semver, наприклад `>=2026.3.22`. |
|
||||
| `openclaw.install.expectedIntegrity` | Очікуваний рядок integrity npm dist, наприклад `sha512-...`; потоки встановлення й оновлення перевіряють отриманий артефакт за ним. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення через перевстановлення bundle Plugin, коли конфігурація невалідна. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє поверхням channel лише для setup завантажуватися до повного Plugin channel під час запуску. |
|
||||
|
||||
Метадані маніфесту визначають, які варіанти provider/channel/setup з’являються в
|
||||
onboarding до завантаження runtime. `package.json#openclaw.install` повідомляє
|
||||
onboarding, як отримати або ввімкнути цей Plugin, коли користувач вибирає один із цих
|
||||
варіантів. Не переносіть підказки встановлення до `openclaw.plugin.json`.
|
||||
онбордингу до завантаження середовища виконання. `package.json#openclaw.install` повідомляє
|
||||
онбордингу, як отримати або ввімкнути цей Plugin, коли користувач вибирає один із цих
|
||||
варіантів. Не переносіть підказки встановлення в `openclaw.plugin.json`.
|
||||
|
||||
`openclaw.install.minHostVersion` примусово застосовується під час встановлення та
|
||||
завантаження реєстру маніфестів. Невалідні значення відхиляються; новіші, але валідні значення пропускають
|
||||
`openclaw.install.minHostVersion` застосовується під час встановлення та завантаження
|
||||
реєстру маніфестів. Невалідні значення відхиляються; новіші, але валідні значення пропускають
|
||||
Plugin на старіших хостах.
|
||||
|
||||
Точне закріплення версії npm уже міститься в `npmSpec`, наприклад
|
||||
`"npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3"`. Офіційні записи зовнішнього каталогу
|
||||
мають поєднувати точні специфікації з `expectedIntegrity`, щоб сценарії оновлення завершувалися безпечно, якщо отриманий npm-артефакт більше не відповідає закріпленому релізу.
|
||||
Інтерактивний onboarding усе ще пропонує довірені npm-специфікації реєстру, включно з простими назвами пакетів і dist-tag, для сумісності. Діагностика каталогу може
|
||||
розрізняти точні, плаваючі, закріплені integrity, без integrity, з невідповідністю назви пакета та невалідні джерела default-choice. Вона також попереджає, коли
|
||||
`expectedIntegrity` присутній, але немає валідного npm-джерела, яке можна ним закріпити.
|
||||
`"npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3"`. Офіційні записи зовнішнього catalog
|
||||
повинні поєднувати точні специфікації з `expectedIntegrity`, щоб потоки оновлення завершувалися
|
||||
безпечним відхиленням, якщо отриманий npm-артефакт більше не відповідає закріпленому релізу.
|
||||
Інтерактивний онбординг, як і раніше, пропонує npm-специфікації довіреного реєстру, включно з
|
||||
простими назвами пакетів і dist-tag, для сумісності. Діагностика catalog може
|
||||
розрізняти точні, плаваючі, закріплені integrity, без integrity, із невідповідністю
|
||||
назви пакета та з невалідним default-choice джерела. Вона також попереджає, коли
|
||||
`expectedIntegrity` присутній, але немає валідного джерела npm, яке можна ним закріпити.
|
||||
Коли `expectedIntegrity` присутній,
|
||||
сценарії встановлення/оновлення примусово його перевіряють; коли його пропущено, результат розв’язання реєстру
|
||||
потоки встановлення/оновлення застосовують його; коли його пропущено, розв’язання реєстру
|
||||
фіксується без закріплення integrity.
|
||||
|
||||
Канальні Plugin мають надавати `openclaw.setupEntry`, коли status, список каналів
|
||||
або сканування SecretRef мають визначити налаштовані акаунти без завантаження повного
|
||||
runtime. Entry setup має надавати метадані каналу плюс безпечні для setup адаптери конфігурації,
|
||||
status і секретів; клієнти мережі, слухачі gateway і runtime транспорту слід залишати в основному entrypoint extension.
|
||||
Plugin channel мають надавати `openclaw.setupEntry`, коли статус, список channel
|
||||
або сканування SecretRef мають ідентифікувати налаштовані облікові записи без завантаження повного
|
||||
середовища виконання. Точка входу setup має надавати метадані channel разом із безпечними для setup adapter
|
||||
конфігурації, статусу та секретів; мережеві клієнти, слухачі Gateway і
|
||||
транспортні середовища виконання залишайте в основній точці входу розширення.
|
||||
|
||||
Поля entrypoint runtime не перевизначають перевірки меж пакета для полів
|
||||
entrypoint вихідного коду. Наприклад, `openclaw.runtimeExtensions` не може зробити
|
||||
Поля точки входу runtime не скасовують перевірки меж пакета для полів
|
||||
вихідної точки входу. Наприклад, `openclaw.runtimeExtensions` не може зробити
|
||||
завантажуваним шлях `openclaw.extensions`, що виходить за межі.
|
||||
|
||||
`openclaw.install.allowInvalidConfigRecovery` навмисно є вузьким. Воно не
|
||||
робить довільні зламані конфігурації придатними до встановлення. Сьогодні воно дозволяє лише сценаріям встановлення відновлюватися після конкретних збоїв оновлення застарілих вбудованих Plugin, таких як
|
||||
відсутній шлях до вбудованого Plugin або застарілий запис `channels.<id>` для того самого
|
||||
вбудованого Plugin. Непов’язані помилки конфігурації, як і раніше, блокують встановлення і спрямовують операторів до `openclaw doctor --fix`.
|
||||
робить довільні зламані конфігурації придатними до встановлення. Сьогодні воно лише дозволяє
|
||||
потокам встановлення відновлюватися після певних застарілих збоїв оновлення bundle Plugin,
|
||||
таких як відсутній шлях bundle Plugin або застарілий запис `channels.<id>` для того самого
|
||||
bundle Plugin. Непов’язані помилки конфігурації, як і раніше, блокують встановлення та спрямовують операторів
|
||||
до `openclaw doctor --fix`.
|
||||
|
||||
`openclaw.channel.persistedAuthState` — це метадані пакета для крихітного модуля перевірки:
|
||||
`openclaw.channel.persistedAuthState` — це метадані пакета для крихітного модуля
|
||||
перевірки:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -636,12 +654,12 @@ entrypoint вихідного коду. Наприклад, `openclaw.runtimeExt
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це, коли сценаріям setup, doctor або configured-state потрібна недорога перевірка auth
|
||||
типу так/ні до завантаження повного Plugin каналу. Цільовий export має бути невеликою
|
||||
функцією, яка лише читає збережений стан; не маршрутизуйте її через повний barrel
|
||||
runtime каналу.
|
||||
Використовуйте це, коли потокам setup, doctor або configured-state потрібна дешева перевірка
|
||||
автентифікації у форматі так/ні до завантаження повного Plugin channel. Цільовий export має бути невеликою
|
||||
функцією, яка читає лише persisted state; не спрямовуйте її через повний barrel
|
||||
середовища виконання channel.
|
||||
|
||||
`openclaw.channel.configuredState` використовує ту саму форму для недорогих перевірок
|
||||
`openclaw.channel.configuredState` має ту саму форму для дешевих перевірок
|
||||
configured-state лише через env:
|
||||
|
||||
```json
|
||||
@ -658,57 +676,58 @@ configured-state лише через env:
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це, коли канал може відповісти на configured-state на основі env або інших невеликих
|
||||
вхідних даних, не пов’язаних із runtime. Якщо перевірка потребує повного розв’язання конфігурації або реального
|
||||
runtime каналу, залишайте цю логіку в hook `config.hasConfiguredState` Plugin.
|
||||
Використовуйте це, коли channel може визначити configured-state через env або інші невеликі
|
||||
вхідні дані без середовища виконання. Якщо перевірка потребує повного розв’язання конфігурації або реального
|
||||
середовища виконання channel, натомість залиште цю логіку в hook `config.hasConfiguredState`
|
||||
Plugin.
|
||||
|
||||
## Пріоритет виявлення (дубльовані id Plugin)
|
||||
|
||||
OpenClaw виявляє Plugin з кількох коренів (вбудовані, глобальне встановлення, workspace, явні шляхи, вибрані конфігурацією). Якщо два виявлені Plugin мають однаковий `id`, зберігається лише маніфест із **найвищим пріоритетом**; дублікати з нижчим пріоритетом відкидаються замість паралельного завантаження.
|
||||
OpenClaw виявляє Plugin із кількох коренів (bundle, global install, workspace, явні шляхи, вибрані конфігурацією). Якщо два знайдені Plugin мають однаковий `id`, зберігається лише маніфест із **найвищим пріоритетом**; дублікати з нижчим пріоритетом відкидаються замість завантаження поруч із ним.
|
||||
|
||||
Пріоритет, від найвищого до найнижчого:
|
||||
|
||||
1. **Вибраний конфігурацією** — шлях, явно закріплений у `plugins.entries.<id>`
|
||||
2. **Вбудований** — Plugin, що постачаються з OpenClaw
|
||||
3. **Глобальне встановлення** — Plugin, встановлені в глобальний корінь Plugin OpenClaw
|
||||
1. **Config-selected** — шлях, явно закріплений у `plugins.entries.<id>`
|
||||
2. **Bundled** — Plugin, що постачаються разом з OpenClaw
|
||||
3. **Global install** — Plugin, установлені в глобальний корінь Plugin OpenClaw
|
||||
4. **Workspace** — Plugin, виявлені відносно поточного workspace
|
||||
|
||||
Наслідки:
|
||||
|
||||
- Форкнута або застаріла копія вбудованого Plugin у workspace не зможе затінити вбудовану збірку.
|
||||
- Щоб справді перевизначити вбудований Plugin локальним, закріпіть його через `plugins.entries.<id>`, щоб він переміг за пріоритетом, а не покладайтесь на виявлення у workspace.
|
||||
- Відкидання дублікатів записується в лог, щоб Doctor і діагностика запуску могли вказати на відкинуту копію.
|
||||
- Форкована або застаріла копія bundle Plugin у workspace не перекриє bundle-збірку.
|
||||
- Щоб справді перевизначити bundle Plugin локальним, закріпіть його через `plugins.entries.<id>`, щоб він переміг за пріоритетом, а не покладайтеся на виявлення у workspace.
|
||||
- Відкидання дублікатів журналюється, щоб Doctor і діагностика запуску могли вказати на відкинуту копію.
|
||||
|
||||
## Вимоги до JSON Schema
|
||||
|
||||
- **Кожен Plugin повинен постачатися з JSON Schema**, навіть якщо він не приймає конфігурацію.
|
||||
- Порожня schema прийнятна (наприклад, `{ "type": "object", "additionalProperties": false }`).
|
||||
- Schema проходять валідацію під час читання/запису конфігурації, а не під час runtime.
|
||||
- **Кожен Plugin повинен містити JSON Schema**, навіть якщо він не приймає конфігурацію.
|
||||
- Порожня схема допустима (наприклад, `{ "type": "object", "additionalProperties": false }`).
|
||||
- Схеми перевіряються під час читання/запису конфігурації, а не під час виконання.
|
||||
|
||||
## Поведінка валідації
|
||||
|
||||
- Невідомі ключі `channels.*` — це **помилки**, якщо тільки id каналу не оголошено в
|
||||
маніфесті Plugin.
|
||||
- Невідомі ключі `channels.*` — це **помилки**, якщо тільки id channel не оголошено
|
||||
в маніфесті Plugin.
|
||||
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` і `plugins.slots.*`
|
||||
мають посилатися на **виявлювані** id Plugin. Невідомі id — це **помилки**.
|
||||
- Якщо Plugin встановлено, але він має зламаний або відсутній маніфест чи schema,
|
||||
повинні посилатися на **виявлювані** id Plugin. Невідомі id — це **помилки**.
|
||||
- Якщо Plugin установлено, але він має зламаний або відсутній маніфест чи схему,
|
||||
валідація завершується помилкою, а Doctor повідомляє про помилку Plugin.
|
||||
- Якщо конфігурація Plugin існує, але Plugin **вимкнений**, конфігурація зберігається, і
|
||||
в Doctor + логах з’являється **попередження**.
|
||||
- Якщо конфігурація Plugin існує, але Plugin **вимкнено**, конфігурація зберігається, і
|
||||
у Doctor + журналах показується **попередження**.
|
||||
|
||||
Повну schema `plugins.*` див. у [Configuration reference](/uk/gateway/configuration).
|
||||
Дивіться [Configuration reference](/uk/gateway/configuration) для повної схеми `plugins.*`.
|
||||
|
||||
## Примітки
|
||||
|
||||
- Маніфест **обов’язковий для нативних Plugin OpenClaw**, включно з локальними завантаженнями з файлової системи. Runtime, як і раніше, завантажує модуль Plugin окремо; маніфест потрібен лише для виявлення + валідації.
|
||||
- Нативні маніфести парсяться за допомогою JSON5, тому коментарі, кінцеві коми та ключі без лапок дозволені, якщо фінальне значення все одно є об’єктом.
|
||||
- Завантажувач маніфесту читає лише задокументовані поля маніфесту. Уникайте власних ключів верхнього рівня.
|
||||
- Маніфест **обов’язковий для нативних Plugin OpenClaw**, включно із завантаженням із локальної файлової системи. Середовище виконання, як і раніше, завантажує модуль Plugin окремо; маніфест використовується лише для виявлення + валідації.
|
||||
- Нативні маніфести розбираються за допомогою JSON5, тому коментарі, кінцеві коми та ключі без лапок допускаються, якщо кінцеве значення все одно є об’єктом.
|
||||
- Завантажувач маніфесту читає лише задокументовані поля маніфесту. Уникайте користувацьких ключів верхнього рівня.
|
||||
- `channels`, `providers`, `cliBackends` і `skills` можна не вказувати, якщо Plugin їх не потребує.
|
||||
- `providerDiscoveryEntry` має залишатися легковаговим і не повинен імпортувати широкий runtime-код; використовуйте його для статичних метаданих каталогу провайдера або вузьких дескрипторів виявлення, а не для виконання під час запиту.
|
||||
- `providerDiscoveryEntry` має залишатися легковаговим і не повинен імпортувати широке середовище виконання; використовуйте його для статичних метаданих catalog provider або вузьких дескрипторів виявлення, а не для виконання під час запиту.
|
||||
- Ексклюзивні типи Plugin вибираються через `plugins.slots.*`: `kind: "memory"` через `plugins.slots.memory`, `kind: "context-engine"` через `plugins.slots.contextEngine` (типово `legacy`).
|
||||
- Метадані env vars (`providerAuthEnvVars`, `channelEnvVars`) мають лише декларативний характер. Status, audit, валідація доставки Cron та інші read-only surfaces усе одно застосовують довіру до Plugin і політику ефективної активації, перш ніж вважати env var налаштованою.
|
||||
- Для метаданих runtime wizard, які потребують коду провайдера, див. [Provider runtime hooks](/uk/plugins/architecture-internals#provider-runtime-hooks).
|
||||
- Якщо ваш Plugin залежить від native module, задокументуйте кроки збірки та всі вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts` + `pnpm rebuild <package>`).
|
||||
- Env-метадані (`providerAuthEnvVars`, `channelEnvVars`) є лише декларативними. Статус, аудит, валідація доставлення Cron та інші поверхні лише для читання, як і раніше, застосовують політику довіри до Plugin та ефективної активації, перш ніж вважати env var налаштованою.
|
||||
- Для метаданих wizard під час виконання, які потребують коду provider, дивіться [Provider runtime hooks](/uk/plugins/architecture-internals#provider-runtime-hooks).
|
||||
- Якщо ваш Plugin залежить від нативних модулів, задокументуйте кроки збірки та будь-які вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts` + `pnpm rebuild <package>`).
|
||||
|
||||
## Пов’язане
|
||||
|
||||
@ -720,6 +739,6 @@ OpenClaw виявляє Plugin з кількох коренів (вбудова
|
||||
Внутрішня архітектура та модель можливостей.
|
||||
</Card>
|
||||
<Card title="Огляд SDK" href="/uk/plugins/sdk-overview" icon="book">
|
||||
Довідка по SDK Plugin і імпортах subpath.
|
||||
Довідник SDK Plugin та імпорти підшляхів.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user