Маніфест плагіна (openclaw.plugin.json)
Ця сторінка стосується лише власного маніфесту плагіна OpenClaw. Сумісні макети bundle див. у Збірки плагінів. Сумісні формати bundle використовують інші файли маніфесту:- Codex bundle:
.codex-plugin/plugin.json - Claude bundle:
.claude-plugin/plugin.jsonабо типовий макет компонента Claude без маніфесту - Cursor bundle:
.cursor-plugin/plugin.json
openclaw.plugin.json, описаною тут.
Для сумісних bundle OpenClaw наразі зчитує метадані bundle плюс оголошені
корені Skills, корені команд Claude, типові значення settings.json для Claude bundle,
типові значення Claude bundle LSP і підтримувані набори хуків, коли макет відповідає
очікуванням середовища виконання OpenClaw.
Кожен власний плагін OpenClaw має постачатися з файлом openclaw.plugin.json у
корені плагіна. OpenClaw використовує цей маніфест для валідації конфігурації
без виконання коду плагіна. Відсутні або некоректні маніфести вважаються
помилками плагіна й блокують валідацію конфігурації.
Див. повний посібник із системи плагінів: Плагіни.
Щодо власної моделі можливостей і поточних рекомендацій із зовнішньої сумісності:
Модель можливостей.
Що робить цей файл
openclaw.plugin.json — це метадані, які OpenClaw зчитує до того, як завантажить
код вашого плагіна.
Використовуйте його для:
- ідентичності плагіна
- валідації конфігурації
- метаданих автентифікації та онбордингу, які мають бути доступні без запуску середовища виконання плагіна
- метаданих псевдонімів і автоувімкнення, які мають визначатися до завантаження середовища виконання плагіна
- скорочених метаданих про належність до сімейства моделей, які мають автоматично активувати плагін до завантаження середовища виконання
- статичних знімків належності можливостей, що використовуються для вбудованої compat-wiring і покриття контрактів
- метаданих конфігурації каналу, які мають об’єднуватися в поверхні каталогу та валідації без завантаження середовища виконання
- підказок UI для конфігурації
- реєстрації поведінки середовища виконання
- оголошення entrypoint коду
- метаданих встановлення npm
package.json.
Мінімальний приклад
Розширений приклад
Довідник полів верхнього рівня
| Field | Required | Type | What it means |
|---|---|---|---|
id | Так | string | Канонічний id плагіна. Це id, який використовується в plugins.entries.<id>. |
configSchema | Так | object | Вбудована JSON Schema для конфігурації цього плагіна. |
enabledByDefault | Ні | true | Позначає вбудований плагін як увімкнений типово. Опустіть це поле або встановіть будь-яке значення, відмінне від true, щоб плагін залишався вимкненим типово. |
legacyPluginIds | Ні | string[] | Застарілі id, які нормалізуються до цього канонічного id плагіна. |
autoEnableWhenConfiguredProviders | Ні | string[] | Id провайдерів, які мають автоматично вмикати цей плагін, коли в автентифікації, конфігурації чи посиланнях на моделі згадано їх. |
kind | Ні | "memory" | "context-engine" | Оголошує ексклюзивний тип плагіна, що використовується plugins.slots.*. |
channels | Ні | string[] | Id каналів, якими володіє цей плагін. Використовуються для виявлення та валідації конфігурації. |
providers | Ні | string[] | Id провайдерів, якими володіє цей плагін. |
modelSupport | Ні | object | Скорочені метадані про сімейство моделей, якими володіє маніфест і які використовуються для автоматичного завантаження плагіна до завантаження середовища виконання. |
providerAuthEnvVars | Ні | Record<string, string[]> | Недорогі метадані env для автентифікації провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
providerAuthChoices | Ні | object[] | Недорогі метадані варіантів автентифікації для онбординг-піків, визначення бажаного провайдера і простого зв’язування CLI-прапорців. |
contracts | Ні | object | Статичний знімок можливостей вбудованих плагінів для speech, realtime transcription, realtime voice, media-understanding, image-generation, video-generation, web-fetch, web search і належності інструментів. |
channelConfigs | Ні | Record<string, object> | Метадані конфігурації каналу, що належать маніфесту та об’єднуються з поверхнями виявлення й валідації до завантаження середовища виконання. |
skills | Ні | string[] | Каталоги Skills для завантаження, відносно кореня плагіна. |
name | Ні | string | Людинозрозуміла назва плагіна. |
description | Ні | string | Короткий опис, що показується на поверхнях плагіна. |
version | Ні | string | Інформаційна версія плагіна. |
uiHints | Ні | Record<string, object> | Мітки UI, плейсхолдери та підказки щодо чутливості для полів конфігурації. |
Довідник providerAuthChoices
Кожен запис providerAuthChoices описує один варіант онбордингу або автентифікації.
OpenClaw зчитує це до завантаження середовища виконання провайдера.
| Field | Required | Type | What it means |
|---|---|---|---|
provider | Так | string | Id провайдера, до якого належить цей варіант. |
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"]. |
Довідник uiHints
uiHints — це мапа від назв полів конфігурації до невеликих підказок рендерингу.
| Field | Type | What it means |
|---|---|---|
label | string | Мітка поля для користувача. |
help | string | Короткий допоміжний текст. |
tags | string[] | Необов’язкові теги UI. |
advanced | boolean | Позначає поле як розширене. |
sensitive | boolean | Позначає поле як секретне або чутливе. |
placeholder | string | Текст плейсхолдера для полів форми. |
Довідник contracts
Використовуйте contracts лише для статичних метаданих про належність можливостей, які OpenClaw може
зчитати без імпорту середовища виконання плагіна.
| Field | Type | What it means |
|---|---|---|
speechProviders | string[] | Id провайдерів speech, якими володіє цей плагін. |
realtimeTranscriptionProviders | string[] | Id провайдерів realtime transcription, якими володіє цей плагін. |
realtimeVoiceProviders | string[] | Id провайдерів realtime voice, якими володіє цей плагін. |
mediaUnderstandingProviders | string[] | Id провайдерів media-understanding, якими володіє цей плагін. |
imageGenerationProviders | string[] | Id провайдерів image-generation, якими володіє цей плагін. |
videoGenerationProviders | string[] | Id провайдерів video-generation, якими володіє цей плагін. |
webFetchProviders | string[] | Id провайдерів web-fetch, якими володіє цей плагін. |
webSearchProviders | string[] | Id провайдерів web search, якими володіє цей плагін. |
tools | string[] | Назви інструментів агента, якими володіє цей плагін для перевірок контрактів вбудованих плагінів. |
Довідник channelConfigs
Використовуйте channelConfigs, коли плагіну каналу потрібні недорогі метадані конфігурації до
завантаження середовища виконання.
| Field | Type | What it means |
|---|---|---|
schema | object | JSON Schema для channels.<id>. Обов’язкова для кожного оголошеного запису конфігурації каналу. |
uiHints | Record<string, object> | Необов’язкові мітки UI/плейсхолдери/підказки щодо чутливості для цього розділу конфігурації каналу. |
label | string | Мітка каналу, що об’єднується з поверхнями пікера та inspect, коли метадані середовища виконання ще не готові. |
description | string | Короткий опис каналу для inspect і поверхонь каталогу. |
preferOver | string[] | Застарілі або менш пріоритетні id плагінів, які цей канал має перевершувати на поверхнях вибору. |
Довідник modelSupport
Використовуйте modelSupport, коли OpenClaw має виводити ваш плагін провайдера з
скорочених id моделей, як-от gpt-5.4 або claude-sonnet-4.6, до завантаження середовища виконання плагіна.
- явні посилання
provider/modelвикористовують метадані маніфестуproviders, що визначають власника modelPatternsмають пріоритет надmodelPrefixes- якщо збігаються один невбудований і один вбудований плагін, перемагає невбудований плагін
- решта неоднозначностей ігнорується, доки користувач або конфігурація не вкаже провайдера
| Field | Type | What it means |
|---|---|---|
modelPrefixes | string[] | Префікси, що зіставляються через startsWith зі скороченими id моделей. |
modelPatterns | string[] | Джерела regex, що зіставляються зі скороченими id моделей після видалення суфікса профілю. |
openclaw doctor --fix, щоб
перемістити speechProviders, realtimeTranscriptionProviders,
realtimeVoiceProviders, mediaUnderstandingProviders,
imageGenerationProviders, videoGenerationProviders,
webFetchProviders і webSearchProviders до contracts; звичайне
завантаження маніфесту більше не розглядає ці поля верхнього рівня як
належність можливостей.
Маніфест проти package.json
Ці два файли виконують різні завдання:| File | Use it for |
|---|---|
openclaw.plugin.json | Виявлення, валідація конфігурації, метадані варіантів автентифікації та підказки UI, які мають існувати до запуску коду плагіна |
package.json | Метадані npm, встановлення залежностей і блок openclaw, який використовується для entrypoint, керування встановленням, налаштування або метаданих каталогу |
- якщо OpenClaw має знати це до завантаження коду плагіна, помістіть це в
openclaw.plugin.json - якщо це стосується пакування, entry-файлів або поведінки npm install, помістіть це в
package.json
Поля package.json, що впливають на виявлення
Деякі метадані плагіна до запуску середовища виконання навмисно зберігаються вpackage.json у блоці
openclaw, а не в openclaw.plugin.json.
Важливі приклади:
| Field | What it means |
|---|---|
openclaw.extensions | Оголошує власні entrypoint плагіна. |
openclaw.setupEntry | Полегшений entrypoint лише для налаштування, що використовується під час онбордингу й відкладеного запуску каналу. |
openclaw.channel | Недорогі метадані каталогу каналу, такі як мітки, шляхи до документації, псевдоніми та текст вибору. |
openclaw.install.npmSpec / openclaw.install.localPath | Підказки встановлення/оновлення для вбудованих і зовнішньо опублікованих плагінів. |
openclaw.install.defaultChoice | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
openclaw.install.minHostVersion | Мінімальна підтримувана версія хоста OpenClaw із semver-нижньою межею на кшталт >=2026.3.22. |
openclaw.install.allowInvalidConfigRecovery | Дозволяє вузький шлях відновлення перевстановлення вбудованого плагіна, коли конфігурація невалідна. |
openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen | Дозволяє поверхням каналу лише для налаштування завантажуватися до повного плагіна каналу під час запуску. |
openclaw.install.minHostVersion перевіряється під час встановлення та
завантаження реєстру маніфестів. Некоректні значення відхиляються; новіші, але коректні значення пропускають
плагін на старіших хостах.
openclaw.install.allowInvalidConfigRecovery навмисно вузький. Він
не робить довільно зламані конфігурації придатними до встановлення. Наразі він лише дозволяє
потокам встановлення відновлюватися після певних застарілих збоїв оновлення вбудованих плагінів, таких як
відсутній шлях до вбудованого плагіна або застарілий запис channels.<id> для цього ж
вбудованого плагіна. Непов’язані помилки конфігурації й надалі блокують встановлення і спрямовують операторів
до openclaw doctor --fix.
Вимоги до JSON Schema
- Кожен плагін має постачатися з JSON Schema, навіть якщо він не приймає конфігурацію.
- Порожня schema допустима (наприклад,
{ "type": "object", "additionalProperties": false }). - Schema проходять валідацію під час читання/запису конфігурації, а не під час виконання.
Поведінка валідації
- Невідомі ключі
channels.*є помилками, якщо тільки id каналу не оголошено в маніфесті плагіна. plugins.entries.<id>,plugins.allow,plugins.denyіplugins.slots.*мають посилатися на виявлювані id плагінів. Невідомі id є помилками.- Якщо плагін установлено, але він має зламаний або відсутній маніфест чи schema, валідація завершується помилкою, а Doctor повідомляє про помилку плагіна.
- Якщо конфігурація плагіна існує, але сам плагін вимкнений, конфігурація зберігається, і у Doctor + журналах з’являється попередження.
plugins.* див. у Довіднику з конфігурації.
Примітки
- Маніфест обов’язковий для власних плагінів OpenClaw, зокрема при локальному завантаженні з файлової системи.
- Середовище виконання й надалі завантажує модуль плагіна окремо; маніфест використовується лише для виявлення + валідації.
- Власні маніфести розбираються за допомогою JSON5, тож коментарі, кінцеві коми й ключі без лапок допускаються, якщо кінцеве значення все ще є об’єктом.
- Завантажувач маніфесту зчитує лише документовані поля маніфесту. Не додавайте сюди власні ключі верхнього рівня.
providerAuthEnvVars— це недорогий шлях метаданих для перевірок автентифікації, валідації env-маркерів та подібних поверхонь автентифікації провайдера, які не повинні запускати середовище виконання плагіна лише для перевірки назв env.providerAuthChoices— це недорогий шлях метаданих для пікерів варіантів автентифікації, визначення--auth-choice, мапінгу бажаного провайдера та простої реєстрації CLI-прапорців онбордингу до завантаження середовища виконання провайдера. Для метаданих майстра середовища виконання, які потребують коду провайдера, див. Хуки середовища виконання провайдера.- Ексклюзивні типи плагінів вибираються через
plugins.slots.*.kind: "memory"вибирається черезplugins.slots.memory.kind: "context-engine"вибирається черезplugins.slots.contextEngine(типово: вбудованийlegacy).
channels,providersіskillsможна опускати, якщо плагіну вони не потрібні.- Якщо ваш плагін залежить від native modules, задокументуйте кроки збирання та всі
вимоги до allowlist менеджера пакетів (наприклад, pnpm
allow-build-scriptspnpm rebuild <package>).
Пов’язане
- Створення плагінів — початок роботи з плагінами
- Архітектура плагінів — внутрішня архітектура
- Огляд SDK — довідник з Plugin SDK