chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-23 03:01:12 +00:00
parent 380e776115
commit 3185688d0a
5 changed files with 772 additions and 728 deletions

View File

@ -2,36 +2,40 @@
read_when:
- Ви бачите попередження OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED
- Ви бачите попередження OPENCLAW_EXTENSION_API_DEPRECATED
- Ви оновлюєте Plugin до сучасної архітектури plugin
- Ви оновлюєте Plugin до сучасної архітектури plugin-ів
- Ви підтримуєте зовнішній Plugin OpenClaw
sidebarTitle: Migrate to SDK
summary: Перейдіть із застарілого шару зворотної сумісності на сучасний Plugin SDK
title: Міграція Plugin SDK
x-i18n:
generated_at: "2026-04-22T01:34:41Z"
generated_at: "2026-04-23T02:58:47Z"
model: gpt-5.4
provider: openai
source_hash: 72c9fc2d77f5feda336a1119fc42ebe088d5037f99c2b3843e9f06efed20386d
source_hash: 0abdf5135b0e0a029348b77447ca713e43762a65934310088a098fee93cf9981
source_path: plugins/sdk-migration.md
workflow: 15
---
# Міграція Plugin SDK
OpenClaw перейшов від широкого шару зворотної сумісності до сучасної архітектури plugin із цільовими, задокументованими імпортами. Якщо ваш Plugin було створено до появи нової архітектури, цей посібник допоможе вам виконати міграцію.
OpenClaw перейшов від широкого шару зворотної сумісності до сучасної архітектури plugin-ів зі сфокусованими, задокументованими імпортами. Якщо ваш Plugin було створено до появи нової архітектури, цей посібник допоможе вам виконати міграцію.
## Що змінюється
Стара система plugin надавала дві широкі поверхні, які дозволяли plugin імпортувати будь-що потрібне з однієї точки входу:
Стара система plugin-ів надавала дві широкі поверхні, які дозволяли plugin-ам імпортувати
все, що їм потрібно, з єдиної точки входу:
- **`openclaw/plugin-sdk/compat`** — один імпорт, який повторно експортував десятки допоміжних засобів. Його було запроваджено, щоб старіші plugin на основі хуків продовжували працювати, поки будувалася нова архітектура plugin.
- **`openclaw/extension-api`** — міст, який надавав plugin прямий доступ до допоміжних засобів на боці хоста, таких як вбудований запускальник агентів.
- **`openclaw/plugin-sdk/compat`** — єдиний імпорт, який повторно експортував десятки
допоміжних засобів. Його було запроваджено, щоб зберегти працездатність старіших plugin-ів на основі хуків, поки будувалася нова архітектура plugin-ів.
- **`openclaw/extension-api`** — міст, який надавав plugin-ам прямий доступ до
допоміжних засобів на боці хоста, таких як вбудований виконавець агентів.
Обидві поверхні тепер **застарілі**. Вони все ще працюють під час виконання, але нові plugin не повинні їх використовувати, а наявні plugin слід мігрувати до того, як наступний мажорний випуск їх видалить.
Обидві поверхні тепер **застарілі**. Вони все ще працюють під час виконання, але нові
plugin-и не повинні їх використовувати, а наявні plugin-и мають виконати міграцію до того, як у наступному мажорному релізі їх буде вилучено.
<Warning>
Шар зворотної сумісності буде видалено в одному з майбутніх мажорних випусків.
Plugin, які досі імпортують із цих поверхонь, перестануть працювати, коли це станеться.
Шар зворотної сумісності буде вилучено в одному з майбутніх мажорних релізів.
Plugin-и, які все ще імпортують із цих поверхонь, перестануть працювати, коли це станеться.
</Warning>
## Чому це змінилося
@ -40,57 +44,60 @@ OpenClaw перейшов від широкого шару зворотної с
- **Повільний запуск** — імпорт одного допоміжного засобу завантажував десятки не пов’язаних модулів
- **Циклічні залежності** — широкі повторні експорти спрощували створення циклів імпорту
- **Нечітка поверхня API** — не було способу визначити, які експорти є стабільними, а які внутрішніми
- **Нечітка поверхня API** — не було способу визначити, які експорти є стабільними, а які внутрішніми
Сучасний Plugin SDK вирішує цю проблему: кожен шлях імпорту (`openclaw/plugin-sdk/\<subpath\>`) є невеликим, самодостатнім модулем із чітким призначенням і задокументованим контрактом.
Сучасний Plugin SDK це виправляє: кожен шлях імпорту (`openclaw/plugin-sdk/\<subpath\>`)
є невеликим, самодостатнім модулем із чітким призначенням і задокументованим контрактом.
Застарілі зручні шви provider для вбудованих каналів також прибрано. Імпорти
Успадковані зручні поверхні provider-ів для вбудованих channel-ів також більше не існують. Імпорти
на кшталт `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`,
допоміжні шви під брендом каналів і
допоміжні поверхні з брендуванням channel-ів і
`openclaw/plugin-sdk/telegram-core` були приватними скороченнями монорепозиторію, а не
стабільними контрактами plugin. Натомість використовуйте вузькі універсальні підшляхи SDK. Усередині робочого простору вбудованого plugin зберігайте допоміжні засоби, що належать provider, у власному
`api.ts` або `runtime-api.ts` цього plugin.
стабільними контрактами plugin-ів. Натомість використовуйте вузькі узагальнені підшляхи SDK. Усередині
робочого простору вбудованого Plugin зберігайте допоміжні засоби, що належать provider-у, у власному
`api.ts` або `runtime-api.ts` цього plugin-а.
Поточні приклади вбудованих provider:
Поточні приклади вбудованих provider-ів:
- Anthropic зберігає допоміжні засоби потоків, специфічні для Claude, у власному шві `api.ts` /
- Anthropic зберігає специфічні для Claude допоміжні засоби потоків у власній поверхні `api.ts` /
`contract-api.ts`
- OpenAI зберігає конструктори provider, допоміжні засоби моделей за замовчуванням і конструктори provider реального часу у власному `api.ts`
- OpenRouter зберігає конструктор provider і допоміжні засоби онбордингу/конфігурації у власному
- OpenAI зберігає білдери provider-ів, допоміжні засоби моделей за замовчуванням і білдери
provider-ів realtime у власному `api.ts`
- OpenRouter зберігає білдер provider-а та допоміжні засоби онбордингу/конфігурації у власному
`api.ts`
## Як виконати міграцію
<Steps>
<Step title="Перенесіть approval-native обробники на факти можливостей">
Plugin каналів із підтримкою approval тепер надають нативну поведінку approval через
`approvalCapability.nativeRuntime` разом зі спільним реєстром контексту runtime.
Channel plugin-и з підтримкою approval тепер розкривають нативну поведінку approval через
`approvalCapability.nativeRuntime` разом зі спільним реєстром runtime-контексту.
Ключові зміни:
- Замініть `approvalCapability.handler.loadRuntime(...)` на
`approvalCapability.nativeRuntime`
- Перенесіть специфічні для approval auth/delivery зі старої прив’язки `plugin.auth` /
- Перенесіть auth/доставку, специфічні для approval, із застарілої прив’язки `plugin.auth` /
`plugin.approvals` на `approvalCapability`
- `ChannelPlugin.approvals` було видалено з публічного контракту plugin каналу;
- `ChannelPlugin.approvals` було вилучено з публічного контракту channel-plugin-а;
перенесіть поля delivery/native/render до `approvalCapability`
- `plugin.auth` залишається лише для потоків входу/виходу каналу; хуки auth для approval
там більше не зчитуються ядром
- Реєструйте runtime-об’єкти, що належать каналу, такі як клієнти, токени або застосунки Bolt,
через `openclaw/plugin-sdk/channel-runtime-context`
- Не надсилайте повідомлення reroute, що належать plugin, із нативних обробників approval;
тепер ядро відповідає за повідомлення про доставку в інше місце на основі фактичних результатів delivery
- Під час передавання `channelRuntime` до `createChannelManager(...)` надавайте
справжню поверхню `createPluginRuntime().channel`. Часткові заглушки відхиляються.
- `plugin.auth` залишається лише для потоків login/logout channel-ів; auth-хуки
approval там більше не зчитуються core
- Реєструйте об’єкти runtime, що належать channel-у, як-от клієнти, токени або Bolt
apps, через `openclaw/plugin-sdk/channel-runtime-context`
- Не надсилайте сповіщення reroute, що належать plugin-у, з нативних обробників approval;
сповіщення «маршрутизовано в інше місце» тепер належать core і базуються на фактичних результатах доставки
- Під час передавання `channelRuntime` у `createChannelManager(...)` надавайте
реальну поверхню `createPluginRuntime().channel`. Часткові заглушки відхиляються.
Поточну структуру можливостей approval див. у `/plugins/sdk-channel-plugins`.
</Step>
<Step title="Перевірте резервну поведінку обгортки Windows">
Якщо ваш Plugin використовує `openclaw/plugin-sdk/windows-spawn`, невизначені обгортки Windows
`.cmd`/`.bat` тепер завершуються з закритою відмовою, якщо ви явно не передасте `allowShellFallback: true`.
<Step title="Перевірте резервну поведінку Windows wrapper">
Якщо ваш Plugin використовує `openclaw/plugin-sdk/windows-spawn`, нерозв’язані Windows
wrapper-и `.cmd`/`.bat` тепер аварійно завершуються за принципом fail closed, якщо ви явно не передасте `allowShellFallback: true`.
```typescript
// Before
@ -105,13 +112,13 @@ OpenClaw перейшов від широкого шару зворотної с
});
```
Якщо ваш виклик навмисно не покладається на резервний перехід до shell, не встановлюйте
`allowShellFallback` і натомість обробляйте викинуту помилку.
Якщо ваш виклик навмисно не покладається на shell fallback, не задавайте
`allowShellFallback`, а натомість обробляйте згенеровану помилку.
</Step>
<Step title="Знайдіть застарілі імпорти">
Знайдіть у своєму plugin імпорти з будь-якої застарілої поверхні:
Пошукайте у своєму Plugin імпорти з будь-якої із застарілих поверхонь:
```bash
grep -r "plugin-sdk/compat" my-plugin/
@ -120,8 +127,8 @@ OpenClaw перейшов від широкого шару зворотної с
</Step>
<Step title="Замініть на цільові імпорти">
Кожен експорт зі старої поверхні зіставляється з певним сучасним шляхом імпорту:
<Step title="Замініть на сфокусовані імпорти">
Кожен експорт зі старої поверхні відповідає певному сучасному шляху імпорту:
```typescript
// Before (deprecated backwards-compatibility layer)
@ -137,7 +144,7 @@ OpenClaw перейшов від широкого шару зворотної с
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
```
Для допоміжних засобів на боці хоста використовуйте впроваджений runtime plugin замість прямого імпорту:
Для допоміжних засобів на боці хоста використовуйте впроваджений runtime Plugin замість прямого імпорту:
```typescript
// Before (deprecated extension-api bridge)
@ -148,7 +155,7 @@ OpenClaw перейшов від широкого шару зворотної с
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
```
Той самий шаблон застосовується й до інших застарілих допоміжних засобів bridge:
Такий самий шаблон застосовується й до інших допоміжних засобів застарілого моста:
| Старий імпорт | Сучасний еквівалент |
| --- | --- |
@ -158,7 +165,7 @@ OpenClaw перейшов від широкого шару зворотної с
| `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` |
| `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` |
| `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` |
| допоміжні засоби сховища сесій | `api.runtime.agent.session.*` |
| session store helpers | `api.runtime.agent.session.*` |
</Step>
@ -173,175 +180,176 @@ OpenClaw перейшов від широкого шару зворотної с
## Довідник шляхів імпорту
<Accordion title="Таблиця поширених шляхів імпорту">
| Шлях імпорту | Призначення | Ключові експорти |
| Import path | Призначення | Ключові експорти |
| --- | --- | --- |
| `plugin-sdk/plugin-entry` | Канонічний допоміжний засіб точки входу plugin | `definePluginEntry` |
| `plugin-sdk/core` | Застарілий повторний експорт-парасолька для визначень/конструкторів точок входу каналів | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/plugin-entry` | Канонічний допоміжний засіб точки входу Plugin | `definePluginEntry` |
| `plugin-sdk/core` | Успадкований узагальнений повторний експорт для визначень/білдерів точок входу channel-ів | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/config-schema` | Експорт кореневої схеми конфігурації | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | Допоміжний засіб точки входу для одного provider | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Цільові визначення та конструктори точок входу каналів | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування | Запити списку дозволених, конструктори статусу налаштування |
| `plugin-sdk/provider-entry` | Допоміжний засіб точки входу для одного provider-а | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Сфокусовані визначення та білдери точок входу channel-ів | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування | Запити allowlist, білдери статусу налаштування |
| `plugin-sdk/setup-runtime` | Допоміжні засоби runtime під час налаштування | Безпечні для імпорту адаптери патчів налаштування, допоміжні засоби приміток пошуку, `promptResolvedAllowFrom`, `splitSetupEntries`, делеговані проксі налаштування |
| `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` | Допоміжні засоби для кількох облікових записів | Допоміжні засоби списку/конфігурації/шлюзу дій облікового запису |
| `plugin-sdk/account-id` | Допоміжні засоби account-id | `DEFAULT_ACCOUNT_ID`, нормалізація account-id |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису | Допоміжні засоби пошуку облікового запису + резервного використання значення за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби облікових записів | Допоміжні засоби списку облікових записів/дій з обліковими записами |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікових записів | Допоміжні засоби пошуку облікових записів + резервного вибору значення за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби облікових записів | Допоміжні засоби списку облікових записів/дій облікового запису |
| `plugin-sdk/channel-setup` | Адаптери майстра налаштування | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/channel-pairing` | Примітиви pairing для DM | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | Проводка префікса відповіді + індикатора набору | `createChannelReplyPipeline` |
| `plugin-sdk/channel-pairing` | Примітиви сполучення DM | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | Префікс відповіді + зв’язування typing | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | Фабрики адаптерів конфігурації | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Конструктори схем конфігурації | Типи схем конфігурації каналу |
| `plugin-sdk/channel-config-schema` | Білдери схем конфігурації | Типи схем конфігурації channel-ів |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби конфігурації команд Telegram | Нормалізація назв команд, обрізання описів, валідація дублікатів/конфліктів |
| `plugin-sdk/channel-policy` | Визначення політики груп/DM | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | Допоміжні засоби статусу облікового запису та життєвого циклу чернеткового потоку | `createAccountStatusSink`, допоміжні засоби фіналізації попереднього перегляду чернетки |
| `plugin-sdk/channel-lifecycle` | Допоміжні засоби життєвого циклу статусу облікового запису та потоку чернеток | `createAccountStatusSink`, допоміжні засоби фіналізації попереднього перегляду чернетки |
| `plugin-sdk/inbound-envelope` | Допоміжні засоби вхідного envelope | Спільні допоміжні засоби маршрутизації + побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Допоміжні засоби вхідних відповідей | Спільні допоміжні засоби запису та диспетчеризації |
| `plugin-sdk/messaging-targets` | Розбір цілей повідомлень | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Допоміжні засоби вихідних медіа | Спільне завантаження вихідних медіа |
| `plugin-sdk/messaging-targets` | Аналіз цілей повідомлень | Допоміжні засоби аналізу/зіставлення цілей |
| `plugin-sdk/outbound-media` | Допоміжні засоби вихідного медіа | Спільне завантаження вихідного медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідного runtime | Допоміжні засоби вихідної ідентичності/делегата надсилання та планування payload |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби thread-binding | Допоміжні засоби життєвого циклу thread-binding та адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілі допоміжні засоби media payload | Конструктор media payload агента для застарілих макетів полів |
| `plugin-sdk/channel-runtime` | Застарілий shim сумісності | Лише застарілі утиліти runtime каналу |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби прив’язок thread | Допоміжні засоби життєвого циклу прив’язок thread і адаптера |
| `plugin-sdk/agent-media-payload` | Успадковані допоміжні засоби media payload | Білдер media payload агента для успадкованих макетів полів |
| `plugin-sdk/channel-runtime` | Застарілий shim сумісності | Лише успадковані утиліти runtime channel-ів |
| `plugin-sdk/channel-send-result` | Типи результатів надсилання | Типи результатів відповіді |
| `plugin-sdk/runtime-store` | Постійне сховище plugin | `createPluginRuntimeStore` |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime | Допоміжні засоби runtime/логування/резервного копіювання/встановлення plugin |
| `plugin-sdk/runtime-store` | Постійне сховище Plugin | `createPluginRuntimeStore` |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime | Допоміжні засоби runtime/логування/резервного копіювання/встановлення plugin-ів |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env | Logger/runtime env, допоміжні засоби timeout, retry і backoff |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби runtime plugin | Допоміжні засоби команд/хуків/http/interactive для plugin |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби runtime Plugin | Допоміжні засоби команд/хуків/http/інтерактивності Plugin |
| `plugin-sdk/hook-runtime` | Допоміжні засоби конвеєра hook | Спільні допоміжні засоби конвеєра Webhook/внутрішніх hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy runtime | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби процесів | Спільні допоміжні засоби exec |
| `plugin-sdk/cli-runtime` | Допоміжні засоби CLI runtime | Форматування команд, очікування, допоміжні засоби версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби Gateway | Клієнт Gateway і допоміжні засоби патчів статусу каналу |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби Gateway | Клієнт Gateway і допоміжні засоби patch статусу channel-ів |
| `plugin-sdk/config-runtime` | Допоміжні засоби конфігурації | Допоміжні засоби завантаження/запису конфігурації |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби команд Telegram | Допоміжні засоби валідації команд Telegram зі стабільним fallback, коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні засоби запитів approval | Payload approval exec/plugin, допоміжні засоби можливостей/профілю approval, нативні допоміжні засоби маршрутизації/runtime approval |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби auth для approval | Визначення approver, auth дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби клієнта approval | Допоміжні засоби профілю/фільтра нативного approval exec |
| `plugin-sdk/approval-delivery-runtime` | Допоміжні засоби delivery для approval | Адаптери можливостей/delivery нативного approval |
| `plugin-sdk/approval-gateway-runtime` | Допоміжні засоби Gateway для approval | Спільний допоміжний засіб визначення Gateway для approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Допоміжні засоби адаптера approval | Полегшені допоміжні засоби завантаження нативного адаптера approval для гарячих точок входу каналів |
| `plugin-sdk/approval-handler-runtime` | Допоміжні засоби обробника approval | Ширші допоміжні засоби runtime обробника approval; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілей approval | Допоміжні засоби нативної прив’язки цілей/облікових записів approval |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби відповідей approval | Допоміжні засоби payload відповіді approval exec/plugin |
| `plugin-sdk/channel-runtime-context` | Допоміжні засоби контексту runtime каналу | Універсальні допоміжні засоби register/get/watch контексту runtime каналу |
| `plugin-sdk/security-runtime` | Допоміжні засоби безпеки | Спільні допоміжні засоби trust, гейтінгу DM, зовнішнього вмісту та збору секретів |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби auth approval | Визначення approver, auth дій у тому самому chat |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби клієнта approval | Допоміжні засоби профілю/фільтра нативного exec approval |
| `plugin-sdk/approval-delivery-runtime` | Допоміжні засоби доставки approval | Нативні адаптери можливостей/доставки approval |
| `plugin-sdk/approval-gateway-runtime` | Допоміжні засоби Gateway approval | Спільний допоміжний засіб визначення Gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Допоміжні засоби адаптера approval | Полегшені допоміжні засоби завантаження адаптера нативного approval для гарячих точок входу channel-ів |
| `plugin-sdk/approval-handler-runtime` | Допоміжні засоби обробника approval | Ширші допоміжні засоби runtime обробника approval; віддавайте перевагу вужчим поверхням adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілі approval | Допоміжні засоби нативної цілі approval/прив’язки облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби відповіді approval | Допоміжні засоби payload відповіді exec/plugin approval |
| `plugin-sdk/channel-runtime-context` | Допоміжні засоби runtime-context channel-ів | Узагальнені допоміжні засоби register/get/watch для runtime-context channel-ів |
| `plugin-sdk/security-runtime` | Допоміжні засоби безпеки | Спільні допоміжні засоби довіри, шлюзу DM, зовнішнього вмісту та збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF | Допоміжні засоби allowlist хостів і політики приватної мережі |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби SSRF runtime | Допоміжні засоби pinned-dispatcher, guarded fetch, SSRF policy |
| `plugin-sdk/collection-runtime` | Допоміжні засоби обмеженого кешу | `pruneMapToMaxSize` |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби гейтінгу діагностики | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби шлюзу діагностики | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
| `plugin-sdk/error-runtime` | Допоміжні засоби форматування помилок | `formatUncaughtError`, `isApprovalNotFoundError`, допоміжні засоби графа помилок |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби обгорнутого fetch/proxy | `resolveFetch`, допоміжні засоби proxy |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації хоста | `normalizeHostname`, `normalizeScpRemoteHost` |
| `plugin-sdk/retry-runtime` | Допоміжні засоби retry | `RetryConfig`, `retryAsync`, виконавці політик |
| `plugin-sdk/allow-from` | Форматування allowlist | `formatAllowFromLowercase` |
| `plugin-sdk/allowlist-resolution` | Зіставлення вхідних даних allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Гейтинг команд і допоміжні засоби поверхні команд | `resolveControlCommandGate`, допоміжні засоби авторизації відправника, допоміжні засоби реєстру команд |
| `plugin-sdk/allowlist-resolution` | Відображення вхідних даних allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Шлюз команд і допоміжні засоби поверхні команд | `resolveControlCommandGate`, допоміжні засоби авторизації відправника, допоміжні засоби реєстру команд |
| `plugin-sdk/command-status` | Рендерери статусу/довідки команд | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` |
| `plugin-sdk/secret-input` | Розбір секретного вводу | Допоміжні засоби секретного вводу |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запитів Webhook | Утиліти цілей Webhook |
| `plugin-sdk/secret-input` | Аналіз секретного введення | Допоміжні засоби секретного введення |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запитів Webhook | Утиліти цілі Webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби guard для тіла запиту Webhook | Допоміжні засоби читання/обмеження тіла запиту |
| `plugin-sdk/reply-runtime` | Спільний runtime відповіді | Вхідна диспетчеризація, Heartbeat, планувальник відповіді, chunking |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби диспетчеризації відповідей | Допоміжні засоби finalize + диспетчеризації provider |
| `plugin-sdk/reply-runtime` | Спільний runtime відповіді | Вхідна диспетчеризація, Heartbeat, планувальник відповіді, чанкування |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби диспетчеризації відповідей | Допоміжні засоби finalize + диспетчеризації provider-а |
| `plugin-sdk/reply-history` | Допоміжні засоби історії відповідей | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | Планування посилань на відповіді | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Допоміжні засоби chunk відповіді | Допоміжні засоби chunking тексту/markdown |
| `plugin-sdk/reply-reference` | Планування посилань відповіді | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Допоміжні засоби чанків відповіді | Допоміжні засоби чанкування тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби сховища сесій | Допоміжні засоби шляху сховища + updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів стану | Допоміжні засоби каталогів стану та OAuth |
| `plugin-sdk/routing` | Допоміжні засоби маршрутизації/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, допоміжні засоби нормалізації session-key |
| `plugin-sdk/status-helpers` | Допоміжні засоби статусу каналу | Конструктори зведень статусу каналу/облікового запису, значення стану runtime за замовчуванням, допоміжні засоби метаданих проблем |
| `plugin-sdk/status-helpers` | Допоміжні засоби статусу channel-ів | Білдери підсумків статусу channel-ів/облікових записів, значення runtime-state за замовчуванням, допоміжні засоби метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Допоміжні засоби визначення цілей | Спільні допоміжні засоби визначення цілей |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації рядків | Допоміжні засоби нормалізації slug/рядків |
| `plugin-sdk/request-url` | Допоміжні засоби URL запитів | Витягування рядкових URL із вхідних даних, подібних до запиту |
| `plugin-sdk/run-command` | Допоміжні засоби команд із таймером | Виконавець команд із таймером і нормалізованими stdout/stderr |
| `plugin-sdk/param-readers` | Зчитувачі параметрів | Поширені зчитувачі параметрів інструментів/CLI |
| `plugin-sdk/tool-payload` | Витягування payload інструмента | Витягування нормалізованих payload з об’єктів результатів інструментів |
| `plugin-sdk/tool-send` | Витягування надсилання інструмента | Витягування канонічних полів цілі надсилання з аргументів інструмента |
| `plugin-sdk/request-url` | Допоміжні засоби URL запитів | Витягування рядкових URL з подібних до request вхідних даних |
| `plugin-sdk/run-command` | Допоміжні засоби команд із таймерами | Виконавець команд із таймером і нормалізованими stdout/stderr |
| `plugin-sdk/param-readers` | Читачі параметрів | Поширені читачі параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування payload tool | Витягування нормалізованих payload з об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягування send tool | Витягування канонічних полів цілі send з аргументів tool |
| `plugin-sdk/temp-path` | Допоміжні засоби тимчасових шляхів | Спільні допоміжні засоби шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні засоби логування | Допоміжні засоби logger підсистеми та редагування чутливих даних |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби markdown-таблиць | Допоміжні засоби режиму markdown-таблиць |
| `plugin-sdk/reply-payload` | Типи відповідей повідомлень | Типи payload відповідей |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted provider | Допоміжні засоби виявлення/конфігурації self-hosted provider |
| `plugin-sdk/self-hosted-provider-setup` | Цільові допоміжні засоби налаштування self-hosted provider, сумісних з OpenAI | Ті самі допоміжні засоби виявлення/конфігурації self-hosted provider |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби runtime auth provider | Допоміжні засоби визначення API-ключів runtime |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби налаштування API-ключів provider | Допоміжні засоби онбордингу/запису профілю API-ключа |
| `plugin-sdk/provider-auth-result` | Допоміжні засоби результату auth provider | Стандартний конструктор результату auth OAuth |
| `plugin-sdk/provider-auth-login` | Допоміжні засоби інтерактивного входу provider | Спільні допоміжні засоби інтерактивного входу |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби env vars provider | Допоміжні засоби пошуку env vars auth provider |
| `plugin-sdk/provider-model-shared` | Спільні допоміжні засоби моделей/replay provider | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори політик replay, допоміжні засоби endpoint provider та нормалізації model-id |
| `plugin-sdk/provider-catalog-shared` | Спільні допоміжні засоби каталогу provider | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-onboard` | Патчі онбордингу provider | Допоміжні засоби конфігурації онбордингу |
| `plugin-sdk/provider-http` | Допоміжні засоби HTTP provider | Універсальні допоміжні засоби HTTP/можливостей endpoint provider |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби web-fetch provider | Допоміжні засоби реєстрації/кешу provider web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Допоміжні засоби конфігурації web-search provider | Вузькі допоміжні засоби конфігурації/облікових даних web-search для provider, яким не потрібна прив’язка ввімкнення plugin |
| `plugin-sdk/provider-web-search-contract` | Допоміжні засоби контракту web-search provider | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped-сетери/гетери облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби web-search provider | Допоміжні засоби реєстрації/кешу/runtime provider web-search |
| `plugin-sdk/provider-tools` | Допоміжні засоби compat інструментів/схем provider | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схем Gemini + діагностика, а також допоміжні засоби compat для xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | Допоміжні засоби usage provider | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` та інші допоміжні засоби usage provider |
| `plugin-sdk/provider-stream` | Допоміжні засоби обгорток потоків provider | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби транспорту provider | Нативні допоміжні засоби транспорту provider, такі як guarded fetch, перетворення транспортних повідомлень і потоки подій транспорту з можливістю запису |
| `plugin-sdk/logging-core` | Допоміжні засоби логування | Допоміжні засоби logger підсистеми та редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби markdown-table | Допоміжні засоби режиму markdown-table |
| `plugin-sdk/reply-payload` | Типи reply повідомлень | Типи payload відповіді |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted provider-ів | Допоміжні засоби виявлення/конфігурації self-hosted provider-ів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted provider-ів, сумісних з OpenAI | Ті самі допоміжні засоби виявлення/конфігурації self-hosted provider-ів |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби runtime auth provider-а | Допоміжні засоби визначення API-ключа runtime |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби налаштування API-ключа provider-а | Допоміжні засоби онбордингу/запису профілю API-ключа |
| `plugin-sdk/provider-auth-result` | Допоміжні засоби auth-result provider-а | Стандартний білдер OAuth auth-result |
| `plugin-sdk/provider-auth-login` | Допоміжні засоби інтерактивного login provider-а | Спільні допоміжні засоби інтерактивного login |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби env-var provider-а | Допоміжні засоби пошуку env-var auth provider-а |
| `plugin-sdk/provider-model-shared` | Спільні допоміжні засоби моделей/replay provider-а | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні білдери політики replay, допоміжні засоби endpoint provider-а та нормалізації model-id |
| `plugin-sdk/provider-catalog-shared` | Спільні допоміжні засоби каталогу provider-ів | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-onboard` | Патчі онбордингу provider-а | Допоміжні засоби конфігурації онбордингу |
| `plugin-sdk/provider-http` | Допоміжні засоби HTTP provider-а | Узагальнені допоміжні засоби HTTP/можливостей endpoint provider-а |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби web-fetch provider-а | Допоміжні засоби реєстрації/кешу provider-а web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Допоміжні засоби конфігурації web-search provider-а | Вузькі допоміжні засоби конфігурації/облікових даних web-search для provider-ів, яким не потрібна прив’язка ввімкнення Plugin |
| `plugin-sdk/provider-web-search-contract` | Допоміжні засоби контракту web-search provider-а | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped сетери/гетери облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби web-search provider-а | Допоміжні засоби реєстрації/кешу/runtime provider-а web-search |
| `plugin-sdk/provider-tools` | Допоміжні засоби сумісності tool/schema provider-а | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика, а також допоміжні засоби сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | Допоміжні засоби використання provider-а | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` та інші допоміжні засоби використання provider-а |
| `plugin-sdk/provider-stream` | Допоміжні засоби обгортки потоку provider-а | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоку та спільні допоміжні засоби обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби транспорту provider-а | Нативні допоміжні засоби транспорту provider-а, як-от guarded fetch, перетворення транспортних повідомлень і потоки записуваних транспортних подій |
| `plugin-sdk/keyed-async-queue` | Упорядкована асинхронна черга | `KeyedAsyncQueue` |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби медіа | Допоміжні засоби отримання/перетворення/збереження медіа, а також конструктори media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби генерації медіа | Спільні допоміжні засоби failover, вибору кандидатів і повідомлень про відсутні моделі для генерації зображень/відео/музики |
| `plugin-sdk/media-understanding` | Допоміжні засоби Media understanding | Типи provider для media understanding, а також експорти допоміжних засобів зображення/аудіо для provider |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби тексту | Видалення видимого асистенту тексту, допоміжні засоби рендерингу/chunking/таблиць markdown, редагування чутливих даних, допоміжні засоби тегів директив, утиліти безпечного тексту та пов’язані допоміжні засоби тексту/логування |
| `plugin-sdk/text-chunking` | Допоміжні засоби chunking тексту | Допоміжний засіб chunking вихідного тексту |
| `plugin-sdk/speech` | Допоміжні засоби мовлення | Типи provider мовлення, а також допоміжні засоби директив, реєстру та валідації для provider |
| `plugin-sdk/speech-core` | Спільне ядро мовлення | Типи provider мовлення, реєстр, директиви, нормалізація |
| `plugin-sdk/realtime-transcription` | Допоміжні засоби транскрипції в реальному часі | Типи provider і допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Допоміжні засоби голосу в реальному часі | Типи provider і допоміжні засоби реєстру |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби media | Допоміжні засоби fetch/transform/store media, а також білдери media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби генерації media | Спільні допоміжні засоби failover, вибір кандидатів і повідомлення про відсутні моделі для генерації зображень/відео/музики |
| `plugin-sdk/media-understanding` | Допоміжні засоби media-understanding | Типи provider-ів media understanding, а також експорти допоміжних засобів зображень/аудіо для provider-ів |
| `plugin-sdk/text-runtime` | Спільні текстові допоміжні засоби | Видалення тексту, видимого помічнику, допоміжні засоби рендерингу/чанкування/таблиць markdown, редагування, допоміжні засоби тегів директив, утиліти безпечного тексту та пов’язані допоміжні засоби тексту/логування |
| `plugin-sdk/text-chunking` | Допоміжні засоби чанкування тексту | Допоміжний засіб чанкування вихідного тексту |
| `plugin-sdk/speech` | Допоміжні засоби speech | Типи provider-ів speech, а також допоміжні засоби директив, реєстру та валідації для provider-ів |
| `plugin-sdk/speech-core` | Спільне ядро speech | Типи provider-ів speech, реєстр, директиви, нормалізація |
| `plugin-sdk/realtime-transcription` | Допоміжні засоби realtime transcription | Типи provider-ів, допоміжні засоби реєстру та спільний допоміжний засіб сесії WebSocket |
| `plugin-sdk/realtime-voice` | Допоміжні засоби realtime voice | Типи provider-ів і допоміжні засоби реєстру |
| `plugin-sdk/image-generation-core` | Спільне ядро генерації зображень | Типи генерації зображень, failover, auth і допоміжні засоби реєстру |
| `plugin-sdk/music-generation` | Допоміжні засоби генерації музики | Типи provider/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільне ядро генерації музики | Типи генерації музики, допоміжні засоби failover, пошук provider і розбір model-ref |
| `plugin-sdk/video-generation` | Допоміжні засоби генерації відео | Типи provider/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільне ядро генерації відео | Типи генерації відео, допоміжні засоби failover, пошук provider і розбір model-ref |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби інтерактивних відповідей | Нормалізація/зведення payload інтерактивних відповідей |
| `plugin-sdk/channel-config-primitives` | Примітиви конфігурації каналу | Вузькі примітиви config-schema каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби запису конфігурації каналу | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільний пролог каналу | Експорти спільного прологу plugin каналу |
| `plugin-sdk/channel-status` | Допоміжні засоби статусу каналу | Спільні допоміжні засоби snapshot/summary статусу каналу |
| `plugin-sdk/music-generation` | Допоміжні засоби генерації музики | Типи provider-ів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільне ядро генерації музики | Типи генерації музики, допоміжні засоби failover, пошук provider-а та аналіз model-ref |
| `plugin-sdk/video-generation` | Допоміжні засоби генерації відео | Типи provider-ів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільне ядро генерації відео | Типи генерації відео, допоміжні засоби failover, пошук provider-а та аналіз model-ref |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби інтерактивної відповіді | Нормалізація/зведення payload інтерактивної відповіді |
| `plugin-sdk/channel-config-primitives` | Примітиви конфігурації channel-ів | Вузькі примітиви config-schema channel-ів |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби запису конфігурації channel-ів | Допоміжні засоби авторизації запису конфігурації channel-ів |
| `plugin-sdk/channel-plugin-common` | Спільна преамбула channel-ів | Експорти спільної преамбули channel plugin-ів |
| `plugin-sdk/channel-status` | Допоміжні засоби статусу channel-ів | Спільні допоміжні засоби snapshot/summary статусу channel-ів |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби конфігурації allowlist | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Допоміжні засоби доступу до груп | Спільні допоміжні засоби ухвалення рішень щодо доступу до груп |
| `plugin-sdk/direct-dm` | Допоміжні засоби direct-DM | Спільні допоміжні засоби auth/guard для direct-DM |
| `plugin-sdk/extension-shared` | Спільні допоміжні засоби extension | Примітиви допоміжних засобів passive-channel/status та ambient proxy |
| `plugin-sdk/webhook-targets` | Допоміжні засоби цілей Webhook | Реєстр цілей Webhook і допоміжні засоби встановлення маршрутів |
| `plugin-sdk/direct-dm` | Допоміжні засоби direct-DM | Спільні допоміжні засоби auth/guard direct-DM |
| `plugin-sdk/extension-shared` | Спільні допоміжні засоби extension | Примітиви допоміжних засобів passive-channel/status і ambient proxy |
| `plugin-sdk/webhook-targets` | Допоміжні засоби цілей Webhook | Допоміжні засоби реєстру цілей Webhook і встановлення маршрутів |
| `plugin-sdk/webhook-path` | Допоміжні засоби шляхів Webhook | Допоміжні засоби нормалізації шляхів Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби вебмедіа | Допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/web-media` | Спільні допоміжні засоби web media | Допоміжні засоби завантаження віддаленого/локального media |
| `plugin-sdk/zod` | Повторний експорт Zod | Повторно експортований `zod` для споживачів Plugin SDK |
| `plugin-sdk/memory-core` | Вбудовані допоміжні засоби memory-core | Поверхня допоміжних засобів менеджера/config/файлів/CLI для memory |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime engine memory | Фасад runtime індексу/пошуку memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Foundation engine хоста memory | Експорти foundation engine хоста memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Embedding engine хоста memory | Контракти embeddings memory, доступ до реєстру, локальний provider і універсальні batch/remote допоміжні засоби; конкретні remote provider розміщуються у plugin, яким вони належать |
| `plugin-sdk/memory-core-host-engine-qmd` | QMD engine хоста memory | Експорти QMD engine хоста memory |
| `plugin-sdk/memory-core-host-engine-storage` | Storage engine хоста memory | Експорти storage engine хоста memory |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста memory | Мультимодальні допоміжні засоби хоста memory |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста memory | Допоміжні засоби запитів хоста memory |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста memory | Допоміжні засоби секретів хоста memory |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста memory | Допоміжні засоби журналу подій хоста memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста memory | Допоміжні засоби статусу хоста memory |
| `plugin-sdk/memory-core-host-runtime-cli` | CLI runtime хоста memory | Допоміжні засоби CLI runtime хоста memory |
| `plugin-sdk/memory-core-host-runtime-core` | Core runtime хоста memory | Допоміжні засоби core runtime хоста memory |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста memory | Допоміжні засоби файлів/runtime хоста memory |
| `plugin-sdk/memory-host-core` | Псевдонім core runtime хоста memory | Нейтральний до вендора псевдонім для допоміжних засобів core runtime хоста memory |
| `plugin-sdk/memory-host-events` | Псевдонім журналу подій хоста memory | Нейтральний до вендора псевдонім для допоміжних засобів журналу подій хоста memory |
| `plugin-sdk/memory-host-files` | Псевдонім файлів/runtime хоста memory | Нейтральний до вендора псевдонім для допоміжних засобів файлів/runtime хоста memory |
| `plugin-sdk/memory-host-markdown` | Допоміжні засоби керованого markdown | Спільні допоміжні засоби керованого markdown для plugin, суміжних із memory |
| `plugin-sdk/memory-host-search` | Фасад пошуку Active Memory | Лінивий фасад runtime менеджера пошуку active-memory |
| `plugin-sdk/memory-host-status` | Псевдонім статусу хоста memory | Нейтральний до вендора псевдонім для допоміжних засобів статусу хоста memory |
| `plugin-sdk/memory-lancedb` | Вбудовані допоміжні засоби memory-lancedb | Поверхня допоміжних засобів memory-lancedb |
| `plugin-sdk/testing` | Утиліти тестування | Допоміжні засоби та моки для тестування |
| `plugin-sdk/memory-core` | Допоміжні засоби вбудованого memory-core | Поверхня допоміжних засобів менеджера пам’яті/конфігурації/файлів/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime рушія пам’яті | Фасад runtime індексу/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Базовий рушій хоста пам’яті | Експорти базового рушія хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Рушій embedding хоста пам’яті | Контракти embedding пам’яті, доступ до реєстру, локальний provider і узагальнені допоміжні засоби batch/remote; конкретні віддалені provider-и розміщуються у plugin-ах, яким вони належать |
| `plugin-sdk/memory-core-host-engine-qmd` | Рушій QMD хоста пам’яті | Експорти рушія QMD хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Рушій сховища хоста пам’яті | Експорти рушія сховища хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста пам’яті | Мультимодальні допоміжні засоби хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста пам’яті | Допоміжні засоби запитів хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста пам’яті | Допоміжні засоби секретів хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста пам’яті | Допоміжні засоби статусу хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | CLI runtime хоста пам’яті | Допоміжні засоби CLI runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Базовий runtime хоста пам’яті | Допоміжні засоби базового runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті | Допоміжні засоби файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Псевдонім базового runtime хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів базового runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Псевдонім журналу подій хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Псевдонім файлів/runtime хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Допоміжні засоби керованого markdown | Спільні допоміжні засоби керованого markdown для plugin-ів, суміжних із пам’яттю |
| `plugin-sdk/memory-host-search` | Фасад пошуку Active Memory | Лінивий фасад runtime менеджера пошуку active memory |
| `plugin-sdk/memory-host-status` | Псевдонім статусу хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів статусу хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Допоміжні засоби вбудованого memory-lancedb | Поверхня допоміжних засобів memory-lancedb |
| `plugin-sdk/testing` | Утиліти тестування | Допоміжні засоби тестування та mock-и |
</Accordion>
Ця таблиця навмисно є поширеною підмножиною для міграції, а не повною поверхнею SDK. Повний список із понад 200 точок входу міститься в
Ця таблиця навмисно є поширеною підмножиною для міграції, а не повною
поверхнею SDK. Повний список із понад 200 точок входу міститься в
`scripts/lib/plugin-sdk-entrypoints.json`.
Цей список усе ще включає деякі шви допоміжних засобів для вбудованих plugin, такі як
Цей список усе ще включає деякі допоміжні поверхні вбудованих plugin-ів, як-от
`plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`,
`plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Вони й далі експортуються для
підтримки та сумісності вбудованих plugin, але навмисно
`plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Вони й надалі експортуються для
підтримки та сумісності вбудованих plugin-ів, але навмисно
не включені до поширеної таблиці міграції та не є рекомендованою ціллю для
нового коду plugin.
нового коду plugin-ів.
Те саме правило застосовується й до інших сімейств вбудованих допоміжних засобів, таких як:
@ -349,7 +357,7 @@ OpenClaw перейшов від широкого шару зворотної с
- Matrix: `plugin-sdk/matrix*`
- LINE: `plugin-sdk/line*`
- IRC: `plugin-sdk/irc*`
- поверхні вбудованих допоміжних засобів/plugin, такі як `plugin-sdk/googlechat`,
- поверхні вбудованих допоміжних засобів/plugin-ів, як-от `plugin-sdk/googlechat`,
`plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`,
`plugin-sdk/mattermost*`, `plugin-sdk/msteams`,
`plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`,
@ -358,22 +366,22 @@ OpenClaw перейшов від широкого шару зворотної с
`plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`,
`plugin-sdk/thread-ownership` і `plugin-sdk/voice-call`
`plugin-sdk/github-copilot-token` наразі надає вузьку поверхню допоміжних засобів токена:
`DEFAULT_COPILOT_API_BASE_URL`,
`plugin-sdk/github-copilot-token` наразі надає вузьку
поверхню допоміжних засобів токенів `DEFAULT_COPILOT_API_BASE_URL`,
`deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken`.
Використовуйте найвужчий імпорт, який відповідає завданню. Якщо ви не можете знайти експорт,
перевірте джерело в `src/plugin-sdk/` або запитайте в Discord.
перевірте вихідний код у `src/plugin-sdk/` або запитайте в Discord.
## Часова шкала видалення
## Хронологія вилучення
| Коли | Що відбувається |
| Коли | Що відбувається |
| ---------------------- | ----------------------------------------------------------------------- |
| **Зараз** | Застарілі поверхні генерують попередження під час виконання |
| **Наступний мажорний випуск** | Застарілі поверхні буде видалено; plugin, які досі їх використовують, перестануть працювати |
| **Зараз** | Застарілі поверхні виводять попередження під час виконання |
| **Наступний мажорний реліз** | Застарілі поверхні буде вилучено; plugin-и, які все ще їх використовують, не працюватимуть |
Усі core plugin уже мігровано. Зовнішнім plugin слід виконати міграцію
до наступного мажорного випуску.
Усі core plugin-и вже мігровано. Зовнішнім plugin-ам слід виконати
міграцію до наступного мажорного релізу.
## Тимчасове приглушення попереджень
@ -384,13 +392,13 @@ OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
```
Це тимчасовий аварійний обхід, а не постійне рішення.
Це тимчасовий обхідний шлях, а не постійне рішення.
## Пов’язане
- [Початок роботи](/uk/plugins/building-plugins) — створіть свій перший Plugin
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів підшляхів
- [Плагіни каналів](/uk/plugins/sdk-channel-plugins) — створення plugin каналів
- [Плагіни provider](/uk/plugins/sdk-provider-plugins) — створення plugin provider
- [Внутрішня будова Plugin](/uk/plugins/architecture) — глибоке занурення в архітектуру
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення channel plugin-ів
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення provider plugin-ів
- [Внутрішня будова plugin-ів](/uk/plugins/architecture) — детальний розбір архітектури
- [Маніфест Plugin](/uk/plugins/manifest) — довідник схеми маніфесту

View File

@ -1,24 +1,24 @@
---
read_when:
- Потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібна довідка з усіх методів реєстрації в OpenClawPluginApi
- Вам потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібен довідник для всіх методів реєстрації в OpenClawPluginApi
- Ви шукаєте конкретний експорт SDK
sidebarTitle: SDK Overview
summary: Карта імпорту, довідка з API реєстрації та архітектура SDK
summary: Карта імпорту, довідник API реєстрації та архітектура SDK
title: Огляд Plugin SDK
x-i18n:
generated_at: "2026-04-22T20:41:22Z"
generated_at: "2026-04-23T02:58:55Z"
model: gpt-5.4
provider: openai
source_hash: da39299358c341cffe3e7adc6026cc5dca284514421d7dc1b641d9c0d3c98151
source_hash: 947f309c36e0a4d9c20639f5e18bc1b9d9e07af333414741ad36f24017716ae1
source_path: plugins/sdk-overview.md
workflow: 15
---
# Огляд Plugin SDK
Plugin SDK — це типізований контракт між plugin-ами та ядром. Ця сторінка —
довідник про **що імпортувати** і **що можна реєструвати**.
Plugin SDK — це типізований контракт між plugins і core. Ця сторінка є
довідником щодо **що імпортувати** і **що можна реєструвати**.
<Tip>
**Шукаєте практичний посібник?**
@ -36,38 +36,39 @@ 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` залишайте
для ширшої поверхні umbrella та спільних допоміжних засобів, таких як
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий
запуск і запобігає проблемам із циклічними залежностями. Для специфічних для channel
допоміжних засобів входу/збирання надавайте перевагу `openclaw/plugin-sdk/channel-core`; залишайте `openclaw/plugin-sdk/core` для
ширшої узагальнювальної поверхні та спільних допоміжних засобів, таких як
`buildChannelConfigSchema`.
Не додавайте і не покладайтеся на зручні шви з назвами provider-ів, такі як
Не додавайте і не використовуйте зручні seams з назвами providers, такі як
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або
допоміжні шви з брендуванням channel-ів. Вбудовані plugin-и мають компонувати загальні
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а ядро
має або використовувати ці локальні для plugin-ів barrel-файли, або додавати вузький загальний контракт SDK, якщо потреба справді є міжchannel-ною.
допоміжні seams із брендуванням channel. Вбудовані plugins мають компонувати узагальнені
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а core
має або використовувати ці локальні для plugin barrel-файли, або додавати вузький узагальнений SDK
контракт, коли потреба справді є міжканальною.
Згенерована карта експорту все ще містить невеликий набір допоміжних
швів вбудованих plugin-ів, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
seams для вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Ці
підшляхи існують лише для підтримки вбудованих plugin-ів і сумісності; їх
навмисно не включено до поширеної таблиці нижче, і вони не є
рекомендованим шляхом імпорту для нових сторонніх plugin-ів.
підшляхи існують лише для супроводу вбудованих plugins і сумісності; їх
навмисно пропущено в поширеній таблиці нижче, і вони не є рекомендованим
шляхом імпорту для нових сторонніх plugins.
## Довідник підшляхів
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із
200+ підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
Зарезервовані допоміжні підшляхи вбудованих plugin-ів усе ще з’являються в цьому
згенерованому списку. Розглядайте їх як деталі реалізації/поверхні сумісності,
якщо на сторінці документації явно не зазначено один із них як публічний.
Зарезервовані допоміжні підшляхи для вбудованих plugins усе ще з’являються в цьому
згенерованому списку. Розглядайте їх як деталі реалізації/поверхні сумісності, якщо лише сторінка документації
явно не просуває один із них як публічний.
### Вхід plugin-а
### Вхід plugin
| Subpath | Key exports |
| Subpath | Ключові експорти |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
@ -75,245 +76,245 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Підшляхи channel-ів">
| Subpath | Key exports |
<Accordion title="Підшляхи channel">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `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` | Допоміжні засоби для конфігурації/керування multi-account і резервного використання облікового запису за замовчуванням |
| `plugin-sdk/account-core` | Допоміжні засоби multi-account config/action-gate, допоміжні засоби резервного варіанта облікового запису за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису + резервного використання за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби списку облікових записів/дій з обліковими записами |
| `plugin-sdk/account-resolution` | Пошук облікового запису + допоміжні засоби резервного варіанта за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби account-list/account-action |
| `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 custom-command із резервною підтримкою bundled-contract |
| `plugin-sdk/channel-config-schema` | Типи схеми конфігурації channel |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервним варіантом контракту вбудованого plugin |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзу авторизації команд |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації draft stream |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації inbound + побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису й диспетчеризації inbound-відповідей |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження outbound media |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби outbound identity, send delegate і планування payload |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації потоку чернетки |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних даних і побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису й диспетчеризації вхідних відповідей |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності, делегата надсилання та планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації poll |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding і adapter |
| `plugin-sdk/agent-media-payload` | Застарілий білдер payload медіа agent-а |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби binding conversation/thread, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб snapshot конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення group-policy під час runtime |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби snapshot/summary стану channel-а |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви schema конфігурації channel-ів |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації channel-а |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти channel plugin-ів |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби читання/редагування конфігурації allowlist |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок thread і адаптера |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник медіа-payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби прив’язки conversation/thread, pairing і налаштованих прив’язок |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення 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/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби ухвалення рішень щодо group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для direct-DM |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямого DM |
| `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби інтерактивних відповідей. Див. [Message Presentation](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Barrel сумісності для inbound debounce, mention matching, допоміжних засобів mention-policy і envelope helpers |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy без ширшої поверхні inbound runtime |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту та форматування розташування channel-а |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування channel-а для відкинутих inbound і збоїв typing/ack |
| `plugin-sdk/channel-inbound` | Барель сумісності для debounce вхідних даних, зіставлення mention, допоміжних засобів mention-policy та допоміжних засобів envelope |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy без ширшої поверхні runtime вхідних даних |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту та форматування розташування channel |
| `plugin-sdk/channel-logging` | Допоміжні засоби журналювання channel для відкидання вхідних даних і збоїв typing/ack |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями channel-а, а також застарілі native schema helpers, збережені для сумісності plugin-ів |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/channel-contract` | Типи контракту channel-а |
| `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями channel, а також застарілі допоміжні засоби native schema, збережені для сумісності plugin |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контрактів channel |
| `plugin-sdk/channel-feedback` | Підключення feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret target |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей secret |
</Accordion>
<Accordion title="Підшляхи provider-ів">
| Subpath | Key exports |
<Accordion title="Підшляхи provider">
| 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 backend + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API key під час runtime для provider plugin-ів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API key, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний білдер OAuth auth-result |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider plugin-ів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку auth env var для provider-ів |
| `plugin-sdk/provider-setup` | Добірні допоміжні засоби налаштування локального/self-hosted provider |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted provider, сумісного з OpenAI |
| `plugin-sdk/cli-backend` | Значення за замовчуванням backend CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-key у runtime для provider plugins |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю 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-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні білдери replay-policy, допоміжні засоби provider endpoint, і допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники replay-policy, допоміжні засоби endpoint provider і допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/endpoint capability для provider-ів |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту config/selection для web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування web-fetch provider-ів |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби config/credential для web-search для provider-ів, яким не потрібне підключення enable plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту config/credential для web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і setter/getter-и обмежених credential |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime для web-search provider-ів |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схем Gemini + діагностика, а також допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-http` | Узагальнені допоміжні засоби HTTP/можливостей endpoint provider |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби contract config/selection для web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування provider для web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби config/credential для web-search для providers, яким не потрібне підключення enable plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби contract config/credential для web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і засоби встановлення/отримання credential з областю дії |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime provider для 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 wrapper, а також спільні допоміжні засоби wrapper для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби native transport provider-ів, такі як guarded fetch, перетворення transport message і потоки подій writable transport |
| `plugin-sdk/provider-onboard` | Допоміжні засоби patch конфігурації онбордингу |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту provider, такі як guarded fetch, перетворення транспортних повідомлень і потоки подій транспорту з можливістю запису |
| `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
</Accordion>
<Accordion title="Підшляхи auth і безпеки">
| Subpath | Key exports |
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Білдери повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і auth допоміжних дій у межах того самого чату |
| `plugin-sdk/command-status` | Побудовники повідомлень command/help, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і auth для дій у тому самому chat |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери native approval capability/delivery |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення approval Gateway |
| `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження native approval adapter для гарячих entrypoint-ів channel-ів |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби approval handler runtime; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби native approval target + прив’язки облікових записів |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповідей exec/plugin approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки native approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення Gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Легковагові допоміжні засоби завантаження адаптера native approval для гарячих entrypoint channel |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime обробника approval; надавайте перевагу вужчим adapter/gateway seams, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби native approval target + account-binding |
| `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` | Допоміжні засоби нормалізації 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/secret-ref-runtime` | Вузькі допоміжні засоби типізації `coerceSecretRef` і SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, external-content і збирання secret |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби host allowlist і політики SSRF для приватних мереж |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватної мережі |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої поверхні infra 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/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, fetch із захистом SSRF і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору введення secret |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/цілі Webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру body/timeout запиту |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
| Subpath | Key exports |
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/install plugin-ів |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, logger, timeout, retry і backoff |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку channel runtime-context |
| `plugin-sdk/channel-runtime-context` | Узагальнені допоміжні засоби реєстрації та пошуку runtime-context channel |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive для plugin-ів |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline для Webhook/внутрішніх hook |
| `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 process |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування і версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і patch статусу channel-а |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису config і пошуку config plugin-ів |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назв/описів Telegram command і перевірки дублікатів/конфліктів, навіть коли поверхня bundled Telegram contract недоступна |
| `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування та версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway і виправлення статусу channel |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису config і пошуку config plugin |
| `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 |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, Heartbeat, planner відповіді |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники можливостей approval, допоміжні засоби auth/profile, допоміжні засоби native routing/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, Heartbeat, планувальник відповіді |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповіді |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби short-window reply-history, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби reply-history для короткого вікна, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `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` | Спільні допоміжні засоби summary статусу channel-а/облікового запису, значення runtime-state за замовчуванням і допоміжні засоби метаданих проблем |
| `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/session-store-runtime` | Допоміжні засоби шляху сховища сесій + updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів каталогів state/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби прив’язки route/session-key/account, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу channel/account, значення runtime-state за замовчуванням і допоміжні засоби метаданих issue |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби визначення цілі |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/string |
| `plugin-sdk/request-url` | Витягування рядкових URL із вхідних даних типу fetch/request |
| `plugin-sdk/run-command` | Timed runner команд із нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені засоби читання параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload з об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягування канонічних полів цілі надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON |
| `plugin-sdk/file-lock` | Допоміжні засоби повторно вхідного file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби disk-backed кешу дедуплікації |
| `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` | Вузькі примітиви schema конфігурації runtime agent-а |
| `plugin-sdk/boolean-param` | Гнучкий зчитувач boolean параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та pairing token |
| `plugin-sdk/acp-binding-resolve-runtime` | Визначення прив’язки ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime агента |
| `plugin-sdk/boolean-param` | Гнучкий засіб читання boolean param |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів dangerous-name |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токена pairing |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді provider-а/команди `/models` |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize native command |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness agent-ів: типи harness, допоміжні засоби steer/abort для active-run, допоміжні засоби мосту OpenClaw tool і утиліти результатів attempt |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді provider для команди `/models` |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби виведення списку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize native команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих agent harnesses: типи harness, допоміжні засоби steer/abort для active-run, допоміжні засоби мосту інструментів OpenClaw і утиліти результатів attempt |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `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/fetch-runtime` | Допоміжні засоби wrapped fetch, proxy і pinned lookup |
| `plugin-sdk/runtime-fetch` | Dispatcher-aware runtime fetch без імпортів proxy/guarded-fetch |
| `plugin-sdk/response-limit-runtime` | Зчитувач обмеженого response body без широкої поверхні media runtime |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без routing налаштованих прив’язок або pairing store |
| `plugin-sdk/response-limit-runtime` | Засіб читання обмеженого body відповіді без широкої поверхні media runtime |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без маршрутизації налаштованих binding або сховищ pairing |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби читання session-store без широких імпортів запису/обслуговування config |
| `plugin-sdk/context-visibility-runtime` | Визначення видимості контексту і фільтрація додаткового контексту без широких імпортів config/security |
| `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 agent-а |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація каталогів із підтримкою config |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і хоста SCP |
| `plugin-sdk/retry-runtime` | Допоміжні засоби config retry і runner retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогу на основі config |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Subpath | Key exports |
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store медіа, а також білдери media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибору candidate і повідомлень про відсутню model |
| `plugin-sdk/media-understanding` | Типи provider-ів Media understanding, а також provider-facing експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як видалення видимого для асистента тексту, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування чутливих даних, directive-tag helpers і safe-text utilities |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover генерації медіа, вибір candidate і повідомлення про відсутню model |
| `plugin-sdk/media-understanding` | Типи provider для розуміння медіа, а також експорти допоміжних засобів image/audio для provider |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як видалення assistant-visible-text, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування, допоміжні засоби directive-tag і утиліти safe-text |
| `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту |
| `plugin-sdk/speech` | Типи Speech provider-ів, а також provider-facing допоміжні засоби directive, registry і validation |
| `plugin-sdk/speech-core` | Спільні типи Speech provider-ів, а також допоміжні засоби registry, directive і normalization |
| `plugin-sdk/realtime-transcription` | Типи provider-ів Realtime transcription і допоміжні засоби registry |
| `plugin-sdk/realtime-voice` | Типи provider-ів Realtime voice і допоміжні засоби registry |
| `plugin-sdk/image-generation` | Типи provider-ів генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, а також допоміжні засоби failover, auth і registry |
| `plugin-sdk/speech` | Типи provider для speech, а також допоміжні засоби directive, registry і validation для provider |
| `plugin-sdk/speech-core` | Спільні типи provider для speech, допоміжні засоби registry, directive і normalizaton |
| `plugin-sdk/realtime-transcription` | Типи provider для realtime transcription, допоміжні засоби registry і спільний допоміжний засіб сесії WebSocket |
| `plugin-sdk/realtime-voice` | Типи provider для realtime voice і допоміжні засоби registry |
| `plugin-sdk/image-generation` | Типи provider для генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні засоби failover, auth і registry |
| `plugin-sdk/music-generation` | Типи provider/request/result для генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, а також допоміжні засоби failover, пошуку provider-а і розбору model-ref |
| `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/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошук provider і розбір model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру цілей Webhook і встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для користувачів plugin SDK |
| `plugin-sdk/zod` | Повторно експортований `zod` для споживачів plugin SDK |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
<Accordion title="Підшляхи Memory">
| Subpath | Key exports |
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI helpers |
| `plugin-sdk/memory-core-engine-runtime` | Runtime facade індексу/пошуку Memory |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексу/пошуку Memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста Memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до registry, локальний provider і загальні допоміжні засоби batch/remote |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до registry, локальний provider і узагальнені пакетні/віддалені допоміжні засоби |
| `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` | Допоміжні засоби secret хоста Memory |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста Memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби status хоста Memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста Memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста Memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби runtime CLI хоста Memory |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста Memory |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби file/runtime хоста Memory |
| `plugin-sdk/memory-host-core` | Vendor-neutral псевдонім для допоміжних засобів core runtime хоста Memory |
| `plugin-sdk/memory-host-events` | Vendor-neutral псевдонім для допоміжних засобів журналу подій хоста Memory |
| `plugin-sdk/memory-host-files` | Vendor-neutral псевдонім для допоміжних засобів file/runtime хоста Memory |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого Markdown для plugin-ів, суміжних із memory |
| `plugin-sdk/memory-host-search` | Active Memory runtime facade для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Vendor-neutral псевдонім для допоміжних засобів status хоста Memory |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb |
| `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 для доступу до manager пошуку |
| `plugin-sdk/memory-host-status` | Вендорно-нейтральний псевдонім для допоміжних засобів статусу хоста Memory |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів вбудованого memory-lancedb |
</Accordion>
<Accordion title="Зарезервовані підшляхи bundled-helper">
| Family | Current subpaths | Intended use |
<Accordion title="Зарезервовані підшляхи допоміжних засобів для вбудованих plugins">
| 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` залишається 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 вбудованого Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня допоміжних засобів/runtime вбудованого LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня допоміжних засобів вбудованого 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` | Поверхні сумісності/допоміжних засобів вбудованих 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` | Поверхні допоміжних засобів вбудованих функцій/plugins; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
@ -324,55 +325,55 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
### Реєстрація можливостей
| Method | What it registers |
| ------------------------------------------------ | ------------------------------------- |
| `api.registerProvider(...)` | Виведення тексту (LLM) |
| `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець agent-а |
| `api.registerCliBackend(...)` | Локальний CLI backend для inference |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова транскрипція в реальному часі |
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні голосові сесії в реальному часі |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Provider веб-отримання / скрейпінгу |
| `api.registerWebSearchProvider(...)` | Вебпошук |
| Method | Що реєструє |
| ------------------------------------------------ | ------------------------------------ |
| `api.registerProvider(...)` | Виведення тексту (LLM) |
| `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець агента |
| `api.registerCliBackend(...)` | Локальний backend виведення CLI |
| `api.registerChannel(...)` | Канал повідомлень |
| `api.registerSpeechProvider(...)` | Text-to-speech / синтез STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова транскрипція в realtime |
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні сеанси голосу в realtime |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Provider web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
### Інструменти й команди
### Інструменти та команди
| Method | What it registers |
| ------------------------------- | --------------------------------------------- |
| `api.registerTool(tool, opts?)` | Інструмент agent-а (обов’язковий або `{ optional: true }`) |
| `api.registerCommand(def)` | Користувацька команда (оминає LLM) |
| Method | Що реєструє |
| ------------------------------- | ------------------------------------------- |
| `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) |
| `api.registerCommand(def)` | Користувацька команда (обходить LLM) |
### Інфраструктура
| Method | What it registers |
| ----------------------------------------------- | --------------------------------------- |
| `api.registerHook(events, handler, opts?)` | Подієвий hook |
| `api.registerHttpRoute(params)` | HTTP endpoint Gateway |
| `api.registerGatewayMethod(name, handler)` | RPC-метод Gateway |
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
| `api.registerService(service)` | Фонова служба |
| `api.registerInteractiveHandler(registration)` | Інтерактивний handler |
| `api.registerEmbeddedExtensionFactory(factory)` | Фабрика extension embedded-runner для Pi |
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із memory |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус memory search/read |
| Method | Що реєструє |
| ----------------------------------------------- | -------------------------------------- |
| `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)` | Фабрика extension вбудованого runner для Pi |
| `api.registerMemoryPromptSupplement(builder)` | Адитивна секція prompt, суміжна з memory |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний corpus пошуку/читання memory |
Зарезервовані простори імен адміністрування ядра (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди лишаються `operator.admin`, навіть якщо plugin намагається призначити
вужчу область видимості методу Gateway. Для
методів, що належать plugin-у, віддавайте перевагу префіксам, специфічним для plugin-а.
Зарезервовані простори назв admin у core (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди залишаються `operator.admin`, навіть якщо plugin намагається призначити
вужчу область методу Gateway. Для методів, що належать plugin,
надавайте перевагу префіксам, специфічним для plugin.
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin-у потрібен нативний для Pi
таймінг подій під час embedded-запусків OpenClaw, наприклад асинхронні
перезаписи `tool_result`, які мають відбутися до того, як буде надіслано
фінальне повідомлення про результат tool. Наразі це шов bundled-plugin: лише bundled plugin-и можуть реєструвати його, і
Використовуйте `api.registerEmbeddedExtensionFactory(...)`, коли plugin потребує нативного для Pi
таймінгу подій під час вбудованих запусків OpenClaw, наприклад для асинхронних переписувань `tool_result`,
які мають відбутися до того, як буде надіслано фінальне повідомлення з результатом інструмента.
Сьогодні це surface для вбудованих plugins: лише вбудовані plugins можуть реєструвати її, і
вони мають оголошувати `contracts.embeddedExtensionFactories: ["pi"]` у
`openclaw.plugin.json`. Для всього, що не потребує цього нижчорівневого шва,
використовуйте звичайні hook-и plugin-ів OpenClaw.
`openclaw.plugin.json`. Залишайте звичайні хук-и OpenClaw plugin для всього,
що не потребує цього низькорівневого seam.
### Метадані реєстрації CLI
@ -380,11 +381,11 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
- `commands`: явні корені команд, якими володіє registrar
- `descriptors`: дескриптори команд на етапі розбору, що використовуються для кореневої довідки CLI,
маршрутизації та лінивої реєстрації CLI plugin-ів
маршрутизації та відкладеної реєстрації CLI plugin
Якщо ви хочете, щоб команда plugin-а залишалася ліниво завантажуваною у звичайному кореневому шляху CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується цим
registrar.
Якщо ви хочете, щоб команда plugin залишалася відкладено завантажуваною у звичайному кореневому шляху CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що його відкриває
цей registrar.
```typescript
api.registerCli(
@ -396,7 +397,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
description: "Керуйте обліковими записами Matrix, верифікацією, пристроями та станом профілю",
description: "Керування обліковими записами Matrix, верифікацією, пристроями та станом профілю",
hasSubcommands: true,
},
],
@ -404,138 +405,138 @@ api.registerCli(
);
```
Використовуйте `commands` окремо лише тоді, коли вам не потрібна лінива реєстрація кореневого CLI.
Цей eager шлях сумісності залишається підтримуваним, але він не встановлює
заповнювачі з підтримкою descriptor для лінивого завантаження на етапі розбору.
Використовуйте лише `commands`, коли вам не потрібна відкладена реєстрація кореневого CLI.
Цей eager-шлях сумісності залишається підтримуваним, але він не встановлює
placeholder-и на основі descriptor для відкладеного завантаження на етапі розбору.
### Реєстрація CLI backend
### Реєстрація backend CLI
`api.registerCliBackend(...)` дає plugin-у змогу володіти конфігурацією за замовчуванням для локального
AI CLI backend, такого як `codex-cli`.
`api.registerCliBackend(...)` дає змогу plugin володіти конфігурацією за замовчуванням для локального
backend AI CLI, такого як `codex-cli`.
- Backend `id` стає префіксом provider-а в посиланнях на model, як-от `codex-cli/gpt-5`.
- `config` backend-а використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Користувацька config усе одно має пріоритет. OpenClaw зливає `agents.defaults.cliBackends.<id>` поверх
значення plugin-а за замовчуванням перед запуском CLI.
- Використовуйте `normalizeConfig`, коли backend потребує сумісних перезаписів після злиття
- `id` backend стає префіксом provider у посиланнях на model, як-от `codex-cli/gpt-5`.
- `config` backend використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Конфігурація користувача все одно має пріоритет. OpenClaw зливає `agents.defaults.cliBackends.<id>` поверх
значення plugin за замовчуванням перед запуском CLI.
- Використовуйте `normalizeConfig`, коли backend потребує переписувань для сумісності після злиття
(наприклад, нормалізації старих форм прапорців).
### Ексклюзивні слоти
| Method | What it registers |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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)` | Adapter runtime для memory |
| Method | Що реєструє |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Рушій контексту (одночасно активний лише один). Колбек `assemble()` отримує `availableTools` і `citationsMode`, щоб рушій міг адаптувати доповнення до prompt. |
| `api.registerMemoryCapability(capability)` | Уніфіковану можливість memory |
| `api.registerMemoryPromptSection(builder)` | Побудовник секції prompt для memory |
| `api.registerMemoryFlushPlan(resolver)` | Резолвер плану flush для memory |
| `api.registerMemoryRuntime(runtime)` | Адаптер runtime для memory |
### Adapters embedding для memory
### Адаптери embedding для memory
| Method | What it registers |
| ---------------------------------------------- | ---------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter embedding для memory для активного plugin-а |
| Method | Що реєструє |
| ---------------------------------------------- | ------------------------------------------ |
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embedding для memory для активного plugin |
- `registerMemoryCapability`рекомендований API ексклюзивного plugin-а memory.
- `registerMemoryCapability` також може експонувати `publicArtifacts.listArtifacts(...)`,
щоб companion plugin могли споживати експортовані артефакти memory через
- `registerMemoryCapability`це пріоритетний API ексклюзивного memory-plugin.
- `registerMemoryCapability` також може відкривати `publicArtifacts.listArtifacts(...)`,
щоб companion plugins могли споживати експортовані артефакти memory через
`openclaw/plugin-sdk/memory-host-core` замість звернення до приватного
layout конкретного plugin-а memory.
layout конкретного memory plugin.
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` і
`registerMemoryRuntime` — це сумісні зі спадщиною API ексклюзивних plugin-ів memory.
- `registerMemoryEmbeddingProvider` дає активному plugin-у memory змогу зареєструвати один
або більше id adapter-ів embedding (наприклад, `openai`, `gemini` або користувацький
id, визначений plugin-ом).
- Користувацька config, як-от `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, визначається відносно зареєстрованих id цих
adapter-ів.
`registerMemoryRuntime` — це сумісні зі спадщиною API ексклюзивного memory-plugin.
- `registerMemoryEmbeddingProvider` дає змогу активному memory plugin реєструвати один
або кілька id адаптерів embedding (наприклад, `openai`, `gemini` або користувацький id,
визначений plugin).
- Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, визначається відносно цих зареєстрованих
id адаптерів.
### Події та життєвий цикл
| Method | What it does |
| -------------------------------------------- | ----------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований hook життєвого циклу |
| Method | Що робить |
| -------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу |
| `api.onConversationBindingResolved(handler)` | Колбек прив’язки conversation |
### Семантика рішень hook-ів
### Семантика рішень hook
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handler-и з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` вважається відсутністю рішення (так само, як і пропуск `block`), а не перевизначенням.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який handler встановлює його, handler-и з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` вважається відсутністю рішення (так само, як і пропуск `block`), а не перевизначенням.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який handler заявляє про dispatch, handler-и з нижчим пріоритетом і типовий шлях model dispatch пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який handler встановлює його, handler-и з нижчим пріоритетом пропускаються.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який обробник бере dispatch на себе, обробники з нижчим пріоритетом і стандартний шлях dispatch моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` вважається відсутністю рішення (так само, як і пропуск `cancel`), а не перевизначенням.
- `message_received`: використовуйте типізоване поле `threadId`, коли вам потрібна inbound маршрутизація thread/topic. Зберігайте `metadata` для специфічних для channel додаткових даних.
- `message_received`: використовуйте типізоване поле `threadId`, коли потрібна маршрутизація вхідних thread/topic. Залишайте `metadata` для специфічних для channel додаткових даних.
- `message_sending`: використовуйте типізовані поля маршрутизації `replyToId` / `threadId`, перш ніж переходити до специфічного для channel `metadata`.
- `gateway_start`: використовуйте `ctx.config`, `ctx.workspaceDir` і `ctx.getCron?.()` для стану запуску, що належить Gateway, замість покладання на внутрішні hook-и `gateway:startup`.
### Поля об’єкта API
| Field | Type | Description |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| `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` | Поточний snapshot config (активний runtime snapshot у пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Специфічна для plugin-а config з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) |
| 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 config з `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-а |
| `api.resolvePath(input)` | `(string) => string` | Визначення шляху відносно кореня plugin |
## Угода щодо внутрішніх модулів
У межах вашого plugin-а використовуйте локальні barrel-файли для внутрішніх імпортів:
Усередині вашого plugin використовуйте локальні barrel-файли для внутрішніх імпортів:
```
my-plugin/
api.ts # Публічні експорти для зовнішніх споживачів
runtime-api.ts # Лише внутрішні експорти runtime
index.ts # Точка входу plugin-а
index.ts # Точка входу plugin
setup-entry.ts # Полегшений entry лише для налаштування (необов’язково)
```
<Warning>
Ніколи не імпортуйте власний plugin через `openclaw/plugin-sdk/<your-plugin>`
із production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
у production code. Спрямовуйте внутрішні імпорти через `./api.ts` або
`./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт.
</Warning>
Публічні поверхні bundled plugin-ів, завантажувані через facade (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли), тепер віддають перевагу
активному snapshot config runtime, якщо OpenClaw уже запущено. Якщо snapshot runtime
Публічні поверхні вбудованих plugins, завантажувані через facade (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли), тепер надають перевагу
активному знімку config runtime, якщо OpenClaw уже запущено. Якщо знімок runtime
ще не існує, вони повертаються до визначеного config-файлу на диску.
Provider plugin-и також можуть експортувати вузький локальний barrel контракту plugin-а, коли
допоміжний засіб навмисно є специфічним для provider-а і ще не належить до загального підшляху SDK.
Поточний bundled-приклад: provider Anthropic зберігає свої допоміжні засоби Claude
stream у власному публічному шві `api.ts` / `contract-api.ts` замість
просування логіки Anthropic beta-header і `service_tier` у загальний
Plugins provider також можуть відкривати вузький локальний barrel контракту plugin, коли
допоміжний засіб навмисно є специфічним для provider і ще не належить до узагальненого підшляху SDK.
Поточний вбудований приклад: provider Anthropic зберігає свої допоміжні засоби потоку Claude
у власному публічному seam `api.ts` / `contract-api.ts` замість
просування логіки бета-заголовка Anthropic і `service_tier` в узагальнений
контракт `plugin-sdk/*`.
Інші поточні bundled-приклади:
Інші поточні вбудовані приклади:
- `@openclaw/openai-provider`: `api.ts` експортує білдери provider-ів,
допоміжні засоби моделей за замовчуванням і білдери realtime provider-ів
- `@openclaw/openrouter-provider`: `api.ts` експортує білдер provider-а, а також
допоміжні засоби onboarding/config
- `@openclaw/openai-provider`: `api.ts` експортує побудовники provider,
допоміжні засоби моделей за замовчуванням і побудовники realtime provider
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник provider, а також
допоміжні засоби онбордингу/config
<Warning>
Production-код extension також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
Якщо допоміжний засіб справді є спільним, просуньте його до нейтрального підшляху SDK,
такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої
surface, орієнтованої на можливості, замість зв’язування двох plugin-ів між собою.
Production code extension також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
Якщо допоміжний засіб справді є спільним, перенесіть його в нейтральний підшлях SDK,
такий як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншу
surface, орієнтовану на можливості, замість зв’язування двох plugins між собою.
</Warning>
## Пов’язані матеріали
- [Entry Points](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry`
- [Runtime Helpers](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime`
- [Runtime Helpers](/uk/plugins/sdk-runtime) — повний довідник простору назв `api.runtime`
- [Setup and Config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми config
- [Testing](/uk/plugins/sdk-testing) — утиліти тестування та правила lint
- [SDK Migration](/uk/plugins/sdk-migration) — міграція із застарілих surface
- [Plugin Internals](/uk/plugins/architecture) — поглиблена архітектура і модель можливостей
- [SDK Migration](/uk/plugins/sdk-migration) — міграція із застарілих surfaces
- [Plugin Internals](/uk/plugins/architecture) — поглиблена архітектура та модель можливостей

View File

@ -1,37 +1,37 @@
---
read_when:
- Ви створюєте новий plugin постачальника моделей
- Ви створюєте новий Plugin постачальника моделей
- Ви хочете додати до OpenClaw OpenAI-сумісний проксі або власну LLM
- Вам потрібно зрозуміти автентифікацію постачальника, каталоги та хуки середовища виконання
- Вам потрібно зрозуміти автентифікацію постачальника, каталоги та runtime-хуки
sidebarTitle: Provider Plugins
summary: Покроковий посібник зі створення plugin постачальника моделей для OpenClaw
title: Створення plugin постачальників моделей
summary: Покроковий посібник зі створення Plugin постачальника моделей для OpenClaw
title: Створення Plugin постачальників моделей
x-i18n:
generated_at: "2026-04-22T03:53:22Z"
generated_at: "2026-04-23T02:58:43Z"
model: gpt-5.4
provider: openai
source_hash: 99376d2abfc968429ed19f03451beb0f3597d57c703f2ce60c6c51220656e850
source_hash: b46f72d7f636caf4b072ce84db2af5b6e6f4c8d4b75f6ea102c948c3865353c7
source_path: plugins/sdk-provider-plugins.md
workflow: 15
---
# Створення plugin постачальників моделей
# Створення Plugin постачальників моделей
Цей посібник пояснює, як створити plugin постачальника, який додає постачальника
моделей (LLM) до OpenClaw. Наприкінці у вас буде постачальник із каталогом
моделей, автентифікацією через API key і динамічним визначенням моделей.
Цей посібник покроково пояснює створення Plugin постачальника, який додає постачальника моделей
(LLM) до OpenClaw. Наприкінці у вас буде постачальник із каталогом моделей,
автентифікацією через API-ключ і динамічним визначенням моделей.
<Info>
Якщо ви ще не створювали жодного plugin для OpenClaw, спочатку прочитайте
Якщо ви раніше не створювали жодного Plugin для OpenClaw, спочатку прочитайте
[Початок роботи](/uk/plugins/building-plugins) про базову структуру пакета
та налаштування маніфесту.
</Info>
<Tip>
Plugins постачальників додають моделі до стандартного циклу інференсу OpenClaw. Якщо модель
має працювати через власний native daemon агента, який керує потоками,
Compaction або подіями інструментів, поєднайте постачальника з [agent harness](/uk/plugins/sdk-agent-harness),
замість того щоб виносити деталі протоколу daemon у core.
Plugin постачальників додають моделі до стандартного циклу інференсу OpenClaw. Якщо модель
має працювати через нативний агент-демон, який керує потоками, Compaction або подіями
інструментів, поєднайте постачальника з [agent harness](/uk/plugins/sdk-agent-harness),
а не виносьте деталі протоколу демона в core.
</Tip>
## Покроковий розбір
@ -97,12 +97,12 @@ x-i18n:
</CodeGroup>
Маніфест оголошує `providerAuthEnvVars`, щоб OpenClaw міг виявляти
облікові дані без завантаження runtime вашого plugin. Додайте `providerAuthAliases`,
якщо варіант постачальника має повторно використовувати auth іншого id постачальника. `modelSupport`
є необов’язковим і дає змогу OpenClaw автоматично завантажувати ваш plugin постачальника зі скорочених
id моделей, таких як `acme-large`, ще до появи runtime hooks. Якщо ви публікуєте
облікові дані без завантаження runtime вашого Plugin. Додавайте `providerAuthAliases`,
коли варіант постачальника має повторно використовувати автентифікацію іншого ідентифікатора постачальника. `modelSupport`
є необов’язковим і дозволяє OpenClaw автоматично завантажувати ваш Plugin постачальника зі скорочених
ідентифікаторів моделей, як-от `acme-large`, ще до появи runtime-хуків. Якщо ви публікуєте
постачальника в ClawHub, поля `openclaw.compat` і `openclaw.build`
у `package.json` є обов’язковими.
є обов’язковими в `package.json`.
</Step>
@ -182,8 +182,8 @@ x-i18n:
`openclaw onboard --acme-ai-api-key <key>` і вибрати
`acme-ai/acme-large` як свою модель.
Якщо upstream-постачальник використовує інші control tokens, ніж OpenClaw, додайте
невелике двонапрямне текстове перетворення замість заміни шляху потоку:
Якщо апстрім-постачальник використовує інші керівні токени, ніж OpenClaw, додайте
невелике двонапрямне текстове перетворення замість заміни шляху стримінгу:
```typescript
api.registerTextTransforms({
@ -200,13 +200,13 @@ x-i18n:
});
```
`input` переписує фінальний системний prompt і текстовий вміст повідомлень перед
передаванням. `output` переписує текстові deltas асистента й фінальний текст до того,
як OpenClaw розбере власні control markers або доставку каналу.
`input` переписує фінальний системний промпт і текстовий вміст повідомлення перед
передаванням. `output` переписує текстові дельти відповіді асистента та фінальний текст до того,
як OpenClaw розбере власні керівні маркери або доставку через канал.
Для вбудованих постачальників, які лише реєструють одного текстового постачальника з auth через API key
плюс один runtime на основі каталогу, краще використовувати вужчий
helper `defineSingleProviderPluginEntry(...)`:
Для вбудованих постачальників, які реєструють лише одного текстового постачальника з автентифікацією
через API-ключ і одним runtime на основі каталогу, надавайте перевагу вужчому
допоміжному методу `defineSingleProviderPluginEntry(...)`:
```typescript
import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
@ -246,36 +246,38 @@ x-i18n:
});
```
`buildProvider` — це шлях живого каталогу, який використовується, коли OpenClaw може визначити реальний
auth постачальника. Він може виконувати специфічне для постачальника виявлення. Використовуйте
`buildStaticProvider` лише для офлайн-рядків, які безпечно показувати до налаштування auth;
він не повинен вимагати облікових даних або виконувати мережеві запити.
`buildProvider` — це шлях живого каталогу, який використовується, коли OpenClaw може визначити реальну
автентифікацію постачальника. Він може виконувати специфічне для постачальника виявлення.
Використовуйте `buildStaticProvider` лише для офлайнових рядків, які безпечно показувати до налаштування
автентифікації; він не повинен вимагати облікові дані або виконувати мережеві запити.
Відображення `models list --all` в OpenClaw наразі виконує статичні каталоги
лише для вбудованих plugins постачальників, із порожньою конфігурацією, порожнім env і без
шляхів agent/workspace.
лише для вбудованих Plugin постачальників, із порожньою конфігурацією, порожнім env та без
шляхів агента/робочого простору.
Якщо вашому auth-процесу також потрібно патчити `models.providers.*`, aliases і
модель постачальника за замовчуванням для агента під час onboarding, використовуйте preset helpers з
`openclaw/plugin-sdk/provider-onboard`. Найвужчі helper-и:
Якщо вашому процесу автентифікації також потрібно змінювати `models.providers.*`, псевдоніми
та модель агента за замовчуванням під час onboard, використовуйте допоміжні пресети з
`openclaw/plugin-sdk/provider-onboard`. Найвужчі допоміжні методи:
`createDefaultModelPresetAppliers(...)`,
`createDefaultModelsPresetAppliers(...)` і
`createModelCatalogPresetAppliers(...)`.
Коли native endpoint постачальника підтримує streamed usage blocks на звичайному
транспорті `openai-completions`, краще використовувати спільні helper-и каталогу з
`openclaw/plugin-sdk/provider-catalog-shared`, а не жорстко прописувати перевірки provider-id. Функції
Коли нативна кінцева точка постачальника підтримує потокові блоки використання в
звичайному транспорті `openai-completions`, надавайте перевагу спільним допоміжним методам каталогу з
`openclaw/plugin-sdk/provider-catalog-shared` замість жорсткого кодування перевірок ідентифікатора постачальника.
`supportsNativeStreamingUsageCompat(...)` і
`applyProviderNativeStreamingUsageCompat(...)` визначають підтримку за мапою можливостей endpoint, тож native endpoints у стилі Moonshot/DashScope усе одно вмикаються, навіть якщо plugin використовує власний provider id.
`applyProviderNativeStreamingUsageCompat(...)` визначають підтримку за картою можливостей кінцевої точки,
тож нативні кінцеві точки в стилі Moonshot/DashScope також можуть підключатися, навіть якщо Plugin
використовує власний ідентифікатор постачальника.
</Step>
<Step title="Додайте динамічне визначення моделей">
Якщо ваш постачальник приймає довільні id моделей (наприклад, proxy або router),
<Step title="Додайте динамічне визначення моделі">
Якщо ваш постачальник приймає довільні ідентифікатори моделей (наприклад, проксі або маршрутизатор),
додайте `resolveDynamicModel`:
```typescript
api.registerProvider({
// ... id, label, auth, catalog з прикладу вище
// ... id, label, auth, catalog from above
resolveDynamicModel: (ctx) => ({
id: ctx.modelId,
@ -293,16 +295,16 @@ x-i18n:
```
Якщо для визначення потрібен мережевий виклик, використовуйте `prepareDynamicModel` для асинхронного
прогріву — після його завершення `resolveDynamicModel` виконується знову.
прогріву — після його завершення `resolveDynamicModel` запускається знову.
</Step>
<Step title="Додайте runtime hooks (за потреби)">
Більшості постачальників потрібні лише `catalog` + `resolveDynamicModel`. Додавайте hooks
поступово, у міру потреб вашого постачальника.
<Step title="Додайте runtime-хуки (за потреби)">
Більшості постачальників потрібні лише `catalog` + `resolveDynamicModel`. Додавайте хуки
поступово, у міру того як вони потрібні вашому постачальнику.
Спільні helper builders тепер охоплюють найпоширеніші сімейства replay/tool-compat,
тож plugin-ам зазвичай не потрібно вручну під’єднувати кожен hook окремо:
Спільні конструктори допоміжних методів тепер покривають найпоширеніші сімейства replay/tool-compat,
тому Plugin зазвичай не потрібно вручну підключати кожен хук окремо:
```typescript
import { buildProviderReplayFamilyHooks } from "openclaw/plugin-sdk/provider-model-shared";
@ -322,17 +324,17 @@ x-i18n:
});
```
Доступні сьогодні сімейства replay:
Доступні на сьогодні сімейства replay:
| Сімейство | Що воно під’єднує |
| Сімейство | Що воно підключає |
| --- | --- |
| `openai-compatible` | Спільну політику replay у стилі OpenAI для OpenAI-сумісних транспортів, включно з очищенням `tool-call-id`, виправленням порядку assistant-first і загальною валідацією Gemini-turn там, де це потрібно транспорту |
| `anthropic-by-model` | Політику replay з урахуванням Claude, що вибирається за `modelId`, щоб транспорти Anthropic-message отримували очищення thinking-block, специфічне для Claude, лише коли визначена модель справді є id Claude |
| `google-gemini` | Native політику replay для Gemini плюс очищення bootstrap replay і режим tagged reasoning-output |
| `passthrough-gemini` | Очищення thought-signature Gemini для моделей Gemini, що працюють через OpenAI-сумісні proxy-транспорти; не вмикає native валідацію replay Gemini або переписування bootstrap |
| `hybrid-anthropic-openai` | Гібридну політику для постачальників, які поєднують поверхні моделей Anthropic-message та OpenAI-compatible в одному plugin; необов’язкове відкидання thinking-block лише для Claude залишається обмеженим стороною Anthropic |
| `openai-compatible` | Спільна політика replay у стилі OpenAI для OpenAI-сумісних транспортів, включно з санітизацією ідентифікаторів викликів інструментів, виправленням порядку assistant-first і загальною валідацією Gemini-turn там, де це потрібно транспорту |
| `anthropic-by-model` | Claude-орієнтована політика replay, що вибирається за `modelId`, тож транспорти повідомлень Anthropic отримують специфічне очищення thinking-block Claude лише тоді, коли визначена модель справді є ідентифікатором Claude |
| `google-gemini` | Нативна політика replay Gemini плюс санітизація bootstrap replay і режим тегованого виводу reasoning |
| `passthrough-gemini` | Санітизація thought-signature Gemini для моделей Gemini, що працюють через OpenAI-сумісні проксі-транспорти; не вмикає нативну валідацію replay Gemini або переписування bootstrap |
| `hybrid-anthropic-openai` | Гібридна політика для постачальників, які поєднують поверхні моделей Anthropic-message та OpenAI-compatible в одному Plugin; необов’язкове відкидання thinking-block лише для Claude залишається обмеженим стороною Anthropic |
Реальні приклади вбудованих рішень:
Реальні приклади з вбудованих Plugin:
- `google` і `google-gemini-cli`: `google-gemini`
- `openrouter`, `kilocode`, `opencode` і `opencode-go`: `passthrough-gemini`
@ -340,19 +342,19 @@ x-i18n:
- `minimax`: `hybrid-anthropic-openai`
- `moonshot`, `ollama`, `xai` і `zai`: `openai-compatible`
Доступні сьогодні сімейства потоків:
Доступні на сьогодні сімейства stream:
| Сімейство | Що воно під’єднує |
| Сімейство | Що воно підключає |
| --- | --- |
| `google-thinking` | Нормалізацію thinking payload Gemini на спільному шляху потоку |
| `kilocode-thinking` | Обгортку Kilo reasoning на спільному шляху proxy-потоку, де `kilo/auto` і непідтримувані proxy reasoning id пропускають ін’єктований thinking |
| `moonshot-thinking` | Мапінг binary native-thinking payload Moonshot із config + рівня `/think` |
| `minimax-fast-mode` | Переписування моделі MiniMax fast-mode на спільному шляху потоку |
| `openai-responses-defaults` | Спільні native обгортки OpenAI/Codex Responses: заголовки attribution, `/fast`/`serviceTier`, текстова verbosity, native Codex web search, формування payload для reasoning-compat і керування контекстом Responses |
| `openrouter-thinking` | Обгортку reasoning OpenRouter для proxy-маршрутів, із централізованою обробкою пропусків для unsupported-model/`auto` |
| `tool-stream-default-on` | Обгортку `tool_stream`, увімкнену за замовчуванням, для постачальників на кшталт Z.AI, які хочуть потокову передачу інструментів, якщо її явно не вимкнено |
| `google-thinking` | Нормалізація thinking payload Gemini на спільному шляху stream |
| `kilocode-thinking` | Обгортка reasoning Kilo на спільному шляху proxy stream, де `kilo/auto` та непідтримувані ідентифікатори reasoning proxy пропускають ін’єкцію thinking |
| `moonshot-thinking` | Відображення двійкового payload native-thinking Moonshot із config + рівня `/think` |
| `minimax-fast-mode` | Переписування моделі fast-mode MiniMax на спільному шляху stream |
| `openai-responses-defaults` | Спільні нативні обгортки OpenAI/Codex Responses: заголовки attribution, `/fast`/`serviceTier`, деталізація text, нативний вебпошук Codex, формування payload для reasoning-compat і керування контекстом Responses |
| `openrouter-thinking` | Обгортка reasoning OpenRouter для маршрутів proxy з централізованою обробкою пропусків для непідтримуваних моделей/`auto` |
| `tool-stream-default-on` | Обгортка `tool_stream`, увімкнена за замовчуванням, для постачальників на кшталт Z.AI, яким потрібен stream інструментів, якщо його явно не вимкнено |
Реальні приклади вбудованих рішень:
Реальні приклади з вбудованих Plugin:
- `google` і `google-gemini-cli`: `google-thinking`
- `kilocode`: `kilocode-thinking`
@ -363,79 +365,80 @@ x-i18n:
- `zai`: `tool-stream-default-on`
`openclaw/plugin-sdk/provider-model-shared` також експортує enum
сімейств replay, а також спільні helper-и, з яких ці сімейства побудовані. До поширених публічних
сімейств replay, а також спільні допоміжні методи, з яких ці сімейства побудовані. До поширених публічних
експортів належать:
- `ProviderReplayFamily`
- `buildProviderReplayFamilyHooks(...)`
- спільні builders replay, такі як `buildOpenAICompatibleReplayPolicy(...)`,
- спільні конструктори replay, як-от `buildOpenAICompatibleReplayPolicy(...)`,
`buildAnthropicReplayPolicyForModel(...)`,
`buildGoogleGeminiReplayPolicy(...)` і
`buildHybridAnthropicOrOpenAIReplayPolicy(...)`
- helper-и replay для Gemini, такі як `sanitizeGoogleGeminiReplayHistory(...)`
- допоміжні методи replay Gemini, як-от `sanitizeGoogleGeminiReplayHistory(...)`
і `resolveTaggedReasoningOutputMode()`
- helper-и endpoint/model, такі як `resolveProviderEndpoint(...)`,
- допоміжні методи endpoint/model, як-от `resolveProviderEndpoint(...)`,
`normalizeProviderId(...)`, `normalizeGooglePreviewModelId(...)` і
`normalizeNativeXaiModelId(...)`
`openclaw/plugin-sdk/provider-stream` надає як builder сімейств,
так і публічні helper-и-обгортки, які ці сімейства повторно використовують. До поширених публічних експортів
`openclaw/plugin-sdk/provider-stream` надає як конструктор сімейств, так і
публічні допоміжні методи обгорток, які ці сімейства повторно використовують. До поширених публічних експортів
належать:
- `ProviderStreamFamily`
- `buildProviderStreamFamilyHooks(...)`
- `composeProviderStreamWrappers(...)`
- спільні обгортки OpenAI/Codex, такі як
- спільні обгортки OpenAI/Codex, як-от
`createOpenAIAttributionHeadersWrapper(...)`,
`createOpenAIFastModeWrapper(...)`,
`createOpenAIServiceTierWrapper(...)`,
`createOpenAIResponsesContextManagementWrapper(...)` і
`createCodexNativeWebSearchWrapper(...)`
- спільні обгортки proxy/provider, такі як `createOpenRouterWrapper(...)`,
- спільні обгортки proxy/provider, як-от `createOpenRouterWrapper(...)`,
`createToolStreamWrapper(...)` і `createMinimaxFastModeWrapper(...)`
Деякі stream helper-и навмисно залишаються локальними для постачальника. Поточний вбудований
Деякі допоміжні методи stream навмисно залишаються локальними для постачальника. Поточний вбудований
приклад: `@openclaw/anthropic-provider` експортує
`wrapAnthropicProviderStream`, `resolveAnthropicBetas`,
`resolveAnthropicFastMode`, `resolveAnthropicServiceTier` і
низькорівневі builders обгорток Anthropic зі свого публічного seam
`api.ts` / `contract-api.ts`. Ці helper-и залишаються специфічними для Anthropic, оскільки
вони також кодують обробку beta для Claude OAuth і gating `context1m`.
низькорівневі конструктори обгорток Anthropic через свій публічний seam `api.ts` /
`contract-api.ts`. Ці допоміжні методи залишаються специфічними для Anthropic, оскільки
вони також кодують обробку Claude OAuth beta і gating `context1m`.
Інші вбудовані постачальники також тримають transport-специфічні обгортки локально, коли
поведінку не можна чисто розділити між сімействами. Поточний приклад: вбудований plugin xAI
зберігає native формування xAI Responses у власному
`wrapStreamFn`, включно з переписуванням alias `/fast`, `tool_stream` за замовчуванням,
очищенням непідтримуваних strict-tool і видаленням payload reasoning, специфічного для xAI.
Інші вбудовані постачальники також тримають локальними обгортки, специфічні для транспорту, коли
поведінку неможливо чисто поділити між сімействами. Поточний приклад: вбудований Plugin xAI
зберігає нативне формування xAI Responses у власному
`wrapStreamFn`, включно з переписуванням псевдонімів `/fast`, типовим `tool_stream`,
очищенням непідтримуваних strict-tool і
видаленням payload reasoning, специфічного для xAI.
`openclaw/plugin-sdk/provider-tools` наразі надає одне спільне
сімейство tool-schema плюс спільні helper-и schema/compat:
сімейство схеми інструментів плюс спільні допоміжні методи schema/compat:
- `ProviderToolCompatFamily` документує спільний інвентар сімейств на сьогодні.
- `buildProviderToolCompatFamilyHooks("gemini")` під’єднує очищення Gemini schema
+ діагностику для постачальників, яким потрібні безпечні для Gemini tool schemas.
- `ProviderToolCompatFamily` документує поточний перелік спільних сімейств.
- `buildProviderToolCompatFamilyHooks("gemini")` підключає очищення схеми Gemini
+ діагностику для постачальників, яким потрібні безпечні для Gemini схеми інструментів.
- `normalizeGeminiToolSchemas(...)` і `inspectGeminiToolSchemas(...)`
— це базові публічні helper-и schema для Gemini.
— це базові публічні допоміжні методи схем Gemini.
- `resolveXaiModelCompatPatch()` повертає вбудований compat patch xAI:
`toolSchemaProfile: "xai"`, непідтримувані ключові слова schema, native підтримку
`web_search` і декодування аргументів виклику інструментів із HTML-entity.
`toolSchemaProfile: "xai"`, непідтримувані ключові слова схеми, нативна
підтримка `web_search` і декодування аргументів виклику інструментів із HTML-entity.
- `applyXaiModelCompat(model)` застосовує той самий compat patch xAI до
визначеної моделі до того, як вона потрапить до runner.
Реальний вбудований приклад: plugin xAI використовує `normalizeResolvedModel` плюс
`contributeResolvedModelCompat`, щоб ці метадані compat залишалися власністю
постачальника, а не жорстко прописували правила xAI в core.
Реальний приклад із вбудованих Plugin: Plugin xAI використовує `normalizeResolvedModel` плюс
`contributeResolvedModelCompat`, щоб ці метадані compat належали
постачальнику, а не були жорстко закодовані в core.
Той самий шаблон package-root також лежить в основі інших вбудованих постачальників:
- `@openclaw/openai-provider`: `api.ts` експортує builders постачальника,
helper-и моделей за замовчуванням і builders realtime-постачальника
- `@openclaw/openrouter-provider`: `api.ts` експортує builder постачальника
плюс helper-и onboarding/config
- `@openclaw/openai-provider`: `api.ts` експортує конструктори постачальників,
допоміжні методи моделі за замовчуванням і конструктори realtime постачальників
- `@openclaw/openrouter-provider`: `api.ts` експортує конструктор постачальника
плюс допоміжні методи onboard/config
<Tabs>
<Tab title="Обмін токенами">
Для постачальників, яким потрібен обмін токенами перед кожним викликом inference:
<Tab title="Обмін токенів">
Для постачальників, яким потрібен обмін токенів перед кожним викликом інференсу:
```typescript
prepareRuntimeAuth: async (ctx) => {
@ -448,8 +451,8 @@ x-i18n:
},
```
</Tab>
<Tab title="Користувацькі заголовки">
Для постачальників, яким потрібні користувацькі заголовки запиту або зміни тіла запиту:
<Tab title="Власні заголовки">
Для постачальників, яким потрібні власні заголовки запитів або зміни тіла запиту:
```typescript
// wrapStreamFn returns a StreamFn derived from ctx.streamFn
@ -466,9 +469,9 @@ x-i18n:
},
```
</Tab>
<Tab title="Ідентичність native transport">
Для постачальників, яким потрібні native заголовки запиту/сесії або метадані в
generic HTTP або WebSocket transport:
<Tab title="Ідентичність нативного транспорту">
Для постачальників, яким потрібні нативні заголовки запиту/сесії або метадані на
узагальнених транспортних рівнях HTTP або WebSocket:
```typescript
resolveTransportTurnState: (ctx) => ({
@ -503,85 +506,85 @@ x-i18n:
</Tab>
</Tabs>
<Accordion title="Усі доступні hooks постачальника">
OpenClaw викликає hooks у такому порядку. Більшість постачальників використовують лише 23:
<Accordion title="Усі доступні хуки постачальника">
OpenClaw викликає хуки в такому порядку. Більшості постачальників потрібні лише 23:
| # | Hook | Коли використовувати |
| # | Хук | Коли використовувати |
| --- | --- | --- |
| 1 | `catalog` | Каталог моделей або значення `baseUrl` за замовчуванням |
| 2 | `applyConfigDefaults` | Глобальні значення за замовчуванням, що належать постачальнику, під час materialization config |
| 3 | `normalizeModelId` | Очищення alias застарілих/preview model-id перед пошуком |
| 4 | `normalizeTransport` | Очищення `api` / `baseUrl` сімейства постачальника перед generic збиранням моделі |
| 2 | `applyConfigDefaults` | Глобальні значення за замовчуванням, що належать постачальнику, під час матеріалізації config |
| 3 | `normalizeModelId` | Очищення псевдонімів `model-id` для legacy/preview перед пошуком |
| 4 | `normalizeTransport` | Очищення `api` / `baseUrl` для сімейства постачальника перед загальним збиранням моделі |
| 5 | `normalizeConfig` | Нормалізація config `models.providers.<id>` |
| 6 | `applyNativeStreamingUsageCompat` | Переписування native streaming-usage compat для постачальників config |
| 7 | `resolveConfigApiKey` | Визначення auth маркера env, що належить постачальнику |
| 8 | `resolveSyntheticAuth` | Синтетичний auth для local/self-hosted або на основі config |
| 9 | `shouldDeferSyntheticProfileAuth` | Опускання синтетичних placeholder-ів збереженого профілю нижче auth env/config |
| 10 | `resolveDynamicModel` | Прийом довільних upstream id моделей |
| 7 | `resolveConfigApiKey` | Визначення автентифікації через env-marker, що належить постачальнику |
| 8 | `resolveSyntheticAuth` | Синтетична автентифікація для local/self-hosted або на основі config |
| 9 | `shouldDeferSyntheticProfileAuth` | Опускає синтетичні заповнювачі збереженого профілю нижче за автентифікацію env/config |
| 10 | `resolveDynamicModel` | Приймати довільні ідентифікатори апстрім-моделей |
| 11 | `prepareDynamicModel` | Асинхронне отримання метаданих перед визначенням |
| 12 | `normalizeResolvedModel` | Переписування transport перед runner |
| 12 | `normalizeResolvedModel` | Переписування транспорту перед runner |
Нотатки щодо runtime fallback:
- `normalizeConfig` спочатку перевіряє відповідного постачальника, потім інші
plugins постачальників із підтримкою hook, доки один із них справді не змінить config.
Якщо жоден provider hook не перепише підтримуваний запис config сімейства Google,
усе одно застосовується вбудований нормалізатор Google config.
- `resolveConfigApiKey` використовує provider hook, якщо він наданий. Вбудований
шлях `amazon-bedrock` також має вбудований resolver маркера AWS env на цьому етапі,
хоча runtime auth Bedrock усе ще використовує стандартний
- `normalizeConfig` спочатку перевіряє відповідний постачальник, а потім інші
Plugin постачальників, що підтримують хуки, доки один із них справді не змінить config.
Якщо жоден хук постачальника не перепише підтримуваний запис config сімейства Google,
усе одно буде застосовано вбудований нормалізатор config Google.
- `resolveConfigApiKey` використовує хук постачальника, якщо він доступний. Вбудований
шлях `amazon-bedrock` також має вбудований resolver AWS env-marker саме тут,
хоча автентифікація runtime Bedrock і далі використовує стандартний
ланцюжок AWS SDK.
| 13 | `contributeResolvedModelCompat` | Прапори compat для моделей вендора за іншим сумісним transport |
| 14 | `capabilities` | Застарілий статичний набір можливостей; лише для сумісності |
| 15 | `normalizeToolSchemas` | Очищення tool-schema, що належить постачальнику, перед реєстрацією |
| 16 | `inspectToolSchemas` | Діагностика tool-schema, що належить постачальнику |
| 17 | `resolveReasoningOutputMode` | Контракт tagged vs native reasoning-output |
| 13 | `contributeResolvedModelCompat` | Прапорці compat для моделей вендора за іншим сумісним транспортом |
| 14 | `capabilities` | Статичний набір можливостей для legacy; лише сумісність |
| 15 | `normalizeToolSchemas` | Очищення схеми інструментів, що належить постачальнику, перед реєстрацією |
| 16 | `inspectToolSchemas` | Діагностика схеми інструментів, що належить постачальнику |
| 17 | `resolveReasoningOutputMode` | Контракт тегованого чи нативного виводу reasoning |
| 18 | `prepareExtraParams` | Параметри запиту за замовчуванням |
| 19 | `createStreamFn` | Повністю користувацький transport `StreamFn` |
| 20 | `wrapStreamFn` | Користувацькі обгортки заголовків/тіла на звичайному шляху потоку |
| 21 | `resolveTransportTurnState` | Native заголовки/метадані для кожного turn |
| 22 | `resolveWebSocketSessionPolicy` | Native заголовки сесії WS / cool-down |
| 23 | `formatApiKey` | Користувацька форма runtime token |
| 24 | `refreshOAuth` | Користувацьке оновлення OAuth |
| 25 | `buildAuthDoctorHint` | Поради з відновлення auth |
| 26 | `matchesContextOverflowError` | Визначення overflow, що належить постачальнику |
| 19 | `createStreamFn` | Повністю власний транспорт StreamFn |
| 20 | `wrapStreamFn` | Власні обгортки заголовків/тіла на звичайному шляху stream |
| 21 | `resolveTransportTurnState` | Нативні заголовки/метадані для кожного turn |
| 22 | `resolveWebSocketSessionPolicy` | Нативні заголовки сесії WS / cool-down |
| 23 | `formatApiKey` | Власна форма токена runtime |
| 24 | `refreshOAuth` | Власне оновлення OAuth |
| 25 | `buildAuthDoctorHint` | Підказка для відновлення автентифікації |
| 26 | `matchesContextOverflowError` | Виявлення переповнення контексту, що належить постачальнику |
| 27 | `classifyFailoverReason` | Класифікація rate-limit/overload, що належить постачальнику |
| 28 | `isCacheTtlEligible` | Gating TTL кешу prompt |
| 29 | `buildMissingAuthMessage` | Користувацька підказка про відсутній auth |
| 30 | `suppressBuiltInModel` | Приховування застарілих upstream-рядків |
| 31 | `augmentModelCatalog` | Синтетичні рядки forward-compat |
| 28 | `isCacheTtlEligible` | Керування TTL кешу промптів |
| 29 | `buildMissingAuthMessage` | Власна підказка про відсутню автентифікацію |
| 30 | `suppressBuiltInModel` | Приховати застарілі апстрім-рядки |
| 31 | `augmentModelCatalog` | Синтетичні рядки для прямої сумісності вперед |
| 32 | `resolveThinkingProfile` | Набір опцій `/think`, специфічний для моделі |
| 33 | `isBinaryThinking` | Сумісність binary thinking увімкнено/вимкнено |
| 34 | `supportsXHighThinking` | Сумісність підтримки reasoning `xhigh` |
| 35 | `resolveDefaultThinkingLevel` | Сумісність політики `/think` за замовчуванням |
| 36 | `isModernModelRef` | Відповідність live/smoke моделі |
| 37 | `prepareRuntimeAuth` | Обмін токенами перед inference |
| 38 | `resolveUsageAuth` | Користувацький розбір облікових даних usage |
| 39 | `fetchUsageSnapshot` | Користувацький endpoint usage |
| 33 | `isBinaryThinking` | Сумісність із двійковим вмиканням/вимиканням thinking |
| 34 | `supportsXHighThinking` | Сумісність із підтримкою reasoning `xhigh` |
| 35 | `resolveDefaultThinkingLevel` | Сумісність із політикою `/think` за замовчуванням |
| 36 | `isModernModelRef` | Відповідність live/smoke моделей |
| 37 | `prepareRuntimeAuth` | Обмін токенів перед інференсом |
| 38 | `resolveUsageAuth` | Власний розбір облікових даних використання |
| 39 | `fetchUsageSnapshot` | Власна кінцева точка використання |
| 40 | `createEmbeddingProvider` | Адаптер embedding, що належить постачальнику, для пам’яті/пошуку |
| 41 | `buildReplayPolicy` | Користувацька політика replay/Compaction транскрипту |
| 42 | `sanitizeReplayHistory` | Переписування replay, специфічні для постачальника, після загального очищення |
| 41 | `buildReplayPolicy` | Власна політика replay/Compaction транскрипту |
| 42 | `sanitizeReplayHistory` | Переписування replay, специфічне для постачальника, після загального очищення |
| 43 | `validateReplayTurns` | Сувора валідація turn replay перед вбудованим runner |
| 44 | `onModelSelected` | Callback після вибору моделі (наприклад, telemetry) |
| 44 | `onModelSelected` | Callback після вибору моделі (наприклад, телеметрія) |
Примітка щодо налаштування prompt:
Примітка щодо налаштування промптів:
- `resolveSystemPromptContribution` дає постачальнику змогу ін’єктувати
cache-aware настанови для системного prompt для сімейства моделей. Віддавайте йому перевагу над
- `resolveSystemPromptContribution` дозволяє постачальнику додавати до
системного промпту підказки для сімейства моделей з урахуванням кешу. Надавайте йому перевагу над
`before_prompt_build`, коли поведінка належить одному сімейству постачальника/моделі
і має зберігати стабільний/динамічний поділ кешу.
Докладні описи та приклади з реального світу дивіться в
[Інтернали: Runtime hooks постачальника](/uk/plugins/architecture#provider-runtime-hooks).
Докладні описи та реальні приклади див. у
[Internals: Provider Runtime Hooks](/uk/plugins/architecture#provider-runtime-hooks).
</Accordion>
</Step>
<Step title="Додайте додаткові можливості (необов’язково)">
<a id="step-5-add-extra-capabilities"></a>
Plugin постачальника може реєструвати мовлення, транскрипцію в реальному часі, голос у реальному
часі, розуміння медіа, генерацію зображень, генерацію відео, web fetch
і web search поряд із текстовим inference:
Plugin постачальника може реєструвати speech, транскрипцію в realtime, голос у realtime,
розуміння медіа, генерацію зображень, генерацію відео, web fetch
і web search разом із текстовим інференсом:
```typescript
register(api) {
@ -603,12 +606,34 @@ x-i18n:
id: "acme-ai",
label: "Acme Realtime Transcription",
isConfigured: () => true,
createSession: (req) => ({
connect: async () => {},
sendAudio: () => {},
close: () => {},
isConnected: () => true,
}),
createSession: (req) => {
const apiKey = String(req.providerConfig.apiKey ?? "");
return createRealtimeTranscriptionWebSocketSession({
providerId: "acme-ai",
callbacks: req,
url: "wss://api.example.com/v1/realtime-transcription",
headers: { Authorization: `Bearer ${apiKey}` },
onMessage: (event, transport) => {
if (event.type === "session.created") {
transport.sendJson({ type: "session.update" });
transport.markReady();
return;
}
if (event.type === "transcript.final") {
req.onTranscript?.(event.text);
}
},
sendAudio: (audio, transport) => {
transport.sendJson({
type: "audio.append",
audio: audio.toString("base64"),
});
},
onClose: (transport) => {
transport.sendJson({ type: "audio.end" });
},
});
},
});
api.registerRealtimeVoiceProvider({
@ -664,7 +689,7 @@ x-i18n:
api.registerWebFetchProvider({
id: "acme-ai-fetch",
label: "Acme Fetch",
hint: "Fetch pages through Acme's rendering backend.",
hint: "Отримуйте сторінки через backend рендерингу Acme.",
envVars: ["ACME_FETCH_API_KEY"],
placeholder: "acme-...",
signupUrl: "https://acme.example.com/fetch",
@ -675,7 +700,7 @@ x-i18n:
acme.apiKey = value;
},
createTool: () => ({
description: "Fetch a page through Acme Fetch.",
description: "Отримати сторінку через Acme Fetch.",
parameters: {},
execute: async (args) => ({ content: [] }),
}),
@ -690,18 +715,18 @@ x-i18n:
```
OpenClaw класифікує це як plugin **hybrid-capability**. Це
рекомендований шаблон для корпоративних plugins (один plugin на вендора). Див.
[Інтернали: Володіння можливостями](/uk/plugins/architecture#capability-ownership-model).
рекомендований шаблон для корпоративних Plugin (один Plugin на вендора). Див.
[Internals: Capability Ownership](/uk/plugins/architecture#capability-ownership-model).
Для генерації відео віддавайте перевагу показаній вище формі можливостей із урахуванням режимів:
`generate`, `imageToVideo` і `videoToVideo`. Плоских агрегованих полів на кшталт
`maxInputImages`, `maxInputVideos` і `maxDurationSeconds`
недостатньо, щоб чисто оголосити підтримку режимів трансформації або вимкнених режимів.
Для генерації відео надавайте перевагу наведеній вище структурі можливостей із урахуванням режиму:
`generate`, `imageToVideo` і `videoToVideo`. Плоскі агреговані поля, як-от
`maxInputImages`, `maxInputVideos` і `maxDurationSeconds`,
недостатні, щоб коректно оголосити підтримку режимів перетворення або вимкнених режимів.
Постачальники генерації музики мають дотримуватися того самого шаблону:
`generate` для генерації лише за prompt і `edit` для генерації
на основі reference-image. Плоских агрегованих полів на кшталт `maxInputImages`,
`supportsLyrics` і `supportsFormat` недостатньо, щоб оголосити підтримку `edit`;
`generate` для генерації лише за промптом і `edit` для генерації
на основі еталонного зображення. Плоскі агреговані поля, як-от `maxInputImages`,
`supportsLyrics` і `supportsFormat`, недостатні для оголошення підтримки редагування;
очікуваним контрактом є явні блоки `generate` / `edit`.
</Step>
@ -743,14 +768,14 @@ x-i18n:
## Публікація в ClawHub
Plugins постачальників публікуються так само, як і будь-який інший зовнішній кодовий plugin:
Plugin постачальників публікуються так само, як і будь-який інший зовнішній code Plugin:
```bash
clawhub package publish your-org/your-plugin --dry-run
clawhub package publish your-org/your-plugin
```
Не використовуйте тут застарілий alias публікації лише для Skills; пакети plugin-ів мають використовувати
Не використовуйте тут застарілий псевдонім публікації лише для Skills; пакети Plugin мають використовувати
`clawhub package publish`.
## Структура файлів
@ -758,28 +783,28 @@ clawhub package publish your-org/your-plugin
```
<bundled-plugin-root>/acme-ai/
├── package.json # Метадані openclaw.providers
├── openclaw.plugin.json # Маніфест із метаданими auth постачальника
├── openclaw.plugin.json # Маніфест із метаданими автентифікації постачальника
├── index.ts # definePluginEntry + registerProvider
└── src/
├── provider.test.ts # Тести
└── usage.ts # Endpoint usage (необов’язково)
└── usage.ts # Кінцева точка використання (необов’язково)
```
## Довідник порядку каталогу
## Довідка щодо порядку каталогу
`catalog.order` керує тим, коли ваш каталог зливається відносно вбудованих
`catalog.order` визначає, коли ваш каталог об’єднується відносно вбудованих
постачальників:
| Порядок | Коли | Випадок використання |
| --------- | ------------- | ----------------------------------------------- |
| `simple` | Перший прохід | Прості постачальники з API key |
| `profile` | Після simple | Постачальники, обмежені профілями auth |
| `simple` | Перший прохід | Прості постачальники з API-ключем |
| `profile` | Після simple | Постачальники, прив’язані до профілів автентифікації |
| `paired` | Після profile | Синтез кількох пов’язаних записів |
| `late` | Останній прохід | Перевизначення наявних постачальників (перемагає при колізії) |
| `late` | Останній прохід | Перевизначення наявних постачальників (перемагає при конфлікті) |
## Наступні кроки
- [Plugins каналів](/uk/plugins/sdk-channel-plugins) — якщо ваш plugin також надає канал
- [SDK Runtime](/uk/plugins/sdk-runtime) — helper-и `api.runtime` (TTS, search, subagent)
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів subpath
- [Інтернали plugin-ів](/uk/plugins/architecture#provider-runtime-hooks) — деталі hooks і приклади вбудованих рішень
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — якщо ваш Plugin також надає канал
- [SDK Runtime](/uk/plugins/sdk-runtime) — допоміжні методи `api.runtime` (TTS, search, subagent)
- [SDK Overview](/uk/plugins/sdk-overview) — повний довідник щодо імпортів subpath
- [Plugin Internals](/uk/plugins/architecture#provider-runtime-hooks) — подробиці про хуки та приклади з вбудованих Plugin

View File

@ -1,46 +1,52 @@
---
read_when:
- Ви хочете запустити OpenClaw із локальним сервером SGLang
- Ви хочете OpenAI-сумісні ендпоїнти `/v1` із власними моделями
- Ви хочете запустити OpenClaw з локальним сервером SGLang
- Ви хочете використовувати сумісні з OpenAI ендпоінти `/v1` із власними моделями
summary: Запустіть OpenClaw із SGLang (самостійно розміщений сервер, сумісний з OpenAI)
title: SGLang
x-i18n:
generated_at: "2026-04-12T10:22:35Z"
generated_at: "2026-04-23T02:58:44Z"
model: gpt-5.4
provider: openai
source_hash: e0a2e50a499c3d25dcdc3af425fb023c6e3f19ed88f533ecf0eb8a2cb7ec8b0d
source_hash: 96f243c6028d9de104c96c8e921e5bec1a685db06b80465617f33fe29d5c472d
source_path: providers/sglang.md
workflow: 15
---
# SGLang
SGLang може обслуговувати моделі з відкритим кодом через **OpenAI-сумісний** HTTP API.
SGLang може обслуговувати open-source моделі через **сумісний з OpenAI** HTTP API.
OpenClaw може підключатися до SGLang за допомогою API `openai-completions`.
OpenClaw також може **автоматично виявляти** доступні моделі із SGLang, якщо ви
увімкнете це за допомогою `SGLANG_API_KEY` (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації)
і не визначите явний запис `models.providers.sglang`.
OpenClaw також може **автоматично виявляти** доступні моделі з SGLang, коли ви
явно вмикаєте це через `SGLANG_API_KEY` (підійде будь-яке значення, якщо ваш
сервер не вимагає автентифікації) і не визначаєте явний запис
`models.providers.sglang`.
OpenClaw розглядає `sglang` як локального сумісного з OpenAI провайдера, який
підтримує потоковий облік використання, тому лічильники токенів стану/контексту
можуть оновлюватися на основі відповідей `stream_options.include_usage`.
## Початок роботи
<Steps>
<Step title="Запустіть SGLang">
Запустіть SGLang із сервером, сумісним з OpenAI. Ваш базовий URL має надавати
ендпоїнти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). SGLang зазвичай працює на:
Запустіть SGLang із сервером, сумісним з OpenAI. Ваш базовий URL має
надавати ендпоінти `/v1` (наприклад `/v1/models`,
`/v1/chat/completions`). SGLang зазвичай працює на:
- `http://127.0.0.1:30000/v1`
</Step>
<Step title="Установіть API-ключ">
Підійде будь-яке значення, якщо на вашому сервері не налаштовано автентифікацію:
<Step title="Задайте API-ключ">
Якщо на вашому сервері не налаштовано автентифікацію, підійде будь-яке значення:
```bash
export SGLANG_API_KEY="sglang-local"
```
</Step>
<Step title="Запустіть онбординг або встановіть модель безпосередньо">
<Step title="Запустіть онбординг або задайте модель напряму">
```bash
openclaw onboard
```
@ -62,25 +68,25 @@ OpenClaw також може **автоматично виявляти** дос
## Виявлення моделей (неявний провайдер)
Коли `SGLANG_API_KEY` встановлено (або існує профіль автентифікації) і ви **не**
визначаєте `models.providers.sglang`, OpenClaw виконає запит до:
Коли `SGLANG_API_KEY` задано (або існує профіль автентифікації) і ви **не**
визначаєте `models.providers.sglang`, OpenClaw виконає запит:
- `GET http://127.0.0.1:30000/v1/models`
і перетворить повернуті ідентифікатори на записи моделей.
і перетворить повернуті ID на записи моделей.
<Note>
Якщо ви явно задаєте `models.providers.sglang`, автоматичне виявлення пропускається, і
ви повинні визначити моделі вручну.
Якщо ви явно задаєте `models.providers.sglang`, автовиявлення пропускається, і
вам потрібно визначити моделі вручну.
</Note>
## Явна конфігурація (ручне задання моделей)
Використовуйте явну конфігурацію, якщо:
Використовуйте явну конфігурацію, коли:
- SGLang працює на іншому хості/порту.
- Ви хочете зафіксувати значення `contextWindow`/`maxTokens`.
- Ваш сервер вимагає справжній API-ключ (або ви хочете керувати заголовками).
- Ваш сервер вимагає справжній API-ключ (або ви хочете контролювати заголовки).
```json5
{
@ -110,20 +116,20 @@ OpenClaw також може **автоматично виявляти** дос
## Розширена конфігурація
<AccordionGroup>
<Accordion title="Поведінка в стилі проксі">
SGLang розглядається як OpenAI-сумісний бекенд `/v1` у стилі проксі, а не як
нативний ендпоїнт OpenAI.
<Accordion title="Поведінка у стилі проксі">
SGLang розглядається як сумісний з OpenAI бекенд `/v1` у стилі проксі, а не
як нативний ендпоінт OpenAI.
| Поведінка | SGLang |
|----------|--------|
| Формування запиту лише для OpenAI | Не застосовується |
| `service_tier`, Responses `store`, підказки кешу промптів | Не надсилаються |
| Формування payload для сумісності reasoning | Не застосовується |
| Приховані заголовки атрибуції (`originator`, `version`, `User-Agent`) | Не додаються для користувацьких базових URL SGLang |
| Формування запитів лише для OpenAI | Не застосовується |
| `service_tier`, `store` у Responses, підказки для prompt-cache | Не надсилаються |
| Формування payload для сумісності з reasoning | Не застосовується |
| Приховані заголовки атрибуції (`originator`, `version`, `User-Agent`) | Не додаються в користувацькі базові URL SGLang |
</Accordion>
<Accordion title="Усунення несправностей">
<Accordion title="Усунення проблем">
**Сервер недоступний**
Переконайтеся, що сервер запущено і він відповідає:
@ -134,13 +140,13 @@ OpenClaw також може **автоматично виявляти** дос
**Помилки автентифікації**
Якщо запити завершуються помилками автентифікації, установіть справжній `SGLANG_API_KEY`, який відповідає
конфігурації вашого сервера, або явно налаштуйте провайдера в
`models.providers.sglang`.
Якщо запити завершуються помилками автентифікації, задайте справжній
`SGLANG_API_KEY`, який відповідає конфігурації вашого сервера, або явно
налаштуйте провайдера в `models.providers.sglang`.
<Tip>
Якщо ви запускаєте SGLang без автентифікації, будь-якого непорожнього значення для
`SGLANG_API_KEY` достатньо, щоб увімкнути виявлення моделей.
Якщо ви запускаєте SGLang без автентифікації, будь-якого непорожнього
значення `SGLANG_API_KEY` достатньо, щоб явно ввімкнути виявлення моделей.
</Tip>
</Accordion>
@ -150,7 +156,7 @@ OpenClaw також може **автоматично виявляти** дос
<CardGroup cols={2}>
<Card title="Вибір моделі" href="/uk/concepts/model-providers" icon="layers">
Вибір провайдерів, посилань на моделі та поведінки резервного перемикання.
Вибір провайдерів, посилань на моделі та поведінки failover.
</Card>
<Card title="Довідник із конфігурації" href="/uk/gateway/configuration-reference" icon="gear">
Повна схема конфігурації, включно із записами провайдерів.

View File

@ -1,14 +1,14 @@
---
read_when:
- Ви хочете запустити OpenClaw із локальним сервером vLLM
- Ви хочете OpenAI-сумісні ендпойнти `/v1` із власними моделями
summary: Запустіть OpenClaw із vLLM (сумісний із OpenAI локальний сервер)
- Ви хочете запустити OpenClaw через локальний сервер vLLM
- Ви хочете OpenAI-сумісні ендпоінти `/v1` із власними моделями
summary: Запустіть OpenClaw з vLLM (локальним сервером, сумісним з OpenAI)
title: vLLM
x-i18n:
generated_at: "2026-04-12T10:22:35Z"
generated_at: "2026-04-23T02:58:44Z"
model: gpt-5.4
provider: openai
source_hash: a43be9ae879158fcd69d50fb3a47616fd560e3c6fe4ecb3a109bdda6a63a6a80
source_hash: c6c4ceeb59cc10079630e45263485747eadfc66a66267d27579f466d0c0a91a1
source_path: providers/vllm.md
workflow: 15
---
@ -17,20 +17,24 @@ x-i18n:
vLLM може обслуговувати open-source (і деякі кастомні) моделі через **OpenAI-сумісний** HTTP API. OpenClaw підключається до vLLM за допомогою API `openai-completions`.
OpenClaw також може **автоматично виявляти** доступні моделі з vLLM, коли ви явно вмикаєте це за допомогою `VLLM_API_KEY` (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації) і не визначаєте явний запис `models.providers.vllm`.
OpenClaw також може **автоматично виявляти** доступні моделі з vLLM, якщо ви ввімкнете це через `VLLM_API_KEY` (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації) і не визначите явний запис `models.providers.vllm`.
| Властивість | Значення |
OpenClaw розглядає `vllm` як локального OpenAI-сумісного провайдера, який підтримує
потоковий облік використання, тож лічильники токенів статусу/контексту можуть оновлюватися з
відповідей `stream_options.include_usage`.
| Властивість | Значення |
| ---------------- | ---------------------------------------- |
| ID провайдера | `vllm` |
| API | `openai-completions` (OpenAI-сумісний) |
| Автентифікація | змінна середовища `VLLM_API_KEY` |
| Базовий URL за замовчуванням | `http://127.0.0.1:8000/v1` |
| Базовий URL за замовчуванням | `http://127.0.0.1:8000/v1` |
## Початок роботи
<Steps>
<Step title="Запустіть vLLM з OpenAI-сумісним сервером">
Ваш базовий URL має надавати ендпойнти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює на:
<Step title="Запустіть vLLM із OpenAI-сумісним сервером">
Ваш базовий URL має надавати ендпоінти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює на:
```
http://127.0.0.1:8000/v1
@ -46,7 +50,7 @@ OpenClaw також може **автоматично виявляти** дос
</Step>
<Step title="Виберіть модель">
Замініть на один із ID моделей вашого vLLM:
Замініть на один із ID ваших моделей vLLM:
```json5
{
@ -59,7 +63,7 @@ OpenClaw також може **автоматично виявляти** дос
```
</Step>
<Step title="Перевірте, що модель доступна">
<Step title="Переконайтеся, що модель доступна">
```bash
openclaw models list --provider vllm
```
@ -68,21 +72,21 @@ OpenClaw також може **автоматично виявляти** дос
## Виявлення моделей (неявний провайдер)
Коли `VLLM_API_KEY` встановлено (або існує профіль автентифікації) і ви **не** визначаєте `models.providers.vllm`, OpenClaw виконує запит:
Коли встановлено `VLLM_API_KEY` (або існує профіль автентифікації) і ви **не** визначили `models.providers.vllm`, OpenClaw виконує запит:
```
GET http://127.0.0.1:8000/v1/models
```
і перетворює повернуті ID на записи моделей.
і перетворює повернені ID на записи моделей.
<Note>
Якщо ви явно задаєте `models.providers.vllm`, автоматичне виявлення пропускається, і вам потрібно визначити моделі вручну.
Якщо ви явно вкажете `models.providers.vllm`, автоматичне виявлення буде пропущено, і вам доведеться визначити моделі вручну.
</Note>
## Явна конфігурація (моделі вручну)
## Явна конфігурація (ручне визначення моделей)
Використовуйте явну конфігурацію, коли:
Використовуйте явну конфігурацію, якщо:
- vLLM працює на іншому хості або порту
- Ви хочете зафіксувати значення `contextWindow` або `maxTokens`
@ -117,17 +121,17 @@ GET http://127.0.0.1:8000/v1/models
<AccordionGroup>
<Accordion title="Поведінка в стилі проксі">
vLLM розглядається як OpenAI-сумісний бекенд `/v1` у стилі проксі, а не як нативний
ендпойнт OpenAI. Це означає:
vLLM розглядається як OpenAI-сумісний `/v1` бекенд у стилі проксі, а не як нативний
ендпоінт OpenAI. Це означає:
| Поведінка | Застосовується? |
|----------|----------|
| Нативне формування запитів OpenAI | Ні |
| `service_tier` | Не надсилається |
| Відповіді `store` | Не надсилаються |
| Підказки кешу промптів | Не надсилаються |
| `store` у відповідях | Не надсилається |
| Підказки для кешу промптів | Не надсилаються |
| Формування payload для сумісності з reasoning OpenAI | Не застосовується |
| Приховані заголовки атрибуції OpenClaw | Не додаються в кастомні базові URL |
| Приховані заголовки атрибуції OpenClaw | Не додаються для кастомних базових URL |
</Accordion>
@ -161,7 +165,7 @@ GET http://127.0.0.1:8000/v1/models
</Accordion>
</AccordionGroup>
## Усунення неполадок
## Усунення несправностей
<AccordionGroup>
<Accordion title="Сервер недоступний">
@ -176,7 +180,7 @@ GET http://127.0.0.1:8000/v1/models
</Accordion>
<Accordion title="Помилки автентифікації в запитах">
Якщо запити завершуються помилками автентифікації, установіть справжній `VLLM_API_KEY`, який відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`.
Якщо запити завершуються з помилками автентифікації, установіть справжній `VLLM_API_KEY`, який відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`.
<Tip>
Якщо ваш сервер vLLM не вимагає автентифікації, будь-яке непорожнє значення `VLLM_API_KEY` працює як сигнал явного ввімкнення для OpenClaw.
@ -185,27 +189,27 @@ GET http://127.0.0.1:8000/v1/models
</Accordion>
<Accordion title="Моделі не виявлено">
Для автоматичного виявлення потрібно, щоб `VLLM_API_KEY` було встановлено **і** не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення й використовує лише оголошені вами моделі.
Для автоматичного виявлення потрібно, щоб `VLLM_API_KEY` було встановлено **і** щоб не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення і використовує лише ваші оголошені моделі.
</Accordion>
</AccordionGroup>
<Warning>
Більше допомоги: [Усунення неполадок](/uk/help/troubleshooting) і [FAQ](/uk/help/faq).
Більше допомоги: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq).
</Warning>
## Пов’язане
<CardGroup cols={2}>
<Card title="Вибір моделі" href="/uk/concepts/model-providers" icon="layers">
Вибір провайдерів, посилань на моделі та поведінки failover.
Вибір провайдерів, посилань на моделі та поведінки резервного перемикання.
</Card>
<Card title="OpenAI" href="/uk/providers/openai" icon="bolt">
Нативний провайдер OpenAI і поведінка OpenAI-сумісного маршруту.
Нативний провайдер OpenAI та поведінка OpenAI-сумісного маршруту.
</Card>
<Card title="OAuth і автентифікація" href="/uk/gateway/authentication" icon="key">
Деталі автентифікації та правила повторного використання облікових даних.
</Card>
<Card title="Усунення неполадок" href="/uk/help/troubleshooting" icon="wrench">
<Card title="Усунення несправностей" href="/uk/help/troubleshooting" icon="wrench">
Поширені проблеми та способи їх вирішення.
</Card>
</CardGroup>