chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-28 02:12:12 +00:00
parent 0508ba9755
commit 23b2a97c59
8 changed files with 1665 additions and 1506 deletions

View File

@ -2,30 +2,30 @@
read_when:
- Ви хочете підключити OpenClaw до QQ
- Вам потрібно налаштувати облікові дані QQ Bot
- Ви хочете підтримку групових або приватних чатів QQ Bot
- Вам потрібна підтримка групового або приватного чату QQ Bot
summary: Налаштування, конфігурація та використання QQ Bot
title: QQ bot
x-i18n:
generated_at: "2026-04-26T07:47:31Z"
generated_at: "2026-04-28T02:07:56Z"
model: gpt-5.4
provider: openai
source_hash: bd899d9556ab418bbb3d7dc368e6f6e1eca96828cbcc87b4147ccad362f1918e
source_hash: aefece6b05bb16d5c4f588bf7af4fd710b5f98aab0dbed8221490c46bf3f379c
source_path: channels/qqbot.md
workflow: 15
---
QQ Bot підключається до OpenClaw через офіційний API QQ Bot (шлюз WebSocket). Плагін підтримує приватні чати C2C, групові @повідомлення та повідомлення в каналах guild із мультимедіа (зображення, голос, відео, файли).
QQ Bot підключається до OpenClaw через офіційний API QQ Bot (WebSocket gateway). Плагін підтримує приватні чати C2C, групові @повідомлення та повідомлення каналів guild із підтримкою мультимедіа (зображення, голос, відео, файли).
Статус: вбудований плагін. Підтримуються прямі повідомлення, групові чати, канали guild і медіа. Реакції та треди не підтримуються.
Статус: вбудований плагін. Підтримуються прямі повідомлення, групові чати, канали guild і мультимедіа. Реакції та треди не підтримуються.
## Вбудований плагін
Поточні випуски OpenClaw містять QQ Bot у комплекті, тому звичайним пакетним збіркам не потрібен окремий крок `openclaw plugins install`.
Поточні випуски OpenClaw постачаються з QQ Bot, тому у звичайних пакетних збірках не потрібен окремий крок `openclaw plugins install`.
## Налаштування
1. Перейдіть на [QQ Open Platform](https://q.qq.com/) і відскануйте QR-код за допомогою QQ на телефоні, щоб зареєструватися / увійти.
2. Натисніть **Create Bot**, щоб створити нового QQ-бота.
1. Перейдіть на [QQ Open Platform](https://q.qq.com/) і відскануйте QR-код у QQ на телефоні, щоб зареєструватися / увійти.
2. Натисніть **Create Bot**, щоб створити нового QQ bot.
3. Знайдіть **AppID** і **AppSecret** на сторінці налаштувань бота та скопіюйте їх.
> AppSecret не зберігається у відкритому вигляді — якщо ви залишите сторінку, не зберігши його, вам доведеться згенерувати новий.
@ -82,13 +82,13 @@ AppSecret із файла:
Примітки:
- Резервне використання змінних середовища застосовується лише до облікового запису QQ Bot за замовчуванням.
- `openclaw channels add --channel qqbot --token-file ...` надає лише AppSecret; AppID уже має бути заданий у конфігурації або в `QQBOT_APP_ID`.
- `clientSecret` також приймає вхід SecretRef, а не лише рядок відкритого тексту.
- Підстановка зі змінних середовища застосовується лише до облікового запису QQ Bot за замовчуванням.
- `openclaw channels add --channel qqbot --token-file ...` передає лише AppSecret; AppID уже має бути заданий у конфігурації або в `QQBOT_APP_ID`.
- `clientSecret` також приймає вхід SecretRef, а не лише рядок у відкритому вигляді.
### Налаштування кількох облікових записів
Запустіть кілька QQ-ботів в одному екземплярі OpenClaw:
Запустіть кілька QQ bot в одному екземплярі OpenClaw:
```json5
{
@ -117,14 +117,56 @@ AppSecret із файла:
openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-of-bot-2"
```
### Групові чати
Підтримка групових чатів QQ Bot використовує OpenID груп QQ, а не відображувані імена. Додайте бота до групи, а потім згадайте його або налаштуйте групу на роботу без згадки.
```json5
{
channels: {
qqbot: {
groupPolicy: "allowlist",
groupAllowFrom: ["member_openid"],
groups: {
"*": {
requireMention: true,
historyLimit: 50,
toolPolicy: "restricted",
},
GROUP_OPENID: {
name: "Release room",
requireMention: false,
ignoreOtherMentions: true,
historyLimit: 20,
prompt: "Keep replies short and operational.",
},
},
},
},
}
```
`groups["*"]` задає значення за замовчуванням для кожної групи, а конкретний запис `groups.GROUP_OPENID` перевизначає ці значення для однієї групи. Налаштування групи включають:
- `requireMention`: вимагати @згадку перед відповіддю бота. За замовчуванням: `true`.
- `ignoreOtherMentions`: відкидати повідомлення, які згадують когось іншого, але не бота.
- `historyLimit`: зберігати нещодавні групові повідомлення без згадки як контекст для наступного ходу зі згадкою. Установіть `0`, щоб вимкнути.
- `toolPolicy`: `full`, `restricted` або `none` для інструментів рівня групи.
- `name`: зрозуміла мітка, що використовується в журналах і контексті групи.
- `prompt`: промпт поведінки для групи, який додається до контексту агента.
Режими активації — `mention` і `always`. `requireMention: true` відповідає `mention`; `requireMention: false` відповідає `always`. Якщо є перевизначення активації на рівні сесії, воно має пріоритет над конфігурацією.
Вхідна черга є окремою для кожного peer. Для peer груп застосовується більший ліміт черги, повідомлення людей зберігають пріоритет над повідомленнями, створеними ботом, коли черга переповнена, а серії звичайних групових повідомлень об’єднуються в один атрибутований хід. Slash commands, як і раніше, виконуються по одному.
### Голос (STT / TTS)
Підтримка STT і TTS має дворівневу конфігурацію з резервним пріоритетом:
Підтримка STT і TTS має дворівневу конфігурацію з пріоритетною підстановкою:
| Параметр | Специфічно для плагіна | Резервне значення фреймворку |
| ------- | -------------------------------------------------------- | ----------------------------- |
| STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` |
| TTS | `channels.qqbot.tts`, `channels.qqbot.accounts.<id>.tts` | `messages.tts` |
| Налаштування | Специфічно для плагіна | Резервне значення фреймворку |
| ------------ | ------------------------------------------------------ | ---------------------------- |
| STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` |
| TTS | `channels.qqbot.tts`, `channels.qqbot.accounts.<id>.tts` | `messages.tts` |
```json5
{
@ -154,9 +196,9 @@ openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-o
```
Установіть `enabled: false` для будь-якого з них, щоб вимкнути.
Перевизначення TTS на рівні облікового запису використовують ту саму структуру, що й `messages.tts`, і виконують глибоке злиття поверх TTS-конфігурації каналу/глобальної конфігурації.
Перевизначення TTS на рівні облікового запису використовують ту саму структуру, що й `messages.tts`, і виконують глибоке злиття поверх конфігурації TTS каналу/глобальної конфігурації.
Вхідні голосові вкладення QQ надаються агентам як метадані аудіомедіа, при цьому сирі голосові файли не потрапляють до загальних `MediaPaths`. Звичайні текстові відповіді `[[audio_as_voice]]` синтезують TTS і надсилають нативне голосове повідомлення QQ, якщо TTS налаштовано.
Вхідні голосові вкладення QQ надаються агентам як метадані аудіо, при цьому сирі голосові файли не потрапляють до загального `MediaPaths`. Текстові відповіді `[[audio_as_voice]]` синтезують TTS і надсилають нативне голосове повідомлення QQ, коли TTS налаштовано.
Поведінку вивантаження/транскодування вихідного аудіо також можна налаштувати через `channels.qqbot.audioFormatPolicy`:
@ -166,59 +208,60 @@ openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-o
## Цільові формати
| Формат | Опис |
| -------------------------- | -------------------- |
| `qqbot:c2c:OPENID` | Приватний чат (C2C) |
| `qqbot:group:GROUP_OPENID` | Груповий чат |
| `qqbot:channel:CHANNEL_ID` | Канал guild |
| Формат | Опис |
| -------------------------- | ------------------ |
| `qqbot:c2c:OPENID` | Приватний чат (C2C) |
| `qqbot:group:GROUP_OPENID` | Груповий чат |
| `qqbot:channel:CHANNEL_ID` | Канал guild |
> Кожен бот має власний набір OpenID користувачів. OpenID, отриманий ботом A, **не можна** використовувати для надсилання повідомлень через бота B.
## Slash-команди
## Slash commands
Вбудовані команди, які перехоплюються до черги AI:
Вбудовані команди, які перехоплюються до AI-черги:
| Команда | Опис |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| `/bot-ping` | Перевірка затримки |
| `/bot-version` | Показати версію фреймворку OpenClaw |
| `/bot-help` | Перелічити всі команди |
| `/bot-upgrade` | Показати посилання на посібник з оновлення QQBot |
| `/bot-logs` | Експортувати нещодавні журнали Gateway у вигляді файла |
| Команда | Опис |
| -------------- | ----------------------------------------------------------------------------------------------------------------- |
| `/bot-ping` | Перевірка затримки |
| `/bot-version` | Показати версію фреймворку OpenClaw |
| `/bot-help` | Показати список усіх команд |
| `/bot-upgrade` | Показати посилання на інструкцію з оновлення QQBot |
| `/bot-logs` | Експортувати нещодавні журнали Gateway як файл |
| `/bot-approve` | Схвалити очікувану дію QQ Bot (наприклад, підтвердження вивантаження C2C або групи) через нативний потік. |
Додайте `?` до будь-якої команди, щоб отримати довідку щодо використання (наприклад, `/bot-upgrade ?`).
Додайте `?` до будь-якої команди, щоб отримати довідку з використання (наприклад, `/bot-upgrade ?`).
## Архітектура рушія
QQ Bot постачається як самодостатній рушій усередині плагіна:
- Кожен обліковий запис володіє ізольованим стеком ресурсів (WebSocket-з’єднання, API-клієнт, кеш токенів, кореневий каталог сховища медіа), прив’язаним до `appId`. Облікові записи ніколи не ділять між собою вхідний або вихідний стан.
- Логер для кількох облікових записів позначає рядки журналу власником облікового запису, щоб діагностика залишалася роздільною, коли ви запускаєте кількох ботів під одним Gateway.
- Шляхи вхідного, вихідного та bridge-шлюзу використовують єдиний корінь медіаданих у `~/.openclaw/media`, тож вивантаження, завантаження та кеші транскодування потрапляють в один захищений каталог замість дерева для кожної підсистеми окремо.
- Облікові дані можна резервно копіювати та відновлювати як частину стандартних знімків облікових даних OpenClaw; після відновлення рушій повторно приєднує стек ресурсів кожного облікового запису без потреби в новому паруванні через QR-код.
- Кожен обліковий запис має ізольований стек ресурсів (WebSocket-з’єднання, API-клієнт, кеш токенів, кореневий каталог медіасховища), прив’язаний до `appId`. Облікові записи ніколи не ділять між собою стан вхідних/вихідних даних.
- Логер для кількох облікових записів додає до рядків журналу мітку відповідного облікового запису, щоб діагностику можна було розділяти при запуску кількох ботів в одному gateway.
- Шляхи вхідних даних, вихідних даних і bridge gateway використовують єдиний кореневий каталог медіаданих у `~/.openclaw/media`, тому вивантаження, завантаження та кеші транскодування потрапляють до одного захищеного каталогу, а не до окремого дерева для кожної підсистеми.
- Доставка мультимедіа проходить через єдиний шлях `sendMedia` для цілей C2C і груп. Локальні файли та буфери, що перевищують поріг великого файла, використовують endpoints QQ для частинного вивантаження, тоді як менші навантаження використовують одноразовий API мультимедіа.
- Облікові дані можна резервно копіювати та відновлювати в межах стандартних знімків облікових даних OpenClaw; після відновлення рушій знову приєднує стек ресурсів кожного облікового запису без потреби в новому сполученні через QR-код.
## Онбординг через QR-код
Як альтернатива ручному вставлянню `AppID:AppSecret`, рушій підтримує потік онбордингу через QR-код для прив’язки QQ Bot до OpenClaw:
Як альтернатива ручному вставленню `AppID:AppSecret`, рушій підтримує потік онбордингу через QR-код для прив’язки QQ Bot до OpenClaw:
1. Запустіть шлях налаштування QQ Bot (наприклад, `openclaw channels add --channel qqbot`) і виберіть потік із QR-кодом, коли буде запропоновано.
2. Відскануйте згенерований QR-код за допомогою телефонного застосунку, прив’язаного до цільового QQ Bot.
3. Схваліть сполучення на телефоні. OpenClaw збереже повернені облікові дані в `credentials/` у правильній області облікового запису.
1. Запустіть шлях налаштування QQ Bot (наприклад, `openclaw channels add --channel qqbot`) і виберіть потік QR-коду, коли з’явиться запит.
2. Відскануйте згенерований QR-код у застосунку телефона, пов’язаного з цільовим QQ Bot.
3. Підтвердьте сполучення на телефоні. OpenClaw збереже отримані облікові дані в `credentials/` у правильній області облікового запису.
Запити на схвалення, згенеровані самим ботом (наприклад, потоки «дозволити цю дію?», які надає API QQ Bot), відображаються як нативні запити OpenClaw, які можна прийняти за допомогою `/bot-approve`, а не відповідати через сирий клієнт QQ.
Запити на схвалення, згенеровані самим ботом (наприклад, потоки "allow this action?", які надає API QQ Bot), відображаються як нативні запити OpenClaw, які можна прийняти через `/bot-approve`, а не відповідати через сирий клієнт QQ.
## Усунення несправностей
- **Бот відповідає "gone to Mars":** облікові дані не налаштовані або Gateway не запущено.
- **Бот відповідає "gone to Mars":** облікові дані не налаштовано або Gateway не запущено.
- **Немає вхідних повідомлень:** перевірте, що `appId` і `clientSecret` правильні, і що бот увімкнений на QQ Open Platform.
- **Повторні відповіді самому собі:** OpenClaw записує індекси вихідних QQ ref як створені ботом і ігнорує вхідні події, у яких поточний `msgIdx` збігається з тим самим обліковим записом бота. Це запобігає циклам echo платформи, водночас дозволяючи користувачам цитувати або відповідати на попередні повідомлення бота.
- **Після налаштування з `--token-file` усе ще показується неналаштований стан:** `--token-file` задає лише AppSecret. Вам усе ще потрібен `appId` у конфігурації або `QQBOT_APP_ID`.
- **Повторні відповіді самому собі:** OpenClaw записує індекси вихідних QQ ref як створені ботом і ігнорує вхідні події, у яких поточний `msgIdx` збігається з тим самим обліковим записом бота. Це запобігає циклам echo на платформі й водночас дозволяє користувачам цитувати або відповідати на попередні повідомлення бота.
- **Налаштування з `--token-file` усе ще показує, що не налаштовано:** `--token-file` задає лише AppSecret. Вам усе ще потрібен `appId` у конфігурації або `QQBOT_APP_ID`.
- **Проактивні повідомлення не надходять:** QQ може перехоплювати повідомлення, ініційовані ботом, якщо користувач не взаємодіяв нещодавно.
- **Голос не транскрибується:** переконайтеся, що STT налаштовано і що провайдер доступний.
- **Голос не транскрибується:** переконайтеся, що STT налаштовано і провайдер доступний.
## Пов’язане
- [Сполучення](/uk/channels/pairing)
- [Групи](/uk/channels/groups)
- [Усунення несправностей каналів](/uk/channels/troubleshooting)
- [Усунення несправностей каналу](/uk/channels/troubleshooting)

View File

@ -1,36 +1,38 @@
---
read_when:
- Ви хочете підключити бота YuanBao
- Ви налаштовуєте канал YuanBao
summary: Огляд, функції та конфігурація бота YuanBao
title: YuanBao
- Ви хочете підключити бота Yuanbao
- Ви налаштовуєте канал Yuanbao
summary: Огляд бота Yuanbao, функції та конфігурація
title: Yuanbao
x-i18n:
generated_at: "2026-04-27T15:07:59Z"
generated_at: "2026-04-28T02:07:53Z"
model: gpt-5.4
provider: openai
source_hash: 6a9177cba0fb64b9d47762450ff9ec7b0ae497ed0027f98f35dbd6b1bc252110
source_hash: d82b6d275ae8aa4cc5e62321772c5ba2b5044c6058be0d2e5215cdb1488118e9
source_path: channels/yuanbao.md
workflow: 15
---
# YuanBao
# Yuanbao
YuanBao — це платформа AI-асистента від Tencent, яка підтримує інтеграцію ботів через миттєві повідомлення. Боти можуть взаємодіяти з користувачами через особисті повідомлення та групові чати.
Tencent Yuanbao — це платформа AI-асистента від Tencent. Плагін каналу OpenClaw
підключає ботів Yuanbao до OpenClaw через WebSocket, щоб вони могли взаємодіяти з користувачами
через особисті повідомлення та групові чати.
**Статус:** готово до використання в продакшені для особистих повідомлень ботів і групових чатів. WebSocket — єдиний підтримуваний режим підключення.
**Статус:** готово до використання у production для особистих повідомлень ботів і групових чатів. WebSocket — єдиний підтримуваний режим підключення.
---
## Швидкий старт
> **Потрібен OpenClaw 2026.4.10 або новіший.** Виконайте `openclaw --version`, щоб перевірити. Оновіть за допомогою `openclaw update`.
> **Потрібен OpenClaw 2026.4.10 або новіший.** Щоб перевірити версію, виконайте `openclaw --version`. Оновіть за допомогою `openclaw update`.
<Steps>
<Step title="Додайте канал YuanBao зі своїми обліковими даними">
<Step title="Додайте канал Yuanbao зі своїми обліковими даними">
```bash
openclaw channels add --channel yuanbao --token "appKey:appSecret"
```
Значення `--token` використовує формат `appKey:appSecret`, розділений двокрапкою. Ви можете отримати ці дані з YuanBao APP, створивши робота в налаштуваннях вашого застосунку.
Значення `--token` використовує формат `appKey:appSecret`, розділений двокрапкою. Ви можете отримати ці значення з застосунку Yuanbao, створивши робота в налаштуваннях вашого застосунку.
</Step>
<Step title="Після завершення налаштування перезапустіть Gateway, щоб застосувати зміни">
@ -99,7 +101,7 @@ openclaw pairing approve yuanbao <CODE>
}
```
### Обмежити особисті повідомлення для конкретних користувачів
### Обмеження особистих повідомлень для конкретних користувачів
```json5
{
@ -116,7 +118,7 @@ openclaw pairing approve yuanbao <CODE>
}
```
### Вимкнути вимогу @згадки в групах
### Вимкнення вимоги @згадки в групах
```json5
{
@ -128,29 +130,29 @@ openclaw pairing approve yuanbao <CODE>
}
```
### Оптимізувати надсилання вихідних повідомлень
### Оптимізація доставки вихідних повідомлень
```json5
{
channels: {
yuanbao: {
// Надсилайте кожен фрагмент одразу без буферизації
// Надсилати кожен фрагмент одразу без буферизації
outboundQueueStrategy: "immediate",
},
},
}
```
### Налаштувати стратегію merge-text
### Налаштування стратегії merge-text
```json5
{
channels: {
yuanbao: {
outboundQueueStrategy: "merge-text",
minChars: 2800, // буферизувати до цієї кількості символів
maxChars: 3000, // примусово розділити вище цього ліміту
idleMs: 5000, // автоматичне скидання після тайм-ауту неактивності (мс)
minChars: 2800, // буферизувати, доки не буде стільки символів
maxChars: 3000, // примусовий поділ понад цей ліміт
idleMs: 5000, // автоматичне скидання після простою (мс)
},
},
}
@ -160,41 +162,41 @@ openclaw pairing approve yuanbao <CODE>
## Поширені команди
| Команда | Опис |
| ---------- | ------------------------------ |
| `/help` | Показати доступні команди |
| `/status` | Показати статус бота |
| `/new` | Почати нову сесію |
| `/stop` | Зупинити поточний запуск |
| `/restart` | Перезапустити OpenClaw |
| Команда | Опис |
| ---------- | ----------------------------- |
| `/help` | Показати доступні команди |
| `/status` | Показати статус бота |
| `/new` | Почати нову сесію |
| `/stop` | Зупинити поточний запуск |
| `/restart` | Перезапустити OpenClaw |
| `/compact` | Виконати Compaction контексту сесії |
> YuanBao підтримує вбудовані меню slash-команд. Команди автоматично синхронізуються з платформою під час запуску Gateway.
> Yuanbao підтримує вбудовані меню slash-команд. Команди автоматично синхронізуються з платформою під час запуску Gateway.
---
## Усунення несправностей
## Усунення проблем
### Бот не відповідає в групових чатах
1. Переконайтеся, що бота додано до групи
2. Переконайтеся, що ви згадуєте бота через @ (це потрібно типово)
2. Переконайтеся, що ви згадуєте бота через @ (типово це обов’язково)
3. Перевірте журнали: `openclaw logs --follow`
### Бот не отримує повідомлення
1. Переконайтеся, що бота створено та схвалено в YuanBao APP
2. Переконайтеся, що `appKey` і `appSecret` налаштовано правильно
1. Переконайтеся, що бот створений і підтверджений у застосунку Yuanbao
2. Переконайтеся, що `appKey` і `appSecret` налаштовані правильно
3. Переконайтеся, що Gateway запущено: `openclaw gateway status`
4. Перевірте журнали: `openclaw logs --follow`
### Бот надсилає порожні або резервні відповіді
1. Перевірте, чи модель AI повертає коректний вміст
1. Перевірте, чи AI-модель повертає коректний вміст
2. Типова резервна відповідь: "暂时无法解答,你可以换个问题问问我哦"
3. Налаштуйте її через `channels.yuanbao.fallbackReply`
### Витік App Secret
### App Secret скомпрометовано
1. Скиньте App Secret у YuanBao APP
2. Оновіть значення у своїй конфігурації
@ -215,12 +217,12 @@ openclaw pairing approve yuanbao <CODE>
main: {
appKey: "key_xxx",
appSecret: "secret_xxx",
name: "Основний бот",
name: "Primary bot",
},
backup: {
appKey: "key_yyy",
appSecret: "secret_yyy",
name: "Резервний бот",
name: "Backup bot",
enabled: false,
},
},
@ -229,7 +231,7 @@ openclaw pairing approve yuanbao <CODE>
}
```
`defaultAccount` керує тим, який обліковий запис використовується, коли вихідні API не вказують `accountId`.
`defaultAccount` визначає, який обліковий запис використовується, коли вихідні API не вказують `accountId`.
### Ліміти повідомлень
@ -239,7 +241,7 @@ openclaw pairing approve yuanbao <CODE>
### Потокове передавання
YuanBao підтримує потокове виведення на рівні блоків. Коли його ввімкнено, бот надсилає текст фрагментами в процесі генерації.
Yuanbao підтримує потокове виведення на рівні блоків. Якщо ввімкнено, бот надсилає текст частинами в міру генерації.
```json5
{
@ -255,7 +257,7 @@ YuanBao підтримує потокове виведення на рівні
### Контекст історії групового чату
Керуйте тим, скільки історичних повідомлень включається в контекст AI для групових чатів:
Керуйте тим, скільки історичних повідомлень включається в AI-контекст для групових чатів:
```json5
{
@ -284,12 +286,12 @@ YuanBao підтримує потокове виведення на рівні
| Значення | Поведінка |
| --------- | -------------------------------------------------------- |
| `"off"` | Без цитованої відповіді |
| `"first"` | Цитувати лише першу відповідь на одне вхідне повідомлення (типово) |
| `"first"` | Цитувати лише першу відповідь на кожне вхідне повідомлення (типово) |
| `"all"` | Цитувати кожну відповідь |
### Вставка підказки для Markdown
Типово бот додає інструкції в системний промпт, щоб запобігти тому, що модель AI обгортає всю відповідь у markdown-блоки коду.
Типово бот додає інструкції в system prompt, щоб AI-модель не обгортала всю відповідь у markdown-блоки коду.
```json5
{
@ -315,9 +317,9 @@ YuanBao підтримує потокове виведення на рівні
}
```
### Маршрутизація з кількома агентами
### Маршрутизація між агентами
Використовуйте `bindings`, щоб маршрутизувати особисті повідомлення або групи YuanBao до різних агентів.
Використовуйте `bindings`, щоб маршрутизувати особисті повідомлення або групи Yuanbao до різних агентів.
```json5
{
@ -363,26 +365,26 @@ YuanBao підтримує потокове виведення на рівні
| ----------------------------------------- | ------------------------------------------------- | -------------------------------------- |
| `channels.yuanbao.enabled` | Увімкнути/вимкнути канал | `true` |
| `channels.yuanbao.defaultAccount` | Типовий обліковий запис для вихідної маршрутизації | `default` |
| `channels.yuanbao.accounts.<id>.appKey` | App Key (використовується для підписування та створення квитків) | — |
| `channels.yuanbao.accounts.<id>.appSecret` | App Secret (використовується для підписування) | — |
| `channels.yuanbao.accounts.<id>.token` | Попередньо підписаний токен (пропускає автоматичне підписування квитків) | — |
| `channels.yuanbao.accounts.<id>.name` | Відображуване ім’я облікового запису | — |
| `channels.yuanbao.accounts.<id>.appKey` | App Key (використовується для підпису та генерації квитків) | — |
| `channels.yuanbao.accounts.<id>.appSecret` | App Secret (використовується для підпису) | — |
| `channels.yuanbao.accounts.<id>.token` | Попередньо підписаний токен (пропускає автоматичний підпис квитків) | — |
| `channels.yuanbao.accounts.<id>.name` | Відображувана назва облікового запису | — |
| `channels.yuanbao.accounts.<id>.enabled` | Увімкнути/вимкнути конкретний обліковий запис | `true` |
| `channels.yuanbao.dm.policy` | Політика особистих повідомлень | `open` |
| `channels.yuanbao.dm.allowFrom` | Список дозволених для особистих повідомлень (список ID користувачів) | — |
| `channels.yuanbao.dm.allowFrom` | Allowlist особистих повідомлень (список ID користувачів) | — |
| `channels.yuanbao.requireMention` | Вимагати @згадку в групах | `true` |
| `channels.yuanbao.overflowPolicy` | Обробка довгих повідомлень (`split` або `stop`) | `split` |
| `channels.yuanbao.replyToMode` | Стратегія reply-to у групах (`off`, `first`, `all`) | `first` |
| `channels.yuanbao.outboundQueueStrategy` | Вихідна стратегія (`merge-text` або `immediate`) | `merge-text` |
| `channels.yuanbao.minChars` | Merge-text: мінімум символів для запуску надсилання | `2800` |
| `channels.yuanbao.maxChars` | Merge-text: максимум символів у повідомленні | `3000` |
| `channels.yuanbao.idleMs` | Merge-text: тайм-аут неактивності перед автоскиданням (мс) | `5000` |
| `channels.yuanbao.replyToMode` | Стратегія group reply-to (`off`, `first`, `all`) | `first` |
| `channels.yuanbao.outboundQueueStrategy` | Вихідна стратегія (`merge-text` або `immediate`) | `merge-text` |
| `channels.yuanbao.minChars` | Merge-text: мінімум символів для запуску надсилання | `2800` |
| `channels.yuanbao.maxChars` | Merge-text: максимум символів на повідомлення | `3000` |
| `channels.yuanbao.idleMs` | Merge-text: тайм-аут простою перед автоскиданням (мс) | `5000` |
| `channels.yuanbao.mediaMaxMb` | Ліміт розміру медіа (МБ) | `20` |
| `channels.yuanbao.historyLimit` | Кількість записів контексту історії групового чату | `100` |
| `channels.yuanbao.historyLimit` | Кількість записів історії в контексті групового чату | `100` |
| `channels.yuanbao.disableBlockStreaming` | Вимкнути потокове виведення на рівні блоків | `false` |
| `channels.yuanbao.fallbackReply` | Резервна відповідь, коли AI не повертає вміст | `暂时无法解答,你可以换个问题问问我哦` |
| `channels.yuanbao.markdownHintEnabled` | Додавати інструкції проти обгортання в Markdown | `true` |
| `channels.yuanbao.debugBotIds` | Білий список ID ботів для налагодження (несанітизовані журнали) | `[]` |
| `channels.yuanbao.debugBotIds` | Debug whitelist ID ботів (несанітизовані журнали) | `[]` |
---
@ -393,9 +395,9 @@ YuanBao підтримує потокове виведення на рівні
- ✅ Текст
- ✅ Зображення
- ✅ Файли
- ✅ Аудіо / голосові повідомлення
- ✅ Аудіо / голос
- ✅ Відео
- ✅ Стікери / користувацькі emoji
- ✅ Стікери / користувацькі емодзі
- ✅ Користувацькі елементи (картки посилань тощо)
### Надсилання
@ -407,17 +409,17 @@ YuanBao підтримує потокове виведення на рівні
- ✅ Відео
- ✅ Стікери
### Треди та відповіді
### Гілки та відповіді
- ✅ Цитовані відповіді (налаштовується через `replyToMode`)
- ❌ Відповіді в тредах (не підтримується платформою)
- ❌ Відповіді в гілках (платформа не підтримує)
---
## Пов’язане
- [Огляд каналів](/uk/channels) — усі підтримувані канали
- [Прив’язка](/uk/channels/pairing) — автентифікація особистих повідомлень і процес прив’язки
- [Групи](/uk/channels/groups) — поведінка групових чатів і керування через згадування
- [Прив’язка](/uk/channels/pairing) — автентифікація особистих повідомлень і потік прив’язки
- [Групи](/uk/channels/groups) — поведінка групових чатів і керування згадками
- [Маршрутизація каналів](/uk/channels/channel-routing) — маршрутизація сесій для повідомлень
- [Безпека](/uk/gateway/security) — модель доступу та посилення захисту
- [Безпека](/uk/gateway/security) — модель доступу та зміцнення захисту

View File

@ -1,27 +1,27 @@
---
read_when:
- Ви хочете змінити моделі за замовчуванням або переглянути стан автентифікації постачальника
- Ви хочете просканувати доступні моделі/постачальників і налагодити профілі автентифікації
- Ви хочете змінити моделі за замовчуванням або переглянути стан автентифікації провайдера
- Ви хочете просканувати доступні моделі/провайдерів і налагодити профілі автентифікації
summary: Довідка CLI для `openclaw models` (status/list/set/scan, псевдоніми, резервні варіанти, автентифікація)
title: Моделі
x-i18n:
generated_at: "2026-04-27T20:08:44Z"
generated_at: "2026-04-28T02:07:56Z"
model: gpt-5.4
provider: openai
source_hash: 1ff1d5d6b7e2d72ad0ff7480313ca67f7a49ec77ab198b688e7abf2b9de42757
source_hash: 1bcbdaea238068441c0c8ff50c662d6b3e0f6c12dcf606bc1a3b52c1d71601ba
source_path: cli/models.md
workflow: 15
---
# `openclaw models`
Виявлення моделей, сканування та налаштування (модель за замовчуванням, резервні варіанти, профілі автентифікації).
Пошук моделей, сканування та налаштування (модель за замовчуванням, резервні варіанти, профілі автентифікації).
Пов’язано:
Пов’язане:
- Постачальники + моделі: [Моделі](/uk/providers/models)
- Концепції вибору моделей + слеш-команда `/models`: [Концепція моделей](/uk/concepts/models)
- Налаштування автентифікації постачальника: [Початок роботи](/uk/start/getting-started)
- Провайдери + моделі: [Моделі](/uk/providers/models)
- Концепції вибору моделей + slash-команда `/models`: [Концепція моделей](/uk/concepts/models)
- Налаштування автентифікації провайдера: [Початок роботи](/uk/start/getting-started)
## Поширені команди
@ -32,18 +32,18 @@ openclaw models set <model-or-alias>
openclaw models scan
```
`openclaw models status` показує визначені модель за замовчуванням/резервні варіанти, а також огляд автентифікації.
Коли доступні знімки використання постачальника, розділ стану OAuth/API-ключа включає
вікна використання постачальника та знімки квот.
Поточні постачальники з вікнами використання: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
Codex, MiniMax, Xiaomi і z.ai. Автентифікація використання надходить із хуків, специфічних для постачальника,
коли вони доступні; інакше OpenClaw використовує резервний варіант і підбирає облікові дані
OAuth/API-ключа з профілів автентифікації, env або config.
У виводі `--json` `auth.providers` — це огляд постачальників з урахуванням env/config/store,
`openclaw models status` показує визначені значення за замовчуванням/резервні варіанти разом з оглядом автентифікації.
Коли доступні знімки використання провайдера, розділ стану OAuth/API-ключів містить
вікна використання провайдера та знімки квот.
Поточні провайдери з вікнами використання: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
Codex, MiniMax, Xiaomi та z.ai. Дані автентифікації для використання надходять із
специфічних для провайдера хуків, коли вони доступні; інакше OpenClaw використовує резервний варіант, зіставляючи облікові дані OAuth/API-ключів
із профілів автентифікації, змінних середовища або конфігурації.
У виводі `--json` `auth.providers` — це огляд провайдерів з урахуванням env/config/store,
тоді як `auth.oauth` — це лише стан профілів у сховищі автентифікації.
Додайте `--probe`, щоб виконати живі перевірки автентифікації для кожного налаштованого профілю постачальника.
Перевірки — це реальні запити (можуть витрачати токени та спричиняти обмеження частоти).
Використовуйте `--agent <id>`, щоб переглянути стан моделі/автентифікації налаштованого агента. Якщо параметр не вказано,
Додайте `--probe`, щоб виконати живі перевірки автентифікації для кожного налаштованого профілю провайдера.
Перевірки — це реальні запити (можуть витрачати токени й спричиняти обмеження швидкості).
Використовуйте `--agent <id>`, щоб переглянути стан моделі/автентифікації налаштованого агента. Якщо його не вказано,
команда використовує `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`, якщо вони задані, інакше —
налаштованого агента за замовчуванням.
Рядки перевірок можуть надходити з профілів автентифікації, облікових даних env або `models.json`.
@ -51,48 +51,53 @@ OAuth/API-ключа з профілів автентифікації, env аб
Примітки:
- `models set <model-or-alias>` приймає `provider/model` або псевдонім.
- `models list` — лише для читання: команда читає config, профілі автентифікації, наявний стан каталогу
та рядки каталогу, що належать постачальнику, але не переписує
- `models list` є лише для читання: вона читає конфігурацію, профілі автентифікації, наявний
стан каталогу та рядки каталогу, що належать провайдерам, але не переписує
`models.json`.
- `models list --all --provider <id>` може включати статичні рядки каталогу, що належать постачальнику,
із маніфестів Plugin або вбудованих метаданих каталогу постачальника, навіть якщо ви
ще не пройшли автентифікацію в цього постачальника. Такі рядки все одно відображаються як
- `models list --all --provider <id>` може включати статичні рядки каталогу, що належать провайдеру,
з маніфестів Plugin або вбудованих метаданих каталогу провайдера, навіть якщо ви
ще не автентифікувалися у цього провайдера. Такі рядки все одно показуються як
недоступні, доки не буде налаштовано відповідну автентифікацію.
- `models list` зберігає нативні метадані моделі та ефективні обмеження runtime окремо. У табличному
виводі `Ctx` показує `contextTokens/contextWindow`, коли ефективне обмеження runtime
відрізняється від нативного вікна контексту; рядки JSON включають `contextTokens`,
коли постачальник надає це обмеження.
- `models list --provider <id>` фільтрує за id постачальника, наприклад `moonshot` або
`openai-codex`. Він не приймає мітки відображення з інтерактивних засобів вибору постачальника,
- Широкий `models list --all` об’єднує рядки каталогу маніфестів поверх рядків реєстру
без завантаження runtime-хуків доповнення провайдера. Швидкі шляхи маніфестів із фільтрацією за провайдером
використовують лише провайдерів, позначених як `static`; провайдери, позначені як `refreshable`,
залишаються прив’язаними до реєстру/кешу та додають рядки маніфесту як доповнення, тоді як
провайдери, позначені як `runtime`, залишаються на пошуку через реєстр/runtime.
- `models list` зберігає власні метадані моделі та runtime-обмеження окремо. У табличному
виводі `Ctx` показує `contextTokens/contextWindow`, коли ефективне runtime-обмеження
відрізняється від власного контекстного вікна; рядки JSON включають `contextTokens`,
коли провайдер надає таке обмеження.
- `models list --provider <id>` фільтрує за ідентифікатором провайдера, наприклад `moonshot` або
`openai-codex`. Він не приймає відображувані мітки з інтерактивних засобів вибору провайдера,
наприклад `Moonshot AI`.
- Посилання на моделі розбираються шляхом поділу за **першим** `/`. Якщо ID моделі містить `/` (у стилі OpenRouter), додайте префікс постачальника (приклад: `openrouter/moonshotai/kimi-k2`).
- Якщо ви не вказали постачальника, OpenClaw спочатку визначає введення як псевдонім, потім —
як унікальний збіг exact model id серед налаштованих постачальників, і лише після цього
використовує резервний варіант із налаштованим постачальником за замовчуванням із попередженням про застарілість.
Якщо цей постачальник більше не надає налаштовану модель за замовчуванням, OpenClaw
використовує резервний варіант із першою налаштованою парою постачальник/модель замість того, щоб показувати
застаріле значення за замовчуванням від видаленого постачальника.
- `models status` може показувати `marker(<value>)` у виводі автентифікації для незахищених заповнювачів (наприклад `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) замість маскування їх як секретів.
- Посилання на моделі розбираються шляхом поділу за **першим** `/`. Якщо ID моделі містить `/` (у стилі OpenRouter), додайте префікс провайдера (приклад: `openrouter/moonshotai/kimi-k2`).
- Якщо ви не вказали провайдера, OpenClaw спочатку розпізнає введення як псевдонім, потім —
як унікальний збіг точного ID моделі серед налаштованих провайдерів, і лише після цього
використовує резервний варіант у вигляді налаштованого провайдера за замовчуванням із попередженням про застарівання.
Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw
використовує резервний варіант — першу налаштовану пару провайдер/модель — замість того, щоб показувати
застаріле значення за замовчуванням для видаленого провайдера.
- `models status` може показувати `marker(<value>)` у виводі автентифікації для незасекречених плейсхолдерів (наприклад, `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) замість маскування їх як секретів.
### Сканування моделей
`models scan` читає публічний каталог OpenRouter `:free` і ранжує кандидатів для
використання як резервних варіантів. Сам каталог є публічним, тому сканування лише метаданих не потребує
ключа OpenRouter.
використання як резервних варіантів. Сам каталог є публічним, тому сканування лише метаданих
не потребує ключа OpenRouter.
За замовчуванням OpenClaw намагається перевірити підтримку інструментів і зображень за допомогою живих викликів моделі.
Якщо ключ OpenRouter не налаштовано, команда використовує резервний варіант із виводом лише метаданих
і пояснює, що моделі `:free` усе одно потребують `OPENROUTER_API_KEY` для
перевірок і висновку.
Якщо ключ OpenRouter не налаштовано, команда використовує резервний варіант у вигляді виводу лише метаданих
і пояснює, що моделі `:free` все одно потребують `OPENROUTER_API_KEY` для
перевірок і inference.
Параметри:
- `--no-probe` (лише метадані; без пошуку config/секретів)
- `--no-probe` (лише метадані; без пошуку конфігурації/секретів)
- `--min-params <b>`
- `--max-age-days <days>`
- `--provider <name>`
- `--max-candidates <n>`
- `--timeout <ms>` (тайм-аут запиту каталогу та кожної перевірки)
- `--timeout <ms>` (тайм-аут запиту каталогу та тайм-аут кожної перевірки)
- `--concurrency <n>`
- `--yes`
- `--no-input`
@ -100,8 +105,8 @@ OAuth/API-ключа з профілів автентифікації, env аб
- `--set-image`
- `--json`
`--set-default` і `--set-image` потребують живих перевірок; результати сканування лише метаданих
є інформаційними та не застосовуються до config.
`--set-default` і `--set-image` потребують живих перевірок; результати сканування
лише за метаданими мають інформаційний характер і не застосовуються до конфігурації.
### Стан моделей
@ -109,20 +114,20 @@ OAuth/API-ключа з профілів автентифікації, env аб
- `--json`
- `--plain`
- `--check` (код виходу 1=прострочено/відсутнє, 2=строк дії спливає)
- `--check` (код виходу 1=прострочено/відсутнє, 2=скоро спливе)
- `--probe` (жива перевірка налаштованих профілів автентифікації)
- `--probe-provider <name>` (перевірити одного постачальника)
- `--probe-profile <id>` (повторювані або розділені комами id профілів)
- `--probe-provider <name>` (перевірити один провайдер)
- `--probe-profile <id>` (повторювані або розділені комами ідентифікатори профілів)
- `--probe-timeout <ms>`
- `--probe-concurrency <n>`
- `--probe-max-tokens <n>`
- `--agent <id>` (id налаштованого агента; перевизначає `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`)
- `--agent <id>` (ідентифікатор налаштованого агента; має пріоритет над `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`)
`--json` зберігає stdout виключно для корисного навантаження JSON. Діагностика профілів автентифікації, постачальників
і запуску спрямовується в stderr, щоб скрипти могли напряму передавати stdout
`--json` зберігає stdout лише для JSON-корисного навантаження. Діагностика профілів автентифікації, провайдерів
і запуску спрямовується до stderr, щоб скрипти могли напряму передавати stdout
в інструменти на кшталт `jq`.
Категорії стану перевірок:
Категорії стану перевірки:
- `ok`
- `auth`
@ -133,15 +138,15 @@ OAuth/API-ключа з профілів автентифікації, env аб
- `unknown`
- `no_model`
Варіанти деталей/кодів причин перевірок, на які слід очікувати:
Варіанти detail/reason-code перевірки, які варто очікувати:
- `excluded_by_auth_order`: збережений профіль існує, але явний
`auth.order.<provider>` його пропустив, тому перевірка повідомляє про виключення замість
спроби використати його.
спроби його використати.
- `missing_credential`, `invalid_expires`, `expired`, `unresolved_ref`:
профіль присутній, але не придатний/не може бути визначений.
- `no_model`: автентифікація постачальника існує, але OpenClaw не зміг визначити
кандидата моделі для перевірки для цього постачальника.
профіль присутній, але не є придатним/не може бути розв’язаний.
- `no_model`: автентифікація провайдера існує, але OpenClaw не зміг визначити
кандидата моделі цього провайдера, придатного для перевірки.
## Псевдоніми + резервні варіанти
@ -159,12 +164,12 @@ openclaw models auth setup-token --provider <id>
openclaw models auth paste-token
```
`models auth add` — це інтерактивний помічник автентифікації. Він може запустити потік автентифікації постачальника
(OAuth/API key) або провести вас через ручне вставлення токена, залежно від
вибраного постачальника.
`models auth add` — це інтерактивний помічник автентифікації. Він може запускати потік автентифікації провайдера
(OAuth/API key) або провести вас через ручне вставлення токена — залежно від того,
якого провайдера ви виберете.
`models auth login` запускає потік автентифікації Plugin постачальника (OAuth/API key). Використовуйте
`openclaw plugins list`, щоб побачити, які постачальники встановлено.
`models auth login` запускає потік автентифікації Plugin провайдера (OAuth/API key). Використовуйте
`openclaw plugins list`, щоб побачити, які провайдери встановлено.
Використовуйте `openclaw models auth --agent <id> <subcommand>`, щоб записати результати автентифікації до
сховища конкретного налаштованого агента. Батьківський прапорець `--agent` підтримується в
`add`, `login`, `setup-token`, `paste-token` і `login-github-copilot`.
@ -177,21 +182,21 @@ openclaw models auth login --provider openai-codex --set-default
Примітки:
- `setup-token` і `paste-token` залишаються універсальними командами токенів для постачальників,
- `setup-token` і `paste-token` залишаються універсальними командами для токенів для провайдерів,
які надають методи автентифікації за токеном.
- `setup-token` потребує інтерактивного TTY і запускає метод токен-автентифікації постачальника
(типово — метод `setup-token` цього постачальника, якщо він його надає).
- `paste-token` приймає рядок токена, згенерований в іншому місці або автоматизацією.
- `setup-token` потребує інтерактивного TTY і запускає метод токен-автентифікації провайдера
(за замовчуванням використовуючи метод `setup-token` цього провайдера, якщо він його надає).
- `paste-token` приймає рядок токена, згенерований деінде або автоматизацією.
- `paste-token` потребує `--provider`, запитує значення токена та записує
його до id профілю за замовчуванням `<provider>:manual`, якщо ви не передасте
його до ID профілю за замовчуванням `<provider>:manual`, якщо ви не передасте
`--profile-id`.
- `paste-token --expires-in <duration>` зберігає абсолютний строк дії токена на основі
відносної тривалості, наприклад `365d` або `12h`.
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає повторне використання Claude CLI і використання `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- `setup-token` / `paste-token` для Anthropic залишаються доступними як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI і `claude -p`, коли це доступно.
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає повторне використання Claude CLI та використання `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- `setup-token` / `paste-token` Anthropic залишаються доступними як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI і `claude -p`, коли це доступно.
## Пов’язано
## Пов’язане
- [Довідка CLI](/uk/cli)
- [Вибір моделі](/uk/concepts/model-providers)
- [Перемикання між моделями при збоях](/uk/concepts/model-failover)
- [Відмовостійкість моделей](/uk/concepts/model-failover)

File diff suppressed because it is too large Load Diff

View File

@ -1,45 +1,61 @@
---
read_when:
- Ви підтримуєте плагін OpenClaw
- Ви бачите попередження про сумісність плагіна
- Ви плануєте міграцію SDK плагіна або маніфесту
- Ви підтримуєте Plugin OpenClaw
- Ви бачите попередження про сумісність Plugin
- Ви плануєте міграцію SDK або маніфесту Plugin
summary: Контракти сумісності Plugin, метадані застарівання та очікування щодо міграції
title: Сумісність Plugin
x-i18n:
generated_at: "2026-04-28T01:06:39Z"
generated_at: "2026-04-28T02:07:57Z"
model: gpt-5.4
provider: openai
source_hash: 9cb004d9959f1892f3bebcdfb9bee3fd78fc3322a2cbee4e8078c41a3f6706c6
source_hash: eecf94743cf34c5b773bfa8066164f90b7c8a75667c43f3f1002d32ec1d04902
source_path: plugins/compatibility.md
workflow: 15
---
OpenClaw зберігає старі контракти Plugin підключеними через іменовані адаптери сумісності перед їх видаленням. Це захищає наявні вбудовані та зовнішні плагіни, поки розвиваються контракти SDK, маніфесту, налаштування, конфігурації та середовища виконання агента.
OpenClaw зберігає старі контракти Plugin, підключені через іменовані
адаптери сумісності, перш ніж видаляти їх. Це захищає наявні вбудовані та зовнішні
Plugin, поки розвиваються контракти SDK, маніфесту, налаштування, конфігурації
та середовища виконання агента.
## Реєстр сумісності
Контракти сумісності Plugin відстежуються в основному реєстрі за адресою
`src/plugins/compat/registry.ts`.
Кожен запис містить:
Кожен запис має:
- стабільний код сумісності
- статус: `active`, `deprecated`, `removal-pending` або `removed`
- власник: SDK, config, setup, channel, provider, виконання Plugin, середовище виконання агента або core
- дати впровадження та застарівання, де це застосовно
- власника: SDK, config, setup, channel, provider, виконання plugin, середовище виконання агента
або core
- дати запровадження та застарівання, коли це застосовно
- вказівки щодо заміни
- документацію, діагностику й тести, що охоплюють стару та нову поведінку
- документацію, діагностику та тести, які охоплюють стару й нову поведінку
Реєстр є джерелом для планування супроводу та майбутніх перевірок інспектора Plugin. Якщо змінюється поведінка, видима для плагіна, додайте або оновіть запис сумісності в тій самій зміні, що додає адаптер.
Реєстр є джерелом для планування супровідниками та майбутніх перевірок
інспектора Plugin. Якщо змінюється поведінка, видима для Plugin, додайте або
оновіть запис сумісності в тій самій зміні, що додає адаптер.
Сумісність Doctor repair і міграцій відстежується окремо в
`src/commands/doctor/shared/deprecation-compat.ts`. Ці записи охоплюють старі форми config, структури install-ledger і repair shim, які можуть знадобитися й після видалення шляху сумісності в середовищі виконання.
Сумісність виправлень doctor і міграцій відстежується окремо в
`src/commands/doctor/shared/deprecation-compat.ts`. Ці записи охоплюють старі
форми config, макети журналу встановлення та shim-сумісності для виправлень, які
може знадобитися залишити доступними після видалення шляху сумісності середовища виконання.
Під час перевірок релізу слід перевіряти обидва реєстри. Не видаляйте міграцію doctor лише тому, що відповідний запис сумісності середовища виконання або config втратив чинність; спершу переконайтеся, що немає підтримуваного шляху оновлення, якому все ще потрібне це виправлення. Також повторно перевіряйте кожну анотацію заміни під час планування релізу, оскільки власність Plugin і охоплення config можуть змінюватися, коли provider і channel виносяться з core.
Під час перевірок перед релізом слід перевіряти обидва реєстри. Не видаляйте
міграцію doctor лише тому, що відповідний запис сумісності середовища виконання
або config втратив чинність; спочатку переконайтеся, що більше немає
підтримуваного шляху оновлення, який усе ще потребує цього виправлення. Також
повторно перевіряйте кожну анотацію заміни під час планування релізу, оскільки
власність Plugin і обсяг config можуть змінюватися, коли provider і channel
виносяться з core.
## Пакет інспектора Plugin
Інспектор Plugin має жити поза основним репозиторієм OpenClaw як окремий пакет/репозиторій, що спирається на версійовані контракти сумісності та маніфесту.
Інспектор Plugin має розміщуватися поза основним репозиторієм OpenClaw як
окремий пакет/репозиторій, що спирається на версійовані контракти сумісності
та маніфесту.
CLI першого дня має бути таким:
@ -49,77 +65,110 @@ openclaw-plugin-inspector ./my-plugin
Він має виводити:
- перевірку маніфесту/схеми
- версію контракту сумісності, яка перевіряється
- валідацію маніфесту/схеми
- версію сумісності контракту, яка перевіряється
- перевірки метаданих встановлення/джерела
- перевірки імпорту холодного шляху
- попередження про застарівання та сумісність
Використовуйте `--json` для стабільного машинозчитуваного виводу в анотаціях CI. Ядро OpenClaw має надавати контракти та фікстури, які інспектор може використовувати, але не повинно публікувати бінарний файл інспектора з основного пакета `openclaw`.
Використовуйте `--json` для стабільного машиночитаного виводу в анотаціях CI. Core
OpenClaw має надавати контракти та фікстури, які може споживати інспектор, але
не має публікувати бінарний файл інспектора з основного пакета `openclaw`.
### Доріжка приймання для супровідників
Використовуйте Blacksmith Testbox для доріжки приймання пакета, що встановлюється, під час валідації
зовнішнього інспектора щодо пакетів Plugin OpenClaw. Запускайте її з чистого
checkout OpenClaw після збирання пакета:
```sh
blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90
blacksmith testbox run --id <tbx_id> "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json"
blacksmith testbox run --id <tbx_id> "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/discord --json"
blacksmith testbox run --id <tbx_id> "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- <clawhub-plugin-dir> --json"
blacksmith testbox stop <tbx_id>
```
Зберігайте цю доріжку як opt-in для супровідників, оскільки вона встановлює
зовнішній npm-пакет і може перевіряти пакети Plugin, клоновані поза репозиторієм. Локальні
захисні механізми репозиторію охоплюють export map SDK, метадані реєстру
сумісності, поступове виведення з ужитку застарілих SDK-import, а також межі імпорту
вбудованих extension; перевірка інспектором у Testbox охоплює пакет у тому
вигляді, як його споживають автори зовнішніх Plugin.
## Політика застарівання
OpenClaw не повинен видаляти задокументований контракт Plugin у тому самому релізі, який запроваджує його заміну.
OpenClaw не має видаляти задокументований контракт Plugin у тому самому релізі,
який запроваджує його заміну.
Послідовність міграції така:
1. Додати новий контракт.
2. Залишити стару поведінку підключеною через іменований адаптер сумісності.
3. Виводити діагностику або попередження, коли автори плагінів уже можуть діяти.
4. Задокументувати заміну й часові межі.
5. Протестувати як старий, так і новий шляхи.
6. Дочекатися завершення оголошеного вікна міграції.
7. Видаляти лише з явним схваленням для релізу, що ламає сумісність.
1. Додайте новий контракт.
2. Залиште стару поведінку підключеною через іменований адаптер сумісності.
3. Видавайте діагностику або попередження, коли автори Plugin можуть діяти.
4. Задокументуйте заміну та часові межі.
5. Протестуйте і старий, і новий шляхи.
6. Зачекайте протягом оголошеного вікна міграції.
7. Видаляйте лише з явним схваленням для релізу з несумісними змінами.
Записи зі статусом deprecated мають містити дату початку попереджень, заміну, посилання на документацію та остаточну дату видалення не пізніше ніж через три місяці після початку попереджень. Не додавайте застарілий шлях сумісності з відкритим вікном видалення, якщо супровідники явно не вирішили, що це постійна сумісність, і не позначили його як `active`.
Застарілі записи мають включати дату початку попередження, заміну, посилання на
документацію та кінцеву дату видалення не пізніше ніж через три місяці після
початку попередження. Не додавайте застарілий шлях сумісності з відкритим
терміном видалення, якщо супровідники явно не вирішили, що це постійна
сумісність, і не позначили його як `active`.
## Поточні області сумісності
Поточні записи сумісності включають:
- застарілі широкі імпорти SDK, такі як `openclaw/plugin-sdk/compat`
- застарілі форми Plugin лише з hook і `before_agent_start`
- застарілі точки входу Plugin `activate(api)`, поки плагіни мігрують на
- застарілі форми Plugin лише з hook та `before_agent_start`
- застарілі точки входу Plugin `activate(api)`, поки Plugin мігрують на
`register(api)`
- застарілі псевдоніми SDK, такі як `openclaw/extension-api`,
`openclaw/plugin-sdk/channel-runtime`, конструктори статусу `openclaw/plugin-sdk/command-auth`,
`openclaw/plugin-sdk/test-utils` (замінений на цільові підшляхи тестів
`openclaw/plugin-sdk/*`), а також псевдоніми типів `ClawdbotConfig` /
`openclaw/plugin-sdk/channel-runtime`, конструктори status
`openclaw/plugin-sdk/command-auth`, `openclaw/plugin-sdk/test-utils` (замінені на цільові
підшляхи тестів `openclaw/plugin-sdk/*`), а також псевдоніми типів `ClawdbotConfig` /
`OpenClawSchemaType`
- allowlist вбудованих Plugin і поведінку ввімкнення
- поведінка allowlist і ввімкнення вбудованих Plugin
- застарілі метадані маніфесту env-var для provider/channel
- застарілі hook і псевдоніми типів Plugin provider, поки provider переходять на
явні hook для catalog, auth, thinking, replay і transport
явні hook каталогу, auth, thinking, replay і transport
- застарілі псевдоніми середовища виконання, такі як `api.runtime.taskFlow`,
`api.runtime.subagent.getSession`, `api.runtime.stt` і застарілі
`api.runtime.subagent.getSession`, `api.runtime.stt`, а також застарілі
`api.runtime.config.loadConfig()` / `api.runtime.config.writeConfigFile(...)`
- застарілу розділену реєстрацію memory-plugin, поки memory plugins переходять на
- застаріла розділена реєстрація memory-plugin, поки memory plugin переходять на
`registerMemoryCapability`
- застарілі helper SDK channel для нативних схем повідомлень, керування згадками,
форматування вхідних envelope і вкладення можливостей схвалення
- застарілі псевдоніми route key channel і helper для comparable-target, поки плагіни переходять
на `openclaw/plugin-sdk/channel-route`
- activation hints, які замінюються володінням внеском маніфесту
- резервний шлях середовища виконання `setup-api`, поки дескриптори setup переходять до холодних
метаданих `setup.requiresRuntime: false`
- hook provider `discovery`, поки hook каталогу provider переходять до
- застарілі допоміжні засоби SDK channel для нативних схем повідомлень, шлюзування згадок,
форматування вхідного envelope і вкладеності можливостей погодження
- застарілі псевдоніми ключів маршруту channel і допоміжних засобів comparable-target, поки Plugin
переходять на `openclaw/plugin-sdk/channel-route`
- підказки активації, які замінюються власністю внеску маніфесту
- резервний шлях середовища виконання `setup-api`, поки дескриптори setup переходять на холодні
метадані `setup.requiresRuntime: false`
- hook `discovery` provider, поки hook каталогу provider переходять на
`catalog.run(...)`
- метадані channel `showConfigured` / `showInSetup`, поки пакети channel переходять
до `openclaw.channel.exposure`
- застарілі ключі config політик середовища виконання, поки doctor мігрує операторів до
- метадані `showConfigured` / `showInSetup` channel, поки пакети channel переходять
на `openclaw.channel.exposure`
- застарілі ключі config політики середовища виконання, поки doctor мігрує операторів на
`agentRuntime`
- резервний шлях метаданих config згенерованих вбудованих channel, поки впроваджуються
метадані `channelConfigs` на основі registry-first
- прапори env для вимкнення збереженого реєстру Plugin та міграції встановлення, поки
потоки repair переводять операторів на `openclaw plugins registry --refresh` і
- резервний шлях для згенерованих метаданих config вбудованих channel, поки впроваджуються
метадані `channelConfigs` з пріоритетом реєстру
- змінні середовища для вимкнення збереженого реєстру Plugin і міграції встановлення, поки
потоки виправлення мігрують операторів на `openclaw plugins registry --refresh` і
`openclaw doctor --fix`
- застарілі шляхи config для web search, web fetch і x_search, що належать Plugin, поки
doctor мігрує їх до `plugins.entries.<plugin>.config`
- застарілі авторські config `plugins.installs` і псевдоніми шляхів завантаження вбудованих Plugin, поки
метадані встановлення переміщуються до керованого станом реєстру Plugin
- застарілий створений конфігурацією `plugins.installs` і псевдоніми шляху завантаження вбудованих Plugin,
поки метадані встановлення переміщуються до журналу Plugin, яким керує стан
Новий код Plugin має надавати перевагу заміні, вказаній у реєстрі та в конкретному посібнику з міграції. Наявні плагіни можуть і далі використовувати шлях сумісності, доки документація, діагностика та примітки до релізу не оголосять вікно видалення.
Новий код Plugin має надавати перевагу заміні, зазначеній у реєстрі та в
конкретному посібнику з міграції. Наявні Plugin можуть і далі використовувати
шлях сумісності, доки документація, діагностика та примітки до релізу не
оголосять вікно видалення.
## Примітки до релізу
Примітки до релізу мають включати майбутні застарівання Plugin із цільовими датами та посиланнями на документацію з міграції. Це попередження має з’явитися до того, як шлях сумісності перейде в `removal-pending` або `removed`.
Примітки до релізу мають включати майбутні застарівання Plugin із цільовими
датами та посиланнями на документацію міграції. Таке попередження має
з’явитися до того, як шлях сумісності перейде до `removal-pending` або `removed`.

File diff suppressed because it is too large Load Diff

View File

@ -1,330 +1,332 @@
---
read_when:
- Вибір правильного підшляху plugin-sdk для імпорту Plugin
- Вибір правильного підшляху plugin-sdk для імпорту плагіна
- Аудит підшляхів bundled-plugin і допоміжних поверхонь
summary: 'Каталог підшляхів Plugin SDK: які імпорти де розміщені, згруповано за областями'
title: Підшляхи Plugin SDK
x-i18n:
generated_at: "2026-04-28T01:47:22Z"
generated_at: "2026-04-28T02:07:53Z"
model: gpt-5.4
provider: openai
source_hash: 67de782db5ef5a60ffe104ba67749590e70acb31f615e8c6e5049f688a3c2422
source_hash: c56a83c4cf89a40286328bd58079af21a1f5fcf2392c5f6a1e08f873c65e49d6
source_path: plugins/sdk-subpaths.md
workflow: 15
---
Plugin SDK представлено як набір вузьких підшляхів у `openclaw/plugin-sdk/`.
На цій сторінці каталогізовано найуживаніші підшляхи, згруповані за призначенням. Згенерований
На цій сторінці наведено каталог найуживаніших підшляхів, згрупованих за призначенням. Згенерований
повний список із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`;
зарезервовані допоміжні підшляхи bundled-plugin також наведені там, але є деталлю
реалізації, якщо лише сторінка документації не просуває їх явно.
зарезервовані допоміжні підшляхи bundled-plugin також наведено там, але вони є деталями
реалізації, якщо тільки окрема сторінка документації явно не рекомендує їх.
Посібник з розробки Plugin див. у [Огляд Plugin SDK](/uk/plugins/sdk-overview).
Посібник зі створення плагінів дивіться в [Огляд Plugin SDK](/uk/plugins/sdk-overview).
## Точка входу Plugin
## Вхід плагіна
| Subpath | Ключові експорти |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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` | Мінімальний конструктор моків `OpenClawPluginApi` для прямих модульних тестів реєстрації Plugin |
| `plugin-sdk/channel-test-helpers` | Допоміжні засоби для тестування життєвого циклу облікових записів Channel, каталогів, send-config, моків runtime, hooks і загального контракту Channel |
| `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок під час визначення цілі Channel |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби для контрактів реєстрації Plugin, маніфесту пакета, публічного артефакту, runtime API, побічних ефектів імпорту та прямого імпорту |
| `plugin-sdk/plugin-test-runtime` | Фікстури runtime Plugin, реєстру, реєстрації provider, майстра налаштування та TaskFlow runtime для тестів |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби для контрактів runtime provider, auth, discovery, onboard, catalog, web-search/fetch і майстра |
| `plugin-sdk/test-env` | Фікстури тестового середовища, fetch/network, live-test, тимчасової файлової системи та керування часом |
| `plugin-sdk/test-fixtures` | Загальні тестові фікстури для CLI, sandbox, Skills, agent-message, system-event, terminal, chunking, auth-token і typed-case |
| `plugin-sdk/migration` | Допоміжні засоби для елементів provider міграції, наприклад `createMigrationItem`, константи причин, маркери статусу елементів, засоби редагування та `summarizeMigrationItems` |
| `plugin-sdk/migration-runtime` | Допоміжні засоби runtime міграції, наприклад `copyMigrationFileItem` і `writeMigrationReport` |
| Підшлях | Основні експорти |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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-sdk/plugin-test-api` | Мінімальний побудовник моку `OpenClawPluginApi` для модульних тестів прямої реєстрації плагінів |
| `plugin-sdk/channel-test-helpers` | Допоміжні засоби для тестів життєвого циклу облікових записів каналу, каталогів, конфігурації надсилання, моку runtime, hook і загального контракту каналу |
| `plugin-sdk/channel-target-testing` | Спільний набір тестів для випадків помилок під час визначення цілі каналу |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби для контрактів реєстрації плагіна, маніфесту пакета, публічного артефакту, runtime API, побічних ефектів імпорту та прямого імпорту |
| `plugin-sdk/plugin-test-runtime` | Фікстури для тестів runtime плагіна, реєстру, реєстрації провайдера, майстра налаштування та runtime TaskFlow |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби для контрактів runtime провайдера, автентифікації, виявлення, онбордингу, каталогу, мультимедійних можливостей, web-search/fetch і майстра |
| `plugin-sdk/provider-http-test-mocks` | Опціональні моки HTTP/автентифікації Vitest для тестів провайдера, які використовують `plugin-sdk/provider-http` |
| `plugin-sdk/test-env` | Фікстури середовища тестування, fetch/мережі, live-тестів, тимчасової файлової системи та керування часом |
| `plugin-sdk/test-fixtures` | Загальні тестові фікстури CLI, sandbox, skill, повідомлень агента, системних подій, термінала, chunking, токенів автентифікації та типізованих випадків |
| `plugin-sdk/migration` | Допоміжні засоби для елементів провайдера міграції, такі як `createMigrationItem`, константи причин, маркери статусу елементів, засоби редагування та `summarizeMigrationItems` |
| `plugin-sdk/migration-runtime` | Допоміжні засоби для runtime міграції, такі як `copyMigrationFileItem` і `writeMigrationReport` |
<AccordionGroup>
<Accordion title="Підшляхи Channel">
| Subpath | Ключові експорти |
<Accordion title="Підшляхи каналів">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Експорт кореневої схеми Zod для `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Спільні допоміжні засоби для майстра налаштування, prompt allowlist, побудовники статусу налаштування |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, запити allowlist, побудовники статусу налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби для конфігурації та action-gate з кількома обліковими записами, а також для fallback облікового запису за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби для нормалізації account-id |
| `plugin-sdk/account-resolution` | Допоміжні засоби для пошуку облікового запису та fallback за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списків облікових записів і дій з обліковими записами |
| `plugin-sdk/account-core` | Допоміжні засоби для конфігурації/гейтів дій багатьох облікових записів і резервного використання облікового запису за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації ідентифікатора облікового запису |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису + резервного використання облікового запису за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списків облікових записів/дій з обліковими записами |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації Channel і універсальний конструктор |
| `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації Channel для bundled OpenClaw лише для підтримуваних bundled Plugin |
| `plugin-sdk/channel-config-schema-legacy` | Застарілий псевдонім сумісності для bundled-схем конфігурації Channel |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби для нормалізації/валідації користувацьких команд Telegram із fallback на bundled-контракт |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби для gate авторизації команд |
| `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та загальний побудовник |
| `plugin-sdk/bundled-channel-config-schema` | Схеми конфігурації каналів bundled OpenClaw лише для підтримуваних bundled-плагінів |
| `plugin-sdk/channel-config-schema-legacy` | Застарілий псевдонім сумісності для bundled-схем конфігурації каналів |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервним bundled-контрактом |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби для шлюзування авторизації команд |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби для життєвого циклу/фіналізації draft stream |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для маршрутизації inbound і побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби для запису inbound і dispatch |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/завершення чернеткових потоків |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для побудови вхідних маршрутів і envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби для запису та диспетчеризації вхідних даних |
| `plugin-sdk/messaging-targets` | Допоміжні засоби для розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби для завантаження outbound media |
| `plugin-sdk/outbound-send-deps` | Легковаговий пошук залежностей outbound send для адаптерів Channel |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби runtime для outbound delivery, identity, send delegate, session, formatting і планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби для нормалізації poll |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби для життєвого циклу thread-binding і адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий конструктор payload медіа agent |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби для прив’язки conversation/thread, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб для знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби runtime для визначення group-policy |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби для знімків/зведень стану Channel |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації Channel |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації Channel |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти Plugin для Channel |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби для читання/редагування конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби для визначення доступу до груп |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби для семантичного представлення повідомлень, доставки та застарілих інтерактивних відповідей. Див. [Представлення повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Barrel сумісності для debounce inbound, зіставлення згадок, допоміжних засобів mention-policy та envelope |
| `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні засоби для debounce inbound |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби mention-policy, маркерів згадок і тексту згадок без ширшої поверхні inbound runtime |
| `plugin-sdk/channel-envelope` | Вузькі допоміжні засоби для форматування inbound envelope |
| `plugin-sdk/channel-location` | Допоміжні засоби для контексту Channel location і форматування |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування Channel для відкинутих inbound і збоїв typing/ack |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-actions` | Допоміжні засоби для message-action у Channel, а також застарілі допоміжні засоби для native schema, збережені для сумісності Plugin |
| `plugin-sdk/channel-route` | Спільні допоміжні засоби для нормалізації route, визначення цілей на основі parser, перетворення thread-id у рядок, ключів route для dedupe/compact, типів parsed-target і порівняння route/target |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору цілей; виклики порівняння route мають використовувати `plugin-sdk/channel-route` |
| `plugin-sdk/channel-contract` | Типи контракту Channel |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-send-deps` | Полегшений пошук залежностей вихідного надсилання для адаптерів каналів |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби вихідної доставки, ідентичності, делегата надсилання, сесії, форматування та планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації опитувань |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding і адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник мультимедійного payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби для binding розмов/потоків, pairing та налаштованих binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення групової політики runtime |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку стану каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти плагіна каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби рішень щодо групового доступу |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби автентифікації/захисту direct-DM |
| `plugin-sdk/interactive-runtime` | Семантичне представлення повідомлень, доставка та застарілі допоміжні засоби інтерактивних відповідей. Див. [Представлення повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Сумісний barrel для debounce вхідних даних, зіставлення згадок, допоміжних засобів політики згадок і envelope |
| `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні засоби debounce вхідних даних |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби політики згадок, маркерів згадок і тексту згадок без ширшої поверхні runtime вхідних даних |
| `plugin-sdk/channel-envelope` | Вузькі допоміжні засоби форматування вхідного envelope |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту та форматування розташування каналу |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування каналу для відкидання вхідних даних і збоїв typing/ack |
| `plugin-sdk/channel-send-result` | Типи результатів відповідей |
| `plugin-sdk/channel-actions` | Допоміжні засоби дій із повідомленнями каналу, а також застарілі допоміжні засоби нативної схеми, збережені для сумісності плагінів |
| `plugin-sdk/channel-route` | Спільні допоміжні засоби нормалізації маршрутів, визначення цілей на основі парсера, перетворення thread-id у рядок, dedupe/compact ключів маршрутів, типів parsed-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, зокрема `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей secret |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-контрактів, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret-цілей |
</Accordion>
<Accordion title="Підшляхи Provider">
| Subpath | Ключові експорти |
<Accordion title="Підшляхи провайдерів">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/lmstudio` | Підтримуваний фасад provider LM Studio для налаштування, виявлення каталогу та підготовки моделей runtime |
| `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад runtime LM Studio для локальних типових параметрів сервера, виявлення моделей, заголовків запитів і допоміжних засобів для завантажених моделей |
| `plugin-sdk/provider-setup` | Добірні допоміжні засоби налаштування локальних/self-hosted provider |
| `plugin-sdk/self-hosted-provider-setup` | Цілеспрямовані допоміжні засоби налаштування self-hosted provider, сумісних з OpenAI |
| `plugin-sdk/cli-backend` | Типові параметри бекенду CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби runtime для визначення API-key для provider Plugin |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API-key, наприклад `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний конструктор результату auth OAuth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для provider Plugin |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env var для auth provider |
| `plugin-sdk/lmstudio` | Підтримуваний фасад провайдера LM Studio для налаштування, виявлення каталогу та підготовки моделей у runtime |
| `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад runtime LM Studio для локальних серверних значень за замовчуванням, виявлення моделей, заголовків запитів і допоміжних засобів для завантажених моделей |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI |
| `plugin-sdk/cli-backend` | Значення за замовчуванням для бекенду CLI + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключа в runtime для плагінів провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу API-ключа/запису профілю, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth-автентифікації |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для плагінів провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища автентифікації провайдера |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори replay-policy, допоміжні засоби кінцевих точок provider і допоміжні засоби нормалізації model-id, наприклад `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Hook runtime для розширення каталогу provider і seams реєстру provider Plugin для контрактних тестів |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик replay, допоміжні засоби endpoint провайдерів і нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Hook runtime для розширення каталогу провайдерів і seams реєстру plugin-provider для контрактних тестів |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/можливостей кінцевих точок provider, помилки HTTP provider і допоміжні засоби multipart form для транскрибування аудіо |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, наприклад `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування provider web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для provider, яким не потрібне підключення enable Plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, наприклад `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setters/getters облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime provider web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схем Gemini + діагностика, а також допоміжні засоби сумісності xAI, наприклад `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/можливостей endpoint провайдера, HTTP-помилки провайдера та допоміжні засоби multipart form для транскрибування аудіо |
| `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-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, а також scoped-сетери/гетери облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/runtime провайдера web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток stream і спільні допоміжні засоби обгорток Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби native transport provider, зокрема guarded fetch, перетворення transport message і потоки подій transport із можливістю запису |
| `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації онбордингу |
| `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` | Допоміжні засоби нативного транспорту провайдера, такі як guarded fetch, трансформації transport message і доступні для запису потоки transport event |
| `plugin-sdk/provider-onboard` | Допоміжні засоби патчингу конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
| `plugin-sdk/group-activation` | Вузькі допоміжні засоби для режиму активації груп і розбору команд |
| `plugin-sdk/group-activation` | Вузькі допоміжні засоби режиму активації групи та розбору команд |
</Accordion>
<Accordion title="Підшляхи auth і безпеки">
| Subpath | Ключові експорти |
<Accordion title="Підшляхи автентифікації та безпеки">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, зокрема форматування меню динамічних аргументів, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Конструктори повідомлень команд/довідки, наприклад `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби для визначення approver і auth дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери native можливостей/доставки approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб для визначення Gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Легковагові допоміжні засоби завантаження адаптера native approval для гарячих точок входу Channel |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для handler approval; віддавайте перевагу вужчим adapter/gateway seams, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби native target approval + прив’язки облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді approval для exec/plugin |
| `plugin-sdk/approval-runtime` | Допоміжні засоби payload approval для exec/plugin, допоміжні засоби маршрутизації/runtime native approval і допоміжні засоби структурованого відображення approval, наприклад `formatApprovalDisplayPath` |
| `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби для скидання дедуплікації inbound reply |
| `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби тестування контракту Channel без широкого testing barrel |
| `plugin-sdk/command-auth-native` | Native auth команд, форматування меню динамічних аргументів і допоміжні засоби native session-target |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, включно з форматуванням меню динамічних аргументів, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення затверджувача та автентифікації дій у межах того самого чату |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра нативного exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки нативного approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження адаптера нативного approval handler для гарячих точок входу каналів |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для approval handler; віддавайте перевагу вужчим seams адаптера/gateway, якщо їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби цілі нативного approval + binding облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді exec/plugin approval |
| `plugin-sdk/approval-runtime` | Допоміжні засоби payload exec/plugin approval, допоміжні засоби маршрутизації/runtime нативного approval і допоміжні засоби структурованого відображення approval, такі як `formatApprovalDisplayPath` |
| `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання dedupe для вхідних відповідей |
| `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби тестування контрактів каналів без широкого testing barrel |
| `plugin-sdk/command-auth-native` | Нативна автентифікація команд, форматування меню динамічних аргументів і допоміжні засоби native session-target |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-primitives-runtime` | Легковагові предикати тексту команд для гарячих шляхів Channel |
| `plugin-sdk/command-primitives-runtime` | Полегшені предикати тексту команд для гарячих шляхів каналів |
| `plugin-sdk/command-surface` | Нормалізація тіла команди та допоміжні засоби command-surface |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-contract для поверхонь secret Channel/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби для trust, DM gating, external-content, редагування чутливого тексту, порівняння secret у сталий час і збирання secret |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-контрактів для поверхонь секретів каналів/плагінів |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору secret-контрактів/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів у сталий час і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватних мереж |
| `plugin-sdk/ssrf-dispatcher` | Вузькі допоміжні засоби pinned-dispatcher без широкої поверхні infra runtime |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, fetch із захистом SSRF, помилки SSRF і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input |
| `plugin-sdk/ssrf-runtime` | pinned-dispatcher, fetch із захистом від SSRF, помилка SSRF і допоміжні засоби політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору секретного вводу |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/цілі Webhook і приведення raw websocket/body |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру тіла запиту/timeout |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру тіла запиту/тайм-ауту |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
| Subpath | Ключові експорти |
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби для runtime/logging/backup/встановлення Plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби для env runtime, logger, timeout, retry і backoff |
| `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/типових параметрів, розбору URL CDP і допоміжних засобів auth browser-control |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби для реєстрації та пошуку runtime-context Channel |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення плагінів |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби env runtime, logger, timeout, retry і backoff |
| `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/значень за замовчуванням, розбору URL CDP і допоміжних засобів автентифікації browser-control |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку runtime-context каналу |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби для команд/hooks/http/interactive Plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби для pipeline Webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби для lazy-імпорту/прив’язки runtime, наприклад `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби для виконання процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби для форматування CLI, очікування, версій, виклику аргументів і lazy-груп команд |
| `plugin-sdk/gateway-runtime` | Клієнт Gateway, CLI RPC Gateway, помилки протоколу Gateway і допоміжні засоби виправлення channel-status |
| `plugin-sdk/config-types` | Поверхня конфігурації лише для типів конфігурації Plugin, зокрема `OpenClawConfig` і типів конфігурації channel/provider |
| `plugin-sdk/plugin-config-runtime` | Допоміжні засоби runtime для пошуку конфігурації Plugin, наприклад `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` |
| `plugin-sdk/config-mutation` | Допоміжні засоби транзакційної мутації конфігурації, наприклад `mutateConfigFile`, `replaceConfigFile` і `logConfigUpdated` |
| `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби для знімків конфігурації поточного процесу, наприклад `getRuntimeConfig`, `getRuntimeConfigSnapshot` і setters тестових знімків |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби для нормалізації назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли bundled-поверхня контракту Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel `text-runtime` |
| `plugin-sdk/approval-runtime` | Допоміжні засоби approval для exec/plugin, конструктори можливостей approval, допоміжні засоби auth/profile, допоміжні засоби native routing/runtime і форматування шляху структурованого відображення approval |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби inbound/reply runtime, chunking, dispatch, Heartbeat, планувальник reply |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби для dispatch/finalize reply і міток conversation |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби для reply-history у короткому вікні та маркери, наприклад `buildHistoryContext`, `HISTORY_CONTEXT_MARKER`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/hook/http/interactive плагіна |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/binding runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби exec процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування, версій, виклику аргументів і lazy command-group |
| `plugin-sdk/gateway-runtime` | Клієнт Gateway, CLI RPC Gateway, помилки протоколу Gateway і допоміжні засоби patch стану каналу |
| `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації плагінів, таких як `OpenClawConfig`, і типів конфігурації каналів/провайдерів |
| `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку конфігурації плагіна в runtime, такі як `requireRuntimeConfig`, `resolvePluginConfigObject` і `resolveLivePluginConfigObject` |
| `plugin-sdk/config-mutation` | Допоміжні засоби транзакційної мутації конфігурації, такі як `mutateConfigFile`, `replaceConfigFile` і `logConfigUpdated` |
| `plugin-sdk/runtime-config-snapshot` | Допоміжні засоби знімка конфігурації поточного процесу, такі як `getRuntimeConfig`, `getRuntimeConfigSnapshot` і сетери тестового знімка |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли bundled-поверхня контракту Telegram недоступна |
| `plugin-sdk/text-autolink-runtime` | Виявлення автопосилань на файлові посилання без широкого barrel text-runtime |
| `plugin-sdk/approval-runtime` | Допоміжні засоби approval exec/plugin, побудовники можливостей approval, допоміжні засоби auth/profile, допоміжні засоби нативної маршрутизації/runtime і форматування шляхів структурованого відображення approval |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime вхідних даних/відповідей, chunking, 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` | Вузькі допоміжні засоби для chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби для шляху сховища сесій, ключа сесії, updated-at і мутацій сховища |
| `plugin-sdk/cron-store-runtime` | Допоміжні засоби для шляху/завантаження/збереження сховища Cron |
| `plugin-sdk/state-paths` | Допоміжні засоби для шляхів каталогів state/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби для route/session-key/прив’язки облікового запису, наприклад `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби для зведень стану channel/account, типових станів runtime-state і метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби для визначення цілей |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби для нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL із входів, подібних до fetch/request |
| `plugin-sdk/run-command` | Виконавець команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені зчитувачі параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload із об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягування канонічних полів цілі send з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби для шляхів тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби для logger підсистем і редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби для режимів і перетворення таблиць Markdown |
| `plugin-sdk/model-session-runtime` | Допоміжні засоби для перевизначення model/session, наприклад `applyModelOverrideToSessionEntry` і `resolveAgentMaxConcurrent` |
| `plugin-sdk/talk-config-runtime` | Допоміжні засоби для визначення конфігурації provider Talk |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби для читання/запису стану JSON |
| `plugin-sdk/file-lock` | Допоміжні засоби для реентерабельного блокування файлів |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби для кешу дедуплікації на диску |
| `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/session і reply-dispatch |
| `plugin-sdk/acp-binding-resolve-runtime` | Визначення прив’язок ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації agent runtime |
| `plugin-sdk/boolean-param` | Зчитувач параметрів boolean із м’яким приведенням |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби для визначення збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби для bootstrap пристрою і токенів pair |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів для passive-channel, статусу й ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби для команди `/models` і відповіді provider |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби для переліку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби для реєстру/build/serialize native команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness agent: типи harness, допоміжні засоби steer/abort активного запуску, допоміжні засоби мосту tool OpenClaw, допоміжні засоби політики tool для плану runtime, класифікація результатів terminal, допоміжні засоби для форматування/деталізації прогресу tool і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби для виявлення кінцевих точок Z.AI |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/Markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляху сховища сесій, ключа сесії, updated-at і мутації сховища |
| `plugin-sdk/cron-store-runtime` | Допоміжні засоби шляху/завантаження/збереження сховища Cron |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів каталогів стану/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби маршруту/ключа сесії/binding облікового запису, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумку стану каналу/облікового запису, значень стану runtime за замовчуванням і метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби визначення цілі |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL із входів на кшталт fetch/request |
| `plugin-sdk/run-command` | Виконавець команд із тайм-лімітом і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені читачі параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload з об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягування канонічних полів цілі надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби logger підсистеми та редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown і перетворення |
| `plugin-sdk/model-session-runtime` | Допоміжні засоби перевизначення моделі/сесії, такі як `applyModelOverrideToSessionEntry` і `resolveAgentMaxConcurrent` |
| `plugin-sdk/talk-config-runtime` | Допоміжні засоби визначення конфігурації talk-провайдера |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису стану JSON |
| `plugin-sdk/file-lock` | Повторно вхідні допоміжні засоби file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу dedupe з дисковою підтримкою |
| `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/сесії ACP і dispatch відповідей |
| `plugin-sdk/acp-binding-resolve-runtime` | Визначення binding ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime агента |
| `plugin-sdk/boolean-param` | Читач параметрів логічних значень із м’яким приведенням |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів pairing |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповідей команди `/models`/провайдера |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби виведення списку команд skill |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації нативних команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, допоміжні засоби bridge tool OpenClaw, допоміжні засоби політики tool плану runtime, класифікація результатів terminal, допоміжні засоби форматування/деталізації прогресу tool і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `plugin-sdk/async-lock-runtime` | Допоміжний засіб process-local async lock для невеликих файлів стану runtime |
| `plugin-sdk/channel-activity-runtime` | Допоміжний засіб телеметрії активності Channel |
| `plugin-sdk/concurrency-runtime` | Допоміжний засіб для обмеженої конкурентності async-завдань |
| `plugin-sdk/dedupe-runtime` | Допоміжні засоби для кешу дедуплікації в пам’яті |
| `plugin-sdk/delivery-queue-runtime` | Допоміжний засіб для очищення черги очікуваної outbound-доставки |
| `plugin-sdk/file-access-runtime` | Допоміжні засоби для безпечних шляхів локальних файлів і джерел медіа |
| `plugin-sdk/heartbeat-runtime` | Допоміжні засоби для подій і видимості Heartbeat |
| `plugin-sdk/channel-activity-runtime` | Допоміжний засіб телеметрії активності каналу |
| `plugin-sdk/concurrency-runtime` | Допоміжний засіб обмеженої конкурентності async-задач |
| `plugin-sdk/dedupe-runtime` | Допоміжні засоби кешу dedupe в пам’яті |
| `plugin-sdk/delivery-queue-runtime` | Допоміжний засіб спорожнення черги очікуваної вихідної доставки |
| `plugin-sdk/file-access-runtime` | Допоміжні засоби безпечних шляхів до локальних файлів і джерел медіа |
| `plugin-sdk/heartbeat-runtime` | Допоміжні засоби подій і видимості Heartbeat |
| `plugin-sdk/number-runtime` | Допоміжний засіб числового приведення |
| `plugin-sdk/secure-random-runtime` | Допоміжні засоби для безпечних токенів/UUID |
| `plugin-sdk/system-event-runtime` | Допоміжні засоби для черги system event |
| `plugin-sdk/transport-ready-runtime` | Допоміжний засіб очікування готовності transport |
| `plugin-sdk/infra-runtime` | Застарілий shim сумісності; використовуйте наведені вище вузькоспрямовані підшляхи runtime |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби для обмеженого кешу |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби для діагностичних прапорців, подій і trace-context |
| `plugin-sdk/error-runtime` | Допоміжні засоби для графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби для обгорнутого fetch, proxy і pinned lookup |
| `plugin-sdk/runtime-fetch` | Runtime fetch з урахуванням dispatcher без імпортів proxy/guarded-fetch |
| `plugin-sdk/response-limit-runtime` | Зчитувач тіла відповіді з обмеженням без широкої поверхні media runtime |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без маршрутизації configured binding або сховищ pairing |
| `plugin-sdk/secure-random-runtime` | Допоміжні засоби безпечних токенів/UUID |
| `plugin-sdk/system-event-runtime` | Допоміжні засоби черги системних подій |
| `plugin-sdk/transport-ready-runtime` | Допоміжний засіб очікування готовності транспорту |
| `plugin-sdk/infra-runtime` | Застарілий shim сумісності; використовуйте наведені вище сфокусовані підшляхи runtime |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби діагностичних прапорців, подій і trace-context |
| `plugin-sdk/error-runtime` | Допоміжні засоби графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби обгорнутого fetch, proxy і pinned lookup |
| `plugin-sdk/runtime-fetch` | runtime fetch з урахуванням dispatcher без імпортів proxy/guarded-fetch |
| `plugin-sdk/response-limit-runtime` | Читач обмеженого тіла відповіді без широкої поверхні media runtime |
| `plugin-sdk/session-binding-runtime` | Поточний стан binding розмови без маршрутизації налаштованого binding або сховищ pairing |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби session-store без широких імпортів запису/обслуговування конфігурації |
| `plugin-sdk/context-visibility-runtime` | Визначення видимості контексту і фільтрація додаткового контексту без широких імпортів config/security |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби для приведення й нормалізації primitive record/string без імпортів markdown/logging |
| `plugin-sdk/host-runtime` | Допоміжні засоби для нормалізації hostname і SCP host |
| `plugin-sdk/retry-runtime` | Допоміжні засоби для конфігурації retry і виконавця retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби для каталогу/ідентичності/робочого простору agent |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація каталогів на основі конфігурації |
| `plugin-sdk/context-visibility-runtime` | Визначення видимості контексту й фільтрація додаткового контексту без широких імпортів config/security |
| `plugin-sdk/string-coerce-runtime` | Вузькі допоміжні засоби приведення та нормалізації примітивних записів/рядків без імпортів markdown/logging |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і хостів SCP |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і виконавця retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/усунення дублікатів каталогів із підтримкою конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Subpath | Ключові експорти |
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби для fetch/transform/store медіа, а також конструктори payload медіа |
| `plugin-sdk/media-store` | Вузькі допоміжні засоби сховища медіа, наприклад `saveMediaBuffer` |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби для failover генерації медіа, вибору кандидатів і повідомлень про відсутні моделі |
| `plugin-sdk/media-understanding` | Типи provider для розуміння медіа, а також експорти допоміжних засобів для зображень/аудіо, орієнтованих на provider |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби для text/markdown/logging, наприклад видалення тексту, видимого для assistant, допоміжні засоби для рендерингу/chunking/таблиць markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжний засіб для chunking вихідного тексту |
| `plugin-sdk/speech` | Типи provider мовлення, а також експорти допоміжних засобів директив, реєстру, валідації, конструктора TTS, сумісного з OpenAI, і мовлення, орієнтованих на provider |
| `plugin-sdk/speech-core` | Спільні типи provider мовлення, а також експорти допоміжних засобів реєстру, директив, нормалізації та мовлення |
| `plugin-sdk/realtime-transcription` | Типи provider для транскрибування в реальному часі, допоміжні засоби реєстру та спільний допоміжний засіб сесії WebSocket |
| `plugin-sdk/realtime-voice` | Типи provider голосу в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи provider генерації зображень, а також допоміжні засоби для image asset/data URL |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні засоби failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи provider/request/result генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошуку provider і розбору model-ref |
| `plugin-sdk/video-generation` | Типи provider/request/result генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошуку provider і розбору model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру цілей Webhook і встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні засоби для нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби для завантаження віддалених/локальних медіа |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники media payload |
| `plugin-sdk/media-store` | Вузькі допоміжні засоби сховища медіа, такі як `saveMediaBuffer` |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибору кандидатів і повідомлень про відсутню модель |
| `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа, а також експорти допоміжних засобів для зображень/аудіо, орієнтованих на провайдерів |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби text/markdown/logging, такі як вилучення видимого асистенту тексту, допоміжні засоби рендерингу/chunking/таблиць Markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжний засіб 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 |
| `plugin-sdk/image-generation-core` | Спільні допоміжні засоби типів, failover, auth і реєстру генерації зображень |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні допоміжні засоби типів, failover, пошуку провайдера та розбору model-ref для генерації музики |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні допоміжні засоби типів, failover, пошуку провайдера та розбору model-ref для генерації відео |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру цілей Webhook і встановлення маршрутів |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для споживачів Plugin SDK |
| `plugin-sdk/testing` | Широкий barrel сумісності для застарілих тестів Plugin. Нові тести розширень мають імпортувати натомість вузькоспрямовані підшляхи SDK, наприклад `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/channel-test-helpers` | Допоміжні засоби тестування, орієнтовані на Channel, для загальних контрактів actions/setup/status, перевірок каталогів, життєвого циклу запуску облікових записів, потоків send-config, моків runtime, проблем статусу, вихідної доставки та реєстрації hooks |
| `plugin-sdk/channel-target-testing` | Спільний набір перевірок випадків помилок під час визначення цілей для тестів Channel |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів для пакетів Plugin, реєстрації, публічних артефактів, прямого імпорту, runtime API та побічних ефектів імпорту |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів для runtime, auth, discovery, onboard, catalog, wizard, web-search/fetch і stream provider |
| `plugin-sdk/test-fixtures` | Загальні фікстури для захоплення runtime CLI, контексту sandbox, записувача Skills, agent-message, system-event, terminal-text, chunking, auth-token і typed-case |
| `plugin-sdk/testing` | Широкий сумісний barrel для застарілих тестів плагінів. Нові тести розширень мають натомість імпортувати сфокусовані підшляхи SDK, такі як `plugin-sdk/plugin-test-runtime`, `plugin-sdk/channel-test-helpers`, `plugin-sdk/test-env` або `plugin-sdk/test-fixtures` |
| `plugin-sdk/plugin-test-api` | Мінімальний допоміжний засіб `createTestPluginApi` для модульних тестів прямої реєстрації плагінів без імпорту bridge допоміжних засобів тестування репозиторію |
| `plugin-sdk/channel-test-helpers` | Допоміжні засоби тестування, орієнтовані на канали, для загальних контрактів дій/налаштування/стану, перевірок каталогів, життєвого циклу запуску облікового запису, thread-ing конфігурації надсилання, моків runtime, проблем стану, вихідної доставки та реєстрації hook |
| `plugin-sdk/channel-target-testing` | Спільний набір перевірок випадків помилок визначення цілі для тестів каналів |
| `plugin-sdk/plugin-test-contracts` | Допоміжні засоби контрактів пакета плагіна, реєстрації, публічного артефакту, прямого імпорту, runtime API та побічних ефектів імпорту |
| `plugin-sdk/provider-test-contracts` | Допоміжні засоби контрактів runtime провайдера, auth, discovery, onboard, каталогу, майстра, мультимедійних можливостей, web-search/fetch і stream |
| `plugin-sdk/provider-http-test-mocks` | Опціональні моки HTTP/auth для Vitest для тестів провайдера, які використовують `plugin-sdk/provider-http` |
| `plugin-sdk/test-fixtures` | Загальні фікстури захоплення runtime CLI, контексту sandbox, writer для Skills, повідомлень агента, системних подій, тексту термінала, chunking, auth-token і типізованих випадків |
</Accordion>
<Accordion title="Підшляхи пам’яті">
| Subpath | Ключові експорти |
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI helpers |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embeddings хоста пам’яті, доступ до реєстру, локальний provider і загальні допоміжні засоби для batch/remote |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста пам’яті, доступ до реєстру, локальний провайдер і загальні batch/remote helper-и |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Мультимодальні допоміжні засоби хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби стану хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби runtime CLI хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби базового runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Нейтральний до вендора псевдонім для допоміжних засобів базового runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Нейтральний до вендора псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Нейтральний до вендора псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого markdown для Plugin, суміжних із пам’яттю |
| `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-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний до вендора псевдонім для допоміжних засобів статусу хоста пам’яті |
| `plugin-sdk/memory-host-status` | Нейтральний до постачальника псевдонім для допоміжних засобів стану хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb |
</Accordion>
<Accordion title="Зарезервовані підшляхи bundled-helper">
| Family | Поточні підшляхи | Призначення |
| Сімейство | Поточні підшляхи | Призначення |
| --- | --- | --- |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки bundled browser Plugin. `browser-profiles` експортує `resolveBrowserConfig`, `resolveProfile`, `ResolvedBrowserConfig`, `ResolvedBrowserProfile` і `ResolvedBrowserTabCleanupConfig` для нормалізованої форми `browser.tabCleanup`. `browser-support` залишається barrel сумісності. |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки bundled browser plugin. `browser-profiles` експортує `resolveBrowserConfig`, `resolveProfile`, `ResolvedBrowserConfig`, `ResolvedBrowserProfile` і `ResolvedBrowserTabCleanupConfig` для нормалізованої форми `browser.tabCleanup`. `browser-support` залишається barrel сумісності. |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Поверхня допоміжних засобів/runtime bundled Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня допоміжних засобів/runtime bundled LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня допоміжних засобів bundled IRC |
| Допоміжні засоби, специфічні для Channel | `plugin-sdk/googlechat`, `plugin-sdk/googlechat-runtime-shared`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu`, `plugin-sdk/feishu-conversation`, `plugin-sdk/feishu-setup`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/telegram-command-ui`, `plugin-sdk/tlon`, `plugin-sdk/twitch`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` | Застарілі seams сумісності/допоміжних засобів bundled Channel. Нові Plugin мають імпортувати загальні підшляхи SDK або локальні barrel Plugin. |
| Допоміжні засоби, специфічні для auth/Plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diagnostics-prometheus`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/memory-core`, `plugin-sdk/memory-lancedb`, `plugin-sdk/opencode`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Seams допоміжних засобів bundled-функцій/Plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
| Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/googlechat-runtime-shared`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu`, `plugin-sdk/feishu-conversation`, `plugin-sdk/feishu-setup`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/telegram-command-ui`, `plugin-sdk/tlon`, `plugin-sdk/twitch`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` | Застарілі seams сумісності/допоміжних засобів bundled channel. Нові плагіни мають імпортувати загальні підшляхи SDK або локальні barrel-и плагіна. |
| Допоміжні засоби, специфічні для auth/плагінів | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diagnostics-prometheus`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/memory-core`, `plugin-sdk/memory-lancedb`, `plugin-sdk/opencode`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Допоміжні seams bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
## Пов’язане
## Пов’язані матеріали
- [Огляд Plugin SDK](/uk/plugins/sdk-overview)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)
- [Створення Plugin](/uk/plugins/building-plugins)
- [Створення плагінів](/uk/plugins/building-plugins)

View File

@ -1,49 +1,52 @@
---
read_when:
- Ви пишете тести для плагіна
- Вам потрібні утиліти тестування з SDK плагіна
- Ви хочете зрозуміти контрактні тести для bundled плагінів
- Ви пишете тести для Plugin
- Вам потрібні утиліти тестування з SDK Plugin
- Ви хочете зрозуміти контрактні тести для вбудованих плагінів
sidebarTitle: Testing
summary: Утиліти та шаблони тестування для плагінів OpenClaw
title: Тестування Plugin
x-i18n:
generated_at: "2026-04-28T01:19:19Z"
generated_at: "2026-04-28T02:07:58Z"
model: gpt-5.4
provider: openai
source_hash: dcc9f0340a651ab742150101ceb78b65ea450b90720bc06e96bb19535db3d83d
source_hash: 264c652d0a857a4e5b570d177011b04318757d30c5169bbcf432c038e6b8b7d5
source_path: plugins/sdk-testing.md
workflow: 15
---
Довідник з утиліт тестування, шаблонів і примусового застосування lint для плагінів OpenClaw.
Довідник з утиліт тестування, шаблонів і lint-контролю для плагінів OpenClaw.
<Tip>
**Шукаєте приклади тестів?** Посібники how-to містять готові приклади тестів:
**Шукаєте приклади тестів?** Практичні посібники містять готові приклади тестів:
[Тести плагінів каналів](/uk/plugins/sdk-channel-plugins#step-6-test) і
[Тести плагінів провайдерів](/uk/plugins/sdk-provider-plugins#step-6-test).
</Tip>
## Утиліти тестування
**Імпорт мока API плагіна:** `openclaw/plugin-sdk/plugin-test-api`
**Імпорт мока API Plugin:** `openclaw/plugin-sdk/plugin-test-api`
**Імпорт контракту каналу:** `openclaw/plugin-sdk/channel-contract-testing`
**Імпорт контрактів каналів:** `openclaw/plugin-sdk/channel-contract-testing`
**Імпорт допоміжних засобів тестування каналу:** `openclaw/plugin-sdk/channel-test-helpers`
**Імпорт допоміжних засобів тестування каналів:** `openclaw/plugin-sdk/channel-test-helpers`
**Імпорт тестування цілей каналу:** `openclaw/plugin-sdk/channel-target-testing`
**Імпорт контракту плагіна:** `openclaw/plugin-sdk/plugin-test-contracts`
**Імпорт контрактів Plugin:** `openclaw/plugin-sdk/plugin-test-contracts`
**Імпорт тестування runtime плагіна:** `openclaw/plugin-sdk/plugin-test-runtime`
**Імпорт тестування середовища виконання Plugin:** `openclaw/plugin-sdk/plugin-test-runtime`
**Імпорт контракту провайдера:** `openclaw/plugin-sdk/provider-test-contracts`
**Імпорт контрактів провайдерів:** `openclaw/plugin-sdk/provider-test-contracts`
**Імпорт HTTP-моків провайдерів:** `openclaw/plugin-sdk/provider-http-test-mocks`
**Імпорт тестування середовища/мережі:** `openclaw/plugin-sdk/test-env`
**Імпорт загальних фікстур:** `openclaw/plugin-sdk/test-fixtures`
Для нових тестів плагінів надавайте перевагу наведеним нижче цільовим підшляхам. Широкий barrel `openclaw/plugin-sdk/testing` призначений лише для сумісності зі застарілим кодом.
Для нових тестів плагінів віддавайте перевагу наведеним нижче спеціалізованим підшляхам. Широкий
barrel `openclaw/plugin-sdk/testing` підтримується лише для сумісності зі застарілим кодом.
```typescript
import {
@ -57,71 +60,77 @@ import { createStartAccountContext } from "openclaw/plugin-sdk/channel-test-help
import { describePluginRegistrationContract } from "openclaw/plugin-sdk/plugin-test-contracts";
import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime";
import { describeOpenAIProviderRuntimeContract } from "openclaw/plugin-sdk/provider-test-contracts";
import { getProviderHttpMocks } from "openclaw/plugin-sdk/provider-http-test-mocks";
import { withEnv, withFetchPreconnect } from "openclaw/plugin-sdk/test-env";
import { createCliRuntimeCapture, typedCases } from "openclaw/plugin-sdk/test-fixtures";
```
### Доступні експортовані елементи
### Доступні експорти
| Export | Призначення |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `createTestPluginApi` | Створює мінімальний мок API плагіна для прямих unit-тестів реєстрації. Імпортуйте з `plugin-sdk/plugin-test-api` |
| `expectChannelInboundContextContract` | Перевіряє форму вхідного контексту каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` |
| `installChannelOutboundPayloadContractSuite` | Встановлює набір випадків контракту вихідного payload каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` |
| `createStartAccountContext` | Створює контексти життєвого циклу облікового запису каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelActionsContractSuite` | Встановлює загальний набір випадків контракту дій повідомлень каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelSetupContractSuite` | Встановлює загальний набір випадків контракту налаштування каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelStatusContractSuite` | Встановлює загальний набір випадків контракту статусу каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `expectDirectoryIds` | Перевіряє id каталогів із функції списку каталогів. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `describePluginRegistrationContract` | Встановлює перевірки контракту реєстрації плагіна. Імпортуйте з `plugin-sdk/plugin-test-contracts` |
| `registerSingleProviderPlugin` | Реєструє один плагін провайдера у smoke-тестах завантажувача. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `registerProviderPlugin` | Захоплює всі типи провайдерів з одного плагіна. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `registerProviderPlugins` | Захоплює реєстрації провайдерів у кількох плагінах. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `requireRegisteredProvider` | Перевіряє, що колекція провайдерів містить id. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `createRuntimeEnv` | Створює змокане середовище runtime CLI/плагіна. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `createPluginSetupWizardStatus` | Створює допоміжні засоби статусу майстра налаштування для плагінів каналів. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `describeOpenAIProviderRuntimeContract` | Встановлює перевірки контракту runtime для сімейства провайдерів. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `installCommonResolveTargetErrorCases` | Спільні тестові випадки для обробки помилок розв’язання цілі. Імпортуйте з `plugin-sdk/channel-target-testing` |
| `shouldAckReaction` | Перевіряє, чи має канал додати реакцію-підтвердження. Імпортуйте з `plugin-sdk/channel-feedback` |
| `removeAckReactionAfterReply` | Видаляє реакцію-підтвердження після доставки відповіді. Імпортуйте з `plugin-sdk/channel-feedback` |
| `createTestRegistry` | Створює фікстуру реєстру плагінів каналу. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` |
| `createTestPluginApi` | Створює мінімальний мок API Plugin для прямих модульних тестів реєстрації. Імпортуйте з `plugin-sdk/plugin-test-api` |
| `expectChannelInboundContextContract` | Перевіряє форму вхідного контексту каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` |
| `installChannelOutboundPayloadContractSuite` | Підключає набір контрактних тестів для вихідного payload каналу. Імпортуйте з `plugin-sdk/channel-contract-testing` |
| `createStartAccountContext` | Створює контексти життєвого циклу облікового запису каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelActionsContractSuite` | Підключає загальний набір контрактних тестів для дій із повідомленнями каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelSetupContractSuite` | Підключає загальний набір контрактних тестів для налаштування каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `installChannelStatusContractSuite` | Підключає загальний набір контрактних тестів для статусу каналу. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `expectDirectoryIds` | Перевіряє id директорій із функції списку директорій. Імпортуйте з `plugin-sdk/channel-test-helpers` |
| `describePluginRegistrationContract` | Підключає перевірки контракту реєстрації Plugin. Імпортуйте з `plugin-sdk/plugin-test-contracts` |
| `registerSingleProviderPlugin` | Реєструє один Plugin провайдера в smoke-тестах завантажувача. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `registerProviderPlugin` | Захоплює всі типи провайдерів з одного Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `registerProviderPlugins` | Захоплює реєстрації провайдерів у кількох Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `requireRegisteredProvider` | Перевіряє, що колекція провайдерів містить id. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `createRuntimeEnv` | Створює змокане середовище виконання CLI/Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `createPluginSetupWizardStatus` | Створює допоміжні засоби статусу налаштування для плагінів каналів. Імпортуйте з `plugin-sdk/plugin-test-runtime` |
| `describeOpenAIProviderRuntimeContract` | Підключає перевірки контракту середовища виконання для сімейства провайдерів. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `expectExplicitVideoGenerationCapabilities` | Перевіряє, що відеопровайдери явно оголошують можливості режиму генерації. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `expectExplicitMusicGenerationCapabilities` | Перевіряє, що музичні провайдери явно оголошують можливості генерації/редагування. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `mockSuccessfulDashscopeVideoTask` | Підключає успішну відповідь для відеозавдання, сумісного з DashScope. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `getProviderHttpMocks` | Надає доступ до опційних Vitest-моків HTTP/auth провайдерів. Імпортуйте з `plugin-sdk/provider-http-test-mocks` |
| `installProviderHttpMockCleanup` | Скидає HTTP/auth-моки провайдерів після кожного тесту. Імпортуйте з `plugin-sdk/provider-http-test-mocks` |
| `installCommonResolveTargetErrorCases` | Спільні тестові сценарії для обробки помилок розв’язання цілей. Імпортуйте з `plugin-sdk/channel-target-testing` |
| `shouldAckReaction` | Перевіряє, чи повинен канал додати ack-реакцію. Імпортуйте з `plugin-sdk/channel-feedback` |
| `removeAckReactionAfterReply` | Видаляє ack-реакцію після доставки відповіді. Імпортуйте з `plugin-sdk/channel-feedback` |
| `createTestRegistry` | Створює фікстуру реєстру плагінів каналів. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` |
| `createEmptyPluginRegistry` | Створює порожню фікстуру реєстру плагінів. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` |
| `setActivePluginRegistry` | Встановлює фікстуру реєстру для тестів runtime плагіна. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` |
| `createRequestCaptureJsonFetch` | Захоплює JSON-запити fetch у тестах допоміжних медіа-функцій. Імпортуйте з `plugin-sdk/test-env` |
| `withFetchPreconnect` | Виконує тести fetch з установленими хуками preconnect. Імпортуйте з `plugin-sdk/test-env` |
| `withEnv` / `withEnvAsync` | Тимчасово підміняє змінні середовища. Імпортуйте з `plugin-sdk/test-env` |
| `createTempHomeEnv` / `withTempDir` | Створює ізольовані фікстури файлової системи для тестів. Імпортуйте з `plugin-sdk/test-env` |
| `createMockServerResponse` | Створює мінімальний мок відповіді HTTP-сервера. Імпортуйте з `plugin-sdk/test-env` |
| `createCliRuntimeCapture` | Захоплює вивід runtime CLI у тестах. Імпортуйте з `plugin-sdk/test-fixtures` |
| `createSandboxTestContext` | Створює контексти тестування sandbox. Імпортуйте з `plugin-sdk/test-fixtures` |
| `writeSkill` | Записує фікстури Skills. Імпортуйте з `plugin-sdk/test-fixtures` |
| `makeAgentAssistantMessage` | Створює фікстури повідомлень транскрипту агента. Імпортуйте з `plugin-sdk/test-fixtures` |
| `peekSystemEvents` / `resetSystemEventsForTest` | Переглядає та скидає фікстури системних подій. Імпортуйте з `plugin-sdk/test-fixtures` |
| `sanitizeTerminalText` | Очищає вивід термінала для перевірок. Імпортуйте з `plugin-sdk/test-fixtures` |
| `countLines` / `hasBalancedFences` | Перевіряє форму chunking-виводу. Імпортуйте з `plugin-sdk/test-fixtures` |
| `runProviderCatalog` | Виконує хук каталогу провайдерів із тестовими залежностями |
| `resolveProviderWizardOptions` | Розв’язує варіанти майстра налаштування провайдера у контрактних тестах |
| `resolveProviderModelPickerEntries` | Розв’язує елементи вибору моделей провайдера у контрактних тестах |
| `buildProviderPluginMethodChoice` | Створює id варіантів майстра провайдера для перевірок |
| `setProviderWizardProvidersResolverForTest` | Впроваджує провайдери майстра для ізольованих тестів |
| `createProviderUsageFetch` | Створює фікстури fetch використання провайдера |
| `useFrozenTime` / `useRealTime` | Заморожує та відновлює таймери для чутливих до часу тестів. Імпортуйте з `plugin-sdk/test-env` |
| `createTestWizardPrompter` | Створює змоканий prompter майстра налаштування |
| `createRuntimeTaskFlow` | Створює ізольований стан runtime TaskFlow |
| `typedCases` | Зберігає літеральні типи для таблично-орієнтованих тестів. Імпортуйте з `plugin-sdk/test-fixtures` |
| `setActivePluginRegistry` | Встановлює фікстуру реєстру для тестів середовища виконання Plugin. Імпортуйте з `plugin-sdk/plugin-test-runtime` або `plugin-sdk/channel-test-helpers` |
| `createRequestCaptureJsonFetch` | Захоплює JSON fetch-запити в тестах допоміжних медіафункцій. Імпортуйте з `plugin-sdk/test-env` |
| `withFetchPreconnect` | Запускає fetch-тести з установленими preconnect-хуками. Імпортуйте з `plugin-sdk/test-env` |
| `withEnv` / `withEnvAsync` | Тимчасово змінює змінні середовища. Імпортуйте з `plugin-sdk/test-env` |
| `createTempHomeEnv` / `withTempDir` | Створює ізольовані файлові фікстури для тестів. Імпортуйте з `plugin-sdk/test-env` |
| `createMockServerResponse` | Створює мінімальний мок відповіді HTTP-сервера. Імпортуйте з `plugin-sdk/test-env` |
| `createCliRuntimeCapture` | Захоплює вивід середовища виконання CLI у тестах. Імпортуйте з `plugin-sdk/test-fixtures` |
| `createSandboxTestContext` | Створює тестові контексти sandbox. Імпортуйте з `plugin-sdk/test-fixtures` |
| `writeSkill` | Записує фікстури Skills. Імпортуйте з `plugin-sdk/test-fixtures` |
| `makeAgentAssistantMessage` | Створює фікстури повідомлень стенограми агента. Імпортуйте з `plugin-sdk/test-fixtures` |
| `peekSystemEvents` / `resetSystemEventsForTest` | Переглядає та скидає фікстури системних подій. Імпортуйте з `plugin-sdk/test-fixtures` |
| `sanitizeTerminalText` | Очищає вивід термінала для перевірок. Імпортуйте з `plugin-sdk/test-fixtures` |
| `countLines` / `hasBalancedFences` | Перевіряє форму chunking-виводу. Імпортуйте з `plugin-sdk/test-fixtures` |
| `runProviderCatalog` | Виконує хук каталогу провайдерів із тестовими залежностями |
| `resolveProviderWizardOptions` | Розв’язує варіанти майстра налаштування провайдера в контрактних тестах |
| `resolveProviderModelPickerEntries` | Розв’язує елементи вибору моделей провайдера в контрактних тестах |
| `buildProviderPluginMethodChoice` | Створює id варіантів майстра провайдера для перевірок |
| `setProviderWizardProvidersResolverForTest` | Впроваджує провайдерів майстра для ізольованих тестів |
| `createProviderUsageFetch` | Створює фікстури fetch для використання провайдера |
| `useFrozenTime` / `useRealTime` | Заморожує та відновлює таймери для тестів, чутливих до часу. Імпортуйте з `plugin-sdk/test-env` |
| `createTestWizardPrompter` | Створює змоканий prompter майстра налаштування |
| `createRuntimeTaskFlow` | Створює ізольований стан runtime TaskFlow |
| `typedCases` | Зберігає літеральні типи для таблично-орієнтованих тестів. Імпортуйте з `plugin-sdk/test-fixtures` |
Набори контрактних тестів bundled-плагінів також використовують підшляхи SDK тестування для допоміжних засобів фікстур реєстру, маніфесту, публічних артефактів і runtime, призначених лише для тестів. Набори тільки для core, які залежать від bundled-інвентарю OpenClaw, залишаються в `src/plugins/contracts`.
Для нових тестів extension використовуйте документований цільовий підшлях SDK, наприклад
Набори контрактних тестів для вбудованих плагінів також використовують підшляхи SDK для тестування для допоміжних засобів тестових фікстур реєстру, маніфесту, публічних артефактів і runtime. Набори лише для core, які залежать від вбудованого інвентаря OpenClaw, залишаються в `src/plugins/contracts`.
Нові тести розширень тримайте на документованому спеціалізованому підшляху SDK, наприклад
`plugin-sdk/plugin-test-api`, `plugin-sdk/channel-contract-testing`,
`plugin-sdk/channel-test-helpers`, `plugin-sdk/plugin-test-contracts`,
`plugin-sdk/plugin-test-runtime`, `plugin-sdk/provider-test-contracts`,
`plugin-sdk/test-env` або `plugin-sdk/test-fixtures`, замість імпорту з
широкого сумісного barrel `plugin-sdk/testing`, файлів репозиторію `src/**` або
напряму з проміжних модулів репозиторію `test/helpers/plugins/*`.
`plugin-sdk/provider-http-test-mocks`, `plugin-sdk/test-env` або
`plugin-sdk/test-fixtures`, замість імпортування широкого суміснісного barrel `plugin-sdk/testing`,
файлів репозиторію `src/**` або напряму мостів репозиторію `test/helpers/plugins/*`.
### Типи
Цільові підшляхи тестування також повторно експортують типи, корисні у файлах тестів:
Спеціалізовані підшляхи тестування також повторно експортують типи, корисні у тестових файлах:
```typescript
import type {
@ -132,25 +141,26 @@ import type { OpenClawConfig } from "openclaw/plugin-sdk/config-types";
import type { MockFn, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/plugin-test-runtime";
```
## Тестування розв’язання цілі
## Тестування розв’язання цілей
Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні випадки помилок для розв’язання цілі каналу:
Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні сценарії помилок для
розв’язання цілей каналу:
```typescript
import { describe } from "vitest";
import { installCommonResolveTargetErrorCases } from "openclaw/plugin-sdk/channel-target-testing";
describe("розв’язання цілі my-channel", () => {
describe("my-channel target resolution", () => {
installCommonResolveTargetErrorCases({
resolveTarget: ({ to, mode, allowFrom }) => {
// Логіка розв’язання цілі вашого каналу
// Your channel's target resolution logic
return myChannelResolveTarget({ to, mode, allowFrom });
},
implicitAllowFrom: ["user1", "user2"],
});
// Додайте специфічні для каналу тестові випадки
it("має розв’язувати цілі @username", () => {
// Add channel-specific test cases
it("should resolve @username targets", () => {
// ...
});
});
@ -160,25 +170,32 @@ describe("розв’язання цілі my-channel", () => {
### Тестування контрактів реєстрації
Unit-тести, які передають вручну написаний мок `api` до `register(api)`, не перевіряють acceptance gates завантажувача OpenClaw. Додайте принаймні один smoke-тест із використанням завантажувача для кожної поверхні реєстрації, від якої залежить ваш плагін, особливо для hooks і ексклюзивних можливостей, таких як memory.
Модульні тести, які передають вручну написаний мок `api` до `register(api)`, не перевіряють
ворота прийняття завантажувача OpenClaw. Додайте принаймні один smoke-тест на основі завантажувача
для кожної поверхні реєстрації, від якої залежить ваш Plugin, особливо для хуків і
ексклюзивних можливостей, таких як пам’ять.
Справжній завантажувач відхиляє реєстрацію плагіна, якщо відсутні обов’язкові метадані або якщо плагін викликає API можливості, якою він не володіє. Наприклад,
`api.registerHook(...)` вимагає назву hook, а
`api.registerMemoryCapability(...)` вимагає, щоб маніфест плагіна або експортована точка входу оголошували `kind: "memory"`.
Справжній завантажувач відхиляє реєстрацію Plugin, якщо бракує потрібних метаданих або якщо
Plugin викликає API можливості, якою він не володіє. Наприклад,
`api.registerHook(...)` вимагає назву хука, а
`api.registerMemoryCapability(...)` вимагає, щоб маніфест Plugin або експортований запис
оголошував `kind: "memory"`.
### Тестування доступу до конфігурації runtime
### Тестування доступу до runtime-конфігурації
Для тестування bundled-плагінів каналів віддавайте перевагу спільному моку runtime плагіна з `openclaw/plugin-sdk/channel-test-helpers`.
Його застарілі моки `runtime.config.loadConfig()` і
`runtime.config.writeConfigFile(...)` за замовчуванням викидають помилки, щоб тести виявляли нове використання API сумісності. Перевизначайте ці моки лише тоді, коли тест явно покриває застарілу поведінку сумісності.
Віддавайте перевагу спільному моку runtime Plugin з `openclaw/plugin-sdk/channel-test-helpers`
під час тестування вбудованих плагінів каналів. Його застарілі моки `runtime.config.loadConfig()` і
`runtime.config.writeConfigFile(...)` за замовчуванням викидають помилку, щоб тести виявляли нове
використання API сумісності. Перевизначайте ці моки лише тоді, коли тест
явно покриває застарілу поведінку сумісності.
### Unit-тестування плагіна каналу
### Модульне тестування плагіна каналу
```typescript
import { describe, it, expect, vi } from "vitest";
describe("плагін my-channel", () => {
it("має розв’язувати обліковий запис із конфігурації", () => {
describe("my-channel plugin", () => {
it("should resolve account from config", () => {
const cfg = {
channels: {
"my-channel": {
@ -192,7 +209,7 @@ describe("плагін my-channel", () => {
expect(account.token).toBe("test-token");
});
it("має перевіряти обліковий запис без materializing секретів", () => {
it("should inspect account without materializing secrets", () => {
const cfg = {
channels: {
"my-channel": { token: "test-token" },
@ -202,22 +219,22 @@ describe("плагін my-channel", () => {
const inspection = myPlugin.setup.inspectAccount(cfg, undefined);
expect(inspection.configured).toBe(true);
expect(inspection.tokenStatus).toBe("available");
// Значення токена не розкривається
// No token value exposed
expect(inspection).not.toHaveProperty("token");
});
});
```
### Unit-тестування плагіна провайдера
### Модульне тестування плагіна провайдера
```typescript
import { describe, it, expect } from "vitest";
describe("плагін my-provider", () => {
it("має розв’язувати динамічні моделі", () => {
describe("my-provider plugin", () => {
it("should resolve dynamic models", () => {
const model = myProvider.resolveDynamicModel({
modelId: "custom-model-v2",
// ... контекст
// ... context
});
expect(model.id).toBe("custom-model-v2");
@ -225,10 +242,10 @@ describe("плагін my-provider", () => {
expect(model.api).toBe("openai-completions");
});
it("має повертати каталог, коли ключ API доступний", async () => {
it("should return catalog when API key is available", async () => {
const result = await myProvider.catalog.run({
resolveProviderApiKey: () => ({ apiKey: "test-key" }),
// ... контекст
// ... context
});
expect(result?.provider?.models).toHaveLength(2);
@ -236,9 +253,9 @@ describe("плагін my-provider", () => {
});
```
### Мокування runtime плагіна
### Мокування runtime Plugin
Для коду, що використовує `createPluginRuntimeStore`, замокуйте runtime у тестах:
Для коду, який використовує `createPluginRuntimeStore`, мокуйте runtime у тестах:
```typescript
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
@ -249,42 +266,42 @@ const store = createPluginRuntimeStore<PluginRuntime>({
errorMessage: "test runtime not set",
});
// У налаштуванні тесту
// In test setup
const mockRuntime = {
agent: {
resolveAgentDir: vi.fn().mockReturnValue("/tmp/agent"),
// ... інші моки
// ... other mocks
},
config: {
current: vi.fn(() => ({}) as const),
mutateConfigFile: vi.fn(),
replaceConfigFile: vi.fn(),
},
// ... інші простори імен
// ... other namespaces
} as unknown as PluginRuntime;
store.setRuntime(mockRuntime);
// Після тестів
// After tests
store.clearRuntime();
```
### Тестування з per-instance stubs
### Тестування з per-instance stub
Віддавайте перевагу per-instance stubs замість мутації prototype:
Віддавайте перевагу per-instance stub замість мутації прототипу:
```typescript
// Бажано: per-instance stub
// Preferred: per-instance stub
const client = new MyChannelClient();
client.sendMessage = vi.fn().mockResolvedValue({ id: "msg-1" });
// Уникайте: мутації prototype
// Avoid: prototype mutation
// MyChannelClient.prototype.sendMessage = vi.fn();
```
## Контрактні тести (плагіни в репозиторії)
Bundled-плагіни мають контрактні тести, які перевіряють право власності на реєстрацію:
Вбудовані плагіни мають контрактні тести, які перевіряють належність реєстрації:
```bash
pnpm test -- src/plugins/contracts/
@ -295,9 +312,9 @@ pnpm test -- src/plugins/contracts/
- Які плагіни реєструють які провайдери
- Які плагіни реєструють які мовленнєві провайдери
- Коректність форми реєстрації
- Відповідність контракту runtime
- Відповідність runtime-контракту
### Запуск тестів з обмеженою областю
### Запуск scoped-тестів
Для конкретного плагіна:
@ -313,31 +330,32 @@ pnpm test -- src/plugins/contracts/auth.contract.test.ts
pnpm test -- src/plugins/contracts/runtime.contract.test.ts
```
## Примусове застосування lint (плагіни в репозиторії)
## Lint-контроль (плагіни в репозиторії)
`pnpm check` примусово застосовує три правила для плагінів у репозиторії:
Три правила перевіряються через `pnpm check` для плагінів у репозиторії:
1. **Без монолітних імпортів із кореня** -- кореневий barrel `openclaw/plugin-sdk` відхиляється
2. **Без прямих імпортів із `src/`** -- плагіни не можуть напряму імпортувати `../../src/`
2. **Без прямих імпортів `src/`** -- плагіни не можуть напряму імпортувати `../../src/`
3. **Без самоімпортів** -- плагіни не можуть імпортувати власний підшлях `plugin-sdk/<name>`
Зовнішні плагіни не підпадають під дію цих правил lint, але дотримуватися тих самих шаблонів рекомендується.
Зовнішні плагіни не підпадають під ці lint-правила, але дотримуватися тих самих
шаблонів рекомендується.
## Конфігурація тестування
OpenClaw використовує Vitest із порогами покриття V8. Для тестів плагінів:
```bash
# Запустити всі тести
# Run all tests
pnpm test
# Запустити тести конкретного плагіна
# Run specific plugin tests
pnpm test -- <bundled-plugin-root>/my-channel/src/channel.test.ts
# Запустити з фільтром за конкретною назвою тесту
# Run with a specific test name filter
pnpm test -- <bundled-plugin-root>/my-channel/ -t "resolves account"
# Запустити з coverage
# Run with coverage
pnpm test:coverage
```
@ -350,6 +368,6 @@ OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
## Пов’язане
- [Огляд SDK](/uk/plugins/sdk-overview) -- правила імпорту
- [Плагіни каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс плагіна каналу
- [Плагіни провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- hooks плагіна провайдера
- [Плагіни каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс плагінів каналів
- [Плагіни провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- хуки плагінів провайдерів
- [Створення плагінів](/uk/plugins/building-plugins) -- посібник для початку роботи