chore(i18n): refresh uk translations
This commit is contained in:
parent
4803f541a0
commit
ad50d77d93
File diff suppressed because it is too large
Load Diff
@ -1,64 +1,65 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви створюєте Plugin для OpenClaw
|
||||
- Вам потрібно постачати схему конфігурації Plugin або налагоджувати помилки валідації Plugin
|
||||
- Ви створюєте плагін OpenClaw
|
||||
- Вам потрібно надати схему конфігурації плагіна або налагодити помилки валідації плагіна
|
||||
summary: Вимоги до маніфесту Plugin і схеми JSON (сувора валідація конфігурації)
|
||||
title: Маніфест Plugin
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T16:00:11Z"
|
||||
generated_at: "2026-04-24T16:05:24Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3ad8f4d82624420f97f38ba5f7b1de12dbf88d4cc4fb37a52ae31cbb838ebabf
|
||||
source_hash: 44eca8a54f22735ae657efde088a7951eeb79dfbb48a25d478c7e9a3f699cce0
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Ця сторінка призначена лише для **власного маніфесту Plugin OpenClaw**.
|
||||
Ця сторінка призначена лише для **власного маніфесту плагіна OpenClaw**.
|
||||
|
||||
Для сумісних макетів пакетів див. [Пакети Plugin](/uk/plugins/bundles).
|
||||
Сумісні макети bundle дивіться в [Plugin bundles](/uk/plugins/bundles).
|
||||
|
||||
Сумісні формати пакетів використовують інші файли маніфесту:
|
||||
Сумісні формати bundle використовують інші файли маніфесту:
|
||||
|
||||
- Пакет Codex: `.codex-plugin/plugin.json`
|
||||
- Пакет Claude: `.claude-plugin/plugin.json` або типовий макет компонента Claude
|
||||
- bundle Codex: `.codex-plugin/plugin.json`
|
||||
- bundle Claude: `.claude-plugin/plugin.json` або типовий макет компонента Claude
|
||||
без маніфесту
|
||||
- Пакет Cursor: `.cursor-plugin/plugin.json`
|
||||
- bundle Cursor: `.cursor-plugin/plugin.json`
|
||||
|
||||
OpenClaw також автоматично виявляє ці макети пакетів, але вони не проходять валідацію
|
||||
OpenClaw також автоматично визначає ці макети bundle, але вони не проходять валідацію
|
||||
за схемою `openclaw.plugin.json`, описаною тут.
|
||||
|
||||
Для сумісних пакетів OpenClaw наразі зчитує метадані пакета разом із оголошеними
|
||||
коренями skill, коренями команд Claude, типовими значеннями Claude-пакета з
|
||||
`settings.json`, типовими значеннями LSP для Claude-пакета та підтримуваними
|
||||
наборами хуків, якщо макет відповідає очікуванням середовища виконання OpenClaw.
|
||||
Для сумісних bundle OpenClaw наразі читає метадані bundle разом з оголошеними
|
||||
коренями Skills, коренями команд Claude, типовими значеннями Claude bundle `settings.json`,
|
||||
типовими значеннями Claude bundle LSP і підтримуваними пакетами хуків, коли макет відповідає
|
||||
очікуванням рантайму OpenClaw.
|
||||
|
||||
Кожен власний Plugin OpenClaw **повинен** постачатися з файлом `openclaw.plugin.json` у
|
||||
**корені plugin**. OpenClaw використовує цей маніфест для валідації конфігурації
|
||||
**без виконання коду plugin**. Відсутні або недійсні маніфести вважаються
|
||||
помилками plugin і блокують валідацію конфігурації.
|
||||
Кожен власний плагін OpenClaw **повинен** постачатися з файлом `openclaw.plugin.json` у
|
||||
**корені плагіна**. OpenClaw використовує цей маніфест для валідації конфігурації
|
||||
**без виконання коду плагіна**. Відсутні або невалідні маніфести вважаються
|
||||
помилками плагіна і блокують валідацію конфігурації.
|
||||
|
||||
Див. повний посібник по системі plugin: [Plugins](/uk/tools/plugin).
|
||||
Дивіться повний посібник із системи плагінів: [Plugins](/uk/tools/plugin).
|
||||
Щодо власної моделі можливостей і поточних рекомендацій із зовнішньої сумісності:
|
||||
[Модель можливостей](/uk/plugins/architecture#public-capability-model).
|
||||
[Capability model](/uk/plugins/architecture#public-capability-model).
|
||||
|
||||
## Що робить цей файл
|
||||
|
||||
`openclaw.plugin.json` — це метадані, які OpenClaw читає **до завантаження коду
|
||||
вашого plugin**. Усе нижче має бути достатньо легким для перевірки без запуску
|
||||
середовища виконання plugin.
|
||||
вашого плагіна**. Усе нижче має бути достатньо легким для перевірки без запуску
|
||||
рантайму плагіна.
|
||||
|
||||
**Використовуйте його для:**
|
||||
|
||||
- ідентифікації plugin, валідації конфігурації та підказок UI для конфігурації
|
||||
- метаданих автентифікації, онбордингу та налаштування (псевдонім, автоувімкнення, змінні середовища provider, варіанти автентифікації)
|
||||
- підказок активації для поверхонь control-plane
|
||||
- ідентичності плагіна, валідації конфігурації та підказок для UI конфігурації
|
||||
- метаданих автентифікації, онбордингу та налаштування (аліас, автоувімкнення, змінні середовища провайдера, варіанти автентифікації)
|
||||
- підказок активації для поверхонь control plane
|
||||
- скороченого володіння сімействами моделей
|
||||
- статичних знімків володіння можливостями (`contracts`)
|
||||
- метаданих QA runner, які може перевіряти спільний хост `openclaw qa`
|
||||
- метаданих конфігурації, специфічних для channel, що об’єднуються в поверхнях каталогу та валідації
|
||||
- метаданих конфігурації, специфічних для каналу, які об’єднуються в поверхні каталогу та валідації
|
||||
|
||||
**Не використовуйте його для:** реєстрації поведінки під час виконання, оголошення
|
||||
точок входу коду або метаданих встановлення npm. Це має належати до коду вашого plugin і `package.json`.
|
||||
**Не використовуйте його для:** реєстрації поведінки рантайму, оголошення
|
||||
точок входу коду або метаданих встановлення npm. Це належить коду вашого плагіна
|
||||
та `package.json`.
|
||||
|
||||
## Мінімальний приклад
|
||||
|
||||
@ -73,7 +74,7 @@ OpenClaw також автоматично виявляє ці макети па
|
||||
}
|
||||
```
|
||||
|
||||
## Розгорнутий приклад
|
||||
## Розширений приклад
|
||||
|
||||
```json
|
||||
{
|
||||
@ -138,68 +139,68 @@ OpenClaw також автоматично виявляє ці макети па
|
||||
|
||||
## Довідник полів верхнього рівня
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------------------------ | ----------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `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 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[]` | Метадані хостів endpoint/baseUrl, що належать маніфесту, для маршрутів provider, які ядро повинно класифікувати до завантаження середовища виконання provider. |
|
||||
| `cliBackends` | Ні | `string[]` | Id backend CLI, якими володіє цей plugin. Використовується для автоактивації під час запуску на основі явних посилань у конфігурації. |
|
||||
| `syntheticAuthRefs` | Ні | `string[]` | Посилання на provider або backend CLI, для яких синтетичний хук автентифікації, що належить plugin, слід перевіряти під час холодного виявлення моделей до завантаження середовища виконання. |
|
||||
| `nonSecretAuthMarkers` | Ні | `string[]` | Значення-заповнювачі API-ключів, що належать вбудованому plugin і представляють несекретний локальний стан, OAuth або ambient credential state. |
|
||||
| `commandAliases` | Ні | `object[]` | Назви команд, якими володіє цей plugin і які мають створювати діагностику конфігурації та CLI з урахуванням plugin до завантаження середовища виконання. |
|
||||
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Полегшені метадані змінних середовища автентифікації provider, які OpenClaw може перевіряти без завантаження коду plugin. |
|
||||
| `providerAuthAliases` | Ні | `Record<string, string>` | Id provider, які мають повторно використовувати інший id provider для пошуку автентифікації, наприклад coding provider, що використовує той самий API-ключ базового provider і профілі автентифікації. |
|
||||
| `channelEnvVars` | Ні | `Record<string, string[]>` | Полегшені метадані змінних середовища channel, які OpenClaw може перевіряти без завантаження коду plugin. Використовуйте це для налаштування channel через env або поверхонь автентифікації, які мають бачити типові помічники запуску/конфігурації. |
|
||||
| `providerAuthChoices` | Ні | `object[]` | Полегшені метадані варіантів автентифікації для селекторів онбордингу, вибору preferred provider та простого зв’язування прапорців CLI. |
|
||||
| `activation` | Ні | `object` | Полегшені метадані планувальника активації для завантаження, що запускається provider, командою, channel, маршрутом і можливостями. Лише метадані; фактичною поведінкою як і раніше володіє середовище виконання plugin. |
|
||||
| `setup` | Ні | `object` | Полегшені дескриптори налаштування/онбордингу, які поверхні виявлення та налаштування можуть перевіряти без завантаження середовища виконання plugin. |
|
||||
| `qaRunners` | Ні | `object[]` | Полегшені дескриптори QA runner, які використовуються спільним хостом `openclaw qa` до завантаження середовища виконання plugin. |
|
||||
| `contracts` | Ні | `object` | Статичний знімок вбудованих можливостей для зовнішніх хуків автентифікації, speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search і володіння інструментами. |
|
||||
| `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, заповнювачі та підказки чутливості для полів конфігурації. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------------------------ | ----------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Так | `string` | Канонічний ідентифікатор плагіна. Саме цей ідентифікатор використовується в `plugins.entries.<id>`. |
|
||||
| `configSchema` | Так | `object` | Вбудована схема JSON Schema для конфігурації цього плагіна. |
|
||||
| `enabledByDefault` | Ні | `true` | Позначає вбудований плагін як увімкнений за замовчуванням. Не вказуйте його або встановіть будь-яке значення, відмінне від `true`, щоб плагін за замовчуванням залишався вимкненим. |
|
||||
| `legacyPluginIds` | Ні | `string[]` | Застарілі ідентифікатори, які нормалізуються до цього канонічного ідентифікатора плагіна. |
|
||||
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Ідентифікатори провайдерів, які мають автоматично вмикати цей плагін, коли автентифікація, конфігурація або посилання на моделі згадують їх. |
|
||||
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує ексклюзивний тип плагіна, який використовується `plugins.slots.*`. |
|
||||
| `channels` | Ні | `string[]` | Ідентифікатори каналів, якими володіє цей плагін. Використовуються для виявлення та валідації конфігурації. |
|
||||
| `providers` | Ні | `string[]` | Ідентифікатори провайдерів, якими володіє цей плагін. |
|
||||
| `providerDiscoveryEntry` | Ні | `string` | Шлях до легковагового модуля виявлення провайдера, відносний до кореня плагіна, для метаданих каталогу провайдерів у межах маніфесту, які можна завантажити без активації повного рантайму плагіна. |
|
||||
| `modelSupport` | Ні | `object` | Скорочені метадані сімейств моделей, якими володіє маніфест, що використовуються для автозавантаження плагіна до запуску рантайму. |
|
||||
| `providerEndpoints` | Ні | `object[]` | Метадані хостів endpoint/baseUrl, якими володіє маніфест, для маршрутів провайдерів, які ядро має класифікувати до завантаження рантайму провайдера. |
|
||||
| `cliBackends` | Ні | `string[]` | Ідентифікатори backend CLI, якими володіє цей плагін. Використовуються для автоактивації під час запуску на основі явних посилань у конфігурації. |
|
||||
| `syntheticAuthRefs` | Ні | `string[]` | Посилання на провайдери або backend CLI, для яких під час холодного виявлення моделей до завантаження рантайму слід перевіряти синтетичний хук автентифікації, що належить плагіну. |
|
||||
| `nonSecretAuthMarkers` | Ні | `string[]` | Значення-заповнювачі API key, що належать вбудованому плагіну і представляють несекретний локальний стан, OAuth або ambient credentials. |
|
||||
| `commandAliases` | Ні | `object[]` | Назви команд, якими володіє цей плагін і які мають створювати діагностику конфігурації та CLI з урахуванням плагіна до завантаження рантайму. |
|
||||
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легковагові метадані змінних середовища автентифікації провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
|
||||
| `providerAuthAliases` | Ні | `Record<string, string>` | Ідентифікатори провайдерів, які мають повторно використовувати інший ідентифікатор провайдера для пошуку автентифікації, наприклад провайдер кодування, який спільно використовує API key базового провайдера та профілі автентифікації. |
|
||||
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легковагові метадані змінних середовища каналу, які OpenClaw може перевіряти без завантаження коду плагіна. Використовуйте це для налаштування каналів через env або поверхонь автентифікації, які мають бачити загальні помічники запуску/конфігурації. |
|
||||
| `providerAuthChoices` | Ні | `object[]` | Легковагові метадані варіантів автентифікації для вибору під час онбордингу, визначення бажаного провайдера та простого зв’язування з прапорцями CLI. |
|
||||
| `activation` | Ні | `object` | Легковагові метадані планувальника активації для завантаження, що запускається провайдерами, командами, каналами, маршрутами та можливостями. Лише метадані; фактичною поведінкою все одно володіє рантайм плагіна. |
|
||||
| `setup` | Ні | `object` | Легковагові дескриптори налаштування/онбордингу, які поверхні виявлення та налаштування можуть перевіряти без завантаження рантайму плагіна. |
|
||||
| `qaRunners` | Ні | `object[]` | Легковагові дескриптори QA runner, які використовуються спільним хостом `openclaw qa` до завантаження рантайму плагіна. |
|
||||
| `contracts` | Ні | `object` | Статичний знімок можливостей вбудованого плагіна для зовнішніх хуків автентифікації, мовлення, транскрибування в реальному часі, голосу в реальному часі, розуміння медіа, генерації зображень, генерації музики, генерації відео, web-fetch, вебпошуку та володіння інструментами. |
|
||||
| `mediaUnderstandingProviderMetadata` | Ні | `Record<string, object>` | Легковагові типові значення для розуміння медіа для ідентифікаторів провайдерів, оголошених у `contracts.mediaUnderstandingProviders`. |
|
||||
| `channelConfigs` | Ні | `Record<string, object>` | Метадані конфігурації каналу, якими володіє маніфест і які об’єднуються в поверхні виявлення та валідації до завантаження рантайму. |
|
||||
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження, відносні до кореня плагіна. |
|
||||
| `name` | Ні | `string` | Людинозрозуміла назва плагіна. |
|
||||
| `description` | Ні | `string` | Короткий опис, що показується в поверхнях плагіна. |
|
||||
| `version` | Ні | `string` | Інформаційна версія плагіна. |
|
||||
| `uiHints` | Ні | `Record<string, object>` | Підписи UI, placeholders і підказки щодо чутливості для полів конфігурації. |
|
||||
|
||||
## Довідник `providerAuthChoices`
|
||||
|
||||
Кожен запис `providerAuthChoices` описує один варіант онбордингу або автентифікації.
|
||||
OpenClaw читає це до завантаження середовища виконання provider.
|
||||
OpenClaw читає це до завантаження рантайму провайдера.
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| --------------------- | ----------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | Так | `string` | Id provider, до якого належить цей варіант. |
|
||||
| `method` | Так | `string` | Id методу автентифікації, до якого слід маршрутизувати. |
|
||||
| `choiceId` | Так | `string` | Стабільний id варіанта автентифікації, який використовується в потоках онбордингу та CLI. |
|
||||
| `choiceLabel` | Ні | `string` | Підпис для користувача. Якщо не вказано, OpenClaw використовує `choiceId`. |
|
||||
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для селектора. |
|
||||
| `assistantPriority` | Ні | `number` | Менші значення сортуються раніше в інтерактивних селекторах, керованих помічником. |
|
||||
| `assistantVisibility` | Ні | `"visible"` \| `"manual-only"` | Приховує варіант із селекторів помічника, але все ще дозволяє ручний вибір через 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` | Ідентифікатор провайдера, до якого належить цей варіант. |
|
||||
| `method` | Так | `string` | Ідентифікатор методу автентифікації, до якого слід маршрутизувати. |
|
||||
| `choiceId` | Так | `string` | Стабільний ідентифікатор варіанта автентифікації, що використовується в потоках онбордингу та CLI. |
|
||||
| `choiceLabel` | Ні | `string` | Підпис для користувача. Якщо не вказано, OpenClaw використовує `choiceId`. |
|
||||
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для списку вибору. |
|
||||
| `assistantPriority` | Ні | `number` | Менші значення сортуються раніше в інтерактивних списках вибору, керованих асистентом. |
|
||||
| `assistantVisibility` | Ні | `"visible"` \| `"manual-only"` | Приховує варіант зі списків вибору асистента, але все ще дозволяє ручний вибір через CLI. |
|
||||
| `deprecatedChoiceIds` | Ні | `string[]` | Застарілі ідентифікатори варіантів, які мають переспрямовувати користувачів на цей варіант-заміну. |
|
||||
| `groupId` | Ні | `string` | Необов’язковий ідентифікатор групи для групування пов’язаних варіантів. |
|
||||
| `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`, коли plugin володіє назвою команди під час виконання, яку користувачі можуть
|
||||
помилково вказати в `plugins.allow` або спробувати запустити як кореневу команду CLI. OpenClaw
|
||||
використовує ці метадані для діагностики без імпорту коду середовища виконання plugin.
|
||||
Використовуйте `commandAliases`, коли плагін володіє назвою команди рантайму, яку користувачі можуть
|
||||
помилково додати в `plugins.allow` або спробувати запустити як кореневу команду CLI. OpenClaw
|
||||
використовує ці метадані для діагностики без імпорту коду рантайму плагіна.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -213,35 +214,34 @@ OpenClaw читає це до завантаження середовища ви
|
||||
}
|
||||
```
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------ | ----------- | ----------------- | ---------------------------------------------------------------------------- |
|
||||
| `name` | Так | `string` | Назва команди, що належить цьому plugin. |
|
||||
| `kind` | Ні | `"runtime-slash"` | Позначає псевдонім як slash-команду чату, а не кореневу команду CLI. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------ | ----------- | ----------------- | ------------------------------------------------------------------------------ |
|
||||
| `name` | Так | `string` | Назва команди, яка належить цьому плагіну. |
|
||||
| `kind` | Ні | `"runtime-slash"` | Позначає аліас як chat slash command, а не як кореневу команду CLI. |
|
||||
| `cliCommand` | Ні | `string` | Пов’язана коренева команда CLI, яку слід запропонувати для операцій CLI, якщо вона існує. |
|
||||
|
||||
## Довідник `activation`
|
||||
|
||||
Використовуйте `activation`, коли plugin може недорого оголосити, які події control-plane
|
||||
Використовуйте `activation`, коли плагін може дешево оголосити, які події control plane
|
||||
мають включати його в план активації/завантаження.
|
||||
|
||||
Цей блок є метаданими планувальника, а не API життєвого циклу. Він не реєструє
|
||||
поведінку під час виконання, не замінює `register(...)` і не гарантує, що
|
||||
код plugin уже було виконано. Планувальник активації використовує ці поля для
|
||||
звуження списку кандидатів plugin перед поверненням до наявних метаданих
|
||||
володіння з маніфесту, таких як `providers`, `channels`, `commandAliases`, `setup.providers`,
|
||||
поведінку рантайму, не замінює `register(...)` і не гарантує, що
|
||||
код плагіна вже було виконано. Планувальник активації використовує ці поля, щоб
|
||||
звузити коло кандидатів на плагіни, перш ніж повертатися до наявних
|
||||
метаданих володіння в маніфесті, таких як `providers`, `channels`, `commandAliases`, `setup.providers`,
|
||||
`contracts.tools` і хуки.
|
||||
|
||||
Надавайте перевагу найвужчим метаданим, які вже описують володіння. Використовуйте
|
||||
`providers`, `channels`, `commandAliases`, дескриптори setup або `contracts`,
|
||||
коли ці поля виражають відповідний зв’язок. Використовуйте `activation` для додаткових підказок
|
||||
планувальника, які не можуть бути представлені цими полями володіння.
|
||||
коли ці поля виражають зв’язок. Використовуйте `activation` для додаткових підказок планувальника,
|
||||
які не можна подати через ці поля володіння.
|
||||
|
||||
Цей блок містить лише метадані. Він не реєструє поведінку під час виконання і
|
||||
не замінює `register(...)`, `setupEntry` або інші точки входу runtime/plugin.
|
||||
Поточні споживачі використовують його як підказку для звуження перед ширшим
|
||||
завантаженням plugin, тому відсутність метаданих активації зазвичай лише впливає на продуктивність;
|
||||
це не має змінювати коректність, доки ще існують застарілі fallback-механізми
|
||||
володіння з маніфесту.
|
||||
Цей блок є лише метаданими. Він не реєструє поведінку рантайму і не
|
||||
замінює `register(...)`, `setupEntry` або інші точки входу рантайму/плагіна.
|
||||
Поточні споживачі використовують його як підказку для звуження кола кандидатів перед ширшим завантаженням плагінів, тож
|
||||
відсутність метаданих активації зазвичай впливає лише на продуктивність; вона не повинна
|
||||
змінювати коректність, поки все ще існують застарілі fallback-механізми володіння через маніфест.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -255,36 +255,35 @@ OpenClaw читає це до завантаження середовища ви
|
||||
}
|
||||
```
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ---------------- | ----------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `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. За можливості надавайте перевагу вужчим полям. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ---------------- | ----------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `onProviders` | Ні | `string[]` | Ідентифікатори провайдерів, які мають включати цей плагін у плани активації/завантаження. |
|
||||
| `onCommands` | Ні | `string[]` | Ідентифікатори команд, які мають включати цей плагін у плани активації/завантаження. |
|
||||
| `onChannels` | Ні | `string[]` | Ідентифікатори каналів, які мають включати цей плагін у плани активації/завантаження. |
|
||||
| `onRoutes` | Ні | `string[]` | Типи маршрутів, які мають включати цей плагін у плани активації/завантаження. |
|
||||
| `onCapabilities` | Ні | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Загальні підказки можливостей, які використовуються плануванням активації control plane. Коли можливо, надавайте перевагу вужчим полям. |
|
||||
|
||||
Поточні активні споживачі:
|
||||
Поточні live-споживачі:
|
||||
|
||||
- планування CLI, запущене командою, повертається до застарілих
|
||||
- планування CLI, що запускається командою, повертається до застарілих
|
||||
`commandAliases[].cliCommand` або `commandAliases[].name`
|
||||
- планування setup/channel, запущене channel, повертається до застарілого
|
||||
володіння `channels[]`, якщо явні метадані активації channel відсутні
|
||||
- планування setup/runtime, запущене provider, повертається до застарілого
|
||||
володіння `providers[]` і `cliBackends[]` верхнього рівня, якщо явні метадані
|
||||
активації provider відсутні
|
||||
- планування setup/каналів, що запускається каналом, повертається до застарілого
|
||||
володіння `channels[]`, коли явні метадані активації каналу відсутні
|
||||
- планування setup/рантайму, що запускається провайдером, повертається до застарілого
|
||||
володіння `providers[]` і `cliBackends[]` верхнього рівня, коли явні метадані активації провайдера відсутні
|
||||
|
||||
Діагностика планувальника може розрізняти явні підказки активації та fallback
|
||||
до володіння з маніфесту. Наприклад, `activation-command-hint` означає, що
|
||||
Діагностика планувальника може розрізняти явні підказки активації та fallback до
|
||||
володіння через маніфест. Наприклад, `activation-command-hint` означає, що
|
||||
спрацювало `activation.onCommands`, тоді як `manifest-command-alias` означає, що
|
||||
планувальник натомість використав володіння через `commandAliases`. Ці мітки причин
|
||||
призначені для діагностики хоста та тестів; авторам plugin слід і надалі оголошувати ті метадані,
|
||||
планувальник замість цього використав володіння через `commandAliases`. Ці мітки причин призначені для
|
||||
діагностики хоста та тестів; авторам плагінів слід і надалі оголошувати ті метадані,
|
||||
які найкраще описують володіння.
|
||||
|
||||
## Довідник `qaRunners`
|
||||
|
||||
Використовуйте `qaRunners`, коли plugin додає один або кілька транспортних runner
|
||||
під спільним коренем `openclaw qa`. Зберігайте ці метадані легкими та статичними; фактичною
|
||||
реєстрацією CLI як і раніше володіє середовище виконання plugin через полегшену
|
||||
Використовуйте `qaRunners`, коли плагін додає один або кілька транспортних runner під
|
||||
спільним коренем `openclaw qa`. Зберігайте ці метадані легковаговими та статичними; фактичною логікою CLI
|
||||
все одно володіє рантайм плагіна через легковагову
|
||||
поверхню `runtime-api.ts`, яка експортує `qaRunnerCliRegistrations`.
|
||||
|
||||
```json
|
||||
@ -292,7 +291,7 @@ OpenClaw читає це до завантаження середовища ви
|
||||
"qaRunners": [
|
||||
{
|
||||
"commandName": "matrix",
|
||||
"description": "Запустити Docker-backed Matrix live QA lane на одноразовому homeserver"
|
||||
"description": "Run the Docker-backed Matrix live QA lane against a disposable homeserver"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -301,12 +300,12 @@ OpenClaw читає це до завантаження середовища ви
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------- | ----------- | -------- | ------------------------------------------------------------------------- |
|
||||
| `commandName` | Так | `string` | Підкоманда, змонтована під `openclaw qa`, наприклад `matrix`. |
|
||||
| `description` | Ні | `string` | Резервний текст довідки, що використовується, коли спільному хосту потрібна stub-команда. |
|
||||
| `description` | Ні | `string` | Резервний текст довідки, який використовується, коли спільному хосту потрібна stub-команда. |
|
||||
|
||||
## Довідник `setup`
|
||||
|
||||
Використовуйте `setup`, коли поверхням налаштування та онбордингу потрібні легкі метадані plugin,
|
||||
що належать plugin, до завантаження runtime.
|
||||
Використовуйте `setup`, коли поверхням setup та онбордингу потрібні легковагові метадані плагіна
|
||||
до завантаження рантайму.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -325,47 +324,48 @@ OpenClaw читає це до завантаження середовища ви
|
||||
}
|
||||
```
|
||||
|
||||
`cliBackends` верхнього рівня залишається чинним і продовжує описувати backend CLI для інференсу.
|
||||
`setup.cliBackends` — це поверхня дескрипторів, специфічна для setup, для потоків
|
||||
control-plane/setup, які мають залишатися лише метаданими.
|
||||
`cliBackends` верхнього рівня залишається валідним і надалі описує
|
||||
backend виведення CLI. `setup.cliBackends` — це поверхня дескрипторів, специфічна для setup,
|
||||
для потоків control-plane/setup, які мають залишатися лише на рівні метаданих.
|
||||
|
||||
За наявності `setup.providers` і `setup.cliBackends` є бажаною поверхнею пошуку
|
||||
на основі дескрипторів для виявлення setup. Якщо дескриптор лише звужує список
|
||||
plugin-кандидатів, а setup усе ще потребує більш багатих runtime-хуків на етапі налаштування,
|
||||
встановіть `requiresRuntime: true` і залиште `setup-api` як резервний шлях виконання.
|
||||
Коли вони присутні, `setup.providers` і `setup.cliBackends` є пріоритетною
|
||||
поверхнею пошуку setup у стилі descriptor-first для виявлення setup. Якщо дескриптор лише
|
||||
звужує коло кандидатів на плагін, а setup все ще потребує багатших runtime-хуків часу setup,
|
||||
встановіть `requiresRuntime: true` і залиште `setup-api` як
|
||||
резервний шлях виконання.
|
||||
|
||||
Оскільки пошук setup може виконувати код `setup-api`, що належить plugin,
|
||||
нормалізовані значення `setup.providers[].id` і `setup.cliBackends[]` мають залишатися
|
||||
унікальними серед виявлених plugin. Неоднозначне володіння завершується без вибору,
|
||||
замість того щоб обирати переможця за порядком виявлення.
|
||||
Оскільки пошук setup може виконувати код `setup-api`, що належить плагіну,
|
||||
нормалізовані значення `setup.providers[].id` і `setup.cliBackends[]` мають залишатися унікальними серед
|
||||
виявлених плагінів. Неоднозначне володіння завершується закритою відмовою замість вибору
|
||||
переможця на основі порядку виявлення.
|
||||
|
||||
### Довідник `setup.providers`
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------- | ----------- | ---------- | ---------------------------------------------------------------------------------- |
|
||||
| `id` | Так | `string` | Id provider, що відкривається під час setup або онбордингу. Зберігайте нормалізовані id глобально унікальними. |
|
||||
| `authMethods` | Ні | `string[]` | Id методів setup/автентифікації, які цей provider підтримує без завантаження повного runtime. |
|
||||
| `envVars` | Ні | `string[]` | Змінні середовища, які типові поверхні setup/status можуть перевіряти до завантаження runtime plugin. |
|
||||
| `id` | Так | `string` | Ідентифікатор провайдера, який відкривається під час setup або онбордингу. Зберігайте нормалізовані ідентифікатори глобально унікальними. |
|
||||
| `authMethods` | Ні | `string[]` | Ідентифікатори методів setup/автентифікації, які цей провайдер підтримує без завантаження повного рантайму. |
|
||||
| `envVars` | Ні | `string[]` | Змінні середовища, які загальні поверхні setup/status можуть перевіряти до завантаження рантайму плагіна. |
|
||||
|
||||
### Поля `setup`
|
||||
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------ | ----------- | ---------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | Ні | `object[]` | Дескриптори setup provider, що відкриваються під час setup та онбордингу. |
|
||||
| `cliBackends` | Ні | `string[]` | Id backend для setup, що використовуються для пошуку setup на основі дескрипторів. Зберігайте нормалізовані id глобально унікальними. |
|
||||
| `configMigrations` | Ні | `string[]` | Id міграцій конфігурації, якими володіє поверхня setup цього plugin. |
|
||||
| `requiresRuntime` | Ні | `boolean` | Чи потребує setup виконання `setup-api` після пошуку за дескриптором. |
|
||||
| Поле | Обов’язкове | Тип | Що воно означає |
|
||||
| ------------------ | ----------- | ---------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `providers` | Ні | `object[]` | Дескриптори setup провайдерів, які відкриваються під час setup та онбордингу. |
|
||||
| `cliBackends` | Ні | `string[]` | Ідентифікатори backend часу setup, що використовуються для пошуку setup у стилі descriptor-first. Зберігайте нормалізовані ідентифікатори глобально унікальними. |
|
||||
| `configMigrations` | Ні | `string[]` | Ідентифікатори міграцій конфігурації, якими володіє поверхня setup цього плагіна. |
|
||||
| `requiresRuntime` | Ні | `boolean` | Чи потребує setup виконання `setup-api` після пошуку дескриптора. |
|
||||
|
||||
## Довідник `uiHints`
|
||||
|
||||
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок для рендерингу.
|
||||
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок рендерингу.
|
||||
|
||||
```json
|
||||
{
|
||||
"uiHints": {
|
||||
"apiKey": {
|
||||
"label": "API key",
|
||||
"help": "Used for OpenRouter requests",
|
||||
"help": "Використовується для запитів OpenRouter",
|
||||
"placeholder": "sk-or-v1-...",
|
||||
"sensitive": true
|
||||
}
|
||||
@ -373,7 +373,7 @@ plugin-кандидатів, а setup усе ще потребує більш б
|
||||
}
|
||||
```
|
||||
|
||||
Кожна підказка для поля може містити:
|
||||
Кожна підказка поля може містити:
|
||||
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ------------- | ---------- | -------------------------------------- |
|
||||
@ -382,12 +382,12 @@ plugin-кандидатів, а setup усе ще потребує більш б
|
||||
| `tags` | `string[]` | Необов’язкові теги UI. |
|
||||
| `advanced` | `boolean` | Позначає поле як розширене. |
|
||||
| `sensitive` | `boolean` | Позначає поле як секретне або чутливе. |
|
||||
| `placeholder` | `string` | Текст-заповнювач для полів форми. |
|
||||
| `placeholder` | `string` | Текст placeholder для полів форми. |
|
||||
|
||||
## Довідник `contracts`
|
||||
|
||||
Використовуйте `contracts` лише для статичних метаданих володіння можливостями, які OpenClaw може
|
||||
читати без імпорту середовища виконання plugin.
|
||||
читати без імпорту рантайму плагіна.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -410,37 +410,37 @@ plugin-кандидатів, а setup усе ще потребує більш б
|
||||
|
||||
Кожен список є необов’язковим:
|
||||
|
||||
| Поле | Тип | Що воно означає |
|
||||
| -------------------------------- | ---------- | --------------------------------------------------------------------- |
|
||||
| `embeddedExtensionFactories` | `string[]` | Id вбудованого runtime, для яких вбудований plugin може реєструвати фабрики. |
|
||||
| `externalAuthProviders` | `string[]` | Id provider, хуком зовнішнього профілю автентифікації яких володіє цей plugin. |
|
||||
| `speechProviders` | `string[]` | Id provider speech, якими володіє цей plugin. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Id provider realtime-transcription, якими володіє цей plugin. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Id provider realtime-voice, якими володіє цей plugin. |
|
||||
| `memoryEmbeddingProviders` | `string[]` | Id provider memory embedding, якими володіє цей plugin. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Id provider media-understanding, якими володіє цей plugin. |
|
||||
| `imageGenerationProviders` | `string[]` | Id provider image-generation, якими володіє цей plugin. |
|
||||
| `videoGenerationProviders` | `string[]` | Id provider video-generation, якими володіє цей plugin. |
|
||||
| `webFetchProviders` | `string[]` | Id provider web-fetch, якими володіє цей plugin. |
|
||||
| `webSearchProviders` | `string[]` | Id provider web search, якими володіє цей plugin. |
|
||||
| `tools` | `string[]` | Назви інструментів агента, якими володіє цей plugin для перевірок вбудованого контракту. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| -------------------------------- | ---------- | ------------------------------------------------------------------- |
|
||||
| `embeddedExtensionFactories` | `string[]` | Ідентифікатори вбудованого рантайму, для яких вбудований плагін може реєструвати фабрики. |
|
||||
| `externalAuthProviders` | `string[]` | Ідентифікатори провайдерів, чий хук профілю зовнішньої автентифікації належить цьому плагіну. |
|
||||
| `speechProviders` | `string[]` | Ідентифікатори провайдерів мовлення, якими володіє цей плагін. |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | Ідентифікатори провайдерів транскрибування в реальному часі, якими володіє цей плагін. |
|
||||
| `realtimeVoiceProviders` | `string[]` | Ідентифікатори провайдерів голосу в реальному часі, якими володіє цей плагін. |
|
||||
| `memoryEmbeddingProviders` | `string[]` | Ідентифікатори провайдерів embedding для пам’яті, якими володіє цей плагін. |
|
||||
| `mediaUnderstandingProviders` | `string[]` | Ідентифікатори провайдерів розуміння медіа, якими володіє цей плагін. |
|
||||
| `imageGenerationProviders` | `string[]` | Ідентифікатори провайдерів генерації зображень, якими володіє цей плагін. |
|
||||
| `videoGenerationProviders` | `string[]` | Ідентифікатори провайдерів генерації відео, якими володіє цей плагін. |
|
||||
| `webFetchProviders` | `string[]` | Ідентифікатори провайдерів web-fetch, якими володіє цей плагін. |
|
||||
| `webSearchProviders` | `string[]` | Ідентифікатори провайдерів вебпошуку, якими володіє цей плагін. |
|
||||
| `tools` | `string[]` | Назви інструментів агента, якими володіє цей плагін для перевірок контрактів вбудованих плагінів. |
|
||||
|
||||
Plugin provider, які реалізують `resolveExternalAuthProfiles`, мають оголошувати
|
||||
`contracts.externalAuthProviders`. Plugin без цього оголошення все ще працюють
|
||||
через застарілий сумісний fallback, але він повільніший і
|
||||
буде вилучений після завершення вікна міграції.
|
||||
Плагіни провайдерів, які реалізують `resolveExternalAuthProfiles`, мають оголошувати
|
||||
`contracts.externalAuthProviders`. Плагіни без цього оголошення все ще працюють
|
||||
через застарілий сумісний fallback, але цей fallback повільніший і
|
||||
буде видалений після завершення вікна міграції.
|
||||
|
||||
Вбудовані provider memory embedding мають оголошувати
|
||||
`contracts.memoryEmbeddingProviders` для кожного id адаптера, який вони надають, включно з
|
||||
вбудованими адаптерами, такими як `local`. Окремі шляхи CLI використовують цей контракт
|
||||
маніфесту, щоб завантажувати лише plugin-власник до того, як повне середовище виконання Gateway
|
||||
зареєструє provider.
|
||||
Вбудовані провайдери embedding для пам’яті мають оголошувати
|
||||
`contracts.memoryEmbeddingProviders` для кожного ідентифікатора адаптера, який вони надають, зокрема
|
||||
для вбудованих адаптерів, таких як `local`. Автономні шляхи CLI використовують цей контракт маніфесту,
|
||||
щоб завантажувати лише плагін-власник до того, як повний рантайм Gateway
|
||||
зареєструє провайдерів.
|
||||
|
||||
## Довідник `mediaUnderstandingProviderMetadata`
|
||||
|
||||
Використовуйте `mediaUnderstandingProviderMetadata`, коли provider media-understanding має
|
||||
типові моделі, пріоритет fallback для автоматичної автентифікації або власну підтримку документів,
|
||||
які потрібні типовим допоміжникам ядра до завантаження runtime. Ключі також мають бути оголошені в
|
||||
Використовуйте `mediaUnderstandingProviderMetadata`, коли провайдер розуміння медіа має
|
||||
типові моделі, пріоритет fallback для автоавтентифікації або нативну підтримку документів, які
|
||||
потрібні загальним помічникам ядра до завантаження рантайму. Ключі також мають бути оголошені в
|
||||
`contracts.mediaUnderstandingProviders`.
|
||||
|
||||
```json
|
||||
@ -464,19 +464,19 @@ Plugin provider, які реалізують `resolveExternalAuthProfiles`, ма
|
||||
}
|
||||
```
|
||||
|
||||
Кожен запис provider може містити:
|
||||
Кожен запис провайдера може містити:
|
||||
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ---------------------- | ----------------------------------- | -------------------------------------------------------------------------------- |
|
||||
| `capabilities` | `("image" \| "audio" \| "video")[]` | Медіаможливості, які надає цей provider. |
|
||||
| `defaultModels` | `Record<string, string>` | Типові відповідності можливість-модель, що використовуються, коли конфігурація не задає модель. |
|
||||
| `autoPriority` | `Record<string, number>` | Менші числа сортуються раніше для автоматичного fallback provider на основі облікових даних. |
|
||||
| `nativeDocumentInputs` | `"pdf"[]` | Власні входи документів, які підтримує provider. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ---------------------- | ----------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| `capabilities` | `("image" \| "audio" \| "video")[]` | Можливості роботи з медіа, які надає цей провайдер. |
|
||||
| `defaultModels` | `Record<string, string>` | Типові відповідності можливостей до моделей, що використовуються, коли в конфігурації не вказано модель. |
|
||||
| `autoPriority` | `Record<string, number>` | Менші числа сортуються раніше для автоматичного fallback до провайдера на основі облікових даних. |
|
||||
| `nativeDocumentInputs` | `"pdf"[]` | Нативні типи документів, які підтримує провайдер. |
|
||||
|
||||
## Довідник `channelConfigs`
|
||||
|
||||
Використовуйте `channelConfigs`, коли channel plugin потребує легких метаданих конфігурації до
|
||||
завантаження runtime.
|
||||
Використовуйте `channelConfigs`, коли плагіну каналу потрібні легковагові метадані конфігурації до
|
||||
завантаження рантайму.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -491,32 +491,33 @@ Plugin provider, які реалізують `resolveExternalAuthProfiles`, ма
|
||||
},
|
||||
"uiHints": {
|
||||
"homeserverUrl": {
|
||||
"label": "Homeserver URL",
|
||||
"label": "URL homeserver",
|
||||
"placeholder": "https://matrix.example.com"
|
||||
}
|
||||
},
|
||||
"label": "Matrix",
|
||||
"description": "Підключення до homeserver Matrix",
|
||||
"description": "Підключення до Matrix homeserver",
|
||||
"preferOver": ["matrix-legacy"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Кожен запис channel може містити:
|
||||
Кожен запис каналу може містити:
|
||||
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ------------- | ------------------------ | ----------------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкове для кожного оголошеного запису конфігурації channel. |
|
||||
| `uiHints` | `Record<string, object>` | Необов’язкові підписи UI/заповнювачі/підказки чутливості для цього розділу конфігурації channel. |
|
||||
| `label` | `string` | Підпис channel, що об’єднується в поверхнях вибору та перегляду, коли метадані runtime ще не готові. |
|
||||
| `description` | `string` | Короткий опис channel для поверхонь перегляду та каталогу. |
|
||||
| `preferOver` | `string[]` | Id застарілих або менш пріоритетних plugin, які цей channel має випереджати в поверхнях вибору. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| ------------- | ------------------------ | -------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкова для кожного оголошеного запису конфігурації каналу. |
|
||||
| `uiHints` | `Record<string, object>` | Необов’язкові підписи UI/placeholders/підказки щодо чутливості для цього розділу конфігурації каналу. |
|
||||
| `label` | `string` | Підпис каналу, що об’єднується в поверхні вибору та перевірки, коли метадані рантайму ще не готові. |
|
||||
| `description` | `string` | Короткий опис каналу для поверхонь перевірки та каталогу. |
|
||||
| `preferOver` | `string[]` | Ідентифікатори застарілих або менш пріоритетних плагінів, які цей канал має перевершувати в поверхнях вибору. |
|
||||
|
||||
## Довідник `modelSupport`
|
||||
|
||||
Використовуйте `modelSupport`, коли OpenClaw має визначати ваш provider plugin за
|
||||
скороченими id моделей на кшталт `gpt-5.5` або `claude-sonnet-4.6` до завантаження runtime plugin.
|
||||
Використовуйте `modelSupport`, коли OpenClaw має визначати ваш плагін провайдера за
|
||||
скороченими ідентифікаторами моделей, такими як `gpt-5.5` або `claude-sonnet-4.6`, до завантаження
|
||||
рантайму плагіна.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -529,102 +530,104 @@ Plugin provider, які реалізують `resolveExternalAuthProfiles`, ма
|
||||
|
||||
OpenClaw застосовує такий пріоритет:
|
||||
|
||||
- явні посилання `provider/model` використовують метадані маніфесту `providers` plugin-власника
|
||||
- `modelPatterns` мають вищий пріоритет, ніж `modelPrefixes`
|
||||
- якщо збігаються один невбудований plugin і один вбудований plugin, перемагає невбудований
|
||||
plugin
|
||||
- решта неоднозначностей ігнорується, доки користувач або конфігурація не вкажуть provider
|
||||
- явні посилання `provider/model` використовують метадані маніфесту `providers` плагіна-власника
|
||||
- `modelPatterns` мають вищий пріоритет за `modelPrefixes`
|
||||
- якщо збігаються і один невбудований плагін, і один вбудований плагін, перемагає невбудований
|
||||
плагін
|
||||
- решта неоднозначностей ігноруються, доки користувач або конфігурація не вкаже провайдера
|
||||
|
||||
Поля:
|
||||
|
||||
| Поле | Тип | Що воно означає |
|
||||
| --------------- | ---------- | -------------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Префікси, що зіставляються через `startsWith` зі скороченими id моделей. |
|
||||
| `modelPatterns` | `string[]` | Джерела regex, що зіставляються зі скороченими id моделей після видалення суфікса профілю. |
|
||||
| Поле | Тип | Що воно означає |
|
||||
| --------------- | ---------- | ---------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | Префікси, що зіставляються через `startsWith` зі скороченими ідентифікаторами моделей. |
|
||||
| `modelPatterns` | `string[]` | Джерела regex, що зіставляються зі скороченими ідентифікаторами моделей після видалення суфікса профілю. |
|
||||
|
||||
Застарілі ключі можливостей верхнього рівня не рекомендуються. Використовуйте `openclaw doctor --fix`, щоб
|
||||
Застарілі ключі можливостей верхнього рівня є deprecated. Використовуйте `openclaw doctor --fix`, щоб
|
||||
перемістити `speechProviders`, `realtimeTranscriptionProviders`,
|
||||
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
||||
`imageGenerationProviders`, `videoGenerationProviders`,
|
||||
`webFetchProviders` і `webSearchProviders` до `contracts`; звичайне
|
||||
`webFetchProviders` і `webSearchProviders` під `contracts`; звичайне
|
||||
завантаження маніфесту більше не розглядає ці поля верхнього рівня як
|
||||
володіння можливостями.
|
||||
|
||||
## Маніфест і `package.json`
|
||||
|
||||
Ці два файли виконують різні завдання:
|
||||
Ці два файли виконують різні задачі:
|
||||
|
||||
| Файл | Для чого використовувати |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів автентифікації та підказки UI, які мають існувати до запуску коду plugin |
|
||||
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, що використовується для точок входу, обмежень встановлення, setup або метаданих каталогу |
|
||||
| Файл | Використовуйте його для |
|
||||
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | Виявлення, валідації конфігурації, метаданих варіантів автентифікації та підказок UI, які мають існувати до запуску коду плагіна |
|
||||
| `package.json` | Метаданих npm, встановлення залежностей і блоку `openclaw`, який використовується для точок входу, обмежень встановлення, setup або метаданих каталогу |
|
||||
|
||||
Якщо ви не впевнені, куди належить певний фрагмент метаданих, користуйтеся таким правилом:
|
||||
Якщо ви не впевнені, куди має належати певний фрагмент метаданих, користуйтеся таким правилом:
|
||||
|
||||
- якщо OpenClaw має знати це до завантаження коду plugin, помістіть це в `openclaw.plugin.json`
|
||||
- якщо OpenClaw має знати це до завантаження коду плагіна, помістіть це в `openclaw.plugin.json`
|
||||
- якщо це стосується пакування, файлів точок входу або поведінки встановлення npm, помістіть це в `package.json`
|
||||
|
||||
### Поля `package.json`, які впливають на виявлення
|
||||
|
||||
Деякі метадані plugin до виконання навмисно зберігаються в `package.json` у блоці
|
||||
Деякі метадані плагіна до запуску рантайму навмисно зберігаються в `package.json` у блоці
|
||||
`openclaw`, а не в `openclaw.plugin.json`.
|
||||
|
||||
Важливі приклади:
|
||||
|
||||
| Поле | Що воно означає |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `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` | Полегшені метадані каталогу channel, як-от підписи, шляхи до документації, псевдоніми та тексти для вибору. |
|
||||
| `openclaw.channel.configuredState` | Полегшені метадані перевірки configured-state, які можуть відповісти на запитання «чи вже існує налаштування лише через env?» без завантаження повного runtime channel. |
|
||||
| `openclaw.channel.persistedAuthState` | Полегшені метадані перевірки persisted-auth, які можуть відповісти на запитання «чи вже виконано вхід хоч десь?» без завантаження повного runtime channel. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки для встановлення/оновлення вбудованих і зовнішньо опублікованих plugin. |
|
||||
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
|
||||
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw із використанням нижньої межі semver, наприклад `>=2026.3.22`. |
|
||||
| `openclaw.install.expectedIntegrity` | Очікуваний рядок цілісності npm dist, наприклад `sha512-...`; потоки встановлення й оновлення звіряють завантажений артефакт із ним. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення через перевстановлення вбудованого plugin, коли конфігурація недійсна. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє поверхням channel лише для setup завантажуватися до повного plugin channel під час запуску. |
|
||||
| Поле | Що воно означає |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `openclaw.extensions` | Оголошує точки входу власного плагіна. Вони мають залишатися в межах каталогу пакета плагіна. |
|
||||
| `openclaw.runtimeExtensions` | Оголошує точки входу рантайму зібраного JavaScript для встановлених пакетів. Вони мають залишатися в межах каталогу пакета плагіна. |
|
||||
| `openclaw.setupEntry` | Легковагова точка входу лише для setup, що використовується під час онбордингу, відкладеного запуску каналу та read-only виявлення channel status/SecretRef. Має залишатися в межах каталогу пакета плагіна. |
|
||||
| `openclaw.runtimeSetupEntry` | Оголошує точку входу setup зібраного JavaScript для встановлених пакетів. Має залишатися в межах каталогу пакета плагіна. |
|
||||
| `openclaw.channel` | Легковагові метадані каталогу каналу, як-от підписи, шляхи до документації, аліаси та текст для вибору. |
|
||||
| `openclaw.channel.configuredState` | Легковагові метадані перевірки налаштованого стану, які можуть відповісти на запитання «чи вже існує налаштування лише через env?» без завантаження повного рантайму каналу. |
|
||||
| `openclaw.channel.persistedAuthState` | Легковагові метадані перевірки збереженого стану автентифікації, які можуть відповісти на запитання «чи вже десь виконано вхід?» без завантаження повного рантайму каналу. |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки встановлення/оновлення для вбудованих і зовнішньо опублікованих плагінів. |
|
||||
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
|
||||
| `openclaw.install.minHostVersion` | Мінімально підтримувана версія хоста OpenClaw із використанням нижньої межі semver, наприклад `>=2026.3.22`. |
|
||||
| `openclaw.install.expectedIntegrity` | Очікуваний рядок цілісності npm dist, наприклад `sha512-...`; потоки встановлення й оновлення перевіряють отриманий артефакт за ним. |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення через перевстановлення вбудованого плагіна, коли конфігурація невалідна. |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє поверхням каналу лише для setup завантажуватися до повного плагіна каналу під час запуску. |
|
||||
|
||||
Метадані маніфесту визначають, які варіанти provider/channel/setup з’являються в
|
||||
онбордингу до завантаження runtime. `package.json#openclaw.install` повідомляє
|
||||
онбордингу, як отримати або ввімкнути цей plugin, коли користувач вибирає один із цих
|
||||
варіантів. Не переносіть підказки встановлення до `openclaw.plugin.json`.
|
||||
Метадані маніфесту визначають, які варіанти провайдера/каналу/setup з’являються в
|
||||
онбордингу до завантаження рантайму. `package.json#openclaw.install` повідомляє
|
||||
онбордингу, як отримати або ввімкнути цей плагін, коли користувач вибирає один із цих
|
||||
варіантів. Не переносіть підказки встановлення в `openclaw.plugin.json`.
|
||||
|
||||
`openclaw.install.minHostVersion` застосовується під час встановлення та завантаження
|
||||
реєстру маніфестів. Недійсні значення відхиляються; новіші, але коректні значення
|
||||
пропускають plugin на старіших хостах.
|
||||
`openclaw.install.minHostVersion` застосовується під час встановлення та
|
||||
завантаження реєстру маніфестів. Невалідні значення відхиляються; новіші, але валідні значення
|
||||
пропускають плагін на старіших хостах.
|
||||
|
||||
Точне закріплення версії npm уже зберігається в `npmSpec`, наприклад
|
||||
Точне закріплення версії npm уже міститься в `npmSpec`, наприклад
|
||||
`"npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3"`. Офіційні записи зовнішнього каталогу
|
||||
мають поєднувати точні специфікації з `expectedIntegrity`, щоб потоки оновлення
|
||||
завершувалися без вибору, якщо завантажений npm-артефакт більше не відповідає
|
||||
закріпленому релізу. Інтерактивний онбординг і надалі пропонує довірені npm-специфікації
|
||||
реєстру, зокрема прості назви пакетів і dist-tags, для сумісності. Діагностика каталогу
|
||||
може розрізняти точні, плаваючі, закріплені за цілісністю, без цілісності та недійсні
|
||||
джерела default-choice. Коли `expectedIntegrity` присутній, потоки встановлення/оновлення
|
||||
застосовують його; коли його пропущено, розв’язання через реєстр записується
|
||||
без закріплення цілісності.
|
||||
завершувалися закритою відмовою, якщо отриманий артефакт npm більше не відповідає закріпленому релізу.
|
||||
Інтерактивний онбординг усе ще пропонує довірені npm-специфікації реєстру, включно з
|
||||
простими назвами пакетів і dist-tag, для сумісності. Діагностика каталогу може
|
||||
розрізняти точні, плаваючі, закріплені за цілісністю, без цілісності та невалідні
|
||||
джерела default-choice. Вона також попереджає, коли `expectedIntegrity` присутній, але
|
||||
немає валідного джерела npm, яке можна ним закріпити. Коли `expectedIntegrity` присутній,
|
||||
потоки встановлення/оновлення застосовують його; коли він пропущений, розв’язання реєстру
|
||||
фіксується без закріплення за цілісністю.
|
||||
|
||||
Channel plugin мають надавати `openclaw.setupEntry`, коли статус, список channel
|
||||
Плагіни каналів мають надавати `openclaw.setupEntry`, коли status, список каналів
|
||||
або сканування SecretRef повинні визначати налаштовані облікові записи без завантаження повного
|
||||
runtime. Точка входу setup має надавати метадані channel разом із безпечними для setup
|
||||
адаптерами конфігурації, статусу й секретів; мережеві клієнти, слухачі Gateway і
|
||||
transport runtime слід залишати в основній точці входу extension.
|
||||
рантайму. Точка входу setup має надавати метадані каналу разом із безпечними для setup
|
||||
адаптерами конфігурації, status і secret; мережеві клієнти, слухачі Gateway та
|
||||
транспортні рантайми слід тримати в основній точці входу extension.
|
||||
|
||||
Поля точок входу runtime не скасовують перевірки меж пакета для
|
||||
полів точок входу вихідного коду. Наприклад, `openclaw.runtimeExtensions` не може зробити
|
||||
придатним до завантаження шлях `openclaw.extensions`, що виходить за межі.
|
||||
Поля точок входу рантайму не перевизначають перевірки меж пакета для полів
|
||||
точок входу вихідного коду. Наприклад, `openclaw.runtimeExtensions` не може зробити
|
||||
шлях `openclaw.extensions`, що виходить за межі, доступним для завантаження.
|
||||
|
||||
`openclaw.install.allowInvalidConfigRecovery` навмисно вузький. Він
|
||||
не робить довільні зламані конфігурації придатними для встановлення. Наразі він лише дозволяє
|
||||
потокам встановлення відновлюватися після певних застарілих збоїв оновлення вбудованого plugin,
|
||||
наприклад відсутнього шляху до вбудованого plugin або застарілого запису `channels.<id>` для цього ж
|
||||
вбудованого plugin. Несуміжні помилки конфігурації, як і раніше, блокують встановлення та спрямовують операторів
|
||||
`openclaw.install.allowInvalidConfigRecovery` навмисно є вузьким. Воно
|
||||
не робить довільно зламані конфігурації придатними до встановлення. Сьогодні воно лише дозволяє потокам встановлення
|
||||
відновлюватися після певних застарілих збоїв оновлення вбудованих плагінів, наприклад
|
||||
відсутнього шляху до вбудованого плагіна або застарілого запису `channels.<id>` для того самого
|
||||
вбудованого плагіна. Непов’язані помилки конфігурації, як і раніше, блокують встановлення та спрямовують операторів
|
||||
до `openclaw doctor --fix`.
|
||||
|
||||
`openclaw.channel.persistedAuthState` — це метадані пакета для крихітного модуля перевірки:
|
||||
`openclaw.channel.persistedAuthState` — це метадані пакета для крихітного модуля
|
||||
перевірки:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -640,13 +643,13 @@ transport runtime слід залишати в основній точці вх
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це, коли потоки setup, doctor або configured-state потребують дешевого
|
||||
yes/no-зонду автентифікації до завантаження повного channel plugin. Цільовий експорт має бути
|
||||
невеликою функцією, що читає лише збережений стан; не маршрутизуйте його через повний
|
||||
barrel runtime channel.
|
||||
Використовуйте це, коли потокам setup, doctor або configured-state потрібна дешева перевірка
|
||||
автентифікації типу так/ні до завантаження повного плагіна каналу. Цільовий експорт має бути невеликою
|
||||
функцією, яка читає лише збережений стан; не маршрутизуйте її через широкий barrel повного
|
||||
рантайму каналу.
|
||||
|
||||
`openclaw.channel.configuredState` має ту саму форму для дешевих перевірок
|
||||
configured-state лише через env:
|
||||
`openclaw.channel.configuredState` має таку саму форму для дешевих перевірок
|
||||
налаштованого стану лише через env:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -662,68 +665,68 @@ configured-state лише через env:
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це, коли channel може визначити configured-state з env або інших малих
|
||||
невиконуваних вхідних даних. Якщо перевірка потребує повного розв’язання конфігурації або реального
|
||||
runtime channel, натомість залиште цю логіку в хуку plugin `config.hasConfiguredState`.
|
||||
Використовуйте це, коли канал може відповісти про налаштований стан на основі env або інших невеликих
|
||||
вхідних даних, не пов’язаних із рантаймом. Якщо перевірка потребує повного розв’язання конфігурації або реального
|
||||
рантайму каналу, залиште цю логіку в хуку плагіна `config.hasConfiguredState`.
|
||||
|
||||
## Пріоритет виявлення (дублікати id plugin)
|
||||
## Пріоритет виявлення (дубльовані ідентифікатори плагінів)
|
||||
|
||||
OpenClaw виявляє plugin з кількох коренів (вбудовані, глобальне встановлення, workspace, явно вибрані в конфігурації шляхи). Якщо два виявлення мають однаковий `id`, зберігається лише маніфест із **найвищим пріоритетом**; дублікати з нижчим пріоритетом відкидаються замість завантаження поруч із ним.
|
||||
OpenClaw виявляє плагіни з кількох коренів (вбудовані, глобальне встановлення, workspace, явно вибрані в конфігурації шляхи). Якщо два результати виявлення мають однаковий `id`, зберігається лише маніфест із **найвищим пріоритетом**; дублікати з нижчим пріоритетом відкидаються, а не завантажуються поруч із ним.
|
||||
|
||||
Пріоритет, від найвищого до найнижчого:
|
||||
|
||||
1. **Вибраний конфігурацією** — шлях, явно закріплений у `plugins.entries.<id>`
|
||||
2. **Вбудований** — plugin, що постачаються з OpenClaw
|
||||
3. **Глобальне встановлення** — plugin, встановлені до глобального кореня plugin OpenClaw
|
||||
4. **Workspace** — plugin, виявлені відносно поточного workspace
|
||||
2. **Вбудований** — плагіни, що постачаються з OpenClaw
|
||||
3. **Глобальне встановлення** — плагіни, встановлені в глобальний корінь плагінів OpenClaw
|
||||
4. **Workspace** — плагіни, виявлені відносно поточного workspace
|
||||
|
||||
Наслідки:
|
||||
|
||||
- Форкнута або застаріла копія вбудованого plugin у workspace не зможе затінити вбудовану збірку.
|
||||
- Щоб справді перевизначити вбудований plugin локальним, закріпіть його через `plugins.entries.<id>`, щоб він переміг за пріоритетом, а не покладайтеся на виявлення у workspace.
|
||||
- Відкидання дублікатів записується в лог, щоб Doctor і діагностика запуску могли вказати на відкинуту копію.
|
||||
- Форк або застаріла копія вбудованого плагіна, що лежить у workspace, не перекриє вбудовану збірку.
|
||||
- Щоб справді перевизначити вбудований плагін локальним, закріпіть його через `plugins.entries.<id>`, щоб він переміг за пріоритетом, а не покладайтесь на виявлення у workspace.
|
||||
- Відкидання дублікатів журналюється, щоб Doctor і діагностика запуску могли вказати на відкинуту копію.
|
||||
|
||||
## Вимоги до JSON Schema
|
||||
|
||||
- **Кожен plugin повинен постачатися з JSON Schema**, навіть якщо він не приймає конфігурацію.
|
||||
- Порожня схема прийнятна (наприклад, `{ "type": "object", "additionalProperties": false }`).
|
||||
- Схеми проходять валідацію під час читання/запису конфігурації, а не під час runtime.
|
||||
- **Кожен плагін повинен постачатися з JSON Schema**, навіть якщо він не приймає конфігурацію.
|
||||
- Порожня схема допустима (наприклад, `{ "type": "object", "additionalProperties": false }`).
|
||||
- Схеми проходять валідацію під час читання/запису конфігурації, а не в рантаймі.
|
||||
|
||||
## Поведінка валідації
|
||||
|
||||
- Невідомі ключі `channels.*` є **помилками**, якщо тільки id channel не оголошено
|
||||
маніфестом plugin.
|
||||
- Невідомі ключі `channels.*` є **помилками**, якщо тільки ідентифікатор каналу не оголошено в
|
||||
маніфесті плагіна.
|
||||
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` і `plugins.slots.*`
|
||||
мають посилатися на **виявлювані** id plugin. Невідомі id є **помилками**.
|
||||
- Якщо plugin встановлено, але він має зламаний або відсутній маніфест чи схему,
|
||||
валідація завершується помилкою, а Doctor повідомляє про помилку plugin.
|
||||
- Якщо конфігурація plugin існує, але plugin **вимкнено**, конфігурація зберігається, і
|
||||
у Doctor + логах відображається **попередження**.
|
||||
мають посилатися на **виявлювані** ідентифікатори плагінів. Невідомі ідентифікатори є **помилками**.
|
||||
- Якщо плагін установлено, але він має зламаний або відсутній маніфест чи схему,
|
||||
валідація завершується помилкою, а Doctor повідомляє про помилку плагіна.
|
||||
- Якщо конфігурація плагіна існує, але сам плагін **вимкнений**, конфігурація зберігається, а
|
||||
в Doctor + логах показується **попередження**.
|
||||
|
||||
Див. [Довідник конфігурації](/uk/gateway/configuration) для повної схеми `plugins.*`.
|
||||
Повну схему `plugins.*` дивіться в [Configuration reference](/uk/gateway/configuration).
|
||||
|
||||
## Примітки
|
||||
|
||||
- Маніфест **обов’язковий для власних Plugin OpenClaw**, зокрема для локальних завантажень із файлової системи. Runtime, як і раніше, завантажує модуль plugin окремо; маніфест використовується лише для виявлення + валідації.
|
||||
- Власні маніфести розбираються за допомогою JSON5, тому коментарі, кінцеві коми та ключі без лапок допускаються, якщо кінцеве значення все ще є об’єктом.
|
||||
- Завантажувач маніфесту читає лише документовані поля маніфесту. Уникайте власних ключів верхнього рівня.
|
||||
- `channels`, `providers`, `cliBackends` і `skills` можна не вказувати, якщо plugin їх не потребує.
|
||||
- `providerDiscoveryEntry` має залишатися полегшеним і не повинен імпортувати широкий runtime-код; використовуйте його для статичних метаданих каталогу provider або вузьких дескрипторів виявлення, а не для виконання під час запиту.
|
||||
- Ексклюзивні типи plugin вибираються через `plugins.slots.*`: `kind: "memory"` через `plugins.slots.memory`, `kind: "context-engine"` через `plugins.slots.contextEngine` (типово `legacy`).
|
||||
- Метадані змінних середовища (`providerAuthEnvVars`, `channelEnvVars`) є лише декларативними. Поверхні статусу, аудиту, валідації доставки Cron та інші поверхні лише для читання все одно застосовують політику довіри до plugin і ефективної активації, перш ніж вважати змінну середовища налаштованою.
|
||||
- Для метаданих wizard runtime, які потребують коду provider, див. [Хуки runtime provider](/uk/plugins/architecture-internals#provider-runtime-hooks).
|
||||
- Якщо ваш plugin залежить від native-модулів, задокументуйте кроки збирання та будь-які вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts` + `pnpm rebuild <package>`).
|
||||
- Маніфест є **обов’язковим для власних плагінів OpenClaw**, включно із завантаженням із локальної файлової системи. Рантайм, як і раніше, завантажує модуль плагіна окремо; маніфест використовується лише для виявлення + валідації.
|
||||
- Власні маніфести парсяться за допомогою JSON5, тому коментарі, кінцеві коми та ключі без лапок допускаються, доки кінцеве значення все ще залишається об’єктом.
|
||||
- Завантажувач маніфесту читає лише задокументовані поля маніфесту. Уникайте користувацьких ключів верхнього рівня.
|
||||
- `channels`, `providers`, `cliBackends` і `skills` можна не вказувати, якщо плагін їх не потребує.
|
||||
- `providerDiscoveryEntry` має залишатися легковаговим і не повинен імпортувати широкий код рантайму; використовуйте його для статичних метаданих каталогу провайдерів або вузьких дескрипторів виявлення, а не для виконання під час обробки запитів.
|
||||
- Ексклюзивні типи плагінів вибираються через `plugins.slots.*`: `kind: "memory"` через `plugins.slots.memory`, `kind: "context-engine"` через `plugins.slots.contextEngine` (типово `legacy`).
|
||||
- Метадані змінних середовища (`providerAuthEnvVars`, `channelEnvVars`) є лише декларативними. Status, audit, валідація доставки Cron та інші поверхні лише для читання все одно застосовують політику довіри до плагіна та ефективної активації, перш ніж вважати змінну середовища налаштованою.
|
||||
- Метадані runtime wizard, які потребують коду провайдера, дивіться в [Provider runtime hooks](/uk/plugins/architecture-internals#provider-runtime-hooks).
|
||||
- Якщо ваш плагін залежить від native modules, задокументуйте кроки збірки та всі вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts` + `pnpm rebuild <package>`).
|
||||
|
||||
## Пов’язані матеріали
|
||||
## Пов’язане
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Створення plugin" href="/uk/plugins/building-plugins" icon="rocket">
|
||||
Початок роботи з plugin.
|
||||
<Card title="Створення плагінів" href="/uk/plugins/building-plugins" icon="rocket">
|
||||
Початок роботи з плагінами.
|
||||
</Card>
|
||||
<Card title="Архітектура plugin" href="/uk/plugins/architecture" icon="diagram-project">
|
||||
<Card title="Архітектура плагінів" href="/uk/plugins/architecture" icon="diagram-project">
|
||||
Внутрішня архітектура та модель можливостей.
|
||||
</Card>
|
||||
<Card title="Огляд SDK" href="/uk/plugins/sdk-overview" icon="book">
|
||||
Довідник по SDK plugin і імпортам підшляхів.
|
||||
Довідник Plugin SDK і імпорти підшляхів.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user