chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-07 20:12:38 +00:00
parent 66dd652e7d
commit 964e7f9589
4 changed files with 1454 additions and 1434 deletions

File diff suppressed because it is too large Load Diff

View File

@ -7,200 +7,210 @@ sidebarTitle: Channel Plugins
summary: Покроковий посібник зі створення плагіна каналу повідомлень для OpenClaw
title: Створення плагінів каналів
x-i18n:
generated_at: "2026-04-07T18:43:35Z"
generated_at: "2026-04-07T20:09:23Z"
model: gpt-5.4
provider: openai
source_hash: b709fda7527fcf437b119c4668172804f2f9c9a46f5e39a2161467a4f5f1e42f
source_hash: d23365b6d92006b30e671f9f0afdba40a2b88c845c5d2299d71c52a52985672f
source_path: plugins/sdk-channel-plugins.md
workflow: 15
---
# Створення плагінів каналів
Цей посібник покроково пояснює створення плагіна каналу, який підключає OpenClaw до
платформи обміну повідомленнями. Наприкінці у вас буде робочий канал із безпекою DM,
паруванням, гілкуванням відповідей і надсиланням вихідних повідомлень.
Цей посібник допоможе вам створити плагін каналу, який підключає OpenClaw до
платформи обміну повідомленнями. Наприкінці у вас буде робочий канал із
безпекою DM, сполученням, потоками відповідей і вихідними повідомленнями.
<Info>
Якщо ви ще не створювали жодного плагіна OpenClaw, спочатку прочитайте
Якщо ви раніше не створювали жодного плагіна OpenClaw, спочатку прочитайте
[Початок роботи](/uk/plugins/building-plugins) про базову структуру пакета
та налаштування маніфесту.
</Info>
## Як працюють плагіни каналів
Плагінам каналів не потрібні власні інструменти send/edit/react. OpenClaw зберігає один
спільний інструмент `message` у ядрі. Ваш плагін відповідає за:
Плагінам каналів не потрібні власні інструменти send/edit/react. OpenClaw
зберігає один спільний інструмент `message` у ядрі. Вашому плагіну належать:
- **Config** — визначення облікового запису та майстер налаштування
- **Security** — політика DM і списки дозволених
- **Pairing** — процес підтвердження DM
- **Session grammar** — як ідентифікатори розмов, специфічні для провайдера, зіставляються з базовими чатами, ідентифікаторами гілок і запасними батьківськими варіантами
- **Outbound** — надсилання тексту, медіа й опитувань на платформу
- **Threading** — як організовуються відповіді в гілки
- **Конфігурація** — визначення облікового запису та майстер налаштування
- **Безпека** — політика DM і списки дозволених
- **Сполучення** — потік підтвердження DM
- **Граматика сесії** — як ідентифікатори розмов, специфічні для провайдера, зіставляються з базовими чатами, ідентифікаторами потоків і резервними батьківськими елементами
- **Вихідні повідомлення** — надсилання тексту, медіа й опитувань на платформу
- **Потоки** — як групуються відповіді
Ядро відповідає за спільний інструмент message, зв’язування промптів, зовнішню форму
ключа сесії, загальний облік `:thread:` і диспетчеризацію.
Ядру належать спільний інструмент message, зв’язування промптів, зовнішня форма
ключа сесії, загальний облік `:thread:` і диспетчеризація.
Якщо ваша платформа зберігає додатковий контекст в ідентифікаторах розмов, залишайте цей
розбір у плагіні через `messaging.resolveSessionConversation(...)`. Це
канонічний хук для зіставлення `rawId` з базовим ідентифікатором розмови, необов’язковим
ідентифікатором гілки, явним `baseConversationId` і будь-якими
Якщо ваша платформа зберігає додаткову область дії в ідентифікаторах розмов,
залишайте цей розбір у плагіні за допомогою
`messaging.resolveSessionConversation(...)`. Це канонічний хук для
зіставлення `rawId` з базовим ідентифікатором розмови, необов’язковим
ідентифікатором потоку, явним `baseConversationId` і будь-якими
`parentConversationCandidates`.
Коли ви повертаєте `parentConversationCandidates`, зберігайте їх впорядкованими від
Коли ви повертаєте `parentConversationCandidates`, зберігайте їхній порядок від
найвужчого батьківського елемента до найширшої/базової розмови.
Вбудовані плагіни, яким потрібен той самий розбір до запуску реєстру каналів,
також можуть надавати файл верхнього рівня `session-key-api.ts` із відповідним
експортом `resolveSessionConversation(...)`. Ядро використовує цю безпечну для
завантаження поверхню лише тоді, коли реєстр плагінів під час виконання ще недоступний.
також можуть експортувати файл верхнього рівня `session-key-api.ts` із
відповідним експортом `resolveSessionConversation(...)`. Ядро використовує цю
безпечну для завантаження поверхню лише тоді, коли реєстр плагінів під час
виконання ще недоступний.
`messaging.resolveParentConversationCandidates(...)` залишається доступним як
застарілий запасний варіант для сумісності, коли плагіну потрібні лише
резервні батьківські варіанти поверх загального/raw id. Якщо існують обидва хуки, ядро спочатку
використовує `resolveSessionConversation(...).parentConversationCandidates` і лише потім
переходить до `resolveParentConversationCandidates(...)`, якщо канонічний хук
їх не повертає.
застарілий резервний варіант сумісності, коли плагіну потрібні лише резервні
батьківські елементи поверх загального/raw id. Якщо наявні обидва хуки, ядро
спочатку використовує
`resolveSessionConversation(...).parentConversationCandidates` і лише потім
повертається до `resolveParentConversationCandidates(...)`, якщо канонічний хук
їх не містить.
## Підтвердження та можливості каналу
## Підтвердження та можливості каналів
Більшості плагінів каналів не потрібен код, специфічний для підтверджень.
- Ядро відповідає за `/approve` у тому самому чаті, спільні payload кнопок підтвердження та загальну запасну доставку.
- Віддавайте перевагу одному об’єкту `approvalCapability` у плагіні каналу, якщо каналу потрібна поведінка, специфічна для підтверджень.
- `ChannelPlugin.approvals` видалено. Виносьте факти про доставку/нативний режим/рендеринг/автентифікацію підтверджень у `approvalCapability`.
- `plugin.auth` призначений лише для login/logout; ядро більше не читає хуки автентифікації підтверджень із цього об’єкта.
- `approvalCapability.authorizeActorAction` і `approvalCapability.getActionAvailabilityState`це канонічний шов автентифікації підтверджень.
- Ядру належать `/approve` у тому самому чаті, спільні payload кнопок підтвердження та загальна резервна доставка.
- Надавайте перевагу одному об’єкту `approvalCapability` у плагіні каналу, коли каналу потрібна поведінка, специфічна для підтверджень.
- `ChannelPlugin.approvals` видалено. Розміщуйте факти доставки/нативного відтворення/автентифікації підтверджень у `approvalCapability`.
- `plugin.auth` — лише login/logout; ядро більше не читає з цього об’єкта хуки автентифікації підтверджень.
- `approvalCapability.authorizeActorAction` і `approvalCapability.getActionAvailabilityState` — канонічний шов автентифікації підтверджень.
- Використовуйте `approvalCapability.getActionAvailabilityState` для доступності автентифікації підтверджень у тому самому чаті.
- Якщо ваш канал надає нативні підтвердження exec, використовуйте `approvalCapability.getExecInitiatingSurfaceState` для стану ініціювальної поверхні/нативного клієнта, коли він відрізняється від автентифікації підтверджень у тому самому чаті. Ядро використовує цей специфічний для exec хук, щоб розрізняти `enabled` і `disabled`, визначати, чи підтримує ініціювальний канал нативні підтвердження exec, і включати канал у рекомендації щодо запасного сценарію для нативного клієнта. `createApproverRestrictedNativeApprovalCapability(...)` заповнює це для типового випадку.
- Використовуйте `outbound.shouldSuppressLocalPayloadPrompt` або `outbound.beforeDeliverPayload` для поведінки життєвого циклу payload, специфічної для каналу, наприклад приховування дубльованих локальних запитів підтвердження або надсилання індикаторів набору перед доставкою.
- Використовуйте `approvalCapability.delivery` лише для маршрутизації нативних підтверджень або придушення запасної доставки.
- Використовуйте `approvalCapability.nativeRuntime` для фактів нативного підтвердження, що належать каналу. Зберігайте його ледачим у гарячих точках входу каналу за допомогою `createLazyChannelApprovalNativeRuntimeAdapter(...)`, який може імпортувати ваш runtime-модуль на вимогу, водночас дозволяючи ядру збирати життєвий цикл підтверджень.
- Використовуйте `approvalCapability.render` лише тоді, коли каналу справді потрібні власні payload підтвердження замість спільного рендера.
- Використовуйте `approvalCapability.describeExecApprovalSetup`, коли канал хоче, щоб відповідь на вимкнений шлях пояснювала точні параметри config, потрібні для ввімкнення нативних підтверджень exec. Хук отримує `{ channel, channelLabel, accountId }`; канали з іменованими обліковими записами мають відображати шляхи з областю облікового запису, як-от `channels.<channel>.accounts.<id>.execApprovals.*`, замість верхньорівневих типових значень.
- Якщо канал може вивести стабільні схожі на власника DM-ідентичності з наявної config, використовуйте `createResolvedApproverActionAuthAdapter` з `openclaw/plugin-sdk/approval-runtime`, щоб обмежити `/approve` у тому самому чаті без додавання логіки підтверджень у ядро.
- Якщо каналу потрібна доставка нативних підтверджень, зосередьте код каналу на нормалізації цілі плюс фактах транспорту/представлення. Використовуйте `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` і `createApproverRestrictedNativeApprovalCapability` з `openclaw/plugin-sdk/approval-runtime`. Розміщуйте факти, специфічні для каналу, за `approvalCapability.nativeRuntime`, бажано через `createChannelApprovalNativeRuntimeAdapter(...)` або `createLazyChannelApprovalNativeRuntimeAdapter(...)`, щоб ядро могло зібрати обробник і взяти на себе фільтрацію запитів, маршрутизацію, усунення дублікатів, завершення строку дії, підписку шлюзу та сповіщення про перенаправлення. `nativeRuntime` поділено на кілька менших швів:
- `availability` — чи налаштовано обліковий запис і чи слід обробляти запит
- `presentation`перетворення спільної view model підтверджень у нативні payload очікування/вирішення/прострочення або фінальні дії
- `transport` — підготовка цілей плюс надсилання/оновлення/видалення нативних повідомлень підтвердження
- Якщо ваш канал надає нативні підтвердження exec, використовуйте `approvalCapability.getExecInitiatingSurfaceState` для стану поверхні ініціювання/нативного клієнта, коли він відрізняється від автентифікації підтверджень у тому самому чаті. Ядро використовує цей хук, специфічний для exec, щоб розрізняти `enabled` і `disabled`, вирішувати, чи підтримує канал ініціювання нативні підтвердження exec, і включати канал до підказок щодо резервного варіанту для нативного клієнта. `createApproverRestrictedNativeApprovalCapability(...)` заповнює це для типового випадку.
- Використовуйте `outbound.shouldSuppressLocalPayloadPrompt` або `outbound.beforeDeliverPayload` для специфічної для каналу поведінки життєвого циклу payload, наприклад приховування дубльованих локальних підказок підтвердження або надсилання індикаторів набору перед доставкою.
- Використовуйте `approvalCapability.delivery` лише для маршрутизації нативних підтверджень або придушення резервної доставки.
- Використовуйте `approvalCapability.nativeRuntime` для фактів нативних підтверджень, що належать каналу. Зберігайте його лінивим у гарячих точках входу каналу за допомогою `createLazyChannelApprovalNativeRuntimeAdapter(...)`, який може імпортувати ваш runtime-модуль на вимогу, водночас дозволяючи ядру збирати життєвий цикл підтверджень.
- Використовуйте `approvalCapability.render` лише тоді, коли каналу справді потрібні власні payload підтверджень замість спільного рендерера.
- Використовуйте `approvalCapability.describeExecApprovalSetup`, коли канал хоче, щоб відповідь для вимкненого шляху пояснювала точні параметри конфігурації, потрібні для ввімкнення нативних підтверджень exec. Хук отримує `{ channel, channelLabel, accountId }`; канали з іменованими обліковими записами повинні відтворювати шляхи з областю облікового запису, як-от `channels.<channel>.accounts.<id>.execApprovals.*`, а не значення верхнього рівня за замовчуванням.
- Якщо канал може виводити стабільні DM-ідентичності, схожі на власника, з наявної конфігурації, використовуйте `createResolvedApproverActionAuthAdapter` з `openclaw/plugin-sdk/approval-runtime`, щоб обмежити `/approve` у тому самому чаті без додавання специфічної для підтверджень логіки ядра.
- Якщо каналу потрібна доставка нативних підтверджень, зосередьте код каналу на нормалізації цілі та фактах транспорту/подання. Використовуйте `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` і `createApproverRestrictedNativeApprovalCapability` з `openclaw/plugin-sdk/approval-runtime`. Розміщуйте специфічні для каналу факти за `approvalCapability.nativeRuntime`, ідеально через `createChannelApprovalNativeRuntimeAdapter(...)` або `createLazyChannelApprovalNativeRuntimeAdapter(...)`, щоб ядро могло збирати обробник і володіти фільтрацією запитів, маршрутизацією, дедуплікацією, строком дії, підпискою gateway і сповіщеннями про маршрутизацію в інше місце. `nativeRuntime` поділено на кілька менших швів:
- `availability` — чи налаштований обліковий запис і чи слід обробляти запит
- `presentation`зіставлення спільної view model підтвердження з нативними payload у станах pending/resolved/expired або фінальними діями
- `transport` — підготовка цілей і надсилання/оновлення/видалення нативних повідомлень підтвердження
- `interactions` — необов’язкові хуки bind/unbind/clear-action для нативних кнопок або реакцій
- `observe` — необов’язкові хуки діагностики доставки
- Якщо каналу потрібні об’єкти, що належать runtime, як-от client, token, додаток Bolt або приймач webhook, реєструйте їх через `openclaw/plugin-sdk/channel-runtime-context`. Загальний реєстр runtime-context дозволяє ядру ініціалізувати обробники на основі можливостей зі стану запуску каналу без додавання обгорток, специфічних для підтверджень.
- Звертайтеся до нижчорівневого `createChannelApprovalHandler` або `createChannelNativeApprovalRuntime` лише тоді, коли шов на основі можливостей ще недостатньо виразний.
- Канали з нативними підтвердженнями мають маршрутизувати і `accountId`, і `approvalKind` через ці помічники. `accountId` зберігає область політики підтверджень для багатьох облікових записів прив’язаною до правильного бот-акаунта, а `approvalKind` зберігає для каналу доступною поведінку підтверджень exec чи plugin без жорстко закодованих розгалужень у ядрі.
- Ядро тепер також відповідає за сповіщення про перенаправлення підтверджень. Плагіни каналів не повинні надсилати власні додаткові повідомлення на кшталт «підтвердження надійшло в DM / інший канал» із `createChannelNativeApprovalRuntime`; натомість надавайте точну маршрутизацію origin + approver-DM через спільні помічники можливостей підтверджень і дозвольте ядру агрегувати фактичні доставки перед публікацією будь-якого сповіщення назад в ініціювальний чат.
- Зберігайте тип delivered approval id наскрізно. Нативні клієнти не повинні
вгадувати або переписувати маршрутизацію підтверджень exec чи plugin зі стану, локального для каналу.
- Якщо каналу потрібні об’єкти, що належать runtime, наприклад клієнт, токен, застосунок Bolt або отримувач webhook, реєструйте їх через `openclaw/plugin-sdk/channel-runtime-context`. Загальний реєстр runtime-контексту дозволяє ядру завантажувати обробники, керовані можливостями, зі стану запуску каналу без додавання обгорткового glue-коду, специфічного для підтверджень.
- Звертайтеся до нижчорівневих `createChannelApprovalHandler` або `createChannelNativeApprovalRuntime` лише тоді, коли шов, керований можливостями, ще недостатньо виразний.
- Канали з нативними підтвердженнями повинні маршрутизувати через ці helper-и і `accountId`, і `approvalKind`. `accountId` зберігає політику підтверджень для кількох облікових записів у правильній області бот-облікового запису, а `approvalKind` зберігає для каналу доступну поведінку підтверджень exec або плагіна без жорстко закодованих гілок у ядрі.
- Тепер ядру також належать сповіщення про перемаршрутизацію підтверджень. Плагіни каналів не повинні надсилати власні додаткові повідомлення на кшталт "підтвердження перейшло в DM / інший канал" із `createChannelNativeApprovalRuntime`; натомість надавайте точну маршрутизацію origin + approver-DM через спільні helper-и можливостей підтверджень і дозвольте ядру агрегувати фактичні доставки перед публікацією будь-якого сповіщення назад у чат ініціювання.
- Зберігайте наскрізно тип delivered approval id. Нативні клієнти не повинні вгадувати або переписувати маршрутизацію підтверджень exec чи plugin зі стану, локального для каналу.
- Різні типи підтверджень можуть навмисно відкривати різні нативні поверхні.
Поточні приклади вбудованих плагінів:
Поточні вбудовані приклади:
- Slack зберігає доступною нативну маршрутизацію підтверджень як для exec, так і для plugin id.
- Matrix зберігає ту саму нативну маршрутизацію DM/каналу та UX реакцій для підтверджень exec
і plugin, водночас дозволяючи автентифікації відрізнятися за типом підтвердження.
- `createApproverRestrictedNativeApprovalAdapter` усе ще існує як обгортка для сумісності, але новий код має надавати перевагу будівнику можливостей і експонувати `approvalCapability` у плагіні.
- Matrix зберігає ту саму нативну маршрутизацію DM/каналу та UX реакцій для підтверджень exec і plugin, водночас дозволяючи автентифікації відрізнятися за типом підтвердження.
- `createApproverRestrictedNativeApprovalAdapter` усе ще існує як обгортка сумісності, але новий код має надавати перевагу побудовнику можливостей і експортувати `approvalCapability` у плагіні.
Для гарячих точок входу каналу віддавайте перевагу вужчим runtime-підшляхам, коли вам потрібна лише
одна частина цієї сім’ї:
Для гарячих точок входу каналу надавайте перевагу вужчим runtime-підшляхам,
коли вам потрібна лише одна частина цієї родини:
- `openclaw/plugin-sdk/approval-auth-runtime`
- `openclaw/plugin-sdk/approval-client-runtime`
- `openclaw/plugin-sdk/approval-delivery-runtime`
- `openclaw/plugin-sdk/approval-gateway-runtime`
- `openclaw/plugin-sdk/approval-handler-adapter-runtime`
- `openclaw/plugin-sdk/approval-handler-runtime`
- `openclaw/plugin-sdk/approval-native-runtime`
- `openclaw/plugin-sdk/approval-reply-runtime`
- `openclaw/plugin-sdk/channel-runtime-context`
Так само віддавайте перевагу `openclaw/plugin-sdk/setup-runtime`,
Так само надавайте перевагу `openclaw/plugin-sdk/setup-runtime`,
`openclaw/plugin-sdk/setup-adapter-runtime`,
`openclaw/plugin-sdk/reply-runtime`,
`openclaw/plugin-sdk/reply-dispatch-runtime`,
`openclaw/plugin-sdk/reply-reference` і
`openclaw/plugin-sdk/reply-chunking`, коли вам не потрібна ширша зонтична
поверхня.
`openclaw/plugin-sdk/reply-chunking`, коли вам не потрібна ширша
узагальнена поверхня.
Зокрема для налаштування:
Окремо для setup:
- `openclaw/plugin-sdk/setup-runtime` охоплює безпечні для runtime помічники налаштування:
безпечні для імпорту адаптери патчів налаштування (`createPatchedAccountSetupAdapter`,
- `openclaw/plugin-sdk/setup-runtime` охоплює безпечні для runtime helper-и setup:
безпечні для імпорту адаптери patch setup (`createPatchedAccountSetupAdapter`,
`createEnvPatchedAccountSetupAdapter`,
`createSetupInputPresenceValidator`), виведення lookup-note,
`createSetupInputPresenceValidator`), вивід нотаток пошуку,
`promptResolvedAllowFrom`, `splitSetupEntries` і делеговані
будівники setup-proxy
- `openclaw/plugin-sdk/setup-adapter-runtime` — це вузький env-aware шов адаптера
для `createEnvPatchedAccountSetupAdapter`
- `openclaw/plugin-sdk/channel-setup` охоплює будівники налаштування з необов’язковим встановленням
плюс кілька безпечних для налаштування примітивів:
побудовники setup-proxy
- `openclaw/plugin-sdk/setup-adapter-runtime` — це вузький env-aware шов
адаптера для `createEnvPatchedAccountSetupAdapter`
- `openclaw/plugin-sdk/channel-setup` охоплює побудовники setup
з необов’язковим встановленням, а також кілька примітивів, безпечних для setup:
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
Якщо ваш канал підтримує налаштування або auth на основі env, і загальні процеси запуску/config
мають знати ці назви env до завантаження runtime, оголошуйте їх у
маніфесті плагіна через `channelEnvVars`. Зберігайте runtime `envVars` каналу або локальні
константи лише для копірайту, орієнтованого на операторів.
Якщо ваш канал підтримує setup або auth на основі env і загальні потоки
startup/config повинні знати ці назви env ще до завантаження runtime,
оголошуйте їх у маніфесті плагіна через `channelEnvVars`. Зберігайте runtime
`envVars` каналу або локальні константи лише для текстів, орієнтованих на операторів.
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` і
`splitSetupEntries`
- використовуйте ширший шов `openclaw/plugin-sdk/setup` лише тоді, коли вам також потрібні
важчі спільні помічники налаштування/config, такі як
- використовуйте ширший шов `openclaw/plugin-sdk/setup` лише тоді, коли вам
також потрібні важчі спільні helper-и setup/config, наприклад
`moveSingleAccountChannelSectionToDefaultAccount(...)`
Якщо ваш канал лише хоче повідомляти «спочатку встановіть цей плагін» на
поверхнях налаштування, віддавайте перевагу `createOptionalChannelSetupSurface(...)`. Згенеровані
adapter/wizard працюють за принципом fail closed для записів config і фіналізації, а також
повторно використовують те саме повідомлення про обов’язкове встановлення для валідації, фіналізації та тексту
з посиланням на документацію.
Якщо ваш канал хоче лише оголошувати "спочатку встановіть цей плагін" на
поверхнях setup, надавайте перевагу `createOptionalChannelSetupSurface(...)`.
Згенеровані adapter/wizard працюють у безпечному зачиненому режимі щодо
записів конфігурації та фіналізації, а також повторно використовують те саме
повідомлення про необхідність встановлення у валідації, finalize і текстах
посилань на документацію.
Для інших гарячих шляхів каналу віддавайте перевагу вузьким помічникам над ширшими застарілими
поверхнями:
Для інших гарячих шляхів каналів надавайте перевагу вузьким helper-ам замість
ширших застарілих поверхонь:
- `openclaw/plugin-sdk/account-core`,
`openclaw/plugin-sdk/account-id`,
`openclaw/plugin-sdk/account-resolution` і
`openclaw/plugin-sdk/account-helpers` для config багатьох облікових записів і
запасного сценарію облікового запису за замовчуванням
`openclaw/plugin-sdk/account-helpers` для конфігурації кількох
облікових записів і резервного варіанта з обліковим записом за
замовчуванням
- `openclaw/plugin-sdk/inbound-envelope` і
`openclaw/plugin-sdk/inbound-reply-dispatch` для вхідного маршруту/конверта та
зв’язування record-and-dispatch
`openclaw/plugin-sdk/inbound-reply-dispatch` для маршруту/конверта
вхідних повідомлень і зв’язування record-and-dispatch
- `openclaw/plugin-sdk/messaging-targets` для розбору/зіставлення цілей
- `openclaw/plugin-sdk/outbound-media` і
`openclaw/plugin-sdk/outbound-runtime` для завантаження медіа плюс делегатів
ідентичності/надсилання вихідних повідомлень
- `openclaw/plugin-sdk/thread-bindings-runtime` для життєвого циклу прив’язок гілок
і реєстрації адаптерів
- `openclaw/plugin-sdk/agent-media-payload` лише коли все ще потрібна застаріла
схема полів payload агента/медіа
- `openclaw/plugin-sdk/telegram-command-config` для нормалізації спеціальних команд Telegram,
валідації дублікатів/конфліктів і стабільного при запасному сценарії контракту config команд
`openclaw/plugin-sdk/outbound-runtime` для завантаження медіа та
делегатів identity/send для вихідних повідомлень
- `openclaw/plugin-sdk/thread-bindings-runtime` для життєвого циклу
прив’язок потоків і реєстрації адаптерів
- `openclaw/plugin-sdk/agent-media-payload` лише тоді, коли все ще
потрібне застаріле компонування полів payload агента/медіа
- `openclaw/plugin-sdk/telegram-command-config` для нормалізації
користувацьких команд Telegram, валідації дублікатів/конфліктів і стабільного
для fallback контракту конфігурації команд
Канали лише з auth зазвичай можуть зупинитися на типовому шляху: ядро обробляє підтвердження, а плагін лише надає можливості outbound/auth. Канали з нативними підтвердженнями, як-от Matrix, Slack, Telegram і спеціальні транспортні канали чату, повинні використовувати спільні нативні помічники замість реалізації власного життєвого циклу підтверджень.
Канали лише з auth зазвичай можуть зупинитися на шляху за замовчуванням: ядро
обробляє підтвердження, а плагін просто надає можливості outbound/auth. Канали
з нативними підтвердженнями, як-от Matrix, Slack, Telegram і користувацькі
chat-транспорти, мають використовувати спільні нативні helper-и замість
створення власного життєвого циклу підтверджень.
## Політика вхідних згадок
Розділяйте обробку вхідних згадок на два рівні:
Розділяйте обробку вхідних згадок на два шари:
- збирання доказів, що належить плагіну
- оцінювання спільної політики
- спільна оцінка політики
Для спільного рівня використовуйте `openclaw/plugin-sdk/channel-inbound`.
Для спільного шару використовуйте `openclaw/plugin-sdk/channel-inbound`.
Підходить для логіки, локальної для плагіна:
Добре підходить для локальної логіки плагіна:
- виявлення відповіді боту
- виявлення цитування бота
- перевірки участі в гілці
- виключення сервісних/системних повідомлень
- платформонативні кеші, потрібні для доведення участі бота
- виявлення цитати бота
- перевірки участі в потоці
- виключення службових/системних повідомлень
- специфічні для платформи нативні кеші, потрібні для підтвердження участі бота
Підходить для спільного помічника:
Добре підходить для спільного helper-а:
- `requireMention`
- явний результат згадки
- список дозволених неявних згадок
- обхід для команд
- остаточне рішення про пропуск
- фінальне рішення про пропуск
Рекомендований процес:
Рекомендований потік:
1. Обчисліть локальні факти згадки.
1. Обчисліть локальні факти згадок.
2. Передайте ці факти в `resolveInboundMentionDecision({ facts, policy })`.
3. Використовуйте `decision.effectiveWasMentioned`, `decision.shouldBypassMention` і `decision.shouldSkip` у своїй вхідній перевірці.
@ -241,8 +251,8 @@ const decision = resolveInboundMentionDecision({
if (decision.shouldSkip) return;
```
`api.runtime.channel.mentions` надає ті самі спільні помічники згадок для
вбудованих плагінів каналів, які вже залежать від інʼєкції runtime:
`api.runtime.channel.mentions` надає ті самі спільні helper-и згадок для
вбудованих плагінів каналів, які вже залежать від runtime injection:
- `buildMentionRegexes`
- `matchesMentionPatterns`
@ -250,9 +260,9 @@ if (decision.shouldSkip) return;
- `implicitMentionKindWhen`
- `resolveInboundMentionDecision`
Старіші помічники `resolveMentionGating*` залишаються в
`openclaw/plugin-sdk/channel-inbound` лише як експорти для сумісності. Новий код
має використовувати `resolveInboundMentionDecision({ facts, policy })`.
Старіші helper-и `resolveMentionGating*` залишаються в
`openclaw/plugin-sdk/channel-inbound` лише як експорти сумісності. Новий код
повинен використовувати `resolveInboundMentionDecision({ facts, policy })`.
## Покроковий розбір
@ -260,8 +270,8 @@ if (decision.shouldSkip) return;
<a id="step-1-package-and-manifest"></a>
<Step title="Пакет і маніфест">
Створіть стандартні файли плагіна. Поле `channel` у `package.json`
робить це плагіном каналу. Повну поверхню метаданих пакета
дивіться в [Налаштування плагіна і Config](/uk/plugins/sdk-setup#openclawchannel):
робить цей пакет плагіном каналу. Повну поверхню метаданих пакета див. у
[Налаштування плагіна та конфігурація](/uk/plugins/sdk-setup#openclawchannel):
<CodeGroup>
```json package.json
@ -311,8 +321,8 @@ if (decision.shouldSkip) return;
</Step>
<Step title="Створіть об’єкт плагіна каналу">
Інтерфейс `ChannelPlugin` має багато необов’язкових поверхонь адаптерів. Почніть із
мінімуму — `id` і `setup`і додавайте адаптери за потреби.
Інтерфейс `ChannelPlugin` має багато необов’язкових поверхонь адаптерів.
Почніть із мінімуму — `id` і `setup`і додавайте адаптери за потреби.
Створіть `src/channel.ts`:
@ -408,18 +418,18 @@ if (decision.shouldSkip) return;
```
<Accordion title="Що для вас робить createChatChannelPlugin">
Замість ручної реалізації низькорівневих інтерфейсів адаптерів ви передаєте
декларативні параметри, а будівник поєднує їх:
Замість ручної реалізації низькорівневих інтерфейсів адаптерів ви
передаєте декларативні параметри, а побудовник їх компонуватиме:
| Параметр | Що він підключає |
| --- | --- |
| `security.dm` | Визначення DM-безпеки з областю дії з полів config |
| `pairing.text` | Текстовий процес парування DM з обміном кодами |
| `threading` | Визначення режиму reply-to (фіксований, з областю облікового запису або власний) |
| `outbound.attachedResults` | Функції надсилання, які повертають метадані результату (ID повідомлень) |
| `security.dm` | Визначення політики DM з областю дії за полями конфігурації |
| `pairing.text` | Потік текстового сполучення DM з обміном коду |
| `threading` | Визначення режиму reply-to (фіксований, з областю облікового запису або користувацький) |
| `outbound.attachedResults` | Функції надсилання, що повертають метадані результату (ідентифікатори повідомлень) |
Ви також можете передавати сирі об’єкти адаптерів замість декларативних параметрів,
якщо вам потрібен повний контроль.
Ви також можете передавати сирі об’єкти адаптерів замість декларативних
параметрів, якщо вам потрібен повний контроль.
</Accordion>
</Step>
@ -460,21 +470,23 @@ if (decision.shouldSkip) return;
});
```
Розміщуйте дескриптори CLI, що належать каналу, у `registerCliMetadata(...)`, щоб OpenClaw
міг показувати їх у кореневій довідці без активації повного runtime каналу,
тоді як звичайні повні завантаження все одно підхоплюватимуть ті самі дескриптори для реєстрації
реальних команд. Залишайте `registerFull(...)` для роботи лише під час runtime.
Розміщуйте дескриптори CLI, що належать каналу, у `registerCliMetadata(...)`,
щоб OpenClaw міг показувати їх у кореневій довідці без активації повного
runtime каналу, тоді як звичайні повні завантаження все одно підхоплюють
ті самі дескриптори для реєстрації реальних команд. Зберігайте
`registerFull(...)` для роботи лише під час runtime.
Якщо `registerFull(...)` реєструє gateway RPC methods, використовуйте
префікс, специфічний для плагіна. Простори імен адміністратора ядра (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) залишаються зарезервованими і завжди
визначаються як `operator.admin`.
`defineChannelPluginEntry` автоматично обробляє поділ режимів реєстрації. Усі
параметри дивіться в [Точки входу](/uk/plugins/sdk-entrypoints#definechannelpluginentry).
префікс, специфічний для плагіна. Простори імен адміністратора ядра
(`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) залишаються
зарезервованими й завжди зіставляються з `operator.admin`.
`defineChannelPluginEntry` автоматично обробляє поділ за режимами реєстрації. Див.
[Точки входу](/uk/plugins/sdk-entrypoints#definechannelpluginentry), щоб
переглянути всі параметри.
</Step>
<Step title="Додайте точку входу налаштування">
Створіть `setup-entry.ts` для легкого завантаження під час онбордингу:
<Step title="Додайте запис setup">
Створіть `setup-entry.ts` для полегшеного завантаження під час onboarding:
```typescript setup-entry.ts
import { defineSetupPluginEntry } from "openclaw/plugin-sdk/channel-core";
@ -483,16 +495,17 @@ if (decision.shouldSkip) return;
export default defineSetupPluginEntry(acmeChatPlugin);
```
OpenClaw завантажує це замість повної точки входу, коли канал вимкнено
або не налаштовано. Це дає змогу не підтягувати важкий runtime-код під час процесів налаштування.
Докладніше дивіться в [Налаштування і Config](/uk/plugins/sdk-setup#setup-entry).
OpenClaw завантажує це замість повної точки входу, коли канал вимкнений
або не налаштований. Це дозволяє не підтягувати важкий runtime-код під час
потоків setup.
Докладніше див. у [Setup і конфігурація](/uk/plugins/sdk-setup#setup-entry).
</Step>
<Step title="Обробляйте вхідні повідомлення">
Ваш плагін має отримувати повідомлення з платформи й переспрямовувати їх до
Ваш плагін має отримувати повідомлення з платформи та пересилати їх у
OpenClaw. Типовий шаблон — це webhook, який перевіряє запит і
диспетчеризує його через вхідний обробник вашого каналу:
диспетчеризує його через обробник вхідних повідомлень вашого каналу:
```typescript
registerFull(api) {
@ -516,9 +529,9 @@ if (decision.shouldSkip) return;
```
<Note>
Обробка вхідних повідомлень залежить від каналу. Кожен плагін каналу відповідає
за власний вхідний конвеєр. Подивіться на вбудовані плагіни каналів
(наприклад, пакет плагінів Microsoft Teams або Google Chat), щоб побачити реальні шаблони.
Обробка вхідних повідомлень є специфічною для каналу. Кожен плагін каналу
володіє власним вхідним конвеєром. Дивіться на вбудовані плагіни каналів
(наприклад, пакет плагіна Microsoft Teams або Google Chat), щоб побачити реальні шаблони.
</Note>
</Step>
@ -563,7 +576,7 @@ if (decision.shouldSkip) return;
pnpm test -- <bundled-plugin-root>/acme-chat/
```
Спільні помічники тестування дивіться в [Тестування](/uk/plugins/sdk-testing).
Спільні helper-и для тестування див. у [Тестування](/uk/plugins/sdk-testing).
</Step>
</Steps>
@ -572,46 +585,47 @@ if (decision.shouldSkip) return;
```
<bundled-plugin-root>/acme-chat/
├── package.json # metadata openclaw.channel
├── openclaw.plugin.json # Маніфест зі схемою config
├── package.json # метадані openclaw.channel
├── openclaw.plugin.json # маніфест зі схемою конфігурації
├── index.ts # defineChannelPluginEntry
├── setup-entry.ts # defineSetupPluginEntry
├── api.ts # Публічні експорти (необов’язково)
├── runtime-api.ts # Внутрішні runtime-експорти (необов’язково)
├── api.ts # публічні експорти (необов’язково)
├── runtime-api.ts # внутрішні runtime-експорти (необов’язково)
└── src/
├── channel.ts # ChannelPlugin через createChatChannelPlugin
├── channel.test.ts # Тести
├── client.ts # API-клієнт платформи
└── runtime.ts # Сховище runtime (за потреби)
├── channel.test.ts # тести
├── client.ts # клієнт API платформи
└── runtime.ts # сховище runtime (за потреби)
```
## Розширені теми
<CardGroup cols={2}>
<Card title="Параметри гілкування" icon="git-branch" href="/uk/plugins/sdk-entrypoints#registration-mode">
Фіксовані режими відповіді, режими з областю облікового запису або власні
<Card title="Параметри потоків" icon="git-branch" href="/uk/plugins/sdk-entrypoints#registration-mode">
Фіксовані режими відповідей, режими з областю облікового запису або користувацькі
</Card>
<Card title="Інтеграція інструмента повідомлень" icon="puzzle" href="/uk/plugins/architecture#channel-plugins-and-the-shared-message-tool">
<Card title="Інтеграція інструмента message" icon="puzzle" href="/uk/plugins/architecture#channel-plugins-and-the-shared-message-tool">
describeMessageTool і виявлення дій
</Card>
<Card title="Визначення цілі" icon="crosshair" href="/uk/plugins/architecture#channel-target-resolution">
inferTargetChatType, looksLikeId, resolveTarget
</Card>
<Card title="Помічники runtime" icon="settings" href="/uk/plugins/sdk-runtime">
<Card title="Runtime helper-и" icon="settings" href="/uk/plugins/sdk-runtime">
TTS, STT, медіа, subagent через api.runtime
</Card>
</CardGroup>
<Note>
Деякі вбудовані допоміжні шви все ще існують для підтримки вбудованих плагінів і
сумісності. Це не рекомендований шаблон для нових плагінів каналів;
віддавайте перевагу загальним підшляхам channel/setup/reply/runtime зі спільної
поверхні SDK, якщо тільки ви не підтримуєте безпосередньо це сімейство вбудованих плагінів.
Деякі вбудовані helper seams усе ще існують для підтримки вбудованих плагінів і
сумісності. Вони не є рекомендованим шаблоном для нових плагінів каналів;
надавайте перевагу загальним підшляхам channel/setup/reply/runtime зі спільної
поверхні SDK, якщо тільки ви безпосередньо не підтримуєте цю родину
вбудованих плагінів.
</Note>
## Наступні кроки
- [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins) — якщо ваш плагін також надає моделі
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів підшляхів
- [Тестування SDK](/uk/plugins/sdk-testing) — тестові утиліти та контрактні тести
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник з імпортів за підшляхами
- [Тестування SDK](/uk/plugins/sdk-testing) — утиліти тестування та контрактні тести
- [Маніфест плагіна](/uk/plugins/manifest) — повна схема маніфесту

View File

@ -2,139 +2,143 @@
read_when:
- Ви бачите попередження OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED
- Ви бачите попередження OPENCLAW_EXTENSION_API_DEPRECATED
- Ви оновлюєте plugin до сучасної архітектури plugin
- Ви підтримуєте зовнішній plugin OpenClaw
- Ви оновлюєте плагін до сучасної архітектури плагінів
- Ви підтримуєте зовнішній плагін OpenClaw
sidebarTitle: Migrate to SDK
summary: Перейдіть зі застарілого шару зворотної сумісності на сучасний plugin SDK
title: Міграція Plugin SDK
summary: Перехід із застарілого шару зворотної сумісності до сучасного SDK плагінів
title: Міграція SDK плагінів
x-i18n:
generated_at: "2026-04-07T18:43:55Z"
generated_at: "2026-04-07T20:09:40Z"
model: gpt-5.4
provider: openai
source_hash: 509699c3432191a1b2e4214c66d6d620e8d13a064cb2e7b9b38460c7ea45a20d
source_hash: 155a8b14bc345319c8516ebdb8a0ccdea2c5f7fa07dad343442996daee21ecad
source_path: plugins/sdk-migration.md
workflow: 15
---
# Міграція Plugin SDK
# Міграція SDK плагінів
OpenClaw перейшов від широкого шару зворотної сумісності до сучасної
архітектури plugin із цільовими, задокументованими імпортами. Якщо ваш plugin
було створено до появи нової архітектури, цей посібник допоможе вам
перейти на неї.
архітектури плагінів зі сфокусованими, задокументованими імпортами. Якщо ваш
плагін був створений до появи нової архітектури, цей посібник допоможе вам
виконати міграцію.
## Що змінюється
Стара система plugin надавала дві відкриті поверхні, які дозволяли plugin
імпортувати все необхідне з єдиної точки входу:
Стара система плагінів надавала дві широко відкриті поверхні, які дозволяли
плагінам імпортувати все, що їм потрібно, з єдиної точки входу:
- **`openclaw/plugin-sdk/compat`** — єдиний імпорт, який повторно експортував
десятки допоміжних функцій. Його було запроваджено, щоб зберегти роботу
старіших plugin на основі hook, поки створювалася нова архітектура plugin.
- **`openclaw/extension-api`** — міст, що надавав plugin прямий доступ до
допоміжних функцій на боці хоста, як-от вбудований засіб запуску agent.
десятки допоміжних функцій. Його було введено, щоб старіші плагіни на базі
хуків продовжували працювати, поки створювалася нова архітектура плагінів.
- **`openclaw/extension-api`** — міст, який надавав плагінам прямий доступ до
допоміжних функцій на боці хоста, таких як вбудований запускник агента.
Обидві поверхні тепер **застарілі**. Вони все ще працюють під час виконання,
але нові plugin не повинні їх використовувати, а наявним plugin слід
перейти до того, як наступний мажорний випуск їх прибере.
але нові плагіни не повинні їх використовувати, а наявні плагіни мають
мігрувати до того, як наступний мажорний реліз їх видалить.
<Warning>
Шар зворотної сумісності буде видалено в одному з майбутніх мажорних
випусків. Plugins, які все ще імпортують із цих поверхонь, перестануть
релізів. Плагіни, які все ще імпортують із цих поверхонь, перестануть
працювати, коли це станеться.
</Warning>
## Чому це змінилося
Старий підхід спричиняв проблеми:
Старий підхід створював проблеми:
- **Повільний запуск** — імпорт однієї допоміжної функції завантажував десятки
не пов’язаних між собою модулів
- **Циклічні залежності** — широкі повторні експорти спрощували створення
- **Циклічні залежності** — широкі повторні експорти полегшували створення
циклів імпорту
- **Нечітка поверхня API** — не було способу визначити, які експорти є
- **Нечітка поверхня API** — не було способу зрозуміти, які експорти є
стабільними, а які внутрішніми
Сучасний plugin SDK вирішує це: кожен шлях імпорту (`openclaw/plugin-sdk/\<subpath\>`)
є невеликим, самодостатнім модулем із чітким призначенням і задокументованим
контрактом.
Сучасний SDK плагінів це виправляє: кожен шлях імпорту
(`openclaw/plugin-sdk/\<subpath\>`) — це невеликий, самодостатній модуль із
чітким призначенням і задокументованим контрактом.
Застарілі зручні шви provider для вбудованих каналів також зникли. Імпорти
на кшталт `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`,
брендовані допоміжні шви каналів і
`openclaw/plugin-sdk/telegram-core` були приватними скороченнями
моно-репозиторію, а не стабільними контрактами plugin. Натомість
використовуйте вузькі загальні підшляхи SDK. Усередині робочого простору
вбудованих plugin зберігайте допоміжні функції, що належать provider, у
власному `api.ts` або `runtime-api.ts` цього plugin.
Застарілі зручні шви провайдерів для вбудованих каналів також прибрано.
Імпорти на кшталт `openclaw/plugin-sdk/slack`,
`openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`,
`openclaw/plugin-sdk/whatsapp`, брендовані для каналів допоміжні шви та
`openclaw/plugin-sdk/telegram-core` були приватними скороченнями для
монорепозиторію, а не стабільними контрактами плагінів. Натомість
використовуйте вузькі узагальнені підшляхи SDK. Усередині робочого простору
вбудованих плагінів зберігайте допоміжні функції, що належать провайдеру, у
власному `api.ts` або `runtime-api.ts` цього плагіна.
Поточні приклади вбудованих provider:
Поточні приклади вбудованих провайдерів:
- Anthropic зберігає допоміжні функції потоку, специфічні для Claude, у
- Anthropic зберігає специфічні для Claude допоміжні функції потоків у
власному шві `api.ts` / `contract-api.ts`
- OpenAI зберігає builder-и provider, допоміжні функції моделей за
замовчуванням і builder-и realtime provider у власному `api.ts`
- OpenRouter зберігає builder provider та допоміжні функції онбордингу/конфігурації
у власному `api.ts`
- OpenAI зберігає конструктори провайдерів, допоміжні функції моделей за
замовчуванням і конструктори realtime-провайдерів у власному `api.ts`
- OpenRouter зберігає конструктор провайдера та допоміжні функції
онбордингу/конфігурації у власному `api.ts`
## Як перейти
## Як виконати міграцію
<Steps>
<Step title="Перенесіть approval-native handlers на факти можливостей">
Plugins каналів із підтримкою approval тепер розкривають нативну поведінку
approval через `approvalCapability.nativeRuntime` разом зі спільним
реєстром runtime-context.
<Step title="Перенесіть approval-native обробники на capability facts">
Плагіни каналів із підтримкою погодження тепер надають нативну поведінку
погодження через `approvalCapability.nativeRuntime` разом зі спільним
реєстром runtime-контексту.
Ключові зміни:
Основні зміни:
- Замініть `approvalCapability.handler.loadRuntime(...)` на
`approvalCapability.nativeRuntime`
- Перенесіть автентифікацію/доставку, специфічні для approval, зі
застарілого зв’язування `plugin.auth` / `plugin.approvals`
на `approvalCapability`
- `ChannelPlugin.approvals` видалено з публічного контракту
- Перенесіть автентифікацію/доставку, специфічну для погоджень, зі
застарілої зв’язки `plugin.auth` / `plugin.approvals` на
`approvalCapability`
- `ChannelPlugin.approvals` було видалено з публічного контракту
channel-plugin; перенесіть поля delivery/native/render до
`approvalCapability`
- `plugin.auth` залишається лише для потоків входу/виходу з channel; hook
автентифікації approval там більше не читаються ядром
- Реєструйте runtime-об’єкти, що належать каналу, як-от clients, tokens або Bolt
apps, через `openclaw/plugin-sdk/channel-runtime-context`
- Не надсилайте повідомлення про перенаправлення, що належать plugin, з native approval handlers;
тепер ядро відповідає за повідомлення routed-elsewhere на основі фактичних результатів доставки
- Під час передавання `channelRuntime` у `createChannelManager(...)` надавайте
справжню поверхню `createPluginRuntime().channel`. Часткові stubs відхиляються.
- `plugin.auth` залишається лише для потоків входу/виходу каналів; хуки
автентифікації погоджень там більше не читаються ядром
- Реєструйте об’єкти runtime, що належать каналу, як-от клієнти, токени
або застосунки Bolt, через
`openclaw/plugin-sdk/channel-runtime-context`
- Не надсилайте повідомлення reroute, що належать плагіну, з native
approval-обробників; тепер ядро саме відповідає за повідомлення
routed-elsewhere на основі фактичних результатів доставки
- Під час передавання `channelRuntime` у `createChannelManager(...)`
надавайте реальну поверхню `createPluginRuntime().channel`. Часткові
заглушки відхиляються.
Поточне компонування можливостей approval дивіться в
Актуальну структуру approval capability див. у
`/plugins/sdk-channel-plugins`.
</Step>
<Step title="Перевірте резервну поведінку Windows wrapper">
Якщо ваш plugin використовує `openclaw/plugin-sdk/windows-spawn`, невизначені Windows
wrappers `.cmd`/`.bat` тепер завершуються з закритою відмовою, якщо ви явно не передасте
`allowShellFallback: true`.
Якщо ваш плагін використовує `openclaw/plugin-sdk/windows-spawn`, нерозв’язані
Windows-обгортки `.cmd`/`.bat` тепер завершуються в закритому режимі, якщо
ви явно не передасте `allowShellFallback: true`.
```typescript
// До
// Before
const program = applyWindowsSpawnProgramPolicy({ candidate });
// Після
// After
const program = applyWindowsSpawnProgramPolicy({
candidate,
// Установлюйте це лише для довірених викликів сумісності, які свідомо
// допускають резервний перехід через shell.
// Only set this for trusted compatibility callers that intentionally
// accept shell-mediated fallback.
allowShellFallback: true,
});
```
Якщо ваш виклик не покладається навмисно на резервний перехід через shell,
не встановлюйте `allowShellFallback` і натомість обробляйте згенеровану помилку.
Якщо ваш код навмисно не покладається на резервний варіант через оболонку,
не встановлюйте `allowShellFallback` і натомість обробляйте згенеровану
помилку.
</Step>
<Step title="Знайдіть застарілі імпорти">
Знайдіть у своєму plugin імпорти з будь-якої із застарілих поверхонь:
Знайдіть у своєму плагіні імпорти з будь-якої застарілої поверхні:
```bash
grep -r "plugin-sdk/compat" my-plugin/
@ -143,36 +147,38 @@ OpenClaw перейшов від широкого шару зворотної с
</Step>
<Step title="Замініть їх цільовими імпортами">
Кожен експорт зі старої поверхні відповідає конкретному сучасному шляху імпорту:
<Step title="Замініть їх сфокусованими імпортами">
Кожен експорт зі старої поверхні відповідає певному сучасному шляху
імпорту:
```typescript
// До (застарілий шар зворотної сумісності)
// Before (deprecated backwards-compatibility layer)
import {
createChannelReplyPipeline,
createPluginRuntimeStore,
resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";
// Після (сучасні цільові імпорти)
// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
```
Для допоміжних функцій на боці хоста використовуйте впроваджений runtime plugin
замість прямого імпорту:
Для допоміжних функцій на боці хоста використовуйте інжектований runtime
плагіна замість прямого імпорту:
```typescript
// До (застарілий міст extension-api)
// Before (deprecated extension-api bridge)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });
// Після (впроваджений runtime)
// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
```
Такий самий шаблон застосовується й до інших застарілих допоміжних функцій моста:
Той самий шаблон застосовується і до інших застарілих допоміжних функцій
bridge:
| Старий імпорт | Сучасний еквівалент |
| --- | --- |
@ -182,7 +188,7 @@ OpenClaw перейшов від широкого шару зворотної с
| `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` |
| `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` |
| `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` |
| допоміжні функції сховища session | `api.runtime.agent.session.*` |
| допоміжні функції сховища сесій | `api.runtime.agent.session.*` |
</Step>
@ -197,144 +203,146 @@ OpenClaw перейшов від широкого шару зворотної с
## Довідник шляхів імпорту
<Accordion title="Таблиця поширених шляхів імпорту">
| Шлях імпорту | Призначення | Ключові експорти |
| Шлях імпорту | Призначення | Основні експорти |
| --- | --- | --- |
| `plugin-sdk/plugin-entry` | Канонічна допоміжна функція точки входу plugin | `definePluginEntry` |
| `plugin-sdk/core` | Застарілий umbrella-повторний експорт для визначень/builders входу каналу | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/plugin-entry` | Канонічна допоміжна функція точки входу плагіна | `definePluginEntry` |
| `plugin-sdk/core` | Застарілий зонтичний повторний експорт для визначень/конструкторів входу каналу | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/config-schema` | Експорт кореневої схеми конфігурації | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | Допоміжна функція точки входу для одного provider | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Цільові визначення та builders входу каналу | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Спільні допоміжні функції майстра налаштування | Запити allowlist, builders стану налаштування |
| `plugin-sdk/setup-runtime` | Допоміжні функції runtime на етапі налаштування | Безпечні для імпорту patch-adapters налаштування, допоміжні функції нотаток пошуку, `promptResolvedAllowFrom`, `splitSetupEntries`, делеговані проксі налаштування |
| `plugin-sdk/provider-entry` | Допоміжна функція точки входу одного провайдера | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Сфокусовані визначення та конструктори входу каналу | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Спільні допоміжні функції майстра налаштування | Запити allowlist, конструктори статусу налаштування |
| `plugin-sdk/setup-runtime` | Допоміжні функції runtime для етапу налаштування | Безпечні для імпорту адаптери patch для налаштування, допоміжні функції note для lookup, `promptResolvedAllowFrom`, `splitSetupEntries`, делеговані проксі налаштування |
| `plugin-sdk/setup-adapter-runtime` | Допоміжні функції адаптера налаштування | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | Допоміжні функції інструментарію налаштування | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/setup-tools` | Допоміжні функції інструментів налаштування | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні функції для кількох облікових записів | Допоміжні функції списку облікових записів/конфігурації/action-gate |
| `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` | Вузькі допоміжні функції для облікових записів | Допоміжні функції списку облікових записів/account-action |
| `plugin-sdk/channel-setup` | Адаптери майстра налаштування | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/channel-pairing` | Примітиви DM pairing | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | Префікс відповіді + wiring індикатора набору | `createChannelReplyPipeline` |
| `plugin-sdk/channel-reply-pipeline` | Префікс відповіді + зв’язування typing | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | Фабрики адаптерів конфігурації | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Builders схем конфігурації | Типи схем конфігурації каналу |
| `plugin-sdk/telegram-command-config` | Допоміжні функції конфігурації команд Telegram | Нормалізація назв команд, обрізання описів, валідація дублікатів/конфліктів |
| `plugin-sdk/channel-policy` | Визначення політики group/DM | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | Відстеження стану облікового запису | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Допоміжні функції вхідних envelope | Спільні допоміжні функції маршрутизації + побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Допоміжні функції вхідних відповідей | Спільні допоміжні функції запису та dispatch |
| `plugin-sdk/messaging-targets` | Розбір messaging targets | Допоміжні функції розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Допоміжні функції вихідних медіа | Спільне завантаження вихідних медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні функції вихідного runtime | Допоміжні функції outbound identity/send delegate |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні функції thread-binding | Допоміжні функції життєвого циклу thread-binding та адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілі допоміжні функції media payload | Builder agent media payload для застарілих layout полів |
| `plugin-sdk/channel-runtime` | Застарілий shim сумісності | Лише застарілі утиліти runtime каналу |
| `plugin-sdk/channel-config-schema` | Конструктори схем конфігурації | Типи схем конфігурації каналу |
| `plugin-sdk/telegram-command-config` | Допоміжні функції конфігурації команд Telegram | Нормалізація назв команд, обрізання описів, перевірка дублювання/конфліктів |
| `plugin-sdk/channel-policy` | Визначення політики для груп/DM | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | Відстеження статусу облікового запису | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Допоміжні функції inbound envelope | Спільні допоміжні функції route + конструкторів envelope |
| `plugin-sdk/inbound-reply-dispatch` | Допоміжні функції inbound reply | Спільні допоміжні функції record-and-dispatch |
| `plugin-sdk/messaging-targets` | Розбір цілей повідомлень | Допоміжні функції розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Допоміжні функції outbound media | Спільне завантаження outbound media |
| `plugin-sdk/outbound-runtime` | Допоміжні функції outbound runtime | Допоміжні функції outbound identity/send delegate |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні функції thread-binding | Життєвий цикл thread-binding і допоміжні функції адаптера |
| `plugin-sdk/agent-media-payload` | Застарілі допоміжні функції media payload | Конструктор agent media payload для застарілих макетів полів |
| `plugin-sdk/channel-runtime` | Застарілий shim сумісності | Лише застарілі утиліти channel runtime |
| `plugin-sdk/channel-send-result` | Типи результатів надсилання | Типи результатів відповіді |
| `plugin-sdk/runtime-store` | Постійне сховище plugin | `createPluginRuntimeStore` |
| `plugin-sdk/runtime` | Широкі допоміжні функції runtime | Допоміжні функції runtime/logging/backup/встановлення plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні функції середовища runtime | Logger/runtime env, timeout, retry та backoff helpers |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні функції runtime plugin | Допоміжні функції команд/hooks/http/interactive plugin |
| `plugin-sdk/runtime-store` | Постійне сховище плагіна | `createPluginRuntimeStore` |
| `plugin-sdk/runtime` | Широкі допоміжні функції runtime | Допоміжні функції runtime/logging/backup/plugin-install |
| `plugin-sdk/runtime-env` | Вузькі допоміжні функції середовища runtime | Logger/runtime env, допоміжні функції timeout, retry і backoff |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні функції runtime плагіна | Допоміжні функції commands/hooks/http/interactive для плагіна |
| `plugin-sdk/hook-runtime` | Допоміжні функції конвеєра hook | Спільні допоміжні функції конвеєра webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні функції lazy runtime | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні функції процесів | Спільні допоміжні функції exec |
| `plugin-sdk/cli-runtime` | Допоміжні функції runtime CLI | Форматування команд, очікування, допоміжні функції версій |
| `plugin-sdk/gateway-runtime` | Допоміжні функції gateway | Client gateway та допоміжні функції patch статусу каналу |
| `plugin-sdk/cli-runtime` | Допоміжні функції CLI runtime | Форматування команд, очікування, допоміжні функції версій |
| `plugin-sdk/gateway-runtime` | Допоміжні функції gateway | Допоміжні функції клієнта gateway і patch статусу каналу |
| `plugin-sdk/config-runtime` | Допоміжні функції конфігурації | Допоміжні функції завантаження/запису конфігурації |
| `plugin-sdk/telegram-command-config` | Допоміжні функції команд Telegram | Допоміжні функції валідації команд Telegram зі стабільним резервним режимом, коли surface контракту вбудованого Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні функції prompt approval | Payload approval exec/plugin, допоміжні функції capability/profile approval, native approval routing/runtime helpers |
| `plugin-sdk/approval-auth-runtime` | Допоміжні функції автентифікації approval | Визначення approver, автентифікація дій у тому ж чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні функції client approval | Допоміжні функції native exec approval profile/filter |
| `plugin-sdk/approval-delivery-runtime` | Допоміжні функції доставки approval | Адаптери native approval capability/delivery |
| `plugin-sdk/approval-handler-runtime` | Допоміжні функції handler approval | Спільні допоміжні функції runtime handler approval, включно із завантаженням native approval на основі capability |
| `plugin-sdk/approval-native-runtime` | Допоміжні функції цілей approval | Допоміжні функції binding native approval target/account |
| `plugin-sdk/approval-reply-runtime` | Допоміжні функції reply approval | Допоміжні функції payload reply approval exec/plugin |
| `plugin-sdk/channel-runtime-context` | Допоміжні функції runtime-context каналу | Загальні допоміжні функції register/get/watch для channel runtime-context |
| `plugin-sdk/security-runtime` | Допоміжні функції безпеки | Спільні допоміжні функції trust, DM gating, external-content і збирання secret |
| `plugin-sdk/telegram-command-config` | Допоміжні функції команд Telegram | Допоміжні функції перевірки команд Telegram зі стабільним резервним варіантом, коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні функції prompt для погоджень | Payload погодження exec/plugin, допоміжні функції approval capability/profile, допоміжні функції маршрутизації/runtime native approval |
| `plugin-sdk/approval-auth-runtime` | Допоміжні функції auth для погоджень | Визначення approver, auth для дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні функції клієнта погоджень | Допоміжні функції profile/filter для native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Допоміжні функції доставки погоджень | Адаптери native approval capability/delivery |
| `plugin-sdk/approval-gateway-runtime` | Допоміжні функції gateway для погоджень | Спільна допоміжна функція gateway-resolution для погоджень |
| `plugin-sdk/approval-handler-adapter-runtime` | Допоміжні функції адаптера погоджень | Полегшені допоміжні функції завантаження native approval adapter для гарячих точок входу каналу |
| `plugin-sdk/approval-handler-runtime` | Допоміжні функції approval handler | Ширші допоміжні функції runtime для approval handler; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні функції target для погоджень | Допоміжні функції зв’язування native approval target/account |
| `plugin-sdk/approval-reply-runtime` | Допоміжні функції reply для погоджень | Допоміжні функції payload відповіді для exec/plugin approval |
| `plugin-sdk/channel-runtime-context` | Допоміжні функції runtime-context каналу | Узагальнені допоміжні функції register/get/watch для channel runtime-context |
| `plugin-sdk/security-runtime` | Допоміжні функції безпеки | Спільні допоміжні функції довіри, DM gating, external-content і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні функції політики SSRF | Допоміжні функції allowlist хостів і політики приватної мережі |
| `plugin-sdk/ssrf-runtime` | Допоміжні функції runtime SSRF | Допоміжні функції pinned-dispatcher, guarded fetch, політики SSRF |
| `plugin-sdk/ssrf-runtime` | Допоміжні функції SSRF runtime | Pinned-dispatcher, guarded fetch, допоміжні функції політики SSRF |
| `plugin-sdk/collection-runtime` | Допоміжні функції обмеженого кешу | `pruneMapToMaxSize` |
| `plugin-sdk/diagnostic-runtime` | Допоміжні функції керування діагностикою | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
| `plugin-sdk/diagnostic-runtime` | Допоміжні функції діагностичного gating | `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/retry-runtime` | Допоміжні функції retry | `RetryConfig`, `retryAsync`, runners політик |
| `plugin-sdk/allow-from` | Форматування allowlist | `formatAllowFromLowercase` |
| `plugin-sdk/allowlist-resolution` | Зіставлення вхідних даних allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Керування командами та допоміжні функції surface команд | `resolveControlCommandGate`, допоміжні функції авторизації відправника, допоміжні функції реєстру команд |
| `plugin-sdk/secret-input` | Розбір secret input | Допоміжні функції secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні функції запитів webhook | Утиліти цілей webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні функції guard тіла webhook | Допоміжні функції читання/обмеження тіла запиту |
| `plugin-sdk/reply-runtime` | Спільний runtime відповідей | Inbound dispatch, heartbeat, planner відповідей, chunking |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні функції dispatch відповідей | Допоміжні функції finalize + dispatch provider |
| `plugin-sdk/allowlist-resolution` | Відображення вхідних даних allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Gating команд і допоміжні функції поверхні команд | `resolveControlCommandGate`, допоміжні функції авторизації відправника, допоміжні функції реєстру команд |
| `plugin-sdk/secret-input` | Розбір секретних входів | Допоміжні функції secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні функції запитів webhook | Утиліти target для webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні функції guard для тіла webhook | Допоміжні функції читання/обмеження тіла запиту |
| `plugin-sdk/reply-runtime` | Спільний runtime відповіді | Inbound dispatch, heartbeat, planner відповіді, chunking |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні функції dispatch відповіді | Допоміжні функції finalize + dispatch до провайдера |
| `plugin-sdk/reply-history` | Допоміжні функції історії відповідей | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | Планування reply reference | `createReplyReferencePlanner` |
| `plugin-sdk/reply-reference` | Планування посилань відповіді | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Допоміжні функції chunk відповіді | Допоміжні функції chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні функції сховища session | Шлях до сховища та допоміжні функції updated-at |
| `plugin-sdk/state-paths` | Допоміжні функції шляхів стану | Допоміжні функції директорій стану та OAuth |
| `plugin-sdk/routing` | Допоміжні функції маршрутизації/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, допоміжні функції нормалізації session-key |
| `plugin-sdk/status-helpers` | Допоміжні функції статусу каналу | Builders зведення стану каналу/облікового запису, типові значення runtime-state, допоміжні функції метаданих проблем |
| `plugin-sdk/session-store-runtime` | Допоміжні функції сховища сесій | Шлях сховища + допоміжні функції updated-at |
| `plugin-sdk/state-paths` | Допоміжні функції шляхів стану | Допоміжні функції каталогів state та OAuth |
| `plugin-sdk/routing` | Допоміжні функції routing/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, допоміжні функції нормалізації session-key |
| `plugin-sdk/status-helpers` | Допоміжні функції статусу каналу | Конструктори зведень статусу каналу/облікового запису, значення runtime-state за замовчуванням, допоміжні функції метаданих issue |
| `plugin-sdk/target-resolver-runtime` | Допоміжні функції target resolver | Спільні допоміжні функції target resolver |
| `plugin-sdk/string-normalization-runtime` | Допоміжні функції нормалізації рядків | Допоміжні функції нормалізації slug/рядків |
| `plugin-sdk/request-url` | Допоміжні функції URL запиту | Витягування рядкових URL з request-подібних вхідних даних |
| `plugin-sdk/run-command` | Допоміжні функції команд із тайм-аутом | Запускач команд із нормалізованими stdout/stderr |
| `plugin-sdk/param-readers` | Зчитувачі параметрів | Поширені зчитувачі параметрів tool/CLI |
| `plugin-sdk/tool-send` | Витягування tool send | Витягування канонічних полів цілі надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Допоміжні функції тимчасових шляхів | Спільні допоміжні функції шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні функції logging | 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-автентифікації provider | Допоміжні функції визначення ключа API під час runtime |
| `plugin-sdk/provider-auth-api-key` | Допоміжні функції налаштування ключа API provider | Допоміжні функції онбордингу/запису профілю для ключів API |
| `plugin-sdk/provider-auth-result` | Допоміжні функції результату автентифікації provider | Стандартний builder результату автентифікації OAuth |
| `plugin-sdk/provider-auth-login` | Допоміжні функції інтерактивного входу provider | Спільні допоміжні функції інтерактивного входу |
| `plugin-sdk/provider-env-vars` | Допоміжні функції env vars provider | Допоміжні функції пошуку env var для автентифікації provider |
| `plugin-sdk/provider-model-shared` | Спільні допоміжні функції моделей/replay provider | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні builders політик replay, допоміжні функції endpoint provider та нормалізації model-id |
| `plugin-sdk/provider-catalog-shared` | Спільні допоміжні функції каталогу provider | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-onboard` | Patches онбордингу provider | Допоміжні функції конфігурації онбордингу |
| `plugin-sdk/provider-http` | Допоміжні функції HTTP provider | Загальні допоміжні функції HTTP/можливостей endpoint provider |
| `plugin-sdk/provider-web-fetch` | Допоміжні функції web-fetch provider | Допоміжні функції реєстрації/кешу web-fetch provider |
| `plugin-sdk/provider-web-search-contract` | Допоміжні функції контракту web-search provider | Вузькі допоміжні функції контракту конфігурації/облікових даних web-search, такі як `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і setter/getter для scoped credentials |
| `plugin-sdk/provider-web-search` | Допоміжні функції web-search provider | Допоміжні функції реєстрації/кешу/runtime web-search provider |
| `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`, типи stream wrapper та спільні допоміжні функції обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/keyed-async-queue` | Упорядкована async-черга | `KeyedAsyncQueue` |
| `plugin-sdk/media-runtime` | Спільні допоміжні функції медіа | Допоміжні функції fetch/transform/store медіа, а також builders media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні функції генерації медіа | Спільні допоміжні функції failover, вибору candidate та повідомлень про відсутність моделі для генерації зображень/відео/музики |
| `plugin-sdk/media-understanding` | Допоміжні функції media-understanding | Типи provider media understanding, а також exports допоміжних функцій зображення/аудіо для provider |
| `plugin-sdk/text-runtime` | Спільні допоміжні функції тексту | Видалення тексту, видимого assistant, допоміжні функції render/chunking/table для markdown, допоміжні функції редагування, directive-tag, safe-text utilities та пов’язані допоміжні функції text/logging |
| `plugin-sdk/request-url` | Допоміжні функції URL запиту | Витягування рядкових URL із request-подібних вхідних даних |
| `plugin-sdk/run-command` | Допоміжні функції команд із таймером | Runner команд із таймером і нормалізованими stdout/stderr |
| `plugin-sdk/param-readers` | Читачі параметрів | Поширені читачі параметрів tool/CLI |
| `plugin-sdk/tool-send` | Витягування надсилання tool | Витягування канонічних полів цілі надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Допоміжні функції тимчасових шляхів | Спільні допоміжні функції шляхів для тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні функції логування | Допоміжні функції логера підсистеми та редагування чутливих даних |
| `plugin-sdk/markdown-table-runtime` | Допоміжні функції Markdown-таблиць | Допоміжні функції режимів Markdown-таблиць |
| `plugin-sdk/reply-payload` | Типи reply повідомлень | Типи payload відповіді |
| `plugin-sdk/provider-setup` | Кураторські допоміжні функції налаштування локальних/self-hosted провайдерів | Допоміжні функції виявлення/конфігурації self-hosted провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні функції налаштування self-hosted провайдерів, сумісних з OpenAI | Ті самі допоміжні функції виявлення/конфігурації self-hosted провайдерів |
| `plugin-sdk/provider-auth-runtime` | Допоміжні функції runtime auth провайдера | Допоміжні функції визначення API-ключа в runtime |
| `plugin-sdk/provider-auth-api-key` | Допоміжні функції налаштування API-ключа провайдера | Допоміжні функції онбордингу/profile-write для API-ключів |
| `plugin-sdk/provider-auth-result` | Допоміжні функції auth-result провайдера | Стандартний конструктор OAuth auth-result |
| `plugin-sdk/provider-auth-login` | Допоміжні функції інтерактивного входу провайдера | Спільні допоміжні функції інтерактивного входу |
| `plugin-sdk/provider-env-vars` | Допоміжні функції env vars провайдера | Допоміжні функції пошуку auth env-var провайдера |
| `plugin-sdk/provider-model-shared` | Спільні допоміжні функції моделей/replay провайдера | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори replay-policy, допоміжні функції endpoint провайдера та нормалізації model-id |
| `plugin-sdk/provider-catalog-shared` | Спільні допоміжні функції каталогу провайдера | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-onboard` | Patches онбордингу провайдера | Допоміжні функції конфігурації онбордингу |
| `plugin-sdk/provider-http` | Допоміжні функції HTTP провайдера | Узагальнені допоміжні функції HTTP/можливостей endpoint для провайдера |
| `plugin-sdk/provider-web-fetch` | Допоміжні функції web-fetch провайдера | Допоміжні функції реєстрації/кешу web-fetch провайдера |
| `plugin-sdk/provider-web-search-contract` | Допоміжні функції контракту web-search провайдера | Вузькі допоміжні функції контракту конфігурації/облікових даних web-search, такі як `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped credential setters/getters |
| `plugin-sdk/provider-web-search` | Допоміжні функції web-search провайдера | Допоміжні функції реєстрації/кешу/runtime для web-search провайдера |
| `plugin-sdk/provider-tools` | Допоміжні функції сумісності tool/schema провайдера | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика, а також допоміжні функції сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | Допоміжні функції використання провайдера | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` та інші допоміжні функції використання провайдерів |
| `plugin-sdk/provider-stream` | Допоміжні функції обгортки потоку провайдера | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні функції обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/keyed-async-queue` | Впорядкована асинхронна черга | `KeyedAsyncQueue` |
| `plugin-sdk/media-runtime` | Спільні допоміжні функції media | Допоміжні функції fetch/transform/store для media, а також конструктори media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні функції media-generation | Спільні допоміжні функції failover, вибір кандидатів і повідомлення про відсутні моделі для генерації зображень/відео/музики |
| `plugin-sdk/media-understanding` | Допоміжні функції media-understanding | Типи провайдерів media-understanding, а також орієнтовані на провайдера допоміжні функції для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні функції тексту | Видалення видимого для асистента тексту, render/chunking/table для markdown, допоміжні функції редагування чутливих даних, directive-tag, безпечний текст та пов’язані допоміжні функції тексту/логування |
| `plugin-sdk/text-chunking` | Допоміжні функції chunking тексту | Допоміжна функція chunking вихідного тексту |
| `plugin-sdk/speech` | Допоміжні функції speech | Типи provider speech, а також exports допоміжних функцій directive, registry і validation для provider |
| `plugin-sdk/speech-core` | Спільне ядро speech | Типи provider speech, registry, directives, normalization |
| `plugin-sdk/realtime-transcription` | Допоміжні функції realtime transcription | Типи provider та допоміжні функції registry |
| `plugin-sdk/realtime-voice` | Допоміжні функції realtime voice | Типи provider та допоміжні функції registry |
| `plugin-sdk/image-generation-core` | Спільне ядро image-generation | Типи image-generation, failover, auth та допоміжні функції registry |
| `plugin-sdk/music-generation` | Допоміжні функції music-generation | Типи provider/request/result для генерації музики |
| `plugin-sdk/music-generation-core` | Спільне ядро music-generation | Типи music-generation, допоміжні функції failover, пошуку provider та розбору model-ref |
| `plugin-sdk/video-generation` | Допоміжні функції video-generation | Типи provider/request/result для генерації відео |
| `plugin-sdk/video-generation-core` | Спільне ядро video-generation | Типи video-generation, допоміжні функції failover, пошуку provider та розбору model-ref |
| `plugin-sdk/interactive-runtime` | Допоміжні функції інтерактивних відповідей | Нормалізація/зведення payload інтерактивних відповідей |
| `plugin-sdk/speech` | Допоміжні функції speech | Типи провайдерів speech, а також орієнтовані на провайдера допоміжні функції directive, registry і validation |
| `plugin-sdk/speech-core` | Спільне ядро speech | Типи провайдерів speech, registry, directives, нормалізація |
| `plugin-sdk/realtime-transcription` | Допоміжні функції realtime transcription | Типи провайдерів і допоміжні функції registry |
| `plugin-sdk/realtime-voice` | Допоміжні функції realtime voice | Типи провайдерів і допоміжні функції registry |
| `plugin-sdk/image-generation-core` | Спільне ядро image-generation | Типи image-generation, failover, auth і допоміжні функції registry |
| `plugin-sdk/music-generation` | Допоміжні функції music-generation | Типи провайдера/запиту/результату для генерації музики |
| `plugin-sdk/music-generation-core` | Спільне ядро music-generation | Типи music-generation, допоміжні функції failover, пошук провайдера та розбір model-ref |
| `plugin-sdk/video-generation` | Допоміжні функції video-generation | Типи провайдера/запиту/результату для генерації відео |
| `plugin-sdk/video-generation-core` | Спільне ядро video-generation | Типи video-generation, допоміжні функції failover, пошук провайдера та розбір model-ref |
| `plugin-sdk/interactive-runtime` | Допоміжні функції інтерактивної відповіді | Нормалізація/скорочення payload інтерактивної відповіді |
| `plugin-sdk/channel-config-primitives` | Примітиви конфігурації каналу | Вузькі примітиви channel config-schema |
| `plugin-sdk/channel-config-writes` | Допоміжні функції запису конфігурації каналу | Допоміжні функції авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільний prelude каналу | Exports спільного prelude channel plugin |
| `plugin-sdk/channel-plugin-common` | Спільна преамбула каналу | Експорти спільної преамбули channel plugin |
| `plugin-sdk/channel-status` | Допоміжні функції статусу каналу | Спільні допоміжні функції snapshot/summary статусу каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні функції конфігурації allowlist | Допоміжні функції редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Допоміжні функції доступу до group | Спільні допоміжні функції прийняття рішень щодо доступу до group |
| `plugin-sdk/direct-dm` | Допоміжні функції direct-DM | Спільні допоміжні функції автентифікації/guard для direct-DM |
| `plugin-sdk/extension-shared` | Спільні допоміжні функції extension | Примітиви passive-channel/status та ambient proxy helper |
| `plugin-sdk/webhook-targets` | Допоміжні функції цілей webhook | Реєстр цілей webhook і допоміжні функції встановлення маршрутів |
| `plugin-sdk/group-access` | Допоміжні функції доступу до груп | Спільні допоміжні функції ухвалення рішень group-access |
| `plugin-sdk/direct-dm` | Допоміжні функції direct-DM | Спільні допоміжні функції auth/guard для direct-DM |
| `plugin-sdk/extension-shared` | Спільні допоміжні функції extension | Примітиви пасивного каналу/статусу та ambient proxy helper |
| `plugin-sdk/webhook-targets` | Допоміжні функції target для webhook | Допоміжні функції реєстру webhook target і встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні функції шляхів webhook | Допоміжні функції нормалізації шляхів webhook |
| `plugin-sdk/web-media` | Спільні допоміжні функції web media | Допоміжні функції завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторний експорт Zod | Повторно експортований `zod` для споживачів plugin SDK |
| `plugin-sdk/memory-core` | Допоміжні функції вбудованого memory-core | Surface допоміжних функцій memory manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime рушія пам’яті | Фасад runtime індексації/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Рушій foundation хоста пам’яті | Exports рушія foundation хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Рушій embeddings хоста пам’яті | Exports рушія embeddings хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-qmd` | Рушій QMD хоста пам’яті | Exports рушія QMD хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Рушій сховища хоста пам’яті | Exports рушія сховища хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні функції multimodal хоста пам’яті | Допоміжні функції multimodal хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні функції запитів хоста пам’яті | Допоміжні функції запитів хоста пам’яті |
| `plugin-sdk/web-media` | Спільні допоміжні функції web media | Допоміжні функції завантаження віддалених/локальних media |
| `plugin-sdk/zod` | Повторний експорт Zod | Повторно експортований `zod` для споживачів SDK плагінів |
| `plugin-sdk/memory-core` | Допоміжні функції вбудованого memory-core | Поверхня допоміжних функцій memory manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Runtime-фасад memory engine | Runtime-фасад індексації/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Foundation engine хоста пам’яті | Експорти foundation engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Embedding engine хоста пам’яті | Експорти embedding engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-qmd` | QMD engine хоста пам’яті | Експорти QMD engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Storage engine хоста пам’яті | Експорти storage engine хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні функції хоста пам’яті | Мультимодальні допоміжні функції хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні функції query хоста пам’яті | Допоміжні функції query хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні функції secret хоста пам’яті | Допоміжні функції secret хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні функції журналу подій хоста пам’яті | Допоміжні функції журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні функції статусу хоста пам’яті | Допоміжні функції статусу хоста пам’яті |
@ -344,31 +352,32 @@ OpenClaw перейшов від широкого шару зворотної с
| `plugin-sdk/memory-host-core` | Псевдонім core runtime хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних функцій core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Псевдонім журналу подій хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних функцій журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Псевдонім файлів/runtime хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних функцій файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Допоміжні функції керованого markdown | Спільні допоміжні функції керованого markdown для plugin, суміжних із memory |
| `plugin-sdk/memory-host-search` | Фасад пошуку active memory | Лінивий фасад runtime search-manager active memory |
| `plugin-sdk/memory-host-markdown` | Допоміжні функції керованого markdown | Спільні допоміжні функції керованого markdown для суміжних із пам’яттю плагінів |
| `plugin-sdk/memory-host-search` | Фасад пошуку активної пам’яті | Лінивий runtime-фасад search-manager активної пам’яті |
| `plugin-sdk/memory-host-status` | Псевдонім статусу хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних функцій статусу хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Допоміжні функції вбудованого memory-lancedb | Surface допоміжних функцій memory-lancedb |
| `plugin-sdk/testing` | Тестові утиліти | Допоміжні функції та mocks для тестування |
| `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-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`,
Цей список усе ще містить деякі шви допоміжних функцій вбудованих плагінів,
такі як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`,
`plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Вони й далі експортуються для
підтримки та сумісності вбудованих plugin, але навмисно
не включені до таблиці поширеної міграції й не є рекомендованою ціллю для
нового коду plugin.
підтримки та сумісності вбудованих плагінів, але навмисно не включені до
таблиці поширеної міграції й не є рекомендованою ціллю для нового коду
плагінів.
Те саме правило застосовується до інших сімейств вбудованих допоміжних функцій, таких як:
Те саме правило застосовується до інших сімейств допоміжних функцій для
вбудованих компонентів, таких як:
- допоміжні функції підтримки 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`
- допоміжні функції підтримки браузера: `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`
- Matrix: `plugin-sdk/matrix*`
- LINE: `plugin-sdk/line*`
- IRC: `plugin-sdk/irc*`
- surfaces вбудованих helper/plugin, як-от `plugin-sdk/googlechat`,
- поверхні вбудованих helper/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`,
@ -377,23 +386,23 @@ 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` наразі розкриває вузьку surface допоміжних функцій токенів:
`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.
## Часова шкала видалення
## Графік видалення
| Коли | Що відбувається |
| ---------------------- | ----------------------------------------------------------------------- |
| **Зараз** | Застарілі поверхні видають попередження під час runtime |
| **Наступний мажорний випуск** | Застарілі поверхні буде видалено; plugins, які все ще їх використовують, перестануть працювати |
| **Зараз** | Застарілі поверхні виводять попередження під час виконання |
| **Наступний мажорний реліз** | Застарілі поверхні буде видалено; плагіни, які все ще їх використовують, перестануть працювати |
Усі core plugins уже перенесено. Зовнішнім plugin слід перейти
до наступного мажорного випуску.
Усі core-плагіни вже мігровано. Зовнішнім плагінам слід виконати міграцію
до наступного мажорного релізу.
## Тимчасове приглушення попереджень
@ -408,9 +417,9 @@ OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
## Пов’язане
- [Початок роботи](/uk/plugins/building-plugins) — створіть свій перший plugin
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів subpath
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення plugin каналів
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення plugin provider
- [Внутрішня будова plugin](/uk/plugins/architecture) — глибокий розбір архітектури
- [Маніфест plugin](/uk/plugins/manifest) — довідник зі схеми маніфесту
- [Початок роботи](/uk/plugins/building-plugins) — створіть свій перший плагін
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів за subpath
- [Плагіни каналів](/uk/plugins/sdk-channel-plugins) — створення плагінів каналів
- [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins) — створення плагінів провайдерів
- [Внутрішня будова плагінів](/uk/plugins/architecture) — глибоке занурення в архітектуру
- [Маніфест плагіна](/uk/plugins/manifest) — довідник зі схеми маніфесту

View File

@ -1,33 +1,33 @@
---
read_when:
- Вам потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібен довідник щодо всіх методів реєстрації в OpenClawPluginApi
- Потрібно знати, з якого підшляху SDK імпортувати
- Потрібен довідник для всіх методів реєстрації в OpenClawPluginApi
- Ви шукаєте конкретний експорт SDK
sidebarTitle: SDK Overview
summary: Карта імпорту, довідник API реєстрації та архітектура SDK
title: Огляд Plugin SDK
x-i18n:
generated_at: "2026-04-07T18:43:53Z"
generated_at: "2026-04-07T20:09:50Z"
model: gpt-5.4
provider: openai
source_hash: 68d9b78dab757747cfa0e315376af72040ef79453129c0fa051c4c9dd948060f
source_hash: c5a41bd82d165dfbb7fbd6e4528cf322e9133a51efe55fa8518a7a0a626d9d30
source_path: plugins/sdk-overview.md
workflow: 15
---
# Огляд Plugin SDK
Plugin SDK — це типізований контракт між plugins і ядром. Ця сторінка є
Plugin SDK — це типізований контракт між plugins і core. Ця сторінка є
довідником щодо **що імпортувати** і **що можна реєструвати**.
<Tip>
**Шукаєте практичний посібник?**
- Перший plugin? Почніть із [Getting Started](/uk/plugins/building-plugins)
- Plugin каналу? Див. [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Plugin провайдера? Див. [Provider Plugins](/uk/plugins/sdk-provider-plugins)
- Channel plugin? Див. [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Provider plugin? Див. [Provider Plugins](/uk/plugins/sdk-provider-plugins)
</Tip>
## Угода про імпорт
## Угода щодо імпорту
Завжди імпортуйте з конкретного підшляху:
@ -36,25 +36,25 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
Кожен підшлях — це невеликий, самодостатній модуль. Це пришвидшує запуск і
запобігає проблемам із циклічними залежностями. Для специфічних для каналу
допоміжних засобів entry/build віддавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core` залишайте для
ширшої парасолькової поверхні та спільних допоміжних засобів, таких як
Кожен підшлях — це невеликий самодостатній модуль. Це зберігає швидкий запуск і
запобігає проблемам із циклічними залежностями. Для специфічних для channel
допоміжних засобів entry/build віддавайте перевагу `openclaw/plugin-sdk/channel-core`; `openclaw/plugin-sdk/core`
залишайте для ширшої узагальненої поверхні та спільних допоміжних засобів, таких як
`buildChannelConfigSchema`.
Не додавайте й не використовуйте зручні шари з назвами провайдерів, як-от
Не додавайте і не використовуйте зручні шви з назвами provider, такі як
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або
допоміжні шари з брендуванням каналів. Вбудовані plugins мають компонувати загальні
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а ядро
має або використовувати ці локальні для plugin barrel-файли, або додати вузький загальний SDK
контракт, коли потреба справді є міжканальною.
допоміжні шви з брендингом channel. Bundled plugins мають компонувати загальні
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а core
має або використовувати ці локальні barrel-файли plugin, або додавати вузький загальний SDK
контракт, коли потреба справді є міжchannel-ною.
Згенерована карта експортів усе ще містить невеликий набір допоміжних
шарів для вбудованих plugins, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
швів bundled-plugin, таких як `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Ці
підшляхи існують лише для підтримки вбудованих plugins і сумісності; вони
навмисно не включені до загальної таблиці нижче й не є рекомендованим
підшляхи існують лише для підтримки та сумісності bundled-plugin; вони
навмисно не включені до загальної таблиці нижче і не є рекомендованим
шляхом імпорту для нових сторонніх plugins.
## Довідник підшляхів
@ -62,11 +62,11 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із
понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
Зарезервовані допоміжні підшляхи для вбудованих plugins усе ще з’являються в цьому згенерованому списку.
Ставтеся до них як до деталей реалізації/поверхонь сумісності, якщо якась сторінка документації
явно не позначає один із них як публічний.
Зарезервовані допоміжні підшляхи bundled-plugin усе ще з’являються в цьому
згенерованому списку. Розглядайте їх як поверхні деталей реалізації/сумісності, якщо лише сторінка документації
явно не просуває одну з них як публічну.
### Вхід plugin
### Plugin entry
| Subpath | Ключові експорти |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
@ -76,230 +76,232 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Підшляхи каналів">
<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` | Спільні допоміжні засоби майстра налаштування, запити списку дозволених, конструктори статусу налаштування |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, підказки allowlist, побудовники стану налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби для мультиакаунтної конфігурації/гейтінгу дій, допоміжні засоби резервного переходу до акаунта за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації ідентифікатора акаунта |
| `plugin-sdk/account-resolution` | Пошук акаунта + допоміжні засоби резервного переходу до значення за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку акаунтів/дій з акаунтами |
| `plugin-sdk/account-core` | Допоміжні засоби для конфігурації/гейтів дій з кількома акаунтами та резервного використання акаунта за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id |
| `plugin-sdk/account-resolution` | Пошук акаунта + допоміжні засоби резервного використання акаунта за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списків акаунтів/дій з акаунтами |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Типи схем конфігурації каналу |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервною сумісністю для вбудованого контракту |
| `plugin-sdk/channel-config-schema` | Типи схеми конфігурації channel |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram з резервною bundled-contract підтримкою |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби побудови вхідного маршруту та envelope |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних повідомлень + побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та диспетчеризації вхідних повідомлень |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби для вихідної ідентичності/делегатів надсилання |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок потоків і адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий конструктор медіа-пейлоаду агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби для прив’язки розмови/потоку, pairing і налаштованих прив’язок |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення політик груп у runtime |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімків/зведень статусу каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви schema конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти channel plugin |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби читання/редагування конфігурації списку дозволених |
| `plugin-sdk/group-access` | Спільні допоміжні засоби прийняття рішень щодо групового доступу |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби авторизації/захисту прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби нормалізації/зведення пейлоадів інтерактивних відповідей |
| `plugin-sdk/channel-inbound` | Вхідний debounce, зіставлення згадок, допоміжні засоби політики згадок і допоміжні засоби envelope |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної ідентичності/делегування надсилання |
| `plugin-sdk/thread-bindings-runtime` | Життєвий цикл thread-binding і допоміжні засоби adapter |
| `plugin-sdk/agent-media-payload` | Legacy побудовник agent media payload |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби binding розмов/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` | Вузькі примітиви схеми конфігурації channel |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації channel |
| `plugin-sdk/channel-plugin-common` | Спільні експорти prelude plugin channel |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби прийняття рішень щодо group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби нормалізації/скорочення payload інтерактивних відповідей |
| `plugin-sdk/channel-inbound` | Допоміжні засоби debounce вхідних повідомлень, зіставлення mention, політики mention і envelope |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контракту каналу |
| `plugin-sdk/channel-feedback` | Підключення відгуків/реакцій |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби секретного контракту, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, а також типи цілей секретів |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення target |
| `plugin-sdk/channel-contract` | Типи контракту channel |
| `plugin-sdk/channel-feedback` | Підключення feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret target |
</Accordion>
<Accordion title="Підшляхи провайдерів">
<Accordion title="Підшляхи provider">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI |
| `plugin-sdk/cli-backend` | Значення за замовчуванням бекенда CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключів у runtime для plugins провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю для API-ключів, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний конструктор результату OAuth-автентифікації |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для plugins провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env vars для автентифікації провайдера |
| `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` | Стандартний побудовник результату OAuth auth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider plugins |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env vars для auth provider |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори replay-policy, допоміжні засоби 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 провайдера |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування web-fetch провайдерів |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setter/getter облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime web-search провайдерів |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/endpoint capability для provider |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби contract для конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування web-fetch provider |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби contract для конфігурації/облікових даних web-search, такі як `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setter/getter для облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime web-search provider |
| `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-onboard` | Допоміжні засоби патчів конфігурації онбордингу |
| `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-onboard` | Допоміжні засоби patch конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
</Accordion>
<Accordion title="Підшляхи автентифікації та безпеки">
<Accordion title="Підшляхи auth і безпеки">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, допоміжні засоби авторизації відправника |
| `plugin-sdk/approval-auth-runtime` | Визначення approver-а та допоміжні засоби action-auth у тому самому чаті |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і auth дій у тому самому chat |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери доставлення/можливостей native approval |
| `plugin-sdk/approval-handler-runtime` | Спільні допоміжні засоби runtime обробника approval, зокрема capability-driven завантаження native approval |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілей native approval + прив’язки акаунтів |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби пейлоаду відповіді для exec/plugin approval |
| `plugin-sdk/command-auth-native` | Native command auth + допоміжні засоби native session-target |
| `plugin-sdk/approval-delivery-runtime` | Adapter-и можливостей/доставки native approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Легкі допоміжні засоби завантаження adapter native approval для гарячих entrypoint-ів channel |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для handler approval; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `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 auth команд + допоміжні засоби native session-target |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команд і командної поверхні |
| `plugin-sdk/command-surface` | Нормалізація тіла команд і допоміжні засоби поверхні команд |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь секретів каналів/plugins |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь secret channel/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього контенту та збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби host allowlist і політики SSRF для приватних мереж |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, SSRF-захищеного fetch і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору секретного вводу |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/цілей webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру тіла запиту/таймаутів |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього контенту та збирання secret |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби allowlist хостів і SSRF policy приватних мереж |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, fetch із SSRF-захистом і SSRF policy |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби webhook request/target |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру body request/timeout |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/логування/резервних копій/встановлення plugins |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби env runtime, 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 для plugins |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби пайплайна webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy import/binding runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби для команд/hook/http/interactive plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline для webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/binding runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування та версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта gateway і патчів статусу каналів |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби client gateway і patch статусу channel |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису конфігурації |
| `plugin-sdk/telegram-command-config` | Нормалізація назв/описів команд Telegram і перевірки дублювання/конфліктів, навіть якщо поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, конструктори approval-capability, допоміжні засоби auth/profile, native routing/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби вхідного/reply runtime, chunking, dispatch, heartbeat, planner відповідей |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize для відповідей |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби коротковіконної історії відповідей, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/telegram-command-config` | Нормалізація name/description команд Telegram і перевірки дублікатів/конфліктів, навіть коли bundled Telegram contract surface недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники approval-capability, допоміжні засоби auth/profile, native routing/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, heartbeat, планувальник reply |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize для reply |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби short-window reply-history, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху до session store + updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів до каталогів state/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби прив’язки route/session-key/account, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу каналів/акаунтів, значення 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` | Поширені читачі параметрів tools/CLI |
| `plugin-sdk/tool-send` | Витяг канонічних полів цілей надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування конфіденційних даних |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби path сховища сесій + updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби path для state/OAuth директорій |
| `plugin-sdk/routing` | Допоміжні засоби для route/session-key/account binding, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби summary статусу channel/account, стандарти runtime-state і допоміжні засоби метаданих issues |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби resolver target |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/string |
| `plugin-sdk/request-url` | Витягування рядкових URL із fetch/request-подібних вхідних даних |
| `plugin-sdk/run-command` | Запуск команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Загальні рідери параметрів tool/CLI |
| `plugin-sdk/tool-send` | Витягування канонічних полів target надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби path тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування чутливих даних |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму markdown-таблиць |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису JSON state |
| `plugin-sdk/file-lock` | Реентрантні допоміжні засоби file-lock |
| `plugin-sdk/file-lock` | Допоміжні засоби повторно вхідних file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби disk-backed dedupe cache |
| `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/session ACP і reply-dispatch |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви schema конфігурації runtime агента |
| `plugin-sdk/boolean-param` | Гнучкий читач булевих параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення небезпечних імен |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів pairing |
| `plugin-sdk/extension-shared` | Спільні примітиви пасивного каналу, статусу й ambient proxy helper |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби команд `/models` і відповідей провайдерів |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skills |
| `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/session і reply-dispatch |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime agent |
| `plugin-sdk/boolean-param` | Рідер вільних boolean-параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення відповідності небезпечних імен |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та pairing token |
| `plugin-sdk/extension-shared` | Спільні примітиви для passive-channel, status і ambient proxy helper |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді `/models` command/provider |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби для переліку Skills command |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize native команд |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `plugin-sdk/infra-runtime` | Допоміжні засоби системних подій/heartbeat |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби bounded cache |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців і подій |
| `plugin-sdk/error-runtime` | Допоміжні засоби графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби wrapped fetch, proxy і pinned lookup |
| `plugin-sdk/error-runtime` | Граф помилок, форматування, спільні допоміжні засоби класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Обгорнутий fetch, proxy і допоміжні засоби pinned lookup |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і SCP host |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і виконавця retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогів на основі конфігурації |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і виконання retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби директорії/ідентичності/workspace agent |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів директорій на основі конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store медіа плюс конструктори медіа-пейлоадів |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибір кандидатів і повідомлення про відсутню модель |
| `plugin-sdk/media-understanding` | Типи провайдерів Media understanding плюс орієнтовані на провайдерів експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби для тексту/markdown/логування, такі як видалення видимого асистенту тексту, допоміжні засоби render/chunking/table для markdown, редагування конфіденційних даних, допоміжні засоби тегів директив і безпечного тексту |
| `plugin-sdk/media-understanding` | Типи provider для розуміння медіа, а також provider-oriented експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби тексту/markdown/logging, такі як видалення тексту, видимого помічнику, допоміжні засоби render/chunking/table для markdown, редагування чутливих даних, допоміжні засоби тегів директив і утиліти safe-text |
| `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту |
| `plugin-sdk/speech` | Типи speech-провайдерів плюс орієнтовані на провайдерів допоміжні засоби директив, реєстру та валідації |
| `plugin-sdk/speech-core` | Спільні типи speech-провайдерів, реєстру, директив і допоміжні засоби нормалізації |
| `plugin-sdk/realtime-transcription` | Типи провайдерів realtime transcription і допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Типи провайдерів realtime voice і допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні засоби failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошук провайдерів і розбір model-ref |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошук провайдерів і розбір model-ref |
| `plugin-sdk/webhook-targets` | Реєстр цілей webhook і допоміжні засоби встановлення маршрутів |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляхів webhook |
| `plugin-sdk/speech` | Типи speech provider, а також provider-oriented допоміжні засоби для директив, реєстру й валідації |
| `plugin-sdk/speech-core` | Спільні типи speech provider, а також допоміжні засоби реєстру, директив і нормалізації |
| `plugin-sdk/realtime-transcription` | Типи provider для realtime transcription і допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Типи provider для realtime voice і допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи provider для генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи image-generation, а також допоміжні засоби failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи provider/request/result для генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи music-generation, допоміжні засоби failover, пошук provider і розбір model-ref |
| `plugin-sdk/video-generation` | Типи provider/request/result для генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи video-generation, допоміжні засоби failover, пошук provider і розбір model-ref |
| `plugin-sdk/webhook-targets` | Реєстр webhook target і допоміжні засоби встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації webhook path |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Реекспортований `zod` для користувачів Plugin SDK |
| `plugin-sdk/zod` | Повторний експорт `zod` для споживачів plugin SDK |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
<Accordion title="Підшляхи пам’яті">
<Accordion title="Підшляхи memory">
| Subpath | Ключові експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI helper-ів |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Експорти embedding engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні засоби multimodal хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби query хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Вендорно-нейтральний псевдонім для допоміжних засобів core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Вендорно-нейтральний псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Вендорно-нейтральний псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби managed-markdown для plugins, суміжних із пам’яттю |
| `plugin-sdk/memory-host-search` | Фасад runtime активної пам’яті для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Вендорно-нейтральний псевдонім для допоміжних засобів статусу хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів вбудованого memory-lancedb |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI helper-ів |
| `plugin-sdk/memory-core-engine-runtime` | Runtime facade індексації/пошуку memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine для host memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Експорти embedding engine для host memory |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine для host memory |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine для host memory |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби для host memory |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів для host memory |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret для host memory |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій для host memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу для host memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби runtime CLI для host memory |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime для host memory |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби file/runtime для host memory |
| `plugin-sdk/memory-host-core` | Vendor-neutral псевдонім для допоміжних засобів core runtime host memory |
| `plugin-sdk/memory-host-events` | Vendor-neutral псевдонім для допоміжних засобів журналу подій host memory |
| `plugin-sdk/memory-host-files` | Vendor-neutral псевдонім для допоміжних засобів file/runtime host memory |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби managed-markdown для plugins, суміжних із memory |
| `plugin-sdk/memory-host-search` | Active memory runtime facade для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Vendor-neutral псевдонім для допоміжних засобів статусу host memory |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb |
</Accordion>
<Accordion title="Зарезервовані підшляхи вбудованих helper-ів">
| Family | Поточні підшляхи | Призначення |
<Accordion title="Зарезервовані підшляхи bundled-helper">
| Family | Current subpaths | Intended use |
| --- | --- | --- |
| 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` | Поверхня helper-ів/runtime вбудованого Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня helper-ів/runtime вбудованого LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня helper-ів вбудованого IRC |
| Channel-specific helpers | `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` | Шари helper-ів/сумісності для вбудованих каналів |
| Auth/plugin-specific helpers | `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` | Шари helper-ів для вбудованих функцій/plugins; `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` | Допоміжні засоби підтримки 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` |
</Accordion>
</AccordionGroup>
## API реєстрації
Колбек `register(api)` отримує об’єкт `OpenClawPluginApi` з такими
Колбек `register(api)` отримує об’єкт `OpenClawPluginApi` із такими
методами:
### Реєстрація можливостей
@ -307,53 +309,53 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| Method | Що реєструє |
| ------------------------------------------------ | ------------------------------- |
| `api.registerProvider(...)` | Текстовий inference (LLM) |
| `api.registerCliBackend(...)` | Локальний inference-бекенд CLI |
| `api.registerCliBackend(...)` | Локальний CLI backend inference |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова realtime transcription |
| `api.registerRealtimeVoiceProvider(...)` | Двосторонні сесії realtime voice |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова transcription realtime |
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні сеанси voice realtime |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
| `api.registerWebFetchProvider(...)` | Provider web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Web search |
### Tools і команди
### Інструменти та команди
| Method | Що реєструє |
| ------------------------------- | -------------------------------------------- |
| `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) |
| `api.registerTool(tool, opts?)` | Інструмент agent (обов’язковий або `{ optional: true }`) |
| `api.registerCommand(def)` | Користувацька команда (обходить LLM) |
### Інфраструктура
| 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.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із пам’яттю |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання пам’яті |
| Method | Що реєструє |
| ---------------------------------------------- | ------------------------------------ |
| `api.registerHook(events, handler, opts?)` | Event hook |
| `api.registerHttpRoute(params)` | Gateway HTTP endpoint |
| `api.registerGatewayMethod(name, handler)` | Gateway RPC method |
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
| `api.registerService(service)` | Фонова служба |
| `api.registerInteractiveHandler(registration)` | Інтерактивний handler |
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із memory |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання memory |
Зарезервовані простори імен адміністратора ядра (`config.*`, `exec.approvals.*`, `wizard.*`,
Зарезервовані простори імен core admin (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди залишаються `operator.admin`, навіть якщо plugin намагається призначити
вужчу область методу gateway. Для методів, що належать plugin, віддавайте перевагу префіксам,
специфічним для plugin.
вужчу область gateway method. Для методів, що належать plugin,
віддавайте перевагу префіксам, специфічним для plugin.
### Метадані реєстрації CLI
`api.registerCli(registrar, opts?)` приймає два види метаданих верхнього рівня:
`api.registerCli(registrar, opts?)` приймає два типи метаданих верхнього рівня:
- `commands`: явні корені команд, що належать registrar
- `descriptors`: дескриптори команд на етапі розбору, які використовуються для кореневої довідки CLI,
маршрутизації та lazy-реєстрації plugin CLI
- `commands`: явні корені команд, якими володіє registrar
- `descriptors`: дескриптори команд на етапі парсингу, що використовуються для кореневої довідки CLI,
маршрутизації та лінивої реєстрації CLI plugin
Якщо ви хочете, щоб команда plugin залишалася lazy-loaded у звичайному шляху кореневого CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, відкритий цим
Якщо ви хочете, щоб команда plugin залишалася ліниво завантажуваною у звичайному кореневому шляху CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, який відкриває цей
registrar.
```typescript
@ -366,7 +368,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
description: "Керування акаунтами Matrix, верифікацією, пристроями та станом профілю",
description: "Керуйте акаунтами Matrix, верифікацією, пристроями та станом профілю",
hasSubcommands: true,
},
],
@ -374,127 +376,127 @@ api.registerCli(
);
```
Використовуйте лише `commands`, якщо вам не потрібна lazy-реєстрація кореневого CLI.
Цей сумісний eager-шлях і далі підтримується, але він не встановлює
placeholder-и на основі descriptor для lazy loading на етапі розбору.
Використовуйте лише `commands`, коли вам не потрібна лінива реєстрація кореневого CLI.
Цей eager шлях сумісності залишається підтримуваним, але він не встановлює
placeholder-и на основі descriptors для лінивого завантаження під час парсингу.
### Реєстрація CLI backend
### Реєстрація backend CLI
`api.registerCliBackend(...)` дозволяє plugin керувати конфігурацією за замовчуванням для локального
CLI backend AI, такого як `codex-cli`.
`api.registerCliBackend(...)` дає plugin змогу володіти стандартною конфігурацією для локального
backend AI CLI, такого як `codex-cli`.
- `id` backend стає префіксом провайдера в model ref, наприклад `codex-cli/gpt-5`.
- `id` backend стає префіксом provider у model ref, наприклад `codex-cli/gpt-5`.
- `config` backend використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Конфігурація користувача все одно має пріоритет. OpenClaw зливає `agents.defaults.cliBackends.<id>` поверх
значення за замовчуванням plugin перед запуском CLI.
- Використовуйте `normalizeConfig`, коли backend потребує переписування сумісності після злиття
- Конфігурація користувача все одно має пріоритет. OpenClaw об’єднує `agents.defaults.cliBackends.<id>` поверх
стандартів plugin перед запуском CLI.
- Використовуйте `normalizeConfig`, коли backend потребує переписування для сумісності після злиття
(наприклад, нормалізації старих форм прапорців).
### Ексклюзивні слоти
| Method | Що реєструє |
| ------------------------------------------ | ------------------------------------ |
| `api.registerContextEngine(id, factory)` | Context engine (лише один активний одночасно) |
| `api.registerMemoryCapability(capability)` | Єдину можливість пам’яті |
| `api.registerMemoryPromptSection(builder)` | Конструктор розділу prompt пам’яті |
| `api.registerMemoryFlushPlan(resolver)` | Резолвер плану flush для пам’яті |
| `api.registerMemoryRuntime(runtime)` | Адаптер runtime пам’яті |
| `api.registerContextEngine(id, factory)` | Context engine (одночасно активний лише один) |
| `api.registerMemoryCapability(capability)` | Єдину можливість memory |
| `api.registerMemoryPromptSection(builder)` | Побудовник розділу prompt memory |
| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush memory |
| `api.registerMemoryRuntime(runtime)` | Adapter runtime memory |
### Адаптери embedding для пам’яті
### Адаптери embedding для memory
| Method | Що реєструє |
| ---------------------------------------------- | --------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embedding пам’яті для активного plugin |
| Method | Що реєструє |
| ---------------------------------------------- | ----------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter embedding для memory активного plugin |
- `registerMemoryCapability` — рекомендований API ексклюзивного plugin пам’яті.
- `registerMemoryCapability`це рекомендований API ексклюзивного memory-plugin.
- `registerMemoryCapability` також може надавати `publicArtifacts.listArtifacts(...)`,
щоб супровідні plugins могли споживати експортовані артефакти пам’яті через
`openclaw/plugin-sdk/memory-host-core`, а не звертатися до приватної
структури конкретного plugin пам’яті.
щоб companion plugins могли споживати експортовані memory artifacts через
`openclaw/plugin-sdk/memory-host-core` замість звернення до приватного
layout конкретного memory plugin.
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` і
`registerMemoryRuntime` — це застарілі, але сумісні API ексклюзивного plugin пам’яті.
- `registerMemoryEmbeddingProvider` дозволяє активному plugin пам’яті зареєструвати один
або кілька id адаптерів embedding (наприклад, `openai`, `gemini` або власний
id, визначений plugin).
- Користувацька конфігурація, така як `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, визначається відносно цих зареєстрованих
id адаптерів.
`registerMemoryRuntime` — це legacy-сумісні API ексклюзивного memory-plugin.
- `registerMemoryEmbeddingProvider` дає активному memory plugin змогу зареєструвати один
або більше id adapter embedding (наприклад, `openai`, `gemini` або власний id,
визначений plugin).
- Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, визначається відносно зареєстрованих id
цих adapter.
### Події та життєвий цикл
| Method | Що робить |
| -------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу |
| `api.onConversationBindingResolved(handler)` | Колбек прив’язки розмови |
| `api.on(hookName, handler, opts?)` | Типізований lifecycle hook |
| `api.onConversationBindingResolved(handler)` | Колбек binding розмови |
### Семантика рішень hook
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановить це значення, обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` вважається відсутністю рішення (так само, як пропуск `block`), а не перевизначенням.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановить це значення, обробники з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` вважається відсутністю рішення (так само, як пропуск `block`), а не перевизначенням.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який обробник візьме dispatch на себе, обробники з нижчим пріоритетом і типовий шлях dispatch моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який обробник встановить це значення, обробники з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` вважається відсутністю рішення (так само, як пропуск `cancel`), а не перевизначенням.
- `before_tool_call`: повернення `{ block: true }` є фінальним. Щойно будь-який handler встановлює це значення, handler-и з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` трактується як відсутність рішення (так само, як пропуск `block`), а не як перевизначення.
- `before_install`: повернення `{ block: true }` є фінальним. Щойно будь-який handler встановлює це значення, handler-и з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` трактується як відсутність рішення (так само, як пропуск `block`), а не як перевизначення.
- `reply_dispatch`: повернення `{ handled: true, ... }` є фінальним. Щойно будь-який handler заявляє про диспетчеризацію, handler-и з нижчим пріоритетом і стандартний шлях диспетчеризації моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є фінальним. Щойно будь-який handler встановлює це значення, handler-и з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` трактується як відсутність рішення (так само, як пропуск `cancel`), а не як перевизначення.
### Поля об’єкта API
| Field | Type | Опис |
| ------------------------ | ------------------------- | ----------------------------------------------------------------------------------------- |
| `api.id` | `string` | Ідентифікатор plugin |
| `api.name` | `string` | Відображувана назва |
| `api.version` | `string?` | Версія plugin (необов’язково) |
| `api.description` | `string?` | Опис plugin (необов’язково) |
| `api.source` | `string` | Шлях до джерела plugin |
| `api.rootDir` | `string?` | Кореневий каталог plugin (необов’язково) |
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок runtime у пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація plugin з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування до повного entry |
| `api.resolvePath(input)` | `(string) => string` | Визначення шляху відносно кореня plugin |
| 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` | Поточний snapshot конфігурації (активний snapshot runtime в пам’яті, коли доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація plugin із `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це легковагове вікно запуску/налаштування до повного entry |
| `api.resolvePath(input)` | `(string) => string` | Визначення path відносно кореня plugin |
## Угода про внутрішні модулі
## Угода щодо внутрішніх модулів
У межах вашого plugin використовуйте локальні barrel-файли для внутрішніх імпортів:
Усередині вашого plugin використовуйте локальні barrel-файли для внутрішніх імпортів:
```
my-plugin/
api.ts # Публічні експорти для зовнішніх споживачів
runtime-api.ts # Внутрішні runtime-експорти
index.ts # Точка входу plugin
setup-entry.ts # Полегшений entry лише для налаштування (необов’язково)
runtime-api.ts # Внутрішні експорти лише для runtime
index.ts # Entry point plugin
setup-entry.ts # Легковаговий entry лише для налаштування (необов’язково)
```
<Warning>
Ніколи не імпортуйте власний plugin через `openclaw/plugin-sdk/<your-plugin>`
у production-коді. Для внутрішніх імпортів використовуйте `./api.ts` або
з production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
`./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт.
</Warning>
Facade-loaded публічні поверхні вбудованих plugins (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` і подібні публічні entry-файли) тепер віддають перевагу
активному знімку конфігурації runtime, якщо OpenClaw уже запущено. Якщо знімка runtime
Facade-loaded публічні поверхні bundled plugin (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли) тепер віддають перевагу
активному snapshot конфігурації runtime, якщо OpenClaw уже запущено. Якщо snapshot runtime
ще не існує, вони повертаються до визначеного файлу конфігурації на диску.
Plugins провайдерів також можуть надавати вузький локальний barrel контракту plugin, якщо
helper навмисно є специфічним для провайдера й поки що не належить до загального
підшляху SDK. Поточний приклад серед вбудованих: провайдер Anthropic зберігає свої helper-и
Claude stream у власному публічному шарі `api.ts` / `contract-api.ts` замість
Provider plugins також можуть надавати вузький barrel локального контракту plugin, коли допоміжний засіб
навмисно є специфічним для provider і ще не належить до загального
підшляху SDK. Поточний bundled приклад: provider Anthropic зберігає свої
допоміжні засоби Claude stream у власному публічному шві `api.ts` / `contract-api.ts` замість
просування логіки Anthropic beta-header і `service_tier` до загального
контракту `plugin-sdk/*`.
Інші поточні приклади серед вбудованих:
Інші поточні bundled приклади:
- `@openclaw/openai-provider`: `api.ts` експортує конструктори провайдерів,
helper-и моделей за замовчуванням і конструктори realtime-провайдерів
- `@openclaw/openrouter-provider`: `api.ts` експортує конструктор провайдера та
helper-и онбордингу/конфігурації
- `@openclaw/openai-provider`: `api.ts` експортує побудовники provider,
допоміжні засоби стандартних моделей і побудовники realtime provider
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник provider, а також
допоміжні засоби онбордингу/конфігурації
<Warning>
Production-код extension також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
Якщо helper справді є спільним, перенесіть його до нейтрального підшляху SDK,
такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або до іншої
Якщо допоміжний засіб справді є спільним, перемістіть його до нейтрального підшляху SDK,
такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої
поверхні, орієнтованої на можливості, замість жорсткого зв’язування двох plugins.
</Warning>
@ -505,4 +507,4 @@ Claude stream у власному публічному шарі `api.ts` / `cont
- [Setup and Config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми конфігурації
- [Testing](/uk/plugins/sdk-testing) — утиліти тестування та правила lint
- [SDK Migration](/uk/plugins/sdk-migration) — міграція із застарілих поверхонь
- [Plugin Internals](/uk/plugins/architecture) — поглиблена архітектура та модель можливостей
- [Plugin Internals](/uk/plugins/architecture) — детальна архітектура та модель можливостей