diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md
index 4b56ecb03..4843f501b 100644
--- a/docs/uk/channels/discord.md
+++ b/docs/uk/channels/discord.md
@@ -4,46 +4,46 @@ read_when:
summary: Стан підтримки бота Discord, можливості та конфігурація
title: Discord
x-i18n:
- generated_at: "2026-04-29T13:26:32Z"
+ generated_at: "2026-04-29T15:39:19Z"
model: gpt-5.5
provider: openai
- source_hash: a7ea64c3de512b9e194630c819a8183aa4574f86526c6dd205181fc486df8ac1
+ source_hash: a1d3dc0962b6140a727ea8e08f01227e18d2feffa7ce50c3614fb7aa4dd9d044
source_path: channels/discord.md
workflow: 16
---
-Готово до DM і каналів гільдій через офіційний Discord gateway.
+Готово для DM і каналів гільдій через офіційний Discord gateway.
- Discord DM за замовчуванням переходять у режим сполучення.
+ Discord DM за замовчуванням працюють у режимі сполучення.
Нативна поведінка команд і каталог команд.
- Міжканальна діагностика та потік відновлення.
+ Міжканальна діагностика та процес відновлення.
## Швидке налаштування
-Вам потрібно створити новий застосунок із ботом, додати бота на ваш сервер і сполучити його з OpenClaw. Рекомендуємо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спочатку створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**).
+Вам потрібно створити новий застосунок із ботом, додати бота на свій сервер і сполучити його з OpenClaw. Рекомендуємо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спочатку створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**).
-
- Перейдіть до [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть його, наприклад, "OpenClaw".
+
+ Перейдіть на [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть його приблизно "OpenClaw".
- Натисніть **Bot** на бічній панелі. Установіть **Username** на ім'я, яким ви називаєте свого агента OpenClaw.
+ Натисніть **Bot** на бічній панелі. Установіть **Username** на ім’я, яким ви називаєте свого агента OpenClaw.
- Залишаючись на сторінці **Bot**, прокрутіть униз до **Privileged Gateway Intents** і ввімкніть:
+ Залишаючись на сторінці **Bot**, прокрутіть униз до **Privileged Gateway Intents** і увімкніть:
- - **Message Content Intent** (обов'язково)
- - **Server Members Intent** (рекомендовано; обов'язково для списків дозволених ролей і зіставлення імен з ID)
- - **Presence Intent** (необов'язково; потрібно лише для оновлень присутності)
+ - **Message Content Intent** (обов’язково)
+ - **Server Members Intent** (рекомендовано; обов’язково для allowlist ролей і зіставлення імен з ID)
+ - **Presence Intent** (необов’язково; потрібен лише для оновлень присутності)
@@ -51,22 +51,22 @@ x-i18n:
Прокрутіть назад угору на сторінці **Bot** і натисніть **Reset Token**.
- Попри назву, це створює ваш перший токен — нічого не "скидається".
+ Попри назву, це створює ваш перший токен — нічого не "скидається."
- Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він незабаром вам знадобиться.
+ Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він скоро знадобиться.
-
- Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з потрібними дозволами, щоб додати бота на ваш сервер.
+
+ Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з правильними дозволами, щоб додати бота на свій сервер.
- Прокрутіть униз до **OAuth2 URL Generator** і ввімкніть:
+ Прокрутіть униз до **OAuth2 URL Generator** і увімкніть:
- `bot`
- `applications.commands`
- Нижче з'явиться розділ **Bot Permissions**. Увімкніть принаймні:
+ Нижче з’явиться розділ **Bot Permissions**. Увімкніть щонайменше:
**General Permissions**
- View Channels
@@ -75,33 +75,33 @@ x-i18n:
- Read Message History
- Embed Links
- Attach Files
- - Add Reactions (необов'язково)
+ - Add Reactions (необов’язково)
- Це базовий набір для звичайних текстових каналів. Якщо плануєте публікувати в Discord threads, зокрема в робочих потоках форумних або медіаканалів, які створюють або продовжують thread, також увімкніть **Send Messages in Threads**.
- Скопіюйте згенерований URL унизу, вставте його у браузер, виберіть сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте бачити бота на сервері Discord.
+ Це базовий набір для звичайних текстових каналів. Якщо ви плануєте публікувати в гілках Discord, зокрема у workflows форумних або медіаканалів, які створюють або продовжують гілку, також увімкніть **Send Messages in Threads**.
+ Скопіюйте згенерований URL унизу, вставте його у браузер, виберіть свій сервер і натисніть **Continue**, щоб під’єднатися. Тепер ви маєте бачити свого бота на сервері Discord.
- Повернувшись у застосунок Discord, потрібно ввімкнути Developer Mode, щоб копіювати внутрішні ID.
+ Повернувшись у застосунок Discord, потрібно увімкнути Developer Mode, щоб мати змогу копіювати внутрішні ID.
- 1. Натисніть **User Settings** (піктограма шестерні поруч із вашим аватаром) → **Advanced** → увімкніть **Developer Mode**
- 2. Клацніть правою кнопкою **піктограму сервера** на бічній панелі → **Copy Server ID**
- 3. Клацніть правою кнопкою **власний аватар** → **Copy User ID**
+ 1. Натисніть **User Settings** (значок шестерні поруч з аватаром) → **Advanced** → увімкніть **Developer Mode**
+ 2. Клацніть правою кнопкою миші **піктограму сервера** на бічній панелі → **Copy Server ID**
+ 3. Клацніть правою кнопкою миші **власний аватар** → **Copy User ID**
- Збережіть **Server ID** і **User ID** поруч із вашим Bot Token — на наступному кроці ви надішлете всі три до OpenClaw.
+ Збережіть свої **Server ID** і **User ID** поруч із Bot Token — на наступному кроці ви надішлете всі три до OpenClaw.
- Щоб сполучення працювало, Discord має дозволити вашому боту надсилати вам DM. Клацніть правою кнопкою **піктограму сервера** → **Privacy Settings** → увімкніть **Direct Messages**.
+ Щоб сполучення працювало, Discord має дозволити вашому боту надсилати вам DM. Клацніть правою кнопкою миші **піктограму сервера** → **Privacy Settings** → увімкніть **Direct Messages**.
- Це дозволяє учасникам сервера (включно з ботами) надсилати вам DM. Залиште це ввімкненим, якщо хочете використовувати Discord DM з OpenClaw. Якщо плануєте використовувати лише канали гільдій, можете вимкнути DM після сполучення.
+ Це дозволяє учасникам сервера (включно з ботами) надсилати вам DM. Залиште це увімкненим, якщо хочете використовувати Discord DM з OpenClaw. Якщо ви плануєте використовувати лише канали гільдії, можете вимкнути DM після сполучення.
-
- Токен вашого Discord-бота є секретом (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту.
+
+ Токен вашого Discord бота є секретом (як пароль). Установіть його на машині, де запущено OpenClaw, перш ніж писати своєму агенту.
```bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
@@ -111,21 +111,21 @@ openclaw config set channels.discord.enabled true --strict-json
openclaw gateway
```
- Якщо OpenClaw уже працює як фоновий сервіс, перезапустіть його через застосунок OpenClaw Mac або зупинивши й повторно запустивши процес `openclaw gateway run`.
- Для встановлень керованого сервісу запустіть `openclaw gateway install` з оболонки, де присутній `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб сервіс міг розв'язати env SecretRef після перезапуску.
+ Якщо OpenClaw уже запущено як фонову службу, перезапустіть його через Mac-застосунок OpenClaw або зупинивши й повторно запустивши процес `openclaw gateway run`.
+ Для встановлень керованої служби виконайте `openclaw gateway install` з оболонки, де присутня `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб служба могла розв’язати env SecretRef після перезапуску.
-
- Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і скажіть йому. Якщо Discord є вашим першим каналом, скористайтеся вкладкою CLI / config.
+
+ Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому. Якщо Discord — ваш перший канал, натомість скористайтеся вкладкою CLI / config.
- > "Я вже задав свій токен Discord-бота в конфігурації. Заверши налаштування Discord із User ID `` і Server ID ``."
+ > "I already set my Discord bot token in config. Please finish Discord setup with User ID `` and Server ID ``."
- Якщо ви віддаєте перевагу файловій конфігурації, задайте:
+ Якщо ви віддаєте перевагу файловій конфігурації, установіть:
```json5
{
@@ -142,27 +142,27 @@ openclaw gateway
}
```
- Env fallback для облікового запису за замовчуванням:
+ Env fallback для типового облікового запису:
```bash
DISCORD_BOT_TOKEN=...
```
- Підтримуються plaintext-значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets).
+ Підтримуються plaintext значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` через провайдери env/file/exec. Див. [Керування секретами](/uk/gateway/secrets).
-
- Зачекайте, доки gateway запрацює, а потім надішліть DM своєму боту в Discord. Він відповість кодом сполучення.
+
+ Зачекайте, доки gateway запуститься, а потім надішліть DM своєму боту в Discord. Він відповість кодом сполучення.
-
- Надішліть код сполучення своєму агенту в наявному каналі:
+
+ Надішліть код сполучення своєму агенту у вашому наявному каналі:
- > "Підтвердь цей код сполучення Discord: ``"
+ > "Approve this Discord pairing code: ``"
@@ -182,22 +182,22 @@ openclaw pairing approve discord
-Розв'язання токенів враховує обліковий запис. Значення токена з конфігурації мають пріоритет над env fallback. `DISCORD_BOT_TOKEN` використовується лише для облікового запису за замовчуванням.
-Якщо два ввімкнені облікові записи Discord розв'язуються в один і той самий токен бота, OpenClaw запускає лише один монітор gateway для цього токена. Токен із конфігурації має пріоритет над env fallback за замовчуванням; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис позначається як вимкнений.
-Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` на рівні виклику використовується для цього виклику. Це стосується дій надсилання та читання/перевірки (наприклад read/search/fetch/thread/pins/permissions). Політика облікового запису й налаштування повторних спроб усе одно беруться з вибраного облікового запису в активному runtime-знімку.
+Розв’язання токена враховує обліковий запис. Значення токена в конфігурації мають пріоритет над env fallback. `DISCORD_BOT_TOKEN` використовується лише для типового облікового запису.
+Якщо два ввімкнені облікові записи Discord розв’язуються в той самий токен бота, OpenClaw запускає лише один gateway monitor для цього токена. Токен із конфігурації має пріоритет над типовим env fallback; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис повідомляється як вимкнений.
+Для розширених вихідних викликів (інструмент повідомлень/дії з каналами) явний `token` для кожного виклику використовується саме для цього виклику. Це стосується дій send і read/probe-style (наприклад read/search/fetch/thread/pins/permissions). Політика облікового запису та налаштування повторних спроб усе одно беруться з вибраного облікового запису в активному runtime snapshot.
## Рекомендовано: налаштуйте робочий простір гільдії
-Коли DM запрацюють, ви можете налаштувати свій сервер Discord як повний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
+Коли DM запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
-
- Це дає змогу вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в DM.
+
+ Це дозволяє вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в DM.
-
- > "Додай мій Discord Server ID `` до списку дозволених гільдій"
+
+ > "Add my Discord Server ID `` to the guild allowlist"
@@ -223,16 +223,16 @@ openclaw pairing approve discord
- За замовчуванням ваш агент відповідає в каналах гільдії лише тоді, коли його згадано через @mention. Для приватного сервера ви, ймовірно, хочете, щоб він відповідав на кожне повідомлення.
+ За замовчуванням ваш агент відповідає в каналах гільдії лише коли його @mentioned. Для приватного сервера, ймовірно, ви хочете, щоб він відповідав на кожне повідомлення.
- У каналах гільдії звичайні фінальні відповіді помічника за замовчуванням залишаються приватними. Видимий вивід Discord потрібно надсилати явно інструментом `message`, тож агент може за замовчуванням залишатися в режимі спостереження й публікувати лише тоді, коли вирішить, що відповідь у каналі корисна.
+ У каналах гільдії звичайні фінальні відповіді асистента за замовчуванням залишаються приватними. Видимий вивід Discord потрібно явно надсилати за допомогою інструмента `message`, щоб агент за замовчуванням міг лишатися непомітним і публікувати лише тоді, коли вирішить, що відповідь у каналі корисна.
-
- > "Дозволь моєму агенту відповідати на цьому сервері без потреби бути @mentioned"
+
+ > "Allow my agent to respond on this server without having to be @mentioned"
- Задайте `requireMention: false` у конфігурації гільдії:
+ Установіть `requireMention: false` у конфігурації гільдії:
```json5
{
@@ -248,72 +248,72 @@ openclaw pairing approve discord
}
```
- Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат, задайте `messages.groupChat.visibleReplies: "automatic"`.
+ Щоб відновити legacy автоматичні фінальні відповіді для групових/канальних кімнат, установіть `messages.groupChat.visibleReplies: "automatic"`.
-
- За замовчуванням довгострокова пам'ять (MEMORY.md) завантажується лише в DM-сесіях. Канали гільдії не завантажують MEMORY.md автоматично.
+
+ За замовчуванням довготривала пам’ять (MEMORY.md) завантажується лише в DM-сесіях. Канали гільдії не завантажують MEMORY.md автоматично.
-
- > "Коли я ставлю запитання в каналах Discord, використовуй memory_search або memory_get, якщо тобі потрібен довгостроковий контекст із MEMORY.md."
+
+ > "When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md."
- Якщо вам потрібен спільний контекст у кожному каналі, розмістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони впроваджуються в кожну сесію). Зберігайте довгострокові нотатки в `MEMORY.md` і звертайтеся до них за потреби через інструменти пам'яті.
+ Якщо вам потрібен спільний контекст у кожному каналі, розмістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони ін’єктуються для кожної сесії). Зберігайте довготривалі нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам’яті.
-Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкуватися. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що пасує вашому робочому процесу.
+Тепер створіть кілька каналів на своєму сервері Discord і почніть спілкуватися. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що пасує вашому workflow.
-## Модель виконання
+## Runtime model
-- Gateway володіє з'єднанням Discord.
-- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються до Discord.
-- Метадані гільдії/каналу Discord додаються до підказки моделі як ненадійний
- контекст, а не як видимий користувачу префікс відповіді. Якщо модель копіює цей конверт
- назад, OpenClaw вилучає скопійовані метадані з вихідних відповідей і з
- майбутнього контексту повторного відтворення.
+- Gateway володіє підключенням Discord.
+- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються в Discord.
+- Метадані гільдії/каналу Discord додаються до model prompt як недовірений
+ контекст, а не як видимий користувачу префікс відповіді. Якщо модель копіює цей envelope
+ назад, OpenClaw прибирає скопійовані метадані з вихідних відповідей і з
+ майбутнього replay context.
- За замовчуванням (`session.dmScope=main`) прямі чати спільно використовують головну сесію агента (`agent:main:main`).
-- Канали гільдій є ізольованими ключами сесій (`agent::discord:channel:`).
+- Канали гільдії є ізольованими ключами сесій (`agent::discord:channel:`).
- Групові DM ігноруються за замовчуванням (`channels.discord.dm.groupEnabled=false`).
-- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), але все одно несуть `CommandTargetSessionKey` до маршрутизованої сесії розмови.
-- Текстова доставка оголошень cron/heartbeat до Discord використовує фінальну
- видиму помічнику відповідь один раз. Медіа та структуровані payload-и компонентів залишаються
- багатоповідомними, коли агент випускає кілька payload-ів, придатних для доставки.
+- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас усе ще передаючи `CommandTargetSessionKey` до маршрутизованої розмовної сесії.
+- Текстова доставка оголошень cron/heartbeat у Discord використовує фінальну
+ видиму асистенту відповідь один раз. Media і payload структурованих компонентів залишаються
+ багатоповідомленнєвими, коли агент емісує кілька доставних payload.
## Форумні канали
-Форумні та медіаканали Discord приймають лише дописи thread. OpenClaw підтримує два способи їх створення:
+Форумні та медіаканали Discord приймають лише дописи в гілках. OpenClaw підтримує два способи їх створення:
-- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити thread. Заголовок thread використовує перший непорожній рядок вашого повідомлення.
-- Використайте `openclaw message thread create`, щоб створити thread напряму. Не передавайте `--message-id` для форумних каналів.
+- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити гілку. Назва гілки використовує перший непорожній рядок вашого повідомлення.
+- Використайте `openclaw message thread create`, щоб створити гілку напряму. Не передавайте `--message-id` для форумних каналів.
-Приклад: надіслати до батьківського форуму, щоб створити thread
+Приклад: надіслати до батьківського форуму, щоб створити гілку
```bash
openclaw message send --channel discord --target channel: \
--message "Topic title\nBody of the post"
```
-Приклад: явно створити форумний thread
+Приклад: явно створити форумну гілку
```bash
openclaw message thread create --channel discord --target channel: \
--thread-name "Topic title" --message "Body of the post"
```
-Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого thread (`channel:`).
+Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самої гілки (`channel:`).
## Інтерактивні компоненти
-OpenClaw підтримує контейнери Discord components v2 для повідомлень агентів. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та відповідають наявним налаштуванням Discord `replyToMode`.
+OpenClaw підтримує контейнери Discord components v2 для повідомлень агентів. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення й дотримуються наявних налаштувань Discord `replyToMode`.
Підтримувані блоки:
@@ -321,13 +321,13 @@ OpenClaw підтримує контейнери Discord components v2 для п
- Рядки дій дозволяють до 5 кнопок або одне меню вибору
- Типи вибору: `string`, `user`, `role`, `mentionable`, `channel`
-За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, елементів вибору та форм до завершення їхнього строку дії.
+За замовчуванням компоненти є одноразовими. Установіть `components.reusable=true`, щоб дозволити використовувати кнопки, вибори й форми кілька разів до завершення строку їх дії.
-Щоб обмежити, хто може натискати кнопку, установіть `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Коли це налаштовано, користувачі без збігу отримують тимчасову відмову.
+Щоб обмежити, хто може натиснути кнопку, установіть `allowedUsers` для цієї кнопки (ідентифікатори користувачів Discord, теги або `*`). Коли це налаштовано, користувачі, які не збігаються, отримують ефемерну відмову.
-Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з розкривними списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибору тимчасова, і використовувати її може лише користувач, який її викликав.
+Слеш-команди `/model` і `/models` відкривають інтерактивний вибірник моделі з розкривними списками постачальника, моделі та сумісного середовища виконання, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибірника є ефемерною, і використовувати її може лише користувач, який її викликав.
-Вкладення файлів:
+Файлові вкладення:
- Блоки `file` мають указувати на посилання вкладення (`attachment://`)
- Надайте вкладення через `media`/`path`/`filePath` (один файл); використовуйте `media-gallery` для кількох файлів
@@ -335,7 +335,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
Модальні форми:
-- Додайте `components.modal` із до 5 полями
+- Додайте `components.modal` із щонайбільше 5 полями
- Типи полів: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select`
- OpenClaw автоматично додає кнопку запуску
@@ -393,52 +393,54 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
-## Контроль доступу та маршрутизація
+## Контроль доступу й маршрутизація
-
- `channels.discord.dmPolicy` керує доступом DM (застаріле: `channels.discord.dm.policy`):
+
+ `channels.discord.dmPolicy` керує доступом до DM. `channels.discord.allowFrom` є канонічним списком дозволів для DM.
- `pairing` (за замовчуванням)
- `allowlist`
- - `open` (потребує, щоб `channels.discord.allowFrom` містив `"*"`; застаріле: `channels.discord.dm.allowFrom`)
+ - `open` (потребує, щоб `channels.discord.allowFrom` містив `"*"`)
- `disabled`
- Якщо політика DM не відкрита, невідомих користувачів блокують (або пропонують сполучення в режимі `pairing`).
+ Якщо політика DM не є відкритою, невідомі користувачі блокуються (або отримують запит на спарювання в режимі `pairing`).
Пріоритет для кількох облікових записів:
- `channels.discord.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- Для одного облікового запису `allowFrom` має пріоритет над застарілим `dm.allowFrom`.
- - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не встановлено.
+ - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не задані.
- Іменовані облікові записи не успадковують `channels.discord.accounts.default.allowFrom`.
+ Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` досі читаються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу.
+
Формат цілі DM для доставки:
- `user:`
- згадка `<@id>`
- Голі числові ID зазвичай розпізнаються як ID каналів, коли активне значення каналу за замовчуванням, але ID, перелічені в ефективному DM `allowFrom` облікового запису, для сумісності вважаються цілями користувацьких DM.
+ Голі числові ідентифікатори зазвичай розв’язуються як ідентифікатори каналів, коли активне типове значення каналу, але ідентифікатори, перелічені в ефективному DM `allowFrom` облікового запису, для сумісності трактуються як цілі користувацьких DM.
-
- Обробкою гільдій керує `channels.discord.groupPolicy`:
+
+ Обробка гільдій керується `channels.discord.groupPolicy`:
- `open`
- `allowlist`
- `disabled`
- Безпечне базове значення, коли існує `channels.discord`, — `allowlist`.
+ Безпечна базова лінія, коли існує `channels.discord`, це `allowlist`.
Поведінка `allowlist`:
- - гільдія має відповідати `channels.discord.guilds` (бажано `id`, slug приймається)
- - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони збігаються з `users` АБО `roles`
+ - гільдія має збігатися з `channels.discord.guilds` (переважно `id`, slug приймається)
+ - необов’язкові списки дозволів відправників: `users` (рекомендовано стабільні ідентифікатори) і `roles` (лише ідентифікатори ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони збігаються з `users` АБО `roles`
- пряме зіставлення імен/тегів вимкнене за замовчуванням; увімкніть `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
- - імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи імен/тегів
- - якщо в гільдії налаштовано `channels`, канали не зі списку забороняються
- - якщо в гільдії немає блока `channels`, дозволені всі канали в цій allowlisted гільдії
+ - імена/теги підтримуються для `users`, але ідентифікатори безпечніші; `openclaw security audit` попереджає, коли використовуються записи імен/тегів
+ - якщо для гільдії налаштовано `channels`, канали, яких немає в списку, відхиляються
+ - якщо гільдія не має блока `channels`, дозволені всі канали в цій дозволеній гільдії
Приклад:
@@ -464,33 +466,33 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Якщо ви встановили лише `DISCORD_BOT_TOKEN` і не створили блок `channels.discord`, резервне значення runtime — `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` має значення `open`.
+ Якщо ви лише встановите `DISCORD_BOT_TOKEN` і не створите блок `channels.discord`, резервне значення середовища виконання буде `groupPolicy="allowlist"` (з попередженням у журналах), навіть якщо `channels.defaults.groupPolicy` має значення `open`.
-
- Повідомлення гільдій за замовчуванням пропускаються через перевірку згадок.
+
+ Повідомлення гільдії за замовчуванням пропускаються через перевірку згадки.
- Виявлення згадок охоплює:
+ Виявлення згадки охоплює:
- явну згадку бота
- - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
+ - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
- неявну поведінку відповіді боту в підтримуваних випадках
`requireMention` налаштовується для кожної гільдії/каналу (`channels.discord.guilds...`).
- `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (окрім @everyone/@here).
+ `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (за винятком @everyone/@here).
Групові DM:
- за замовчуванням: ігноруються (`dm.groupEnabled=false`)
- - необов’язковий allowlist через `dm.groupChannels` (ID каналів або slug)
+ - необов’язковий список дозволів через `dm.groupChannels` (ідентифікатори каналів або slug)
### Маршрутизація агентів на основі ролей
-Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників гільдії Discord до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише для гільдії. Якщо прив’язка також задає інші поля збігу (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
+Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників гільдії Discord до різних агентів за ідентифікатором ролі. Прив’язки на основі ролей приймають лише ідентифікатори ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише для гільдії. Якщо прив’язка також задає інші поля зіставлення (наприклад `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
```json5
{
@@ -514,25 +516,25 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
-## Нативні команди та авторизація команд
+## Нативні команди й авторизація команд
- `commands.native` за замовчуванням має значення `"auto"` і ввімкнене для Discord.
-- Перевизначення для каналу: `channels.discord.commands.native`.
+- Перевизначення для окремого каналу: `channels.discord.commands.native`.
- `commands.native=false` явно очищає раніше зареєстровані нативні команди Discord.
-- Авторизація нативних команд використовує ті самі allowlist/політики Discord, що й звичайна обробка повідомлень.
-- Команди все ще можуть бути видимі в UI Discord для користувачів без авторизації; виконання все одно застосовує авторизацію OpenClaw і повертає "не авторизовано".
+- Авторизація нативних команд використовує ті самі списки дозволів/політики Discord, що й звичайна обробка повідомлень.
+- Команди можуть усе ще відображатися в UI Discord для користувачів, які не авторизовані; виконання все одно примусово застосовує авторизацію OpenClaw і повертає "not authorized".
-Див. [Slash-команди](/uk/tools/slash-commands) для каталогу команд і поведінки.
+Див. [Слеш-команди](/uk/tools/slash-commands) для каталогу команд і поведінки.
-Стандартні налаштування slash-команд:
+Типові налаштування слеш-команд:
- `ephemeral: true`
-## Деталі функцій
+## Відомості про функції
-
- Discord підтримує теги відповідей у виводі агента:
+
+ Discord підтримує теги відповіді у виводі агента:
- `[[reply_to_current]]`
- `[[reply_to:]]`
@@ -544,21 +546,21 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `all`
- `batched`
- Примітка: `off` вимикає неявне створення ланцюжків відповідей. Явні теги `[[reply_to_*]]` все одно враховуються.
- `first` завжди додає неявне посилання нативної відповіді до першого вихідного повідомлення Discord для ходу.
+ Примітка: `off` вимикає неявну прив’язку відповідей до ланцюжка. Явні теги `[[reply_to_*]]` усе ще враховуються.
+ `first` завжди додає неявне посилання нативної відповіді до першого вихідного повідомлення Discord для цього ходу.
`batched` додає неявне посилання нативної відповіді Discord лише тоді, коли
- вхідний хід був debounced-пакетом із кількох повідомлень. Це корисно,
- коли ви хочете нативні відповіді переважно для неоднозначних швидких чатів, а не для кожного
+ вхідний хід був дебаунсованою партією з кількох повідомлень. Це корисно,
+ коли нативні відповіді потрібні переважно для неоднозначних стрімких чатів, а не для кожного
ходу з одним повідомленням.
- ID повідомлень надаються в контексті/історії, щоб агенти могли націлюватися на конкретні повідомлення.
+ Ідентифікатори повідомлень відображаються в контексті/історії, щоб агенти могли націлюватися на конкретні повідомлення.
-
- OpenClaw може транслювати чернетки відповідей, надсилаючи тимчасове повідомлення й редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` зіставляється з `partial` у Discord; `streamMode` — застарілий псевдонім, який автоматично мігрується.
+
+ OpenClaw може транслювати чернетки відповідей, надсилаючи тимчасове повідомлення й редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` відображається на `partial` у Discord; `streamMode` є застарілим alias і мігрується автоматично.
- За замовчуванням лишається `off`, бо редагування попереднього перегляду Discord швидко впираються в rate limits, коли кілька ботів або Gateway спільно використовують один обліковий запис.
+ Типове значення залишається `off`, оскільки редагування попереднього перегляду Discord швидко досягають rate limits, коли кілька ботів або Gateway спільно використовують обліковий запис.
```json5
{
@@ -577,18 +579,18 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів.
- `block` виводить фрагменти розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`).
- - Медіа, помилки та фінальні повідомлення з явною відповіддю скасовують очікувані редагування попереднього перегляду.
+ - Медіа, помилки й фінальні повідомлення з явною відповіддю скасовують очікувані редагування попереднього перегляду.
- `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи повторно використовують оновлення інструментів/прогресу повідомлення попереднього перегляду.
- Потоковий попередній перегляд підтримує лише текст; відповіді з медіа повертаються до звичайної доставки. Коли потоковий режим `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійної трансляції.
+ Потоковий попередній перегляд підтримує лише текст; медіа-відповіді повертаються до звичайної доставки. Коли потокове передавання `block` явно ввімкнене, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання.
-
+
Контекст історії гільдії:
- `channels.discord.historyLimit` за замовчуванням `20`
- - резервне значення: `messages.groupChat.historyLimit`
+ - резервно: `messages.groupChat.historyLimit`
- `0` вимикає
Керування історією DM:
@@ -596,27 +598,27 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `channels.discord.dmHistoryLimit`
- `channels.discord.dms[""].historyLimit`
- Поведінка потоків:
+ Поведінка ланцюжків:
- - Потоки Discord маршрутизуються як сесії каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено.
- - Сесії потоків успадковують вибір `/model` рівня сесії батьківського каналу як резервне значення лише моделі; локальні для потоку вибори `/model` усе одно мають пріоритет, а історія транскрипту батьківського каналу не копіюється, якщо не ввімкнено успадкування транскрипту.
- - `channels.discord.thread.inheritParent` (за замовчуванням `false`) вмикає для нових автоматичних потоків початкове заповнення з батьківського транскрипту. Перевизначення для облікового запису розташовані в `channels.discord.accounts..thread.inheritParent`.
- - Реакції інструмента повідомлень можуть розпізнавати цілі DM `user:`.
+ - Ланцюжки Discord маршрутизуються як сесії каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено.
+ - Сесії ланцюжків успадковують вибір `/model` рівня сесії батьківського каналу як резервне значення лише моделі; локальні для ланцюжка вибори `/model` усе ще мають пріоритет, а історія транскрипту батьківського каналу не копіюється, якщо успадкування транскрипту не ввімкнене.
+ - `channels.discord.thread.inheritParent` (за замовчуванням `false`) вмикає для нових автоматичних ланцюжків засівання з батьківського транскрипту. Перевизначення для окремого облікового запису розташовані в `channels.discord.accounts..thread.inheritParent`.
+ - Реакції інструмента повідомлень можуть розв’язувати цілі DM `user:`.
- `guilds..channels..requireMention: false` зберігається під час резервної активації на етапі відповіді.
- Теми каналів вставляються як **ненадійний** контекст. Allowlists обмежують, хто може запускати агента, а не є повною межею редагування додаткового контексту.
+ Теми каналів впроваджуються як **ненадійний** контекст. Списки дозволів контролюють, хто може запускати агента, але не є повною межею редагування додаткового контексту.
-
- Discord може прив’язати потік до цілі сесії, щоб подальші повідомлення в цьому потоці продовжували маршрутизуватися до тієї самої сесії (включно із сесіями субагентів).
+
+ Discord може прив’язати ланцюжок до цілі сесії, щоб подальші повідомлення в цьому ланцюжку й далі маршрутизувалися до тієї самої сесії (включно із сесіями субагентів).
Команди:
- - `/focus ` прив’язати поточний/новий потік до цілі субагента/сесії
- - `/unfocus` видалити прив’язку поточного потоку
+ - `/focus ` прив’язати поточний/новий ланцюжок до цілі субагента/сесії
+ - `/unfocus` видалити прив’язку поточного ланцюжка
- `/agents` показати активні запуски та стан прив’язки
- - `/session idle ` переглянути/оновити автоматичне скасування фокуса через неактивність для сфокусованих прив’язок
+ - `/session idle ` переглянути/оновити автоматичне зняття фокуса через неактивність для сфокусованих прив’язок
- `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив’язок
Конфігурація:
@@ -651,12 +653,12 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати гілки для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`).
- Якщо прив’язки гілок вимкнено для облікового запису, `/focus` і пов’язані операції прив’язки гілок недоступні.
- Див. [Підагентів](/uk/tools/subagents), [агентів ACP](/uk/tools/acp-agents) і [довідник конфігурації](/uk/gateway/configuration-reference).
+ Див. [Субагенти](/uk/tools/subagents), [агенти ACP](/uk/tools/acp-agents) і [довідник конфігурації](/uk/gateway/configuration-reference).
- Для стабільних «завжди активних» робочих просторів ACP налаштуйте типізовані прив’язки ACP верхнього рівня, націлені на розмови Discord.
+ Для стабільних «завжди ввімкнених» робочих просторів ACP налаштуйте типізовані прив’язки ACP верхнього рівня, що спрямовані на розмови Discord.
Шлях конфігурації:
@@ -716,7 +718,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- У прив’язаному каналі або гілці `/new` і `/reset` скидають ту саму сесію ACP на місці. Тимчасові прив’язки гілок можуть перевизначати визначення цілі, доки активні.
- `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив’язати дочірню гілку через `--thread auto|here`.
- Див. [агентів ACP](/uk/tools/acp-agents), щоб дізнатися подробиці поведінки прив’язок.
+ Див. [агенти ACP](/uk/tools/acp-agents), щоб дізнатися подробиці про поведінку прив’язок.
@@ -728,31 +730,31 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `all`
- `allowlist` (використовує `guilds..users`)
- Події реакцій перетворюються на системні події та додаються до маршрутизованої сесії Discord.
+ Події реакцій перетворюються на системні події та прикріплюються до маршрутизованої сесії Discord.
- `ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
+ `ackReaction` надсилає емодзі підтвердження, доки OpenClaw обробляє вхідне повідомлення.
Порядок визначення:
- `channels.discord.accounts..ackReaction`
- `channels.discord.ackReaction`
- `messages.ackReaction`
- - резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
+ - запасний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- - Discord приймає Unicode-емодзі або назви користувацьких емодзі.
+ - Discord приймає емодзі Unicode або назви користувацьких емодзі.
- Використовуйте `""`, щоб вимкнути реакцію для каналу або облікового запису.
- Записи конфігурації, ініційовані каналом, увімкнено типово.
+ Записи конфігурації, ініційовані каналом, увімкнені типово.
- Це впливає на потоки `/config set|unset` (коли командні функції увімкнено).
+ Це впливає на потоки `/config set|unset` (коли функції команд увімкнено).
Вимкнення:
@@ -769,7 +771,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Маршрутизуйте трафік Discord gateway WebSocket і стартові REST-запити (ID застосунку + визначення списку дозволених) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
+ Спрямовуйте трафік Discord gateway WebSocket і стартові REST-запити (ID застосунку + визначення allowlist) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
```json5
{
@@ -817,8 +819,8 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- - списки дозволених можуть використовувати `pk:`
- - відображувані імена учасників зіставляються за назвою/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
+ - allowlists можуть використовувати `pk:`
+ - відображувані імена учасників зіставляються за name/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
- пошуки використовують ID початкового повідомлення й обмежені часовим вікном
- якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо `allowBots=true` не задано
@@ -852,7 +854,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Приклад трансляції:
+ Приклад стримінгу:
```json5
{
@@ -866,16 +868,16 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Мапа типів активності:
+ Карта типів активності:
- 0: Грає
- - 1: Трансляція (потребує `activityUrl`)
+ - 1: Стримить (потребує `activityUrl`)
- 2: Слухає
- 3: Дивиться
- 4: Користувацька (використовує текст активності як стан статусу; емодзі необов’язковий)
- 5: Змагається
- Приклад автоматичної присутності (сигнал стану середовища виконання):
+ Приклад автоматичної присутності (сигнал стану runtime):
```json5
{
@@ -892,7 +894,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Автоматична присутність зіставляє доступність середовища виконання зі статусом Discord: справний => онлайн, погіршений або невідомий => бездіяльний, вичерпаний або недоступний => не турбувати. Необов’язкові перевизначення тексту:
+ Автоматична присутність зіставляє доступність runtime зі статусом Discord: healthy => online, degraded або unknown => idle, exhausted або unavailable => dnd. Необов’язкові перевизначення тексту:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
@@ -910,32 +912,32 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
- `agentFilter`, `sessionFilter`, `cleanupAfterResolve`
- Discord автоматично вмикає нативні схвалення exec, коли `enabled` не задано або має значення `"auto"` і можна визначити принаймні одного затверджувача, або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить затверджувачів exec із канального `allowFrom`, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Задайте `enabled: false`, щоб явно вимкнути Discord як нативний клієнт схвалень.
+ Discord автоматично вмикає нативні exec-схвалення, коли `enabled` не задано або має значення `"auto"`, і можна визначити принаймні одного approver: або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить exec approvers з канального `allowFrom`, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Задайте `enabled: false`, щоб явно вимкнути Discord як нативний клієнт схвалень.
- Для чутливих групових команд лише для власників, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спершу він пробує Discord DM, коли власник, який викликає команду, має маршрут власника Discord; якщо це недоступно, він повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram.
+ Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спершу він пробує Discord DM, коли власник, що викликає команду, має маршрут власника Discord; якщо він недоступний, OpenClaw повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram.
- Коли `target` має значення `channel` або `both`, запит на схвалення видимий у каналі. Лише визначені затверджувачі можуть використовувати кнопки; інші користувачі отримують ефемерну відмову. Запити на схвалення містять текст команди, тому вмикайте доставлення в канал лише в довірених каналах. Якщо ID каналу неможливо вивести з ключа сесії, OpenClaw повертається до доставлення в DM.
+ Коли `target` має значення `channel` або `both`, запит на схвалення видимий у каналі. Лише визначені approvers можуть використовувати кнопки; інші користувачі отримують ephemeral відмову. Запити на схвалення містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо отримати з ключа сесії, OpenClaw повертається до доставки через DM.
- Discord також відображає спільні кнопки схвалення, які використовують інші чат-канали. Нативний адаптер Discord переважно додає маршрутизацію DM для затверджувачів і розсилання в канали.
- Коли ці кнопки наявні, вони є основним UX схвалення; OpenClaw
- має включати ручну команду `/approve` лише тоді, коли результат інструмента каже,
- що чат-схвалення недоступні або ручне схвалення є єдиним шляхом.
- Якщо нативне середовище виконання схвалень Discord не активне, OpenClaw залишає
- локальну детерміновану підказку `/approve ` видимою. Якщо
- середовище виконання активне, але нативну картку неможливо доставити до жодної цілі,
- OpenClaw надсилає резервне сповіщення в тому самому чаті з точною командою `/approve`
+ Discord також відображає спільні кнопки схвалення, які використовують інші чат-канали. Нативний адаптер Discord здебільшого додає маршрутизацію approver через DM і розсилання в канал.
+ Коли ці кнопки присутні, вони є основним UX схвалення; OpenClaw
+ має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що
+ чат-схвалення недоступні або ручне схвалення є єдиним шляхом.
+ Якщо runtime нативних схвалень Discord неактивний, OpenClaw залишає
+ локальний детермінований запит `/approve ` видимим. Якщо
+ runtime активний, але нативну картку неможливо доставити до жодної цілі,
+ OpenClaw надсилає запасне сповіщення в той самий чат із точною командою `/approve`
з очікуваного схвалення.
- Автентифікація Gateway і визначення схвалень дотримуються спільного контракту клієнта Gateway (ID `plugin:` визначаються через `plugin.approval.resolve`; інші ID через `exec.approval.resolve`). Схвалення типово спливають через 30 хвилин.
+ Автентифікація Gateway і визначення схвалень дотримуються спільного контракту клієнта Gateway (ID `plugin:` визначаються через `plugin.approval.resolve`; інші ID через `exec.approval.resolve`). Типово схвалення спливають через 30 хвилин.
- Див. [схвалення exec](/uk/tools/exec-approvals).
+ Див. [Exec-схвалення](/uk/tools/exec-approvals).
## Інструменти та шлюзи дій
-Дії з повідомленнями Discord включають обмін повідомленнями, адміністрування каналів, модерацію, присутність і дії з метаданими.
+Дії повідомлень Discord включають обмін повідомленнями, адміністрування каналів, модерацію, присутність і дії з метаданими.
Основні приклади:
@@ -944,26 +946,26 @@ Slash-команди `/model` і `/models` відкривають інтерак
- модерація: `timeout`, `kick`, `ban`
- присутність: `setPresence`
-Дія `event-create` приймає необов’язковий параметр `image` (URL або шлях до локального файлу), щоб задати обкладинку запланованої події.
+Дія `event-create` приймає необов’язковий параметр `image` (URL або шлях до локального файлу), щоб задати зображення обкладинки запланованої події.
Шлюзи дій розташовані в `channels.discord.actions.*`.
Типова поведінка шлюзів:
-| Група дій | Типово |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
+| Група дій | Типово |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено |
-| roles | вимкнено |
-| moderation | вимкнено |
-| presence | вимкнено |
+| roles | вимкнено |
+| moderation | вимкнено |
+| presence | вимкнено |
-## UI компонентів v2
+## Інтерфейс компонентів v2
-OpenClaw використовує компоненти Discord v2 для схвалень exec і маркерів між контекстами. Дії з повідомленнями Discord також можуть приймати `components` для користувацького UI (розширено; потребує створення payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендуються.
+OpenClaw використовує компоненти Discord v2 для exec-схвалень і маркерів між контекстами. Дії повідомлень Discord також можуть приймати `components` для користувацького UI (розширений режим; потребує побудови payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані.
- `channels.discord.ui.components.accentColor` задає акцентний колір, який використовують контейнери компонентів Discord (hex).
-- Задайте для кожного облікового запису через `channels.discord.accounts..ui.components.accentColor`.
-- `embeds` ігноруються, коли наявні компоненти v2.
+- Задайте для облікового запису через `channels.discord.accounts..ui.components.accentColor`.
+- `embeds` ігноруються, коли присутні компоненти v2.
Приклад:
@@ -983,7 +985,7 @@ OpenClaw використовує компоненти Discord v2 для схв
## Голос
-Discord має дві окремі голосові поверхні: **голосові канали** в реальному часі (безперервні розмови) і **вкладення голосових повідомлень** (формат попереднього перегляду хвилі). Gateway підтримує обидві.
+Discord має дві окремі голосові поверхні: голосові канали реального часу **voice channels** (безперервні розмови) і **вкладення голосових повідомлень** (формат попереднього перегляду хвилі). Gateway підтримує обидві.
### Голосові канали
@@ -996,7 +998,7 @@ Discord має дві окремі голосові поверхні: **голо
5. Увімкніть нативні команди (`commands.native` або `channels.discord.commands.native`).
6. Налаштуйте `channels.discord.voice`.
-Використовуйте `/vc join|leave|status`, щоб керувати сесіями. Команда використовує типового агента облікового запису й дотримується тих самих правил списку дозволених і групових політик, що й інші команди Discord.
+Використовуйте `/vc join|leave|status` для керування сесіями. Команда використовує стандартного агента облікового запису й дотримується тих самих правил списків дозволених і групових політик, що й інші команди Discord.
```bash
/vc join channel:
@@ -1033,34 +1035,34 @@ Discord має дві окремі голосові поверхні: **голо
Примітки:
-- `voice.tts` перевизначає `messages.tts` лише для голосового відтворення.
-- `voice.model` перевизначає LLM, що використовується лише для відповідей у голосовому каналі Discord. Залиште його невстановленим, щоб успадкувати маршрутизовану модель агента.
+- `voice.tts` перевизначає `messages.tts` лише для відтворення голосу.
+- `voice.model` перевизначає LLM, що використовується лише для відповідей у голосовому каналі Discord. Не задавайте його, щоб успадкувати модель маршрутизованого агента.
- STT використовує `tools.media.audio`; `voice.model` не впливає на транскрипцію.
-- Ходи голосової транскрипції визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці, які не є власниками, не можуть отримати доступ до інструментів лише для власника (наприклад, `gateway` і `cron`).
-- Голос увімкнено за замовчуванням; задайте `channels.discord.voice.enabled=false`, щоб вимкнути голосове середовище виконання та Gateway intent `GuildVoiceStates`.
-- `channels.discord.intents.voiceStates` може явно перевизначити підписку на intent стану голосу. Залиште його невстановленим, щоб intent відповідав `voice.enabled`.
+- Ходи голосового транскрипту визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці, які не є власниками, не можуть отримувати доступ до інструментів лише для власника (наприклад `gateway` і `cron`).
+- Голос увімкнено за замовчуванням; задайте `channels.discord.voice.enabled=false`, щоб вимкнути голосове середовище виконання й Gateway intent `GuildVoiceStates`.
+- `channels.discord.intents.voiceStates` може явно перевизначати підписку на intent стану голосу. Не задавайте його, щоб intent відповідав `voice.enabled`.
- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються до параметрів приєднання `@discordjs/voice`.
-- Значення за замовчуванням `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано.
-- OpenClaw також відстежує помилки дешифрування приймання та автоматично відновлюється, виходячи з голосового каналу й повторно приєднуючись до нього після повторюваних помилок у короткому вікні.
-- Якщо після оновлення журнали приймання неодноразово показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить upstream-виправлення padding з PR discord.js #11449, який закрив issue discord.js #11419.
+- Стандартні значення `@discordjs/voice`: `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано.
+- OpenClaw також відстежує збої розшифрування прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись до нього після повторюваних збоїв за короткий проміжок часу.
+- Якщо журнали прийому після оновлення повторно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить виправлення upstream padding з PR discord.js #11449, яке закрило issue discord.js #11419.
Конвеєр голосового каналу:
-- Захоплення PCM Discord перетворюється на тимчасовий WAV-файл.
+- Захоплення Discord PCM перетворюється на тимчасовий WAV-файл.
- `tools.media.audio` обробляє STT, наприклад `openai/gpt-4o-mini-transcribe`.
-- Транскрипт надсилається через звичайний вхідний потік Discord і маршрутизацію.
+- Транскрипт надсилається через звичайний вхідний шлях і маршрутизацію Discord.
- `voice.model`, якщо задано, перевизначає лише LLM відповіді для цього ходу голосового каналу.
-- `voice.tts` об’єднується поверх `messages.tts`; отримане аудіо відтворюється в приєднаному каналі.
+- `voice.tts` об’єднується поверх `messages.tts`; отриманий звук відтворюється в каналі, до якого виконано приєднання.
-Облікові дані визначаються для кожного компонента: автентифікація маршруту LLM для `voice.model`, автентифікація STT для `tools.media.audio` і автентифікація TTS для `messages.tts`/`voice.tts`.
+Облікові дані визначаються окремо для кожного компонента: автентифікація маршруту LLM для `voice.model`, автентифікація STT для `tools.media.audio` і автентифікація TTS для `messages.tts`/`voice.tts`.
### Голосові повідомлення
-Голосові повідомлення Discord показують попередній перегляд хвилі й потребують аудіо OGG/Opus. OpenClaw генерує хвилю автоматично, але потребує `ffmpeg` і `ffprobe` на хості Gateway для аналізу та конвертації.
+Голосові повідомлення Discord показують попередній перегляд хвильової форми й потребують аудіо OGG/Opus. OpenClaw автоматично генерує хвильову форму, але потребує `ffmpeg` і `ffprobe` на хості gateway для аналізу та перетворення.
-- Надайте **локальний шлях до файлу** (URL відхиляються).
+- Надайте **локальний шлях до файлу** (URL-адреси відхиляються).
- Не додавайте текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload).
-- Приймається будь-який аудіоформат; OpenClaw за потреби конвертує в OGG/Opus.
+- Приймається будь-який аудіоформат; OpenClaw перетворює його на OGG/Opus за потреби.
```bash
message(action="send", channel="discord", target="channel:123", path="/path/to/audio.mp3", asVoice=true)
@@ -1072,15 +1074,15 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a
- увімкніть Message Content Intent
- - увімкніть Server Members Intent, коли залежите від визначення користувача/учасника
- - перезапустіть gateway після зміни intent
+ - увімкніть Server Members Intent, коли ви покладаєтеся на визначення користувачів/учасників
+ - перезапустіть gateway після зміни intents
- перевірте `groupPolicy`
- - перевірте allowlist guild у `channels.discord.guilds`
+ - перевірте список дозволених guild у `channels.discord.guilds`
- якщо існує мапа guild `channels`, дозволені лише перелічені канали
- перевірте поведінку `requireMention` і шаблони згадок
@@ -1097,9 +1099,9 @@ openclaw logs --follow
Поширені причини:
- - `groupPolicy="allowlist"` без відповідного allowlist guild/каналу
- - `requireMention` налаштовано не в тому місці (має бути під `channels.discord.guilds` або записом каналу)
- - відправника заблоковано allowlist `users` guild/каналу
+ - `groupPolicy="allowlist"` без відповідного списку дозволених guild/каналу
+ - `requireMention` налаштовано не там, де треба (має бути під `channels.discord.guilds` або в записі каналу)
+ - відправника заблоковано списком дозволених `users` для guild/каналу
@@ -1110,13 +1112,13 @@ openclaw logs --follow
- `Slow listener detected ...`
- `stuck session: sessionKey=agent:...:discord:... state=processing ...`
- Регулятори черги Gateway Discord:
+ Параметри черги Discord gateway:
- один обліковий запис: `channels.discord.eventQueue.listenerTimeout`
- кілька облікових записів: `channels.discord.accounts..eventQueue.listenerTimeout`
- - це керує лише роботою слухача Gateway Discord, а не тривалістю ходу агента
+ - це керує лише роботою слухача Discord gateway, а не тривалістю ходу агента
- Discord не застосовує тайм-аут, що належить каналу, до поставлених у чергу ходів агента. Слухачі повідомлень одразу передають керування, а поставлені в чергу запуски Discord зберігають порядок у межах сесії, доки життєвий цикл сесії/інструмента/середовища виконання не завершить або не перерве роботу.
+ Discord не застосовує до поставлених у чергу ходів агента тайм-аут, що належить каналу. Слухачі повідомлень негайно передають роботу далі, а поставлені в чергу запуски Discord зберігають порядок у межах сесії, доки життєвий цикл сесії/інструмента/середовища виконання не завершить або не перерве роботу.
```json5
{
@@ -1137,21 +1139,21 @@ openclaw logs --follow
- OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до стандартного URL Gateway Discord і обмежуються за частотою в журналах.
+ OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до стандартної URL-адреси gateway Discord і обмежуються за частотою в журналах.
- Регулятори тайм-ауту метаданих:
+ Параметри тайм-ауту метаданих:
- один обліковий запис: `channels.discord.gatewayInfoTimeoutMs`
- кілька облікових записів: `channels.discord.accounts..gatewayInfoTimeoutMs`
- - запасний варіант env, коли config не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS`
- - стандартне значення: `30000` (30 секунд), максимум: `120000`
+ - запасний варіант env, коли конфігурацію не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS`
+ - за замовчуванням: `30000` (30 секунд), максимум: `120000`
- Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів.
+ Перевірки дозволів `channels status --probe` працюють лише для числових ідентифікаторів каналів.
- Якщо ви використовуєте slug-ключі, зіставлення під час виконання все ще може працювати, але probe не може повністю перевірити дозволи.
+ Якщо ви використовуєте slug-ключі, зіставлення під час виконання все одно може працювати, але probe не може повністю перевірити дозволи.
@@ -1159,27 +1161,27 @@ openclaw logs --follow
- DM вимкнено: `channels.discord.dm.enabled=false`
- політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
- - очікується схвалення pairing у режимі `pairing`
+ - очікування схвалення створення пари в режимі `pairing`
За замовчуванням повідомлення, створені ботами, ігноруються.
- Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте строгі правила згадок і allowlist, щоб уникнути циклів.
- Надавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
+ Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і списків дозволених, щоб уникнути циклічної поведінки.
+ Віддавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
- - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення приймання голосу Discord
- - підтвердьте `channels.discord.voice.daveEncryption=true` (стандартне значення)
- - почніть із `channels.discord.voice.decryptionFailureTolerance=24` (стандартне upstream-значення) і налаштовуйте лише за потреби
- - стежте в журналах за:
+ - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення прийому голосу Discord
+ - підтвердьте `channels.discord.voice.daveEncryption=true` (за замовчуванням)
+ - почніть із `channels.discord.voice.decryptionFailureTolerance=24` (стандартне значення upstream) і налаштовуйте лише за потреби
+ - стежте за журналами на наявність:
- `discord voice: DAVE decrypt failures detected`
- `discord voice: repeated decrypt failures; attempting rejoin`
- - якщо помилки тривають після автоматичного повторного приєднання, зберіть журнали та порівняйте з upstream-історією приймання DAVE у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449)
+ - якщо збої тривають після автоматичного повторного приєднання, зберіть журнали й порівняйте їх з історією upstream DAVE receive у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449)
@@ -1194,11 +1196,11 @@ openclaw logs --follow
- політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
- команда: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
- черга подій: `eventQueue.listenerTimeout` (бюджет слухача), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
-- метадані Gateway: `gatewayInfoTimeoutMs`
+- метадані gateway: `gatewayInfoTimeoutMs`
- відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
-- доставлення: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
-- потокова передача: `streaming` (застарілий псевдонім: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
-- медіа/повтор: `mediaMaxMb` (обмежує вихідні завантаження Discord, стандартно `100MB`), `retry`
+- доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
+- потокове передавання: `streaming` (застарілий псевдонім: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
+- медіа/повторна спроба: `mediaMaxMb` (обмежує вихідні завантаження Discord, за замовчуванням `100MB`), `retry`
- дії: `actions.*`
- присутність: `activity`, `status`, `activityType`, `activityUrl`
- UI: `ui.components.accentColor`
@@ -1209,17 +1211,17 @@ openclaw logs --follow
## Безпека та експлуатація
- Розглядайте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в контрольованих середовищах).
-- Надавайте мінімально необхідні дозволи Discord.
-- Якщо deploy/state команд застарів, перезапустіть gateway і повторно перевірте за допомогою `openclaw channels status --probe`.
+- Надавайте Discord дозволи за принципом найменших привілеїв.
+- Якщо розгортання/стан команд застаріли, перезапустіть gateway і повторно перевірте за допомогою `openclaw channels status --probe`.
## Пов’язане
- Прив’яжіть користувача Discord до gateway.
+ Створіть пару між користувачем Discord і gateway.
- Груповий чат і поведінка allowlist.
+ Груповий чат і поведінка списку дозволених.
Маршрутизуйте вхідні повідомлення до агентів.
@@ -1228,7 +1230,7 @@ openclaw logs --follow
Модель загроз і посилення захисту.
- Зіставляйте guild і канали з агентами.
+ Зіставляйте guilds і канали з агентами.
Поведінка нативних команд.
diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md
index 96e1772bd..ea9118613 100644
--- a/docs/uk/channels/slack.md
+++ b/docs/uk/channels/slack.md
@@ -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 також підтримуються.
-
- Slack DM типово використовують режим сполучення.
+
+ Slack DM за замовчуванням використовують режим pairing.
-
+
Нативна поведінка команд і каталог команд.
-
- Міжканальна діагностика та playbook-и відновлення.
+
+ Кросканальна діагностика та playbook-и відновлення.
## Швидке налаштування
-
+
-
+
У налаштуваннях 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-...`)
-
+
```json5
{
@@ -56,7 +56,7 @@ x-i18n:
}
```
- Резервний env-варіант (лише типовий обліковий запис):
+ Env fallback (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@@ -65,7 +65,7 @@ SLACK_BOT_TOKEN=xoxb-...
-
+
```bash
openclaw gateway
@@ -78,17 +78,17 @@ openclaw gateway
-
+
У налаштуваннях 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-...`)
-
+
```json5
{
@@ -107,12 +107,12 @@ openclaw gateway
Використовуйте унікальні шляхи Webhook для HTTP із кількома обліковими записами
- Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
+ Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
-
+
```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
-Показуйте різні функції, які розширюють наведені вище типові значення.
+Увімкніть інші функції, що розширюють наведені вище стандартні значення.
-
+
- Кілька [нативних 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):
-
+
```json
"slash_commands": [
@@ -406,14 +406,14 @@ OpenClaw типово встановлює для клієнта Slack SDK та
-
- Додайте bot-scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку) замість типової ідентичності Slack app.
+
+ Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (користувацьке ім’я та піктограму) замість стандартної ідентичності Slack app.
- Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`.
+ Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
-
- Якщо ви налаштовуєте `channels.slack.userToken`, типові scope-и читання:
+
+ Якщо ви налаштовуєте `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`.
-Для дій/читання каталогу токен користувача може мати перевагу, коли його налаштовано. Для записів перевага й надалі надається токену бота; записи через токен користувача дозволені лише коли `userTokenReadOnly: false`, а токен бота недоступний.
+Для дій/читання каталогу можна надавати перевагу токену користувача, якщо його налаштовано. Для записів токен бота залишається пріоритетним; записи з токеном користувача дозволені лише тоді, коли `userTokenReadOnly: false` і токен бота недоступний.
## Дії та шлюзи
@@ -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, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файла для інших типів файлів.
-## Контроль доступу та маршрутизація
+## Керування доступом і маршрутизація
-
- `channels.slack.dmPolicy` керує доступом DM (застаріле: `channels.slack.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 `.
+ Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу.
+
+ Зв’язування в DM використовує `openclaw pairing approve slack `.
-
+
`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`
-
- Повідомлення каналу за замовчуванням проходять через шлюз згадок.
+
+ Повідомлення каналів типово обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@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.`; імена лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`):
+ Налаштування для кожного каналу (`channels.slack.channels.`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- - `users` (allowlist)
+ - `users` (список дозволених)
- `allowBots`
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
- (застарілі ключі без префікса й надалі зіставляються лише з `id:`)
+ (застарілі ключі без префікса досі зіставляються лише з `id:`)
@@ -541,18 +543,18 @@ OpenClaw типово встановлює для клієнта Slack SDK та
## Гілки, сесії та теги відповідей
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
-- З типовим `session.dmScope=main` DM Slack згортаються до головної сесії агента.
+- З типовим `session.dmScope=main` DM Slack згортаються в основну сесію агента.
- Сесії каналів: `agent::slack:channel:`.
- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:`), коли це застосовно.
- Типове значення `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:]]`
-`replyToMode="off"` вимикає **всі** відповіді в гілках у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline.
+`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
-## Ack-реакції
+## Реакції підтвердження
-`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
+`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок розв’язання:
- `channels.slack.accounts..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 і доставка
+## Медіа, фрагментація та доставка
-
- Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів включають `fileId` Slack, щоб агенти могли отримати оригінальний файл через `download-file`.
+
+ Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й ліміти розміру це дозволяють. Заповнювачі файлів містять `fileId` Slack, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
- Завантаження використовують обмежені idle-таймаути й загальні таймаути. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файла.
+ Завантаження використовують обмежені тайм-аути простою та загальні тайм-аути. Якщо отримання файла Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файла.
- Runtime-ліміт розміру вхідних даних за замовчуванням становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
+ Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
-
- - текстові chunks використовують `channels.slack.textChunkLimit` (за замовчуванням 4000)
- - `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців
+
+ - текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
+ - `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців
- надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
- - ліміт вихідних медіа дотримується `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канали використовує типові значення MIME-kind з медіаконвеєра
+ - ліміт вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли його налаштовано; інакше надсилання каналом використовує типові значення MIME-kind з медіаконвеєра
-
+
Бажані явні цілі:
- `user:` для DM
@@ -664,9 +666,9 @@ OpenClaw типово встановлює для клієнта Slack SDK та
-## Команди та 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::slack:slash:`, і надалі маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
+Slash-сесії використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до сесії цільової розмови за допомогою `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).
-
+
- 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`
-## Усунення несправностей
+## Troubleshooting
-
- Перевірте по черзі:
+
+ 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
-
- Перевірте:
+
+ 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
-
- Перевірте токени bot + app і ввімкнення Socket Mode у налаштуваннях програми Slack.
+
+ 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.
-
- Перевірте:
+
+ 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.
-
- Перевірте, що саме ви мали на увазі:
+
+ 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.
-## Довідник щодо 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)
## Пов’язане
-
- Сполучіть користувача Slack зі шлюзом.
+
+ Сполучіть користувача Slack із Gateway.
-
- Поведінка каналів і групових особистих повідомлень.
+
+ Поведінка каналів і групових приватних повідомлень.
-
+
Спрямовуйте вхідні повідомлення агентам.
-
+
Модель загроз і посилення захисту.
-
+
Структура конфігурації та пріоритетність.
-
+
Каталог команд і поведінка.
diff --git a/docs/uk/plugins/sdk-channel-plugins.md b/docs/uk/plugins/sdk-channel-plugins.md
index d4a26ee4e..6d3ec6da2 100644
--- a/docs/uk/plugins/sdk-channel-plugins.md
+++ b/docs/uk/plugins/sdk-channel-plugins.md
@@ -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,
-сполученням, ланцюжками відповідей і вихідними повідомленнями.
+спарюванням, ланцюжками відповідей і вихідними повідомленнями.
- Якщо ви ще не створювали жодного плагіна OpenClaw, спочатку прочитайте
- [Початок роботи](/uk/plugins/building-plugins), щоб ознайомитися з базовою структурою
- пакета й налаштуванням маніфесту.
+ Якщо ви ще не створювали жодного Plugin OpenClaw, спершу прочитайте
+ [Початок роботи](/uk/plugins/building-plugins), щоб дізнатися про базову структуру
+ пакета та налаштування маніфесту.
-## Як працюють плагіни каналів
+## Як працюють 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..accounts..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..accounts..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 })`.
## Покроковий огляд
-
- Створіть стандартні файли Plugin. Поле `channel` у `package.json` — це те,
- що робить його Plugin каналу. Повну поверхню package-metadata дивіться в
- [Налаштування та конфігурація Plugin](/uk/plugins/sdk-setup#openclaw-channel):
+
+ Створіть стандартні файли plugin. Поле `channel` у `package.json` — це
+ те, що робить це channel plugin. Повну поверхню package-metadata див.
+ у [Налаштування й конфігурація Plugin](/uk/plugins/sdk-setup#openclaw-channel):
```json package.json
@@ -375,17 +375,16 @@ bundled channel plugins, які вже залежать від runtime injection
```
- `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.
-
- Інтерфейс `ChannelPlugin` має багато необов’язкових adapter surfaces.
- Почніть із мінімуму — `id` і `setup` — і додавайте adapters у міру потреби.
+
+ Інтерфейс `ChannelPlugin` має багато необов’язкових поверхонь адаптерів. Почніть із
+ мінімуму — `id` і `setup` — і додавайте адаптери за потреби.
Створіть `src/channel.ts`:
@@ -480,33 +479,35 @@ bundled channel plugins, які вже залежать від runtime injection
});
```
-
- Замість ручної реалізації низькорівневих 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 читали той самий контракт.
- | Опція | Що вона підключає |
+
+ Замість того, щоб реалізовувати низькорівневі інтерфейси адаптерів вручну, ви передаєте
+ декларативні параметри, а 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.
-
- Створіть `index.ts`:
+
+ 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) для всіх
+ параметрів.
-
+
Створіть `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.
-
- Ваш Plugin має отримувати повідомлення з платформи та пересилати їх до
- OpenClaw. Типовий шаблон — це Webhook, який перевіряє запит і
- передає його через вхідний обробник вашого каналу:
+
+ Ваш Plugin має отримувати повідомлення з платформи й пересилати їх до
+ OpenClaw. Типовий патерн — Webhook, який перевіряє запит і
+ передає його через inbound-обробник вашого каналу:
```typescript
registerFull(api) {
@@ -603,16 +604,16 @@ bundled channel plugins, які вже залежать від runtime injection
```
- Обробка вхідних повідомлень залежить від каналу. Кожен channel Plugin володіє
- власним вхідним pipeline. Перегляньте bundled channel Plugins
- (наприклад, пакет Plugin Microsoft Teams або Google Chat) для реальних шаблонів.
+ Обробка inbound-повідомлень є специфічною для каналу. Кожен channel Plugin володіє
+ власним inbound pipeline. Перегляньте bundled channel Plugins
+ (наприклад, пакет Plugin для Microsoft Teams або Google Chat) для реальних патернів.
-
-Пишіть колоковані тести в `src/channel.test.ts`:
+
+Пишіть 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 -- /acme-chat/
```
- Спільні тестові помічники див. у [Тестування](/uk/plugins/sdk-testing).
+ Для спільних test helpers див. [Тестування](/uk/plugins/sdk-testing).
@@ -675,36 +676,36 @@ bundled channel plugins, які вже залежать від runtime injection
## Розширені теми
-
- Фіксовані, привʼязані до облікового запису або власні режими відповіді
+
+ Фіксовані, account-scoped або користувацькі режими відповіді
-
+
describeMessageTool і виявлення дій
-
+
inferTargetChatType, looksLikeId, resolveTarget
-
+
TTS, STT, медіа, subagent через api.runtime
-Деякі 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 безпосередньо.
## Наступні кроки
- [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)
diff --git a/docs/uk/plugins/sdk-migration.md b/docs/uk/plugins/sdk-migration.md
index ed400d510..d21190751 100644
--- a/docs/uk/plugins/sdk-migration.md
+++ b/docs/uk/plugins/sdk-migration.md
@@ -4,58 +4,57 @@ read_when:
- Ви бачите попередження OPENCLAW_EXTENSION_API_DEPRECATED
- Ви використовували api.registerEmbeddedExtensionFactory до OpenClaw 2026.4.25
- Ви оновлюєте Plugin до сучасної архітектури Plugin
- - Ви підтримуєте зовнішній Plugin OpenClaw
+ - Ви супроводжуєте зовнішній Plugin для OpenClaw
sidebarTitle: Migrate to SDK
-summary: Перехід із застарілого шару зворотної сумісності на сучасний Plugin SDK
+summary: Перейдіть із застарілого шару зворотної сумісності на сучасний SDK Plugin
title: Міграція Plugin SDK
x-i18n:
- generated_at: "2026-04-29T13:54:54Z"
+ generated_at: "2026-04-29T15:39:52Z"
model: gpt-5.5
provider: openai
- source_hash: fbc2569e5116d168151c34b31392df87be2b30f67de7303552c9164205716f07
+ source_hash: 00a1f95a33c50d5c69d7b4768858289365bf29ed069abb3f29218e03c597b4c6
source_path: plugins/sdk-migration.md
workflow: 16
---
OpenClaw перейшов від широкого шару зворотної сумісності до сучасної архітектури Plugin
-з вузькими, задокументованими імпортами. Якщо ваш plugin було створено до
+з вузькими, задокументованими імпортами. Якщо ваш Plugin було створено до
нової архітектури, цей посібник допоможе вам виконати міграцію.
## Що змінюється
-Стара система plugin надавала дві дуже відкриті поверхні, які дозволяли plugin імпортувати
+Стара система Plugin надавала дві відкриті поверхні, які дозволяли Plugin імпортувати
все потрібне з однієї точки входу:
- **`openclaw/plugin-sdk/compat`** — єдиний імпорт, який повторно експортував десятки
- допоміжних функцій. Його було введено, щоб старі plugin на основі хуків продовжували працювати, поки
- будувалася нова архітектура plugin.
-- **`openclaw/plugin-sdk/infra-runtime`** — широкий runtime-барель допоміжних засобів, який
- змішував системні події, стан heartbeat, черги доставки, допоміжні засоби fetch/proxy,
- файлові допоміжні засоби, типи схвалення й непов’язані утиліти.
-- **`openclaw/plugin-sdk/config-runtime`** — широкий барель сумісності конфігурації,
- який досі містить застарілі прямі допоміжні засоби завантаження/запису під час міграційного
- вікна.
-- **`openclaw/extension-api`** — міст, який надавав plugin прямий доступ до
- допоміжних засобів на боці хоста, як-от вбудований runner агента.
-- **`api.registerEmbeddedExtensionFactory(...)`** — видалений хук лише для Pi у вбудованому
- plugin, який міг спостерігати за подіями embedded-runner, такими як
+ допоміжних функцій. Його було введено, щоб старі Plugin на основі хуків
+ продовжували працювати, поки будувалася нова архітектура Plugin.
+- **`openclaw/plugin-sdk/infra-runtime`** — широкий barrel runtime-допоміжних засобів, який
+ змішував системні події, стан Heartbeat, черги доставки, допоміжні засоби fetch/proxy,
+ файлові допоміжні засоби, типи схвалень і непов’язані утиліти.
+- **`openclaw/plugin-sdk/config-runtime`** — широкий barrel сумісності конфігурації,
+ який усе ще містить застарілі прямі допоміжні засоби load/write під час вікна міграції.
+- **`openclaw/extension-api`** — міст, який надавав Plugin прямий доступ до
+ допоміжних засобів на боці хоста, як-от вбудований запуск агентів.
+- **`api.registerEmbeddedExtensionFactory(...)`** — видалений хук комплектного розширення
+ лише для Pi, який міг спостерігати за подіями вбудованого запуску, такими як
`tool_result`.
-Широкі поверхні імпорту тепер **застарілі**. Вони все ще працюють під час виконання,
-але нові plugin не повинні їх використовувати, а наявні plugin мають виконати міграцію до того,
-як наступний major-реліз їх видалить. API реєстрації embedded extension factory
+Широкі поверхні імпорту тепер **застарілі**. Вони все ще працюють під час runtime,
+але нові Plugin не повинні їх використовувати, а наявні Plugin мають мігрувати до того,
+як наступний major-реліз їх видалить. API реєстрації фабрики вбудованого розширення
лише для Pi було видалено; натомість використовуйте middleware результатів інструментів.
-OpenClaw не видаляє й не переінтерпретовує задокументовану поведінку plugin у тій самій
-зміні, яка вводить заміну. Зміни контракту, що ламають сумісність, спочатку мають пройти
+OpenClaw не видаляє й не переінтерпретовує задокументовану поведінку Plugin у тій самій
+зміні, яка вводить заміну. Зміни контракту, що порушують сумісність, спершу мають пройти
через адаптер сумісності, діагностику, документацію та вікно застарівання.
-Це стосується імпортів SDK, полів маніфесту, API налаштування, хуків і поведінки
+Це стосується імпортів SDK, полів manifest, setup API, хуків і поведінки
runtime-реєстрації.
Шар зворотної сумісності буде видалено в майбутньому major-релізі.
- Plugin, які досі імпортують із цих поверхонь, перестануть працювати, коли це станеться.
- Реєстрації embedded extension factory лише для Pi вже більше не завантажуються.
+ Plugin, які все ще імпортують із цих поверхонь, зламаються, коли це станеться.
+ Реєстрації фабрик вбудованих розширень лише для Pi вже більше не завантажуються.
## Чому це змінилося
@@ -63,68 +62,68 @@ runtime-реєстрації.
Старий підхід спричиняв проблеми:
- **Повільний запуск** — імпорт однієї допоміжної функції завантажував десятки непов’язаних модулів
-- **Циклічні залежності** — широкі повторні експорти спрощували створення циклів імпорту
+- **Циклічні залежності** — широкі повторні експорти спрощували створення циклів імпортів
- **Нечітка поверхня API** — не було способу зрозуміти, які експорти стабільні, а які внутрішні
-Сучасний SDK plugin це виправляє: кожен шлях імпорту (`openclaw/plugin-sdk/\`)
-є невеликим, самодостатнім модулем із чітким призначенням і задокументованим контрактом.
+Сучасний plugin SDK це виправляє: кожен шлях імпорту (`openclaw/plugin-sdk/\`)
+є невеликим самодостатнім модулем із чітким призначенням і задокументованим контрактом.
-Застарілі provider convenience seams для вбудованих каналів також видалено.
-Допоміжні seams із брендингом каналу були приватними скороченнями mono-repo, а не стабільними
-контрактами plugin. Натомість використовуйте вузькі загальні підшляхи SDK. Усередині робочої області
-вбудованого plugin тримайте допоміжні засоби, що належать provider, у власному `api.ts` або
-`runtime-api.ts` цього plugin.
+Застарілі зручні seams провайдерів для комплектних каналів також прибрано.
+Допоміжні seams з назвами каналів були приватними скороченнями mono-repo, а не стабільними
+контрактами Plugin. Натомість використовуйте вузькі загальні підшляхи SDK. Усередині комплектного
+робочого простору Plugin тримайте допоміжні засоби, що належать провайдеру, у власному `api.ts` або
+`runtime-api.ts` цього Plugin.
-Поточні приклади вбудованих provider:
+Поточні приклади комплектних провайдерів:
-- Anthropic тримає допоміжні засоби потоків, специфічні для Claude, у власному seam `api.ts` /
+- Anthropic тримає специфічні для Claude допоміжні засоби stream у власному seam `api.ts` /
`contract-api.ts`
-- OpenAI тримає builders provider, допоміжні засоби моделей за замовчуванням і builders realtime provider
- у власному `api.ts`
-- OpenRouter тримає builder provider і допоміжні засоби onboarding/config у власному
+- OpenAI тримає builder-и провайдера, допоміжні засоби default-model і realtime provider
+ builder-и у власному `api.ts`
+- OpenRouter тримає builder провайдера та допоміжні засоби onboarding/config у власному
`api.ts`
## Політика сумісності
-Для зовнішніх plugin робота із сумісністю відбувається в такому порядку:
+Для зовнішніх Plugin робота із сумісністю відбувається в такому порядку:
1. додати новий контракт
-2. залишити стару поведінку, під’єднану через адаптер сумісності
+2. залишити стару поведінку підключеною через адаптер сумісності
3. вивести діагностику або попередження, яке називає старий шлях і заміну
4. покрити обидва шляхи тестами
5. задокументувати застарівання та шлях міграції
-6. видаляти лише після оголошеного міграційного вікна, зазвичай у major-релізі
+6. видаляти лише після оголошеного вікна міграції, зазвичай у major-релізі
-Maintainers можуть перевірити поточну чергу міграції за допомогою
+Мейнтейнери можуть перевірити поточну чергу міграції за допомогою
`pnpm plugins:boundary-report`. Використовуйте `pnpm plugins:boundary-report:summary` для
-стислих підрахунків, `--owner ` для одного plugin або власника сумісності, і
+компактних підрахунків, `--owner ` для одного Plugin або власника сумісності та
`pnpm plugins:boundary-report:ci`, коли CI gate має падати через прострочені
-записи сумісності, міжвласницькі зарезервовані імпорти SDK або невикористані зарезервовані підшляхи SDK.
-Звіт групує застарілі
+записи сумісності, cross-owner reserved SDK imports або невикористані reserved SDK
+subpaths. Звіт групує застарілі
записи сумісності за датою видалення, рахує локальні посилання в коді/документації,
-показує міжвласницькі зарезервовані імпорти SDK і підсумовує приватний
-міст SDK memory-host, щоб cleanup сумісності залишався явним, а не
-покладався на ad hoc пошуки. Зарезервовані підшляхи SDK повинні мати відстежене використання власником;
-невикористані зарезервовані helper exports слід видалити з публічного SDK.
+показує cross-owner reserved SDK imports і підсумовує приватний
+memory-host SDK bridge, щоб очищення сумісності залишалося явним, а не
+покладалося на ad hoc пошуки. Reserved SDK subpaths повинні мати відстежене використання власником;
+невикористані reserved helper exports слід видалити з публічного SDK.
-Якщо поле маніфесту досі приймається, автори plugin можуть продовжувати його використовувати, доки
-документація й діагностика не скажуть інше. Новий код має віддавати перевагу задокументованій
-заміні, але наявні plugin не повинні ламатися під час звичайних minor-релізів.
+Якщо поле manifest усе ще приймається, автори Plugin можуть продовжувати його використовувати, доки
+документація та діагностика не скажуть інакше. Новий код має віддавати перевагу задокументованій
+заміні, але наявні Plugin не повинні ламатися під час звичайних minor-релізів.
-## Як виконати міграцію
+## Як мігрувати
-
- Вбудовані plugin мають припинити прямі виклики
+
+ Комплектні Plugin мають припинити прямі виклики
`api.runtime.config.loadConfig()` і
`api.runtime.config.writeConfigFile(...)`. Віддавайте перевагу конфігурації, яку
- вже було передано в активний шлях виклику. Довготривалі handlers, яким потрібен
+ вже передано в активний шлях виклику. Довготривалі обробники, яким потрібен
поточний snapshot процесу, можуть використовувати `api.runtime.config.current()`. Довготривалі
- інструменти агента мають використовувати `ctx.getRuntimeConfig()` контексту інструмента всередині
- `execute`, щоб інструмент, створений до запису конфігурації, все одно бачив оновлену
+ інструменти агентів мають використовувати `ctx.getRuntimeConfig()` з контексту інструмента всередині
+ `execute`, щоб інструмент, створений до запису конфігурації, усе ще бачив оновлену
runtime-конфігурацію.
- Записи конфігурації мають проходити через транзакційні допоміжні засоби й вибирати
+ Записи конфігурації мають проходити через транзакційні допоміжні засоби й обирати
політику після запису:
```typescript
@@ -139,46 +138,46 @@ Maintainers можуть перевірити поточну чергу мігр
Використовуйте `afterWrite: { mode: "restart", reason: "..." }`, коли викликач знає,
що зміна потребує чистого перезапуску gateway, і
`afterWrite: { mode: "none", reason: "..." }` лише тоді, коли викликач володіє
- подальшою дією й навмисно хоче придушити reload planner.
- Результати мутації містять типізований підсумок `followUp` для тестів і логування;
- gateway залишається відповідальним за застосування або планування перезапуску.
+ подальшими діями та свідомо хоче приглушити планувальник перезавантаження.
+ Результати мутацій містять типізований підсумок `followUp` для тестів і журналювання;
+ gateway лишається відповідальним за застосування або планування перезапуску.
`loadConfig` і `writeConfigFile` залишаються застарілими допоміжними засобами сумісності
- для зовнішніх plugin протягом міграційного вікна й попереджають один раз із
- кодом сумісності `runtime-config-load-write`. Вбудовані plugin і runtime-код репозиторію
+ для зовнішніх Plugin протягом вікна міграції та один раз попереджають із
+ кодом сумісності `runtime-config-load-write`. Комплектні Plugin і runtime-код repo
захищені scanner guardrails у
`pnpm check:deprecated-internal-config-api` і
- `pnpm check:no-runtime-action-load-config`: нове production-використання plugin
- відразу падає, прямі записи конфігурації падають, методи gateway server мають використовувати
- runtime snapshot запиту, runtime channel send/action/client helpers
- мають отримувати конфігурацію зі своєї межі, а довготривалі runtime-модулі мають
- нуль дозволених ambient-викликів `loadConfig()`.
+ `pnpm check:no-runtime-action-load-config`: нове використання у production Plugin
+ одразу падає, прямі записи конфігурації падають, методи gateway server мають використовувати
+ runtime snapshot запиту, runtime-допоміжні засоби channel send/action/client
+ мають отримувати конфігурацію зі своєї boundary, а довготривалі runtime-модулі мають
+ нуль дозволених ambient викликів `loadConfig()`.
- Новий код plugin також має уникати імпорту широкого
+ Новий код Plugin також має уникати імпорту широкого
compatibility barrel `openclaw/plugin-sdk/config-runtime`. Використовуйте вузький
- підшлях SDK, що відповідає завданню:
+ підшлях SDK, який відповідає завданню:
| Потреба | Імпорт |
| --- | --- |
| Типи конфігурації, як-от `OpenClawConfig` | `openclaw/plugin-sdk/config-types` |
- | Assertions уже завантаженої конфігурації та пошук plugin-entry config | `openclaw/plugin-sdk/plugin-config-runtime` |
+ | Перевірки вже завантаженої конфігурації та пошук конфігурації plugin-entry | `openclaw/plugin-sdk/plugin-config-runtime` |
| Читання поточного runtime snapshot | `openclaw/plugin-sdk/runtime-config-snapshot` |
| Записи конфігурації | `openclaw/plugin-sdk/config-mutation` |
- | Допоміжні засоби session store | `openclaw/plugin-sdk/session-store-runtime` |
- | Конфігурація таблиці Markdown | `openclaw/plugin-sdk/markdown-table-runtime` |
- | Runtime-допоміжні засоби group policy | `openclaw/plugin-sdk/runtime-group-policy` |
+ | Допоміжні засоби сховища сесій | `openclaw/plugin-sdk/session-store-runtime` |
+ | Конфігурація таблиць Markdown | `openclaw/plugin-sdk/markdown-table-runtime` |
+ | Runtime-допоміжні засоби групових політик | `openclaw/plugin-sdk/runtime-group-policy` |
| Розв’язання secret input | `openclaw/plugin-sdk/secret-input-runtime` |
| Перевизначення model/session | `openclaw/plugin-sdk/model-session-runtime` |
- Вбудовані plugin та їхні тести scanner-guarded проти широкого
- barrel, щоб імпорти й mocks залишалися локальними до потрібної їм поведінки. Широкий
- barrel досі існує для зовнішньої сумісності, але новий код не повинен
- залежати від нього.
+ Комплектні Plugin та їхні тести захищені scanner від широкого
+ barrel, щоб імпорти та mock-и залишалися локальними до потрібної поведінки. Широкий
+ barrel усе ще існує для зовнішньої сумісності, але новий код не повинен
+ від нього залежати.
-
- Вбудовані plugin мають замінити обробники tool-result
- `api.registerEmbeddedExtensionFactory(...)` лише для Pi на
+
+ Комплектні Plugin повинні замінити Pi-only
+ обробники результатів інструментів `api.registerEmbeddedExtensionFactory(...)` на
runtime-neutral middleware.
```typescript
@@ -190,7 +189,7 @@ Maintainers можуть перевірити поточну чергу мігр
});
```
- Одночасно оновіть маніфест plugin:
+ Одночасно оновіть manifest Plugin:
```json
{
@@ -200,39 +199,39 @@ Maintainers можуть перевірити поточну чергу мігр
}
```
- Зовнішні plugin не можуть реєструвати tool-result middleware, бо воно може
- переписувати високодовірений output інструмента до того, як його побачить модель.
+ Зовнішні Plugin не можуть реєструвати middleware результатів інструментів, бо воно може
+ переписувати high-trust output інструмента до того, як його побачить модель.
-
- Plugin каналів із підтримкою approvals тепер відкривають native approval behavior через
+
+ Channel Plugin із підтримкою approval тепер expose-ять native approval behavior через
`approvalCapability.nativeRuntime` плюс спільний runtime-context registry.
Ключові зміни:
- Замініть `approvalCapability.handler.loadRuntime(...)` на
`approvalCapability.nativeRuntime`
- - Перенесіть специфічні для approval auth/delivery зі старого wiring `plugin.auth` /
+ - Перенесіть auth/delivery, специфічні для approval, зі старого wiring `plugin.auth` /
`plugin.approvals` на `approvalCapability`
- `ChannelPlugin.approvals` видалено з публічного контракту channel-plugin;
перенесіть поля delivery/native/render на `approvalCapability`
- - `plugin.auth` залишається лише для flows login/logout каналу; approval auth
+ - `plugin.auth` лишається лише для потоків login/logout каналу; approval auth
hooks там більше не читаються core
- - Реєструйте runtime-об’єкти, що належать каналу, як-от clients, tokens або Bolt
+ - Реєструйте runtime-об’єкти, що належать каналу, такі як clients, tokens або Bolt
apps, через `openclaw/plugin-sdk/channel-runtime-context`
- - Не надсилайте notices reroute, що належать plugin, із native approval handlers;
- core тепер володіє notices routed-elsewhere з фактичних результатів доставки
- - Під час передавання `channelRuntime` у `createChannelManager(...)` надайте
- справжню surface `createPluginRuntime().channel`. Часткові stubs відхиляються.
+ - Не надсилайте plugin-owned reroute notices із native approval handlers;
+ core тепер володіє routed-elsewhere notices з фактичних результатів доставки
+ - Передаючи `channelRuntime` у `createChannelManager(...)`, надайте
+ справжню поверхню `createPluginRuntime().channel`. Часткові stubs відхиляються.
- Див. `/plugins/sdk-channel-plugins` для поточної структури approval capability.
+ Див. `/plugins/sdk-channel-plugins` щодо поточного layout approval capability.
- Якщо ваш plugin використовує `openclaw/plugin-sdk/windows-spawn`, нерозв’язані Windows
- wrappers `.cmd`/`.bat` тепер fail closed, якщо ви явно не передасте
+ Якщо ваш Plugin використовує `openclaw/plugin-sdk/windows-spawn`, нерозв’язані Windows
+ `.cmd`/`.bat` wrappers тепер fail closed, якщо ви явно не передасте
`allowShellFallback: true`.
```typescript
@@ -248,13 +247,13 @@ Maintainers можуть перевірити поточну чергу мігр
});
```
- Якщо ваш викликач не покладається навмисно на shell fallback, не встановлюйте
- `allowShellFallback` і натомість обробіть thrown error.
+ Якщо ваш викликач свідомо не покладається на shell fallback, не встановлюйте
+ `allowShellFallback` і натомість обробіть викинуту помилку.
- Пошукайте у своєму plugin імпорти з будь-якої застарілої поверхні:
+ Шукайте у своєму Plugin імпорти з будь-якої застарілої поверхні:
```bash
grep -r "plugin-sdk/compat" my-plugin/
@@ -265,8 +264,8 @@ Maintainers можуть перевірити поточну чергу мігр
-
- Кожен експорт зі старої поверхні відповідає певному сучасному шляху імпорту:
+
+ Кожен експорт зі старої поверхні відповідає конкретному сучасному шляху імпорту:
```typescript
// Before (deprecated backwards-compatibility layer)
@@ -293,7 +292,7 @@ Maintainers можуть перевірити поточну чергу мігр
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
```
- Та сама схема застосовується до інших застарілих допоміжних функцій мосту:
+ Та сама схема застосовується до інших застарілих допоміжних функцій моста:
| Старий імпорт | Сучасний еквівалент |
| --- | --- |
@@ -308,41 +307,41 @@ Maintainers можуть перевірити поточну чергу мігр
- `openclaw/plugin-sdk/infra-runtime` досі існує для зовнішньої
+ `openclaw/plugin-sdk/infra-runtime` все ще існує для зовнішньої
сумісності, але новий код має імпортувати сфокусовану поверхню допоміжних функцій, яка
- йому фактично потрібна:
+ йому справді потрібна:
| Потреба | Імпорт |
| --- | --- |
| Допоміжні функції черги системних подій | `openclaw/plugin-sdk/system-event-runtime` |
| Допоміжні функції подій Heartbeat і видимості | `openclaw/plugin-sdk/heartbeat-runtime` |
- | Спорожнення черги очікуваних доставок | `openclaw/plugin-sdk/delivery-queue-runtime` |
+ | Спорожнення черги очікуваної доставки | `openclaw/plugin-sdk/delivery-queue-runtime` |
| Телеметрія активності каналу | `openclaw/plugin-sdk/channel-activity-runtime` |
- | Кеші дедуплікації в пам'яті | `openclaw/plugin-sdk/dedupe-runtime` |
- | Допоміжні функції безпечних локальних шляхів до файлів/медіа | `openclaw/plugin-sdk/file-access-runtime` |
- | Dispatcher-aware fetch | `openclaw/plugin-sdk/runtime-fetch` |
- | Допоміжні функції проксі та захищеного fetch | `openclaw/plugin-sdk/fetch-runtime` |
- | Типи політик диспетчера SSRF | `openclaw/plugin-sdk/ssrf-dispatcher` |
+ | Кеші дедуплікації в пам’яті | `openclaw/plugin-sdk/dedupe-runtime` |
+ | Допоміжні функції безпечних шляхів до локальних файлів/медіа | `openclaw/plugin-sdk/file-access-runtime` |
+ | Вибірка з урахуванням диспетчера | `openclaw/plugin-sdk/runtime-fetch` |
+ | Допоміжні функції проксі та захищеної вибірки | `openclaw/plugin-sdk/fetch-runtime` |
+ | Типи політики диспетчера SSRF | `openclaw/plugin-sdk/ssrf-dispatcher` |
| Типи запиту/вирішення затвердження | `openclaw/plugin-sdk/approval-runtime` |
- | Допоміжні функції корисного навантаження відповіді затвердження та команд | `openclaw/plugin-sdk/approval-reply-runtime` |
+ | Допоміжні функції корисного навантаження відповіді на затвердження та команд | `openclaw/plugin-sdk/approval-reply-runtime` |
| Допоміжні функції форматування помилок | `openclaw/plugin-sdk/error-runtime` |
| Очікування готовності транспорту | `openclaw/plugin-sdk/transport-ready-runtime` |
| Допоміжні функції безпечних токенів | `openclaw/plugin-sdk/secure-random-runtime` |
- | Обмежена конкурентність асинхронних задач | `openclaw/plugin-sdk/concurrency-runtime` |
+ | Обмежена конкурентність асинхронних завдань | `openclaw/plugin-sdk/concurrency-runtime` |
| Числове приведення | `openclaw/plugin-sdk/number-runtime` |
- | Процесно-локальне асинхронне блокування | `openclaw/plugin-sdk/async-lock-runtime` |
- | Файлові блокування | `openclaw/plugin-sdk/file-lock` |
+ | Асинхронне блокування в межах процесу | `openclaw/plugin-sdk/async-lock-runtime` |
+ | Блокування файлів | `openclaw/plugin-sdk/file-lock` |
- Для вбудованих plugins scanner захищає від `infra-runtime`, тому код репозиторію
+ Вбудовані plugins захищені сканером від `infra-runtime`, тому код репозиторію
не може повернутися до широкого barrel.
Новий код маршрутів каналів має використовувати `openclaw/plugin-sdk/channel-route`.
- Старі назви route-key і comparable-target залишаються сумісними
- псевдонімами під час міграційного вікна, але нові plugins мають використовувати назви маршрутів,
- які прямо описують поведінку:
+ Старіші назви route-key і comparable-target залишаються сумісними
+ псевдонімами на час міграційного вікна, але нові plugins мають використовувати назви маршрутів,
+ які напряму описують поведінку:
| Стара допоміжна функція | Сучасна допоміжна функція |
| --- | --- |
@@ -355,10 +354,10 @@ Maintainers можуть перевірити поточну чергу мігр
| `comparableChannelTargetsShareRoute(...)` | `channelRouteTargetsShareConversation(...)` |
Сучасні допоміжні функції маршрутів узгоджено нормалізують `{ channel, to, accountId, threadId }`
- для нативних затверджень, приглушення відповідей, дедуплікації вхідних повідомлень,
- доставки cron і маршрутизації сеансів. Якщо ваш plugin має власну граматику цільових об'єктів,
+ для власних затверджень, приглушення відповідей, вхідної дедуплікації,
+ доставки cron і маршрутизації сеансів. Якщо ваш plugin має власну граматику цілей,
використовуйте `resolveChannelRouteTargetWithParser(...)`, щоб адаптувати цей
- парсер до того самого контракту цільового об'єкта маршруту.
+ парсер до того самого контракту цілі маршруту.
@@ -372,209 +371,209 @@ Maintainers можуть перевірити поточну чергу мігр
## Довідник шляхів імпорту
-
+
| Шлях імпорту | Призначення | Ключові експорти |
| --- | --- | --- |
- | `plugin-sdk/plugin-entry` | Канонічний помічник точки входу Plugin | `definePluginEntry` |
- | `plugin-sdk/core` | Застарілий загальний реекспорт для визначень/будівників точок входу каналу | `defineChannelPluginEntry`, `createChatChannelPlugin` |
+ | `plugin-sdk/plugin-entry` | Канонічний допоміжний засіб входу плагіна | `definePluginEntry` |
+ | `plugin-sdk/core` | Застарілий узагальнений реекспорт для визначень/будівників входу каналів | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/config-schema` | Експорт кореневої схеми конфігурації | `OpenClawSchema` |
- | `plugin-sdk/provider-entry` | Помічник точки входу для одного провайдера | `defineSingleProviderPluginEntry` |
- | `plugin-sdk/channel-core` | Сфокусовані визначення й будівники точок входу каналу | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
- | `plugin-sdk/setup` | Спільні помічники майстра налаштування | Запити списку дозволених, будівники стану налаштування |
- | `plugin-sdk/setup-runtime` | Runtime-помічники часу налаштування | Безпечні для імпорту адаптери патчів налаштування, помічники приміток пошуку, `promptResolvedAllowFrom`, `splitSetupEntries`, делеговані проксі налаштування |
- | `plugin-sdk/setup-adapter-runtime` | Помічники адаптера налаштування | `createEnvPatchedAccountSetupAdapter` |
- | `plugin-sdk/setup-tools` | Помічники інструментів налаштування | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
- | `plugin-sdk/account-core` | Помічники кількох облікових записів | Помічники списку облікових записів/конфігурації/шлюзу дій |
- | `plugin-sdk/account-id` | Помічники ID облікового запису | `DEFAULT_ACCOUNT_ID`, нормалізація ID облікового запису |
- | `plugin-sdk/account-resolution` | Помічники пошуку облікового запису | Помічники пошуку облікового запису та резервного варіанта за замовчуванням |
- | `plugin-sdk/account-helpers` | Вузькі помічники облікових записів | Помічники списку облікових записів/дій з обліковим записом |
+ | `plugin-sdk/provider-entry` | Допоміжний засіб входу для одного провайдера | `defineSingleProviderPluginEntry` |
+ | `plugin-sdk/channel-core` | Сфокусовані визначення входу каналів і будівники | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
+ | `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування | Запити списку дозволених, будівники стану налаштування |
+ | `plugin-sdk/setup-runtime` | Допоміжні засоби середовища виконання під час налаштування | Безпечні для імпорту адаптери патчів налаштування, допоміжні засоби нотаток пошуку, `promptResolvedAllowFrom`, `splitSetupEntries`, делеговані проксі налаштування |
+ | `plugin-sdk/setup-adapter-runtime` | Допоміжні засоби адаптера налаштування | `createEnvPatchedAccountSetupAdapter` |
+ | `plugin-sdk/setup-tools` | Допоміжні засоби інструментів налаштування | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
+ | `plugin-sdk/account-core` | Допоміжні засоби для кількох облікових записів | Допоміжні засоби списку облікових записів/конфігурації/шлюзу дій |
+ | `plugin-sdk/account-id` | Допоміжні засоби ідентифікатора облікового запису | `DEFAULT_ACCOUNT_ID`, нормалізація ідентифікатора облікового запису |
+ | `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису | Пошук облікового запису + допоміжні засоби резервного значення за замовчуванням |
+ | `plugin-sdk/account-helpers` | Вузькі допоміжні засоби облікового запису | Допоміжні засоби списку облікових записів/дій облікового запису |
| `plugin-sdk/channel-setup` | Адаптери майстра налаштування | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
- | `plugin-sdk/channel-pairing` | Примітиви парування DM | `createChannelPairingController` |
+ | `plugin-sdk/channel-pairing` | Примітиви сполучення DM | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | Префікс відповіді, введення тексту та зв’язування доставки джерела | `createChannelReplyPipeline`, `resolveChannelSourceReplyDeliveryMode` |
- | `plugin-sdk/channel-config-helpers` | Фабрики адаптерів конфігурації | `createHybridChannelConfigAdapter` |
- | `plugin-sdk/channel-config-schema` | Будівники схем конфігурації | Лише спільні примітиви схеми конфігурації каналу та загальний будівник |
- | `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації в комплекті | Лише підтримувані OpenClaw Plugin у комплекті; нові Plugin мають визначати локальні для Plugin схеми |
- | `plugin-sdk/channel-config-schema-legacy` | Застарілі схеми конфігурації в комплекті | Лише сумісний псевдонім; використовуйте `plugin-sdk/bundled-channel-config-schema` для підтримуваних Plugin у комплекті |
- | `plugin-sdk/telegram-command-config` | Помічники конфігурації команд Telegram | Нормалізація назв команд, обрізання описів, перевірка дублікатів/конфліктів |
- | `plugin-sdk/channel-policy` | Визначення політики групи/DM | `resolveChannelGroupRequireMention` |
- | `plugin-sdk/channel-lifecycle` | Помічники стану облікового запису та життєвого циклу потоку чернетки | `createAccountStatusSink`, помічники фіналізації попереднього перегляду чернетки |
- | `plugin-sdk/inbound-envelope` | Помічники вхідного конверта | Спільні помічники маршруту й будівника конверта |
- | `plugin-sdk/inbound-reply-dispatch` | Помічники вхідної відповіді | Спільні помічники запису й диспетчеризації |
- | `plugin-sdk/messaging-targets` | Розбір цілі повідомлення | Помічники розбору/зіставлення цілі |
- | `plugin-sdk/outbound-media` | Помічники вихідних медіа | Спільне завантаження вихідних медіа |
- | `plugin-sdk/outbound-send-deps` | Помічники залежностей вихідного надсилання | Легкий пошук `resolveOutboundSendDep` без імпорту повного вихідного runtime |
- | `plugin-sdk/outbound-runtime` | Помічники вихідного runtime | Помічники вихідної доставки, делегата ідентичності/надсилання, сеансу, форматування та планування payload |
- | `plugin-sdk/thread-bindings-runtime` | Помічники прив’язки потоку | Помічники життєвого циклу й адаптера прив’язки потоку |
- | `plugin-sdk/agent-media-payload` | Помічники застарілих payload медіа | Будівник payload медіа агента для застарілих макетів полів |
- | `plugin-sdk/channel-runtime` | Застаріла сумісна прокладка | Лише утиліти runtime застарілого каналу |
- | `plugin-sdk/channel-send-result` | Типи результатів надсилання | Типи результатів відповіді |
- | `plugin-sdk/runtime-store` | Постійне сховище Plugin | `createPluginRuntimeStore` |
- | `plugin-sdk/runtime` | Широкі runtime-помічники | Помічники runtime/логування/резервного копіювання/встановлення Plugin |
- | `plugin-sdk/runtime-env` | Вузькі помічники runtime-середовища | Помічники логера/runtime-середовища, тайм-ауту, повтору та backoff |
- | `plugin-sdk/plugin-runtime` | Спільні runtime-помічники Plugin | Помічники команд/хуків/http/інтерактивних функцій Plugin |
- | `plugin-sdk/hook-runtime` | Помічники конвеєра хуків | Спільні помічники конвеєра Webhook/внутрішніх хуків |
- | `plugin-sdk/lazy-runtime` | Помічники лінивого runtime | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
- | `plugin-sdk/process-runtime` | Помічники процесів | Спільні помічники exec |
- | `plugin-sdk/cli-runtime` | Runtime-помічники CLI | Форматування команд, очікування, помічники версій |
- | `plugin-sdk/gateway-runtime` | Помічники Gateway | Клієнт Gateway, помічник запуску готовності циклу подій і помічники патчів стану каналу |
- | `plugin-sdk/config-runtime` | Застаріла сумісна прокладка конфігурації | Надавайте перевагу `config-types`, `plugin-config-runtime`, `runtime-config-snapshot` і `config-mutation` |
- | `plugin-sdk/telegram-command-config` | Помічники команд Telegram | Стабільні щодо fallback помічники перевірки команд Telegram, коли поверхня контракту Telegram у комплекті недоступна |
- | `plugin-sdk/approval-runtime` | Помічники запитів підтвердження | Payload підтвердження exec/Plugin, помічники можливостей/профілю підтвердження, нативна маршрутизація/ runtime підтвердження та форматування шляху структурованого відображення підтвердження |
- | `plugin-sdk/approval-auth-runtime` | Помічники авторизації підтвердження | Визначення затверджувача, авторизація дій у тому самому чаті |
- | `plugin-sdk/approval-client-runtime` | Помічники клієнта підтвердження | Нативні помічники профілю/фільтра підтвердження exec |
- | `plugin-sdk/approval-delivery-runtime` | Помічники доставки підтвердження | Нативні адаптери можливостей/доставки підтвердження |
- | `plugin-sdk/approval-gateway-runtime` | Помічники Gateway підтвердження | Спільний помічник визначення Gateway для підтвердження |
- | `plugin-sdk/approval-handler-adapter-runtime` | Помічники адаптера підтвердження | Легкі помічники завантаження нативного адаптера підтвердження для гарячих точок входу каналу |
- | `plugin-sdk/approval-handler-runtime` | Помічники обробника підтвердження | Ширші runtime-помічники обробника підтвердження; надавайте перевагу вужчим адаптерним/Gateway межам, коли їх достатньо |
- | `plugin-sdk/approval-native-runtime` | Помічники цілі підтвердження | Нативні помічники прив’язки цілі/облікового запису підтвердження |
- | `plugin-sdk/approval-reply-runtime` | Помічники відповіді підтвердження | Помічники payload відповіді підтвердження exec/Plugin |
- | `plugin-sdk/channel-runtime-context` | Помічники runtime-контексту каналу | Загальні помічники реєстрації/отримання/спостереження runtime-контексту каналу |
- | `plugin-sdk/security-runtime` | Помічники безпеки | Спільні помічники довіри, шлюзу DM, зовнішнього вмісту та збору секретів |
- | `plugin-sdk/ssrf-policy` | Помічники політики SSRF | Помічники списку дозволених хостів і політики приватної мережі |
- | `plugin-sdk/ssrf-runtime` | Runtime-помічники SSRF | Закріплений диспетчер, захищений fetch, помічники політики SSRF |
- | `plugin-sdk/system-event-runtime` | Помічники системних подій | `enqueueSystemEvent`, `peekSystemEventEntries` |
- | `plugin-sdk/heartbeat-runtime` | Помічники Heartbeat | Помічники подій Heartbeat і видимості |
- | `plugin-sdk/delivery-queue-runtime` | Помічники черги доставки | `drainPendingDeliveries` |
- | `plugin-sdk/channel-activity-runtime` | Помічники активності каналу | `recordChannelActivity` |
- | `plugin-sdk/dedupe-runtime` | Помічники дедуплікації | In-memory кеші дедуплікації |
- | `plugin-sdk/file-access-runtime` | Помічники доступу до файлів | Помічники безпечних шляхів локальних файлів/медіа |
- | `plugin-sdk/transport-ready-runtime` | Помічники готовності транспорту | `waitForTransportReady` |
- | `plugin-sdk/collection-runtime` | Помічники обмеженого кешу | `pruneMapToMaxSize` |
- | `plugin-sdk/diagnostic-runtime` | Помічники діагностичного шлюзу | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
- | `plugin-sdk/error-runtime` | Помічники форматування помилок | `formatUncaughtError`, `isApprovalNotFoundError`, помічники графа помилок |
- | `plugin-sdk/fetch-runtime` | Помічники обгорнутого fetch/proxy | `resolveFetch`, помічники proxy, помічники опцій EnvHttpProxyAgent |
- | `plugin-sdk/host-runtime` | Помічники нормалізації хоста | `normalizeHostname`, `normalizeScpRemoteHost` |
- | `plugin-sdk/retry-runtime` | Помічники повторів | `RetryConfig`, `retryAsync`, виконавці політик |
+ | `plugin-sdk/channel-config-helpers` | Фабрики адаптерів конфігурації та допоміжні засоби доступу DM | `createHybridChannelConfigAdapter`, `resolveChannelDmAccess`, `resolveChannelDmAllowFrom`, `resolveChannelDmPolicy`, `normalizeChannelDmPolicy`, `normalizeLegacyDmAliases` |
+ | `plugin-sdk/channel-config-schema` | Будівники схеми конфігурації | Спільні примітиви схеми конфігурації каналів і лише універсальний будівник |
+ | `plugin-sdk/bundled-channel-config-schema` | Вбудовані схеми конфігурації | Лише вбудовані плагіни, підтримувані OpenClaw; нові плагіни мають визначати локальні для плагіна схеми |
+ | `plugin-sdk/channel-config-schema-legacy` | Застарілі вбудовані схеми конфігурації | Лише псевдонім сумісності; використовуйте `plugin-sdk/bundled-channel-config-schema` для підтримуваних вбудованих плагінів |
+ | `plugin-sdk/telegram-command-config` | Допоміжні засоби конфігурації команд Telegram | Нормалізація назв команд, обрізання опису, перевірка дублікатів/конфліктів |
+ | `plugin-sdk/channel-policy` | Вирішення політики груп/DM | `resolveChannelGroupRequireMention` |
+ | `plugin-sdk/channel-lifecycle` | Допоміжні засоби стану облікового запису та життєвого циклу чернеткового потоку | `createAccountStatusSink`, допоміжні засоби фіналізації попереднього перегляду чернетки |
+ | `plugin-sdk/inbound-envelope` | Допоміжні засоби вхідного конверта | Спільний маршрут + допоміжні засоби будівника конверта |
+ | `plugin-sdk/inbound-reply-dispatch` | Допоміжні засоби вхідної відповіді | Спільні допоміжні засоби запису й диспетчеризації |
+ | `plugin-sdk/messaging-targets` | Розбір цілей повідомлень | Допоміжні засоби розбору/зіставлення цілей |
+ | `plugin-sdk/outbound-media` | Допоміжні засоби вихідних медіа | Спільне завантаження вихідних медіа |
+ | `plugin-sdk/outbound-send-deps` | Допоміжні засоби залежностей вихідного надсилання | Легкий пошук `resolveOutboundSendDep` без імпорту повного вихідного середовища виконання |
+ | `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідного середовища виконання | Допоміжні засоби вихідної доставки, делегата ідентичності/надсилання, сеансу, форматування та планування корисного навантаження |
+ | `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби прив’язування потоків | Допоміжні засоби життєвого циклу прив’язування потоків і адаптера |
+ | `plugin-sdk/agent-media-payload` | Застарілі допоміжні засоби корисного навантаження медіа | Будівник корисного навантаження медіа агента для застарілих макетів полів |
+ | `plugin-sdk/channel-runtime` | Застаріла прокладка сумісності | Лише застарілі утиліти середовища виконання каналу |
+ | `plugin-sdk/channel-send-result` | Типи результату надсилання | Типи результату відповіді |
+ | `plugin-sdk/runtime-store` | Постійне сховище плагіна | `createPluginRuntimeStore` |
+ | `plugin-sdk/runtime` | Широкі допоміжні засоби середовища виконання | Допоміжні засоби середовища виконання/журналювання/резервного копіювання/встановлення плагіна |
+ | `plugin-sdk/runtime-env` | Вузькі допоміжні засоби середовища виконання | Журналер/середовище виконання, час очікування, повтор і допоміжні засоби відступу |
+ | `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби середовища виконання плагіна | Допоміжні засоби команд/хуків/http/інтерактивності плагіна |
+ | `plugin-sdk/hook-runtime` | Допоміжні засоби конвеєра хуків | Спільні допоміжні засоби конвеєра Webhook/внутрішніх хуків |
+ | `plugin-sdk/lazy-runtime` | Допоміжні засоби лінивого середовища виконання | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
+ | `plugin-sdk/process-runtime` | Допоміжні засоби процесів | Спільні допоміжні засоби виконання |
+ | `plugin-sdk/cli-runtime` | Допоміжні засоби середовища виконання CLI | Форматування команд, очікування, допоміжні засоби версій |
+ | `plugin-sdk/gateway-runtime` | Допоміжні засоби Gateway | Клієнт Gateway, допоміжний засіб запуску з готовністю циклу подій і допоміжні засоби патчів стану каналу |
+ | `plugin-sdk/config-runtime` | Застаріла прокладка сумісності конфігурації | Надавайте перевагу `config-types`, `plugin-config-runtime`, `runtime-config-snapshot` і `config-mutation` |
+ | `plugin-sdk/telegram-command-config` | Допоміжні засоби команд Telegram | Стабільні щодо резервного варіанту допоміжні засоби перевірки команд Telegram, коли поверхня контракту вбудованого Telegram недоступна |
+ | `plugin-sdk/approval-runtime` | Допоміжні засоби запиту схвалення | Корисне навантаження схвалення виконання/плагіна, допоміжні засоби можливостей/профілів схвалення, маршрутизація/середовище виконання нативного схвалення та форматування шляху відображення структурованого схвалення |
+ | `plugin-sdk/approval-auth-runtime` | Допоміжні засоби автентифікації схвалення | Визначення схвалювача, автентифікація дій у тому самому чаті |
+ | `plugin-sdk/approval-client-runtime` | Допоміжні засоби клієнта схвалення | Допоміжні засоби профілю/фільтра нативного схвалення виконання |
+ | `plugin-sdk/approval-delivery-runtime` | Допоміжні засоби доставки схвалення | Адаптери можливостей/доставки нативного схвалення |
+ | `plugin-sdk/approval-gateway-runtime` | Допоміжні засоби Gateway схвалення | Спільний допоміжний засіб визначення Gateway схвалення |
+ | `plugin-sdk/approval-handler-adapter-runtime` | Допоміжні засоби адаптера схвалення | Легкі допоміжні засоби завантаження адаптера нативного схвалення для гарячих точок входу каналів |
+ | `plugin-sdk/approval-handler-runtime` | Допоміжні засоби обробника схвалення | Ширші допоміжні засоби середовища виконання обробника схвалення; надавайте перевагу вужчим адаптерним/Gateway швам, коли їх достатньо |
+ | `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілі схвалення | Допоміжні засоби прив’язування нативної цілі/облікового запису схвалення |
+ | `plugin-sdk/approval-reply-runtime` | Допоміжні засоби відповіді на схвалення | Допоміжні засоби корисного навантаження відповіді на схвалення виконання/плагіна |
+ | `plugin-sdk/channel-runtime-context` | Допоміжні засоби контексту середовища виконання каналу | Універсальні допоміжні засоби реєстрації/отримання/спостереження контексту середовища виконання каналу |
+ | `plugin-sdk/security-runtime` | Допоміжні засоби безпеки | Спільні допоміжні засоби довіри, шлюзування DM, зовнішнього вмісту та збирання секретів |
+ | `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF | Допоміжні засоби списку дозволених хостів і політики приватної мережі |
+ | `plugin-sdk/ssrf-runtime` | Допоміжні засоби середовища виконання SSRF | Закріплений диспетчер, захищене отримання, допоміжні засоби політики SSRF |
+ | `plugin-sdk/system-event-runtime` | Допоміжні засоби системних подій | `enqueueSystemEvent`, `peekSystemEventEntries` |
+ | `plugin-sdk/heartbeat-runtime` | Допоміжні засоби Heartbeat | Допоміжні засоби подій Heartbeat і видимості |
+ | `plugin-sdk/delivery-queue-runtime` | Допоміжні засоби черги доставки | `drainPendingDeliveries` |
+ | `plugin-sdk/channel-activity-runtime` | Допоміжні засоби активності каналу | `recordChannelActivity` |
+ | `plugin-sdk/dedupe-runtime` | Допоміжні засоби дедуплікації | Кеші дедуплікації в пам’яті |
+ | `plugin-sdk/file-access-runtime` | Допоміжні засоби доступу до файлів | Допоміжні засоби безпечних шляхів локальних файлів/медіа |
+ | `plugin-sdk/transport-ready-runtime` | Допоміжні засоби готовності транспорту | `waitForTransportReady` |
+ | `plugin-sdk/collection-runtime` | Допоміжні засоби обмеженого кешу | `pruneMapToMaxSize` |
+ | `plugin-sdk/diagnostic-runtime` | Допоміжні засоби шлюзування діагностики | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
+ | `plugin-sdk/error-runtime` | Допоміжні засоби форматування помилок | `formatUncaughtError`, `isApprovalNotFoundError`, допоміжні засоби графа помилок |
+ | `plugin-sdk/fetch-runtime` | Обгорнуті допоміжні засоби fetch/проксі | `resolveFetch`, допоміжні засоби проксі, допоміжні засоби параметрів EnvHttpProxyAgent |
+ | `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації хоста | `normalizeHostname`, `normalizeScpRemoteHost` |
+ | `plugin-sdk/retry-runtime` | Допоміжні засоби повтору | `RetryConfig`, `retryAsync`, виконавці політик |
| `plugin-sdk/allow-from` | Форматування списку дозволених | `formatAllowFromLowercase` |
- | `plugin-sdk/allowlist-resolution` | Мапінг вводу списку дозволених | `mapAllowlistResolutionInputs` |
- | `plugin-sdk/command-auth` | Помічники шлюзу команд і командної поверхні | `resolveControlCommandGate`, помічники авторизації відправника, помічники реєстру команд, зокрема форматування меню динамічних аргументів |
+ | `plugin-sdk/allowlist-resolution` | Зіставлення вхідних даних списку дозволених | `mapAllowlistResolutionInputs` |
+ | `plugin-sdk/command-auth` | Шлюзування команд і допоміжні засоби поверхні команд | `resolveControlCommandGate`, допоміжні засоби авторизації відправника, допоміжні засоби реєстру команд, зокрема форматування меню динамічних аргументів |
| `plugin-sdk/command-status` | Рендерери стану/довідки команд | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` |
- | `plugin-sdk/secret-input` | Розбір вводу секретів | Помічники вводу секретів |
- | `plugin-sdk/webhook-ingress` | Помічники запитів Webhook | Утиліти цілі Webhook |
- | `plugin-sdk/webhook-request-guards` | Помічники захисту тіла Webhook | Помічники читання/обмеження тіла запиту |
- | `plugin-sdk/reply-runtime` | Спільний runtime відповідей | Вхідна диспетчеризація, Heartbeat, планувальник відповідей, поділ на частини |
- | `plugin-sdk/reply-dispatch-runtime` | Вузькі помічники диспетчеризації відповідей | Фіналізація, диспетчеризація провайдера та помічники міток розмов |
- | `plugin-sdk/reply-history` | Помічники історії відповідей | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
- | `plugin-sdk/reply-reference` | Планування посилань відповіді | `createReplyReferencePlanner` |
- | `plugin-sdk/reply-chunking` | Помічники частин відповіді | Помічники поділу тексту/markdown на частини |
- | `plugin-sdk/session-store-runtime` | Помічники сховища сеансів | Помічники шляху сховища та updated-at |
- | `plugin-sdk/state-paths` | Помічники шляхів стану | Помічники каталогів стану та OAuth |
- | `plugin-sdk/routing` | Помічники маршрутизації/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, помічники нормалізації session-key |
- | `plugin-sdk/status-helpers` | Помічники стану каналу | Будівники зведень стану каналу/облікового запису, стандартні значення runtime-стану, помічники метаданих проблем |
- | `plugin-sdk/target-resolver-runtime` | Помічники розпізнавача цілі | Спільні помічники розпізнавача цілі |
- | `plugin-sdk/string-normalization-runtime` | Помічники нормалізації рядків | Помічники нормалізації slug/рядків |
- | `plugin-sdk/request-url` | Помічники URL запиту | Видобування рядкових URL з подібних до запиту вхідних даних |
- | `plugin-sdk/run-command` | Помічники команд із таймером | Виконавець команд із таймером і нормалізованими stdout/stderr |
- | `plugin-sdk/param-readers` | Читачі параметрів | Спільні читачі параметрів інструментів/CLI |
- | `plugin-sdk/tool-payload` | Видобування payload інструмента | Видобування нормалізованих payload з об’єктів результатів інструмента |
- | `plugin-sdk/tool-send` | Видобування надсилання інструмента | Видобування канонічних полів цілі надсилання з аргументів інструмента |
- | `plugin-sdk/temp-path` | Помічники тимчасових шляхів | Спільні помічники шляхів для тимчасових завантажень |
- | `plugin-sdk/logging-core` | Помічники журналювання | Помічники підсистемного журналювання та редагування |
- | `plugin-sdk/markdown-table-runtime` | Помічники Markdown-таблиць | Помічники режиму Markdown-таблиць |
- | `plugin-sdk/reply-payload` | Типи відповідей на повідомлення | Типи корисного навантаження відповіді |
- | `plugin-sdk/provider-setup` | Добірні помічники налаштування локальних/самостійно розгорнутих провайдерів | Помічники виявлення/налаштування самостійно розгорнутих провайдерів |
- | `plugin-sdk/self-hosted-provider-setup` | Спеціалізовані помічники налаштування OpenAI-сумісних самостійно розгорнутих провайдерів | Ті самі помічники виявлення/налаштування самостійно розгорнутих провайдерів |
- | `plugin-sdk/provider-auth-runtime` | Помічники автентифікації провайдера під час виконання | Помічники визначення API-ключа під час виконання |
- | `plugin-sdk/provider-auth-api-key` | Помічники налаштування API-ключа провайдера | Помічники онбордингу API-ключа/запису профілю |
- | `plugin-sdk/provider-auth-result` | Помічники результату автентифікації провайдера | Стандартний збирач результату автентифікації OAuth |
- | `plugin-sdk/provider-auth-login` | Помічники інтерактивного входу провайдера | Спільні помічники інтерактивного входу |
- | `plugin-sdk/provider-selection-runtime` | Помічники вибору провайдера | Вибір налаштованого або автоматичного провайдера та об’єднання сирої конфігурації провайдера |
- | `plugin-sdk/provider-env-vars` | Помічники env-var провайдера | Помічники пошуку env-var автентифікації провайдера |
- | `plugin-sdk/provider-model-shared` | Спільні помічники моделі/відтворення провайдера | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні збирачі політик відтворення, помічники кінцевих точок провайдера та помічники нормалізації model-id |
- | `plugin-sdk/provider-catalog-shared` | Спільні помічники каталогу провайдера | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `buildManifestModelProviderConfig`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
- | `plugin-sdk/provider-onboard` | Патчі онбордингу провайдера | Помічники конфігурації онбордингу |
- | `plugin-sdk/provider-http` | Помічники HTTP провайдера | Загальні помічники можливостей HTTP/кінцевих точок провайдера, зокрема помічники multipart-форми для аудіотранскрипції |
- | `plugin-sdk/provider-web-fetch` | Помічники web-fetch провайдера | Помічники реєстрації/кешу провайдера web-fetch |
- | `plugin-sdk/provider-web-search-config-contract` | Помічники конфігурації web-search провайдера | Вузькі помічники конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення plugin-enable |
- | `plugin-sdk/provider-web-search-contract` | Помічники контракту web-search провайдера | Вузькі помічники контракту конфігурації/облікових даних web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і обмежені за областю сетери/гетери облікових даних |
- | `plugin-sdk/provider-web-search` | Помічники web-search провайдера | Помічники реєстрації/кешу/середовища виконання провайдера web-search |
- | `plugin-sdk/provider-tools` | Помічники сумісності інструментів/схем провайдера | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схем Gemini + діагностика, а також помічники сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
- | `plugin-sdk/provider-usage` | Помічники використання провайдера | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` та інші помічники використання провайдера |
- | `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/keyed-async-queue` | Упорядкована асинхронна черга | `KeyedAsyncQueue` |
- | `plugin-sdk/media-runtime` | Спільні помічники медіа | Помічники отримання/перетворення/збереження медіа, визначення розмірів відео на основі ffprobe та збирачі корисного навантаження медіа |
- | `plugin-sdk/media-generation-runtime` | Спільні помічники генерації медіа | Спільні помічники відмовостійкості, вибір кандидатів і повідомлення про відсутню модель для генерації зображень/відео/музики |
- | `plugin-sdk/media-understanding` | Помічники розуміння медіа | Типи провайдера розуміння медіа плюс експорти помічників зображень/аудіо для провайдерів |
- | `plugin-sdk/text-runtime` | Спільні помічники тексту | Вилучення видимого для асистента тексту, помічники рендерингу/поділу на частини/таблиць Markdown, помічники редагування, помічники directive-tag, утиліти безпечного тексту та пов’язані помічники тексту/журналювання |
- | `plugin-sdk/text-chunking` | Помічники поділу тексту на частини | Помічник поділу вихідного тексту на частини |
- | `plugin-sdk/speech` | Помічники мовлення | Типи провайдера мовлення плюс помічники директив, реєстру й валідації для провайдерів, а також OpenAI-сумісний збирач TTS |
- | `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/interactive-runtime` | Помічники інтерактивної відповіді | Нормалізація/скорочення корисного навантаження інтерактивної відповіді |
+ | `plugin-sdk/secret-input` | Розбір введення секретів | Допоміжні засоби введення секретів |
+ | `plugin-sdk/webhook-ingress` | Допоміжні засоби запитів Webhook | Утиліти цілей Webhook |
+ | `plugin-sdk/webhook-request-guards` | Допоміжні засоби захисту тіла Webhook | Допоміжні засоби читання/обмеження тіла запиту |
+ | `plugin-sdk/reply-runtime` | Спільне середовище виконання відповіді | Вхідна диспетчеризація, Heartbeat, планувальник відповіді, розбиття на частини |
+ | `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби диспетчеризації відповіді | Фіналізація, диспетчеризація провайдера та допоміжні засоби міток розмов |
+ | `plugin-sdk/reply-history` | Допоміжні засоби історії відповідей | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
+ | `plugin-sdk/reply-reference` | Планування посилання відповіді | `createReplyReferencePlanner` |
+ | `plugin-sdk/reply-chunking` | Допоміжні засоби частин відповіді | Допоміжні засоби розбиття тексту/markdown на частини |
+ | `plugin-sdk/session-store-runtime` | Допоміжні засоби сховища сеансів | Допоміжні засоби шляху сховища + часу оновлення |
+ | `plugin-sdk/state-paths` | Допоміжні засоби шляхів стану | Допоміжні засоби каталогу стану та OAuth |
+ | `plugin-sdk/routing` | Допоміжні засоби маршрутизації/ключа сеансу | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, допоміжні засоби нормалізації ключа сеансу |
+ | `plugin-sdk/status-helpers` | Допоміжні засоби стану каналу | Будівники підсумку стану каналу/облікового запису, значення за замовчуванням стану середовища виконання, допоміжні засоби метаданих проблем |
+ | `plugin-sdk/target-resolver-runtime` | Допоміжні засоби визначення цілі | Спільні допоміжні засоби визначення цілі |
+ | `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації рядків | Допоміжні засоби нормалізації slug/рядків |
+ | `plugin-sdk/request-url` | Допоміжні засоби URL запиту | Витягування рядкових URL з подібних до запиту вхідних даних |
+ | `plugin-sdk/run-command` | Допоміжні засоби команд із тайм-аутом | Виконавець команд із тайм-аутом та нормалізованими stdout/stderr |
+ | `plugin-sdk/param-readers` | Зчитувачі параметрів | Спільні зчитувачі параметрів інструментів/CLI |
+ | `plugin-sdk/tool-payload` | Видобування корисного навантаження інструменту | Видобувати нормалізовані корисні навантаження з об’єктів результатів інструментів |
+ | `plugin-sdk/tool-send` | Видобування надсилання інструменту | Видобувати канонічні поля цілі надсилання з аргументів інструменту |
+ | `plugin-sdk/temp-path` | Допоміжні засоби тимчасових шляхів | Спільні допоміжні засоби шляхів для тимчасових завантажень |
+ | `plugin-sdk/logging-core` | Допоміжні засоби журналювання | Допоміжні засоби журналера підсистеми та редагування чутливих даних |
+ | `plugin-sdk/markdown-table-runtime` | Допоміжні засоби Markdown-таблиць | Допоміжні засоби режиму Markdown-таблиць |
+ | `plugin-sdk/reply-payload` | Типи відповіді на повідомлення | Типи корисного навантаження відповіді |
+ | `plugin-sdk/provider-setup` | Добірні допоміжні засоби налаштування локальних/самостійно розміщених провайдерів | Допоміжні засоби виявлення/налаштування самостійно розміщених провайдерів |
+ | `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування OpenAI-сумісних самостійно розміщених провайдерів | Ті самі допоміжні засоби виявлення/налаштування самостійно розміщених провайдерів |
+ | `plugin-sdk/provider-auth-runtime` | Допоміжні засоби автентифікації провайдера під час виконання | Допоміжні засоби розв’язання API-ключів під час виконання |
+ | `plugin-sdk/provider-auth-api-key` | Допоміжні засоби налаштування API-ключів провайдера | Допоміжні засоби онбордингу API-ключів і запису профілю |
+ | `plugin-sdk/provider-auth-result` | Допоміжні засоби результату автентифікації провайдера | Стандартний побудовник результату OAuth-автентифікації |
+ | `plugin-sdk/provider-auth-login` | Допоміжні засоби інтерактивного входу провайдера | Спільні допоміжні засоби інтерактивного входу |
+ | `plugin-sdk/provider-selection-runtime` | Допоміжні засоби вибору провайдера | Вибір налаштованого або автоматичного провайдера та злиття сирої конфігурації провайдера |
+ | `plugin-sdk/provider-env-vars` | Допоміжні засоби змінних середовища провайдера | Допоміжні засоби пошуку змінних середовища автентифікації провайдера |
+ | `plugin-sdk/provider-model-shared` | Спільні допоміжні засоби моделей/відтворення провайдера | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик відтворення, допоміжні засоби кінцевих точок провайдера та допоміжні засоби нормалізації model-id |
+ | `plugin-sdk/provider-catalog-shared` | Спільні допоміжні засоби каталогу провайдерів | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `buildManifestModelProviderConfig`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
+ | `plugin-sdk/provider-onboard` | Патчі онбордингу провайдера | Допоміжні засоби конфігурації онбордингу |
+ | `plugin-sdk/provider-http` | Допоміжні засоби HTTP провайдера | Загальні допоміжні засоби можливостей HTTP/кінцевих точок провайдера, зокрема допоміжні засоби multipart-форм для транскрипції аудіо |
+ | `plugin-sdk/provider-web-fetch` | Допоміжні засоби web-fetch провайдера | Допоміжні засоби реєстрації/кешу провайдера web-fetch |
+ | `plugin-sdk/provider-web-search-config-contract` | Допоміжні засоби конфігурації web-search провайдера | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення ввімкнення Plugin |
+ | `plugin-sdk/provider-web-search-contract` | Допоміжні засоби контракту web-search провайдера | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і обмежені за областю setters/getters облікових даних |
+ | `plugin-sdk/provider-web-search` | Допоміжні засоби web-search провайдера | Допоміжні засоби реєстрації/кешу/виконання провайдера web-search |
+ | `plugin-sdk/provider-tools` | Допоміжні засоби сумісності інструментів/схем провайдера | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
+ | `plugin-sdk/provider-usage` | Допоміжні засоби використання провайдера | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` та інші допоміжні засоби використання провайдера |
+ | `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/keyed-async-queue` | Впорядкована асинхронна черга | `KeyedAsyncQueue` |
+ | `plugin-sdk/media-runtime` | Спільні допоміжні засоби медіа | Допоміжні засоби отримання/перетворення/зберігання медіа, визначення розмірів відео на основі ffprobe та побудовники корисних навантажень медіа |
+ | `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби генерації медіа | Спільні допоміжні засоби резервного перемикання, вибору кандидатів і повідомлень про відсутню модель для генерації зображень/відео/музики |
+ | `plugin-sdk/media-understanding` | Допоміжні засоби розуміння медіа | Типи провайдерів розуміння медіа, а також експорти допоміжних засобів зображень/аудіо для провайдерів |
+ | `plugin-sdk/text-runtime` | Спільні допоміжні засоби тексту | Вилучення видимого для асистента тексту, допоміжні засоби рендерингу/поділу на фрагменти/таблиць Markdown, допоміжні засоби редагування чутливих даних, допоміжні засоби тегів директив, утиліти безпечного тексту та пов’язані допоміжні засоби тексту/журналювання |
+ | `plugin-sdk/text-chunking` | Допоміжні засоби поділу тексту на фрагменти | Допоміжний засіб поділу вихідного тексту на фрагменти |
+ | `plugin-sdk/speech` | Допоміжні засоби мовлення | Типи провайдерів мовлення, а також експорти директив, реєстру, допоміжних засобів перевірки для провайдерів і OpenAI-сумісний побудовник TTS |
+ | `plugin-sdk/speech-core` | Спільне ядро мовлення | Типи провайдерів мовлення, реєстр, директиви, нормалізація |
+ | `plugin-sdk/realtime-transcription` | Допоміжні засоби транскрипції в реальному часі | Типи провайдерів, допоміжні засоби реєстру та спільний допоміжний засіб сеансу WebSocket |
+ | `plugin-sdk/realtime-voice` | Допоміжні засоби голосу в реальному часі | Типи провайдерів, допоміжні засоби реєстру/розв’язання та допоміжні засоби сеансу bridge |
+ | `plugin-sdk/image-generation` | Допоміжні засоби генерації зображень | Типи провайдерів генерації зображень, а також допоміжні засоби asset/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/interactive-runtime` | Допоміжні засоби інтерактивної відповіді | Нормалізація/редукція корисного навантаження інтерактивної відповіді |
| `plugin-sdk/channel-config-primitives` | Примітиви конфігурації каналу | Вузькі примітиви схеми конфігурації каналу |
- | `plugin-sdk/channel-config-writes` | Помічники запису конфігурації каналу | Помічники авторизації запису конфігурації каналу |
- | `plugin-sdk/channel-plugin-common` | Спільна преамбула каналу | Спільні експорти преамбули Plugin каналу |
- | `plugin-sdk/channel-status` | Помічники стану каналу | Спільні помічники знімка/зведення стану каналу |
- | `plugin-sdk/allowlist-config-edit` | Помічники конфігурації allowlist | Помічники редагування/читання конфігурації allowlist |
- | `plugin-sdk/group-access` | Помічники доступу до груп | Спільні помічники рішень щодо доступу до груп |
- | `plugin-sdk/direct-dm` | Помічники Direct-DM | Спільні помічники автентифікації/захисту Direct-DM |
- | `plugin-sdk/extension-shared` | Спільні помічники розширення | Примітиви пасивного каналу/стану та помічників ambient proxy |
- | `plugin-sdk/webhook-targets` | Помічники цілей Webhook | Реєстр цілей Webhook і помічники встановлення маршрутів |
- | `plugin-sdk/webhook-path` | Помічники шляхів Webhook | Помічники нормалізації шляхів Webhook |
- | `plugin-sdk/web-media` | Спільні помічники вебмедіа | Помічники завантаження віддалених/локальних медіа |
- | `plugin-sdk/zod` | Повторний експорт Zod | Повторно експортований `zod` для споживачів SDK Plugin |
- | `plugin-sdk/memory-core` | Вбудовані помічники memory-core | Поверхня помічників менеджера пам’яті/конфігурації/файлів/CLI |
- | `plugin-sdk/memory-core-engine-runtime` | Фасад середовища виконання рушія пам’яті | Фасад середовища виконання індексу/пошуку пам’яті |
- | `plugin-sdk/memory-core-host-engine-foundation` | Foundation-рушій хоста пам’яті | Експорти foundation-рушія хоста пам’яті |
- | `plugin-sdk/memory-core-host-engine-embeddings` | Рушій embedding хоста пам’яті | Контракти embedding пам’яті, доступ до реєстру, локальний провайдер і загальні помічники batch/remote; конкретні віддалені провайдери містяться у своїх власних plugins |
- | `plugin-sdk/memory-core-host-engine-qmd` | QMD-рушій хоста пам’яті | Експорти QMD-рушія хоста пам’яті |
+ | `plugin-sdk/channel-config-writes` | Допоміжні засоби запису конфігурації каналу | Допоміжні засоби авторизації запису конфігурації каналу |
+ | `plugin-sdk/channel-plugin-common` | Спільна преамбула каналу | Експорти спільної преамбули Plugin каналу |
+ | `plugin-sdk/channel-status` | Допоміжні засоби стану каналу | Спільні допоміжні засоби знімка/зведення стану каналу |
+ | `plugin-sdk/allowlist-config-edit` | Допоміжні засоби конфігурації списку дозволених | Допоміжні засоби редагування/читання конфігурації списку дозволених |
+ | `plugin-sdk/group-access` | Допоміжні засоби групового доступу | Спільні допоміжні засоби ухвалення рішень щодо групового доступу |
+ | `plugin-sdk/direct-dm` | Допоміжні засоби прямих DM | Спільні допоміжні засоби автентифікації/захисту прямих DM |
+ | `plugin-sdk/extension-shared` | Спільні допоміжні засоби розширень | Примітиви допоміжних засобів пасивного каналу/стану та ambient proxy |
+ | `plugin-sdk/webhook-targets` | Допоміжні засоби цілей Webhook | Реєстр цілей Webhook і допоміжні засоби встановлення маршрутів |
+ | `plugin-sdk/webhook-path` | Допоміжні засоби шляху Webhook | Допоміжні засоби нормалізації шляху Webhook |
+ | `plugin-sdk/web-media` | Спільні допоміжні засоби вебмедіа | Допоміжні засоби завантаження віддалених/локальних медіа |
+ | `plugin-sdk/zod` | Повторний експорт Zod | Повторно експортований `zod` для споживачів Plugin SDK |
+ | `plugin-sdk/memory-core` | Вбудовані допоміжні засоби memory-core | Поверхня допоміжних засобів менеджера пам’яті/конфігурації/файлів/CLI |
+ | `plugin-sdk/memory-core-engine-runtime` | Фасад виконання рушія пам’яті | Фасад виконання індексу/пошуку пам’яті |
+ | `plugin-sdk/memory-core-host-engine-foundation` | Базовий рушій хоста пам’яті | Експорти базового рушія хоста пам’яті |
+ | `plugin-sdk/memory-core-host-engine-embeddings` | Рушій вбудовувань хоста пам’яті | Контракти вбудовувань пам’яті, доступ до реєстру, локальний провайдер і загальні допоміжні засоби пакетної/віддаленої обробки; конкретні віддалені провайдери містяться у своїх Plugin-власниках |
+ | `plugin-sdk/memory-core-host-engine-qmd` | Рушій QMD хоста пам’яті | Експорти рушія QMD хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Рушій сховища хоста пам’яті | Експорти рушія сховища хоста пам’яті |
- | `plugin-sdk/memory-core-host-multimodal` | Мультимодальні помічники хоста пам’яті | Мультимодальні помічники хоста пам’яті |
- | `plugin-sdk/memory-core-host-query` | Помічники запитів хоста пам’яті | Помічники запитів хоста пам’яті |
- | `plugin-sdk/memory-core-host-secret` | Помічники секретів хоста пам’яті | Помічники секретів хоста пам’яті |
- | `plugin-sdk/memory-core-host-events` | Помічники журналу подій хоста пам’яті | Помічники журналу подій хоста пам’яті |
- | `plugin-sdk/memory-core-host-status` | Помічники стану хоста пам’яті | Помічники стану хоста пам’яті |
- | `plugin-sdk/memory-core-host-runtime-cli` | Середовище виконання CLI хоста пам’яті | Помічники середовища виконання CLI хоста пам’яті |
- | `plugin-sdk/memory-core-host-runtime-core` | Середовище виконання ядра хоста пам’яті | Помічники середовища виконання ядра хоста пам’яті |
- | `plugin-sdk/memory-core-host-runtime-files` | Помічники файлів/середовища виконання хоста пам’яті | Помічники файлів/середовища виконання хоста пам’яті |
- | `plugin-sdk/memory-host-core` | Псевдонім середовища виконання ядра хоста пам’яті | Вендорно-нейтральний псевдонім для помічників середовища виконання ядра хоста пам’яті |
- | `plugin-sdk/memory-host-events` | Псевдонім журналу подій хоста пам’яті | Вендорно-нейтральний псевдонім для помічників журналу подій хоста пам’яті |
- | `plugin-sdk/memory-host-files` | Псевдонім файлів/середовища виконання хоста пам’яті | Вендорно-нейтральний псевдонім для помічників файлів/середовища виконання хоста пам’яті |
- | `plugin-sdk/memory-host-markdown` | Помічники керованого Markdown | Спільні помічники керованого Markdown для plugins, суміжних із пам’яттю |
- | `plugin-sdk/memory-host-search` | Фасад пошуку active memory | Лінивий фасад середовища виконання менеджера пошуку active-memory |
- | `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` | Виконання CLI хоста пам’яті | Допоміжні засоби виконання CLI хоста пам’яті |
+ | `plugin-sdk/memory-core-host-runtime-core` | Базове виконання хоста пам’яті | Допоміжні засоби базового виконання хоста пам’яті |
+ | `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/виконання хоста пам’яті | Допоміжні засоби файлів/виконання хоста пам’яті |
+ | `plugin-sdk/memory-host-core` | Псевдонім базового виконання хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів базового виконання хоста пам’яті |
+ | `plugin-sdk/memory-host-events` | Псевдонім журналу подій хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів журналу подій хоста пам’яті |
+ | `plugin-sdk/memory-host-files` | Псевдонім файлів/виконання хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів файлів/виконання хоста пам’яті |
+ | `plugin-sdk/memory-host-markdown` | Допоміжні засоби керованого Markdown | Спільні допоміжні засоби керованого Markdown для Plugin, суміжних із пам’яттю |
+ | `plugin-sdk/memory-host-search` | Фасад пошуку active memory | Ледачий фасад виконання менеджера пошуку active-memory |
+ | `plugin-sdk/memory-host-status` | Псевдонім стану хоста пам’яті | Нейтральний щодо постачальника псевдонім для допоміжних засобів стану хоста пам’яті |
| `plugin-sdk/testing` | Тестові утиліти | Застарілий широкий barrel сумісності; віддавайте перевагу сфокусованим тестовим підшляхам, як-от `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/channel-target-testing`, `plugin-sdk/test-env` і `plugin-sdk/test-fixtures` |
Ця таблиця навмисно є спільною підмножиною міграції, а не повною
-поверхнею SDK. Повний список із 200+ точок входу міститься в
+поверхнею SDK. Повний список із понад 200 точок входу міститься в
`scripts/lib/plugin-sdk-entrypoints.json`.
-Зарезервовані допоміжні межі bundled-Plugin вилучено з публічної мапи
-експортів SDK, окрім явно задокументованих фасадів сумісності, як-от
-застарілий shim `plugin-sdk/discord`, збережений для опублікованого пакета
-`@openclaw/discord@2026.3.13`. Специфічні для власника допоміжні засоби
-розміщуються всередині пакета Plugin-власника; спільна поведінка host має
-проходити через загальні контракти SDK, як-от `plugin-sdk/gateway-runtime`,
+Зарезервовані допоміжні шви вбудованих плагінів вилучено з мапи експортів
+публічного SDK, за винятком явно задокументованих фасадів сумісності, таких як
+застарілий шим `plugin-sdk/discord`, збережений для опублікованого пакета
+`@openclaw/discord@2026.3.13`. Допоміжні засоби, специфічні для власника,
+розташовані всередині пакета плагіна-власника; спільну поведінку хоста слід
+переносити через загальні контракти SDK, такі як `plugin-sdk/gateway-runtime`,
`plugin-sdk/security-runtime` і `plugin-sdk/plugin-config-runtime`.
-Використовуйте найвужчий import, що відповідає завданню. Якщо ви не можете
-знайти export, перевірте джерело в `src/plugin-sdk/` або запитайте
-maintainers, який загальний контракт має ним володіти.
+Використовуйте найвужчий імпорт, який відповідає завданню. Якщо не можете
+знайти експорт, перевірте вихідний код у `src/plugin-sdk/` або запитайте
+мейнтейнерів, який загальний контракт має ним володіти.
-## Активні застарілі API
+## Активні застарівання
-Вужчі застарілі API, що застосовуються в SDK Plugin, контракті провайдера,
-runtime-поверхні та manifest. Кожен із них досі працює сьогодні, але буде
-вилучений у майбутньому major release. Запис під кожним пунктом зіставляє
+Вужчі застарівання, що застосовуються до SDK плагінів, контракту провайдера,
+поверхні виконання та маніфесту. Кожне з них усе ще працює сьогодні, але буде
+видалене в майбутньому мажорному випуску. Запис під кожним пунктом зіставляє
старий API з його канонічною заміною.
-
+
**Старе (`openclaw/plugin-sdk/command-auth`)**: `buildCommandsMessage`,
`buildCommandsMessagePaginated`, `buildHelpMessage`.
**Нове (`openclaw/plugin-sdk/command-status`)**: ті самі сигнатури, ті самі
- exports — просто import із вужчого subpath. `command-auth`
- повторно експортує їх як compat stubs.
+ експорти — просто імпортовані з вужчого підшляху. `command-auth`
+ повторно експортує їх як сумісні заглушки.
```typescript
// Before
@@ -586,97 +585,100 @@ runtime-поверхні та manifest. Кожен із них досі прац
-
+
**Старе**: `resolveInboundMentionRequirement({ facts, policy })` і
`shouldDropInboundForMention(...)` з
`openclaw/plugin-sdk/channel-inbound` або
`openclaw/plugin-sdk/channel-mention-gating`.
**Нове**: `resolveInboundMentionDecision({ facts, policy })` — повертає
- один об'єкт рішення замість двох розділених викликів.
+ один об’єкт рішення замість двох окремих викликів.
- Нижчі channel Plugin (Slack, Discord, Matrix, MS Teams) уже перейшли.
+ Нижчорівневі плагіни каналів (Slack, Discord, Matrix, MS Teams) уже
+ перейшли на це.
-
- `openclaw/plugin-sdk/channel-runtime` є shim сумісності для старіших
- channel Plugin. Не імпортуйте його з нового коду; використовуйте
- `openclaw/plugin-sdk/channel-runtime-context` для реєстрації runtime
- objects.
+
+ `openclaw/plugin-sdk/channel-runtime` є шимом сумісності для старіших
+ плагінів каналів. Не імпортуйте його з нового коду; використовуйте
+ `openclaw/plugin-sdk/channel-runtime-context` для реєстрації об’єктів
+ середовища виконання.
Допоміжні засоби `channelActions*` у `openclaw/plugin-sdk/channel-actions`
- застарілі разом із сирими exports каналу "actions". Натомість розкривайте
- capabilities через семантичну поверхню `presentation` — channel Plugin
- оголошують, що вони рендерять (cards, buttons, selects), а не які сирі
- імена actions приймають.
+ застаріли разом із сирими експортами канальних "actions". Натомість
+ надавайте можливості через семантичну поверхню `presentation` — плагіни
+ каналів оголошують, що вони відображають (картки, кнопки, списки вибору),
+ а не які сирі назви дій вони приймають.
-
- **Старе**: factory `tool()` з `openclaw/plugin-sdk/provider-web-search`.
+
+ **Старе**: фабрика `tool()` з `openclaw/plugin-sdk/provider-web-search`.
- **Нове**: реалізуйте `createTool(...)` безпосередньо в provider Plugin.
- OpenClaw більше не потребує допоміжного засобу SDK для реєстрації tool wrapper.
+ **Нове**: реалізуйте `createTool(...)` безпосередньо в плагіні провайдера.
+ OpenClaw більше не потребує допоміжного засобу SDK для реєстрації обгортки
+ інструмента.
-
+
**Старе**: `formatInboundEnvelope(...)` (і
- `ChannelMessageForAgent.channelEnvelope`) для побудови плоского plaintext prompt
- envelope з inbound channel messages.
+ `ChannelMessageForAgent.channelEnvelope`) для побудови плаского текстового
+ конверта підказки з вхідних повідомлень каналу.
- **Нове**: `BodyForAgent` плюс структуровані блоки user-context. Channel
- Plugin додають routing metadata (thread, topic, reply-to, reactions) як
- типізовані поля замість конкатенації їх у prompt string. Допоміжний засіб
- `formatAgentEnvelope(...)` досі підтримується для synthesized
- assistant-facing envelopes, але inbound plaintext envelopes поступово
- виводяться з ужитку.
+ **Нове**: `BodyForAgent` плюс структуровані блоки контексту користувача.
+ Плагіни каналів додають метадані маршрутизації (гілка, тема, відповідь-на,
+ реакції) як типізовані поля замість конкатенації їх у рядок підказки.
+ Допоміжний засіб `formatAgentEnvelope(...)` усе ще підтримується для
+ синтезованих конвертів, орієнтованих на асистента, але вхідні текстові
+ конверти поступово вилучаються.
Зачеплені області: `inbound_claim`, `message_received` і будь-який
- користувацький channel Plugin, що постобробляв текст `channelEnvelope`.
+ користувацький плагін каналу, який постобробляв текст `channelEnvelope`.
-
- Чотири aliases типів discovery тепер є тонкими wrappers над типами
- catalog-епохи:
+
+ Чотири псевдоніми типів виявлення тепер є тонкими обгортками над типами
+ епохи каталогу:
- | Старий alias | Новий тип |
+ | Старий псевдонім | Новий тип |
| ------------------------- | ------------------------- |
| `ProviderDiscoveryOrder` | `ProviderCatalogOrder` |
| `ProviderDiscoveryContext`| `ProviderCatalogContext` |
| `ProviderDiscoveryResult` | `ProviderCatalogResult` |
| `ProviderPluginDiscovery` | `ProviderPluginCatalog` |
- Плюс legacy статичний bag `ProviderCapabilities` — provider Plugin
- мають використовувати явні provider hooks, як-от `buildReplayPolicy`,
- `normalizeToolSchemas` і `wrapStreamFn`, замість статичного об'єкта.
+ Плюс застарілий статичний набір `ProviderCapabilities` — плагіни
+ провайдерів мають використовувати явні хуки провайдера, такі як
+ `buildReplayPolicy`, `normalizeToolSchemas` і `wrapStreamFn`, а не
+ статичний об’єкт.
-
- **Старе** (три окремі hooks у `ProviderThinkingPolicy`):
+
+ **Старе** (три окремі хуки в `ProviderThinkingPolicy`):
`isBinaryThinking(ctx)`, `supportsXHighThinking(ctx)` і
`resolveDefaultThinkingLevel(ctx)`.
- **Нове**: один `resolveThinkingProfile(ctx)`, що повертає
- `ProviderThinkingProfile` з канонічним `id`, необов'язковим `label` і
- ранжованим списком levels. OpenClaw автоматично понижує застарілі
- збережені значення за rank профілю.
+ **Нове**: один `resolveThinkingProfile(ctx)`, який повертає
+ `ProviderThinkingProfile` з канонічним `id`, необов’язковим `label` і
+ ранжованим списком рівнів. OpenClaw автоматично знижує застарілі збережені
+ значення за рангом профілю.
- Реалізуйте один hook замість трьох. Legacy hooks продовжують працювати
+ Реалізуйте один хук замість трьох. Застарілі хуки продовжують працювати
протягом вікна застарівання, але не компонуються з результатом профілю.
-
+
**Старе**: реалізація `resolveExternalOAuthProfiles(...)` без оголошення
- провайдера в plugin manifest.
+ провайдера в маніфесті плагіна.
- **Нове**: оголосіть `contracts.externalAuthProviders` у plugin manifest
+ **Нове**: оголосіть `contracts.externalAuthProviders` у маніфесті плагіна
**і** реалізуйте `resolveExternalAuthProfiles(...)`. Старий шлях "auth
- fallback" виводить попередження під час runtime і буде вилучений.
+ fallback" видає попередження під час виконання та буде видалений.
```json
{
@@ -688,19 +690,20 @@ runtime-поверхні та manifest. Кожен із них досі прац
-
- **Старе** поле manifest: `providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }`.
+
+ **Старе** поле маніфесту: `providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }`.
**Нове**: віддзеркальте той самий пошук env-var у `setup.providers[].envVars`
- у manifest. Це консолідує setup/status env metadata в одному місці та
- уникає запуску plugin runtime лише для відповіді на env-var lookups.
+ у маніфесті. Це консолідує метадані env для налаштування/статусу в одному
+ місці та уникає запуску середовища виконання плагіна лише для відповіді на
+ пошуки env-var.
- `providerAuthEnvVars` залишається підтримуваним через adapter сумісності,
+ `providerAuthEnvVars` залишається підтримуваним через адаптер сумісності,
доки не закриється вікно застарівання.
-
+
**Старе**: три окремі виклики —
`api.registerMemoryPromptSection(...)`,
`api.registerMemoryFlushPlan(...)`,
@@ -709,32 +712,33 @@ runtime-поверхні та manifest. Кожен із них досі прац
**Нове**: один виклик в API memory-state —
`registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime })`.
- Ті самі slots, один реєстраційний виклик. Additive memory helpers
+ Ті самі слоти, один виклик реєстрації. Додаткові допоміжні засоби пам’яті
(`registerMemoryPromptSupplement`, `registerMemoryCorpusSupplement`,
`registerMemoryEmbeddingProvider`) не зачеплені.
-
- Два legacy aliases типів досі експортуються з `src/plugins/runtime/types.ts`:
+
+ Два застарілі псевдоніми типів усе ще експортуються з `src/plugins/runtime/types.ts`:
| Старе | Нове |
| ----------------------------- | ------------------------------- |
| `SubagentReadSessionParams` | `SubagentGetSessionMessagesParams` |
| `SubagentReadSessionResult` | `SubagentGetSessionMessagesResult` |
- Runtime-метод `readSession` застарілий на користь
- `getSessionMessages`. Та сама сигнатура; старий метод викликає новий.
+ Метод середовища виконання `readSession` застарів на користь
+ `getSessionMessages`. Та сама сигнатура; старий метод прокидає виклик до
+ нового.
- **Старе**: `runtime.tasks.flow` (однина) повертав live task-flow accessor.
+ **Старе**: `runtime.tasks.flow` (однина) повертав живий аксесор task-flow.
- **Нове**: `runtime.tasks.managedFlows` зберігає managed TaskFlow mutation
- runtime для Plugin, які створюють, оновлюють, скасовують або запускають
- child tasks із flow. Використовуйте `runtime.tasks.flows`, коли Plugin
- потребує лише DTO-based reads.
+ **Нове**: `runtime.tasks.managedFlows` зберігає середовище виконання
+ мутацій керованого TaskFlow для плагінів, які створюють, оновлюють,
+ скасовують або запускають дочірні завдання з flow. Використовуйте
+ `runtime.tasks.flows`, коли плагіну потрібні лише читання на основі DTO.
```typescript
// Before
@@ -745,17 +749,18 @@ runtime-поверхні та manifest. Кожен із них досі прац
-
- Розглянуто вище в "Як мігрувати → Мігруйте Pi tool-result extensions на
- middleware". Додано тут для повноти: вилучений шлях лише для Pi
- `api.registerEmbeddedExtensionFactory(...)` замінено на
- `api.registerAgentToolResultMiddleware(...)` з явним списком runtime
- у `contracts.agentToolResultMiddleware`.
+
+ Описано вище в "Як мігрувати → Перенесіть розширення результатів
+ інструментів Pi на middleware". Додано тут для повноти: видалений шлях
+ `api.registerEmbeddedExtensionFactory(...)`, доступний лише для Pi,
+ замінено на `api.registerAgentToolResultMiddleware(...)` з явним списком
+ середовищ виконання в `contracts.agentToolResultMiddleware`.
-
- `OpenClawSchemaType`, повторно експортований з `openclaw/plugin-sdk`, тепер є
- однорядковим alias для `OpenClawConfig`. Надавайте перевагу канонічній назві.
+
+ `OpenClawSchemaType`, повторно експортований з `openclaw/plugin-sdk`, тепер
+ є однорядковим псевдонімом для `OpenClawConfig`. Надавайте перевагу
+ канонічній назві.
```typescript
// Before
@@ -768,39 +773,40 @@ runtime-поверхні та manifest. Кожен із них досі прац
-Застарілі API рівня extension (усередині bundled channel/provider Plugin під
-`extensions/`) відстежуються у власних barrels `api.ts` і `runtime-api.ts`.
-Вони не впливають на контракти сторонніх Plugin і не перелічені тут. Якщо ви
-споживаєте local barrel bundled Plugin напряму, прочитайте коментарі про
-застарівання в цьому barrel перед оновленням.
+Застарівання рівня розширень (усередині вбудованих плагінів каналів/провайдерів
+у `extensions/`) відстежуються всередині їхніх власних barrel-файлів `api.ts` і
+`runtime-api.ts`. Вони не впливають на контракти сторонніх плагінів і не
+перелічені тут. Якщо ви споживаєте локальний barrel-файл вбудованого плагіна
+безпосередньо, прочитайте коментарі про застарівання в цьому barrel-файлі перед
+оновленням.
-## Графік вилучення
+## Графік видалення
| Коли | Що відбувається |
| ---------------------- | ----------------------------------------------------------------------- |
-| **Зараз** | Застарілі поверхні виводять runtime warnings |
-| **Наступний major release** | Застарілі поверхні буде вилучено; Plugin, які досі їх використовують, завершаться помилкою |
+| **Зараз** | Застарілі поверхні видають попередження під час виконання |
+| **Наступний мажорний випуск** | Застарілі поверхні буде видалено; плагіни, що досі їх використовують, не працюватимуть |
-Усі core Plugin уже мігровано. Зовнішні Plugin мають мігрувати до наступного
-major release.
+Усі основні плагіни вже мігровано. Зовнішні плагіни мають мігрувати до
+наступного мажорного випуску.
## Тимчасове придушення попереджень
-Установіть ці environment variables, поки працюєте над міграцією:
+Установіть ці змінні середовища під час роботи над міграцією:
```bash
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
```
-Це тимчасовий аварійний шлях, а не постійне рішення.
+Це тимчасовий запасний вихід, а не постійне рішення.
-## Пов'язане
+## Пов’язане
-- [Початок роботи](/uk/plugins/building-plugins) — створіть свій перший Plugin
-- [Огляд SDK](/uk/plugins/sdk-overview) — повний довідник import за subpath
-- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення channel Plugin
-- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення provider Plugin
-- [Внутрішня архітектура Plugin](/uk/plugins/architecture) — глибокий розбір архітектури
-- [Plugin Manifest](/uk/plugins/manifest) — довідник схеми manifest
+- [Початок роботи](/uk/plugins/building-plugins) — створіть свій перший плагін
+- [Огляд SDK](/uk/plugins/sdk-overview) — повна довідка імпортів підшляхів
+- [Плагіни каналів](/uk/plugins/sdk-channel-plugins) — створення плагінів каналів
+- [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins) — створення плагінів провайдерів
+- [Внутрішня архітектура плагінів](/uk/plugins/architecture) — поглиблений огляд архітектури
+- [Маніфест плагіна](/uk/plugins/manifest) — довідка зі схеми маніфесту
diff --git a/docs/uk/plugins/sdk-subpaths.md b/docs/uk/plugins/sdk-subpaths.md
index b3a5db29c..60aced408 100644
--- a/docs/uk/plugins/sdk-subpaths.md
+++ b/docs/uk/plugins/sdk-subpaths.md
@@ -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` |
-
+
| Підшлях | Ключові експорти |
| --- | --- |
| `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 |
@@ -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` | Вузькі допоміжні засоби режиму активації групи та розбору команд |
| Підшлях | Ключові експорти |
| --- | --- |
- | `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` | Допоміжні засоби розміру тіла запиту/таймауту |
-
+
| Підшлях | Ключові експорти |
| --- | --- |
- | `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` |
-
+
| Підшлях | Ключові експорти |
| --- | --- |
- | `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:*")` |
| Підшлях | Ключові експорти |
| --- | --- |
- | `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 для помічників статусу хоста пам’яті |
-
- Наразі зарезервованих підшляхів SDK для вбудованих допоміжних засобів немає. Допоміжні засоби, специфічні для власника,
- розташовані всередині пакета plugin власника, тоді як повторно використовувані контракти хоста
- використовують загальні підшляхи SDK, як-от `plugin-sdk/gateway-runtime`,
+
+ Наразі немає зарезервованих підшляхів SDK bundled-helper. Помічники, специфічні для власника,
+ розташовані всередині пакета plugin-власника, тоді як повторно використовувані контракти хоста
+ використовують загальні підшляхи SDK, такі як `plugin-sdk/gateway-runtime`,
`plugin-sdk/security-runtime` і `plugin-sdk/plugin-config-runtime`.
@@ -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)