Точки входу плагінів
Кожен плагін експортує типовий об’єкт точки входу. SDK надає три допоміжні функції для їх створення.definePluginEntry
Імпорт: openclaw/plugin-sdk/plugin-entry
Для плагінів провайдерів, плагінів інструментів, плагінів хуків і всього, що не є
каналом обміну повідомленнями.
| Поле | Тип | Обов’язкове | Типове значення |
|---|---|---|---|
id | string | Так | — |
name | string | Так | — |
description | string | Так | — |
kind | string | Ні | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Ні | Порожня схема об’єкта |
register | (api: OpenClawPluginApi) => void | Так | — |
idмає збігатися з вашим маніфестомopenclaw.plugin.json.kindпризначено для ексклюзивних слотів:"memory"або"context-engine".configSchemaможе бути функцією для ледачого обчислення.- OpenClaw визначає та мемоїзує цю схему при першому доступі, тому витратні побудовники схем виконуються лише один раз.
defineChannelPluginEntry
Імпорт: openclaw/plugin-sdk/channel-core
Обгортає definePluginEntry логікою, специфічною для каналів. Автоматично викликає
api.registerChannel({ plugin }), надає необов’язковий шов метаданих CLI для кореневої довідки
та обмежує registerFull режимом реєстрації.
| Поле | Тип | Обов’язкове | Типове значення |
|---|---|---|---|
id | string | Так | — |
name | string | Так | — |
description | string | Так | — |
plugin | ChannelPlugin | Так | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Ні | Порожня схема об’єкта |
setRuntime | (runtime: PluginRuntime) => void | Ні | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | Ні | — |
registerFull | (api: OpenClawPluginApi) => void | Ні | — |
setRuntimeвикликається під час реєстрації, щоб ви могли зберегти посилання на runtime (зазвичай черезcreatePluginRuntimeStore). Під час захоплення метаданих CLI вона пропускається.registerCliMetadataвиконується і під часapi.registrationMode === "cli-metadata", і під часapi.registrationMode === "full". Використовуйте це як канонічне місце для дескрипторів CLI, що належать каналу, щоб коренева довідка залишалася без активації, а звичайна реєстрація команд CLI зберігала сумісність із повними завантаженнями плагінів.registerFullвиконується лише тоді, колиapi.registrationMode === "full". Воно пропускається під час завантаження лише для setup.- Як і у
definePluginEntry,configSchemaможе бути лінивою фабрикою, а OpenClaw мемоїзує визначену схему при першому доступі. - Для кореневих CLI-команд, що належать плагіну, надавайте перевагу
api.registerCli(..., { descriptors: [...] }), якщо хочете, щоб команда залишалася ліниво завантажуваною, але не зникала з дерева розбору кореневого CLI. Для каналових плагінів надавайте перевагу реєстрації цих дескрипторів ізregisterCliMetadata(...), аregisterFull(...)зосередьте на роботі, потрібній лише під час runtime. - Якщо
registerFull(...)також реєструє gateway RPC-методи, тримайте їх на префіксі, специфічному для плагіна. Зарезервовані простори назв адміністрування ядра (config.*,exec.approvals.*,wizard.*,update.*) завжди примусово переводяться вoperator.admin.
defineSetupPluginEntry
Імпорт: openclaw/plugin-sdk/channel-core
Для полегшеного файла setup-entry.ts. Повертає лише { plugin } без
логіки runtime або CLI.
defineSetupPluginEntry(...) із вузькими сімействами допоміжних функцій setup:
openclaw/plugin-sdk/setup-runtimeдля безпечних для runtime допоміжних функцій setup, як-от безпечні для імпорту адаптери патчів setup, вивід приміток lookup,promptResolvedAllowFrom,splitSetupEntriesі делеговані проксі setupopenclaw/plugin-sdk/channel-setupдля поверхонь setup необов’язкового встановленняopenclaw/plugin-sdk/setup-toolsдля допоміжних функцій CLI/архівів/документації для setup/install
Режим реєстрації
api.registrationMode повідомляє вашому плагіну, як саме його було завантажено:
| Режим | Коли | Що реєструвати |
|---|---|---|
"full" | Звичайний запуск gateway | Усе |
"setup-only" | Вимкнений/не налаштований канал | Лише реєстрацію каналу |
"setup-runtime" | Потік setup із доступним runtime | Реєстрацію каналу плюс лише легкий runtime, потрібний до завантаження повної точки входу |
"cli-metadata" | Коренева довідка / захоплення метаданих CLI | Лише дескриптори CLI |
defineChannelPluginEntry обробляє цей поділ автоматично. Якщо ви використовуєте
definePluginEntry безпосередньо для каналу, перевіряйте режим самостійно:
"setup-runtime" як проміжок, у якому поверхні запуску лише для setup мають
існувати без повторного входу в повний bundled runtime каналу. Добре підходять
реєстрація каналу, безпечні для setup HTTP-маршрути, безпечні для setup gateway-методи та
делеговані допоміжні функції setup. Важкі фонові сервіси, реєстратори CLI та
завантаження SDK провайдерів/клієнтів, як і раніше, належать до "full".
Зокрема для реєстраторів CLI:
- використовуйте
descriptors, коли реєстратор володіє однією або кількома кореневими командами і ви хочете, щоб OpenClaw ліниво завантажував справжній модуль CLI при першому виклику - переконайтеся, що ці дескриптори охоплюють кожен корінь команди верхнього рівня, який відкриває реєстратор
- використовуйте лише
commandsдля жадібних шляхів сумісності
Форми плагінів
OpenClaw класифікує завантажені плагіни за їхньою поведінкою реєстрації:| Форма | Опис |
|---|---|
| plain-capability | Один тип можливостей (наприклад, лише провайдер) |
| hybrid-capability | Кілька типів можливостей (наприклад, провайдер + speech) |
| hook-only | Лише hooks, без можливостей |
| non-capability | Інструменти/команди/сервіси, але без можливостей |
openclaw plugins inspect <id>, щоб побачити форму плагіна.
Пов’язане
- Огляд SDK — API реєстрації та довідник за subpath
- Допоміжні функції runtime —
api.runtimeіcreatePluginRuntimeStore - Setup and Config — маніфест, setup entry, відкладене завантаження
- Channel Plugins — створення об’єкта
ChannelPlugin - Provider Plugins — реєстрація провайдерів і hooks