chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-02 05:29:40 +00:00
parent 282609ae29
commit 2f6bdac791
3 changed files with 811 additions and 641 deletions

View File

@ -1,33 +1,34 @@
---
read_when:
- Ви хочете знайти контакти, групи або ідентифікатори self для каналу
- Ви розробляєте адаптер каталогу каналу
summary: Довідник CLI для `openclaw directory` (self, peers, groups)
- Ви хочете знайти ідентифікатори контактів/груп/власного облікового запису для каналу
- Ви розробляєте адаптер каталогу каналів
summary: Довідник CLI для `openclaw directory` (себе, однорангових учасників, груп)
title: Каталог
x-i18n:
generated_at: "2026-04-24T04:12:06Z"
model: gpt-5.4
generated_at: "2026-05-02T05:25:24Z"
model: gpt-5.5
provider: openai
source_hash: f63ed92469738501ae1f8f08aec3edf01d1f0f46008571ed38ccd9c77e5ba15e
source_hash: dcd0be284c0ec1aa347084d84f7001f1e2f47977ec5198025ba303297858aaab
source_path: cli/directory.md
workflow: 15
workflow: 16
---
# `openclaw directory`
Пошук у каталозі для каналів, які це підтримують (контакти/peers, групи та “me”).
Пошук у каталозі для каналів, які це підтримують (контакти/співрозмовники, групи та «me»).
## Загальні прапорці
## Спільні прапорці
- `--channel <name>`: id/псевдонім каналу (обов’язково, якщо налаштовано кілька каналів; автоматично, якщо налаштовано лише один)
- `--account <id>`: id облікового запису (типово: типовий для каналу)
- `--json`: вивід JSON
- `--channel <name>`: ідентифікатор/псевдонім каналу (обов’язково, коли налаштовано кілька каналів; автоматично, коли налаштовано лише один)
- `--account <id>`: ідентифікатор облікового запису (типово: стандартний для каналу)
- `--json`: вивести JSON
## Примітки
- `directory` призначено для того, щоб допомогти вам знайти ID, які можна вставити в інші команди (особливо `openclaw message send --target ...`).
- Для багатьох каналів результати беруться з конфігурації (allowlist / налаштовані групи), а не з живого каталогу провайдера.
- Типовий вивід — це `id` (а іноді й `name`), розділені табуляцією; для сценаріїв використовуйте `--json`.
- `directory` призначено, щоб допомогти вам знайти ідентифікатори, які можна вставити в інші команди (особливо `openclaw message send --target ...`).
- Для багатьох каналів результати базуються на конфігурації (списки дозволених / налаштовані групи), а не на живому каталозі провайдера.
- Установлені Plugin каналів усе ще можуть не підтримувати каталог; у такому разі команда повідомляє про непідтримувану операцію каталогу замість перевстановлення Plugin.
- Типовий вивід — це `id` (а іноді `name`), розділені табуляцією; використовуйте `--json` для сценаріїв.
## Використання результатів із `message send`
@ -36,24 +37,24 @@ openclaw directory peers list --channel slack --query "U0"
openclaw message send --channel slack --target user:U012ABCDEF --message "hello"
```
## Формати ID (за каналами)
## Формати ідентифікаторів (за каналом)
- WhatsApp: `+15551234567` (DM), `1234567890-1234567890@g.us` (група)
- Telegram: `@username` або числовий id чату; групи — це числові id
- Telegram: `@username` або числовий ідентифікатор чату; групи мають числові ідентифікатори
- Slack: `user:U…` і `channel:C…`
- Discord: `user:<id>` і `channel:<id>`
- Matrix (Plugin): `user:@user:server`, `room:!roomId:server` або `#alias:server`
- Microsoft Teams (Plugin): `user:<id>` і `conversation:<id>`
- Zalo (Plugin): id користувача (Bot API)
- Zalo Personal / `zalouser` (Plugin): id потоку (DM/група) з `zca` (`me`, `friend list`, `group list`)
- Zalo (Plugin): ідентифікатор користувача (Bot API)
- Zalo Personal / `zalouser` (Plugin): ідентифікатор потоку (DM/група) з `zca` (`me`, `friend list`, `group list`)
## Self ("me")
## Себе ("me")
```bash
openclaw directory self --channel zalouser
```
## Peers (контакти/користувачі)
## Співрозмовники (контакти/користувачі)
```bash
openclaw directory peers list --channel zalouser

View File

@ -1,65 +1,65 @@
---
read_when:
- Ви хочете створити новий Plugin OpenClaw
- Вам потрібен короткий посібник для швидкого старту з розробки Plugin
- Ви додаєте новий канал, провайдера, інструмент або іншу можливість в OpenClaw
- Ви хочете створити новий Plugin для OpenClaw
- Вам потрібен короткий посібник із розробки Plugin
- Ви додаєте до OpenClaw новий канал, провайдера, інструмент або іншу можливість
sidebarTitle: Getting Started
summary: Створіть свій перший Plugin OpenClaw за лічені хвилини
summary: Створіть свій перший Plugin для OpenClaw за кілька хвилин
title: Створення плагінів
x-i18n:
generated_at: "2026-05-02T01:11:04Z"
generated_at: "2026-05-02T05:25:37Z"
model: gpt-5.5
provider: openai
source_hash: e05c82cd810ed400a293cf0c336efeb6e5a6e081b144eb89150407754a98bc19
source_hash: 2cf85c1c1c1f6ae6752f7fb8d842a420bffac6ebaf4d64803fb8bb8ab9f6f83c
source_path: plugins/building-plugins.md
workflow: 16
---
Plugins розширюють OpenClaw новими можливостями: канали, постачальники моделей,
мовлення, транскрипція в реальному часі, голос у реальному часі, розуміння
медіа, генерація зображень, генерація відео, web fetch, web search, інструменти агента або будь-яка
комбінація.
Плагіни розширюють OpenClaw новими можливостями: каналами, провайдерами моделей,
мовленням, транскрипцією в реальному часі, голосом у реальному часі, розумінням медіа, генерацією зображень,
генерацією відео, вебзавантаженням, вебпошуком, інструментами агента або будь-якою
комбінацією.
Вам не потрібно додавати свій plugin до репозиторію OpenClaw. Опублікуйте в
[ClawHub](/uk/tools/clawhub), і користувачі встановлять його через
`openclaw plugins install <package-name>`. OpenClaw спочатку пробує ClawHub і
автоматично повертається до npm для пакетів, які все ще використовують дистрибуцію npm.
Вам не потрібно додавати свій плагін до репозиторію OpenClaw. Опублікуйте його в
[ClawHub](/uk/tools/clawhub), і користувачі встановлять його за допомогою
`openclaw plugins install <package-name>`. OpenClaw спершу пробує ClawHub і
автоматично повертається до npm для пакетів, які все ще використовують розповсюдження через npm.
## Передумови
- Node >= 22 і менеджер пакетів (npm або pnpm)
- Знайомство з TypeScript (ESM)
- Для plugins у репозиторії: репозиторій клоновано й виконано `pnpm install`. Розробка plugin із
checkout вихідного коду підтримує лише pnpm, бо OpenClaw завантажує bundled
plugins з пакетів workspace `extensions/*`.
- Для плагінів у репозиторії: репозиторій клоновано й виконано `pnpm install`. Розробка плагінів
із checkout вихідного коду підтримує лише pnpm, оскільки OpenClaw завантажує вбудовані
плагіни з workspace-пакетів `extensions/*`.
## Який тип plugin?
## Який тип плагіна?
<CardGroup cols={3}>
<Card title="Channel plugin" icon="messages-square" href="/uk/plugins/sdk-channel-plugins">
<Card title="Плагін каналу" icon="messages-square" href="/uk/plugins/sdk-channel-plugins">
Підключіть OpenClaw до платформи обміну повідомленнями (Discord, IRC тощо)
</Card>
<Card title="Provider plugin" icon="cpu" href="/uk/plugins/sdk-provider-plugins">
Додайте постачальника моделей (LLM, proxy або власний endpoint)
<Card title="Плагін провайдера" icon="cpu" href="/uk/plugins/sdk-provider-plugins">
Додайте провайдера моделей (LLM, проксі або власний endpoint)
</Card>
<Card title="Tool / hook plugin" icon="wrench" href="/uk/plugins/hooks">
<Card title="Плагін інструмента / hook" icon="wrench" href="/uk/plugins/hooks">
Зареєструйте інструменти агента, event hooks або сервіси — продовжуйте нижче
</Card>
</CardGroup>
Для channel plugin, який не гарантовано буде встановлено під час onboarding/setup,
Для плагіна каналу, який не гарантовано буде встановлено під час запуску onboarding/setup,
використовуйте `createOptionalChannelSetupSurface(...)` з
`openclaw/plugin-sdk/channel-setup`. Він створює пару setup adapter + wizard,
яка повідомляє про вимогу встановлення й завершується закрито під час реальних записів конфігурації,
доки plugin не буде встановлено.
яка повідомляє про вимогу встановлення й завершується без змін під час реальних записів конфігурації,
доки плагін не встановлено.
## Швидкий старт: tool plugin
## Швидкий старт: плагін інструмента
Цей посібник створює мінімальний plugin, який реєструє інструмент агента. Для channel
і provider plugins є окремі посібники за посиланнями вище.
Цей walkthrough створює мінімальний плагін, який реєструє інструмент агента. Для плагінів каналів
і провайдерів є окремі посібники, посилання на які наведено вище.
<Steps>
<Step title="Create the package and manifest">
<Step title="Створіть пакет і manifest">
<CodeGroup>
```json package.json
{
@ -85,6 +85,9 @@ Plugins розширюють OpenClaw новими можливостями: к
"id": "my-plugin",
"name": "My Plugin",
"description": "Adds a custom tool to OpenClaw",
"contracts": {
"tools": ["my_tool"]
},
"activation": {
"onStartup": true
},
@ -96,15 +99,16 @@ Plugins розширюють OpenClaw новими можливостями: к
```
</CodeGroup>
Кожному plugin потрібен manifest, навіть без конфігурації, і кожен plugin має
свідомо оголошувати `activation.onStartup`. Інструментам, зареєстрованим під час runtime,
потрібен імпорт під час startup, тому в цьому прикладі встановлено `true`. Див.
[Manifest](/uk/plugins/manifest) для повної схеми. Канонічні фрагменти публікації ClawHub
Кожному плагіну потрібен manifest, навіть без конфігурації. Інструменти, зареєстровані під час виконання,
мають бути перелічені в `contracts.tools`, щоб OpenClaw міг визначити відповідальний
плагін без завантаження runtime кожного плагіна. Плагіни також мають свідомо оголошувати
`activation.onStartup`. У цьому прикладі встановлено значення `true`. Див.
[Manifest](/uk/plugins/manifest) для повної схеми. Канонічні snippets публікації ClawHub
містяться в `docs/snippets/plugin-publish/`.
</Step>
<Step title="Write the entry point">
<Step title="Напишіть entry point">
```typescript
// index.ts
@ -128,15 +132,15 @@ Plugins розширюють OpenClaw новими можливостями: к
});
```
`definePluginEntry` призначений для plugins, що не є channel plugins. Для channels використовуйте
`defineChannelPluginEntry` — див. [Channel Plugins](/uk/plugins/sdk-channel-plugins).
`definePluginEntry` призначений для плагінів, що не є каналами. Для каналів використовуйте
`defineChannelPluginEntry` — див. [Плагіни каналів](/uk/plugins/sdk-channel-plugins).
Повні параметри entry point див. у [Entry Points](/uk/plugins/sdk-entrypoints).
</Step>
<Step title="Test and publish">
<Step title="Протестуйте й опублікуйте">
**Зовнішні plugins:** перевірте й опублікуйте через ClawHub, потім встановіть:
**Зовнішні плагіни:** перевірте та опублікуйте через ClawHub, потім встановіть:
```bash
clawhub package publish your-org/your-plugin --dry-run
@ -144,11 +148,11 @@ Plugins розширюють OpenClaw новими можливостями: к
openclaw plugins install clawhub:@myorg/openclaw-my-plugin
```
OpenClaw також перевіряє ClawHub перед npm для bare package specs на кшталт
OpenClaw також перевіряє ClawHub перед npm для простих специфікацій пакетів, як-от
`@myorg/openclaw-my-plugin`; npm залишається fallback для пакетів, які ще
не мігрували до ClawHub.
**Plugins у репозиторії:** розмістіть під bundled plugin workspace tree — буде виявлено автоматично.
**Плагіни в репозиторії:** розмістіть у дереві workspace вбудованих плагінів — їх буде автоматично виявлено.
```bash
pnpm test -- <bundled-plugin-root>/my-plugin/
@ -157,70 +161,70 @@ Plugins розширюють OpenClaw новими можливостями: к
</Step>
</Steps>
## Можливості Plugin
## Можливості плагіна
Один plugin може зареєструвати будь-яку кількість можливостей через об'єкт `api`:
Один плагін може зареєструвати будь-яку кількість можливостей через обєкт `api`:
| Можливість | Метод реєстрації | Докладний посібник |
| Можливість | Метод реєстрації | Детальний посібник |
| ---------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------- |
| Text inference (LLM) | `api.registerProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins) |
| CLI inference backend | `api.registerCliBackend(...)` | [CLI Backends](/uk/gateway/cli-backends) |
| Channel / messaging | `api.registerChannel(...)` | [Channel Plugins](/uk/plugins/sdk-channel-plugins) |
| Speech (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Транскрипція в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web fetch | `api.registerWebFetchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web search | `api.registerWebSearchProvider(...)` | [Provider Plugins](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Middleware результатів інструментів | `api.registerAgentToolResultMiddleware(...)` | [SDK Overview](/uk/plugins/sdk-overview#registration-api) |
| Інструменти агента | `api.registerTool(...)` | Нижче |
| Власні команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Plugin hooks | `api.on(...)` | [Plugin hooks](/uk/plugins/hooks) |
| Internal event hooks | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| HTTP routes | `api.registerHttpRoute(...)` | [Internals](/uk/plugins/architecture-internals#gateway-http-routes) |
| CLI subcommands | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Текстовий inference (LLM) | `api.registerProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins) |
| Backend inference для CLI | `api.registerCliBackend(...)` | [Backends CLI](/uk/gateway/cli-backends) |
| Канал / повідомлення | `api.registerChannel(...)` | [Плагіни каналів](/uk/plugins/sdk-channel-plugins) |
| Мовлення (TTS/STT) | `api.registerSpeechProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Транскрипція в реальному часі | `api.registerRealtimeTranscriptionProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Голос у реальному часі | `api.registerRealtimeVoiceProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Розуміння медіа | `api.registerMediaUnderstandingProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація зображень | `api.registerImageGenerationProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація музики | `api.registerMusicGenerationProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Генерація відео | `api.registerVideoGenerationProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Вебзавантаження | `api.registerWebFetchProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Вебпошук | `api.registerWebSearchProvider(...)` | [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Middleware результатів інструментів | `api.registerAgentToolResultMiddleware(...)` | [Огляд SDK](/uk/plugins/sdk-overview#registration-api) |
| Інструменти агента | `api.registerTool(...)` | Нижче |
| Власні команди | `api.registerCommand(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| Hooks плагіна | `api.on(...)` | [Hooks плагіна](/uk/plugins/hooks) |
| Внутрішні event hooks | `api.registerHook(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
| HTTP-маршрути | `api.registerHttpRoute(...)` | [Внутрішня архітектура](/uk/plugins/architecture-internals#gateway-http-routes) |
| Підкоманди CLI | `api.registerCli(...)` | [Entry Points](/uk/plugins/sdk-entrypoints) |
Повний registration API див. у [SDK Overview](/uk/plugins/sdk-overview#registration-api).
Повний API реєстрації див. в [Огляді SDK](/uk/plugins/sdk-overview#registration-api).
Bundled plugins можуть використовувати `api.registerAgentToolResultMiddleware(...)`, коли їм
потрібне асинхронне переписування результату інструмента до того, як модель побачить вивід. Оголосіть
Вбудовані плагіни можуть використовувати `api.registerAgentToolResultMiddleware(...)`, коли їм
потрібне асинхронне переписування результату інструмента до того, як модель побачить output. Оголошуйте
цільові runtimes у `contracts.agentToolResultMiddleware`, наприклад
`["pi", "codex"]`. Це довірений seam для bundled-plugin; зовнішнім
plugins варто надавати перевагу звичайним OpenClaw plugin hooks, доки OpenClaw не отримає
явну trust policy для цієї можливості.
`["pi", "codex"]`. Це довірений seam для вбудованих плагінів; зовнішнім
плагінам варто надавати перевагу звичайним hooks плагінів OpenClaw, доки OpenClaw не матиме
явної політики довіри для цієї можливості.
Якщо ваш plugin реєструє власні gateway RPC methods, тримайте їх на
префіксі, специфічному для plugin. Core admin namespaces (`config.*`,
Якщо ваш плагін реєструє власні RPC-методи Gateway, тримайте їх у
префіксі, специфічному для плагіна. Простори імен core admin (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) залишаються зарезервованими й завжди resolve до
`operator.admin`, навіть якщо plugin просить вужчий scope.
`operator.admin`, навіть якщо плагін просить вужчий scope.
Семантика hook guard, яку варто пам'ятати:
Семантика guard для hooks, яку варто пам’ятати:
- `before_tool_call`: `{ block: true }` є terminal і зупиняє handlers з нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` обробляється як відсутність рішення.
- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента й запитує підтвердження користувача через exec approval overlay, кнопки Telegram, взаємодії Discord або команду `/approve` у будь-якому channel.
- `before_install`: `{ block: true }` є terminal і зупиняє handlers з нижчим пріоритетом.
- `before_install`: `{ block: false }` обробляється як відсутність рішення.
- `message_sending`: `{ cancel: true }` є terminal і зупиняє handlers з нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` обробляється як відсутність рішення.
- `message_received`: надавайте перевагу типізованому полю `threadId`, коли потрібна inbound thread/topic routing. Залишайте `metadata` для channel-specific extras.
- `message_sending`: надавайте перевагу типізованим routing fields `replyToId` / `threadId` замість channel-specific metadata keys.
- `before_tool_call`: `{ block: true }` є terminal і зупиняє handlers із нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` розглядається як відсутність рішення.
- `before_tool_call`: `{ requireApproval: true }` призупиняє виконання агента й запитує в користувача схвалення через exec approval overlay, кнопки Telegram, Discord interactions або команду `/approve` на будь-якому каналі.
- `before_install`: `{ block: true }` є terminal і зупиняє handlers із нижчим пріоритетом.
- `before_install`: `{ block: false }` розглядається як відсутність рішення.
- `message_sending`: `{ cancel: true }` є terminal і зупиняє handlers із нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` розглядається як відсутність рішення.
- `message_received`: надавайте перевагу типізованому полю `threadId`, коли потрібна маршрутизація вхідних thread/topic. Залишайте `metadata` для додаткових даних, специфічних для каналу.
- `message_sending`: надавайте перевагу типізованим полям маршрутизації `replyToId` / `threadId` замість ключів metadata, специфічних для каналу.
Команда `/approve` обробляє як exec, так і plugin approvals з обмеженим fallback: коли exec approval id не знайдено, OpenClaw повторює той самий id через plugin approvals. Пересилання plugin approval можна налаштувати незалежно через `approvals.plugin` у config.
Команда `/approve` обробляє як exec approvals, так і approvals плагінів із bounded fallback: коли id exec approval не знайдено, OpenClaw повторює той самий id через approvals плагінів. Forwarding approvals плагінів можна налаштовувати незалежно через `approvals.plugin` у конфігурації.
Якщо власна approval plumbing має виявити той самий випадок bounded fallback,
Якщо власний approval plumbing має виявляти той самий bounded fallback-випадок,
надавайте перевагу `isApprovalNotFoundError` з `openclaw/plugin-sdk/error-runtime`
замість ручного зіставлення рядків про expiry approval.
Приклади й довідник hooks див. у [Plugin hooks](/uk/plugins/hooks).
Приклади й довідник hooks див. у [Hooks плагіна](/uk/plugins/hooks).
## Реєстрація інструментів агента
Tools — це типізовані функції, які може викликати LLM. Вони можуть бути required (завжди
доступні) або optional (opt-in користувача):
Інструменти — це типізовані функції, які може викликати LLM. Вони можуть бути обов’язковими (завжди
доступними) або опціональними (користувач вмикає їх сам):
```typescript
register(api) {
@ -249,7 +253,18 @@ register(api) {
}
```
Користувачі вмикають optional tools у config:
Кожен інструмент, зареєстрований через `api.registerTool(...)`, також має бути оголошений у
manifest плагіна:
```json
{
"contracts": {
"tools": ["my_tool", "workflow_tool"]
}
}
```
Користувачі вмикають опціональні інструменти в конфігурації:
```json5
{
@ -257,16 +272,16 @@ register(api) {
}
```
- Імена tools не мають конфліктувати з core tools (конфлікти пропускаються)
- Tools з некоректними registration objects, зокрема без `parameters`, пропускаються й повідомляються в plugin diagnostics замість того, щоб ламати agent runs
- Використовуйте `optional: true` для tools із побічними ефектами або додатковими binary requirements
- Користувачі можуть увімкнути всі tools з plugin, додавши plugin id до `tools.allow`
- Назви інструментів не повинні конфліктувати з основними інструментами (конфліктні пропускаються)
- Інструменти з некоректно сформованими об’єктами реєстрації, зокрема без `parameters`, пропускаються й повідомляються в діагностиці plugin замість того, щоб ламати запуски агента
- Використовуйте `optional: true` для інструментів із побічними ефектами або додатковими вимогами до бінарних файлів
- Користувачі можуть увімкнути всі інструменти з plugin, додавши ідентифікатор plugin до `tools.allow`
## Реєстрація CLI commands
## Реєстрація команд CLI
Plugins можуть додавати кореневі групи команд `openclaw` через `api.registerCli`. Надайте
`descriptors` для кожного top-level command root, щоб OpenClaw міг показувати й route
команду без eager loading кожного plugin runtime.
Plugins можуть додавати кореневі групи команд `openclaw` за допомогою `api.registerCli`. Надавайте
`descriptors` для кожного кореня команди верхнього рівня, щоб OpenClaw міг показувати й маршрутизувати
команду без завчасного завантаження кожного середовища виконання plugin.
```typescript
register(api) {
@ -296,7 +311,7 @@ register(api) {
}
```
Після встановлення перевірте реєстрацію runtime і виконайте команду:
Після встановлення перевірте реєстрацію середовища виконання та виконайте команду:
```bash
openclaw plugins inspect demo-plugin --runtime --json
@ -317,56 +332,56 @@ import { ... } from "openclaw/plugin-sdk";
Повний довідник підшляхів див. у [Огляді SDK](/uk/plugins/sdk-overview).
У межах вашого plugin використовуйте локальні barrel-файли (`api.ts`, `runtime-api.ts`) для
Усередині свого plugin використовуйте локальні barrel-файли (`api.ts`, `runtime-api.ts`) для
внутрішніх імпортів — ніколи не імпортуйте власний plugin через його шлях SDK.
Для provider plugins тримайте допоміжні засоби, специфічні для постачальника, у цих package-root
barrels, якщо seam не є справді універсальним. Поточні вбудовані приклади:
Для provider plugins тримайте специфічні для провайдера допоміжні засоби в цих barrel-файлах кореня пакета,
якщо межа не є справді узагальненою. Поточні вбудовані приклади:
- Anthropic: обгортки потоків Claude і допоміжні засоби `service_tier` / beta
- OpenAI: конструктори постачальників, допоміжні засоби моделей за замовчуванням, постачальники realtime
- OpenRouter: конструктор постачальника плюс допоміжні засоби onboarding/config
- Anthropic: обгортки потоків Claude та допоміжні засоби `service_tier` / beta
- OpenAI: конструктори провайдера, допоміжні засоби моделей за замовчуванням, realtime-провайдери
- OpenRouter: конструктор провайдера та допоміжні засоби onboarding/конфігурації
Якщо допоміжний засіб корисний лише всередині одного вбудованого пакета постачальника, залиште його на цьому
package-root seam замість просування до `openclaw/plugin-sdk/*`.
Якщо допоміжний засіб корисний лише всередині одного вбудованого пакета провайдера, залишайте його на цій
межі кореня пакета замість просування в `openclaw/plugin-sdk/*`.
Деякі згенеровані допоміжні seams `openclaw/plugin-sdk/<bundled-id>` усе ще існують для
супроводу bundled-plugin, коли для них відстежується використання власником. Розглядайте їх як
зарезервовані поверхні, а не як типовий шаблон для нових third-party plugins.
Деякі згенеровані допоміжні межі `openclaw/plugin-sdk/<bundled-id>` досі існують для
супроводу вбудованих plugin, коли для них відстежується використання власником. Вважайте їх
зарезервованими поверхнями, а не типовим шаблоном для нових сторонніх plugins.
## Контрольний список перед поданням
<Check>**package.json** має правильні метадані `openclaw`</Check>
<Check>Маніфест **openclaw.plugin.json** присутній і валідний</Check>
<Check>**package.json** має коректні метадані `openclaw`</Check>
<Check>Маніфест **openclaw.plugin.json** наявний і валідний</Check>
<Check>Точка входу використовує `defineChannelPluginEntry` або `definePluginEntry`</Check>
<Check>Усі імпорти використовують сфокусовані шляхи `plugin-sdk/<subpath>`</Check>
<Check>Внутрішні імпорти використовують локальні модулі, а не self-imports SDK</Check>
<Check>Внутрішні імпорти використовують локальні модулі, а не самоімпорти SDK</Check>
<Check>Тести проходять (`pnpm test -- <bundled-plugin-root>/my-plugin/`)</Check>
<Check>`pnpm check` проходить (для in-repo plugins)</Check>
<Check>`pnpm check` проходить (для plugins у репозиторії)</Check>
## Тестування beta-релізу
1. Стежте за тегами релізів GitHub на [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Beta-теги мають вигляд `v2026.3.N-beta.1`. Також можна ввімкнути сповіщення для офіційного акаунта OpenClaw в X [@openclaw](https://x.com/openclaw), щоб отримувати оголошення про релізи.
2. Протестуйте свій plugin із beta-тегом щойно він з'явиться. Вікно до stable зазвичай триває лише кілька годин.
3. Після тестування напишіть у гілці свого plugin у каналі Discord `plugin-forum`: або `all good`, або що саме зламалося. Якщо у вас ще немає гілки, створіть її.
4. Якщо щось зламалося, відкрийте або оновіть issue із заголовком `Beta blocker: <plugin-name> - <summary>` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у свою гілку.
5. Відкрийте PR до `main` із заголовком `fix(<plugin-id>): beta blocker - <summary>` і додайте посилання на issue як у PR, так і у своїй гілці Discord. Contributors не можуть ставити мітки на PR, тому заголовок є сигналом з боку PR для maintainers і automation. Blockers із PR буде змерджено; blockers без PR можуть усе одно потрапити в реліз. Maintainers стежать за цими гілками під час beta-тестування.
6. Мовчання означає зелений статус. Якщо ви пропустите це вікно, ваше виправлення, ймовірно, потрапить у наступний цикл.
1. Стежте за тегами релізів GitHub у [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) і підпишіться через `Watch` > `Releases`. Beta-теги мають вигляд `v2026.3.N-beta.1`. Також можна ввімкнути сповіщення для офіційного X-акаунта OpenClaw [@openclaw](https://x.com/openclaw), щоб отримувати оголошення про релізи.
2. Тестуйте свій plugin з beta-тегом щойно він з’явиться. Вікно до stable зазвичай становить лише кілька годин.
3. Після тестування напишіть у гілці свого plugin у каналі Discord `plugin-forum` або `all good`, або що саме зламалося. Якщо гілки ще немає, створіть її.
4. Якщо щось зламалося, відкрийте або оновіть issue з назвою `Beta blocker: <plugin-name> - <summary>` і застосуйте мітку `beta-blocker`. Додайте посилання на issue у свою гілку.
5. Відкрийте PR до `main` з назвою `fix(<plugin-id>): beta blocker - <summary>` і додайте посилання на issue і в PR, і у свою гілку Discord. Contributors не можуть ставити мітки на PR, тому назва є сигналом на боці PR для maintainers та автоматизації. Блокери з PR зливаються; блокери без PR можуть усе одно потрапити в реліз. Maintainers стежать за цими гілками під час beta-тестування.
6. Мовчання означає зелений статус. Якщо ви пропустите це вікно, ваше виправлення, імовірно, потрапить у наступний цикл.
## Наступні кроки
<CardGroup cols={2}>
<Card title="Channel Plugins" icon="messages-square" href="/uk/plugins/sdk-channel-plugins">
Створіть plugin каналу обміну повідомленнями
Створити plugin каналу повідомлень
</Card>
<Card title="Provider Plugins" icon="cpu" href="/uk/plugins/sdk-provider-plugins">
Створіть plugin постачальника моделей
Створити plugin провайдера моделей
</Card>
<Card title="Огляд SDK" icon="book-open" href="/uk/plugins/sdk-overview">
Карта імпортів і довідник API реєстрації
Мапа імпортів і довідник API реєстрації
</Card>
<Card title="Допоміжні засоби runtime" icon="settings" href="/uk/plugins/sdk-runtime">
TTS, пошук, subagent через api.runtime
<Card title="Допоміжні засоби середовища виконання" icon="settings" href="/uk/plugins/sdk-runtime">
TTS, пошук, субагент через api.runtime
</Card>
<Card title="Тестування" icon="test-tubes" href="/uk/plugins/sdk-testing">
Тестові утиліти й шаблони
@ -376,10 +391,10 @@ package-root seam замість просування до `openclaw/plugin-sdk/
</Card>
</CardGroup>
## Пов'язане
## Повязане
- [Архітектура Plugin](/uk/plugins/architecture) — глибокий огляд внутрішньої архітектури
- [Архітектура Plugin](/uk/plugins/architecture) — докладний огляд внутрішньої архітектури
- [Огляд SDK](/uk/plugins/sdk-overview) — довідник Plugin SDK
- [Маніфест](/uk/plugins/manifest) — формат маніфесту plugin
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення channel plugins
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення provider plugins
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — створення plugins каналів
- [Provider Plugins](/uk/plugins/sdk-provider-plugins) — створення plugins провайдерів

File diff suppressed because it is too large Load Diff