chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-01 21:44:11 +00:00
parent 534f4518c8
commit d35dce3020
3 changed files with 842 additions and 840 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,24 @@
---
read_when:
- Вам потрібен точний сигнатурний тип `definePluginEntry` або `defineChannelPluginEntry`
- Ви хочете зрозуміти режим реєстрації (повний vs налаштування vs метадані CLI)
- Вам потрібна точна сигнатура типу `definePluginEntry` або `defineChannelPluginEntry`
- Ви хочете зрозуміти режим реєстрації (повний, налаштування чи метадані CLI)
- Ви шукаєте параметри точки входу
sidebarTitle: Entry Points
summary: Довідка для `definePluginEntry`, `defineChannelPluginEntry` і `defineSetupPluginEntry`
summary: Довідка щодо definePluginEntry, defineChannelPluginEntry і defineSetupPluginEntry
title: Точки входу Plugin
x-i18n:
generated_at: "2026-04-25T02:40:27Z"
model: gpt-5.4
generated_at: "2026-05-01T21:40:28Z"
model: gpt-5.5
provider: openai
source_hash: 8253cf0ac43ca11b42c0032027bba6e926c961b54901caaa63da70bd5ff5aab5
source_hash: a29e7e12c38fb579bb78a0e1e753edafc43298c2795504969c3477c849a5d74d
source_path: plugins/sdk-entrypoints.md
workflow: 15
workflow: 16
---
Кожен Plugin експортує типовий об’єкт точки входу. SDK надає три хелпери для
Кожен Plugin експортує стандартний об’єкт входу. SDK надає три допоміжні функції для
їх створення.
Для встановлених Plugin `package.json` має спрямовувати завантаження під час виконання на зібраний
Для встановлених Plugins `package.json` має спрямовувати завантаження runtime на зібраний
JavaScript, коли він доступний:
```json
@ -32,23 +32,30 @@ JavaScript, коли він доступний:
}
```
`extensions` і `setupEntry` залишаються валідними точками входу вихідного коду для розробки у workspace та git checkout.
`runtimeExtensions` і `runtimeSetupEntry` мають пріоритет, коли OpenClaw завантажує встановлений пакет, і дають змогу npm-пакетам уникати компіляції TypeScript під час виконання. Якщо встановлений пакет оголошує лише точку входу вихідного коду TypeScript, OpenClaw використає відповідний зібраний peer `dist/*.js`, якщо він існує, а потім повернеться до вихідного коду TypeScript.
`extensions` і `setupEntry` залишаються чинними вихідними точками входу для розробки
у workspace та git checkout. `runtimeExtensions` і `runtimeSetupEntry` є бажаними,
коли OpenClaw завантажує встановлений пакет, і дають змогу npm-пакетам уникати runtime-компіляції
TypeScript. Явні runtime-точки входу є обов’язковими: `runtimeSetupEntry`
потребує `setupEntry`, а відсутні артефакти `runtimeExtensions` або `runtimeSetupEntry`
призводять до помилки встановлення чи виявлення замість мовчазного fallback до джерела. Якщо
встановлений пакет оголошує лише вихідну точку входу TypeScript, OpenClaw використає
відповідний зібраний peer `dist/*.js`, коли він існує, а потім fallback до вихідного
TypeScript.
Усі шляхи точок входу мають залишатися в межах каталогу пакета Plugin. Точки входу під час виконання
та виведені з них peer-файли зібраного JavaScript не роблять валідним шлях `extensions` або
`setupEntry`, що виходить за межі пакета.
Усі шляхи точок входу мають залишатися всередині каталогу пакета Plugin. Runtime-точки входу
та виведені зібрані JavaScript peers не роблять чинним вихідний шлях `extensions` або
`setupEntry`, який виходить за межі пакета.
<Tip>
**Шукаєте покрокове пояснення?** Див. [Channel Plugins](/uk/plugins/sdk-channel-plugins)
або [Provider Plugins](/uk/plugins/sdk-provider-plugins) для покрокових інструкцій.
**Потрібен покроковий огляд?** Див. [Channel Plugins](/uk/plugins/sdk-channel-plugins)
або [Provider Plugins](/uk/plugins/sdk-provider-plugins) для покрокових посібників.
</Tip>
## `definePluginEntry`
**Імпорт:** `openclaw/plugin-sdk/plugin-entry`
Для Plugin провайдерів, Plugin інструментів, Plugin хуків і всього, що **не є**
Для provider Plugins, tool Plugins, hook Plugins і всього, що **не є**
каналом обміну повідомленнями.
```typescript
@ -69,27 +76,27 @@ export default definePluginEntry({
});
```
| Поле | Тип | Обов’язково | Типове значення |
| -------------- | ---------------------------------------------------------------- | ----------- | ------------------- |
| `id` | `string` | Так | — |
| `name` | `string` | Так | — |
| `description` | `string` | Так | — |
| `kind` | `string` | Ні | — |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | Ні | Порожня схема об’єкта |
| `register` | `(api: OpenClawPluginApi) => void` | Так | — |
| Поле | Тип | Обов’язкове | Типово |
| ------------- | ---------------------------------------------------------------- | ----------- | ------------------------- |
| `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 обчислює та мемоїзує цю схему під час першого доступу, тому дорогі побудовники схем
запускаються лише один раз.
- `id` має відповідати вашому маніфесту `openclaw.plugin.json`.
- `kind` призначений для ексклюзивних слотів: `"memory"` або `"context-engine"`.
- `configSchema` може бути функцією для відкладеного обчислення.
- OpenClaw розв’язує та memoizes цю схему під час першого доступу, тому затратні побудовники схем
виконуються лише один раз.
## `defineChannelPluginEntry`
**Імпорт:** `openclaw/plugin-sdk/channel-core`
Обгортає `definePluginEntry` логікою, специфічною для каналу. Автоматично викликає
`api.registerChannel({ plugin })`, відкриває необов’язковий seam метаданих CLI для кореневої довідки
Огортає `definePluginEntry` із wiring, специфічним для каналу. Автоматично викликає
`api.registerChannel({ plugin })`, надає необов’язковий seam метаданих CLI для root-help
і обмежує `registerFull` режимом реєстрації.
```typescript
@ -110,48 +117,48 @@ export default defineChannelPluginEntry({
});
```
| Поле | Тип | Обов’язково | Типове значення |
| --------------------- | ---------------------------------------------------------------- | ----------- | ------------------- |
| `id` | `string` | Так | — |
| `name` | `string` | Так | — |
| `description` | `string` | Так | — |
| `plugin` | `ChannelPlugin` | Так | — |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | Ні | Порожня схема об’єкта |
| `setRuntime` | `(runtime: PluginRuntime) => void` | Ні | — |
| `registerCliMetadata` | `(api: OpenClawPluginApi) => void` | Ні | — |
| `registerFull` | `(api: OpenClawPluginApi) => void` | Ні | — |
| Поле | Тип | Обов’язкове | Типово |
| -------------------- | ---------------------------------------------------------------- | ----------- | ------------------------- |
| `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.
(зазвичай через `createPluginRuntimeStore`). Під час захоплення метаданих CLI його пропускають.
- `registerCliMetadata` виконується під час `api.registrationMode === "cli-metadata"`,
`api.registrationMode === "discovery"` і
`api.registrationMode === "discovery"` та
`api.registrationMode === "full"`.
Використовуйте його як канонічне місце для CLI-дескрипторів, що належать каналу, щоб коренева довідка
залишалася без активації, знімки discovery включали статичні метадані команд, а
звичайна реєстрація команд CLI залишалася сумісною з повними завантаженнями Plugin.
- Реєстрація в режимі discovery не активує, але й не є вільною від імпорту. OpenClaw може
обчислювати довірену точку входу Plugin і модуль channel Plugin, щоб побудувати
знімок, тому зберігайте імпорти верхнього рівня без побічних ефектів, а сокети,
клієнти, воркери та сервіси розміщуйте за шляхами лише для `"full"`.
- `registerFull` виконується лише коли `api.registrationMode === "full"`. Він пропускається
Використовуйте його як канонічне місце для CLI-дескрипторів, що належать каналу, щоб root help
залишалася без активації, знімки виявлення містили статичні метадані команд, а
звичайна реєстрація CLI-команд залишалася сумісною з повними завантаженнями Plugin.
- Реєстрація виявлення є неактивуючою, але не вільною від імпорту. OpenClaw може
виконати довірену точку входу Plugin і модуль channel Plugin для побудови
знімка, тому тримайте top-level imports без побічних ефектів і розміщуйте sockets,
clients, workers і services за шляхами лише для `"full"`.
- `registerFull` виконується лише коли `api.registrationMode === "full"`. Його пропускають
під час завантаження лише для setup.
- Як і у `definePluginEntry`, `configSchema` може бути лінивою фабрикою, а OpenClaw
мемоїзує обчислену схему під час першого доступу.
- Для кореневих CLI-команд, що належать Plugin, віддавайте перевагу `api.registerCli(..., { descriptors: [...] })`,
якщо хочете, щоб команда залишалася ліниво завантажуваною, не зникаючи з
дерева розбору кореневого CLI. Для channel Plugin віддавайте перевагу реєстрації таких дескрипторів
із `registerCliMetadata(...)`, а `registerFull(...)` залишайте зосередженим на роботі лише під час виконання.
- Якщо `registerFull(...)` також реєструє методи Gateway RPC, залишайте їх
на префіксі, специфічному для Plugin. Зарезервовані простори імен адміністрування ядра (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) завжди примусово приводяться до
- Як і `definePluginEntry`, `configSchema` може бути відкладеною фабрикою, а OpenClaw
memoizes розв’язану схему під час першого доступу.
- Для root CLI-команд, що належать Plugin, надавайте перевагу `api.registerCli(..., { descriptors: [...] })`,
коли хочете, щоб команда залишалася lazy-loaded, не зникаючи з
дерева розбору root CLI. Для channel Plugins надавайте перевагу реєстрації цих дескрипторів
із `registerCliMetadata(...)` і тримайте `registerFull(...)` зосередженим на роботі лише runtime.
- Якщо `registerFull(...)` також реєструє методи Gateway RPC, тримайте їх на
префіксі, специфічному для Plugin. Зарезервовані core admin namespaces (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) завжди примусово переводяться в
`operator.admin`.
## `defineSetupPluginEntry`
**Імпорт:** `openclaw/plugin-sdk/channel-core`
Для легковагового файла `setup-entry.ts`. Повертає лише `{ plugin }` без
runtime чи CLI-логіки.
Для легкого файла `setup-entry.ts`. Повертає лише `{ plugin }` без
runtime або CLI wiring.
```typescript
import { defineSetupPluginEntry } from "openclaw/plugin-sdk/channel-core";
@ -161,24 +168,24 @@ export default defineSetupPluginEntry(myChannelPlugin);
OpenClaw завантажує це замість повної точки входу, коли канал вимкнений,
не налаштований або коли ввімкнене відкладене завантаження. Див.
[Setup and Config](/uk/plugins/sdk-setup#setup-entry), щоб зрозуміти, коли це має значення.
[Setup and Config](/uk/plugins/sdk-setup#setup-entry), щоб дізнатися, коли це має значення.
На практиці поєднуйте `defineSetupPluginEntry(...)` із вузькими сімействами setup-хелперів:
На практиці поєднуйте `defineSetupPluginEntry(...)` із вузькими сімействами setup helpers:
- `openclaw/plugin-sdk/setup-runtime` для безпечних для runtime setup-хелперів, таких як
адаптери setup-патчів, безпечні для імпорту, вивід lookup-note,
`promptResolvedAllowFrom`, `splitSetupEntries` і делеговані setup-проксі
- `openclaw/plugin-sdk/channel-setup` для поверхонь setup з необов’язковим встановленням
- `openclaw/plugin-sdk/setup-tools` для CLI/archive/docs-хелперів setup/install
- `openclaw/plugin-sdk/setup-runtime` для runtime-safe setup helpers, таких як
import-safe setup patch adapters, lookup-note output,
`promptResolvedAllowFrom`, `splitSetupEntries` і делеговані setup proxies
- `openclaw/plugin-sdk/channel-setup` для optional-install setup surfaces
- `openclaw/plugin-sdk/setup-tools` для setup/install CLI/archive/docs helpers
Тримайте важкі SDK, реєстрацію CLI та довгоживучі runtime-сервіси в повній
Тримайте важкі SDK, реєстрацію CLI та довгоживучі runtime-сервіси у повній
точці входу.
Вбудовані workspace-канали, які розділяють setup- і runtime-поверхні, можуть натомість використовувати
Bundled workspace channels, які розділяють setup і runtime surfaces, можуть натомість використовувати
`defineBundledChannelSetupEntry(...)` з
`openclaw/plugin-sdk/channel-entry-contract`. Цей контракт дає змогу
точці входу setup зберігати безпечні для setup експорти plugin/secrets, водночас відкриваючи
setter runtime:
`openclaw/plugin-sdk/channel-entry-contract`. Цей contract дає setup entry змогу
зберігати setup-safe plugin/secrets exports, водночас усе ще надаючи
runtime setter:
```typescript
import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
@ -196,23 +203,23 @@ export default defineBundledChannelSetupEntry({
});
```
Використовуйте цей вбудований контракт лише тоді, коли setup-потокам справді потрібен легковаговий
setter runtime до завантаження повної точки входу каналу.
Використовуйте цей bundled contract лише тоді, коли setup flows справді потребують легкого runtime
setter до завантаження повної точки входу каналу.
## Режим реєстрації
`api.registrationMode` повідомляє вашому Plugin, як саме його було завантажено:
`api.registrationMode` повідомляє вашому Plugin, як його було завантажено:
| Режим | Коли | Що реєструвати |
| ----------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `"full"` | Звичайний запуск Gateway | Усе |
| `"discovery"` | Discovery можливостей лише для читання | Реєстрація каналу плюс статичні CLI-дескриптори; код точки входу може завантажуватися, але пропускайте сокети, воркери, клієнти та сервіси |
| `"setup-only"` | Вимкнений/неналаштований канал | Лише реєстрація каналу |
| `"setup-runtime"` | Потік setup з доступним runtime | Реєстрація каналу плюс лише легковаговий runtime, потрібний до завантаження повної точки входу |
| `"cli-metadata"` | Коренева довідка / захоплення метаданих CLI | Лише CLI-дескриптори |
| Режим | Коли | Що реєструвати |
| ----------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `"full"` | Звичайний запуск Gateway | Усе |
| `"discovery"` | Read-only capability discovery | Реєстрація каналу плюс статичні CLI-дескриптори; код точки входу може завантажуватися, але пропускайте sockets, workers, clients і services |
| `"setup-only"` | Вимкнений/неналаштований канал | Лише реєстрація каналу |
| `"setup-runtime"` | Setup flow з доступним runtime | Реєстрація каналу плюс лише легкий runtime, потрібний до завантаження повної точки входу |
| `"cli-metadata"` | Root help / захоплення метаданих CLI | Лише CLI-дескриптори |
`defineChannelPluginEntry` обробляє цей поділ автоматично. Якщо ви використовуєте
`definePluginEntry` безпосередньо для каналу, самі перевіряйте режим:
`definePluginEntry` безпосередньо для каналу, перевіряйте режим самостійно:
```typescript
register(api) {
@ -233,47 +240,48 @@ register(api) {
}
```
Режим discovery будує знімок реєстру без активації. Він усе ж може обчислювати
точку входу Plugin і об’єкт channel Plugin, щоб OpenClaw міг зареєструвати можливості каналу
та статичні CLI-дескриптори. Ставтеся до обчислення модуля в discovery як до
довіреного, але легковагового: без мережевих клієнтів, підпроцесів, слухачів, з’єднань із базою даних,
фонових воркерів, читання облікових даних чи інших побічних ефектів живого runtime на верхньому рівні.
Режим discovery будує неактивуючий знімок реєстру. Він все ще може виконати
точку входу Plugin і об’єкт channel Plugin, щоб OpenClaw міг зареєструвати
можливості каналу та статичні CLI-дескриптори. Ставтеся до виконання модуля в discovery як до
довіреного, але легкого: жодних network clients, subprocesses, listeners, database
connections, background workers, credential reads або інших live runtime side
effects на top level.
Сприймайте `"setup-runtime"` як вікно, у якому поверхні запуску лише для setup мають
існувати без повторного входу в повний bundled runtime каналу. Добре підходять
реєстрація каналу, безпечні для setup HTTP-маршрути, безпечні для setup методи Gateway
і делеговані setup-хелпери. Важкі фонові сервіси, реєстратори CLI
та завантаження SDK провайдерів/клієнтів усе ще належать до `"full"`.
Сприймайте `"setup-runtime"` як вікно, у якому setup-only startup surfaces мають
існувати без повторного входу в повний bundled channel runtime. Добре підходять
реєстрація каналу, setup-safe HTTP routes, setup-safe Gateway methods і
делеговані setup helpers. Важкі background services, CLI registrars і
provider/client SDK bootstraps усе ще належать до `"full"`.
Зокрема для реєстраторів CLI:
Для CLI registrars зокрема:
- використовуйте `descriptors`, коли реєстратор володіє однією чи кількома кореневими командами і ви
хочете, щоб OpenClaw ліниво завантажував справжній модуль CLI під час першого виклику
- переконайтеся, що ці дескриптори охоплюють кожен корінь команди верхнього рівня, який відкриває
реєстратор
- імена команд дескрипторів мають містити лише літери, цифри, дефіс і підкреслення,
починаючись із літери або цифри; OpenClaw відхиляє імена дескрипторів поза
цією формою та прибирає керувальні послідовності термінала з описів перед
показом довідки
- використовуйте лише `commands` тільки для eager-шляхів сумісності
- використовуйте `descriptors`, коли registrar володіє однією чи кількома root-командами і ви
хочете, щоб OpenClaw lazy-load реальний CLI-модуль під час першого виклику
- переконайтеся, що ці descriptors покривають кожен root top-level command, який надає
registrar
- обмежуйте імена команд descriptors літерами, цифрами, дефісом і підкресленням,
починаючи з літери або цифри; OpenClaw відхиляє імена descriptors поза
цією формою та видаляє terminal control sequences з описів перед
відтворенням help
- використовуйте лише `commands` тільки для eager compatibility paths
## Форми Plugin
OpenClaw класифікує завантажені Plugin за їхньою поведінкою реєстрації:
OpenClaw класифікує завантажені плагіни за їхньою поведінкою реєстрації:
| Форма | Опис |
| --------------------- | -------------------------------------------------- |
| **plain-capability** | Один тип можливостей (наприклад, лише провайдер) |
| **hybrid-capability** | Кілька типів можливостей (наприклад, провайдер + мовлення) |
| **hook-only** | Лише хуки, без можливостей |
| **non-capability** | Інструменти/команди/сервіси, але без можливостей |
| **plain-capability** | Один тип можливості (наприклад, лише provider) |
| **hybrid-capability** | Кілька типів можливостей (наприклад, provider + speech) |
| **hook-only** | Лише hooks, без можливостей |
| **non-capability** | Tools/commands/services, але без можливостей |
Використовуйте `openclaw plugins inspect <id>`, щоб побачити форму Plugin.
Використовуйте `openclaw plugins inspect <id>`, щоб переглянути форму плагіна.
## Пов’язане
- [SDK Overview](/uk/plugins/sdk-overview) — API реєстрації та довідка щодо subpath
- [Runtime Helpers](/uk/plugins/sdk-runtime) — `api.runtime` і `createPluginRuntimeStore`
- [Setup and Config](/uk/plugins/sdk-setup) — маніфест, точка входу setup, відкладене завантаження
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — побудова об’єкта `ChannelPlugin`
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — реєстрація провайдера та хуки
- [Огляд SDK](/uk/plugins/sdk-overview) — API реєстрації та довідник subpath
- [Допоміжні засоби Runtime](/uk/plugins/sdk-runtime) — `api.runtime` і `createPluginRuntimeStore`
- [Налаштування та конфігурація](/uk/plugins/sdk-setup) — manifest, setup entry, відкладене завантаження
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення об’єкта `ChannelPlugin`
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — реєстрація provider і hooks

View File

@ -1,27 +1,26 @@
---
read_when:
- Встановлення або налаштування плагінів
- Розуміння правил виявлення й завантаження Plugin
- Розуміння правил виявлення та завантаження Plugin
- Робота з пакетами Plugin, сумісними з Codex/Claude
sidebarTitle: Install and Configure
summary: Встановлення, налаштування та керування плагінами OpenClaw
summary: Встановлення, налаштування та керування Plugin OpenClaw
title: Plugins
x-i18n:
generated_at: "2026-05-01T21:00:17Z"
generated_at: "2026-05-01T21:40:38Z"
model: gpt-5.5
provider: openai
source_hash: 32e89479c899f05756ba2853728ff9428e1b0ef866d336bba721a962f5546a8b
source_hash: 0dbb4d0102f3f2060fe13aa5e6ae1b24080a456f223e985ccfa390106e94f4d8
source_path: tools/plugin.md
workflow: 16
---
Plugin розширюють OpenClaw новими можливостями: канали, постачальники моделей,
оболонки агентів, інструменти, Skills, мовлення, транскрипція в реальному часі,
голос у реальному часі, розуміння медіа, генерація зображень, генерація відео,
отримання вебданих, вебпошук тощо. Деякі Plugin є **основними** (постачаються з OpenClaw), інші
є **зовнішніми**. Більшість зовнішніх Plugin публікуються та знаходяться через
[ClawHub](/uk/tools/clawhub). Npm залишається підтримуваним для прямих встановлень і для
тимчасового набору пакетів Plugin, що належать OpenClaw, доки ця міграція завершується.
Plugin-и розширюють OpenClaw новими можливостями: каналами, провайдерами моделей,
обв’язками агентів, інструментами, Skills, мовленням, транскрипцією в реальному часі, голосом у реальному часі, розумінням медіа, генерацією зображень, генерацією відео, отриманням вебвмісту, вебпошуком
і не тільки. Деякі Plugin-и є **core** (постачаються з OpenClaw), інші
є **зовнішніми**. Більшість зовнішніх Plugin-ів публікуються й знаходяться через
[ClawHub](/uk/tools/clawhub). Npm і надалі підтримується для прямих встановлень і для
тимчасового набору пакетів Plugin-ів, що належать OpenClaw, доки ця міграція завершується.
## Швидкий старт
@ -32,7 +31,7 @@ Plugin розширюють OpenClaw новими можливостями: ка
```
</Step>
<Step title="Встановіть Plugin">
<Step title="Установіть Plugin">
```bash
# From npm
openclaw plugins install npm:@acme/openclaw-plugin
@ -52,7 +51,7 @@ Plugin розширюють OpenClaw новими можливостями: ка
openclaw gateway restart
```
Потім налаштуйте в `plugins.entries.\<id\>.config` у вашому конфігураційному файлі.
Потім налаштуйте в `plugins.entries.\<id\>.config` у вашому файлі конфігурації.
</Step>
@ -64,9 +63,9 @@ Plugin розширюють OpenClaw новими можливостями: ка
openclaw <plugin-command> --help
```
Використовуйте `--runtime`, коли потрібно підтвердити зареєстровані інструменти, служби, gateway
методи, хуки або CLI-команди, що належать Plugin. Звичайний `inspect` є холодною
перевіркою маніфесту/реєстру й навмисно не імпортує runtime Plugin.
Використовуйте `--runtime`, коли потрібно підтвердити зареєстровані інструменти, сервіси, gateway
методи, хуки або CLI-команди, що належать Plugin-у. Звичайний `inspect` — це холодна
перевірка маніфесту/реєстру, яка навмисно уникає імпортування runtime Plugin-а.
</Step>
</Steps>
@ -79,65 +78,65 @@ Plugin розширюють OpenClaw новими можливостями: ка
/plugin enable <plugin-id>
```
Шлях встановлення використовує той самий розв’язувач, що й CLI: локальний шлях/архів, явний
`clawhub:<pkg>`, явний `npm:<pkg>`, явний `git:<repo>` або проста специфікація пакета
(спочатку ClawHub, потім запасний варіант npm).
Шлях встановлення використовує той самий резолвер, що й CLI: локальний шлях/архів, явний
`clawhub:<pkg>`, явний `npm:<pkg>`, явний `git:<repo>` або просту специфікацію пакета
(спочатку ClawHub, потім резервно npm).
Якщо конфігурація недійсна, встановлення зазвичай безпечно завершується помилкою і скеровує вас до
`openclaw doctor --fix`. Єдиний виняток для відновлення — вузький шлях
перевстановлення вбудованих Plugin для Plugin, які погоджуються на
Якщо конфігурація недійсна, встановлення зазвичай завершується без змін і спрямовує вас до
`openclaw doctor --fix`. Єдиний виняток відновлення — вузький шлях перевстановлення вбудованого Plugin-а для Plugin-ів, які увімкнули
`openclaw.install.allowInvalidConfigRecovery`.
Під час запуску Gateway недійсна конфігурація одного Plugin ізолюється до цього Plugin:
запуск записує в журнали проблему `plugins.entries.<id>.config`, пропускає цей Plugin під час
завантаження й залишає інші Plugin та канали онлайн. Запустіть `openclaw doctor --fix`,
щоб помістити погану конфігурацію Plugin у карантин, вимкнувши цей запис Plugin і видаливши
його недійсне конфігураційне навантаження; звичайна резервна копія конфігурації зберігає попередні значення.
Коли конфігурація каналу посилається на Plugin, який більше не вдається знайти, але той самий
застарілий ідентифікатор Plugin залишається в конфігурації Plugin або записах встановлення, запуск Gateway
записує попередження в журнали й пропускає цей канал замість блокування всіх інших каналів.
Запустіть `openclaw doctor --fix`, щоб видалити застарілі записи каналу/Plugin; невідомі
ключі каналів без доказів застарілого Plugin все одно не проходять валідацію, щоб помилки введення залишалися
видимими.
Якщо встановлено `plugins.enabled: false`, застарілі посилання на Plugin вважаються інертними:
запуск Gateway пропускає роботу з виявлення/завантаження Plugin, а `openclaw doctor` зберігає
вимкнену конфігурацію Plugin замість автоматичного видалення. Повторно увімкніть Plugin перед
запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори Plugin.
Під час запуску Gateway недійсна конфігурація одного Plugin-а ізолюється до цього Plugin-а:
запуск журналює проблему `plugins.entries.<id>.config`, пропускає цей Plugin під час
завантаження та залишає інші Plugin-и й канали онлайн. Запустіть `openclaw doctor --fix`,
щоб помістити проблемну конфігурацію Plugin-а в карантин, вимкнувши цей запис Plugin-а й вилучивши
його недійсний конфігураційний payload; звичайна резервна копія конфігурації зберігає попередні значення.
Коли конфігурація каналу посилається на Plugin, який більше не виявляється, але той самий застарілий id Plugin-а залишається в конфігурації Plugin-ів або записах встановлення, запуск Gateway
журналює попередження й пропускає цей канал замість блокування всіх інших каналів.
Запустіть `openclaw doctor --fix`, щоб вилучити застарілі записи каналу/Plugin-а; невідомі
ключі каналів без ознак застарілого Plugin-а й надалі не проходять валідацію, щоб друкарські помилки залишалися
помітними.
Якщо встановлено `plugins.enabled: false`, застарілі посилання на Plugin-и вважаються інертними:
запуск Gateway пропускає виявлення/завантаження Plugin-ів, а `openclaw doctor` зберігає
вимкнену конфігурацію Plugin-ів замість автоматичного вилучення. Знову ввімкніть Plugin-и перед
запуском очищення doctor, якщо хочете вилучити застарілі id Plugin-ів.
Встановлення залежностей Plugin відбувається лише під час явних потоків встановлення/оновлення або
відновлення doctor. Запуск Gateway, перезавантаження конфігурації та runtime-інспекція не
запускають менеджери пакетів і не відновлюють дерева залежностей. Локальні Plugin уже повинні
мати встановлені залежності, тоді як npm, git і ClawHub Plugin
встановлюються під керованими коренями Plugin OpenClaw із локальними для пакета
залежностями. Зовнішні Plugin і користувацькі шляхи завантаження все одно мають встановлюватися
Встановлення залежностей Plugin-а відбувається лише під час явних потоків install/update або
doctor repair. Запуск Gateway, перезавантаження конфігурації та runtime-інспекція не
запускають менеджери пакетів і не ремонтують дерева залежностей. Локальні Plugin-и вже повинні
мати встановлені залежності, тоді як npm, git і ClawHub Plugin
встановлюються в керовані корені Plugin-ів OpenClaw із локальними для пакета
залежностями. Зовнішні Plugin-и та власні шляхи завантаження все одно потрібно встановлювати
через `openclaw plugins install`.
Див. [Розв’язання залежностей Plugin](/uk/plugins/dependency-resolution) для життєвого циклу
під час встановлення.
Див. [Розв’язання залежностей Plugin-а](/uk/plugins/dependency-resolution) щодо
життєвого циклу під час встановлення.
## Типи Plugin
## Типи Plugin-ів
OpenClaw розпізнає два формати Plugin:
OpenClaw розпізнає два формати Plugin-ів:
| Формат | Як це працює | Приклади |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
| **Нативний** | `openclaw.plugin.json` + runtime-модуль; виконується в процесі | Офіційні Plugin, пакети npm спільноти |
| **Bundle** | Сумісна з Codex/Claude/Cursor структура; зіставляється з можливостями OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
| **Native** | `openclaw.plugin.json` + runtime-модуль; виконується в процесі | Офіційні Plugin-и, community npm-пакети |
| **Bundle** | Макет, сумісний із Codex/Claude/Cursor; зіставляється з можливостями OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
Обидва з’являються в `openclaw plugins list`. Див. [Пакети Plugin](/uk/plugins/bundles) для деталей пакетів.
Обидва відображаються в `openclaw plugins list`. Див. [Plugin Bundles](/uk/plugins/bundles) щодо деталей bundle.
Якщо ви пишете нативний Plugin, почніть із [Створення Plugin](/uk/plugins/building-plugins)
і [Огляд Plugin SDK](/uk/plugins/sdk-overview).
Якщо ви пишете native Plugin, почніть із [Створення Plugin-ів](/uk/plugins/building-plugins)
і [Огляду Plugin SDK](/uk/plugins/sdk-overview).
## Точки входу пакета
## Точки входу пакетів
Пакети npm нативних Plugin мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має залишатися всередині каталогу пакета й розв’язуватися в читабельний
runtime-файл або в початковий файл TypeScript з виведеним зібраним JavaScript
парним файлом, наприклад `src/index.ts` до `dist/index.js`.
Npm-пакети native Plugin-ів мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має залишатися всередині директорії пакета й резолвитися в читабельний
runtime-файл або у TypeScript-файл вихідного коду з виведеним побудованим JavaScript
відповідником, як-от `src/index.ts` до `dist/index.js`.
Використовуйте `openclaw.runtimeExtensions`, коли опубліковані runtime-файли не розташовані за
тими самими шляхами, що й початкові записи. Коли `runtimeExtensions` присутній, він має містити
рівно один запис для кожного запису `extensions`. Невідповідні списки спричиняють помилку встановлення та
виявлення Plugin замість тихого повернення до початкових шляхів.
тими самими шляхами, що й вихідні записи. За наявності `runtimeExtensions` має містити
рівно один запис для кожного запису `extensions`. Невідповідні списки призводять до помилки встановлення та
виявлення Plugin-а замість тихого відкату до шляхів вихідного коду. Якщо ви також
публікуєте `openclaw.setupEntry`, використовуйте `openclaw.runtimeSetupEntry` для його побудованого
JavaScript-відповідника; цей файл є обов’язковим, якщо оголошений.
```json
{
@ -149,19 +148,19 @@ runtime-файл або в початковий файл TypeScript з виве
}
```
## Офіційні Plugin
## Офіційні Plugin
### Npm-пакети, що належать OpenClaw, під час міграції
ClawHub є основним шляхом розповсюдження для більшості Plugin. Поточні упаковані
релізи OpenClaw уже містять багато офіційних Plugin, тож у звичайних налаштуваннях для них не потрібні
окремі npm-встановлення. Доки кожен Plugin, що належить OpenClaw, не
мігрує до ClawHub, OpenClaw все ще постачає деякі пакети Plugin `@openclaw/*` в
npm для старіших/користувацьких встановлень і прямих npm-процесів.
ClawHub є основним шляхом розповсюдження для більшості Plugin-ів. Поточні пакетовані
релізи OpenClaw вже містять багато офіційних Plugin-ів, тож вони не потребують
окремих npm-встановлень у звичайних налаштуваннях. Доки кожен Plugin, що належить OpenClaw, не
мігрував до ClawHub, OpenClaw і надалі постачає деякі пакети Plugin-ів `@openclaw/*` в
npm для старіших/власних встановлень і прямих npm-процесів.
Якщо npm повідомляє, що пакет Plugin `@openclaw/*` є застарілим, ця версія пакета
походить зі старішої лінійки зовнішніх пакетів. Використовуйте вбудований Plugin із
поточного OpenClaw або локальний checkout, доки не буде опубліковано новіший npm-пакет.
Якщо npm повідомляє, що пакет Plugin-а `@openclaw/*` застарілий, ця версія пакета
походить зі старішої зовнішньої лінійки пакетів. Використовуйте вбудований Plugin із
поточного OpenClaw або локальний checkout, доки новіший npm-пакет не буде опубліковано.
| Plugin | Пакет | Документація |
| --------------- | -------------------------- | ------------------------------------------ |
@ -179,10 +178,10 @@ npm для старіших/користувацьких встановлень
| Zalo | `@openclaw/zalo` | [Zalo](/uk/channels/zalo) |
| Zalo Personal | `@openclaw/zalouser` | [Zalo Personal](/uk/plugins/zalouser) |
### Основні (постачаються з OpenClaw)
### Core (постачається з OpenClaw)
<AccordionGroup>
<Accordion title=остачальники моделей (увімкнені за замовчуванням)">
<Accordion title=ровайдери моделей (увімкнено за замовчуванням)">
`anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`,
`huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `qwen`,
`moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`,
@ -190,27 +189,27 @@ npm для старіших/користувацьких встановлень
`vercel-ai-gateway`, `volcengine`, `xiaomi`, `zai`
</Accordion>
<Accordion title="Plugin пам’яті">
- `memory-core` — вбудований пошук у пам’яті (за замовчуванням через `plugins.slots.memory`)
- `memory-lancedb` — довготривала пам’ять на базі LanceDB з автоматичним пригадуванням/захопленням (встановіть `plugins.slots.memory = "memory-lancedb"`)
<Accordion title="Memory Plugin-и">
- `memory-core` — вбудований пошук memory (за замовчуванням через `plugins.slots.memory`)
- `memory-lancedb` — довготривала memory на базі LanceDB з auto-recall/capture (встановіть `plugins.slots.memory = "memory-lancedb"`)
Див. [Memory LanceDB](/uk/plugins/memory-lancedb) для налаштування
OpenAI-сумісних embeddings, прикладів Ollama, обмежень пригадування та усунення несправностей.
Див. [Memory LanceDB](/uk/plugins/memory-lancedb) щодо OpenAI-сумісного
налаштування embeddings, прикладів Ollama, лімітів recall і усунення несправностей.
</Accordion>
<Accordion title=остачальники мовлення (увімкнені за замовчуванням)">
<Accordion title=ровайдери мовлення (увімкнено за замовчуванням)">
`elevenlabs`, `microsoft`
</Accordion>
<Accordion title="Інше">
- `browser` — вбудований Plugin браузера для browser tool, CLI `openclaw browser`, gateway-методу `browser.request`, runtime браузера та служби керування браузером за замовчуванням (увімкнено за замовчуванням; вимкніть перед заміною)
- `browser` — вбудований browser Plugin для browser tool, CLI `openclaw browser`, gateway-методу `browser.request`, browser runtime і стандартного сервісу керування браузером (увімкнено за замовчуванням; вимкніть перед заміною)
- `copilot-proxy` — міст VS Code Copilot Proxy (вимкнено за замовчуванням)
</Accordion>
</AccordionGroup>
Шукаєте сторонні Plugin? Див. [Plugin спільноти](/uk/plugins/community).
Шукаєте сторонні Plugin-и? Див. [Community Plugins](/uk/plugins/community).
## Конфігурація
@ -231,115 +230,114 @@ npm для старіших/користувацьких встановлень
| Поле | Опис |
| ---------------- | --------------------------------------------------------- |
| `enabled` | Головний перемикач (за замовчуванням: `true`) |
| `allow` | Allowlist Plugin (необов’язково) |
| `deny` | Denylist Plugin (необов’язково; deny має перевагу) |
| `load.paths` | Додаткові файли/каталоги Plugin |
| `allow` | Allowlist Plugin-ів (необов’язково) |
| `deny` | Denylist Plugin-ів (необов’язково; deny має пріоритет) |
| `load.paths` | Додаткові файли/директорії Plugin-ів |
| `slots` | Ексклюзивні селектори слотів (наприклад, `memory`, `contextEngine`) |
| `entries.\<id\>` | Перемикачі + конфігурація для окремих Plugin |
| `entries.\<id\>` | Перемикачі + конфігурація для окремого Plugin-а |
`plugins.allow` є ексклюзивним. Коли він непорожній, завантажуватися або
відкривати інструменти можуть лише перелічені Plugin, навіть якщо `tools.allow` містить `"*"` або конкретну назву
інструмента, що належить Plugin. Якщо allowlist інструментів посилається на інструменти Plugin, додайте ідентифікатори Plugin-власників
до `plugins.allow` або видаліть `plugins.allow`; `openclaw doctor` попереджає про таку
надавати інструменти можуть лише перелічені Plugin, навіть якщо `tools.allow` містить `"*"` або конкретну назву
інструмента, що належить Plugin-у. Якщо allowlist інструментів посилається на інструменти Plugin-ів, додайте id Plugin-ів-власників
до `plugins.allow` або вилучіть `plugins.allow`; `openclaw doctor` попереджає про таку
форму.
Зміни конфігурації **потребують перезапуску gateway**. Якщо Gateway працює з увімкненими
спостереженням за конфігурацією та перезапуском у процесі (стандартний шлях `openclaw gateway`), цей
перезапуск зазвичай виконується автоматично невдовзі після запису конфігурації.
Підтримуваного шляху гарячого перезавантаження для runtime-коду нативного Plugin або lifecycle
хуків немає; перезапустіть процес Gateway, який обслуговує живий канал, перш ніж
очікувати виконання оновленого коду `register(api)`, хуків `api.on(...)`, інструментів, служб або
provider/runtime хуків.
Зміни конфігурації **потребують перезапуску gateway**. Якщо Gateway працює з увімкненими config
watch + in-process restart (стандартний шлях `openclaw gateway`), такий
перезапуск зазвичай виконується автоматично за мить після запису конфігурації.
Немає підтримуваного шляху hot-reload для runtime-коду native Plugin-а або lifecycle
hooks; перезапустіть процес Gateway, який обслуговує активний канал, перш ніж
очікувати запуску оновленого коду `register(api)`, хуків `api.on(...)`, інструментів, сервісів або
provider/runtime hooks.
`openclaw plugins list` — це локальний знімок реєстру/конфігурації Plugin. Позначений там як
`enabled` Plugin означає, що збережений реєстр і поточна конфігурація дозволяють
Plugin брати участь. Це не доводить, що вже запущений віддалений дочірній процес Gateway
перезапустився з тим самим кодом Plugin. У VPS/container налаштуваннях з
`openclaw plugins list` — це локальний snapshot реєстру/конфігурації Plugin-ів. Plugin зі станом
`enabled` там означає, що збережений реєстр і поточна конфігурація дозволяють
Plugin-у брати участь. Це не доводить, що вже запущений віддалений дочірній процес Gateway
перезапустився з тим самим кодом Plugin-а. У налаштуваннях VPS/контейнерів із
процесами-обгортками надсилайте перезапуски фактичному процесу `openclaw gateway run`
або використовуйте `openclaw gateway restart` для запущеного Gateway.
<Accordion title="Стани Plugin: вимкнений, відсутній, недійсний">
- **Вимкнений**: Plugin існує, але правила ввімкнення його вимкнули. Конфігурація зберігається.
- **Відсутній**: конфігурація посилається на ідентифікатор Plugin, який виявлення не знайшло.
- **Недійсний**: Plugin існує, але його конфігурація не відповідає оголошеній схемі. Запуск Gateway пропускає лише цей Plugin; `openclaw doctor --fix` може помістити недійсний запис у карантин, вимкнувши його та видаливши його конфігураційне навантаження.
<Accordion title="Стани Plugin-а: вимкнений, відсутній або недійсний">
- **Вимкнений**: Plugin існує, але правила ввімкнення вимкнули його. Конфігурація зберігається.
- **Відсутній**: конфігурація посилається на id Plugin-а, який discovery не знайшов.
- **Недійсний**: Plugin існує, але його конфігурація не відповідає оголошеній схемі. Запуск Gateway пропускає лише цей Plugin; `openclaw doctor --fix` може помістити недійсний запис у карантин, вимкнувши його й вилучивши його конфігураційний payload.
</Accordion>
## Виявлення та пріоритетність
OpenClaw сканує Plugin у такому порядку (перша відповідність перемагає):
OpenClaw сканує plugins у такому порядку (перше співпадіння перемагає):
<Steps>
<Step title="Шляхи конфігурації">
`plugins.load.paths` — явні шляхи до файлів або каталогів. Шляхи, що вказують
назад на власні каталоги пакетних вбудованих Plugin OpenClaw, ігноруються;
виконайте `openclaw doctor --fix`, щоб видалити ці застарілі псевдоніми.
`plugins.load.paths` — явні шляхи до файлів або директорій. Шляхи, що вказують
назад на власні упаковані директорії bundled plugin OpenClaw, ігноруються;
запустіть `openclaw doctor --fix`, щоб видалити ці застарілі псевдоніми.
</Step>
<Step title="Plugin робочого простору">
<Step title="Workspace plugins">
`\<workspace\>/.openclaw/<plugin-root>/*.ts` і `\<workspace\>/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Глобальні Plugin">
<Step title="Глобальні plugins">
`~/.openclaw/<plugin-root>/*.ts` і `~/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Вбудовані Plugin">
Постачаються з OpenClaw. Багато з них увімкнено за замовчуванням (провайдери моделей, мовлення).
<Step title="Bundled plugins">
Постачаються з OpenClaw. Багато з них увімкнені за замовчуванням (провайдери моделей, мовлення).
Інші потребують явного ввімкнення.
</Step>
</Steps>
Пакетні встановлення та образи Docker зазвичай знаходять вбудовані Plugin у
скомпільованому дереві `dist/extensions`. Якщо вихідний каталог вбудованого Plugin
змонтовано поверх відповідного пакетного шляху до вихідного коду, наприклад
`/app/extensions/synology-chat`, OpenClaw розглядає цей змонтований вихідний каталог
як накладання вбудованого вихідного коду й виявляє його перед пакетним бандлом
Упаковані встановлення та Docker-образи зазвичай розв’язують bundled plugins з
скомпільованого дерева `dist/extensions`. Якщо директорію джерел bundled plugin
змонтовано bind mount поверх відповідного упакованого шляху джерел, наприклад
`/app/extensions/synology-chat`, OpenClaw розглядає цю змонтовану директорію
джерел як bundled source overlay і виявляє її перед упакованим бандлом
`/app/dist/extensions/synology-chat`. Це зберігає працездатність контейнерних
циклів супровідників без перемикання кожного вбудованого Plugin назад на вихідний код TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово використовувати пакетні dist-бандли
навіть за наявності монтувань накладання вихідного коду.
циклів супровідників без перемикання кожного bundled plugin назад на джерела TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово
використовувати упаковані dist-бандли, навіть коли наявні source overlay mounts.
### Правила ввімкнення
- `plugins.enabled: false` вимикає всі Plugin і пропускає роботу з виявлення/завантаження Plugin
- `plugins.enabled: false` вимикає всі plugins і пропускає роботу виявлення/завантаження Plugin
- `plugins.deny` завжди має пріоритет над allow
- `plugins.entries.\<id\>.enabled: false` вимикає цей Plugin
- Plugin, що походять із робочого простору, **вимкнені за замовчуванням** (їх потрібно явно ввімкнути)
- Вбудовані Plugin дотримуються вбудованого набору ввімкнених за замовчуванням, якщо це не перевизначено
- Plugins з походженням workspace **вимкнені за замовчуванням** (їх потрібно явно ввімкнути)
- Bundled plugins дотримуються вбудованого набору default-on, якщо його не перевизначено
- Ексклюзивні слоти можуть примусово ввімкнути вибраний Plugin для цього слота
- Деякі вбудовані Plugin з явним підключенням автоматично вмикаються, коли конфігурація називає
поверхню, що належить Plugin, як-от посилання на модель провайдера, конфігурацію каналу або runtime
тестового середовища
- Застаріла конфігурація Plugin зберігається, поки активне `plugins.enabled: false`;
повторно ввімкніть Plugin перед запуском очищення doctor, якщо хочете видалити застарілі ids
- Деякі bundled opt-in plugins вмикаються автоматично, коли конфігурація називає
surface, що належить Plugin, як-от посилання на модель провайдера, конфігурацію каналу або runtime harness
- Застаріла конфігурація Plugin зберігається, доки активний `plugins.enabled: false`;
повторно ввімкніть plugins перед запуском очищення doctor, якщо хочете видалити застарілі id
- Маршрути Codex сімейства OpenAI зберігають окремі межі Plugin:
`openai-codex/*` належить OpenAI Plugin, тоді як вбудований Plugin app-server Codex
вибирається через `agentRuntime.id: "codex"` або застарілі посилання на моделі
`codex/*`
`openai-codex/*` належить OpenAI plugin, тоді як bundled Codex
app-server plugin вибирається через `agentRuntime.id: "codex"` або legacy
посилання на моделі `codex/*`
## Усунення проблем runtime hooks
## Усунення несправностей runtime hooks
Якщо Plugin з’являється в `plugins list`, але побічні ефекти або hooks
`register(api)` не виконуються в живому чат-трафіку, спершу перевірте це:
Якщо Plugin з’являється у `plugins list`, але побічні ефекти або hooks
`register(api)` не запускаються в live chat traffic, спочатку перевірте це:
- Виконайте `openclaw gateway status --deep --require-rpc` і переконайтеся, що активні
- Запустіть `openclaw gateway status --deep --require-rpc` і підтвердьте, що активні
URL Gateway, профіль, шлях конфігурації та процес є саме тими, які ви редагуєте.
- Перезапустіть живий Gateway після встановлення Plugin або змін конфігурації/коду. У wrapper
контейнерах PID 1 може бути лише супервізором; перезапустіть або надішліть сигнал дочірньому
- Перезапустіть live Gateway після змін встановлення/конфігурації/коду Plugin. У wrapper
containers PID 1 може бути лише супервізором; перезапустіть або надішліть сигнал дочірньому
процесу `openclaw gateway run`.
- Використовуйте `openclaw plugins inspect <id> --runtime --json`, щоб підтвердити реєстрації hook і
діагностику. Невбудовані conversation hooks, як-от `llm_input`,
- Використовуйте `openclaw plugins inspect <id> --runtime --json`, щоб підтвердити реєстрації hooks і
діагностику. Non-bundled conversation hooks, як-от `llm_input`,
`llm_output`, `before_agent_finalize` і `agent_end`, потребують
`plugins.entries.<id>.hooks.allowConversationAccess=true`.
- Для перемикання моделей надавайте перевагу `before_model_resolve`. Він виконується до розв’язання моделі
для ходів агента; `llm_output` виконується лише після того, як спроба моделі
створить вивід асистента.
- Для підтвердження ефективної моделі сеансу використовуйте `openclaw sessions` або
поверхні сеансів/статусу Gateway, а під час налагодження payload провайдера запускайте
- Для перемикання моделей віддавайте перевагу `before_model_resolve`. Він виконується перед
розв’язанням моделі для agent turns; `llm_output` запускається лише після того, як спроба моделі
створить assistant output.
- Для підтвердження фактичної моделі сесії використовуйте `openclaw sessions` або
поверхні сесії/статусу Gateway, а під час налагодження provider payloads запускайте
Gateway з `--raw-stream --raw-stream-path <path>`.
### Дублювання володіння каналом або інструментом
### Дублювання власності каналу або інструмента
Симптоми:
@ -348,33 +346,33 @@ OpenClaw сканує Plugin у такому порядку (перша відп
- `plugin tool name conflict (<plugin-id>): <tool-name>`
Це означає, що більш ніж один увімкнений Plugin намагається володіти тим самим каналом,
потоком налаштування або назвою інструмента. Найпоширеніша причина — зовнішній Plugin каналу,
встановлений поруч із вбудованим Plugin, який тепер надає той самий id каналу.
потоком налаштування або назвою інструмента. Найпоширеніша причина — зовнішній channel plugin,
встановлений поруч із bundled plugin, який тепер надає той самий channel id.
Кроки налагодження:
- Виконайте `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений Plugin
- Запустіть `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений Plugin
і його походження.
- Виконайте `openclaw plugins inspect <id> --runtime --json` для кожного підозрюваного Plugin і
- Запустіть `openclaw plugins inspect <id> --runtime --json` для кожного підозрюваного Plugin і
порівняйте `channels`, `channelConfigs`, `tools` і діагностику.
- Виконайте `openclaw plugins registry --refresh` після встановлення або видалення
пакетів Plugin, щоб збережені метадані відображали поточне встановлення.
- Перезапустіть Gateway після змін встановлення, реєстру або конфігурації.
- Запустіть `openclaw plugins registry --refresh` після встановлення або видалення
plugin packages, щоб збережені metadata відображали поточне встановлення.
- Перезапустіть Gateway після змін встановлення, registry або конфігурації.
Варіанти виправлення:
- Якщо один Plugin навмисно замінює інший для того самого id каналу, бажаний
Plugin має оголосити `channelConfigs.<channel-id>.preferOver` з id Plugin
нижчого пріоритету. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
- Якщо один Plugin навмисно замінює інший для того самого channel id, бажаний
Plugin має оголосити `channelConfigs.<channel-id>.preferOver` з
нижчопріоритетним plugin id. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
- Якщо дублювання випадкове, вимкніть одну сторону через
`plugins.entries.<plugin-id>.enabled: false` або видаліть застаріле встановлення Plugin.
- Якщо ви явно ввімкнули обидва Plugin, OpenClaw зберігає цей запит і
- Якщо ви явно ввімкнули обидва plugins, OpenClaw зберігає цей запит і
повідомляє про конфлікт. Виберіть одного власника для каналу або перейменуйте інструменти,
що належать Plugin, щоб runtime-поверхня була однозначною.
що належать Plugin, щоб runtime surface була однозначною.
## Слоти Plugin (ексклюзивні категорії)
Деякі категорії є ексклюзивними (одночасно активна лише одна):
Деякі категорії є ексклюзивними (активною може бути лише одна за раз):
```json5
{
@ -387,10 +385,10 @@ OpenClaw сканує Plugin у такому порядку (перша відп
}
```
| Слот | Що він контролює | За замовчуванням |
| --------------- | ----------------------- | ------------------ |
| `memory` | Plugin Active memory | `memory-core` |
| `contextEngine` | Активний рушій контексту | `legacy` (вбудований) |
| Слот | Що він контролює | За замовчуванням |
| --------------- | --------------------- | ------------------- |
| `memory` | Plugin active memory | `memory-core` |
| `contextEngine` | Активний context engine | `legacy` (вбудований) |
## Довідник CLI
@ -439,80 +437,79 @@ openclaw plugins enable <id>
openclaw plugins disable <id>
```
Вбудовані Plugin постачаються з OpenClaw. Багато з них увімкнено за замовчуванням (наприклад
вбудовані провайдери моделей, вбудовані провайдери мовлення та вбудований браузерний
Plugin). Інші вбудовані Plugin все ще потребують `openclaw plugins enable <id>`.
Bundled plugins постачаються з OpenClaw. Багато з них увімкнені за замовчуванням (наприклад
bundled model providers, bundled speech providers і bundled browser
plugin). Інші bundled plugins все ще потребують `openclaw plugins enable <id>`.
`--force` перезаписує наявний встановлений Plugin або hook pack на місці. Використовуйте
`openclaw plugins update <id-or-npm-spec>` для звичайних оновлень відстежуваних npm
Plugin. Він не підтримується з `--link`, який повторно використовує шлях до вихідного коду замість
копіювання в керовану ціль встановлення.
`openclaw plugins update <id-or-npm-spec>` для регулярних оновлень відстежуваних npm
plugins. Це не підтримується з `--link`, який повторно використовує шлях джерел замість
копіювання поверх керованої цілі встановлення.
Коли `plugins.allow` уже задано, `openclaw plugins install` додає id
встановленого Plugin до цього allowlist перед його ввімкненням. Якщо той самий id Plugin
присутній у `plugins.deny`, встановлення видаляє цей застарілий запис deny, щоб
явне встановлення можна було завантажити одразу після перезапуску.
встановленого Plugin до цього allowlist перед його ввімкненням. Якщо той самий plugin id
присутній у `plugins.deny`, install видаляє цей застарілий запис deny, щоб
явне встановлення можна було одразу завантажити після перезапуску.
OpenClaw зберігає локальний реєстр Plugin як холодну модель читання для
інвентаризації Plugin, володіння внесками та планування запуску. Потоки встановлення, оновлення,
видалення, ввімкнення та вимкнення оновлюють цей реєстр після зміни стану Plugin.
Той самий файл `plugins/installs.json` зберігає довговічні метадані встановлення у
верхньорівневих `installRecords` і відновлювані метадані маніфестів у `plugins`. Якщо
реєстр відсутній, застарілий або недійсний, `openclaw plugins registry
--refresh` перебудовує його представлення маніфестів із записів встановлення, політики конфігурації та
метаданих manifest/package без завантаження runtime-модулів Plugin.
OpenClaw зберігає persistent local plugin registry як cold read model для
інвентаризації Plugin, власності contributions і планування запуску. Потоки install, update,
uninstall, enable і disable оновлюють цей registry після зміни стану Plugin.
Той самий файл `plugins/installs.json` зберігає довговічні install metadata у
top-level `installRecords` і перебудовувані manifest metadata у `plugins`. Якщо
registry відсутній, застарілий або недійсний, `openclaw plugins registry
--refresh` перебудовує його manifest view з install records, config policy і
manifest/package metadata без завантаження runtime modules Plugin.
`openclaw plugins update <id-or-npm-spec>` застосовується до відстежуваних встановлень. Передавання
npm package spec із dist-tag або точною версією розв’язує назву пакета
npm package spec з dist-tag або точною версією розв’язує package name
назад до відстежуваного запису Plugin і записує новий spec для майбутніх оновлень.
Передавання назви пакета без версії повертає точно pinned встановлення назад до
типової release line реєстру. Якщо встановлений npm Plugin уже відповідає
Передавання package name без версії переводить exact pinned install назад на
лінію релізів за замовчуванням registry. Якщо встановлений npm plugin уже відповідає
розв’язаній версії та записаній ідентичності артефакта, OpenClaw пропускає оновлення
без завантаження, повторного встановлення або переписування конфігурації.
без завантаження, перевстановлення або перезапису конфігурації.
`--pin` працює лише з npm. Він не підтримується з `--marketplace`, оскільки
встановлення з marketplace зберігають метадані джерела marketplace замість npm spec.
`--pin` є лише для npm. Він не підтримується з `--marketplace`, тому що
marketplace installs зберігають metadata джерела marketplace замість npm spec.
`--dangerously-force-unsafe-install` — аварійне перевизначення для хибнопозитивних
спрацювань вбудованого сканера небезпечного коду. Воно дозволяє встановлення Plugin
`--dangerously-force-unsafe-install`це аварійне перевизначення для хибних
спрацювань вбудованого dangerous-code scanner. Воно дозволяє встановлення Plugin
і оновлення Plugin продовжуватися попри вбудовані findings рівня `critical`, але все одно
не обходить блокування політики Plugin `before_install` або блокування через помилку сканування.
Сканування встановлення ігнорують поширені тестові файли та каталоги, як-от `tests/`,
`__tests__/`, `*.test.*` і `*.spec.*`, щоб не блокувати пакетні test mocks;
оголошені runtime-точки входу Plugin все одно скануються, навіть якщо вони використовують одну з
не обходить блокування plugin `before_install` policy або блокування через scan-failure.
Install scans ігнорують типові тестові файли та директорії, як-от `tests/`,
`__tests__/`, `*.test.*` і `*.spec.*`, щоб не блокувати packaged test mocks;
оголошені runtime entrypoints Plugin усе одно скануються, навіть якщо вони використовують одну з
цих назв.
Цей прапорець CLI застосовується лише до потоків встановлення/оновлення Plugin. Встановлення
залежностей skill на основі Gateway натомість використовують відповідне перевизначення запиту
Цей CLI flag застосовується лише до потоків install/update Plugin. Встановлення skill
dependencies через Gateway використовують відповідне override запиту
`dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` залишається окремим потоком
завантаження/встановлення skill із ClawHub.
завантаження/встановлення Skills з ClawHub.
Якщо Plugin, який ви опублікували на ClawHub, приховано або заблоковано скануванням, відкрийте
панель ClawHub або виконайте `clawhub package rescan <name>`, щоб попросити ClawHub перевірити
його знову. `--dangerously-force-unsafe-install` впливає лише на встановлення на вашій власній
машині; він не просить ClawHub повторно сканувати Plugin або робити заблокований release
Якщо Plugin, який ви опублікували на ClawHub, прихований або заблокований скануванням, відкрийте
dashboard ClawHub або запустіть `clawhub package rescan <name>`, щоб попросити ClawHub перевірити
його знову. `--dangerously-force-unsafe-install` впливає лише на встановлення на вашому власному
комп’ютері; він не просить ClawHub повторно сканувати Plugin або робити заблокований реліз
публічним.
Сумісні бандли беруть участь у тому самому потоці list/inspect/enable/disable
для Plugin. Поточна підтримка runtime включає bundle skills, Claude command-skills,
стандартні значення Claude `settings.json`, стандартні значення Claude `.lsp.json` і оголошені в маніфесті
`lspServers`, Cursor command-skills і сумісні каталоги hook Codex.
Сумісні бандли беруть участь у тому самому потоці list/inspect/enable/disable для Plugin.
Поточна підтримка runtime включає bundle skills, Claude command-skills,
типові значення Claude `settings.json`, типові значення Claude `.lsp.json` і manifest-declared
`lspServers`, Cursor command-skills і сумісні директорії Codex hooks.
`openclaw plugins inspect <id>` також повідомляє виявлені можливості бандла, а також
підтримувані або непідтримувані записи серверів MCP і LSP для Plugin на основі бандлів.
`openclaw plugins inspect <id>` також повідомляє виявлені можливості bundle, а також
підтримувані або непідтримувані записи серверів MCP і LSP для bundle-backed plugins.
Джерелами маркетплейсу можуть бути відома назва маркетплейсу Claude з
Джерелами маркетплейсу можуть бути відома Claude назва маркетплейсу з
`~/.claude/plugins/known_marketplaces.json`, локальний корінь маркетплейсу або
шлях до `marketplace.json`, скорочення GitHub на кшталт `owner/repo`, URL
репозиторію GitHub або git URL. Для віддалених маркетплейсів записи Plugin
мають залишатися всередині клонованого репозиторію маркетплейсу та використовувати
лише відносні джерела шляхів.
шлях `marketplace.json`, скорочення GitHub на кшталт `owner/repo`, URL репозиторію
GitHub або git URL. Для віддалених маркетплейсів записи плагінів мають залишатися всередині
клонованого репозиторію маркетплейсу й використовувати лише відносні джерела шляхів.
Повні відомості див. у [довіднику CLI `openclaw plugins`](/uk/cli/plugins).
Повні відомості див. у [довідці CLI `openclaw plugins`](/uk/cli/plugins).
## Огляд API Plugin
Нативні Plugin експортують об'єкт входу, який надає `register(api)`. Старіші
Plugin можуть усе ще використовувати `activate(api)` як застарілий псевдонім, але нові Plugin мають
Нативні плагіни експортують обєкт входу, який надає `register(api)`. Старіші
плагіни можуть іще використовувати `activate(api)` як застарілий псевдонім, але нові плагіни мають
використовувати `register`.
```typescript
@ -533,29 +530,29 @@ export default definePluginEntry({
});
```
OpenClaw завантажує об'єкт входу та викликає `register(api)` під час
активації Plugin. Завантажувач усе ще повертається до `activate(api)` для старіших Plugin,
але вбудовані Plugin і нові зовнішні Plugin мають розглядати `register` як
OpenClaw завантажує об’єкт входу й викликає `register(api)` під час активації плагіна.
Завантажувач усе ще повертається до `activate(api)` для старіших плагінів,
але вбудовані плагіни й нові зовнішні плагіни мають розглядати `register` як
публічний контракт.
`api.registrationMode` повідомляє Plugin, чому його вхід завантажується:
`api.registrationMode` повідомляє плагіну, чому завантажується його вхід:
| Режим | Значення |
| Режим | Значення |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `full` | Активація в середовищі виконання. Реєструйте інструменти, хуки, служби, команди, маршрути та інші активні побічні ефекти. |
| `discovery` | Доступне лише для читання виявлення можливостей. Реєструйте провайдерів і метадані; довірений код входу Plugin може завантажуватися, але пропускайте активні побічні ефекти. |
| `setup-only` | Завантаження метаданих налаштування каналу через легкий вхід налаштування. |
| `setup-runtime` | Завантаження налаштування каналу, якому також потрібен вхід середовища виконання. |
| `cli-metadata` | Лише збирання метаданих команд CLI. |
| `full` | Активація під час виконання. Реєструє інструменти, хуки, служби, команди, маршрути та інші активні побічні ефекти. |
| `discovery` | Доступне лише для читання виявлення можливостей. Реєструє провайдерів і метадані; довірений код входу плагіна може завантажуватися, але активні побічні ефекти слід пропускати. |
| `setup-only` | Завантаження метаданих налаштування каналу через легковаговий вхід налаштування. |
| `setup-runtime` | Завантаження налаштування каналу, якому також потрібен вхід часу виконання. |
| `cli-metadata` | Лише збирання метаданих команд CLI. |
Записи Plugin, які відкривають сокети, бази даних, фонові воркери або довготривалі
Входи плагінів, які відкривають сокети, бази даних, фонових працівників або довгоживучі
клієнти, мають захищати ці побічні ефекти умовою `api.registrationMode === "full"`.
Завантаження виявлення кешуються окремо від активаційних завантажень і не замінюють
поточний реєстр Gateway. Виявлення не є активаційним, але не є вільним від імпортів:
OpenClaw може виконати довірений вхід Plugin або модуль Plugin каналу, щоб побудувати
знімок. Тримайте верхні рівні модулів легкими та без побічних ефектів, а мережеві
клієнти, підпроцеси, слухачі, читання облікових даних і запуск служб переносьте
за шляхи повного середовища виконання.
Завантаження виявлення кешуються окремо від завантажень активації й не замінюють
поточний реєстр Gateway. Виявлення не активує, але й не є вільним від імпортів:
OpenClaw може виконати довірений вхід плагіна або модуль канального плагіна, щоб побудувати
знімок. Тримайте верхні рівні модулів легковаговими й без побічних ефектів, а
мережевих клієнтів, підпроцеси, слухачі, читання облікових даних і запуск служб
переносьте за шляхи повного виконання.
Поширені методи реєстрації:
@ -566,42 +563,42 @@ OpenClaw може виконати довірений вхід Plugin або м
| `registerTool` | Інструмент агента |
| `registerHook` / `on(...)` | Хуки життєвого циклу |
| `registerSpeechProvider` | Перетворення тексту на мовлення / STT |
| `registerRealtimeTranscriptionProvider` | Потокове STT |
| `registerRealtimeTranscriptionProvider` | Потоковий STT |
| `registerRealtimeVoiceProvider` | Дуплексний голос у реальному часі |
| `registerMediaUnderstandingProvider` | Аналіз зображень/аудіо |
| `registerImageGenerationProvider` | Генерація зображень |
| `registerMusicGenerationProvider` | Генерація музики |
| `registerVideoGenerationProvider` | Генерація відео |
| `registerWebFetchProvider` | Провайдер веботримання / скрейпінгу |
| `registerWebFetchProvider` | Провайдер вебзавантаження / скрейпінгу |
| `registerWebSearchProvider` | Вебпошук |
| `registerHttpRoute` | HTTP-ендпоінт |
| `registerHttpRoute` | HTTP endpoint |
| `registerCommand` / `registerCli` | Команди CLI |
| `registerContextEngine` | Рушій контексту |
| `registerService` | Фонова служба |
Поведінка захисту хуків для типізованих хуків життєвого циклу:
- `before_tool_call`: `{ block: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `before_install`: `{ block: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `before_install`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `message_sending`: `{ cancel: true }` є кінцевим; обробники з нижчим пріоритетом пропускаються.
- `message_sending`: `{ cancel: false }` нічого не робить і не скасовує попереднє скасування.
- `before_tool_call`: `{ block: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: `{ block: false }` є no-op і не скасовує попередній блок.
- `before_install`: `{ block: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `before_install`: `{ block: false }` є no-op і не скасовує попередній блок.
- `message_sending`: `{ cancel: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `message_sending`: `{ cancel: false }` є no-op і не скасовує попереднє скасування.
Нативний сервер застосунку Codex повертає події нативних інструментів Codex через міст
на цю поверхню хуків. Plugin можуть блокувати нативні інструменти Codex через `before_tool_call`,
спостерігати результати через `after_tool_call` та брати участь у схваленнях Codex
Нативний сервер застосунку Codex передає нативні для Codex події інструментів назад у цю
поверхню хуків. Плагіни можуть блокувати нативні інструменти Codex через `before_tool_call`,
спостерігати результати через `after_tool_call` і брати участь у схваленнях Codex
`PermissionRequest`. Міст поки що не переписує аргументи нативних інструментів Codex.
Точна межа підтримки середовища виконання Codex описана в
[контракті підтримки Codex harness v1](/uk/plugins/codex-harness#v1-support-contract).
Повну поведінку типізованих хуків див. в [огляді SDK](/uk/plugins/sdk-overview#hook-decision-semantics).
## Пов'язане
## Повязане
- [Створення Plugin](/uk/plugins/building-plugins) — створіть власний Plugin
- [Пакети Plugin](/uk/plugins/bundles) — сумісність пакетів Codex/Claude/Cursor
- [Створення плагінів](/uk/plugins/building-plugins) — створіть власний плагін
- [Пакети плагінів](/uk/plugins/bundles) — сумісність пакетів Codex/Claude/Cursor
- [Маніфест Plugin](/uk/plugins/manifest) — схема маніфесту
- [Реєстрація інструментів](/uk/plugins/building-plugins#registering-agent-tools) — додайте інструменти агента в Plugin
- [Реєстрація інструментів](/uk/plugins/building-plugins#registering-agent-tools) — додайте інструменти агента в плагін
- [Внутрішня архітектура Plugin](/uk/plugins/architecture) — модель можливостей і конвеєр завантаження
- [Спільнотні Plugin](/uk/plugins/community) — переліки сторонніх розробників
- [Плагіни спільноти](/uk/plugins/community) — сторонні каталоги