chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-29 15:42:42 +00:00
parent db43b40b6d
commit 96736b8116
5 changed files with 1334 additions and 1322 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +1,47 @@
---
read_when:
- Налаштування Slack або налагодження сокетного/HTTP-режиму Slack
summary: Налаштування Slack і поведінка під час виконання (режим сокетів + URL-адреси HTTP-запитів)
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
title: Slack
x-i18n:
generated_at: "2026-04-29T03:16:22Z"
generated_at: "2026-04-29T15:39:26Z"
model: gpt-5.5
provider: openai
source_hash: 4cad48c342c4edf0857d79264e5a3213e58b8f5cde6bd04fa11eca1c969a8f1a
source_hash: e888211dc4729da87c2f2d269dca691aec280b5f09ceb3416f5ea16d7930cdd3
source_path: channels/slack.md
workflow: 16
---
Готово для виробництва для DM і каналів через інтеграції Slack app. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
Готове до production-використання для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
<CardGroup cols={3}>
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Slack DM типово використовують режим сполучення.
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
Slack DM за замовчуванням використовують режим pairing.
</Card>
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash commands" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
</Card>
<Card title="Усунення несправностей каналів" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та playbook-и відновлення.
<Card title="Channel troubleshooting" icon="wrench" href="/uk/channels/troubleshooting">
Кросканальна діагностика та playbook-и відновлення.
</Card>
</CardGroup>
## Швидке налаштування
<Tabs>
<Tab title="Socket Mode (типово)">
<Tab title="Socket Mode (default)">
<Steps>
<Step title="Створіть новий Slack app">
<Step title="Create a new Slack app">
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть workspace для вашого app
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- встановіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
- вставте [приклад manifest](#manifest-and-scope-checklist) нижче й продовжте створення
- згенеруйте **App-Level Token** (`xapp-...`) із `connections:write`
- установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Налаштуйте OpenClaw">
<Step title="Configure OpenClaw">
```json5
{
@ -56,7 +56,7 @@ x-i18n:
}
```
Резервний env-варіант (лише типовий обліковий запис):
Env fallback (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@ -65,7 +65,7 @@ SLACK_BOT_TOKEN=xoxb-...
</Step>
<Step title="Запустіть Gateway">
<Step title="Start gateway">
```bash
openclaw gateway
@ -78,17 +78,17 @@ openclaw gateway
<Tab title="HTTP Request URLs">
<Steps>
<Step title="Створіть новий Slack app">
<Step title="Create a new Slack app">
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть workspace для вашого app
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL перед створенням
- вставте [приклад manifest](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- збережіть **Signing Secret** для перевірки запитів
- встановіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
- установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Налаштуйте OpenClaw">
<Step title="Configure OpenClaw">
```json5
{
@ -107,12 +107,12 @@ openclaw gateway
<Note>
Використовуйте унікальні шляхи Webhook для HTTP із кількома обліковими записами
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
</Note>
</Step>
<Step title="Запустіть Gateway">
<Step title="Start gateway">
```bash
openclaw gateway
@ -126,7 +126,7 @@ openclaw gateway
## Налаштування транспорту Socket Mode
OpenClaw типово встановлює для клієнта Slack SDK тайм-аут pong 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний workspace або хост:
OpenClaw за замовчуванням встановлює тайм-аут pong клієнта Slack SDK на 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний workspace або host:
```json5
{
@ -143,13 +143,13 @@ OpenClaw типово встановлює для клієнта Slack SDK та
}
```
Використовуйте це лише для workspace-ів Socket Mode, які логують тайм-аути Slack websocket pong/server-ping, або працюють на хостах із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping-ів від сервера Slack. Повідомлення app і події залишаються станом застосунку, а не сигналами справності транспорту.
Використовуйте це лише для workspace-ів Socket Mode, які журналюють тайм-аути websocket pong/server-ping Slack або працюють на host-ах із відомим starvation event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування server pings від Slack. Повідомлення та події app залишаються станом застосунку, а не сигналами життєздатності транспорту.
## Контрольний список маніфесту та scope-ів
## Контрольний список manifest і scope
Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди).
Базовий manifest Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash command).
Базовий маніфест (типово Socket Mode):
Базовий manifest (Socket Mode за замовчуванням):
```json
{
@ -221,7 +221,7 @@ OpenClaw типово встановлює для клієнта Slack SDK та
}
```
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібен публічний URL:
Для режиму **HTTP Request URLs** замініть `settings` варіантом HTTP і додайте `url` до кожної slash command. Потрібна публічна URL-адреса:
```json
{
@ -251,22 +251,22 @@ OpenClaw типово встановлює для клієнта Slack SDK та
}
```
### Додаткові налаштування маніфесту
### Додаткові налаштування manifest
Показуйте різні функції, які розширюють наведені вище типові значення.
Увімкніть інші функції, що розширюють наведені вище стандартні значення.
<AccordionGroup>
<Accordion title="Необов’язкові нативні slash-команди">
<Accordion title="Optional native slash commands">
Кілька [нативних slash-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з певними нюансами:
Замість однієї налаштованої команди можна використовувати кілька [нативних slash commands](#commands-and-slash-behavior) з нюансами:
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
- Одночасно можна зробити доступними не більше ніж 25 slash-команд.
- Одночасно можна зробити доступними не більше ніж 25 slash commands.
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
<Tabs>
<Tab title="Socket Mode (типово)">
<Tab title="Socket Mode (default)">
```json
"slash_commands": [
@ -406,14 +406,14 @@ OpenClaw типово встановлює для клієнта Slack SDK та
</Tabs>
</Accordion>
<Accordion title="Необов’язкові scope-и авторства (операції запису)">
Додайте bot-scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку) замість типової ідентичності Slack app.
<Accordion title="Optional authorship scopes (write operations)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (користувацьке ім’я та піктограму) замість стандартної ідентичності Slack app.
Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Необов’язкові user-token scope-и (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типові scope-и читання:
<Accordion title="Optional user-token scopes (read operations)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими read scopes є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -429,26 +429,26 @@ OpenClaw типово встановлює для клієнта Slack SDK та
## Модель токенів
- `botToken` + `appToken` потрібні для Socket Mode.
- HTTP-режим потребує `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext-рядки
або об’єкти SecretRef.
- Токени конфігурації перевизначають резервний env-варіант.
- Резервний env-варіант `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до типового облікового запису.
- `userToken` (`xoxp-...`) налаштовується лише в конфігурації (без резервного env-варіанту) і типово використовує поведінку лише для читання (`userTokenReadOnly: true`).
- Режим HTTP потребує `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
рядки або об’єкти SecretRef.
- Токени з config перевизначають env fallback.
- Env fallback `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
- `userToken` (`xoxp-...`) задається лише в config (без env fallback) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
Поведінка знімка стану:
Поведінка status snapshot:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status` для кожних облікових даних
(`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус — це `available`, `configured_unavailable` або `missing`.
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус має значення `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше неінлайнове джерело секретів, але поточний шлях команди/runtime
не зміг визначити фактичне значення.
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
або інше неінлайнове джерело секретів, але поточна команда/шлях виконання
не змогли отримати фактичне значення.
- У режимі HTTP додається `signingSecretStatus`; у Socket Mode
обов’язкова пара — `botTokenStatus` + `appTokenStatus`.
<Tip>
Для дій/читання каталогу токен користувача може мати перевагу, коли його налаштовано. Для записів перевага й надалі надається токену бота; записи через токен користувача дозволені лише коли `userTokenReadOnly: false`, а токен бота недоступний.
Для дій/читання каталогу можна надавати перевагу токену користувача, якщо його налаштовано. Для записів токен бота залишається пріоритетним; записи з токеном користувача дозволені лише тоді, коли `userTokenReadOnly: false` і токен бота недоступний.
</Tip>
## Дії та шлюзи
@ -457,7 +457,7 @@ OpenClaw типово встановлює для клієнта Slack SDK та
Доступні групи дій у поточному інструментарії Slack:
| Група | За замовчуванням |
| Група | Типово |
| ---------- | ------- |
| messages | увімкнено |
| reactions | увімкнено |
@ -467,73 +467,75 @@ OpenClaw типово встановлює для клієнта Slack SDK та
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файла для інших типів файлів.
## Контроль доступу та маршрутизація
## Керування доступом і маршрутизація
<Tabs>
<Tab title="Політика DM">
`channels.slack.dmPolicy` керує доступом DM (застаріле: `channels.slack.dm.policy`):
<Tab title="DM policy">
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` є канонічним списком дозволених DM.
- `pairing` (за замовчуванням)
- `pairing` (типово)
- `allowlist`
- `open` (потрібно, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`)
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`)
- `disabled`
Прапорці DM:
- `dm.enabled` (за замовчуванням true)
- `channels.slack.allowFrom` (бажано)
- `dm.enabled` (типово true)
- `channels.slack.allowFrom`
- `dm.allowFrom` (застаріле)
- `dm.groupEnabled` (групові DM за замовчуванням false)
- `dm.groupChannels` (необов’язковий allowlist MPIM)
- `dm.groupEnabled` (групові DM типово false)
- `dm.groupChannels` (необов’язковий список дозволених MPIM)
Пріоритет для кількох облікових записів:
Пріоритетність для кількох облікових записів:
- `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, коли власний `allowFrom` не задано.
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, коли їхній власний `allowFrom` не задано.
- Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
Pairing у DM використовує `openclaw pairing approve slack <code>`.
Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу.
Зв’язування в DM використовує `openclaw pairing approve slack <code>`.
</Tab>
<Tab title="Політика каналу">
<Tab title="Channel policy">
`channels.slack.groupPolicy` керує обробкою каналів:
- `open`
- `allowlist`
- `disabled`
Allowlist каналів розміщується в `channels.slack.channels` і має використовувати стабільні ID каналів.
Список дозволених каналів міститься в `channels.slack.channels` і має використовувати стабільні ID каналів.
Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), виконання повертається до `groupPolicy="allowlist"` і записує попередження (навіть якщо `channels.defaults.groupPolicy` задано).
Розпізнавання імен/ID:
Розв’язання імен/ID:
- записи allowlist каналів і записи allowlist DM розпізнаються під час запуску, коли доступ токена це дозволяє
- нерозпізнані записи з іменами каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- записи списку дозволених каналів і записи списку дозволених DM розв’язуються під час запуску, коли доступ токена це дозволяє
- нерозв’язані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Згадки та користувачі каналу">
Повідомлення каналу за замовчуванням проходять через шлюз згадок.
<Tab title="Mentions and channel users">
Повідомлення каналів типово обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
- неявна поведінка гілки reply-to-bot (вимкнено, коли `thread.requireExplicitMention` дорівнює `true`)
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`)
- неявна поведінка відповіді в гілці боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
Поканальні елементи керування (`channels.slack.channels.<id>`; імена лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`):
Налаштування для кожного каналу (`channels.slack.channels.<id>`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
- `users` (список дозволених)
- `allowBots`
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
(застарілі ключі без префікса й надалі зіставляються лише з `id:`)
(застарілі ключі без префікса досі зіставляються лише з `id:`)
</Tab>
</Tabs>
@ -541,18 +543,18 @@ OpenClaw типово встановлює для клієнта Slack SDK та
## Гілки, сесії та теги відповідей
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
- З типовим `session.dmScope=main` DM Slack згортаються до головної сесії агента.
- З типовим `session.dmScope=main` DM Slack згортаються в основну сесію агента.
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:<threadTs>`), коли це застосовно.
- Типове значення `channels.slack.thread.historyScope``thread`; типове значення `thread.inheritParent``false`.
- `channels.slack.thread.initialHistoryLimit` керує кількістю наявних повідомлень гілки, які отримуються під час запуску нової сесії гілки (за замовчуванням `20`; задайте `0`, щоб вимкнути).
- `channels.slack.thread.requireExplicitMention` (за замовчуванням `false`): коли `true`, пригнічує неявні згадки в гілці, щоб бот відповідав лише на явні згадки `@bot` у гілках, навіть якщо бот уже брав участь у гілці. Без цього відповіді в гілці, де брав участь бот, обходять шлюз `requireMention`.
- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень гілки отримується під час запуску нової сесії гілки (типово `20`; задайте `0`, щоб вимкнути).
- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в гілках, щоб бот відповідав лише на явні згадки `@bot` усередині гілок, навіть якщо бот уже брав участь у гілці. Без цього відповіді в гілці, де брав участь бот, обходять шлюз `requireMention`.
Елементи керування відповідями в гілках:
Налаштування гілок відповідей:
- `channels.slack.replyToMode`: `off|first|all|batched` (за замовчуванням `off`)
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
- застарілий fallback для прямих чатів: `channels.slack.dm.replyToMode`
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
Підтримуються ручні теги відповідей:
@ -560,45 +562,45 @@ OpenClaw типово встановлює для клієнта Slack SDK та
- `[[reply_to:<id>]]`
<Note>
`replyToMode="off"` вимикає **всі** відповіді в гілках у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline.
`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
</Note>
## Ack-реакції
## Реакції підтвердження
`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок розв’язання:
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- fallback емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
- резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- Slack очікує shortcodes (наприклад `"eyes"`).
- Slack очікує shortcodes (наприклад, `"eyes"`).
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
## Текстовий streaming
## Потокове передавання тексту
`channels.slack.streaming` керує поведінкою live preview:
`channels.slack.streaming` керує поведінкою live-попереднього перегляду:
- `off`: вимкнути streaming live preview.
- `partial` (за замовчуванням): замінювати текст попереднього перегляду найновішим частковим виводом.
- `block`: додавати chunked-оновлення попереднього перегляду.
- `off`: вимкнути потокове передавання live-попереднього перегляду.
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
- `block`: додавати фрагментовані оновлення попереднього перегляду.
- `progress`: показувати текст статусу прогресу під час генерації, а потім надсилати фінальний текст.
- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовує оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (за замовчуванням: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, маршрутизувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
`channels.slack.streaming.nativeTransport` керує нативним текстовим streaming Slack, коли `channels.slack.streaming.mode` дорівнює `partial` (за замовчуванням: `true`).
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
- Для появи нативного текстового streaming і статусу гілки Slack assistant має бути доступна гілка відповіді. Вибір гілки й надалі дотримується `replyToMode`.
- Корені каналів і групових чатів можуть і надалі використовувати звичайний чернетковий попередній перегляд, коли нативний streaming недоступний.
- DM Slack верхнього рівня за замовчуванням залишаються поза гілками, тому не показують попередній перегляд у стилі гілки; використовуйте відповіді в гілці або `typingReaction`, якщо хочете бачити там видимий прогрес.
- Щоб з’явилися нативне потокове передавання тексту та статус гілки помічника Slack, має бути доступна гілка відповіді. Вибір гілки все ще відповідає `replyToMode`.
- Корені каналів і групових чатів усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне.
- DM Slack верхнього рівня типово залишаються поза гілкою, тому вони не показують попередній перегляд у стилі гілки; використовуйте відповіді в гілках або `typingReaction`, якщо хочете бачити прогрес там.
- Медіа та нетекстові payload-и повертаються до звичайної доставки.
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні текстові/block-повідомлення скидаються лише коли можуть редагувати попередній перегляд на місці.
- Якщо streaming завершується помилкою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload-ів.
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні тексти/блоки скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
- Якщо потокове передавання завершується помилкою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload-ів.
Використовуйте чернетковий попередній перегляд замість нативного текстового streaming Slack:
Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
```json5
{
@ -615,11 +617,11 @@ OpenClaw типово встановлює для клієнта Slack SDK та
Застарілі ключі:
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
- boolean `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
- застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується в `channels.slack.streaming.mode`.
- boolean `channels.slack.streaming` автоматично мігрується в `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
- застарілий `channels.slack.nativeStreaming` автоматично мігрується в `channels.slack.streaming.nativeTransport`.
## Fallback реакції набору тексту
## Резервна реакція набору тексту
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор статусу "is typing...".
@ -630,30 +632,30 @@ OpenClaw типово встановлює для клієнта Slack SDK та
Примітки:
- Slack очікує shortcodes (наприклад `"hourglass_flowing_sand"`).
- Реакція виконується best-effort, а cleanup автоматично виконується після завершення відповіді або шляху помилки.
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція виконується за принципом best-effort, а очищення виконується автоматично після завершення відповіді або шляху помилки.
## Медіа, chunking і доставка
## Медіа, фрагментація та доставка
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів включають `fileId` Slack, щоб агенти могли отримати оригінальний файл через `download-file`.
<Accordion title="Inbound attachments">
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й ліміти розміру це дозволяють. Заповнювачі файлів містять `fileId` Slack, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
Завантаження використовують обмежені idle-таймаути й загальні таймаути. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файла.
Завантаження використовують обмежені тайм-аути простою та загальні тайм-аути. Якщо отримання файла Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файла.
Runtime-ліміт розміру вхідних даних за замовчуванням становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Вихідний текст і файли">
- текстові chunks використовують `channels.slack.textChunkLimit` (за замовчуванням 4000)
- `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців
<Accordion title="Outbound text and files">
- текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців
- надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
- ліміт вихідних медіа дотримується `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канали використовує типові значення MIME-kind з медіаконвеєра
- ліміт вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли його налаштовано; інакше надсилання каналом використовує типові значення MIME-kind з медіаконвеєра
</Accordion>
<Accordion title="Цілі доставки">
<Accordion title="Delivery targets">
Бажані явні цілі:
- `user:<id>` для DM
@ -664,9 +666,9 @@ OpenClaw типово встановлює для клієнта Slack SDK та
</Accordion>
</AccordionGroup>
## Команди та slash-поведінка
## Команди та поведінка slash
Slash-команди з’являються в Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команд:
Slash-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
- `enabled: false`
- `name: "openclaw"`
@ -677,30 +679,30 @@ Slash-команди з’являються в Slack як одна налашт
/openclaw /help
```
Нативні команди потребують [додаткових параметрів маніфесту](#additional-manifest-settings) у вашому застосунку Slack і натомість вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
Нативні команди потребують [додаткових налаштувань manifest](#additional-manifest-settings) у вашому застосунку Slack і натомість вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
- Нативний автоматичний режим команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
```txt
/help
```
Меню нативних аргументів використовують адаптивну стратегію рендерингу, яка показує модальне підтвердження перед відправленням вибраного значення опції:
Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції:
- до 5 опцій: button blocks
- 6-100 опцій: static select menu
- понад 100 опцій: external select з async-фільтрацією опцій, коли доступні handlers опцій interactivity
- перевищені ліміти Slack: закодовані значення опцій повертаються до buttons
- до 5 опцій: блоки кнопок
- 6-100 опцій: статичне меню вибору
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники опцій інтерактивності
- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок
```txt
/think
```
Slash-сесії використовують ізольовані ключі, як-от `agent:<agentId>:slack:slash:<userId>`, і надалі маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
Slash-сесії використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до сесії цільової розмови за допомогою `CommandTargetSessionKey`.
## Інтерактивні відповіді
Slack може рендерити створені агентом елементи керування інтерактивними відповідями, але ця функція за замовчуванням вимкнена.
Slack може рендерити інтерактивні елементи керування відповідями, створені агентом, але цю функцію типово вимкнено.
Увімкніть її глобально:
@ -716,7 +718,7 @@ Slack може рендерити створені агентом елемент
}
```
Або ввімкніть її лише для одного облікового запису Slack:
Або увімкніть її лише для одного облікового запису Slack:
```json5
{
@ -739,39 +741,39 @@ Slack може рендерити створені агентом елемент
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
Ці директиви компілюються у Slack Block Kit і маршрутизують кліки або вибори назад через наявний шлях подій взаємодії Slack.
These directives compile into Slack Block Kit and route clicks or selections back through the existing Slack interaction event path.
Примітки:
Notes:
- Це специфічний для Slack UI. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
- Значення інтерактивних callback є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
- Якщо згенеровані інтерактивні блоки перевищили б ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
- This is Slack-specific UI. Other channels do not translate Slack Block Kit directives into their own button systems.
- The interactive callback values are OpenClaw-generated opaque tokens, not raw agent-authored values.
- If generated interactive blocks would exceed Slack Block Kit limits, OpenClaw falls back to the original text reply instead of sending an invalid blocks payload.
## Схвалення exec у Slack
## Exec approvals in Slack
Slack може працювати як нативний клієнт схвалень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.
Slack can act as a native approval client with interactive buttons and interactions, instead of falling back to the Web UI or terminal.
- Схвалення exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
- Схвалення Plugin усе ще можуть оброблятися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє в Slack і тип approval id є `plugin:`.
- Авторизація схвалювача все ще застосовується: лише користувачі, визначені як схвалювачі, можуть схвалювати або відхиляти запити через Slack.
- Exec approvals use `channels.slack.execApprovals.*` for native DM/channel routing.
- Plugin approvals can still resolve through the same Slack-native button surface when the request already lands in Slack and the approval id kind is `plugin:`.
- Approver authorization is still enforced: only users identified as approvers can approve or deny requests through Slack.
Це використовує ту саму спільну поверхню кнопок схвалення, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашої програми Slack, запити на схвалення відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним UX схвалення; OpenClaw
має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що схвалення
в чаті недоступні або ручне схвалення є єдиним шляхом.
This uses the same shared approval button surface as other channels. When `interactivity` is enabled in your Slack app settings, approval prompts render as Block Kit buttons directly in the conversation.
When those buttons are present, they are the primary approval UX; OpenClaw
should only include a manual `/approve` command when the tool result says chat
approvals are unavailable or manual approval is the only path.
Шлях конфігурації:
Config path:
- `channels.slack.execApprovals.enabled`
- `channels.slack.execApprovals.approvers` (необов’язково; повертається до `commands.ownerAllowFrom`, коли можливо)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, стандартно: `dm`)
- `channels.slack.execApprovals.approvers` (optional; falls back to `commands.ownerAllowFrom` when possible)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, default: `dm`)
- `agentFilter`, `sessionFilter`
Slack автоматично вмикає нативні схвалення exec, коли `enabled` не задано або має значення `"auto"` і принаймні один
схвалювач визначається. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт схвалень.
Установіть `enabled: true`, щоб примусово ввімкнути нативні схвалення, коли схвалювачі визначаються.
Slack auto-enables native exec approvals when `enabled` is unset or `"auto"` and at least one
approver resolves. Set `enabled: false` to disable Slack as a native approval client explicitly.
Set `enabled: true` to force native approvals on when approvers resolve.
Стандартна поведінка без явної конфігурації схвалення exec у Slack:
Default behavior with no explicit Slack exec approval config:
```json5
{
@ -781,8 +783,8 @@ Slack автоматично вмикає нативні схвалення exec
}
```
Явна нативна для Slack конфігурація потрібна лише тоді, коли потрібно перевизначити схвалювачів, додати фільтри або
увімкнути доставку в чат походження:
Explicit Slack-native config is only needed when you want to override approvers, add filters, or
opt into origin-chat delivery:
```json5
{
@ -798,54 +800,54 @@ Slack автоматично вмикає нативні схвалення exec
}
```
Спільне перенаправлення `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на схвалення exec також мають
маршрутизуватися в інші чати або явні позасмугові цілі. Спільне перенаправлення `approvals.plugin` також
є окремим; нативні для Slack кнопки все ще можуть обробляти схвалення Plugin, коли ці запити вже потрапляють
у Slack.
Shared `approvals.exec` forwarding is separate. Use it only when exec approval prompts must also
route to other chats or explicit out-of-band targets. Shared `approvals.plugin` forwarding is also
separate; Slack-native buttons can still resolve plugin approvals when those requests already land
in Slack.
Same-chat `/approve` також працює в каналах Slack і DM, які вже підтримують команди. Див. [Схвалення exec](/uk/tools/exec-approvals), щоб переглянути повну модель перенаправлення схвалень.
Same-chat `/approve` also works in Slack channels and DMs that already support commands. See [Exec approvals](/uk/tools/exec-approvals) for the full approval forwarding model.
## Події та операційна поведінка
## Events and operational behavior
- Редагування/видалення повідомлень відображаються в системні події.
- Трансляції тредів (відповіді в тредах "Also send to channel") обробляються як звичайні повідомлення користувачів.
- Події додавання/видалення реакцій відображаються в системні події.
- Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення відображаються в системні події.
- `channel_id_changed` може переносити ключі конфігурації каналу, коли `configWrites` увімкнено.
- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
- Автор треду та початкове наповнення контексту історією треду фільтруються налаштованими allowlist відправників, коли це застосовно.
- Дії блоків і модальні взаємодії породжують структуровані системні події `Slack interaction: ...` з багатими полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події модальних `view_submission` і `view_closed` з метаданими маршрутизованого каналу та введеннями форми
- Message edits/deletes are mapped into system events.
- Thread broadcasts ("Also send to channel" thread replies) are processed as normal user messages.
- Reaction add/remove events are mapped into system events.
- Member join/leave, channel created/renamed, and pin add/remove events are mapped into system events.
- `channel_id_changed` can migrate channel config keys when `configWrites` is enabled.
- Channel topic/purpose metadata is treated as untrusted context and can be injected into routing context.
- Thread starter and initial thread-history context seeding are filtered by configured sender allowlists when applicable.
- Block actions and modal interactions emit structured `Slack interaction: ...` system events with rich payload fields:
- block actions: selected values, labels, picker values, and `workflow_*` metadata
- modal `view_submission` and `view_closed` events with routed channel metadata and form inputs
## Довідник конфігурації
## Configuration reference
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
Primary reference: [Configuration reference - Slack](/uk/gateway/config-channels#slack).
<Accordion title="Важливі поля Slack">
<Accordion title="High-signal Slack fields">
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (break-glass; тримайте вимкненим, якщо не потрібно)
- доступ до каналу: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- ops/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
- DM access: `dm.enabled`, `dmPolicy`, `allowFrom` (legacy: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- compatibility toggle: `dangerouslyAllowNameMatching` (break-glass; keep off unless needed)
- channel access: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- threading/history: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- ops/features: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
</Accordion>
## Усунення несправностей
## Troubleshooting
<AccordionGroup>
<Accordion title="Немає відповідей у каналах">
Перевірте по черзі:
<Accordion title="No replies in channels">
Check, in order:
- `groupPolicy`
- allowlist каналу (`channels.slack.channels`)
- channel allowlist (`channels.slack.channels`)
- `requireMention`
- allowlist `users` для окремого каналу
- per-channel `users` allowlist
Корисні команди:
Useful commands:
```bash
openclaw channels status --probe
@ -855,15 +857,15 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення DM ігноруються">
Перевірте:
<Accordion title="DM messages ignored">
Check:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- схвалення pairings / записи allowlist
- події Slack Assistant DM: докладні журнали зі згадкою `drop message_changed`
зазвичай означають, що Slack надіслав відредаговану подію Assistant-thread без
відновлюваного людського відправника в метаданих повідомлення
- `channels.slack.dmPolicy` (or legacy `channels.slack.dm.policy`)
- pairing approvals / allowlist entries
- Slack Assistant DM events: verbose logs mentioning `drop message_changed`
usually mean Slack sent an edited Assistant-thread event without a
recoverable human sender in message metadata
```bash
openclaw pairing list slack
@ -871,124 +873,125 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket mode не підключається">
Перевірте токени bot + app і ввімкнення Socket Mode у налаштуваннях програми Slack.
<Accordion title="Socket mode not connecting">
Validate bot + app tokens and Socket Mode enablement in Slack app settings.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточний runtime не зміг визначити значення, підкріплене SecretRef.
If `openclaw channels status --probe --json` shows `botTokenStatus` or
`appTokenStatus: "configured_unavailable"`, the Slack account is
configured but the current runtime could not resolve the SecretRef-backed
value.
</Accordion>
<Accordion title="HTTP mode не отримує події">
Перевірте:
<Accordion title="HTTP mode not receiving events">
Validate:
- signing secret
- шлях webhook
- webhook path
- Slack Request URLs (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
- unique `webhookPath` per HTTP account
Якщо `signingSecretStatus: "configured_unavailable"` з’являється в snapshots
облікового запису, HTTP-обліковий запис налаштовано, але поточний runtime не зміг
визначити signing secret, підкріплений SecretRef.
If `signingSecretStatus: "configured_unavailable"` appears in account
snapshots, the HTTP account is configured but the current runtime could not
resolve the SecretRef-backed signing secret.
</Accordion>
<Accordion title="Native/slash команди не спрацьовують">
Перевірте, що саме ви мали на увазі:
<Accordion title="Native/slash commands not firing">
Verify whether you intended:
- нативний режим команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
- native command mode (`channels.slack.commands.native: true`) with matching slash commands registered in Slack
- or single slash command mode (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
Also check `commands.useAccessGroups` and channel/user allowlists.
</Accordion>
</AccordionGroup>
## Довідник щодо vision для вкладень
## Attachment vision reference
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й ліміти розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як завантажуваний файловий контекст, а не обробляються як вхідні зображення.
Slack can attach downloaded media to the agent turn when Slack file downloads succeed and size limits permit. Image files can be passed through the media understanding path or directly to a vision-capable reply model; other files are retained as downloadable file context rather than treated as image input.
### Підтримувані типи медіа
### Supported media types
| Тип медіа | Джерело | Поточна поведінка | Примітки |
| Media type | Source | Current behavior | Notes |
| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажується та прикріплюється до ходу для обробки з підтримкою vision | Ліміт на файл: `channels.slack.mediaMaxMb` (стандартно 20 MB) |
| Файли PDF | URL файлу Slack | Завантажується і надається як файловий контекст для інструментів, таких як `download-file` або `pdf` | Вхідний потік Slack не перетворює PDF на вхід image-vision автоматично |
| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
| Відповіді в треді | Файли автора треду | Файли кореневого повідомлення можуть бути завантажені як контекст, коли відповідь не має прямих медіа | Автори лише з файлами використовують placeholder вкладення |
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
| JPEG / PNG / GIF / WebP images | Slack file URL | Downloaded and attached to the turn for vision-capable handling | Per-file cap: `channels.slack.mediaMaxMb` (default 20 MB) |
| PDF files | Slack file URL | Downloaded and exposed as file context for tools such as `download-file` or `pdf` | Slack inbound does not convert PDFs into image-vision input automatically |
| Other files | Slack file URL | Downloaded when possible and exposed as file context | Binary files are not treated as image input |
| Thread replies | Thread starter files | Root-message files can be hydrated as context when the reply has no direct media | File-only starters use an attachment placeholder |
| Multi-image messages | Multiple Slack files | Each file is evaluated independently | Slack processing is capped at eight files per message |
### Вхідний pipeline
### Inbound pipeline
Коли надходить повідомлення Slack із файловими вкладеннями:
When a Slack message with file attachments arrives:
1. OpenClaw завантажує файл із приватного URL Slack, використовуючи токен bot (`xoxb-...`).
2. Файл успішно записується до media store.
3. Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту.
4. Шляхи моделі/інструмента з підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або медіапосилання для інструментів, які можуть їх обробляти.
1. OpenClaw downloads the file from Slack's private URL using the bot token (`xoxb-...`).
2. The file is written to the media store on success.
3. Downloaded media paths and content types are added to the inbound context.
4. Image-capable model/tool paths can use image attachments from that context.
5. Non-image files remain available as file metadata or media references for tools that can handle them.
### Успадкування вкладень кореня треду
### Thread-root attachment inheritance
Коли повідомлення надходить у треді (має батьківський `thread_ts`):
When a message arrives in a thread (has a `thread_ts` parent):
- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може завантажити кореневі файли як контекст автора треду.
- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється placeholder вкладення, щоб fallback усе ще міг включити його файли.
- If the reply itself has no direct media and the included root message has files, Slack can hydrate the root files as thread-starter context.
- Direct reply attachments take precedence over root-message attachments.
- A root message that has only files and no text is represented with an attachment placeholder so the fallback can still include its files.
### Обробка кількох вкладень
### Multi-attachment handling
Коли одне повідомлення Slack містить кілька файлових вкладень:
When a single Slack message contains multiple file attachments:
- Кожне вкладення обробляється незалежно через media pipeline.
- Посилання на завантажені медіа агрегуються в контекст повідомлення.
- Порядок обробки відповідає порядку файлів Slack у payload події.
- Збій завантаження одного вкладення не блокує інші.
- Each attachment is processed independently through the media pipeline.
- Downloaded media references are aggregated into the message context.
- Processing order follows Slack's file order in the event payload.
- A failure in one attachment's download does not block others.
### Ліміти розміру, завантаження та моделі
### Size, download, and model limits
- **Ліміт розміру**: стандартно 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
- **Збої завантаження**: файли, які Slack не може надати, URL із простроченим терміном дії, недоступні файли, надто великі файли та HTML-відповіді Slack auth/login пропускаються замість повідомлення як непідтримувані формати.
- **Vision модель**: аналіз зображень використовує активну модель відповіді, коли вона підтримує vision, або модель зображень, налаштовану в `agents.defaults.imageModel`.
- **Size cap**: Default 20 MB per file. Configurable via `channels.slack.mediaMaxMb`.
- **Download failures**: Files that Slack cannot serve, expired URLs, inaccessible files, oversize files, and Slack auth/login HTML responses are skipped instead of being reported as unsupported formats.
- **Vision model**: Image analysis uses the active reply model when it supports vision, or the image model configured at `agents.defaults.imageModel`.
### Відомі обмеження
### Known limits
| Сценарій | Поточна поведінка | Обхідний шлях |
| -------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| URL файлу Slack із простроченим терміном дії | Файл пропущено; помилка не показується | Повторно завантажте файл у Slack |
| Vision модель не налаштована | Вкладення зображень зберігаються як медіапосилання, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою vision |
| Дуже великі зображення (> 20 MB стандартно) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
| Переслані/поширені вкладення | Текст і розміщені в Slack медіа зображень/файлів обробляються за принципом best-effort | Повторно поділіться безпосередньо в треді OpenClaw |
| PDF-вкладення | Зберігаються як файловий/медіаконтекст, не маршрутизуються автоматично через image vision | Використовуйте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF |
| Сценарій | Поточна поведінка | Обхідний шлях |
| ------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Прострочена URL-адреса файлу Slack | Файл пропущено; помилка не відображається | Повторно завантажте файл у Slack |
| Модель зору не налаштовано | Вкладення із зображеннями зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зору |
| Дуже великі зображення (> 20 МБ за замовчуванням) | Пропускаються відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені у Slack, обробляються за принципом найкращих зусиль | Повторно поділіться безпосередньо в треді OpenClaw |
| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через зір для зображень | Використайте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF |
### Пов’язана документація
- [Конвеєр розуміння медіа](/uk/nodes/media-understanding)
- [Інструмент PDF](/uk/tools/pdf)
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення візуального аналізу вкладень Slack
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зору для вкладень Slack
- Регресійні тести: [#51353](https://github.com/openclaw/openclaw/issues/51353)
- Перевірка в реальному середовищі: [#51354](https://github.com/openclaw/openclaw/issues/51354)
- Перевірка наживо: [#51354](https://github.com/openclaw/openclaw/issues/51354)
## Пов’язане
<CardGroup cols={2}>
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Сполучіть користувача Slack зі шлюзом.
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
Сполучіть користувача Slack із Gateway.
</Card>
<Card title="Групи" icon="users" href="/uk/channels/groups">
Поведінка каналів і групових особистих повідомлень.
<Card title="Groups" icon="users" href="/uk/channels/groups">
Поведінка каналів і групових приватних повідомлень.
</Card>
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
<Card title="Channel routing" icon="route" href="/uk/channels/channel-routing">
Спрямовуйте вхідні повідомлення агентам.
</Card>
<Card title="Безпека" icon="shield" href="/uk/gateway/security">
<Card title="Security" icon="shield" href="/uk/gateway/security">
Модель загроз і посилення захисту.
</Card>
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
<Card title="Configuration" icon="sliders" href="/uk/gateway/configuration">
Структура конфігурації та пріоритетність.
</Card>
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash commands" icon="terminal" href="/uk/tools/slash-commands">
Каталог команд і поведінка.
</Card>
</CardGroup>

View File

@ -1,129 +1,129 @@
---
read_when:
- Ви створюєте новий Plugin для каналу обміну повідомленнями
- Ви створюєте новий Plugin каналу обміну повідомленнями
- Ви хочете підключити OpenClaw до платформи обміну повідомленнями
- Вам потрібно зрозуміти поверхню адаптера ChannelPlugin
- Потрібно зрозуміти поверхню адаптера ChannelPlugin
sidebarTitle: Channel Plugins
summary: Покроковий посібник зі створення Plugin каналу обміну повідомленнями для OpenClaw
title: Створення Plugin каналів
title: Створення Plugin-ів каналів
x-i18n:
generated_at: "2026-04-28T11:19:53Z"
generated_at: "2026-04-29T15:39:41Z"
model: gpt-5.5
provider: openai
source_hash: 70a3f8fb671c7291a0566f71a56e45232ed51bb43a8fe470e651a03e994e4aa2
source_hash: 03384057a4316b87c6088d3859d16ed4546c803f7c64639cd12be293f4841258
source_path: plugins/sdk-channel-plugins.md
workflow: 16
---
Цей посібник описує створення плагіна каналу, який підключає OpenClaw до
Цей посібник покроково показує, як створити Plugin каналу, що підключає OpenClaw до
платформи обміну повідомленнями. Наприкінці ви матимете робочий канал із безпекою DM,
сполученням, ланцюжками відповідей і вихідними повідомленнями.
спарюванням, ланцюжками відповідей і вихідними повідомленнями.
<Info>
Якщо ви ще не створювали жодного плагіна OpenClaw, спочатку прочитайте
[Початок роботи](/uk/plugins/building-plugins), щоб ознайомитися з базовою структурою
пакета й налаштуванням маніфесту.
Якщо ви ще не створювали жодного Plugin OpenClaw, спершу прочитайте
[Початок роботи](/uk/plugins/building-plugins), щоб дізнатися про базову структуру
пакета та налаштування маніфесту.
</Info>
## Як працюють плагіни каналів
## Як працюють Plugins каналів
Плагінам каналів не потрібні власні інструменти надсилання/редагування/реакцій. OpenClaw тримає один
спільний інструмент `message` у ядрі. Ваш плагін відповідає за:
Plugins каналів не потребують власних інструментів надсилання/редагування/реакцій. OpenClaw тримає один
спільний інструмент `message` у ядрі. Ваш Plugin відповідає за:
- **Конфігурацію** — визначення облікового запису й майстер налаштування
- **Безпеку** — політику DM і списки дозволених
- **Сполучення** — процес підтвердження через DM
- **Граматику сесій** — те, як специфічні для провайдера ідентифікатори розмов зіставляються з базовими чатами, ідентифікаторами ланцюжків і резервними батьківськими варіантами
- **Вихідні повідомлення** — надсилання тексту, медіа й опитувань на платформу
- **Ланцюжки**те, як відповіді об’єднуються в ланцюжки
- **Heartbeat-індикацію набору** — необов’язкові сигнали набору/зайнятості для цілей доставки Heartbeat
- **Конфігурація** — визначення акаунта та майстер налаштування
- **Безпека** — політика DM та списки дозволених
- **Спарювання** — потік підтвердження через DM
- **Граматика сесії** — як ідентифікатори розмов конкретного провайдера відображаються на базові чати, ідентифікатори ланцюжків і батьківські резервні варіанти
- **Вихідні повідомлення** — надсилання тексту, медіа та опитувань на платформу
- **Ланцюжки** — як групуються відповіді
- **Heartbeat typing** — необов'язкові сигнали набору/зайнятості для цілей доставки Heartbeat
Ядро відповідає за спільний інструмент повідомлень, підключення промптів, зовнішню форму ключа сесії,
загальний облік `:thread:` і диспетчеризацію.
Якщо ваш канал підтримує індикатори набору поза вхідними відповідями, надайте
`heartbeat.sendTyping(...)` у плагіні каналу. Ядро викликає його з
визначеною ціллю доставки Heartbeat перед запуском моделі Heartbeat і
використовує спільний життєвий цикл keepalive/очищення для індикації набору. Додайте `heartbeat.clearTyping(...)`,
якщо платформі потрібен явний сигнал зупинки.
Якщо ваш канал підтримує індикатори набору поза вхідними відповідями, експонуйте
`heartbeat.sendTyping(...)` у Plugin каналу. Ядро викликає його з
визначеною ціллю доставки Heartbeat перед початком запуску моделі Heartbeat і
використовує спільний життєвий цикл підтримання/очищення індикатора набору. Додайте `heartbeat.clearTyping(...)`,
коли платформі потрібен явний сигнал зупинки.
Якщо ваш канал додає параметри інструмента повідомлень, які містять джерела медіа, надайте ці
Якщо ваш канал додає параметри інструмента повідомлень, що несуть джерела медіа, експонуйте ці
назви параметрів через `describeMessageTool(...).mediaSourceParams`. Ядро використовує
цей явний список для нормалізації шляхів sandbox і політики доступу до вихідних медіа,
тому плагінам не потрібні спеціальні випадки у спільному ядрі для специфічних для провайдера
параметрів аватара, вкладення або зображення обкладинки.
Бажано повертати карту з ключами дій, наприклад
`{ "set-profile": ["avatarUrl", "avatarPath"] }`, щоб неповязані дії не
тож Plugins не потребують спеціальних випадків у спільному ядрі для параметрів аватарів,
вкладень або обкладинок, специфічних для провайдера.
Бажано повертати мапу за ключами дій, наприклад
`{ "set-profile": ["avatarUrl", "avatarPath"] }`, щоб непов'язані дії не
успадковували медіааргументи іншої дії. Плоский масив також працює для параметрів, які
навмисно спільні для кожної відкритої дії.
навмисно спільні для всіх експонованих дій.
Якщо ваша платформа зберігає додаткову область видимості всередині ідентифікаторів розмов, залиште цей розбір
у плагіні через `messaging.resolveSessionConversation(...)`. Це канонічний
гачок для зіставлення `rawId` з базовим ідентифікатором розмови, необов’язковим ідентифікатором ланцюжка,
явним `baseConversationId` і будь-якими `parentConversationCandidates`.
Коли ви повертаєте `parentConversationCandidates`, зберігайте їх упорядкованими від
найвужчого батька до найширшої/базової розмови.
Якщо ваша платформа зберігає додатковий scope всередині ідентифікаторів розмов, тримайте цей парсинг
у Plugin через `messaging.resolveSessionConversation(...)`. Це
канонічний хук для відображення `rawId` на базовий ідентифікатор розмови, необов'язковий ідентифікатор ланцюжка,
явний `baseConversationId` і будь-які `parentConversationCandidates`.
Коли повертаєте `parentConversationCandidates`, тримайте їх упорядкованими від
найвужчого батьківського елемента до найширшої/базової розмови.
Використовуйте `openclaw/plugin-sdk/channel-route`, коли коду плагіна потрібно нормалізувати
Використовуйте `openclaw/plugin-sdk/channel-route`, коли коду Plugin потрібно нормалізувати
поля, схожі на маршрути, порівняти дочірній ланцюжок із його батьківським маршрутом або побудувати
стабільний ключ дедуплікації з `{ channel, to, accountId, threadId }`. Помічник
нормалізує числові ідентифікатори ланцюжків так само, як це робить ядро, тому плагінам варто віддавати
нормалізує числові ідентифікатори ланцюжків так само, як це робить ядро, тому Plugins мають віддавати
йому перевагу над ситуативними порівняннями `String(threadId)`.
Плагіни зі специфічною для провайдера граматикою цілей можуть ін’єктувати свій парсер у
Plugins із граматикою цілей, специфічною для провайдера, можуть інжектувати свій парсер у
`resolveChannelRouteTargetWithParser(...)` і все одно отримувати ту саму форму цілі маршруту
та семантику резервного ланцюжка, яку використовує ядро.
Вбудовані плагіни, яким потрібен той самий розбір до запуску реєстру каналів,
також можуть надавати файл верхнього рівня `session-key-api.ts` із відповідним
Вбудовані Plugins, яким потрібен той самий парсинг до запуску реєстру каналів,
також можуть експонувати файл верхнього рівня `session-key-api.ts` з відповідним
експортом `resolveSessionConversation(...)`. Ядро використовує цю безпечну для bootstrap поверхню
лише тоді, коли runtime-реєстр плагінів ще недоступний.
лише тоді, коли runtime-реєстр Plugin ще недоступний.
`messaging.resolveParentConversationCandidates(...)` залишається доступним як
застарілий резерв сумісності, коли плагіну потрібні лише батьківські резервні варіанти поверх
загального/сирого ідентифікатора. Якщо існують обидва гачки, ядро спочатку використовує
`resolveSessionConversation(...).parentConversationCandidates` і лише потім
переходить до `resolveParentConversationCandidates(...)`, коли канонічний гачок
застарілий резерв сумісності, коли Plugin потребує лише батьківських резервних варіантів поверх
загального/raw ідентифікатора. Якщо існують обидва хуки, ядро спершу використовує
`resolveSessionConversation(...).parentConversationCandidates` і лише
переходить до `resolveParentConversationCandidates(...)`, коли канонічний хук
їх пропускає.
## Підтвердження й можливості каналів
## Підтвердження та можливості каналу
Більшості плагінів каналів не потрібен код, специфічний для підтверджень.
Більшості Plugins каналів не потрібен код, специфічний для підтверджень.
- Ядро відповідає за `/approve` у тому самому чаті, спільні payload-и кнопок підтвердження й загальну резервну доставку.
- Надавайте перевагу одному об’єкту `approvalCapability` у плагіні каналу, коли каналу потрібна поведінка, специфічна для підтверджень.
- `ChannelPlugin.approvals` видалено. Розміщуйте факти про доставку/нативність/рендеринг/автентифікацію підтверджень у `approvalCapability`.
- `plugin.auth` призначено лише для входу/виходу; ядро більше не читає гачки автентифікації підтверджень із цього обєкта.
- `approvalCapability.authorizeActorAction` і `approvalCapability.getActionAvailabilityState` є канонічним швом автентифікації підтверджень.
- Використовуйте `approvalCapability.getActionAvailabilityState` для доступності автентифікації підтверджень у тому самому чаті.
- Якщо ваш канал надає нативні exec-підтвердження, використовуйте `approvalCapability.getExecInitiatingSurfaceState` для стану ініціювальної поверхні/нативного клієнта, коли він відрізняється від автентифікації підтверджень у тому самому чаті. Ядро використовує цей специфічний для exec гачок, щоб розрізняти `enabled` і `disabled`, вирішувати, чи підтримує ініціювальний канал нативні exec-підтвердження, і включати канал до підказок щодо резервного нативного клієнта. `createApproverRestrictedNativeApprovalCapability(...)` заповнює це для типового випадку.
- Використовуйте `outbound.shouldSuppressLocalPayloadPrompt` або `outbound.beforeDeliverPayload` для специфічної для каналу поведінки життєвого циклу payload-а, наприклад приховування дубльованих локальних prompt-ів підтвердження або надсилання індикаторів набору перед доставкою.
- Використовуйте `approvalCapability.delivery` лише для маршрутизації нативних підтверджень або приглушення резервної доставки.
- Використовуйте `approvalCapability.nativeRuntime` для належних каналу фактів нативних підтверджень. Тримайте його лінивим на гарячих точках входу каналу за допомогою `createLazyChannelApprovalNativeRuntimeAdapter(...)`, який може імпортувати ваш runtime-модуль на вимогу й водночас дозволяє ядру зібрати життєвий цикл підтверджень.
- Використовуйте `approvalCapability.render` лише тоді, коли каналу справді потрібні власні payload-и підтверджень замість спільного рендерера.
- Використовуйте `approvalCapability.describeExecApprovalSetup`, коли канал хоче, щоб відповідь у disabled-шляху пояснювала точні параметри конфігурації, потрібні для ввімкнення нативних 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` поділено на кілька менших швів:
- `createChannelNativeOriginTargetResolver` типово використовує спільний зіставник channel-route для цілей `{ to, accountId, threadId }`. Передавайте `targetsMatch` лише тоді, коли канал має специфічні для провайдера правила еквівалентності, наприклад зіставлення префікса timestamp у Slack.
- Передавайте `normalizeTargetForMatch` у `createChannelNativeOriginTargetResolver`, коли канал має канонізувати ідентифікатори провайдера перед запуском стандартного зіставника маршрутів або власного callback-а `targetsMatch`, зберігаючи початкову ціль для доставки. Використовуйте `normalizeTarget` лише тоді, коли саму визначену ціль доставки потрібно канонізувати.
- `availability` — чи налаштовано обліковий запис і чи має оброблятися запит
- `presentation`зіставлення спільної view model підтвердження з pending/resolved/expired нативними payload-ами або фінальними діями
- `transport`підготовка цілей і надсилання/оновлення/видалення нативних повідомлень підтвердження
- `interactions` — необов’язкові гачки bind/unbind/clear-action для нативних кнопок або реакцій
- `observe` — необов’язкові гачки діагностики доставки
- Якщо каналу потрібні об’єкти, якими володіє runtime, наприклад клієнт, токен, Bolt app або webhook receiver, реєструйте їх через `openclaw/plugin-sdk/channel-runtime-context`. Загальний реєстр runtime-context дає ядру змогу bootstrap-ити обробники, керовані можливостями, зі стану запуску каналу без додавання wrapper glue, специфічного для підтверджень.
- Звертайтеся до нижчерівневих `createChannelApprovalHandler` або `createChannelNativeApprovalRuntime` лише тоді, коли шов на основі можливостей ще недостатньо виразний.
- Канали нативних підтверджень мають маршрутизувати і `accountId`, і `approvalKind` через ці помічники. `accountId` утримує політику підтверджень для кількох облікових записів у межах правильного bot-облікового запису, а `approvalKind` зберігає доступність поведінки exec і plugin-підтверджень для каналу без жорстко закодованих гілок у ядрі.
- Ядро тепер також відповідає за сповіщення про перемаршрутизацію підтверджень. Плагінам каналів не слід надсилати власні подальші повідомлення "approval went to DMs / another channel" з `createChannelNativeApprovalRuntime`; натомість надавайте точну маршрутизацію origin + approver-DM через спільні помічники можливості підтверджень і дозвольте ядру агрегувати фактичні доставки перед публікацією будь-якого сповіщення назад в ініціювальний чат.
- Зберігайте тип доставленого ідентифікатора підтвердження наскрізно. Нативні клієнти не повинні
вгадувати або переписувати маршрутизацію exec і plugin-підтверджень зі стану, локального для каналу.
- Різні типи підтверджень можуть навмисно відкривати різні нативні поверхні.
- Ядро відповідає за same-chat `/approve`, спільні payload підтверджувальних кнопок і загальну резервну доставку.
- Віддавайте перевагу одному об'єкту `approvalCapability` у Plugin каналу, коли каналу потрібна поведінка, специфічна для підтверджень.
- `ChannelPlugin.approvals` видалено. Розміщуйте факти доставки/native/render/auth для підтверджень у `approvalCapability`.
- `plugin.auth` призначений лише для входу/виходу; ядро більше не читає хуки auth підтверджень із цього об'єкта.
- `approvalCapability.authorizeActorAction` і `approvalCapability.getActionAvailabilityState` є канонічним seam auth підтверджень.
- Використовуйте `approvalCapability.getActionAvailabilityState` для доступності auth same-chat підтверджень.
- Якщо ваш канал експонує native exec підтвердження, використовуйте `approvalCapability.getExecInitiatingSurfaceState` для стану initiating-surface/native-client, коли він відрізняється від auth same-chat підтверджень. Ядро використовує цей exec-специфічний хук, щоб розрізняти `enabled` і `disabled`, вирішувати, чи підтримує початковий канал native exec підтвердження, і включати канал у fallback-підказки native-client. `createApproverRestrictedNativeApprovalCapability(...)` заповнює це для типового випадку.
- Використовуйте `outbound.shouldSuppressLocalPayloadPrompt` або `outbound.beforeDeliverPayload` для поведінки життєвого циклу payload, специфічної для каналу, наприклад приховування дубльованих локальних промптів підтвердження або надсилання індикаторів набору перед доставкою.
- Використовуйте `approvalCapability.delivery` лише для маршрутизації native підтверджень або пригнічення fallback.
- Використовуйте `approvalCapability.nativeRuntime` для фактів native підтверджень, якими володіє канал. Тримайте його lazy на гарячих entrypoints каналу за допомогою `createLazyChannelApprovalNativeRuntimeAdapter(...)`, який може імпортувати ваш runtime-модуль на вимогу, водночас дозволяючи ядру зібрати життєвий цикл підтвердження.
- Використовуйте `approvalCapability.render` лише тоді, коли каналу справді потрібні власні payload підтвердження замість спільного renderer.
- Використовуйте `approvalCapability.describeExecApprovalSetup`, коли канал хоче, щоб відповідь disabled-path пояснювала точні перемикачі конфігурації, потрібні для ввімкнення native exec підтверджень. Хук отримує `{ channel, channelLabel, accountId }`; канали з іменованими акаунтами мають рендерити шляхи в межах акаунта, як-от `channels.<channel>.accounts.<id>.execApprovals.*`, замість top-level defaults.
- Якщо канал може вивести стабільні owner-like DM ідентичності з наявної конфігурації, використовуйте `createResolvedApproverActionAuthAdapter` з `openclaw/plugin-sdk/approval-runtime`, щоб обмежити same-chat `/approve` без додавання логіки ядра, специфічної для підтверджень.
- Якщо каналу потрібна доставка native підтверджень, зосередьте код каналу на нормалізації цілі та фактах транспорту/представлення. Використовуйте `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` і `createApproverRestrictedNativeApprovalCapability` з `openclaw/plugin-sdk/approval-runtime`. Розміщуйте специфічні для каналу факти за `approvalCapability.nativeRuntime`, бажано через `createChannelApprovalNativeRuntimeAdapter(...)` або `createLazyChannelApprovalNativeRuntimeAdapter(...)`, щоб ядро могло зібрати handler і відповідати за фільтрацію запитів, маршрутизацію, дедуплікацію, завершення терміну дії, підписку Gateway і сповіщення про маршрутизацію в інше місце. `nativeRuntime` розділено на кілька менших seam:
- `createChannelNativeOriginTargetResolver` за замовчуванням використовує спільний matcher channel-route для цілей `{ to, accountId, threadId }`. Передавайте `targetsMatch` лише тоді, коли канал має специфічні для провайдера правила еквівалентності, наприклад зіставлення префікса timestamp у Slack.
- Передавайте `normalizeTargetForMatch` у `createChannelNativeOriginTargetResolver`, коли каналу потрібно канонізувати ідентифікатори провайдера перед запуском стандартного route matcher або власного callback `targetsMatch`, зберігаючи оригінальну ціль для доставки. Використовуйте `normalizeTarget` лише тоді, коли саму визначену ціль доставки потрібно канонізувати.
- `availability` — чи налаштовано акаунт і чи потрібно обробляти запит
- `presentation`відображає спільну view model підтвердження в pending/resolved/expired native payload або фінальні дії
- `transport`готує цілі та надсилає/оновлює/видаляє native повідомлення підтвердження
- `interactions` — необов'язкові хуки bind/unbind/clear-action для native кнопок або реакцій
- `observe` — необов'язкові хуки діагностики доставки
- Якщо каналу потрібні runtime-об'єкти, якими він володіє, наприклад client, token, Bolt app або webhook receiver, реєструйте їх через `openclaw/plugin-sdk/channel-runtime-context`. Загальний реєстр runtime-context дає ядру змогу bootstrap capability-driven handlers зі стану запуску каналу без додавання glue wrapper, специфічного для підтверджень.
- Звертайтеся до нижчорівневих `createChannelApprovalHandler` або `createChannelNativeApprovalRuntime` лише тоді, коли capability-driven seam ще недостатньо виразний.
- Канали native підтверджень мають маршрутизувати і `accountId`, і `approvalKind` через ці helpers. `accountId` утримує політику підтверджень для кількох акаунтів у межах правильного bot account, а `approvalKind` зберігає поведінку exec і plugin підтверджень доступною для каналу без hardcoded branches у ядрі.
- Тепер ядро також відповідає за сповіщення про reroute підтверджень. Plugins каналів не мають надсилати власні follow-up повідомлення "підтвердження пішло в DM / інший канал" із `createChannelNativeApprovalRuntime`; натомість експонуйте точну маршрутизацію origin + approver-DM через спільні helpers capability підтверджень і дозвольте ядру агрегувати фактичні доставки перед публікацією будь-якого сповіщення назад у початковий чат.
- Зберігайте тип доставленого ідентифікатора підтвердження end-to-end. Native clients не повинні
вгадувати або переписувати маршрутизацію exec vs plugin підтверджень зі стану, локального для каналу.
- Різні типи підтверджень можуть навмисно експонувати різні native поверхні.
Поточні вбудовані приклади:
- Slack зберігає нативну маршрутизацію підтверджень доступною і для exec-, і для plugin-ідентифікаторів.
- Matrix зберігає ту саму нативну DM/канальну маршрутизацію й UX реакцій для exec-
і plugin-підтверджень, водночас дозволяючи автентифікації відрізнятися за типом підтвердження.
- `createApproverRestrictedNativeApprovalAdapter` досі існує як wrapper сумісності, але новий код має віддавати перевагу builder-у можливостей і надавати `approvalCapability` у плагіні.
- Slack зберігає native маршрутизацію підтверджень доступною і для exec, і для plugin ids.
- Matrix зберігає ту саму native маршрутизацію DM/каналу та UX реакцій для exec
і plugin підтверджень, водночас дозволяючи auth відрізнятися за типом підтвердження.
- `createApproverRestrictedNativeApprovalAdapter` все ще існує як wrapper сумісності, але новий код має віддавати перевагу builder capability і експонувати `approvalCapability` у Plugin.
Для гарячих точок входу каналу надавайте перевагу вужчим runtime-підшляхам, коли вам потрібна лише
Для гарячих entrypoints каналу віддавайте перевагу вужчим runtime subpaths, коли вам потрібна лише
одна частина цієї родини:
- `openclaw/plugin-sdk/approval-auth-runtime`
@ -136,103 +136,103 @@ x-i18n:
- `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`, коли вам не потрібна ширша umbrella-
`openclaw/plugin-sdk/reply-chunking`, коли вам не потрібна ширша umbrella
поверхня.
Зокрема для налаштування:
- `openclaw/plugin-sdk/setup-runtime` охоплює runtime-безпечні помічники налаштування:
import-safe адаптери патчів налаштування (`createPatchedAccountSetupAdapter`,
- `openclaw/plugin-sdk/setup-runtime` охоплює runtime-safe helpers налаштування:
import-safe setup patch adapters (`createPatchedAccountSetupAdapter`,
`createEnvPatchedAccountSetupAdapter`,
`createSetupInputPresenceValidator`), вивід lookup-note,
`createSetupInputPresenceValidator`), виведення lookup-note,
`promptResolvedAllowFrom`, `splitSetupEntries` і делеговані
builder setup-proxy
builders setup-proxy
- `openclaw/plugin-sdk/setup-adapter-runtime` — це вузький env-aware adapter
seam для `createEnvPatchedAccountSetupAdapter`
- `openclaw/plugin-sdk/channel-setup` охоплює builder налаштування optional-install
плюс кілька setup-safe примітивів:
- `openclaw/plugin-sdk/channel-setup` охоплює builders налаштування optional-install
плюс кілька setup-safe primitives:
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
Якщо ваш канал підтримує налаштування або автентифікацію, керовані env, і загальні startup/config
потоки мають знати ці назви env до завантаження runtime, оголосіть їх у
маніфесті плагіна через `channelEnvVars`. Залишайте runtime `envVars` каналу або локальні
константи лише для operator-facing тексту.
Якщо ваш канал підтримує налаштування або auth на основі env і загальні потоки startup/config
мають знати ці env назви до завантаження runtime, оголосіть їх у
маніфесті Plugin через `channelEnvVars`. Тримайте runtime `envVars` каналу або локальні
константи лише для operator-facing copy.
Якщо ваш канал може з’являтися в `status`, `channels list`, `channels status` або
скануваннях SecretRef до запуску runtime Plugin, додайте `openclaw.setupEntry` у
`package.json`. Ця точка входу має бути безпечною для імпорту в read-only шляхах
команд і має повертати метадані каналу, setup-safe адаптер конфігурації, адаптер
статусу та метадані цілей секретів каналу, потрібні для цих зведень. Не
запускайте клієнти, слухачі або transport runtimes із setup entry.
скануваннях SecretRef до запуску середовища виконання plugin, додайте `openclaw.setupEntry` у
`package.json`. Ця точка входу має бути безпечною для імпорту в шляхах команд
лише для читання й має повертати метадані каналу, безпечний для налаштування адаптер конфігурації, адаптер статусу
та метадані цілі секретів каналу, потрібні для цих зведень. Не
запускайте клієнти, слухачі або транспортні середовища виконання з точки входу налаштування.
Також тримайте шлях імпорту основної точки входу каналу вузьким. Discovery може
оцінити entry і модуль Plugin каналу, щоб зареєструвати можливості без активації
каналу. Файли на кшталт `channel-plugin-api.ts` мають експортувати об’єкт Plugin
каналу без імпорту setup wizards, транспортних клієнтів, socket listeners,
subprocess launchers або модулів запуску сервісу. Розміщуйте ці runtime-частини
в модулях, що завантажуються з `registerFull(...)`, runtime setters або lazy
Також тримайте шлях імпорту основної точки входу каналу вузьким. Виявлення може оцінити
точку входу й модуль channel plugin, щоб зареєструвати можливості без активації
каналу. Файли на кшталт `channel-plugin-api.ts` мають експортувати об’єкт channel
plugin без імпорту майстрів налаштування, транспортних клієнтів, socket
listeners, засобів запуску підпроцесів або модулів запуску сервісу. Розміщуйте ці runtime
частини в модулях, завантажених із `registerFull(...)`, runtime setters або lazy
capability adapters.
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` і
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, і
`splitSetupEntries`
- використовуйте ширший seam `openclaw/plugin-sdk/setup` лише тоді, коли вам
також потрібні важчі спільні помічники setup/config, такі як
- використовуйте ширший seam `openclaw/plugin-sdk/setup` лише тоді, коли вам також потрібні
важчі спільні помічники налаштування/конфігурації, такі як
`moveSingleAccountChannelSectionToDefaultAccount(...)`
Якщо ваш канал лише хоче показувати «спочатку встановіть цей Plugin» у
setup-поверхнях, віддавайте перевагу `createOptionalChannelSetupSurface(...)`.
Згенерований adapter/wizard fail closed під час записів конфігурації та
finalization, і вони повторно використовують те саме повідомлення про потрібне
встановлення у validation, finalize та тексті посилання на docs.
Якщо ваш канал хоче лише показувати "спершу встановіть цей plugin" на поверхнях
налаштування, віддайте перевагу `createOptionalChannelSetupSurface(...)`. Згенерований
адаптер/майстер fail closed під час записів конфігурації та фіналізації, і вони повторно використовують
те саме повідомлення про обов’язкове встановлення у валідації, фіналізації та тексті
посилання на документацію.
Для інших гарячих шляхів каналу віддавайте перевагу вузьким помічникам замість
ширших legacy-поверхонь:
Для інших гарячих шляхів каналів віддавайте перевагу вузьким помічникам замість ширших застарілих
поверхонь:
- `openclaw/plugin-sdk/account-core`,
`openclaw/plugin-sdk/account-id`,
`openclaw/plugin-sdk/account-resolution` і
`openclaw/plugin-sdk/account-helpers` для multi-account конфігурації та
fallback стандартного акаунта
`openclaw/plugin-sdk/account-resolution`, і
`openclaw/plugin-sdk/account-helpers` для багаторахункової конфігурації та
fallback для стандартного акаунта
- `openclaw/plugin-sdk/inbound-envelope` і
`openclaw/plugin-sdk/inbound-reply-dispatch` для inbound route/envelope та
record-and-dispatch wiring
- `openclaw/plugin-sdk/messaging-targets` для parsing/matching цілей
зв’язування record-and-dispatch
- `openclaw/plugin-sdk/messaging-targets` для розбору/зіставлення цілей
- `openclaw/plugin-sdk/outbound-media` і
`openclaw/plugin-sdk/outbound-runtime` для завантаження медіа плюс outbound
identity/send delegates і планування payload
- `buildThreadAwareOutboundSessionRoute(...)` з
`openclaw/plugin-sdk/channel-core`, коли outbound route має зберігати явний
`replyToId`/`threadId` або відновлювати поточну сесію `:thread:` після того,
як базовий ключ сесії все ще збігається. Provider plugins можуть
перевизначати пріоритет, поведінку suffix і нормалізацію thread id, коли їхня
платформа має native thread delivery semantics.
- `openclaw/plugin-sdk/thread-bindings-runtime` для lifecycle thread-binding
та реєстрації adapter
- `openclaw/plugin-sdk/agent-media-payload` лише тоді, коли legacy layout поля
agent/media payload усе ще потрібний
- `openclaw/plugin-sdk/telegram-command-config` для нормалізації кастомних
команд Telegram, перевірки дублікатів/конфліктів і fallback-stable контракту
конфігурації команд
`replyToId`/`threadId` або відновлювати поточну сесію `:thread:`
після того, як базовий ключ сесії все ще збігається. Provider plugins можуть перевизначати
пріоритет, поведінку суфікса та нормалізацію thread id, коли їхня платформа
має нативну семантику доставки в thread.
- `openclaw/plugin-sdk/thread-bindings-runtime` для життєвого циклу thread-binding
і реєстрації адаптера
- `openclaw/plugin-sdk/agent-media-payload` лише тоді, коли все ще потрібна застаріла розкладка полів agent/media
payload
- `openclaw/plugin-sdk/telegram-command-config` для нормалізації користувацьких команд Telegram,
валідації дублікатів/конфліктів і fallback-stable контракту конфігурації
команд
Auth-only канали зазвичай можуть зупинитися на стандартному шляху: core обробляє approvals, а Plugin лише надає outbound/auth можливості. Native approval channels, як-от Matrix, Slack, Telegram і custom chat transports, мають використовувати спільні native helpers замість створення власного approval lifecycle.
Канали лише з автентифікацією зазвичай можуть зупинитися на стандартному шляху: core обробляє approvals, а plugin лише відкриває outbound/auth можливості. Нативні канали approval, такі як Matrix, Slack, Telegram і користувацькі chat transports, мають використовувати спільні нативні помічники замість написання власного життєвого циклу approval.
## Політика inbound-згадок
## Політика inbound згадок
Тримайте обробку inbound-згадок розділеною на два шари:
Тримайте обробку inbound згадок розділеною на два шари:
- збирання evidence, яким володіє Plugin
- оцінювання спільної policy
- збирання доказів, що належить plugin
- оцінювання спільної політики
Використовуйте `openclaw/plugin-sdk/channel-mention-gating` для рішень
mention-policy. Використовуйте `openclaw/plugin-sdk/channel-inbound` лише тоді,
коли вам потрібен ширший barrel inbound helpers.
Використовуйте `openclaw/plugin-sdk/channel-mention-gating` для рішень mention-policy.
Використовуйте `openclaw/plugin-sdk/channel-inbound` лише тоді, коли вам потрібен ширший inbound
barrel помічників.
Добре підходить для plugin-local логіки:
@ -240,19 +240,19 @@ mention-policy. Використовуйте `openclaw/plugin-sdk/channel-inboun
- виявлення quoted-bot
- перевірки thread-participation
- виключення service/system-message
- platform-native кеші, потрібні для доведення участі бота
- platform-native кеші, потрібні для доведення участі bot
Добре підходить для спільного helper:
Добре підходить для спільного помічника:
- `requireMention`
- результат explicit mention
- implicit mention allowlist
- command bypass
- фінальне рішення skip
- явний результат згадки
- allowlist неявних згадок
- обхід команд
- остаточне рішення про пропуск
Рекомендований потік:
Бажаний потік:
1. Обчисліть локальні факти mention.
1. Обчисліть локальні факти згадок.
2. Передайте ці факти в `resolveInboundMentionDecision({ facts, policy })`.
3. Використовуйте `decision.effectiveWasMentioned`, `decision.shouldBypassMention` і `decision.shouldSkip` у вашому inbound gate.
@ -293,8 +293,8 @@ const decision = resolveInboundMentionDecision({
if (decision.shouldSkip) return;
```
`api.runtime.channel.mentions` надає ті самі спільні mention helpers для
bundled channel plugins, які вже залежать від runtime injection:
`api.runtime.channel.mentions` відкриває ті самі спільні помічники згадок для
вбудованих channel plugins, які вже залежать від runtime injection:
- `buildMentionRegexes`
- `matchesMentionPatterns`
@ -304,21 +304,21 @@ bundled channel plugins, які вже залежать від runtime injection
Якщо вам потрібні лише `implicitMentionKindWhen` і
`resolveInboundMentionDecision`, імпортуйте з
`openclaw/plugin-sdk/channel-mention-gating`, щоб уникнути завантаження
непов’язаних inbound runtime helpers.
`openclaw/plugin-sdk/channel-mention-gating`, щоб уникнути завантаження не пов’язаних inbound
runtime helpers.
Старіші helpers `resolveMentionGating*` залишаються в
`openclaw/plugin-sdk/channel-inbound` лише як compatibility exports. Новий код
Старіші помічники `resolveMentionGating*` залишаються в
`openclaw/plugin-sdk/channel-inbound` лише як експорти сумісності. Новий код
має використовувати `resolveInboundMentionDecision({ facts, policy })`.
## Покроковий огляд
<Steps>
<a id="step-1-package-and-manifest"></a>
<Step title="Пакет і manifest">
Створіть стандартні файли Plugin. Поле `channel` у `package.json` — це те,
що робить його Plugin каналу. Повну поверхню package-metadata дивіться в
[Налаштування та конфігурація Plugin](/uk/plugins/sdk-setup#openclaw-channel):
<Step title="Пакет і маніфест">
Створіть стандартні файли plugin. Поле `channel` у `package.json` — це
те, що робить це channel plugin. Повну поверхню package-metadata див.
у [Налаштування й конфігурація Plugin](/uk/plugins/sdk-setup#openclaw-channel):
<CodeGroup>
```json package.json
@ -375,17 +375,16 @@ bundled channel plugins, які вже залежать від runtime injection
```
</CodeGroup>
`configSchema` перевіряє `plugins.entries.acme-chat.config`. Використовуйте
його для налаштувань, якими володіє Plugin і які не є конфігурацією акаунта
каналу. `channelConfigs` перевіряє `channels.acme-chat` і є cold-path
джерелом, яке використовують config schema, setup та UI-поверхні до
завантаження runtime Plugin.
`configSchema` валідує `plugins.entries.acme-chat.config`. Використовуйте його для
налаштувань, що належать plugin і не є конфігурацією акаунта каналу. `channelConfigs`
валідує `channels.acme-chat` і є cold-path джерелом, яке використовують schema конфігурації,
налаштування та UI поверхні до завантаження runtime plugin.
</Step>
<Step title="Побудуйте об’єкт Plugin каналу">
Інтерфейс `ChannelPlugin` має багато необов’язкових adapter surfaces.
Почніть із мінімуму — `id` і `setup`і додавайте adapters у міру потреби.
<Step title="Побудуйте об’єкт channel plugin">
Інтерфейс `ChannelPlugin` має багато необов’язкових поверхонь адаптерів. Почніть із
мінімуму — `id` і `setup`і додавайте адаптери за потреби.
Створіть `src/channel.ts`:
@ -480,33 +479,35 @@ bundled channel plugins, які вже залежать від runtime injection
});
```
<Accordion title="Що createChatChannelPlugin робить для вас">
Замість ручної реалізації низькорівневих adapter interfaces ви передаєте
декларативні options, а builder компонує їх:
Для каналів, які приймають і канонічні top-level DM keys, і застарілі вкладені ключі, використовуйте помічники з `plugin-sdk/channel-config-helpers`: `resolveChannelDmAccess`, `resolveChannelDmPolicy`, `resolveChannelDmAllowFrom` і `normalizeChannelDmPolicy` тримають account-local значення попереду успадкованих root значень. Поєднайте той самий resolver із doctor repair через `normalizeLegacyDmAliases`, щоб runtime і migration читали той самий контракт.
| Опція | Що вона підключає |
<Accordion title="Що createChatChannelPlugin робить за вас">
Замість того, щоб реалізовувати низькорівневі інтерфейси адаптерів вручну, ви передаєте
декларативні параметри, а builder компонуватиме їх:
| Параметр | Що він зв’язує |
| --- | --- |
| `security.dm` | Scoped DM security resolver з полів конфігурації |
| `pairing.text` | Text-based DM pairing flow з обміном кодом |
| `threading` | Reply-to-mode resolver (фіксований, account-scoped або custom) |
| `outbound.attachedResults` | Функції надсилання, що повертають result metadata (message IDs) |
| `pairing.text` | Текстовий потік DM pairing з обміном кодом |
| `threading` | Resolver режиму reply-to (фіксований, account-scoped або користувацький) |
| `outbound.attachedResults` | Функції надсилання, які повертають result metadata (message IDs) |
Ви також можете передати raw adapter objects замість декларативних options,
Ви також можете передати необроблені об’єкти адаптерів замість декларативних параметрів,
якщо вам потрібен повний контроль.
Raw outbound adapters можуть визначати функцію `chunker(text, limit, ctx)`.
Необов’язкове `ctx.formatting` переносить delivery-time formatting decisions,
такі як `maxLinesPerMessage`; застосуйте його перед надсиланням, щоб reply
threading і межі chunk були один раз розв’язані спільною outbound delivery.
Send contexts також містять `replyToIdSource` (`implicit` або `explicit`),
коли native reply target було розв’язано, щоб payload helpers могли
зберігати explicit reply tags без споживання implicit single-use reply slot.
Raw outbound adapters may define a `chunker(text, limit, ctx)` function.
The optional `ctx.formatting` carries delivery-time formatting decisions
such as `maxLinesPerMessage`; apply it before sending so reply threading
and chunk boundaries are resolved once by shared outbound delivery.
Send contexts also include `replyToIdSource` (`implicit` or `explicit`)
when a native reply target was resolved, so payload helpers can preserve
explicit reply tags without consuming an implicit single-use reply slot.
</Accordion>
</Step>
<Step title="Підʼєднайте точку входу">
Створіть `index.ts`:
<Step title="Wire the entry point">
Create `index.ts`:
```typescript index.ts
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
@ -541,21 +542,21 @@ bundled channel plugins, які вже залежать від runtime injection
});
```
Розміщуйте CLI-дескриптори, що належать каналу, у `registerCliMetadata(...)`, щоб OpenClaw
Розмістіть CLI-дескриптори, що належать каналу, у `registerCliMetadata(...)`, щоб OpenClaw
міг показувати їх у кореневій довідці без активації повного runtime каналу,
тоді як звичайні повні завантаження все одно підхоплюватимуть ті самі дескриптори для справжньої реєстрації
команд. Залиште `registerFull(...)` для роботи, потрібної лише під час runtime.
тоді як звичайні повні завантаження й надалі підхоплюватимуть ті самі дескриптори для справжньої
реєстрації команд. Залиште `registerFull(...)` для роботи, потрібної лише під час runtime.
Якщо `registerFull(...)` реєструє RPC-методи Gateway, використовуйте
префікс, специфічний для Plugin. Основні адміністративні простори назв (`config.*`,
префікс, специфічний для Plugin. Основні адміністративні простори імен (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) залишаються зарезервованими й завжди
розвʼязуються в `operator.admin`.
`defineChannelPluginEntry` автоматично обробляє поділ режимів реєстрації. Перегляньте
[Точки входу](/uk/plugins/sdk-entrypoints#definechannelpluginentry), щоб дізнатися про всі
параметри.
розв’язуються як `operator.admin`.
`defineChannelPluginEntry` автоматично обробляє розділення режимів реєстрації. Див.
[Точки входу](/uk/plugins/sdk-entrypoints#definechannelpluginentry) для всіх
параметрів.
</Step>
<Step title="Додайте запис налаштування">
<Step title="Add a setup entry">
Створіть `setup-entry.ts` для легкого завантаження під час onboarding:
```typescript setup-entry.ts
@ -565,21 +566,21 @@ bundled channel plugins, які вже залежать від runtime injection
export default defineSetupPluginEntry(acmeChatPlugin);
```
OpenClaw завантажує це замість повного запису, коли канал вимкнено
або не налаштовано. Це дає змогу не підтягувати важкий код runtime під час потоків налаштування.
OpenClaw завантажує це замість повної точки входу, коли канал вимкнений
або не налаштований. Це дає змогу не підтягувати важкий runtime-код під час потоків налаштування.
Докладніше див. [Налаштування та конфігурація](/uk/plugins/sdk-setup#setup-entry).
Канали bundled workspace, які відокремлюють безпечні для налаштування експорти в sidecar
Канали bundled workspace, які виносять setup-safe експорти в sidecar
модулі, можуть використовувати `defineBundledChannelSetupEntry(...)` з
`openclaw/plugin-sdk/channel-entry-contract`, коли їм також потрібен
явний setter runtime під час налаштування.
явний setter runtime під час setup.
</Step>
<Step title="Обробіть вхідні повідомлення">
Ваш Plugin має отримувати повідомлення з платформи та пересилати їх до
OpenClaw. Типовий шаблон — це Webhook, який перевіряє запит і
передає його через вхідний обробник вашого каналу:
<Step title="Handle inbound messages">
Ваш Plugin має отримувати повідомлення з платформи й пересилати їх до
OpenClaw. Типовий патерн — Webhook, який перевіряє запит і
передає його через inbound-обробник вашого каналу:
```typescript
registerFull(api) {
@ -603,16 +604,16 @@ bundled channel plugins, які вже залежать від runtime injection
```
<Note>
Обробка вхідних повідомлень залежить від каналу. Кожен channel Plugin володіє
власним вхідним pipeline. Перегляньте bundled channel Plugins
(наприклад, пакет Plugin Microsoft Teams або Google Chat) для реальних шаблонів.
Обробка inbound-повідомлень є специфічною для каналу. Кожен channel Plugin володіє
власним inbound pipeline. Перегляньте bundled channel Plugins
(наприклад, пакет Plugin для Microsoft Teams або Google Chat) для реальних патернів.
</Note>
</Step>
<a id="step-6-test"></a>
<Step title="Тест">
Пишіть колоковані тести в `src/channel.test.ts`:
<Step title="Test">
Пишіть colocated тести в `src/channel.test.ts`:
```typescript src/channel.test.ts
import { describe, it, expect } from "vitest";
@ -650,7 +651,7 @@ bundled channel plugins, які вже залежать від runtime injection
pnpm test -- <bundled-plugin-root>/acme-chat/
```
Спільні тестові помічники див. у [Тестування](/uk/plugins/sdk-testing).
Для спільних test helpers див. [Тестування](/uk/plugins/sdk-testing).
</Step>
</Steps>
@ -675,36 +676,36 @@ bundled channel plugins, які вже залежать від runtime injection
## Розширені теми
<CardGroup cols={2}>
<Card title="Параметри потоків" icon="git-branch" href="/uk/plugins/sdk-entrypoints#registration-mode">
Фіксовані, привʼязані до облікового запису або власні режими відповіді
<Card title="Threading options" icon="git-branch" href="/uk/plugins/sdk-entrypoints#registration-mode">
Фіксовані, account-scoped або користувацькі режими відповіді
</Card>
<Card title="Інтеграція інструмента повідомлень" icon="puzzle" href="/uk/plugins/architecture#channel-plugins-and-the-shared-message-tool">
<Card title="Message tool integration" icon="puzzle" href="/uk/plugins/architecture#channel-plugins-and-the-shared-message-tool">
describeMessageTool і виявлення дій
</Card>
<Card title="Розвʼязання цілі" icon="crosshair" href="/uk/plugins/architecture-internals#channel-target-resolution">
<Card title="Target resolution" icon="crosshair" href="/uk/plugins/architecture-internals#channel-target-resolution">
inferTargetChatType, looksLikeId, resolveTarget
</Card>
<Card title="Помічники runtime" icon="settings" href="/uk/plugins/sdk-runtime">
<Card title="Runtime helpers" icon="settings" href="/uk/plugins/sdk-runtime">
TTS, STT, медіа, subagent через api.runtime
</Card>
</CardGroup>
<Note>
Деякі bundled helper seams досі існують для підтримки bundled-plugin та
сумісності. Вони не є рекомендованим шаблоном для нових channel Plugins;
надавайте перевагу загальним підшляхам channel/setup/reply/runtime зі спільної поверхні SDK,
якщо ви не підтримуєте цю родину bundled Plugin безпосередньо.
Деякі bundled helper seams досі існують для супроводу bundled-plugin і
сумісності. Вони не є рекомендованим патерном для нових channel Plugins;
віддавайте перевагу generic channel/setup/reply/runtime subpaths зі спільної поверхні SDK,
якщо ви не супроводжуєте цю сім’ю bundled Plugins безпосередньо.
</Note>
## Наступні кроки
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — якщо ваш Plugin також надає моделі
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів підшляхів
- [Тестування SDK](/uk/plugins/sdk-testing) — тестові утиліти та контрактні тести
- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник імпортів subpath
- [Тестування SDK](/uk/plugins/sdk-testing) — тестові утиліти й contract tests
- [Маніфест Plugin](/uk/plugins/manifest) — повна схема маніфесту
## Повʼязане
## Повязане
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)
- [Створення Plugins](/uk/plugins/building-plugins)
- [Plugins для агентського harness](/uk/plugins/sdk-agent-harness)
- [Agent harness Plugins](/uk/plugins/sdk-agent-harness)

File diff suppressed because it is too large Load Diff

View File

@ -1,112 +1,112 @@
---
read_when:
- Вибір правильного підшляху plugin-sdk для імпорту Plugin
- Аудит підшляхів вбудованих Plugin і допоміжних інтерфейсів
summary: 'Каталог підшляхів Plugin SDK: які імпорти де розташовані, згруповано за областями'
- Аудит підшляхів вбудованих Plugin і допоміжних поверхонь
summary: 'Каталог підшляхів Plugin SDK: які імпорти де розміщені, згруповано за областями'
title: Підшляхи Plugin SDK
x-i18n:
generated_at: "2026-04-29T13:54:40Z"
generated_at: "2026-04-29T15:39:38Z"
model: gpt-5.5
provider: openai
source_hash: 02c86fd840e7f68ea86d7b7710278a942e4f0c69154c17393d449790e5474a4f
source_hash: a2b2cb0880317d4bd3fa7c1803afc119d500b3f8ae3c5d444839c9d4d7633b80
source_path: plugins/sdk-subpaths.md
workflow: 16
---
SDK Plugin надається як набір вузьких підшляхів у `openclaw/plugin-sdk/`.
На цій сторінці наведено часто використовувані підшляхи, згруповані за призначенням. Згенерований
повний список із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`;
зарезервовані допоміжні підшляхи bundled-plugin наведені там, але вони є деталлю
реалізації, якщо сторінка документації явно не рекомендує їх. Maintainers можуть перевіряти активні
Plugin SDK надається як набір вузьких підшляхів у `openclaw/plugin-sdk/`.
На цій сторінці наведено поширені підшляхи, згруповані за призначенням. Згенерований
повний список із 200+ підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`;
зарезервовані допоміжні підшляхи вбудованих Plugin також є там, але вони є деталями
реалізації, якщо сторінка документації явно не просуває їх. Мейнтейнери можуть перевіряти активні
зарезервовані допоміжні підшляхи за допомогою `pnpm plugins:boundary-report:summary`; невикористані
зарезервовані допоміжні експорти спричиняють збій звіту CI замість того, щоб залишатися в публічному SDK
зарезервовані допоміжні експорти провалюють звіт CI, замість того щоб залишатися в публічному SDK
як неактивний борг сумісності.
Посібник зі створення Plugin див. у [Огляд SDK Plugin](/uk/plugins/sdk-overview).
Посібник з авторства Plugin див. в [огляді Plugin SDK](/uk/plugins/sdk-overview).
## Точка входу Plugin
| Підшлях | Ключові експорти |
| Підшлях | Ключові експорти |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/testing` | Широкий barrel сумісності для застарілих тестів Plugin; для нових тестів розширень віддавайте перевагу сфокусованим тестовим підшляхам |
| `plugin-sdk/plugin-test-api` | Мінімальний builder mock `OpenClawPluginApi` для прямих unit-тестів реєстрації Plugin |
| `plugin-sdk/agent-runtime-test-contracts` | Фікстури contract власного адаптера agent-runtime для профілів auth, придушення доставки, класифікації fallback, хуків інструментів, накладень prompt, схем і відновлення транскрипту |
| `plugin-sdk/channel-test-helpers` | Допоміжні засоби тестування contract каналу для життєвого циклу облікового запису каналу, каталогу, send-config, mock runtime, hook, точки входу bundled channel, timestamp конверта, відповіді pairing та generic channel |
| `plugin-sdk/channel-target-testing` | Спільний набір тестів випадків помилок розв’язання цілі каналу |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби contract для реєстрації Plugin, маніфесту пакета, публічного артефакту, runtime API, побічних ефектів імпорту та прямого імпорту |
| `plugin-sdk/plugin-test-runtime` | Фікстури runtime Plugin, registry, реєстрації provider, setup-wizard і runtime task-flow для тестів |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби contract для runtime provider, auth, discovery, onboard, catalog, media capability, replay policy, realtime STT live-audio, web-search/fetch і wizard |
| `plugin-sdk/provider-http-test-mocks` | Opt-in HTTP/auth mocks Vitest для тестів provider, які перевіряють `plugin-sdk/provider-http` |
| `plugin-sdk/test-env` | Фікстури тестового середовища, fetch/network, disposable HTTP server, incoming request, live-test, тимчасової файлової системи та керування часом |
| `plugin-sdk/test-fixtures` | Generic фікстури тестів CLI, sandbox, skill, agent-message, system-event, перезавантаження модуля, шляху bundled plugin, terminal, chunking, auth-token і typed-case |
| `plugin-sdk/test-node-mocks` | Сфокусовані допоміжні засоби mock для вбудованих Node-модулів для використання всередині фабрик Vitest `vi.mock("node:*")` |
| `plugin-sdk/migration` | Допоміжні засоби елементів provider міграції, як-от `createMigrationItem`, constants причин, markers стану елементів, допоміжні засоби редагування та `summarizeMigrationItems` |
| `plugin-sdk/migration-runtime` | Допоміжні засоби runtime міграції, як-от `copyMigrationFileItem` і `writeMigrationReport` |
| `plugin-sdk/plugin-test-api` | Мінімальний mock builder `OpenClawPluginApi` для прямих модульних тестів реєстрації Plugin |
| `plugin-sdk/agent-runtime-test-contracts` | Фікстури контрактів нативного адаптера середовища виконання агента для профілів автентифікації, придушення доставки, класифікації fallback, хуків інструментів, накладень промптів, схем і відновлення транскрипту |
| `plugin-sdk/channel-test-helpers` | Допоміжні засоби для тестування життєвого циклу акаунта каналу, каталогу, send-config, runtime mock, хуків, точки входу вбудованого каналу, часової позначки envelope, відповіді pairing і загального контракту каналу |
| `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок розв’язання цілі каналу |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів для реєстрації Plugin, маніфесту пакета, публічного артефакту, runtime API, побічного ефекту імпорту та прямого імпорту |
| `plugin-sdk/plugin-test-runtime` | Фікстури середовища виконання Plugin, реєстру, реєстрації провайдера, майстра налаштування та runtime task-flow для тестів |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів для середовища виконання провайдера, автентифікації, виявлення, onboard, каталогу, можливостей медіа, політики replay, realtime STT live-audio, web-search/fetch і майстра |
| `plugin-sdk/provider-http-test-mocks` | Опційні HTTP/auth моки Vitest для тестів провайдера, які перевіряють `plugin-sdk/provider-http` |
| `plugin-sdk/test-env` | Фікстури тестового середовища, fetch/network, одноразового HTTP-сервера, вхідного запиту, live-test, тимчасової файлової системи та керування часом |
| `plugin-sdk/test-fixtures` | Загальні тестові фікстури CLI, sandbox, skill, agent-message, system-event, перезавантаження модуля, шляху вбудованого Plugin, terminal, chunking, auth-token і typed-case |
| `plugin-sdk/test-node-mocks` | Сфокусовані допоміжні засоби моків вбудованих модулів Node для використання всередині фабрик Vitest `vi.mock("node:*")` |
| `plugin-sdk/migration` | Допоміжні засоби елементів провайдера міграції, як-от `createMigrationItem`, константи причин, маркери статусу елементів, допоміжні засоби редагування та `summarizeMigrationItems` |
| `plugin-sdk/migration-runtime` | Допоміжні засоби міграції в середовищі виконання, як-от `copyMigrationFileItem` і `writeMigrationReport` |
<AccordionGroup>
<Accordion title="Підшляхи каналів">
<Accordion title="Channel subpaths">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Експорт Zod schema кореневого `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Спільні допоміжні засоби setup wizard, allowlist prompts, builders стану налаштування |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, промпти allowlist, будівники статусу налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби multi-account config/action-gate, допоміжні засоби default-account fallback |
| `plugin-sdk/account-core` | Допоміжні засоби config/action-gate для кількох акаунтів, допоміжні засоби fallback для стандартного акаунта |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису та default-fallback |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку акаунта + default-fallback |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби account-list/account-action |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline`, `resolveChannelSourceReplyDeliveryMode` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Спільні primitives schema конфігурації каналу та generic builder |
| `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації bundled OpenClaw channel лише для підтримуваних bundled plugins |
| `plugin-sdk/channel-config-schema-legacy` | Застарілий alias сумісності для схем bundled-channel config |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із bundled-contract fallback |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби gate авторизації команд |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter`, `resolveChannelDmAccess`, `resolveChannelDmAllowFrom`, `resolveChannelDmPolicy`, `normalizeChannelDmPolicy`, `normalizeLegacyDmAliases` |
| `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та загальний builder |
| `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації вбудованих каналів OpenClaw лише для підтримуваних вбудованих Plugin |
| `plugin-sdk/channel-config-schema-legacy` | Застарілий alias сумісності для схем конфігурації bundled-channel |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram з fallback на bundled-contract |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзу авторизації команд |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, `createChannelRunQueue`, допоміжні засоби життєвого циклу/фіналізації draft stream |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби inbound route і builder конверта |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби inbound record-and-dispatch |
| `plugin-sdk/messaging-targets` | Допоміжні засоби parsing/matching цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження outbound media |
| `plugin-sdk/outbound-send-deps` | Легковаговий пошук залежностей outbound send для адаптерів каналів |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби outbound delivery, identity, send delegate, session, форматування та планування payload |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для вхідного маршруту + envelope builder |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та dispatch вхідних даних |
| `plugin-sdk/messaging-targets` | Допоміжні засоби парсингу/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-send-deps` | Легкий пошук залежностей вихідного надсилання для адаптерів каналів |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної доставки, ідентичності, send delegate, session, форматування та планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації poll |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding і адаптера |
| `plugin-sdk/agent-media-payload` | Застарілий builder agent media payload |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби conversation/thread binding, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб runtime config snapshot |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding та адаптера |
| `plugin-sdk/agent-media-payload` | Застарілий builder медіа payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби прив’язки conversation/thread, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка runtime config |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби розв’язання runtime group-policy |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби snapshot/summary стану каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі primitives schema конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude exports Plugin каналу |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/зведення статусу каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви channel config-schema |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації channel config-write |
| `plugin-sdk/channel-plugin-common` | Спільні експорти prelude для Plugin каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби рішень group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard direct-DM |
| `plugin-sdk/discord` | Застарілий facade сумісності Discord для опублікованого `@openclaw/discord@2026.3.13` і відстежуваної сумісності owner; нові plugins мають використовувати generic підшляхи SDK каналів |
| `plugin-sdk/telegram-account` | Застарілий facade сумісності розв’язання облікового запису Telegram для відстежуваної сумісності owner; нові plugins мають використовувати injected runtime helpers або generic підшляхи SDK каналів |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби semantic message presentation, delivery та застарілих interactive replies. Див. [Презентація повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Barrel сумісності для inbound debounce, mention matching, mention-policy helpers і envelope helpers |
| `plugin-sdk/group-access` | Спільні допоміжні засоби ухвалення рішень group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для direct-DM |
| `plugin-sdk/discord` | Застарілий фасад сумісності Discord для опублікованого `@openclaw/discord@2026.3.13` і відстежуваної сумісності власника; нові Plugin мають використовувати загальні підшляхи channel SDK |
| `plugin-sdk/telegram-account` | Застарілий фасад сумісності розв’язання акаунта Telegram для відстежуваної сумісності власника; нові Plugin мають використовувати ін’єктовані runtime helpers або загальні підшляхи channel SDK |
| `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби інтерактивної відповіді. Див. [Представлення повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Barrel сумісності для inbound debounce, зіставлення згадок, допоміжних засобів mention-policy та envelope |
| `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні засоби inbound debounce |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy, mention marker і mention text без ширшої поверхні inbound runtime |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy, маркера згадки та тексту згадки без ширшої поверхні inbound runtime |
| `plugin-sdk/channel-envelope` | Вузькі допоміжні засоби форматування inbound envelope |
| `plugin-sdk/channel-location` | Допоміжні засоби context і formatting розташування каналу |
| `plugin-sdk/channel-logging` | Допоміжні засоби logging каналу для inbound drops і typing/ack failures |
| `plugin-sdk/channel-send-result` | Типи результату reply |
| `plugin-sdk/channel-actions` | Допоміжні засоби message-action каналу, а також застарілі native schema helpers, збережені для сумісності Plugin |
| `plugin-sdk/channel-route` | Спільна нормалізація route, parser-driven target resolution, stringification thread-id, dedupe/compact route keys, типи parsed-target і допоміжні засоби порівняння route/target |
| `plugin-sdk/channel-targets` | Допоміжні засоби parsing цілей; виклики порівняння route мають використовувати `plugin-sdk/channel-route` |
| `plugin-sdk/channel-contract` | Типи contract каналу |
| `plugin-sdk/channel-location` | Контекст розташування каналу та допоміжні засоби форматування |
| `plugin-sdk/channel-logging` | Допоміжні засоби журналювання каналу для inbound drops і помилок typing/ack |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-actions` | Допоміжні засоби message-action каналу, а також застарілі допоміжні засоби нативної схеми, збережені для сумісності Plugin |
| `plugin-sdk/channel-route` | Спільні допоміжні засоби нормалізації маршруту, parser-driven розв’язання цілі, перетворення thread-id на рядок, dedupe/compact ключів маршруту, типів parsed-target і порівняння route/target |
| `plugin-sdk/channel-targets` | Допоміжні засоби парсингу цілей; виклики порівняння маршрутів мають використовувати `plugin-sdk/channel-route` |
| `plugin-sdk/channel-contract` | Типи контрактів каналу |
| `plugin-sdk/channel-feedback` | Підключення feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, як-от `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret target |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-contract, як-от `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment` і типи secret target |
</Accordion>
<Accordion title="Підшляхи провайдерів">
@ -114,218 +114,218 @@ x-i18n:
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/lmstudio` | Підтримуваний фасад провайдера LM Studio для налаштування, виявлення каталогу та підготовки моделей під час виконання |
| `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад виконання LM Studio для локальних стандартних значень сервера, виявлення моделей, заголовків запитів і допоміжних засобів для завантажених моделей |
| `plugin-sdk/provider-setup` | Відібрані допоміжні засоби для налаштування локальних/саморозміщених провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Спеціалізовані допоміжні засоби налаштування OpenAI-сумісних саморозміщених провайдерів |
| `plugin-sdk/cli-backend` | Стандартні значення бекенду CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби розв’язання API-ключів під час виконання для provider plugins |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу API-ключів/запису профілю, як-от `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний збирач результату автентифікації OAuth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider plugins |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища для автентифікації провайдера |
| `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад середовища виконання LM Studio для локальних стандартних налаштувань сервера, виявлення моделей, заголовків запитів і допоміжних засобів для завантажених моделей |
| `plugin-sdk/provider-setup` | Відібрані допоміжні засоби налаштування локальних/самостійно розгорнутих провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Спеціалізовані допоміжні засоби налаштування OpenAI-сумісних самостійно розгорнутих провайдерів |
| `plugin-sdk/cli-backend` | Стандартні налаштування бекенду CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключів під час виконання для Plugin провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби onboarding/запису профілю API-ключа, як-от `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth-автентифікації |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для Plugin провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища автентифікації провайдера |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні збирачі політик повторного відтворення, допоміжні засоби кінцевих точок провайдера та допоміжні засоби нормалізації ідентифікаторів моделей, як-от `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Runtime-хук розширення каталогу провайдера та межі реєстру plugin-провайдера для контрактних тестів |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політики replay, допоміжні засоби endpoint провайдера та допоміжні засоби нормалізації ідентифікаторів моделей, як-от `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Runtime hook доповнення каталогу провайдера та seams реєстру plugin-провайдерів для контрактних тестів |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `buildManifestModelProviderConfig`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби можливостей HTTP/кінцевих точок провайдера, HTTP-помилки провайдера та допоміжні засоби multipart-форм для транскрипції аудіо |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби можливостей HTTP/endpoint провайдера, HTTP-помилки провайдера та допоміжні засоби multipart-форм для аудіотранскрипції |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, як-от `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешу провайдера web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення ввімкнення plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, а також scoped-сетери/гетери облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешу/виконання провайдера web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту провайдера, як-от захищений fetch, перетворення транспортних повідомлень і записувані потоки транспортних подій |
| `plugin-sdk/provider-onboard` | Допоміжні засоби patch для конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби singleton/map/cache у межах процесу |
| `plugin-sdk/group-activation` | Допоміжні засоби вузького режиму активації груп і розбору команд |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування провайдера web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення ввімкнення Plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, а також обмежені за областю setter/getter облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime провайдера web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика, а також допоміжні засоби сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` і подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи stream wrapper, а також спільні допоміжні засоби wrapper для Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби нативного транспорту провайдера, як-от захищений fetch, перетворення транспортних повідомлень і writable потоки транспортних подій |
| `plugin-sdk/provider-onboard` | Допоміжні засоби patch конфігурації onboarding |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
| `plugin-sdk/group-activation` | Вузькі допоміжні засоби режиму активації групи та розбору команд |
</Accordion>
<Accordion title="Підшляхи автентифікації та безпеки">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, зокрема динамічне форматування меню аргументів, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Збирачі повідомлень команд/довідки, як-от `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби розв’язання затверджувача та автентифікації дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби нативних профілів/фільтрів затвердження exec |
| `plugin-sdk/approval-delivery-runtime` | Адаптери нативних можливостей/доставки затверджень |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб розв’язання approval Gateway |
| `plugin-sdk/approval-handler-adapter-runtime` | Легкі допоміжні засоби завантаження нативного адаптера затверджень для гарячих точок входу каналів |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби виконання обробника затверджень; віддавайте перевагу вужчим межам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби нативної цілі затвердження + прив’язування облікового запису |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, зокрема форматування меню динамічних аргументів, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, як-от `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення затверджувача та автентифікації дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра затвердження нативного exec |
| `plugin-sdk/approval-delivery-runtime` | Адаптери нативної можливості/доставки затверджень |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення approval gateway |
| `plugin-sdk/approval-handler-adapter-runtime` | Легкі допоміжні засоби завантаження нативного адаптера затверджень для гарячих entrypoint каналів |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime обробника затверджень; надавайте перевагу вужчим seams adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби нативної цілі затвердження + прив’язки облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді на затвердження exec/plugin |
| `plugin-sdk/approval-runtime` | Допоміжні засоби payload затвердження exec/plugin, допоміжні засоби маршрутизації/виконання нативних затверджень і допоміжні засоби структурованого відображення затверджень, як-от `formatApprovalDisplayPath` |
| `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання дедуплікації вхідних відповідей |
| `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби контрактних тестів каналів без широкого testing barrel |
| `plugin-sdk/command-auth-native` | Нативна автентифікація команд, динамічне форматування меню аргументів і допоміжні засоби нативної цілі сесії |
| `plugin-sdk/approval-runtime` | Допоміжні засоби payload затвердження exec/plugin, допоміжні засоби маршрутизації/runtime нативного затвердження та допоміжні засоби структурованого відображення затверджень, як-от `formatApprovalDisplayPath` |
| `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання dedupe вхідних відповідей |
| `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби контрактного тестування каналів без широкого testing barrel |
| `plugin-sdk/command-auth-native` | Нативна автентифікація команд, форматування меню динамічних аргументів і допоміжні засоби нативної цілі сеансу |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-primitives-runtime` | Легкі предикати тексту команд для гарячих шляхів каналів |
| `plugin-sdk/command-surface` | Нормалізація тіла команди та допоміжні засоби поверхні команд |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команди та command-surface |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання контрактів секретів для поверхонь секретів каналів/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби типізації `coerceSecretRef` і SecretRef для розбору контракту секретів/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, обмеження DM, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів за сталий час і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби allowlist хостів і політики SSRF приватної мережі |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої runtime-поверхні інфраструктури |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, SSRF-захищеного fetch, помилки SSRF і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору вводу секретів |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби Webhook-запитів/цілей і raw-приведення websocket/body |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту/тайм-ауту |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь секретів каналу/Plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, gating DM, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів за сталий час і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби allowlist хостів і політики SSRF для приватних мереж |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої інфраструктурної runtime-поверхні |
| `plugin-sdk/ssrf-runtime` | Pinned-dispatcher, захищений SSRF fetch, помилка SSRF і допоміжні засоби політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору введення секретів |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби Webhook-запитів/цілей і приведення raw websocket/body |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту/таймауту |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
<Accordion title="Підшляхи середовища виконання та сховища">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/логування/резервного копіювання/встановлення Plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, логера, тайм-ауту, повторної спроби та backoff |
| `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/типових значень, розбору CDP URL і допоміжних засобів auth для керування браузером |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку runtime-контексту каналу |
| `plugin-sdk/runtime` | Широкі допоміжні засоби для середовища виконання/логування/резервного копіювання/встановлення Plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби для середовища виконання, середовища, логера, тайм-ауту, повторних спроб і backoff |
| `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/значень за замовчуванням, розбору CDP URL і допоміжних засобів автентифікації керування браузером |
| `plugin-sdk/channel-runtime-context` | Допоміжні засоби для реєстрації та пошуку загального runtime-context каналу |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive для Plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби конвеєра Webhook/внутрішніх hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби лінивого імпорту/прив'язування runtime, як-от `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби для команд/хуків/http/інтерактивності Plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби конвеєра webhook/внутрішніх хуків |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби лінивого імпорту/прив’язування середовища виконання, як-от `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби виконання процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування, версії, виклику аргументів і лінивих груп команд |
| `plugin-sdk/gateway-runtime` | Клієнт Gateway, допоміжний засіб запуску клієнта з готовим циклом подій, CLI RPC Gateway, помилки протоколу Gateway і допоміжні засоби патчів статусу каналу |
| `plugin-sdk/config-types` | Поверхня конфігурації лише з типами для форм конфігурації Plugin, як-от `OpenClawConfig`, і типів конфігурації каналів/провайдерів |
| `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку runtime-конфігурації Plugin, як-от `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` |
| `plugin-sdk/config-mutation` | Допоміжні засоби транзакційної мутації конфігурації, як-от `mutateConfigFile`, `replaceConfigFile` і `logConfigUpdated` |
| `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби знімків конфігурації поточного процесу, як-от `getRuntimeConfig`, `getRuntimeConfigSnapshot`, і сетери тестових знімків |
| `plugin-sdk/telegram-command-config` | Нормалізація імен/описів команд Telegram та перевірки дублікатів/конфліктів, навіть коли вбудована контрактна поверхня Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на посилання файлів без широкого barrel text-runtime |
| `plugin-sdk/approval-runtime` | Допоміжні засоби схвалення exec/Plugin, будівники approval-capability, допоміжні засоби auth/профілю, нативні допоміжні засоби маршрутизації/runtime і форматування шляху структурованого відображення схвалень |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, поділ на фрагменти, диспетчеризація, Heartbeat, планувальник відповідей |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби диспетчеризації/фіналізації відповідей і міток розмов |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби коротковіконної історії відповідей і маркери, як-от `buildHistoryContext`, `HISTORY_CONTEXT_MARKER`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/gateway-runtime` | Клієнт Gateway, допоміжний засіб запуску клієнта з готовим циклом подій, Gateway CLI RPC, помилки протоколу Gateway і допоміжні засоби патчів статусу каналу |
| `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації Plugin, як-от `OpenClawConfig`, і типів конфігурації каналів/провайдерів |
| `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку runtime plugin-config, як-от `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` |
| `plugin-sdk/config-mutation` | Допоміжні засоби транзакційної зміни конфігурації, як-от `mutateConfigFile`, `replaceConfigFile` і `logConfigUpdated` |
| `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби знімка конфігурації поточного процесу, як-от `getRuntimeConfig`, `getRuntimeConfigSnapshot`, і сетери тестових знімків |
| `plugin-sdk/telegram-command-config` | Нормалізація назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel text-runtime |
| `plugin-sdk/approval-runtime` | Допоміжні засоби схвалення exec/Plugin, конструктори можливостей схвалення, допоміжні засоби auth/profile, допоміжні засоби native routing/runtime і форматування структурованого шляху відображення схвалення |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби середовища виконання вхідних повідомлень/відповідей, поділ на фрагменти, dispatch, Heartbeat, планувальник відповідей |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповіді та міток розмов |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби історії відповідей короткого вікна та маркери, як-от `buildHistoryContext`, `HISTORY_CONTEXT_MARKER`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби поділу тексту/markdown на фрагменти |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища сесій, ключа сесії, updated-at і мутації сховища |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби поділу тексту/Markdown на фрагменти |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища сесій, ключа сесії, updated-at і зміни сховища |
| `plugin-sdk/cron-store-runtime` | Допоміжні засоби шляху/завантаження/збереження сховища Cron |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів каталогів стану/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби маршруту/ключа сесії/прив'язування акаунта, як-от `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумку статусу каналу/акаунта, типові значення runtime-state і допоміжні засоби метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби резолвера цілей |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів до директорій стану/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби маршруту/ключа сесії/прив’язки облікового запису, як-от `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу каналу/облікового запису, значення за замовчуванням runtime-state і допоміжні засоби метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби resolver цілі |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL з fetch/request-подібних входів |
| `plugin-sdk/run-command` | Засіб запуску команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Спільні зчитувачі параметрів інструментів/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload з об'єктів результатів інструментів |
| `plugin-sdk/tool-send` | Витягування канонічних полів цілі надсилання з аргументів інструмента |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби логера підсистеми та редагування чутливих даних |
| `plugin-sdk/request-url` | Видобування рядкових URL з вхідних даних, подібних до fetch/request |
| `plugin-sdk/run-command` | Виконавець команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Спільні читачі параметрів інструментів/CLI |
| `plugin-sdk/tool-payload` | Видобування нормалізованих payload з обєктів результатів інструментів |
| `plugin-sdk/tool-send` | Видобування канонічних полів цілі надсилання з аргументів інструменту |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Логер підсистеми та допоміжні засоби редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown і перетворення |
| `plugin-sdk/model-session-runtime` | Допоміжні засоби перевизначення моделі/сесії, як-от `applyModelOverrideToSessionEntry` і `resolveAgentMaxConcurrent` |
| `plugin-sdk/talk-config-runtime` | Допоміжні засоби розв'язання конфігурації провайдера Talk |
| `plugin-sdk/talk-config-runtime` | Допоміжні засоби розвязання конфігурації провайдера Talk |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON |
| `plugin-sdk/file-lock` | Допоміжні засоби реентерабельного file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу дедуплікації з підтримкою на диску |
| `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/сесії та reply-dispatch |
| `plugin-sdk/acp-runtime-backend` | Легковагі допоміжні засоби реєстрації ACP backend і reply-dispatch для Plugin, завантажених під час startup |
| `plugin-sdk/acp-binding-resolve-runtime` | Розв'язання прив'язувань ACP лише для читання без імпортів lifecycle startup |
| `plugin-sdk/agent-config-primitives` | Вузькі runtime-примітиви схеми конфігурації агента |
| `plugin-sdk/boolean-param` | Нестрогий зчитувач булевих параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби розв'язання збігів небезпечних імен |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів спарювання |
| `plugin-sdk/file-lock` | Допоміжні засоби повторно вхідного file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу дедуплікації на диску |
| `plugin-sdk/acp-runtime` | Допоміжні засоби середовища виконання/сесії ACP і reply-dispatch |
| `plugin-sdk/acp-runtime-backend` | Легковагові допоміжні засоби реєстрації бекенду ACP і reply-dispatch для Plugin, завантажених під час запуску |
| `plugin-sdk/acp-binding-resolve-runtime` | Розв’язання прив’язки ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви config-schema середовища виконання агента |
| `plugin-sdk/boolean-param` | Нестрогий читач булевих параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби розв’язання збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів сполучення |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів пасивного каналу, статусу та ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді команди/провайдера `/models` |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації нативних команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня довіреного Plugin для низькорівневих harness агентів: типи harness, допоміжні засоби steering/abort активного запуску, допоміжні засоби bridge інструментів OpenClaw, допоміжні засоби політики інструментів runtime-plan, класифікація результатів термінала, допоміжні засоби форматування/деталізації прогресу інструментів і утиліти результатів спроб |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації native команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агентів: типи harness, допоміжні засоби керування/переривання active-run, допоміжні засоби bridge інструментів OpenClaw, допоміжні засоби політики інструментів runtime-plan, класифікація результатів термінала, допоміжні засоби форматування/деталізації прогресу інструментів і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `plugin-sdk/async-lock-runtime` | Допоміжний засіб process-local async lock для малих файлів runtime-стану |
| `plugin-sdk/async-lock-runtime` | Допоміжний засіб process-local async lock для невеликих файлів стану середовища виконання |
| `plugin-sdk/channel-activity-runtime` | Допоміжний засіб телеметрії активності каналу |
| `plugin-sdk/concurrency-runtime` | Допоміжний засіб обмеження паралельності асинхронних задач |
| `plugin-sdk/dedupe-runtime` | Допоміжні засоби кешу дедуплікації в пам'яті |
| `plugin-sdk/delivery-queue-runtime` | Допоміжний засіб draining очікуваних вихідних доставок |
| `plugin-sdk/concurrency-runtime` | Допоміжний засіб обмеженої конкурентності асинхронних завдань |
| `plugin-sdk/dedupe-runtime` | Допоміжні засоби кешу дедуплікації в памяті |
| `plugin-sdk/delivery-queue-runtime` | Допоміжний засіб drain вихідної черги очікуваної доставки |
| `plugin-sdk/file-access-runtime` | Допоміжні засоби безпечних шляхів локальних файлів і джерел медіа |
| `plugin-sdk/heartbeat-runtime` | Допоміжні засоби подій Heartbeat і видимості |
| `plugin-sdk/number-runtime` | Допоміжний засіб числового приведення |
| `plugin-sdk/heartbeat-runtime` | Допоміжні засоби подій і видимості Heartbeat |
| `plugin-sdk/number-runtime` | Допоміжний засіб приведення чисел |
| `plugin-sdk/secure-random-runtime` | Допоміжні засоби безпечних токенів/UUID |
| `plugin-sdk/system-event-runtime` | Допоміжні засоби черги системних подій |
| `plugin-sdk/transport-ready-runtime` | Допоміжний засіб очікування готовності транспорту |
| `plugin-sdk/infra-runtime` | Застарілий compatibility shim; використовуйте наведені вище сфокусовані підшляхи runtime |
| `plugin-sdk/infra-runtime` | Застарілий compatibility shim; використовуйте наведені вище сфокусовані підшляхи середовища виконання |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців, подій і trace-context |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичного прапорця, події та trace-context |
| `plugin-sdk/error-runtime` | Граф помилок, форматування, спільні допоміжні засоби класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Обгорнутий fetch, proxy, опція EnvHttpProxyAgent і допоміжні засоби pinned lookup |
| `plugin-sdk/runtime-fetch` | Dispatcher-aware runtime fetch без імпортів proxy/guarded-fetch |
| `plugin-sdk/response-limit-runtime` | Обмежений зчитувач тіла відповіді без широкої media runtime поверхні |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив'язування розмови без налаштованої маршрутизації прив'язувань або сховищ спарювання |
| `plugin-sdk/response-limit-runtime` | Обмежений читач response-body без широкої media runtime surface |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки розмови без налаштованої маршрутизації прив’язки або сховищ сполучення |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби session-store без широких імпортів запису/обслуговування конфігурації |
| `plugin-sdk/context-visibility-runtime` | Розв'язання видимості контексту та фільтрування додаткового контексту без широких імпортів конфігурації/безпеки |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення та нормалізації primitive record/string без імпортів markdown/logging |
| `plugin-sdk/context-visibility-runtime` | Розв’язання видимості контексту та фільтрація додаткового контексту без широких імпортів конфігурації/безпеки |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення та нормалізації примітивного record/рядка без імпортів markdown/logging |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і SCP host |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації повторних спроб і runner повторних спроб |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація каталогів на основі конфігурації |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації повторних спроб і виконавця повторних спроб |
| `plugin-sdk/agent-runtime` | Допоміжні засоби директорії/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація директорій на основі конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
<Accordion title="Можливості та тестові підшляхи">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби отримання/перетворення/зберігання медіа, визначення розмірів відео на базі ffprobe та збирачі медіанавантаження |
| `plugin-sdk/media-store` | Вузькі допоміжні засоби сховища медіа, як-от `saveMediaBuffer` |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби резервного перемикання для генерації медіа, вибір кандидатів і повідомлення про відсутню модель |
| `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також експорти допоміжних засобів для зображень/аудіо, орієнтовані на провайдерів |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби для тексту/markdown/логування, як-от вилучення видимого для асистента тексту, допоміжні засоби рендерингу/розбиття на фрагменти/таблиць markdown, допоміжні засоби редагування, допоміжні засоби тегів-директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжний засіб розбиття вихідного тексту на фрагменти |
| `plugin-sdk/speech` | Типи мовленнєвих провайдерів, а також експорти директив, реєстру, валідації, збирача TTS, сумісного з OpenAI, і допоміжних засобів мовлення, орієнтовані на провайдерів |
| `plugin-sdk/speech-core` | Спільні типи мовленнєвих провайдерів, реєстр, директива, нормалізація та експорти допоміжних засобів мовлення |
| `plugin-sdk/realtime-transcription` | Типи провайдерів транскрипції в реальному часі, допоміжні засоби реєстру та спільний допоміжний засіб сеансу WebSocket |
| `plugin-sdk/realtime-voice` | Типи провайдерів голосу в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень, а також допоміжні засоби URL для ресурсів/даних зображень і збирач провайдера зображень, сумісний з OpenAI |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, резервне перемикання, автентифікація та допоміжні засоби реєстру |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби резервного перемикання, пошук провайдера та розбір посилань на моделі |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби резервного перемикання, пошук провайдера та розбір посилань на моделі |
| `plugin-sdk/webhook-targets` | Реєстр цілей Webhook і допоміжні засоби встановлення маршрутів |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/media-runtime` | Спільні помічники для отримання/перетворення/збереження медіа, визначення розмірів відео на основі ffprobe та побудовники медіа-навантажень |
| `plugin-sdk/media-store` | Вузькі помічники медіасховища, такі як `saveMediaBuffer` |
| `plugin-sdk/media-generation-runtime` | Спільні помічники резервного перемикання для генерації медіа, вибір кандидатів і повідомлення про відсутні моделі |
| `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також експорти помічників для зображень/аудіо, орієнтовані на провайдерів |
| `plugin-sdk/text-runtime` | Спільні помічники для тексту/markdown/логування, такі як вилучення видимого для асистента тексту, помічники рендерингу/розбиття/таблиць markdown, помічники редагування, помічники тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Помічник розбиття вихідного тексту |
| `plugin-sdk/speech` | Типи мовленнєвих провайдерів, а також орієнтовані на провайдерів експорти директив, реєстру, валідації, побудовника TTS, сумісного з OpenAI, і мовленнєвих помічників |
| `plugin-sdk/speech-core` | Спільні типи мовленнєвих провайдерів, реєстр, директива, нормалізація та експорти мовленнєвих помічників |
| `plugin-sdk/realtime-transcription` | Типи провайдерів транскрипції в реальному часі, помічники реєстру та спільний помічник сесії WebSocket |
| `plugin-sdk/realtime-voice` | Типи провайдерів голосу в реальному часі та помічники реєстру |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень, а також помічники для ресурсів зображень/data URL і побудовник провайдера зображень, сумісний з OpenAI |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, резервне перемикання, автентифікація та помічники реєстру |
| `plugin-sdk/music-generation` | Типи провайдера/запиту/результату генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, помічники резервного перемикання, пошук провайдера та розбір model-ref |
| `plugin-sdk/video-generation` | Типи провайдера/запиту/результату генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, помічники резервного перемикання, пошук провайдера та розбір model-ref |
| `plugin-sdk/webhook-targets` | Реєстр цілей Webhook і помічники встановлення маршрутів |
| `plugin-sdk/webhook-path` | Помічники нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні помічники завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для споживачів plugin SDK |
| `plugin-sdk/testing` | Широкий barrel сумісності для застарілих тестів plugin. Нові тести розширень мають натомість імпортувати сфокусовані підшляхи SDK, як-от `plugin-sdk/agent-runtime-test-contracts`, `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/test-env` або `plugin-sdk/test-fixtures` |
| `plugin-sdk/plugin-test-api` | Мінімальний допоміжний засіб `createTestPluginApi` для модульних тестів прямої реєстрації plugin без імпорту мостів тестових допоміжних засобів репозиторію |
| `plugin-sdk/agent-runtime-test-contracts` | Нативні фікстури контрактів адаптера agent-runtime для тестів автентифікації, доставки, fallback, tool-hook, prompt-overlay, схеми та проєкції транскрипту |
| `plugin-sdk/channel-test-helpers` | Орієнтовані на канали тестові допоміжні засоби для загальних контрактів дій/налаштування/стану, перевірок каталогів, життєвого циклу запуску облікового запису, потоків send-config, runtime-моків, проблем стану, вихідної доставки та реєстрації hook |
| `plugin-sdk/channel-target-testing` | Спільний набір випадків помилок розв’язання цілей для тестів каналів |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів пакета Plugin, реєстрації, публічного артефакту, прямого імпорту, runtime API та побічних ефектів імпорту |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів runtime провайдера, автентифікації, виявлення, onboard, каталогу, майстра, можливостей медіа, політики відтворення, realtime STT live-audio, web-search/fetch і потоку |
| `plugin-sdk/provider-http-test-mocks` | Опціональні HTTP/auth моки Vitest для тестів провайдерів, які перевіряють `plugin-sdk/provider-http` |
| `plugin-sdk/test-fixtures` | Загальні фікстури захоплення runtime CLI, контексту пісочниці, автора skill, agent-message, system-event, перезавантаження модуля, шляху bundled plugin, terminal-text, chunking, auth-token і typed-case |
| `plugin-sdk/test-node-mocks` | Сфокусовані допоміжні засоби моків вбудованих модулів Node для використання всередині фабрик Vitest `vi.mock("node:*")` |
| `plugin-sdk/testing` | Широкий barrel сумісності для застарілих тестів plugin. Нові тести розширень натомість мають імпортувати сфокусовані підшляхи SDK, такі як `plugin-sdk/agent-runtime-test-contracts`, `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/test-env` або `plugin-sdk/test-fixtures` |
| `plugin-sdk/plugin-test-api` | Мінімальний помічник `createTestPluginApi` для модульних тестів прямої реєстрації plugin без імпорту мостів тестових помічників репозиторію |
| `plugin-sdk/agent-runtime-test-contracts` | Нативні фікстури контрактів адаптера agent-runtime для тестів автентифікації, доставки, резервного режиму, tool-hook, prompt-overlay, схеми та проєкції транскрипту |
| `plugin-sdk/channel-test-helpers` | Орієнтовані на канали тестові помічники для загальних контрактів дій/налаштування/статусу, перевірок каталогів, життєвого циклу запуску облікового запису, потоків send-config, runtime-моків, проблем статусу, вихідної доставки та реєстрації hook |
| `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок визначення цілі в тестах каналів |
| `plugin-sdk/plugin-test-contracts` | Помічники контрактів для пакета plugin, реєстрації, публічного артефакту, прямого імпорту, runtime API та побічних ефектів імпорту |
| `plugin-sdk/provider-test-contracts` | Помічники контрактів для runtime провайдера, автентифікації, виявлення, onboard, каталогу, майстра, медіа-можливостей, політики replay, realtime STT live-audio, web-search/fetch і stream |
| `plugin-sdk/provider-http-test-mocks` | Опційні HTTP/auth-моки Vitest для тестів провайдерів, що перевіряють `plugin-sdk/provider-http` |
| `plugin-sdk/test-fixtures` | Загальні фікстури для захоплення runtime CLI, sandbox-контексту, skill writer, agent-message, system-event, перезавантаження модуля, шляху bundled plugin, terminal-text, chunking, auth-token і typed-case |
| `plugin-sdk/test-node-mocks` | Сфокусовані помічники моків вбудованих модулів Node для використання всередині фабрик Vitest `vi.mock("node:*")` |
</Accordion>
<Accordion title="Підшляхи пам’яті">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Вбудована поверхня допоміжних засобів memory-core для допоміжних засобів manager/config/file/CLI |
| `plugin-sdk/memory-core` | Поверхня bundled memory-core помічників для менеджера/конфігурації/файлів/помічників CLI |
| `plugin-sdk/memory-core-engine-runtime` | Runtime-фасад індексу/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти рушія foundation хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста пам’яті, доступ до реєстру, локальний провайдер і загальні batch/remote допоміжні засоби |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти рушія QMD хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти рушія foundation для хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста пам’яті, доступ до реєстру, локальний провайдер і загальні batch/remote помічники |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD-рушія хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти рушія сховища хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби стану хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби runtime CLI хоста пам’яті |
| `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` | Спільні допоміжні засоби керованого markdown для суміжних із пам’яттю plugin |
| `plugin-sdk/memory-host-search` | Runtime-фасад активної пам’яті для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний щодо постачальника псевдонім для допоміжних засобів стану хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні помічники хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Помічники запитів хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Помічники секретів хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Помічники журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Помічники статусу хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Помічники runtime CLI хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Помічники core runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Помічники файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Нейтральний до постачальника alias для помічників core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Нейтральний до постачальника alias для помічників журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Нейтральний до постачальника alias для помічників файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Спільні managed-markdown помічники для plugin, суміжних із пам’яттю |
| `plugin-sdk/memory-host-search` | Runtime-фасад Active memory для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний до постачальника alias для помічників статусу хоста пам’яті |
</Accordion>
<Accordion title="Зарезервовані підшляхи вбудованих допоміжних засобів">
Наразі зарезервованих підшляхів SDK для вбудованих допоміжних засобів немає. Допоміжні засоби, специфічні для власника,
розташовані всередині пакета plugin власника, тоді як повторно використовувані контракти хоста
використовують загальні підшляхи SDK, як-от `plugin-sdk/gateway-runtime`,
<Accordion title="Зарезервовані підшляхи bundled-helper">
Наразі немає зарезервованих підшляхів SDK bundled-helper. Помічники, специфічні для власника,
розташовані всередині пакета plugin-власника, тоді як повторно використовувані контракти хоста
використовують загальні підшляхи SDK, такі як `plugin-sdk/gateway-runtime`,
`plugin-sdk/security-runtime` і `plugin-sdk/plugin-config-runtime`.
</Accordion>
</AccordionGroup>
@ -334,4 +334,4 @@ x-i18n:
- [Огляд Plugin SDK](/uk/plugins/sdk-overview)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)
- [Створення plugin](/uk/plugins/building-plugins)
- [Створення plugins](/uk/plugins/building-plugins)