chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-22 17:58:26 +00:00
parent 14ef39b74f
commit 23ede050fe
2 changed files with 393 additions and 391 deletions

View File

@ -1,31 +1,31 @@
---
read_when:
- Ви хочете створити новий Plugin для OpenClaw
- Вам потрібен швидкий старт для розробки Plugin-ів
- Ви додаєте до OpenClaw новий канал, провайдера, інструмент або іншу можливість
- Вам потрібен короткий посібник зі швидкого старту для розробки Plugin-ів
- Ви додаєте новий канал, провайдера, інструмент або іншу можливість до OpenClaw
sidebarTitle: Getting Started
summary: Створіть свій перший Plugin для OpenClaw за лічені хвилини
title: Створення Plugin-ів
x-i18n:
generated_at: "2026-04-22T07:00:23Z"
generated_at: "2026-04-22T17:55:47Z"
model: gpt-5.4
provider: openai
source_hash: 67368be311537f984f14bea9239b88c3eccf72a76c9dd1347bb041e02697ae24
source_hash: 35faa4e2722a58aa12330103b42d2dd6e14e56ee46720883d0945a984d991f79
source_path: plugins/building-plugins.md
workflow: 15
---
# Створення Plugin-ів
Plugin-и розширюють OpenClaw новими можливостями: каналами, провайдерами моделей,
мовленням, транскрибуванням у реальному часі, голосом у реальному часі, розумінням медіа, генерацією зображень,
генерацією відео, веб-отриманням, веб-пошуком, інструментами агентів або будь-якою
комбінацією.
Plugin-и розширюють OpenClaw новими можливостями: канали, провайдери моделей,
мовлення, транскрипція в реальному часі, голос у реальному часі, розуміння медіа, генерація
зображень, генерація відео, веб-отримання, веб-пошук, інструменти агента або будь-яка
комбінація.
Вам не потрібно додавати свій Plugin до репозиторію OpenClaw. Опублікуйте його в
[ClawHub](/uk/tools/clawhub) або npm, і користувачі встановлять його за допомогою
`openclaw plugins install <package-name>`. OpenClaw спочатку намагається використати ClawHub і
автоматично переходить до npm, якщо це потрібно.
`openclaw plugins install <package-name>`. OpenClaw спочатку намагається використати ClawHub, а
потім автоматично переходить до npm.
## Передумови
@ -36,27 +36,27 @@ Plugin-и розширюють OpenClaw новими можливостями:
## Який тип Plugin-а?
<CardGroup cols={3}>
<Card title="Plugin каналу" icon="messages-square" href="/uk/plugins/sdk-channel-plugins">
Підключає OpenClaw до платформи обміну повідомленнями (Discord, IRC тощо)
<Card title="Channel plugin" icon="messages-square" href="/uk/plugins/sdk-channel-plugins">
Підключіть OpenClaw до платформи обміну повідомленнями (Discord, IRC тощо)
</Card>
<Card title="Plugin провайдера" icon="cpu" href="/uk/plugins/sdk-provider-plugins">
Додає провайдера моделей (LLM, проксі або власну кінцеву точку)
<Card title="Provider plugin" icon="cpu" href="/uk/plugins/sdk-provider-plugins">
Додайте провайдера моделей (LLM, проксі або користувацьку кінцеву точку)
</Card>
<Card title="Plugin інструментів / хуків" icon="wrench">
Реєструє інструменти агента, хуки подій або сервіси — продовжуйте нижче
<Card title="Tool / hook plugin" icon="wrench">
Зареєструйте інструменти агента, хуки подій або сервіси — продовження нижче
</Card>
</CardGroup>
Якщо Plugin каналу є необов’язковим і може бути не встановлений під час виконання
онбордингу/налаштування, використовуйте `createOptionalChannelSetupSurface(...)` з
`openclaw/plugin-sdk/channel-setup`. Це створює пару адаптера налаштування та майстра,
яка повідомляє про вимогу встановлення та безпечно відхиляє реальні записи конфігурації,
доки Plugin не буде встановлено.
Якщо Channel plugin є необов’язковим і може бути не встановлений, коли виконується
onboarding/налаштування, використовуйте `createOptionalChannelSetupSurface(...)` з
`openclaw/plugin-sdk/channel-setup`. Він створює пару адаптера налаштування + майстра,
яка повідомляє про вимогу встановлення і блокує реальні записи конфігурації
до встановлення Plugin-а.
## Швидкий старт: Plugin інструменту
## Швидкий старт: Tool plugin
У цьому прикладі створюється мінімальний Plugin, який реєструє інструмент агента. Для Plugin-ів
каналів і провайдерів є окремі посібники за посиланнями вище.
У цьому прикладі створюється мінімальний Plugin, який реєструє інструмент агента. Для Channel
plugin-ів і Provider plugin-ів є окремі посібники за посиланнями вище.
<Steps>
<Step title="Створіть пакет і маніфест">
@ -93,8 +93,8 @@ Plugin-и розширюють OpenClaw новими можливостями:
```
</CodeGroup>
Кожному Plugin-у потрібен маніфест, навіть без конфігурації. Повну схему дивіться в
[Manifest](/uk/plugins/manifest). Канонічні фрагменти для публікації в ClawHub
Кожному Plugin-у потрібен маніфест, навіть без конфігурації. Див.
[Manifest](/uk/plugins/manifest) для повної схеми. Канонічні фрагменти публікації ClawHub
розміщені в `docs/snippets/plugin-publish/`.
</Step>
@ -123,15 +123,15 @@ Plugin-и розширюють OpenClaw новими можливостями:
});
```
`definePluginEntry` призначений для Plugin-ів, що не є каналами. Для каналів використовуйте
`definePluginEntry` призначений для Plugin-ів, які не є каналами. Для каналів використовуйте
`defineChannelPluginEntry` — див. [Channel Plugins](/uk/plugins/sdk-channel-plugins).
Повний перелік параметрів точки входу дивіться в [Entry Points](/uk/plugins/sdk-entrypoints).
Повний перелік параметрів точки входу див. у [Entry Points](/uk/plugins/sdk-entrypoints).
</Step>
<Step title="Протестуйте та опублікуйте">
<Step title="Протестуйте й опублікуйте">
**Зовнішні Plugin-и:** перевірте й опублікуйте в ClawHub, а потім встановіть:
**Зовнішні Plugin-и:** виконайте перевірку та опублікуйте в ClawHub, потім встановіть:
```bash
clawhub package publish your-org/your-plugin --dry-run
@ -139,10 +139,10 @@ Plugin-и розширюють OpenClaw новими можливостями:
openclaw plugins install clawhub:@myorg/openclaw-my-plugin
```
OpenClaw також перевіряє ClawHub перед npm для звичайних специфікацій пакетів, таких як
OpenClaw також перевіряє ClawHub перед npm для простих специфікацій пакетів, як-от
`@myorg/openclaw-my-plugin`.
**Plugin-и в репозиторії:** розмістіть їх у дереві робочого простору вбудованих Plugin-ів — вони будуть виявлені автоматично.
**Plugin-и в репозиторії:** розміщуйте в дереві робочого простору bundled Plugin-ів — вони виявляються автоматично.
```bash
pnpm test -- <bundled-plugin-root>/my-plugin/
@ -155,61 +155,63 @@ Plugin-и розширюють OpenClaw новими можливостями:
Один Plugin може зареєструвати будь-яку кількість можливостей через об’єкт `api`:
| Можливість | Метод реєстрації | Детальний посібник |
| --------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------- |
| Текстовий inference (LLM) | `api.registerProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins) |
| Backend CLI для inference | `api.registerCliBackend(...)` | [CLI Backends](/uk/gateway/cli-backends) |
| Канал / повідомлення | `api.registerChannel(...)` | [Channel Plugins](/uk/plugins/sdk-channel-plugins) |
| Мовлення (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Транскрибування в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Веб-отримання | `api.registerWebFetchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Веб-пошук | `api.registerWebSearchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Вбудоване розширення Pi | `api.registerEmbeddedExtensionFactory(...)` | [SDK Overview](/uk/plugins/sdk-overview#registration-api) |
| Інструменти агентів | `api.registerTool(...)` | Нижче |
| Користувацькі команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Хуки подій | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| HTTP-маршрути | `api.registerHttpRoute(...)` | [Internals](/uk/plugins/architecture#gateway-http-routes) |
| Підкоманди CLI | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Можливість | Метод реєстрації | Докладний посібник |
| ---------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------- |
| Текстова інференція (LLM) | `api.registerProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins) |
| Бекенд інференції CLI | `api.registerCliBackend(...)` | [CLI Backends](/uk/gateway/cli-backends) |
| Канал / обмін повідомленнями | `api.registerChannel(...)` | [Channel Plugins](/uk/plugins/sdk-channel-plugins) |
| Мовлення (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Транскрипція в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Веб-отримання | `api.registerWebFetchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Веб-пошук | `api.registerWebSearchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Вбудоване розширення Pi | `api.registerEmbeddedExtensionFactory(...)` | [SDK Overview](/uk/plugins/sdk-overview#registration-api) |
| Інструменти агента | `api.registerTool(...)` | Нижче |
| Користувацькі команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Хуки подій | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| HTTP-маршрути | `api.registerHttpRoute(...)` | [Internals](/uk/plugins/architecture#gateway-http-routes) |
| Підкоманди CLI | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
Повний API реєстрації дивіться в [SDK Overview](/uk/plugins/sdk-overview#registration-api).
Повний API реєстрації див. у [SDK Overview](/uk/plugins/sdk-overview#registration-api).
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли Plugin-у потрібні
Pi-native хуки embedded-runner, наприклад асинхронне переписування `tool_result` перед тим, як буде надіслано
остаточне повідомлення з результатом інструменту. Віддавайте перевагу звичайним хукам Plugin-ів OpenClaw, якщо
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли Plugin потребує
Pi-native hook-ів embedded-runner, наприклад асинхронного переписування `tool_result`
перед тим, як буде надіслано фінальне повідомлення з результатом інструмента. Віддавайте перевагу звичайним хукам Plugin-ів OpenClaw, коли
робота не потребує таймінгу розширення Pi.
Якщо ваш Plugin реєструє власні RPC-методи Gateway, використовуйте для них
Якщо ваш Plugin реєструє користувацькі Gateway RPC-методи, використовуйте для них
префікс, специфічний для Plugin-а. Простори імен адміністрування ядра (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) залишаються зарезервованими і завжди зіставляються з
`operator.admin`, навіть якщо Plugin запитує вужчу область дії.
Семантика захисту хуків, яку варто пам’ятати:
Семантика guard-хуків, про яку варто пам’ятати:
- `before_tool_call`: `{ block: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` вважається відсутністю рішення.
- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента й запитує підтвердження користувача через оверлей exec approval, кнопки Telegram, інтеракції Discord або команду `/approve` в будь-якому каналі.
- `before_tool_call`: `{ block: false }` розглядається як відсутність рішення.
- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента і запитує в користувача схвалення через overlay схвалення exec, кнопки Telegram, взаємодії Discord або команду `/approve` у будь-якому каналі.
- `before_install`: `{ block: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом.
- `before_install`: `{ block: false }` вважається відсутністю рішення.
- `before_install`: `{ block: false }` розглядається як відсутність рішення.
- `message_sending`: `{ cancel: true }` є термінальним результатом і зупиняє обробники з нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` вважається відсутністю рішення.
- `message_sending`: `{ cancel: false }` розглядається як відсутність рішення.
- `message_received`: надавайте перевагу типізованому полю `threadId`, коли вам потрібна маршрутизація вхідних потоків/тем. `metadata` залишайте для специфічних для каналу доповнень.
- `message_sending`: надавайте перевагу типізованим полям маршрутизації `replyToId` / `threadId` замість специфічних для каналу ключів metadata.
Команда `/approve` обробляє як підтвердження exec, так і підтвердження Plugin-ів із обмеженим fallback: якщо ідентифікатор підтвердження exec не знайдено, OpenClaw повторно пробує той самий ідентифікатор через підтвердження Plugin-ів. Переспрямування підтверджень Plugin-ів можна налаштувати окремо через `approvals.plugin` у конфігурації.
Команда `/approve` обробляє як схвалення exec, так і схвалення Plugin-ів, із обмеженим резервним сценарієм: коли ідентифікатор схвалення exec не знайдено, OpenClaw повторно пробує той самий ідентифікатор через схвалення Plugin-ів. Переспрямування схвалення Plugin-ів можна налаштувати окремо через `approvals.plugin` у конфігурації.
Якщо користувацькі механізми підтвердження мають виявляти той самий випадок
обмеженого fallback, надавайте перевагу `isApprovalNotFoundError` з `openclaw/plugin-sdk/error-runtime`
замість ручного зіставлення рядків завершення строку дії підтвердження.
Якщо для користувацької логіки схвалення потрібно виявити той самий обмежений резервний сценарій,
використовуйте `isApprovalNotFoundError` з `openclaw/plugin-sdk/error-runtime`
замість ручного зіставлення рядків про завершення строку дії схвалення.
Докладніше дивіться в [SDK Overview hook decision semantics](/uk/plugins/sdk-overview#hook-decision-semantics).
Докладніше див. у [SDK Overview hook decision semantics](/uk/plugins/sdk-overview#hook-decision-semantics).
## Реєстрація інструментів агентів
## Реєстрація інструментів агента
Інструменти — це типізовані функції, які може викликати LLM. Вони можуть бути обов’язковими (завжди
доступними) або необов’язковими (користувач сам вмикає їх):
доступними) або необов’язковими (користувач вмикає їх самостійно):
```typescript
register(api) {
@ -250,7 +252,7 @@ register(api) {
- Використовуйте `optional: true` для інструментів із побічними ефектами або додатковими вимогами до бінарних файлів
- Користувачі можуть увімкнути всі інструменти з Plugin-а, додавши ідентифікатор Plugin-а до `tools.allow`
## Правила імпорту
## Угоди щодо імпортів
Завжди імпортуйте з цільових шляхів `openclaw/plugin-sdk/<subpath>`:
@ -262,29 +264,29 @@ import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { ... } from "openclaw/plugin-sdk";
```
Повний довідник підшляхів дивіться в [SDK Overview](/uk/plugins/sdk-overview).
Повний довідник щодо підшляхів див. у [SDK Overview](/uk/plugins/sdk-overview).
У межах вашого Plugin-а використовуйте локальні barrel-файли (`api.ts`, `runtime-api.ts`) для
внутрішніх імпортів — ніколи не імпортуйте власний Plugin через його шлях SDK.
Для Plugin-ів провайдерів зберігайте допоміжні засоби, специфічні для провайдера, у цих barrel-файлах
на рівні кореня пакета, якщо лише цей інтерфейс не є справді універсальним. Поточні вбудовані приклади:
Для Provider plugin-ів зберігайте специфічні для провайдера допоміжні функції в цих barrel-файлах кореня пакета,
якщо тільки межа не є справді загальною. Поточні bundled-приклади:
- Anthropic: обгортки потоків Claude та допоміжні засоби `service_tier` / beta
- OpenAI: конструктори провайдерів, допоміжні засоби моделей за замовчуванням, провайдери реального часу
- OpenRouter: конструктор провайдера плюс допоміжні засоби онбордингу/конфігурації
- Anthropic: обгортки потоків Claude і допоміжні функції `service_tier` / beta
- OpenAI: конструктори провайдерів, допоміжні функції моделей за замовчуванням, провайдери реального часу
- OpenRouter: конструктор провайдера плюс допоміжні функції onboarding/конфігурації
Якщо допоміжний засіб корисний лише всередині одного вбудованого пакета провайдера, залишайте його на
цьому інтерфейсі кореня пакета замість того, щоб переносити його до `openclaw/plugin-sdk/*`.
Якщо допоміжна функція корисна лише всередині одного bundled-пакета провайдера, залишайте її на
цьому package-root seam замість перенесення до `openclaw/plugin-sdk/*`.
Деякі згенеровані інтерфейси допоміжних засобів `openclaw/plugin-sdk/<bundled-id>` усе ще існують для
підтримки й сумісності вбудованих Plugin-ів, наприклад
`plugin-sdk/feishu-setup` або `plugin-sdk/zalo-setup`. Розглядайте їх як зарезервовані
поверхні, а не як типовий шаблон для нових сторонніх Plugin-ів.
Деякі згенеровані helper seam-и `openclaw/plugin-sdk/<bundled-id>` усе ще існують для
підтримки bundled Plugin-ів і сумісності, наприклад
`plugin-sdk/feishu-setup` або `plugin-sdk/zalo-setup`. Ставтеся до них як до зарезервованих
поверхонь, а не як до типової моделі для нових сторонніх Plugin-ів.
## Контрольний список перед поданням
<Check>У **package.json** вказано правильні метадані `openclaw`</Check>
<Check>**package.json** має коректні метадані `openclaw`</Check>
<Check>Маніфест **openclaw.plugin.json** присутній і валідний</Check>
<Check>Точка входу використовує `defineChannelPluginEntry` або `definePluginEntry`</Check>
<Check>Усі імпорти використовують цільові шляхи `plugin-sdk/<subpath>`</Check>
@ -292,14 +294,14 @@ import { ... } from "openclaw/plugin-sdk";
<Check>Тести проходять (`pnpm test -- <bundled-plugin-root>/my-plugin/`)</Check>
<Check>`pnpm check` проходить (для Plugin-ів у репозиторії)</Check>
## Тестування бета-релізів
## Тестування бета-релізу
1. Стежте за тегами релізів GitHub у [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Бета-теги мають вигляд `v2026.3.N-beta.1`. Ви також можете ввімкнути сповіщення для офіційного акаунта OpenClaw у X [@openclaw](https://x.com/openclaw) про анонси релізів.
2. Протестуйте свій Plugin на бета-тезі, щойно він з’явиться. Вікно до стабільного релізу зазвичай триває лише кілька годин.
3. Після тестування напишіть у треді вашого Plugin-а в Discord-каналі `plugin-forum`: `all good` або що саме зламалося. Якщо у вас ще немає треду, створіть його.
4. Якщо щось зламалося, створіть або оновіть issue з назвою `Beta blocker: <plugin-name> - <summary>` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у свій тред.
5. Відкрийте PR до `main` з назвою `fix(<plugin-id>): beta blocker - <summary>` і додайте посилання на issue і в PR, і у свій Discord-тред. Учасники не можуть додавати мітки до PR, тому назва є сигналом на боці PR для мейнтейнерів та автоматизації. Блокери з PR будуть злиті; блокери без PR можуть усе одно потрапити в реліз. Мейнтейнери стежать за цими тредами під час бета-тестування.
6. Відсутність повідомлень означає, що все гаразд. Якщо ви пропустите це вікно, ваше виправлення, найімовірніше, потрапить до наступного циклу.
1. Стежте за тегами релізів GitHub у [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Бета-теги мають вигляд `v2026.3.N-beta.1`. Ви також можете ввімкнути сповіщення для офіційного акаунта OpenClaw у X [@openclaw](https://x.com/openclaw) для анонсів релізів.
2. Протестуйте свій Plugin на бета-тегу, щойно він з’явиться. Вікно до стабільного релізу зазвичай триває лише кілька годин.
3. Після тестування напишіть у гілці вашого Plugin-а в каналі Discord `plugin-forum`: або `all good`, або що саме зламалося. Якщо у вас ще немає гілки, створіть її.
4. Якщо щось зламалося, відкрийте або оновіть issue з назвою `Beta blocker: <plugin-name> - <summary>` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у вашу гілку.
5. Відкрийте PR до `main` з назвою `fix(<plugin-id>): beta blocker - <summary>` і додайте посилання на issue як у PR, так і у вашій гілці Discord. Учасники не можуть додавати мітки до PR, тому назва — це сигнал на боці PR для супроводжувачів і автоматизації. Блокери з PR будуть злиті; блокери без нього можуть усе одно потрапити в реліз. Супроводжувачі стежать за цими гілками під час бета-тестування.
6. Відсутність повідомлень означає, що все гаразд. Якщо ви пропустите вікно, ваш виправлений код, імовірно, потрапить у наступний цикл.
## Наступні кроки
@ -317,7 +319,7 @@ import { ... } from "openclaw/plugin-sdk";
TTS, пошук, subagent через api.runtime
</Card>
<Card title="Testing" icon="test-tubes" href="/uk/plugins/sdk-testing">
Утиліти й шаблони тестування
Утиліти та шаблони тестування
</Card>
<Card title="Plugin Manifest" icon="file-json" href="/uk/plugins/manifest">
Повний довідник схеми маніфесту
@ -326,8 +328,8 @@ import { ... } from "openclaw/plugin-sdk";
## Пов’язане
- [Plugin Architecture](/uk/plugins/architecture) — поглиблений огляд внутрішньої архітектури
- [SDK Overview](/uk/plugins/sdk-overview) — довідник Plugin SDK
- [Plugin Architecture](/uk/plugins/architecture) — глибоке занурення у внутрішню архітектуру
- [SDK Overview](/uk/plugins/sdk-overview) — довідник SDK Plugin-ів
- [Manifest](/uk/plugins/manifest) — формат маніфесту plugin-а
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення Plugin-ів каналів
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення Plugin-ів провайдерів
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення channel plugin-ів
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення provider plugin-ів

View File

@ -1,16 +1,16 @@
---
read_when:
- Потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібен довідник для всіх методів реєстрації в OpenClawPluginApi
- Ви шукаєте конкретний експорт SDK
sidebarTitle: SDK Overview
summary: Карта імпортів, довідник API реєстрації та архітектура SDK
title: Огляд Plugin SDK
x-i18n:
generated_at: "2026-04-22T07:00:23Z"
generated_at: "2026-04-22T17:55:48Z"
model: gpt-5.4
provider: openai
source_hash: e57019e6f9a7fed7842ac575e025b6db41d125f5fa9d0d1de03923fdb1f6bcc3
source_hash: d010d8c8df684325b481e9e7b0709a079be4db10452fe64d29e2a2ccbbbf10e8
source_path: plugins/sdk-overview.md
workflow: 15
---
@ -18,13 +18,13 @@ x-i18n:
# Огляд Plugin SDK
Plugin SDK — це типізований контракт між plugins і ядром. Ця сторінка є
довідником щодо **що імпортувати** і **що можна реєструвати**.
довідником для **що імпортувати** і **що можна реєструвати**.
<Tip>
**Шукаєте покроковий посібник?**
**Шукаєте практичний посібник?**
- Перший plugin? Почніть із [Getting Started](/uk/plugins/building-plugins)
- Channel plugin? Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Provider plugin? Дивіться [Provider Plugins](/uk/plugins/sdk-provider-plugins)
- Plugin каналу? Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Plugin провайдера? Дивіться [Provider Plugins](/uk/plugins/sdk-provider-plugins)
</Tip>
## Угода щодо імпорту
@ -36,35 +36,35 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий
запуск і запобігає проблемам із циклічними залежностями. Для специфічних для channel
допоміжних засобів entry/build віддавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core`
залишайте для ширшої поверхні-парасолі та спільних допоміжних засобів, таких як
Кожен підшлях — це невеликий самодостатній модуль. Це зберігає швидкий запуск і
запобігає проблемам із циклічними залежностями. Для специфічних для каналу
допоміжних засобів entry/build надавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` залишайте для
ширшої узагальненої поверхні та спільних допоміжних засобів, таких як
`buildChannelConfigSchema`.
Не додавайте і не використовуйте зручні шви з назвами provider, такі як
Не додавайте й не покладайтеся на зручні шляхи, названі за провайдерами, такі як
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або
допоміжні шви з брендингом channel. Вбудовані plugins мають компонувати узагальнені
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а ядро
має або використовувати ці локальні для plugin barrel-файли, або додавати вузький узагальнений SDK
допоміжні шляхи, брендовані каналами. Вбудовані plugins мають компонувати
узагальнені підшляхи SDK усередині власних barrel-файлів `api.ts` або `runtime-api.ts`, а ядро
має або використовувати ці локальні barrel-файли plugin, або додавати вузький узагальнений SDK
контракт, коли потреба справді є міжканальною.
Згенерована карта експортів усе ще містить невеликий набір допоміжних
швів вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
Згенерована карта експортів усе ще містить невеликий набір допоміжних шляхів
вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Ці
підшляхи існують лише для супроводу вбудованих plugins і сумісності; вони
навмисно пропущені в загальній таблиці нижче і не є рекомендованим
підшляхи існують лише для підтримки та сумісності вбудованих plugins; вони
навмисно не включені до поширеної таблиці нижче і не є рекомендованим
шляхом імпорту для нових сторонніх plugins.
## Довідник підшляхів
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список
із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із
понад 200 підшляхів знаходиться в `scripts/lib/plugin-sdk-entrypoints.json`.
Зарезервовані допоміжні підшляхи вбудованих plugins усе ще з’являються в цьому згенерованому списку.
Ставтеся до них як до поверхонь деталей реалізації/сумісності, якщо тільки сторінка документації
явно не позначає одну з них як публічну.
Розглядайте їх як поверхні деталей реалізації/сумісності, якщо лише сторінка документації
не просуває якийсь із них явно як публічний.
### Точка входу plugin
@ -76,85 +76,85 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Підшляхи channel">
<Accordion title="Підшляхи каналів">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/config-schema` | Кореневий експорт Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, запити allowlist, побудовники статусу налаштування |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, allowlist-підказки, побудовники статусу налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби багатооблікового запису для конфігурації/воріт дій, допоміжні засоби запасного використання облікового запису за замовчуванням |
| `plugin-sdk/account-core` | Допоміжні засоби для мультиакаунтної конфігурації/action-gate, допоміжні засоби fallback для акаунта за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id |
| `plugin-sdk/account-resolution` | Пошук облікового запису + допоміжні засоби запасного використання значення за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку облікових записів/дій з обліковими записами |
| `plugin-sdk/account-resolution` | Пошук акаунта + допоміжні засоби fallback до значення за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку акаунтів/дій з акаунтами |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Типи схеми конфігурації channel |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із запасним використанням контракту вбудованого plugin |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзування авторизації команд |
| `plugin-sdk/channel-config-schema` | Типи схеми конфігурації каналу |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із fallback на вбудований контракт |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзу авторизації команд |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації чернетки потоку |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних даних + побудови envelope |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації чернеток потоків |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних повідомлень + побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та диспетчеризації вхідних відповідей |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності, делегата надсилання та планування payload |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідного медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності, send delegate і планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації poll |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок thread і адаптера |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник медіа-payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби conversation/thread binding, pairing і configured-binding |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок потоків і adapter |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник медіа payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби прив’язки conversation/thread, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби розв’язання групових політик runtime |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку статусу channel |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації channel |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації channel |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти channel plugin |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення group-policy у runtime |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку статусу каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти plugin каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби ухвалення рішень щодо доступу груп |
| `plugin-sdk/group-access` | Спільні допоміжні засоби визначення group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби семантичного подання повідомлень, доставки та застарілих інтерактивних відповідей. Дивіться [Message Presentation](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Barrel сумісності для debounce вхідних даних, зіставлення згадок, допоміжних засобів політики згадок і допоміжних засобів envelope |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби політики згадок без ширшої поверхні runtime вхідних даних |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту й форматування розташування channel |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування channel для відкидання вхідних даних і збоїв typing/ack |
| `plugin-sdk/channel-send-result` | Типи результату відповіді |
| `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями channel, а також застарілі допоміжні засоби нативної схеми, збережені для сумісності plugin |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/channel-contract` | Типи контракту channel |
| `plugin-sdk/channel-feedback` | Підключення feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби контракту секретів, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи target секретів |
| `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби interactive reply. Див. [Message Presentation](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Compatibility barrel для debounce вхідних повідомлень, зіставлення згадок, допоміжних засобів mention-policy і допоміжних засобів envelope |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy без ширшої поверхні inbound runtime |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту місцезнаходження каналу та форматування |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування каналу для відкинутих вхідних повідомлень і збоїв typing/ack |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-actions` | Допоміжні засоби message-action каналу, а також застарілі власні допоміжні засоби схем, збережені для сумісності plugins |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контракту каналу |
| `plugin-sdk/channel-feedback` | Зв’язування feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-контракту, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей секретів |
</Accordion>
<Accordion title="Підшляхи provider">
<Accordion title="Підшляхи провайдерів">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локального/self-hosted provider |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted provider, сумісного з OpenAI |
| `plugin-sdk/cli-backend` | Значення за замовчуванням для бекенда CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби runtime для розв’язання API-key для provider plugins |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби onboarding/profile-write для API-key, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результату auth OAuth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider plugins |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env var auth provider |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI |
| `plugin-sdk/cli-backend` | Значення за замовчуванням для CLI backend + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключа в runtime для plugins провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API-ключа, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth auth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для plugins провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку auth env-var для провайдерів |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик replay, допоміжні засоби endpoint provider і допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники replay-policy, допоміжні засоби endpoint провайдера та допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Узагальнені допоміжні засоби HTTP/можливостей endpoint provider |
| `plugin-sdk/provider-http` | Узагальнені допоміжні засоби HTTP/можливостей endpoint провайдера |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешу provider web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для provider, яким не потрібне підключення enable plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setter/getter облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешу/runtime provider web-search |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування web-fetch провайдерів |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне зв’язування увімкнення plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і setter/getter облікових даних з обмеженою областю дії |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime для web-search провайдерів |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток stream і спільні допоміжні засоби обгорток для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту provider, такі як guarded fetch, перетворення транспортних повідомлень і потоки подій транспорту з можливістю запису |
| `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації onboarding |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи stream wrapper і спільні допоміжні засоби wrapper для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспортного рівня провайдера, такі як guarded fetch, перетворення транспортних повідомлень і записувані потоки транспортних подій |
| `plugin-sdk/provider-onboard` | Допоміжні засоби patch конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
</Accordion>
@ -163,119 +163,119 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби розв’язання approver і auth дій у тому самому chat |
| `plugin-sdk/approval-auth-runtime` | Визначення approver і допоміжні засоби action-auth для того самого чату |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки native approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб розв’язання gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження адаптера native approval для гарячих точок входу channel |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для обробника approval; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби target native approval + прив’язки облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді на exec/plugin approval |
| `plugin-sdk/command-auth-native` | Native command auth + допоміжні засоби target native session |
| `plugin-sdk/approval-delivery-runtime` | Native adapter можливостей/доставки approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення approval gateway |
| `plugin-sdk/approval-handler-adapter-runtime` | Легковагові допоміжні засоби завантаження native adapter approval для гарячих channel entrypoint |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби approval handler runtime; надавайте перевагу вужчим adapter/gateway seams, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби native approval target + прив’язки акаунта |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді exec/plugin approval |
| `plugin-sdk/command-auth-native` | Native command auth + native допоміжні засоби session-target |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команди та surface команди |
| `plugin-sdk/command-surface` | Нормалізація command-body і допоміжні засоби command-surface |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь secret channel/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби типізації `coerceSecretRef` і SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього вмісту та збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватної мережі |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої поверхні runtime інфраструктури |
| `plugin-sdk/ssrf-runtime` | Pinned-dispatcher, fetch із захистом SSRF і допоміжні засоби політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/target Webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту/тайм-ауту |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-контракту для поверхонь секретів channel/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для парсингу secret-контракту/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби trust, DM gating, external-content і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для host allowlist і приватних мереж |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої infra runtime surface |
| `plugin-sdk/ssrf-runtime` | Pinned-dispatcher, fetch із SSRF-захистом і допоміжні засоби політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби парсингу secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби Webhook request/target |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру body request/timeout |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби середовища runtime, logger, timeout, retry і backoff |
| `plugin-sdk/channel-runtime-context` | Узагальнені допоміжні засоби реєстрації та пошуку runtime-context channel |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, logger, timeout, retry і backoff |
| `plugin-sdk/channel-runtime-context` | Узагальнені допоміжні засоби реєстрації та пошуку channel runtime-context |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби конвеєра Webhook/внутрішніх hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/прив’язки runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби command/hook/http/interactive для plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy runtime import/binding, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування та версії |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і виправлення статусу channel |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису config |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назви/опису команди Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel `text-runtime` |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники можливостей approval, допоміжні засоби auth/profile, native routing/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime для вхідних даних/відповідей, chunking, dispatch, Heartbeat, planner відповіді |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування і версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і patch статусу каналу |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису конфігурації |
| `plugin-sdk/telegram-command-config` | Нормалізація імені/опису команд Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення autolink посилань на файли без широкого barrel `text-runtime` |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники approval-capability, допоміжні засоби auth/profile, native routing/runtime helpers |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, Heartbeat, планувальник відповіді |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповіді |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби коротковіконної історії відповідей, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби short-window reply-history, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища session + `updated-at` |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів до каталогів state/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби route/session-key/прив’язки облікового запису, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу channel/account, значення runtime-state за замовчуванням і допоміжні засоби метаданих issue |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби розв’язання target |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/Markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху session store + updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів директорій State/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби прив’язки route/session-key/акаунта, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумку статусу каналу/акаунта, значення за замовчуванням для runtime-state і допоміжні засоби метаданих issues |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби target resolver |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL із fetch/request-подібних вхідних даних |
| `plugin-sdk/run-command` | Запускач команд із таймінгом і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені читачі параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload із об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягування канонічних полів target надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів до тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування |
| `plugin-sdk/request-url` | Витягування рядкових URL з fetch/request-подібних вхідних даних |
| `plugin-sdk/run-command` | Запускач команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені readers параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload із об’єктів результату tool |
| `plugin-sdk/tool-send` | Витягування канонічних полів send target з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні засоби subsystem logger і редагування чутливих даних |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису JSON state |
| `plugin-sdk/file-lock` | Допоміжні засоби повторно вхідного file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу dedupe з бекінгом на диску |
| `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/session ACP і dispatch відповідей |
| `plugin-sdk/acp-binding-resolve-runtime` | Лише читання для розв’язання прив’язок ACP без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви config-schema runtime агента |
| `plugin-sdk/boolean-param` | Нестрогий читач boolean-параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби розв’язання збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби початкового запуску пристрою та токенів pairing |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби dedupe-кешу з дисковим збереженням |
| `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/session і reply-dispatch |
| `plugin-sdk/acp-binding-resolve-runtime` | Розв’язання прив’язок ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації agent runtime |
| `plugin-sdk/boolean-param` | Нестрогий reader булевого параметра |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних імен |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою і токенів pairing |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді command/provider для `/models` |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skill |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді `/models` command/provider |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби списку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize native command |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, міст інструментів OpenClaw і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `plugin-sdk/agent-harness` | Експериментальна surface trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, місток tool OpenClaw і утиліти результатів attempt |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I |
| `plugin-sdk/infra-runtime` | Допоміжні засоби системних подій/Heartbeat |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців і подій |
| `plugin-sdk/error-runtime` | Граф помилок, форматування, спільні допоміжні засоби класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Обгорнутий fetch, proxy і допоміжні засоби pinned lookup |
| `plugin-sdk/error-runtime` | Допоміжні засоби графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби обгорнутого fetch, proxy і pinned lookup |
| `plugin-sdk/runtime-fetch` | Runtime fetch з урахуванням dispatcher без імпортів proxy/guarded-fetch |
| `plugin-sdk/response-limit-runtime` | Читач тіла відповіді з обмеженням без широкої поверхні runtime медіа |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing configured binding або сховищ pairing |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби читання session-store без широких імпортів запису/обслуговування config |
| `plugin-sdk/context-visibility-runtime` | Розв’язання видимості контексту та фільтрація додаткового контексту без широких імпортів config/security |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення й нормалізації примітивних record/рядків без імпортів markdown/logging |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і хоста SCP |
| `plugin-sdk/response-limit-runtime` | Reader body відповіді з обмеженням без широкої media runtime surface |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing configured binding або pairing stores |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби читання session-store без широких імпортів запису/обслуговування конфігурації |
| `plugin-sdk/context-visibility-runtime` | Допоміжні засоби визначення видимості контексту і фільтрації додаткового контексту без широких імпортів config/security |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення і нормалізації primitive record/string без імпортів markdown/logging |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і SCP host |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і запуску retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогів із бекінгом на config |
| `plugin-sdk/agent-runtime` | Допоміжні засоби директорії/ідентичності/workspace агента |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів директорій на основі конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store медіа, а також побудовники payload медіа |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover медіагенерації, вибору кандидатів і повідомлень про відсутню модель |
| `plugin-sdk/media-understanding` | Типи provider media understanding, а також орієнтовані на provider експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як видалення тексту, видимого асистенту, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники медіа payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибору кандидатів і повідомлень про відсутню модель |
| `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також provider-facing експорти допоміжних засобів зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/Markdown/logging, такі як вилучення тексту, видимого асистенту, допоміжні засоби render/chunking/table для Markdown, допоміжні засоби редагування чутливих даних, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту |
| `plugin-sdk/speech` | Типи speech provider, а також орієнтовані на provider допоміжні засоби директив, реєстру та валідації |
| `plugin-sdk/speech-core` | Спільні допоміжні засоби типів, реєстру, директив і нормалізації для speech provider |
| `plugin-sdk/realtime-transcription` | Типи provider транскрибування в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Типи provider голосу в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи provider генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні допоміжні засоби типів, failover, auth і реєстру для генерації зображень |
| `plugin-sdk/music-generation` | Типи provider/request/result для генерації музики |
| `plugin-sdk/music-generation-core` | Спільні допоміжні засоби типів генерації музики, failover, пошуку provider і розбору model-ref |
| `plugin-sdk/video-generation` | Типи provider/request/result для генерації відео |
| `plugin-sdk/video-generation-core` | Спільні допоміжні засоби типів генерації відео, failover, пошуку provider і розбору model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру target Webhook і встановлення route |
| `plugin-sdk/speech` | Типи speech-провайдерів, а також provider-facing допоміжні засоби directive, registry і validation |
| `plugin-sdk/speech-core` | Спільні типи speech-провайдерів, registry, directive і допоміжні засоби нормалізації |
| `plugin-sdk/realtime-transcription` | Типи провайдерів realtime transcription і допоміжні засоби registry |
| `plugin-sdk/realtime-voice` | Типи провайдерів realtime voice і допоміжні засоби registry |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, failover, auth і допоміжні засоби registry |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошуку провайдера і парсингу model-ref |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошуку провайдера і парсингу model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру Webhook target і встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддаленого/локального медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для користувачів plugin SDK |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
@ -283,110 +283,109 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
<Accordion title="Підшляхи Memory">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled `memory-core` для допоміжних засобів manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку Memory |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI helpers |
| `plugin-sdk/memory-core-engine-runtime` | Runtime facade індексу/пошуку Memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста Memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до реєстру, локальний provider і узагальнені пакетні/віддалені допоміжні засоби |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до registry, локальний provider і узагальнені допоміжні засоби batch/remote |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста Memory |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста Memory |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста Memory |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста Memory |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста Memory |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні засоби multimodal хоста Memory |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби query хоста Memory |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret хоста Memory |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста Memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста Memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста Memory |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста Memory |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста Memory |
| `plugin-sdk/memory-host-core` | Вендорно-нейтральний псевдонім для допоміжних засобів core runtime хоста Memory |
| `plugin-sdk/memory-host-events` | Вендорно-нейтральний псевдонім для допоміжних засобів журналу подій хоста Memory |
| `plugin-sdk/memory-host-files` | Вендорно-нейтральний псевдонім для допоміжних засобів файлів/runtime хоста Memory |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого markdown для plugins, суміжних із memory |
| `plugin-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Вендорно-нейтральний псевдонім для допоміжних засобів статусу хоста Memory |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled `memory-lancedb` |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби file/runtime хоста Memory |
| `plugin-sdk/memory-host-core` | Нейтральний щодо постачальника псевдонім для допоміжних засобів core runtime хоста Memory |
| `plugin-sdk/memory-host-events` | Нейтральний щодо постачальника псевдонім для допоміжних засобів журналу подій хоста Memory |
| `plugin-sdk/memory-host-files` | Нейтральний щодо постачальника псевдонім для допоміжних засобів file/runtime хоста Memory |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби managed-markdown для plugins, суміжних із memory |
| `plugin-sdk/memory-host-search` | Runtime facade Active Memory для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний щодо постачальника псевдонім для допоміжних засобів статусу хоста Memory |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів вбудованого memory-lancedb |
</Accordion>
<Accordion title="Зарезервовані підшляхи bundled-helper">
| Family | Поточні підшляхи | Призначене використання |
<Accordion title="Зарезервовані підшляхи вбудованих helper">
| Family | Поточні підшляхи | Призначення |
| --- | --- | --- |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки bundled browser plugin (`browser-support` залишається barrel сумісності) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Поверхня допоміжних засобів/runtime bundled Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня допоміжних засобів/runtime bundled LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня допоміжних засобів bundled IRC |
| Допоміжні засоби, специфічні для channel | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Шви сумісності/допоміжні шви bundled channel |
| Допоміжні засоби, специфічні для auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Шви допоміжних засобів bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки вбудованого browser plugin (`browser-support` залишається compatibility barrel) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Поверхня helper/runtime вбудованого Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня helper/runtime вбудованого LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня helper вбудованого IRC |
| Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Вбудовані compatibility/helper seams для каналів |
| Допоміжні засоби, специфічні для auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Вбудовані feature/plugin helper seams; `plugin-sdk/github-copilot-token` зараз експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
## API реєстрації
Колбек `register(api)` отримує об’єкт `OpenClawPluginApi` з такими
Callback `register(api)` отримує об’єкт `OpenClawPluginApi` з такими
методами:
### Реєстрація можливостей
| Method | Що реєструє |
| ------------------------------------------------ | ------------------------------------- |
| `api.registerProvider(...)` | Виведення тексту (LLM) |
| Method | Що він реєструє |
| ------------------------------------------------ | ------------------------------------ |
| `api.registerProvider(...)` | Текстовий inference (LLM) |
| `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець агента |
| `api.registerCliBackend(...)` | Локальний backend виведення CLI |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокове транскрибування в реальному часі |
| `api.registerRealtimeVoiceProvider(...)` | Двоспрямовані голосові сесії в реальному часі |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Provider web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
| `api.registerCliBackend(...)` | Локальний CLI backend для inference |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Text-to-speech / STT synthesis |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова realtime transcription |
| `api.registerRealtimeVoiceProvider(...)` | Двосторонні сесії realtime voice |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
### Інструменти й команди
### Інструменти та команди
| Method | Що реєструє |
| ------------------------------- | -------------------------------------------- |
| Method | Що він реєструє |
| ------------------------------- | --------------------------------------------- |
| `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) |
| `api.registerCommand(def)` | Користувацька команда (обходить LLM) |
| `api.registerCommand(def)` | Користувацька команда (обходить LLM) |
### Інфраструктура
| Method | Що реєструє |
| Method | Що він реєструє |
| ----------------------------------------------- | -------------------------------------- |
| `api.registerHook(events, handler, opts?)` | Hook події |
| `api.registerHook(events, handler, opts?)` | Хук події |
| `api.registerHttpRoute(params)` | HTTP endpoint Gateway |
| `api.registerGatewayMethod(name, handler)` | RPC-метод Gateway |
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
| `api.registerService(service)` | Фонова служба |
| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник |
| `api.registerEmbeddedExtensionFactory(factory)` | Фабрика розширень embedded-runner для Pi |
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із memory |
| `api.registerInteractiveHandler(registration)` | Інтерактивний handler |
| `api.registerEmbeddedExtensionFactory(factory)` | Фабрика extension вбудованого runner Pi |
| `api.registerMemoryPromptSupplement(builder)` | Адитивна секція prompt, суміжна з memory |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання memory |
Зарезервовані простори імен core admin (`config.*`, `exec.approvals.*`, `wizard.*`,
Зарезервовані простори імен адміністрування ядра (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди залишаються `operator.admin`, навіть якщо plugin намагається призначити
вужчу область дії методу gateway. Для методів, що належать plugin,
віддавайте перевагу префіксам, специфічним для plugin.
вужчу область gateway method. Для методів,
що належать plugin, надавайте перевагу префіксам, специфічним для plugin.
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin потрібен
власний для Pi таймінг подій під час embedded-запусків OpenClaw, наприклад асинхронні
переписування `tool_result`, які мають відбутися до того, як буде виведено
остаточне повідомлення результату інструмента.
Наразі це шов bundled-plugin: лише bundled plugins можуть реєструвати такий factory, і
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin потрібен нативний для Pi
таймінг подій під час вбудованих запусків OpenClaw, наприклад асинхронні переписування `tool_result`,
які мають відбутися до того, як буде надіслано фінальне повідомлення з результатом tool.
Сьогодні це seam для вбудованих plugins: лише вбудовані plugins можуть реєструвати такий factory, і
вони мають оголосити `contracts.embeddedExtensionFactories: ["pi"]` у
`openclaw.plugin.json`. Для всього, що не потребує цього нижчорівневого шва,
залишайте звичайні hook plugin OpenClaw.
`openclaw.plugin.json`. Для всього, що
не потребує цього нижчого рівня seam, залишайте звичайні хуки plugin OpenClaw.
### Метадані реєстрації CLI
`api.registerCli(registrar, opts?)` приймає два типи метаданих верхнього рівня:
`api.registerCli(registrar, opts?)` приймає два види метаданих верхнього рівня:
- `commands`: явні корені команд, що належать registrar
- `descriptors`: дескриптори команд на етапі розбору, що використовуються для кореневої довідки CLI,
- `commands`: явні корені команд, якими володіє registrar
- `descriptors`: дескриптори команд для етапу парсингу, що використовуються для кореневої довідки CLI,
маршрутизації та lazy-реєстрації CLI plugin
Якщо ви хочете, щоб команда plugin залишалася lazy-loaded у звичайному шляху кореневого CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується
цим registrar.
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується цим
registrar.
```typescript
api.registerCli(
@ -398,7 +397,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
description: "Керування обліковими записами Matrix, верифікацією, пристроями та станом профілю",
description: "Керування акаунтами Matrix, верифікацією, пристроями та станом профілю",
hasSubcommands: true,
},
],
@ -406,85 +405,86 @@ api.registerCli(
);
```
Використовуйте `commands` окремо лише тоді, коли вам не потрібна lazy-реєстрація кореневого CLI.
Цей eager-шлях сумісності залишається підтримуваним, але він не встановлює
плейсхолдери на основі descriptor для lazy loading на етапі розбору.
Використовуйте `commands` окремо лише тоді, коли вам не потрібна lazy-реєстрація в кореневому CLI.
Цей eager compatibility path залишається підтримуваним, але він не встановлює
placeholders, що підтримуються descriptors, для lazy loading на етапі парсингу.
### Реєстрація backend CLI
### Реєстрація CLI backend
`api.registerCliBackend(...)` дає plugin змогу володіти конфігурацією за замовчуванням для локального
AI CLI backend, такого як `codex-cli`.
CLI backend ШІ, такого як `codex-cli`.
- `id` backend стає префіксом provider у посиланнях на моделі, таких як `codex-cli/gpt-5`.
- `id` backend стає префіксом provider у model refs, таких як `codex-cli/gpt-5`.
- `config` backend використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Конфігурація користувача все одно має пріоритет. OpenClaw об’єднує `agents.defaults.cliBackends.<id>` поверх
значення за замовчуванням plugin перед запуском CLI.
значення plugin за замовчуванням перед запуском CLI.
- Використовуйте `normalizeConfig`, коли backend потребує переписувань сумісності після об’єднання
(наприклад, нормалізації старих форм прапорців).
### Ексклюзивні слоти
| Method | Що реєструє |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Context engine (одночасно активний лише один). Колбек `assemble()` отримує `availableTools` і `citationsMode`, щоб engine міг налаштувати доповнення prompt. |
| `api.registerMemoryCapability(capability)` | Уніфіковану можливість memory |
| `api.registerMemoryPromptSection(builder)` | Побудовник розділу prompt для memory |
| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush для memory |
| `api.registerMemoryRuntime(runtime)` | Адаптер runtime для memory |
| Method | Що він реєструє |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Контекстний рушій (одночасно активний лише один). Callback `assemble()` отримує `availableTools` і `citationsMode`, щоб рушій міг адаптувати доповнення до prompt. |
| `api.registerMemoryCapability(capability)` | Єдину можливість memory |
| `api.registerMemoryPromptSection(builder)` | Побудовник секції prompt для memory |
| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush для memory |
| `api.registerMemoryRuntime(runtime)` | Adapter runtime для memory |
### Адаптери embedding для memory
### Adapters вбудовування memory
| Method | Що реєструє |
| ---------------------------------------------- | ---------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embedding для memory для активного plugin |
| Method | Що він реєструє |
| ---------------------------------------------- | --------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter вбудовування memory для активного plugin |
- `registerMemoryCapability` — це рекомендований API ексклюзивного plugin для memory.
- `registerMemoryCapability` також може експонувати `publicArtifacts.listArtifacts(...)`,
- `registerMemoryCapability` також може надавати `publicArtifacts.listArtifacts(...)`,
щоб plugins-компаньйони могли споживати експортовані артефакти memory через
`openclaw/plugin-sdk/memory-host-core` замість звернення до приватного
`openclaw/plugin-sdk/memory-host-core`, не звертаючись до приватного
layout конкретного plugin memory.
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` і
`registerMemoryRuntime` — це застарілі, але сумісні API ексклюзивного plugin для memory.
- `registerMemoryEmbeddingProvider` дає активному plugin memory змогу зареєструвати один
або кілька id адаптерів embedding (наприклад, `openai`, `gemini` або користувацький id,
визначений plugin).
`registerMemoryRuntime` — це застарілі, але сумісні API ексклюзивного plugin memory.
- `registerMemoryEmbeddingProvider` дає активному plugin memory змогу реєструвати один
або кілька id adapter вбудовування (наприклад, `openai`, `gemini` або визначений plugin користувацький id).
- Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, розв’язується відносно цих зареєстрованих
id адаптерів.
`agents.defaults.memorySearch.fallback`, визначається відносно зареєстрованих id цих
adapter.
### Події та життєвий цикл
| Method | Що робить |
| Method | Що він робить |
| -------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований hook життєвого циклу |
| `api.onConversationBindingResolved(handler)` | Колбек розв’язання прив’язки conversation |
| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу |
| `api.onConversationBindingResolved(handler)` | Callback прив’язки conversation |
### Семантика рішень hook
### Семантика рішень хуків
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який обробник перехоплює dispatch, обробники з нижчим пріоритетом і стандартний шлях dispatch моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` трактується як відсутність рішення (так само, як і пропуск `cancel`), а не як перевизначення.
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як якщо не вказати `block`), а не як перевизначення.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як якщо не вказати `block`), а не як перевизначення.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який handler заявляє про dispatch, handlers із нижчим пріоритетом і типовий шлях model dispatch пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який handler встановлює його, handlers із нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` розглядається як відсутність рішення (так само, як якщо не вказати `cancel`), а не як перевизначення.
- `message_received`: використовуйте типізоване поле `threadId`, коли вам потрібна маршрутизація вхідного потоку/теми. `metadata` залишайте для додаткових даних, специфічних для каналу.
- `message_sending`: використовуйте типізовані поля маршрутизації `replyToId` / `threadId`, перш ніж переходити до специфічного для каналу `metadata`.
### Поля об’єкта API
| Field | Type | Опис |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| `api.id` | `string` | ID plugin |
| `api.name` | `string` | Відображувана назва |
| `api.version` | `string?` | Версія plugin (необов’язково) |
| `api.description` | `string?` | Опис plugin (необов’язково) |
| `api.source` | `string` | Шлях до джерела plugin |
| `api.rootDir` | `string?` | Кореневий каталог plugin (необов’язково) |
| `api.config` | `OpenClawConfig` | Поточний знімок config (активний внутрішньопам’ятний знімок runtime, коли доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для plugin, з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування до повного entry |
| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня plugin |
| Field | Type | Опис |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------ |
| `api.id` | `string` | ID plugin |
| `api.name` | `string` | Відображувана назва |
| `api.version` | `string?` | Версія plugin (необов’язково) |
| `api.description` | `string?` | Опис plugin (необов’язково) |
| `api.source` | `string` | Шлях до джерела plugin |
| `api.rootDir` | `string?` | Коренева директорія plugin (необов’язково) |
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок runtime в пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація plugin з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з обмеженою областю (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це легковагове вікно запуску/налаштування до повного entry |
| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня plugin |
## Угода щодо внутрішніх модулів
@ -492,49 +492,49 @@ AI CLI backend, такого як `codex-cli`.
```
my-plugin/
api.ts # Публічні експорти для зовнішніх споживачів
api.ts # Публічні експорти для зовнішніх користувачів
runtime-api.ts # Експорти runtime лише для внутрішнього використання
index.ts # Точка входу plugin
setup-entry.ts # Полегшене entry лише для налаштування (необов’язково)
setup-entry.ts # Легка точка входу лише для налаштування (необов’язково)
```
<Warning>
Ніколи не імпортуйте власний plugin через `openclaw/plugin-sdk/<your-plugin>`
у production-коді. Спрямовуйте внутрішні імпорти через `./api.ts` або
із production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
`./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт.
</Warning>
Завантажувані через facade публічні поверхні bundled plugin (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли) тепер віддають перевагу
активному знімку config runtime, коли OpenClaw уже запущено. Якщо знімок runtime
ще не існує, вони повертаються до розв’язаного config-файлу на диску.
Публічні поверхні вбудованих plugins, завантажені через facade (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли), тепер надають перевагу
активному знімку конфігурації runtime, коли OpenClaw уже запущений. Якщо знімка runtime
ще не існує, вони повертаються до розв’язуваного файла конфігурації на диску.
Plugins provider також можуть експонувати вузький локальний для plugin barrel контракту, коли
допоміжний засіб навмисно є специфічним для provider і ще не належить до узагальненого
підшляху SDK. Поточний bundled-приклад: provider Anthropic тримає свої
допоміжні засоби потоку Claude у власному публічному шві `api.ts` / `contract-api.ts` замість
просування логіки Anthropic beta-header і `service_tier` в узагальнений
контракт `plugin-sdk/*`.
Plugins провайдерів також можуть експортувати вузький локальний barrel контракту plugin, коли
допоміжний засіб навмисно є специфічним для провайдера й поки що не належить до узагальненого підшляху SDK.
Поточний вбудований приклад: провайдер Anthropic зберігає свої допоміжні засоби Claude
stream у власному публічному seam `api.ts` / `contract-api.ts`, замість того щоб
просувати логіку Anthropic beta-header і `service_tier` до узагальненого
контракту `plugin-sdk/*`.
Інші поточні bundled-приклади:
Інші поточні вбудовані приклади:
- `@openclaw/openai-provider`: `api.ts` експортує побудовники provider,
допоміжні засоби моделей за замовчуванням і побудовники provider реального часу
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник provider, а також
допоміжні засоби onboarding/config
- `@openclaw/openai-provider`: `api.ts` експортує побудовники провайдерів,
допоміжні засоби моделей за замовчуванням і побудовники realtime-провайдерів
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник провайдера, а також
допоміжні засоби онбордингу/конфігурації
<Warning>
Production-код extension також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
Якщо допоміжний засіб справді є спільним, перенесіть його до нейтрального підшляху SDK,
Якщо допоміжний засіб справді є спільним, просувайте його до нейтрального підшляху SDK,
такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої
поверхні, орієнтованої на можливості, замість жорсткого зв’язування двох plugins.
surface, орієнтованої на можливість, замість зв’язування двох plugins між собою.
</Warning>
## Пов’язане
- [Точки входу](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry`
- [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime`
- [Налаштування та config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми config
- [Тестування](/uk/plugins/sdk-testing) — тестові утиліти та правила lint
- [Міграція SDK](/uk/plugins/sdk-migration) — міграція із застарілих поверхонь
- [Внутрішня будова plugin](/uk/plugins/architecture) — глибока архітектура та модель можливостей
- [Entry Points](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry`
- [Runtime Helpers](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime`
- [Setup and Config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми конфігурації
- [Testing](/uk/plugins/sdk-testing) — тестові утиліти та правила lint
- [SDK Migration](/uk/plugins/sdk-migration) — міграція із застарілих surface
- [Plugin Internals](/uk/plugins/architecture) — глибока архітектура і модель можливостей plugin