chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-28 00:06:28 +00:00
parent a3547f44b0
commit 31ff26e05d
8 changed files with 1880 additions and 1387 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,38 +1,39 @@
---
read_when:
- Ви хочете зрозуміти, як працює пам’ять
- Ви хочете знати, які файли пам’яті потрібно записувати
- Ви хочете знати, які файли пам’яті слід записувати
summary: Як OpenClaw запам’ятовує речі між сеансами
title: Огляд пам’яті
x-i18n:
generated_at: "2026-04-27T06:24:32Z"
generated_at: "2026-04-28T00:03:40Z"
model: gpt-5.4
provider: openai
source_hash: 8855ca049761b339438b6f6434ae94a6f2c9babeb007bd84929e490ede897ca4
source_hash: 31e5e76dfb53fa66fcfab1450cb56b5d9f8ed350391d6aecaf3a7e982567f0a2
source_path: concepts/memory.md
workflow: 15
---
OpenClaw запам’ятовує речі, записуючи **звичайні Markdown-файли** в робочому
просторі вашого агента. Модель "запам’ятовує" лише те, що збережено на диск —
OpenClaw запам’ятовує речі, записуючи **звичайні файли Markdown** у робочому
просторі вашого агента. Модель лише «пам’ятає» те, що було збережено на диск —
жодного прихованого стану немає.
## Як це працює
Ваш агент має три файли, пов’язані з пам’яттю:
Ваш агент має три пов’язані з пам’яттю файли:
- **`MEMORY.md`** — довготривала пам’ять. Стійкі факти, уподобання та
рішення. Завантажується на початку кожного сеансу DM.
- **`memory/YYYY-MM-DD.md`** — щоденні нотатки. Поточний контекст і спостереження.
Нотатки за сьогодні й учора завантажуються автоматично.
- **`DREAMS.md`** (необов’язково) — Dream Diary і підсумки проходів
Dreaming для перегляду людиною, включно з обґрунтованими записами історичного дозаповнення.
Нотатки за сьогодні та вчора завантажуються автоматично.
- **`DREAMS.md`** (необов’язково) — щоденник Dreaming і
підсумки проходів Dreaming для перегляду людиною, включно з обґрунтованими записами
історичного доопрацювання.
Ці файли зберігаються в робочому просторі агента (типово `~/.openclaw/workspace`).
Ці файли розміщуються в робочому просторі агента (типово `~/.openclaw/workspace`).
<Tip>
Якщо ви хочете, щоб ваш агент щось запам’ятав, просто попросіть його: "Запам’ятай, що я
надаю перевагу TypeScript." Він запише це у відповідний файл.
Якщо ви хочете, щоб ваш агент щось запам’ятав, просто попросіть його: «Запам’ятай, що я
віддаю перевагу TypeScript». Він запише це у відповідний файл.
</Tip>
## Інструменти пам’яті
@ -43,113 +44,117 @@ OpenClaw запам’ятовує речі, записуючи **звичайн
формулювання відрізняється від оригінального.
- **`memory_get`** — читає конкретний файл пам’яті або діапазон рядків.
Обидва інструменти надаються активним plugin пам’яті (типово: `memory-core`).
Обидва інструменти надаються активним Plugin пам’яті (типово: `memory-core`).
## Додатковий Plugin Memory Wiki
## Супровідний Plugin Memory Wiki
Якщо ви хочете, щоб довготривала пам’ять поводилася більше як підтримувана база знань, а не
просто як сирі нотатки, використовуйте вбудований plugin `memory-wiki`.
Якщо ви хочете, щоб стійка пам’ять працювала більше як підтримувана база знань, а не
просто сирі нотатки, використовуйте вбудований Plugin `memory-wiki`.
`memory-wiki` компілює довготривалі знання у wiki vault з:
`memory-wiki` компілює стійкі знання у wiki-сховище з:
- детермінованою структурою сторінок
- структурованими твердженнями й доказами
- структурованими твердженнями та доказами
- відстеженням суперечностей і актуальності
- згенерованими панелями
- скомпільованими дайджестами для агентів/споживачів середовища виконання
- скомпільованими дайджестами для споживачів агента/середовища виконання
- wiki-native інструментами, такими як `wiki_search`, `wiki_get`, `wiki_apply` і `wiki_lint`
Він не замінює активний plugin пам’яті. Активний plugin пам’яті, як і раніше,
відповідає за пригадування, просування й Dreaming. `memory-wiki` додає поруч
із ним шар знань, багатий на походження.
Він не замінює активний Plugin пам’яті. Активний Plugin пам’яті, як і раніше,
відповідає за згадування, підвищення важливості та Dreaming. `memory-wiki` додає
поруч із ним шар знань, насичений походженням даних.
Див. [Memory Wiki](/uk/plugins/memory-wiki).
## Пошук у пам’яті
Коли налаштовано провайдера ембедингів, `memory_search` використовує **гібридний
пошук** — поєднуючи векторну схожість (семантичний зміст) із пошуком за ключовими словами
Коли налаштовано постачальника embedding, `memory_search` використовує **гібридний
пошук** — поєднуючи векторну схожість (семантичне значення) з пошуком за ключовими словами
(точні терміни, як-от ID та символи коду). Це працює одразу після того, як у вас є
API-ключ будь-якого підтримуваного провайдера.
API-ключ для будь-якого підтримуваного постачальника.
<Info>
OpenClaw автоматично визначає вашого провайдера ембедингів за доступними API-ключами. Якщо у
вас налаштовано ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам’яті
OpenClaw автоматично визначає вашого постачальника embedding за доступними API-ключами. Якщо у вас
налаштовано ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам’яті
вмикається автоматично.
</Info>
Докладніше про те, як працює пошук, параметри налаштування та налаштування провайдерів див.
у [Пошук у пам’яті](/uk/concepts/memory-search).
Докладніше про те, як працює пошук, параметри налаштування та налаштування постачальників див. у
[Memory Search](/uk/concepts/memory-search).
## Бекенди пам’яті
<CardGroup cols={3}>
<Card title="Вбудований (типово)" icon="database" href="/uk/concepts/memory-builtin">
На базі SQLite. Працює одразу з пошуком за ключовими словами, векторною схожістю та
На основі SQLite. Працює одразу з пошуком за ключовими словами, векторною схожістю та
гібридним пошуком. Жодних додаткових залежностей.
</Card>
<Card title="QMD" icon="search" href="/uk/concepts/memory-qmd">
Локальний sidecar з пріоритетом локальної роботи, із reranking, query expansion і можливістю індексувати
каталоги поза робочим простором.
Local-first sidecar із повторним ранжуванням, розширенням запитів і можливістю індексувати
каталоги поза межами робочого простору.
</Card>
<Card title="Honcho" icon="brain" href="/uk/concepts/memory-honcho">
AI-native міжсеансова пам’ять із моделюванням користувача, семантичним пошуком і
обізнаністю про кількох агентів. Установлюється як plugin.
обізнаністю про кількох агентів. Встановлення Plugin.
</Card>
<Card title="LanceDB" icon="layers" href="/uk/plugins/memory-lancedb">
Вбудована пам’ять на базі LanceDB з embedding, сумісними з OpenAI, автоматичним згадуванням,
автоматичним захопленням і підтримкою локальних embedding Ollama.
</Card>
</CardGroup>
## Шар wiki знань
## Рівень wiki знань
<CardGroup cols={1}>
<Card title="Memory Wiki" icon="book" href="/uk/plugins/memory-wiki">
Компілює довготривалу пам’ять у wiki vault, багатий на походження, із твердженнями,
Компілює стійку пам’ять у wiki-сховище, насичене походженням даних, із твердженнями,
панелями, bridge mode і workflow, дружніми до Obsidian.
</Card>
</CardGroup>
## Автоматичне скидання пам’яті
Перед тим як [Compaction](/uk/concepts/compaction) підсумовує вашу розмову, OpenClaw
Перш ніж [Compaction](/uk/concepts/compaction) підсумує вашу розмову, OpenClaw
виконує тихий хід, який нагадує агенту зберегти важливий контекст у файли пам’яті.
Це ввімкнено типово — вам нічого не потрібно налаштовувати.
Це ввімкнено типово — вам не потрібно нічого налаштовувати.
<Tip>
Скидання пам’яті запобігає втраті контексту під час Compaction. Якщо у розмові вашого агента є
важливі факти, які ще не записані у файл, їх буде автоматично збережено
перед створенням підсумку.
важливі факти, які ще не записано у файл, вони будуть автоматично збережені
до того, як відбудеться підсумовування.
</Tip>
## Dreaming
Dreaming — це необов’язковий фоновий прохід консолідації пам’яті. Він збирає
короткострокові сигнали, оцінює кандидатів і просуває до довготривалої пам’яті (`MEMORY.md`)
лише кваліфіковані елементи.
Dreaming — це необов’язковий фоновий прохід консолідації для пам’яті. Він збирає
короткострокові сигнали, оцінює кандидатів і просуває до довготривалої пам’яті
(`MEMORY.md`) лише ті елементи, що відповідають вимогам.
Його створено для того, щоб довготривала пам’ять залишалася високосигнальною:
Його створено, щоб підтримувати високу інформаційну цінність довготривалої пам’яті:
- **Добровільне ввімкнення**: типово вимкнено.
- **За бажанням**: типово вимкнено.
- **За розкладом**: коли ввімкнено, `memory-core` автоматично керує одним повторюваним завданням Cron
для повного проходу Dreaming.
- **З порогами**: просування має пройти пороги оцінки, частоти пригадування та
- **З порогами**: просування має пройти пороги оцінки, частоти згадування та
різноманітності запитів.
- **Доступно для перегляду**: підсумки фаз і записи щоденника записуються до `DREAMS.md`
- **З можливістю перегляду**: підсумки фаз і записи щоденника записуються до `DREAMS.md`
для перегляду людиною.
Докладніше про поведінку фаз, сигнали оцінки та деталі Dream Diary див. у
Щоб дізнатися про поведінку фаз, сигнали оцінювання та подробиці щоденника Dreaming, див.
[Dreaming](/uk/concepts/dreaming).
## Обґрунтоване дозаповнення й live-просування
## Обґрунтоване доопрацювання та живе просування
Система Dreaming тепер має два тісно пов’язані канали перегляду:
Система Dreaming тепер має дві тісно пов’язані лінії перегляду:
- **Live dreaming** працює з короткостроковим сховищем Dreaming у
`memory/.dreams/` і саме його нормальна глибока фаза використовує, вирішуючи, що
може бути перенесено до `MEMORY.md`.
- **Grounded backfill** читає історичні нотатки `memory/YYYY-MM-DD.md` як
автономні денні файли й записує структурований результат перегляду до `DREAMS.md`.
- **Живе Dreaming** працює з короткострокового сховища Dreaming у
`memory/.dreams/` і саме його використовує звичайна глибока фаза, коли вирішує, що
може перейти до `MEMORY.md`.
- **Обґрунтоване доопрацювання** читає історичні нотатки `memory/YYYY-MM-DD.md` як
окремі файли дня та записує структурований результат перегляду до `DREAMS.md`.
Grounded backfill корисний, коли ви хочете програти старі нотатки й перевірити, що
система вважає довготривалим, не редагуючи вручну `MEMORY.md`.
Обґрунтоване доопрацювання корисне, коли ви хочете повторно програти старі нотатки та перевірити, що
система вважає довговічним, без ручного редагування `MEMORY.md`.
Коли ви використовуєте:
@ -157,16 +162,16 @@ Grounded backfill корисний, коли ви хочете програти
openclaw memory rem-backfill --path ./memory --stage-short-term
```
обґрунтовані довготривалі кандидати не просуваються безпосередньо. Вони розміщуються
в тому самому короткостроковому сховищі Dreaming, яке вже використовує нормальна глибока фаза. Це
означає:
обґрунтовані стійкі кандидати не просуваються напряму. Вони поміщаються до
того самого короткострокового сховища Dreaming, яке вже використовує звичайна глибока фаза. Це
означає, що:
- `DREAMS.md` залишається поверхнею перегляду для людини.
- `DREAMS.md` залишається поверхнею для перегляду людиною.
- короткострокове сховище залишається поверхнею ранжування для машини.
- `MEMORY.md` усе ще записується лише під час глибокого просування.
- `MEMORY.md`, як і раніше, записується лише глибоким просуванням.
Якщо ви вирішите, що відтворення було не корисним, ви можете видалити підготовлені артефакти,
не торкаючись звичайних записів щоденника або нормального стану пригадування:
Якщо ви вирішите, що повторне програвання було некорисним, ви можете видалити підготовлені артефакти,
не торкаючись звичайних записів щоденника або нормального стану згадування:
```bash
openclaw memory rem-backfill --rollback
@ -176,25 +181,27 @@ openclaw memory rem-backfill --rollback-short-term
## CLI
```bash
openclaw memory status # Перевірити стан індексу й провайдера
openclaw memory status # Перевірити стан індексу та постачальника
openclaw memory search "query" # Пошук із командного рядка
openclaw memory index --force # Перебудувати індекс
```
## Додаткові матеріали
- [Вбудований рушій пам’яті](/uk/concepts/memory-builtin): типовий бекенд SQLite.
- [Рушій пам’яті QMD](/uk/concepts/memory-qmd): просунутий локальний sidecar.
- [Пам’ять Honcho](/uk/concepts/memory-honcho): AI-native міжсеансова пам’ять.
- [Memory Wiki](/uk/plugins/memory-wiki): скомпільоване сховище знань і wiki-native інструменти.
- [Пошук у пам’яті](/uk/concepts/memory-search): конвеєр пошуку, провайдери й налаштування.
- [Dreaming](/uk/concepts/dreaming): фонове просування з короткострокового пригадування до довготривалої пам’яті.
- [Довідка з конфігурації пам’яті](/uk/reference/memory-config): усі параметри конфігурації.
- [Builtin memory engine](/uk/concepts/memory-builtin): типовий бекенд SQLite.
- [QMD memory engine](/uk/concepts/memory-qmd): розширений local-first sidecar.
- [Honcho memory](/uk/concepts/memory-honcho): AI-native міжсеансова пам’ять.
- [Memory LanceDB](/uk/plugins/memory-lancedb): Plugin на базі LanceDB з embedding, сумісними з OpenAI.
- [Memory Wiki](/uk/plugins/memory-wiki): скомпільоване сховище знань та wiki-native інструменти.
- [Memory search](/uk/concepts/memory-search): конвеєр пошуку, постачальники та налаштування.
- [Dreaming](/uk/concepts/dreaming): фонове просування з короткострокового згадування до довготривалої пам’яті.
- [Memory configuration reference](/uk/reference/memory-config): усі параметри конфігурації.
- [Compaction](/uk/concepts/compaction): як Compaction взаємодіє з пам’яттю.
## Пов’язане
- [Active Memory](/uk/concepts/active-memory)
- [Пошук у пам’яті](/uk/concepts/memory-search)
- [Вбудований рушій пам’яті](/uk/concepts/memory-builtin)
- [Пам’ять Honcho](/uk/concepts/memory-honcho)
- [Memory search](/uk/concepts/memory-search)
- [Builtin memory engine](/uk/concepts/memory-builtin)
- [Honcho memory](/uk/concepts/memory-honcho)
- [Memory LanceDB](/uk/plugins/memory-lancedb)

View File

@ -1,53 +1,55 @@
---
read_when:
- Ви хочете використовувати комплектний каркас app-server Codex
- Вам потрібні приклади конфігурації каркаса Codex
- Ви хочете, щоб розгортання лише з Codex завершувалися помилкою замість переходу до PI
summary: Запускайте ходи вбудованого агента OpenClaw через комплектний каркас app-server Codex
title: каркас Codex
- Ви хочете використовувати вбудований app-server harness Codex
- Вам потрібні приклади конфігурації harness Codex
- Ви хочете, щоб розгортання лише з Codex завершувалися помилкою замість переходу на Pi
summary: Запускайте ходи вбудованого агента OpenClaw через вбудований app-server harness Codex
title: harness Codex
x-i18n:
generated_at: "2026-04-27T23:45:00Z"
generated_at: "2026-04-28T00:03:45Z"
model: gpt-5.4
provider: openai
source_hash: ef9654bdc6a2cb44726a53002f2735d823119d2e0379adc68907d8a0980ba4c2
source_hash: c048ff928fb0b601b6a75631f9e33bbf23d08d1c21ad762b22ac3fb182d862ff
source_path: plugins/codex-harness.md
workflow: 15
---
Комплектний Plugin `codex` дає OpenClaw змогу запускати ходи вбудованого агента через app-server Codex замість вбудованого каркаса PI.
Вбудований Plugin `codex` дає OpenClaw змогу запускати ходи вбудованого агента через app-server Codex замість вбудованого harness PI.
Використовуйте це, коли хочете, щоб Codex керував низькорівневою сесією агента: виявленням моделей, нативним відновленням потоку, нативною Compaction і виконанням app-server. OpenClaw, як і раніше, керує каналами чату, файлами сесій, вибором моделей, інструментами, погодженнями, доставкою медіа та видимим дзеркалом транскрипту.
Використовуйте це, коли хочете, щоб Codex керував низькорівневою сесією агента: виявленням моделей, нативним відновленням потоку, нативною Compaction та виконанням через app-server.
OpenClaw і далі керує чат-каналами, файлами сесій, вибором моделей, інструментами,
погодженнями, доставкою медіа та видимим дзеркалом транскрипту.
Якщо ви намагаєтеся зорієнтуватися, почніть із
[Середовища виконання агента](/uk/concepts/agent-runtimes). Коротка версія така:
`openai/gpt-5.5` — це посилання моделі, `codex` — це середовище виконання, а Telegram,
Якщо ви лише починаєте орієнтуватися, почніть із
[Середовища виконання агентів](/uk/concepts/agent-runtimes). Коротко:
`openai/gpt-5.5` — це посилання на модель, `codex` — це середовище виконання, а Telegram,
Discord, Slack або інший канал лишається поверхнею комунікації.
## Що змінює цей Plugin
Комплектний Plugin `codex` додає кілька окремих можливостей:
Вбудований Plugin `codex` додає кілька окремих можливостей:
| Можливість | Як її використовувати | Що вона робить |
| -------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------- |
| Нативне вбудоване середовище виконання | `agentRuntime.id: "codex"` | Запускає ходи вбудованого агента OpenClaw через app-server Codex. |
| Нативні команди керування чатом | `/codex bind`, `/codex resume`, `/codex steer`, ... | Прив’язує та керує потоками app-server Codex із розмови в месенджері. |
| Провайдер/каталог app-server Codex | внутрішні механізми `codex`, показані через каркас | Дає середовищу виконання змогу виявляти та перевіряти моделі app-server. |
| Шлях розуміння медіа Codex | шляхи сумісності з моделями зображень `codex/*` | Запускає обмежені ходи app-server Codex для підтримуваних моделей розуміння зображень. |
| Нативна ретрансляція хуків | Хуки Plugin навколо нативних подій Codex | Дає OpenClaw змогу спостерігати/блокувати підтримувані нативні події інструментів/фіналізації Codex. |
| Можливість | Як її використовувати | Що вона робить |
| -------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------- |
| Нативне вбудоване середовище виконання | `agentRuntime.id: "codex"` | Запускає ходи вбудованого агента OpenClaw через app-server Codex. |
| Нативні команди керування чатом | `/codex bind`, `/codex resume`, `/codex steer`, ... | Прив’язує та керує потоками app-server Codex із розмови в месенджері. |
| Провайдер/каталог app-server Codex | внутрішні частини `codex`, доступні через harness | Дозволяє середовищу виконання виявляти та перевіряти моделі app-server. |
| Шлях розуміння медіа Codex | шляхи сумісності моделей зображень `codex/*` | Запускає обмежені ходи app-server Codex для підтримуваних моделей розуміння зображень. |
| Нативна ретрансляція хуків | Хуки Plugin навколо нативних подій Codex | Дозволяє OpenClaw спостерігати/блокувати підтримувані нативні події інструментів/завершення Codex. |
Увімкнення Plugin робить ці можливості доступними. Воно **не**:
- не починає використовувати Codex для кожної моделі OpenAI
- не перетворює посилання моделей `openai-codex/*` на нативне середовище виконання
- не робить ACP/acpx типовим шляхом Codex
- не перемикає на льоту наявні сесії, у яких уже зафіксовано середовище виконання PI
- не замінює доставку каналів OpenClaw, файли сесій, зберігання профілів автентифікації або маршрутизацію повідомлень
- не перетворює посилання на моделі `openai-codex/*` на нативне середовище виконання
- не робить ACP/acpx типовим шляхом для Codex
- не перемикає на ходу наявні сесії, у яких уже зафіксовано середовище виконання PI
- не замінює доставку каналів OpenClaw, файли сесій, сховище auth-profile або
маршрутизацію повідомлень
Той самий Plugin також керує нативною поверхнею команд керування чатом `/codex`. Якщо
Цей самий Plugin також володіє нативною поверхнею команд керування чатом `/codex`. Якщо
Plugin увімкнено і користувач просить прив’язати, відновити, спрямувати, зупинити або перевірити
потоки Codex із чату, агенти мають віддавати перевагу `/codex ...` замість ACP. ACP лишається
явним запасним варіантом, коли користувач просить ACP/acpx або тестує адаптер ACP
Codex.
потоки Codex із чату, агенти мають надавати перевагу `/codex ...` замість ACP. ACP лишається
явним резервним варіантом, коли користувач просить ACP/acpx або тестує адаптер ACP Codex.
Нативні ходи Codex зберігають хуки Plugin OpenClaw як публічний шар сумісності.
Це внутрішньопроцесні хуки OpenClaw, а не командні хуки Codex `hooks.json`:
@ -60,134 +62,129 @@ Codex.
- `before_agent_finalize` через ретрансляцію Codex `Stop`
- `agent_end`
Plugins також можуть реєструвати нейтральне до середовища виконання проміжне програмне забезпечення для результатів інструментів, щоб переписувати динамічні результати інструментів OpenClaw після виконання інструмента OpenClaw і до повернення результату в Codex. Це окремо від публічного хука Plugin
`tool_result_persist`, який перетворює записи результатів інструментів у транскрипті, якими керує OpenClaw.
Plugins також можуть реєструвати нейтральне до середовища виконання middleware результатів інструментів, щоб переписувати динамічні результати інструментів OpenClaw після того, як OpenClaw виконає інструмент, і до того, як результат буде повернено до Codex. Це окремо від публічного хука Plugin
`tool_result_persist`, який перетворює записи результатів інструментів у транскрипті, якими володіє OpenClaw.
Щодо семантики самих хуків Plugin дивіться [Хуки Plugin](/uk/plugins/hooks)
і [Поведінка захисту Plugin](/uk/tools/plugin).
Про семантику самих хуків Plugin дивіться [Хуки Plugin](/uk/plugins/hooks)
та [Поведінка guard у Plugin](/uk/tools/plugin).
Каркас вимкнено типово. Нові конфігурації мають зберігати посилання моделей OpenAI
канонічними як `openai/gpt-*` і явно примусово задавати
Harness вимкнений типово. У нових конфігураціях слід зберігати канонічні
посилання на моделі OpenAI як `openai/gpt-*` і явно примусово вказувати
`agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`, коли
потрібне нативне виконання app-server. Застарілі посилання моделей `codex/*` і далі автоматично вибирають
каркас для сумісності, але застарілі префікси провайдерів, підкріплені середовищем виконання,
не показуються як звичайні варіанти моделі/провайдера.
потрібне нативне виконання через app-server. Устарілі посилання на моделі `codex/*` усе ще автоматично вибирають
harness для сумісності, але усталені префікси провайдерів, підкріплені середовищем виконання, не показуються як звичайні варіанти моделей/провайдерів.
Якщо Plugin `codex` увімкнено, але основна модель усе ще
`openai-codex/*`, `openclaw doctor` виводить попередження замість зміни маршруту. Це
`openai-codex/*`, `openclaw doctor` показує попередження замість зміни маршруту. Це
навмисно: `openai-codex/*` лишається шляхом OAuth/підписки PI Codex, а
нативне виконання app-server лишається явним вибором середовища виконання.
нативне виконання через app-server лишається явним вибором середовища виконання.
## Карта маршрутів
Скористайтеся цією таблицею перед зміною конфігурації:
| Бажана поведінка | Посилання моделі | Конфігурація середовища виконання | Вимога до Plugin | Очікувана мітка статусу |
| ------------------------------------------- | --------------------------- | -------------------------------------- | -------------------------- | ------------------------------- |
| API OpenAI через звичайний виконавець OpenClaw | `openai/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI | `Runtime: OpenClaw Pi Default` |
| OAuth/підписка Codex через PI | `openai-codex/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI Codex OAuth | `Runtime: OpenClaw Pi Default` |
| Нативні вбудовані ходи app-server Codex | `openai/gpt-*` | `agentRuntime.id: "codex"` | Plugin `codex` | `Runtime: OpenAI Codex` |
| Змішані провайдери з консервативним автоматичним режимом | посилання, специфічні для провайдера | `agentRuntime.id: "auto"` | Необов’язкові середовища виконання Plugin | Залежить від вибраного середовища виконання |
| Явна сесія адаптера Codex ACP | залежить від запиту/моделі ACP | `sessions_spawn` з `runtime: "acp"` | справний бекенд `acpx` | Статус задачі/сесії ACP |
| Бажана поведінка | Посилання на модель | Конфігурація середовища виконання | Вимога до Plugin | Очікувана мітка стану |
| ------------------------------------------ | -------------------------- | -------------------------------------- | -------------------------- | ----------------------------- |
| API OpenAI через звичайний раннер OpenClaw | `openai/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI | `Runtime: OpenClaw Pi Default` |
| OAuth/підписка Codex через PI | `openai-codex/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI Codex OAuth | `Runtime: OpenClaw Pi Default` |
| Нативні вбудовані ходи app-server Codex | `openai/gpt-*` | `agentRuntime.id: "codex"` | Plugin `codex` | `Runtime: OpenAI Codex` |
| Змішані провайдери з консервативним авто-режимом | посилання провайдера | `agentRuntime.id: "auto"` | Необов’язкові Plugin runtime | Залежить від вибраного runtime |
| Явна сесія адаптера ACP Codex | залежить від prompt/моделі ACP | `sessions_spawn` з `runtime: "acp"` | справний бекенд `acpx` | Статус задачі/сесії ACP |
Важливий поділ — між провайдером і середовищем виконання:
Ключове розділення — це провайдер проти середовища виконання:
- `openai-codex/*` відповідає на запитання «який маршрут провайдера/автентифікації має використовувати PI?»
- `agentRuntime.id: "codex"` відповідає на запитання «який цикл має виконувати цей
- `openai-codex/*` відповідає на питання «який маршрут провайдера/автентифікації має використовувати PI?»
- `agentRuntime.id: "codex"` відповідає на питання «який цикл має виконувати цей
вбудований хід?»
- `/codex ...` відповідає на запитання «до якої нативної розмови Codex має бути прив’язаний
або якою слід керувати в цьому чаті
- ACP відповідає на запитання «який зовнішній процес каркаса має запустити acpx?»
- `/codex ...` відповідає на питання «до якої нативної розмови Codex слід прив’язати
цей чат або якою слід керувати?»
- ACP відповідає на питання «який зовнішній процес harness має запускати acpx?»
## Виберіть правильний префікс моделі
Маршрути сімейства OpenAI залежать від префікса. Використовуйте `openai-codex/*`, коли хочете
OAuth Codex через PI; використовуйте `openai/*`, коли хочете прямий доступ до API OpenAI або
коли примусово вмикаєте нативний каркас app-server Codex:
коли примусово використовуєте нативний harness app-server Codex:
| Посилання моделі | Шлях середовища виконання | Використовуйте, коли |
| --------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------- |
| `openai/gpt-5.4` | Провайдер OpenAI через механізми OpenClaw/PI | Вам потрібен актуальний прямий доступ до API OpenAI Platform через `OPENAI_API_KEY`. |
| `openai-codex/gpt-5.5` | OpenAI Codex OAuth через OpenClaw/PI | Вам потрібна автентифікація підписки ChatGPT/Codex зі стандартним виконавцем PI. |
| `openai/gpt-5.5` + `agentRuntime.id: "codex"` | Каркас app-server Codex | Вам потрібне нативне виконання app-server Codex для ходу вбудованого агента. |
| Посилання на модель | Шлях середовища виконання | Використовуйте, коли |
| -------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------- |
| `openai/gpt-5.4` | Провайдер OpenAI через обв’язку OpenClaw/PI | Вам потрібен поточний прямий доступ до OpenAI Platform API з `OPENAI_API_KEY`. |
| `openai-codex/gpt-5.5` | OpenAI Codex OAuth через OpenClaw/PI | Вам потрібна автентифікація підпискою ChatGPT/Codex із типовим раннером PI. |
| `openai/gpt-5.5` + `agentRuntime.id: "codex"` | harness app-server Codex | Вам потрібне нативне виконання app-server Codex для ходу вбудованого агента. |
GPT-5.5 наразі в OpenClaw доступний лише через підписку/OAuth. Використовуйте
`openai-codex/gpt-5.5` для OAuth PI або `openai/gpt-5.5` із каркасом
app-server Codex. Прямий доступ за API-ключем для `openai/gpt-5.5` буде підтримуватися,
щойно OpenAI увімкне GPT-5.5 у публічному API.
`openai-codex/gpt-5.5` для PI OAuth або `openai/gpt-5.5` з harness app-server Codex. Прямий доступ через API key для `openai/gpt-5.5` підтримується,
щойно OpenAI ввімкне GPT-5.5 у публічному API.
Застарілі посилання `codex/gpt-*` і далі приймаються як псевдоніми сумісності. Doctor
під час міграції сумісності переписує застарілі основні посилання середовища виконання на канонічні посилання моделей і окремо записує політику середовища виконання, тоді як застарілі посилання лише для запасного варіанта лишаються без змін, бо середовище виконання налаштовується для всього контейнера агента.
Нові конфігурації OAuth PI Codex мають використовувати `openai-codex/gpt-*`; нові конфігурації
каркаса нативного app-server мають використовувати `openai/gpt-*` плюс
Устарілі посилання `codex/gpt-*` і далі приймаються як сумісні псевдоніми. Doctor
міграція сумісності переписує усталені основні посилання на runtime до канонічних посилань на моделі та окремо зберігає політику середовища виконання, тоді як усталені посилання лише для резервного варіанта лишаються без змін, бо runtime налаштовується для всього контейнера агента.
Нові конфігурації PI Codex OAuth мають використовувати `openai-codex/gpt-*`; нові
конфігурації harness app-server мають використовувати `openai/gpt-*` разом із
`agentRuntime.id: "codex"`.
`agents.defaults.imageModel` дотримується того самого поділу префіксів. Використовуйте
`openai-codex/gpt-*`, коли розуміння зображень має працювати через шлях провайдера OpenAI
Codex OAuth. Використовуйте `codex/gpt-*`, коли розуміння зображень має працювати
`agents.defaults.imageModel` дотримується такого ж розділення за префіксами. Використовуйте
`openai-codex/gpt-*`, коли розуміння зображень має виконуватися через шлях провайдера OpenAI
Codex OAuth. Використовуйте `codex/gpt-*`, коли розуміння зображень має виконуватися
через обмежений хід app-server Codex. Модель app-server Codex має
заявляти підтримку введення зображень; текстові моделі Codex завершуються помилкою до початку
медіа-ходу.
оголошувати підтримку вхідних зображень; текстові моделі Codex завершуються помилкою ще до початку медіа-ходу.
Використовуйте `/status`, щоб підтвердити фактичний каркас для поточної сесії. Якщо
вибір видається несподіваним, увімкніть журналювання налагодження для підсистеми `agents/harness`
і перевірте структурований запис шлюзу `agent harness selected`. Він
містить id вибраного каркаса, причину вибору, політику середовища виконання/запасного варіанта та,
Використовуйте `/status`, щоб підтвердити фактичний harness для поточної сесії. Якщо вибір виявився неочікуваним, увімкніть налагоджувальне журналювання для підсистеми `agents/harness`
і перевірте структурований запис gateway `agent harness selected`. Він
містить id вибраного harness, причину вибору, політику runtime/резервного варіанта і,
у режимі `auto`, результат підтримки для кожного кандидата Plugin.
### Що означають попередження doctor
`openclaw doctor` виводить попередження, коли виконуються всі ці умови:
`openclaw doctor` показує попередження, коли всі ці умови істинні:
- комплектний Plugin `codex` увімкнено або дозволено
- вбудований Plugin `codex` увімкнено або дозволено
- основна модель агента — `openai-codex/*`
- фактичне середовище виконання цього агента — не `codex`
- фактичне runtime цього агента — не `codex`
Це попередження існує, тому що користувачі часто очікують, що «Plugin Codex увімкнено» означає
«нативне середовище виконання app-server Codex». OpenClaw не робить такого переходу автоматично. Попередження означає:
«нативне runtime app-server Codex». OpenClaw не робить такого кроку. Попередження означає:
- **Нічого змінювати не потрібно**, якщо вам був потрібен OAuth ChatGPT/Codex через PI.
- **Жодних змін не потрібно**, якщо ви мали на увазі OAuth ChatGPT/Codex через PI.
- Змініть модель на `openai/<model>` і встановіть
`agentRuntime.id: "codex"`, якщо вам було потрібне нативне виконання
app-server.
- Наявним сесіям усе одно потрібні `/new` або `/reset` після зміни середовища виконання,
тому що прив’язки середовища виконання сесії є фіксованими.
`agentRuntime.id: "codex"`, якщо ви мали на увазі нативне виконання
через app-server.
- Наявні сесії все одно потребують `/new` або `/reset` після зміни runtime,
тому що прив’язки runtime сесії є сталими.
Вибір каркаса — це не механізм керування живою сесією. Коли виконується вбудований хід,
OpenClaw записує id вибраного каркаса в цю сесію й надалі використовує його для
пізніших ходів у межах того самого id сесії. Змінюйте конфігурацію `agentRuntime` або
`OPENCLAW_AGENT_RUNTIME`, коли хочете, щоб майбутні сесії використовували інший каркас;
Вибір harness — це не механізм керування живою сесією. Коли виконується вбудований хід,
OpenClaw записує id вибраного harness у цій сесії й продовжує використовувати його для
наступних ходів із тим самим id сесії. Змінюйте конфігурацію `agentRuntime` або
`OPENCLAW_AGENT_RUNTIME`, коли хочете, щоб майбутні сесії використовували інший harness;
використовуйте `/new` або `/reset`, щоб почати нову сесію перед перемиканням наявної
розмови між PI і Codex. Це запобігає повторному програванню одного транскрипту через
розмови між PI та Codex. Це запобігає повторному програванню одного транскрипту через
дві несумісні нативні системи сесій.
Застарілі сесії, створені до появи прив’язок каркаса, вважаються прив’язаними до PI, щойно
в них з’являється історія транскрипту. Використовуйте `/new` або `/reset`, щоб перевести
цю розмову на Codex після зміни конфігурації.
Устарілі сесії, створені до появи прив’язок harness, вважаються прив’язаними до PI, щойно
вони мають історію транскрипту. Використовуйте `/new` або `/reset`, щоб перевести цю розмову на
Codex після зміни конфігурації.
`/status` показує фактичне середовище виконання моделі. Стандартний каркас PI відображається як
`Runtime: OpenClaw Pi Default`, а каркас app-server Codex — як
`/status` показує фактичне runtime моделі. Типовий harness PI відображається як
`Runtime: OpenClaw Pi Default`, а harness app-server Codex — як
`Runtime: OpenAI Codex`.
## Вимоги
- OpenClaw із доступним комплектним Plugin `codex`.
- Codex app-server `0.125.0` або новіший. Комплектний Plugin типово керує сумісним
бінарним файлом app-server Codex, тому локальні команди `codex` у `PATH`
не впливають на звичайний запуск каркаса.
- Автентифікація Codex, доступна для процесу app-server.
- OpenClaw із доступним вбудованим Plugin `codex`.
- Codex app-server `0.125.0` або новіший. Вбудований Plugin типово керує сумісним
двійковим файлом app-server Codex, тому локальні команди `codex` у `PATH` не
впливають на звичайний запуск harness.
- Автентифікація Codex, доступна для процесу app-server або для bridge автентифікації Codex в OpenClaw.
Plugin блокує старіші або неверсіоновані рукостискання app-server. Це дозволяє
OpenClaw лишатися в межах поверхні протоколу, з якою його було протестовано.
Plugin блокує старіші або неверсіоновані handshake app-server. Це утримує
OpenClaw у межах поверхні протоколу, з якою його тестували.
Для live- і Docker-smoke-тестів автентифікація зазвичай походить із `OPENAI_API_KEY`, а також
з необов’язкових файлів Codex CLI, таких як `~/.codex/auth.json` і
`~/.codex/config.toml`. Використовуйте той самий автентифікаційний матеріал, що й ваш локальний
app-server Codex.
Для live- і Docker smoke-тестів автентифікація зазвичай походить від облікового запису Codex CLI
або auth-profile `openai-codex` в OpenClaw. Локальні запуски app-server через stdio також
можуть використовувати `CODEX_API_KEY` / `OPENAI_API_KEY`, коли облікового запису немає.
## Мінімальна конфігурація
Використовуйте `openai/gpt-5.5`, увімкніть комплектний Plugin і примусово задайте каркас `codex`:
Використовуйте `openai/gpt-5.5`, увімкніть вбудований Plugin і примусово вкажіть harness `codex`:
```json5
{
@ -209,7 +206,7 @@ app-server Codex.
}
```
Якщо у вашій конфігурації використовується `plugins.allow`, додайте туди також `codex`:
Якщо ваша конфігурація використовує `plugins.allow`, додайте туди також `codex`:
```json5
{
@ -224,26 +221,28 @@ app-server Codex.
}
```
Застарілі конфігурації, які задають `agents.defaults.model` або модель агента як
`codex/<model>`, і далі автоматично вмикають комплектний Plugin `codex`. Нові конфігурації мають
віддавати перевагу `openai/<model>` плюс явний запис `agentRuntime`, наведений вище.
Устарілі конфігурації, які задають `agents.defaults.model` або модель агента як
`codex/<model>`, усе ще автоматично вмикають вбудований Plugin `codex`. Нові конфігурації мають
надавати перевагу `openai/<model>` разом із явним записом `agentRuntime`, наведеним вище.
## Додайте Codex поруч з іншими моделями
Не задавайте `agentRuntime.id: "codex"` глобально, якщо той самий агент має вільно перемикатися
між Codex і моделями інших провайдерів. Примусове середовище виконання застосовується до кожного
вбудованого ходу для цього агента або сесії. Якщо ви виберете модель Anthropic, коли це середовище виконання примусово задано, OpenClaw все одно спробує каркас Codex і завершиться помилкою без тихого перенаправлення цього ходу через PI.
між моделями провайдера Codex і не-Codex. Примусове runtime застосовується до кожного
вбудованого ходу для цього агента або сесії. Якщо ви виберете модель Anthropic, поки
це runtime примусово задане, OpenClaw усе одно спробує використати harness Codex і завершиться помилкою
без неявного маршрутування цього ходу через PI.
Замість цього використовуйте одну з таких форм:
Використовуйте натомість одну з цих схем:
- Розмістіть Codex на окремому агенті з `agentRuntime.id: "codex"`.
- Залиште типовий агент на `agentRuntime.id: "auto"` і запасному варіанті PI для звичайного змішаного
- Виділіть Codex в окремого агента з `agentRuntime.id: "codex"`.
- Залиште типовому агенту `agentRuntime.id: "auto"` і резервний перехід на PI для звичайного змішаного
використання провайдерів.
- Використовуйте застарілі посилання `codex/*` лише для сумісності. Нові конфігурації мають надавати перевагу
`openai/*` плюс явна політика середовища виконання Codex.
`openai/*` разом із явною політикою runtime Codex.
Наприклад, це залишає типовий агент на звичайному автоматичному виборі та
додає окремий агент Codex:
Наприклад, така конфігурація залишає типовий агент на звичайному автоматичному виборі та
додає окремого агента Codex:
```json5
{
@ -280,36 +279,36 @@ app-server Codex.
}
```
У такій формі:
За такої схеми:
- Типовий агент `main` використовує звичайний шлях провайдера та запасний варіант сумісності PI.
- Агент `codex` використовує каркас app-server Codex.
- Якщо Codex відсутній або не підтримується для агента `codex`, хід завершується
помилкою замість тихого використання PI.
- Типовий агент `main` використовує звичайний шлях провайдера та резервну сумісність із PI.
- Агент `codex` використовує harness app-server Codex.
- Якщо Codex відсутній або не підтримується для агента `codex`, хід
завершується помилкою замість тихого переходу на PI.
## Маршрутизація команд агента
Агенти мають маршрутизувати запити користувача за наміром, а не лише за словом "Codex":
| Користувач просить... | Агент має використовувати... |
| ------------------------------------------------------ | ----------------------------------------------- |
| "Прив’яжи цей чат до Codex" | `/codex bind` |
| "Віднови тут потік Codex `<id>`" | `/codex resume <id>` |
| "Покажи потоки Codex" | `/codex threads` |
| "Використовуй Codex як середовище виконання для цього агента" | зміна конфігурації `agentRuntime.id` |
| "Використовуй мою підписку ChatGPT/Codex зі звичайним OpenClaw" | посилання моделей `openai-codex/*` |
| "Запусти Codex через ACP/acpx" | ACP `sessions_spawn({ runtime: "acp", ... })` |
| "Запусти Claude Code/Gemini/OpenCode/Cursor у потоці" | ACP/acpx, а не `/codex` і не нативні субагенти |
| Користувач просить... | Агент має використовувати... |
| ----------------------------------------------------- | ----------------------------------------------- |
| "Прив’яжи цей чат до Codex" | `/codex bind` |
| "Віднови тут потік Codex `<id>`" | `/codex resume <id>` |
| "Покажи потоки Codex" | `/codex threads` |
| "Використовуй Codex як runtime для цього агента" | зміну конфігурації `agentRuntime.id` |
| "Використовуй мою підписку ChatGPT/Codex зі звичайним OpenClaw" | посилання на моделі `openai-codex/*` |
| "Запусти Codex через ACP/acpx" | ACP `sessions_spawn({ runtime: "acp", ... })` |
| "Запусти Claude Code/Gemini/OpenCode/Cursor у потоці" | ACP/acpx, не `/codex` і не нативні субагенти |
OpenClaw показує агентам рекомендації щодо запуску ACP лише тоді, коли ACP увімкнено,
можна диспетчеризувати і він підкріплений завантаженим бекендом середовища виконання. Якщо ACP недоступний,
системний запит і Skills Plugin не повинні навчати агента маршрутизації
OpenClaw показує агентам вказівки щодо запуску через ACP лише тоді, коли ACP увімкнено,
його можна диспетчеризувати, і він підтримується завантаженим backend runtime. Якщо ACP недоступний,
системний prompt і Skills Plugin не мають навчати агента маршрутизації
через ACP.
## Розгортання лише з Codex
Примусово використовуйте каркас Codex, коли потрібно підтвердити, що кожен хід вбудованого агента
використовує Codex. Явні середовища виконання Plugin типово не мають запасного варіанта PI, тому
Примусово використовуйте harness Codex, коли потрібно довести, що кожен хід вбудованого агента
використовує Codex. Явні runtime Plugin типово працюють без резервного переходу на PI, тому
`fallback: "none"` необов’язковий, але часто корисний як документація:
```json5
@ -326,20 +325,20 @@ OpenClaw показує агентам рекомендації щодо зап
}
```
Перевизначення через середовище:
Перевизначення через змінну середовища:
```bash
OPENCLAW_AGENT_RUNTIME=codex openclaw gateway run
```
Якщо Codex примусово ввімкнено, OpenClaw завершується помилкою на ранньому етапі, якщо Plugin Codex вимкнено,
app-server занадто старий або app-server не може запуститися. Встановлюйте
`OPENCLAW_AGENT_HARNESS_FALLBACK=pi` лише якщо ви навмисно хочете, щоб PI обробляв
відсутній вибір каркаса.
Якщо Codex примусово увімкнено, OpenClaw завершується помилкою на ранньому етапі, якщо Plugin Codex вимкнено, app-server
застарілий або app-server не може запуститися. Встановлюйте
`OPENCLAW_AGENT_HARNESS_FALLBACK=pi` лише якщо ви свідомо хочете, щоб PI обробляв
відсутній вибір harness.
## Codex для окремого агента
Ви можете зробити один агент таким, що використовує тільки Codex, тоді як типовий агент зберігатиме звичайний
Ви можете зробити одного агента лише з Codex, тоді як типовий агент зберігатиме нормальний
автовибір:
```json5
@ -371,15 +370,15 @@ app-server занадто старий або app-server не може запу
}
```
Використовуйте звичайні команди сесії для перемикання агентів і моделей. `/new` створює нову
сесію OpenClaw, а каркас Codex створює або відновлює свій побічний потік app-server
Використовуйте звичайні команди сесії, щоб перемикати агентів і моделі. `/new` створює нову
сесію OpenClaw, а harness Codex створює або відновлює свій sidecar-потік app-server
за потреби. `/reset` очищує прив’язку сесії OpenClaw для цього потоку
і дає наступному ходу змогу знову визначити каркас із поточної конфігурації.
і дає змогу наступному ходу знову визначити harness із поточної конфігурації.
## Виявлення моделей
Типово Plugin Codex запитує app-server про доступні моделі. Якщо
виявлення завершується помилкою або перевищує час очікування, він використовує комплектний запасний каталог для:
виявлення завершується помилкою або перевищує час очікування, він використовує вбудований резервний каталог для:
- GPT-5.5
- GPT-5.4 mini
@ -405,8 +404,8 @@ app-server занадто старий або app-server не може запу
}
```
Вимкніть виявлення, якщо хочете, щоб під час запуску не виконувалося зондування Codex і використовувався
запасний каталог:
Вимкніть виявлення, якщо хочете, щоб запуск не намагався опитувати Codex і дотримувався
резервного каталогу:
```json5
{
@ -425,27 +424,27 @@ app-server занадто старий або app-server не може запу
}
```
## Підключення app-server і політика
## Підключення до app-server і політика
Типово Plugin запускає локально бінарний файл Codex, яким керує OpenClaw, за допомогою:
Типово Plugin локально запускає керований OpenClaw двійковий файл Codex такою командою:
```bash
codex app-server --listen stdio://
```
Керований бінарний файл оголошується як комплектна залежність середовища виконання Plugin і розміщується
разом з рештою залежностей Plugin `codex`. Це зберігає версію app-server прив’язаною
до комплектного Plugin, а не до будь-якого окремого Codex CLI,
Керований двійковий файл оголошено як вбудовану залежність runtime Plugin і підготовлено
разом з іншими залежностями Plugin `codex`. Це прив’язує версію app-server
до вбудованого Plugin, а не до будь-якого окремого Codex CLI,
який випадково встановлено локально. Встановлюйте `appServer.command` лише тоді, коли
свідомо хочете запускати інший виконуваний файл.
Типово OpenClaw запускає локальні сесії каркаса Codex у режимі YOLO:
Типово OpenClaw запускає локальні сесії harness Codex у режимі YOLO:
`approvalPolicy: "never"`, `approvalsReviewer: "user"` і
`sandbox: "danger-full-access"`. Це довірена локальна робоча модель оператора, яка використовується
для автономних Heartbeat: Codex може використовувати інструменти оболонки та мережі без
зупинки на нативних запитах підтвердження, на які нікому відповісти.
`sandbox: "danger-full-access"`. Це довірена локальна операторська модель, що використовується
для автономних Heartbeat: Codex може використовувати shell та мережеві інструменти без
зупинки на нативних prompt підтвердження, на які нікому відповісти.
Щоб увімкнути підтвердження Codex із переглядом guardian, задайте `appServer.mode:
Щоб увімкнути підтвердження з нативною перевіркою guardian у Codex, встановіть `appServer.mode:
"guardian"`:
```json5
@ -466,16 +465,18 @@ codex app-server --listen stdio://
}
```
Режим guardian використовує нативний шлях автоматичного перегляду підтверджень Codex. Коли Codex просить
вийти з пісочниці, записати поза робочим простором або додати дозволи, як-от доступ до мережі,
Codex спрямовує цей запит на підтвердження нативному рецензенту, а не людині через запит. Рецензент застосовує модель ризиків Codex і підтверджує або відхиляє конкретний запит. Використовуйте Guardian, коли потрібні додаткові запобіжники порівняно з режимом YOLO,
але водночас потрібно, щоб агенти без нагляду могли рухатися далі.
Режим Guardian використовує нативний шлях автоматичної перевірки підтверджень Codex. Коли Codex просить
вийти з sandbox, записати за межами робочого простору або додати дозволи на кшталт доступу до мережі,
Codex надсилає такий запит на підтвердження нативному рецензенту замість
людського prompt. Рецензент застосовує модель оцінки ризику Codex і схвалює або відхиляє
конкретний запит. Використовуйте Guardian, коли вам потрібні суворіші обмеження, ніж у режимі YOLO,
але при цьому потрібно, щоб агенти без нагляду могли просуватися далі.
Налаштування `guardian` розгортається в `approvalPolicy: "on-request"`,
Попереднє налаштування `guardian` розгортається в `approvalPolicy: "on-request"`,
`approvalsReviewer: "auto_review"` і `sandbox: "workspace-write"`.
Окремі поля політики все одно перевизначають `mode`, тому розширені розгортання можуть поєднувати
цей шаблон з явними виборами. Старе значення рецензента `guardian_subagent`
і далі приймається як псевдонім сумісності, але нові конфігурації мають використовувати
Окремі поля політики все одно мають пріоритет над `mode`, тож розширені розгортання можуть поєднувати
цей preset із явними налаштуваннями. Старе значення рецензента `guardian_subagent`
і далі приймається як псевдонім для сумісності, але нові конфігурації мають використовувати
`auto_review`.
Для вже запущеного app-server використовуйте транспорт WebSocket:
@ -500,24 +501,65 @@ Codex спрямовує цей запит на підтвердження на
}
```
Запуски app-server через stdio типово успадковують середовище процесу OpenClaw,
але OpenClaw керує bridge облікового запису app-server Codex. Автентифікація вибирається в такому
порядку:
1. Явний auth-profile Codex OpenClaw для агента.
2. Наявний обліковий запис app-server, наприклад локальний вхід ChatGPT у Codex CLI.
3. Лише для локальних запусків app-server через stdio: `CODEX_API_KEY`, потім
`OPENAI_API_KEY`, якщо облікового запису app-server немає, а автентифікація OpenAI
усе ще потрібна.
Коли OpenClaw бачить auth-profile Codex у стилі підписки ChatGPT, він видаляє
`CODEX_API_KEY` і `OPENAI_API_KEY` із породженого дочірнього процесу Codex. Це
дозволяє API key на рівні Gateway лишатися доступними для embeddings або прямих моделей OpenAI,
не спричиняючи випадкового білінгу нативних ходів app-server Codex через API.
Явні профілі Codex з API key і локальний резервний варіант env-key для stdio використовують вхід app-server, а не успадковане середовище дочірнього процесу. Підключення до app-server через WebSocket
не отримують резервний варіант API key із середовища Gateway; використовуйте явний auth-profile або
власний обліковий запис віддаленого app-server.
Якщо розгортанню потрібна додаткова ізоляція змінних середовища, додайте ці змінні до
`appServer.clearEnv`:
```json5
{
plugins: {
entries: {
codex: {
enabled: true,
config: {
appServer: {
clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"],
},
},
},
},
},
}
```
`appServer.clearEnv` впливає лише на породжений дочірній процес app-server Codex через stdio.
Підтримувані поля `appServer`:
| Поле | Типове значення | Значення |
| ------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `transport` | `"stdio"` | `"stdio"` запускає Codex; `"websocket"` підключається до `url`. |
| `command` | керований бінарний файл Codex | Виконуваний файл для транспорту stdio. Залиште порожнім, щоб використовувати керований бінарний файл; задавайте лише для явного перевизначення. |
| `args` | `["app-server", "--listen", "stdio://"]` | Аргументи для транспорту stdio. |
| `url` | не задано | URL WebSocket app-server. |
| `authToken` | не задано | Bearer-токен для транспорту WebSocket. |
| `headers` | `{}` | Додаткові заголовки WebSocket. |
| `requestTimeoutMs` | `60000` | Час очікування для викликів control-plane app-server. |
| `mode` | `"yolo"` | Попередньо встановлений режим для виконання YOLO або guardian-reviewed. |
| `approvalPolicy` | `"never"` | Нативна політика підтверджень Codex, що надсилається на старт/відновлення потоку/хід. |
| `sandbox` | `"danger-full-access"` | Нативний режим пісочниці Codex, що надсилається на старт/відновлення потоку. |
| `approvalsReviewer` | `"user"` | Використовуйте `"auto_review"`, щоб дозволити Codex перевіряти нативні запити підтвердження. `guardian_subagent` лишається застарілим псевдонімом. |
| `serviceTier` | не задано | Необов’язковий рівень сервісу app-server Codex: `"fast"`, `"flex"` або `null`. Некоректні застарілі значення ігноруються. |
| Поле | Типове значення | Значення |
| ------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `transport` | `"stdio"` | `"stdio"` запускає Codex; `"websocket"` підключається до `url`. |
| `command` | керований двійковий файл Codex | Виконуваний файл для транспорту stdio. Залиште порожнім, щоб використовувати керований двійковий файл; задавайте лише для явного перевизначення. |
| `args` | `["app-server", "--listen", "stdio://"]` | Аргументи для транспорту stdio. |
| `url` | не встановлено | URL app-server WebSocket. |
| `authToken` | не встановлено | Bearer token для транспорту WebSocket. |
| `headers` | `{}` | Додаткові заголовки WebSocket. |
| `clearEnv` | `[]` | Додаткові назви змінних середовища, які видаляються з породженого процесу stdio app-server після того, як OpenClaw сформує успадковане середовище. |
| `requestTimeoutMs` | `60000` | Час очікування для викликів control-plane app-server. |
| `mode` | `"yolo"` | Preset для виконання в режимі YOLO або з перевіркою guardian. |
| `approvalPolicy` | `"never"` | Нативна політика підтверджень Codex, що надсилається під час запуску/відновлення потоку/ходу. |
| `sandbox` | `"danger-full-access"` | Нативний режим sandbox Codex, що надсилається під час запуску/відновлення потоку. |
| `approvalsReviewer` | `"user"` | Використовуйте `"auto_review"`, щоб дозволити Codex перевіряти нативні prompt підтвердження. `guardian_subagent` лишається застарілим псевдонімом. |
| `serviceTier` | не встановлено | Необов’язковий service tier app-server Codex: `"fast"`, `"flex"` або `null`. Некоректні застарілі значення ігноруються. |
Перевизначення через середовище й далі доступні для локального тестування:
Перевизначення через змінні середовища і далі доступні для локального тестування:
- `OPENCLAW_CODEX_APP_SERVER_BIN`
- `OPENCLAW_CODEX_APP_SERVER_ARGS`
@ -525,21 +567,21 @@ Codex спрямовує цей запит на підтвердження на
- `OPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICY`
- `OPENCLAW_CODEX_APP_SERVER_SANDBOX`
`OPENCLAW_CODEX_APP_SERVER_BIN` обходить керований бінарний файл, коли
`OPENCLAW_CODEX_APP_SERVER_BIN` обходить керований двійковий файл, коли
`appServer.command` не задано.
`OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1` було видалено. Натомість використовуйте
`OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1` видалено. Натомість використовуйте
`plugins.entries.codex.config.appServer.mode: "guardian"` або
`OPENCLAW_CODEX_APP_SERVER_MODE=guardian` для разового локального тестування. Конфігурація
є бажаною для відтворюваних розгортань, оскільки вона зберігає поведінку Plugin у тому самому
перевіреному файлі, що й решта налаштування каркаса Codex.
є кращим варіантом для відтворюваних розгортань, оскільки зберігає поведінку Plugin в тому самому
перевіреному файлі, що й решта налаштувань harness Codex.
## Використання комп’ютера
Computer Use описано в окремому посібнику з налаштування:
Використання комп’ютера описано в окремому посібнику з налаштування:
[Codex Computer Use](/uk/plugins/codex-computer-use).
Коротка версія: OpenClaw не постачає застосунок для керування робочим столом і не виконує
Коротко: OpenClaw не постачає застосунок для керування робочим столом і не виконує
дії на робочому столі самостійно. Він готує app-server Codex, перевіряє, що
MCP-сервер `computer-use` доступний, а потім дозволяє Codex обробляти нативні
виклики інструментів MCP під час ходів у режимі Codex.
@ -579,18 +621,18 @@ MCP-сервер `computer-use` доступний, а потім дозволя
- `/codex computer-use install --source <marketplace-source>`
- `/codex computer-use install --marketplace-path <path>`
Computer Use специфічний для macOS і може вимагати локальних дозволів ОС, перш ніж
MCP-сервер Codex зможе керувати застосунками. Якщо `computerUse.enabled` має значення true і MCP-
сервер недоступний, ходи в режимі Codex завершуються помилкою до запуску потоку замість
тихого виконання без нативних інструментів Computer Use. Див.
[Codex Computer Use](/uk/plugins/codex-computer-use) щодо вибору marketplace,
обмежень віддаленого каталогу, причин стану та усунення несправностей.
Computer Use призначений для macOS і може потребувати локальних дозволів ОС, перш ніж
MCP-сервер Codex зможе керувати застосунками. Якщо `computerUse.enabled` має значення true, а MCP-
сервер недоступний, ходи в режимі Codex завершуються помилкою ще до запуску потоку, замість
тихої роботи без нативних інструментів Computer Use. Див.
[Codex Computer Use](/uk/plugins/codex-computer-use) для відомостей про варіанти marketplace,
обмеження віддаленого каталогу, причини станів і усунення несправностей.
Коли `computerUse.autoInstall` має значення true, OpenClaw може зареєструвати стандартний
комплектний marketplace Codex Desktop з
вбудований marketplace Codex Desktop із
`/Applications/Codex.app/Contents/Resources/plugins/openai-bundled`, якщо Codex
ще не виявив локальний marketplace. Використовуйте `/new` або `/reset` після
зміни конфігурації середовища виконання або Computer Use, щоб наявні сесії не зберігали стару
зміни конфігурації runtime або Computer Use, щоб наявні сесії не зберігали стару
прив’язку потоку PI або Codex.
## Поширені рецепти
@ -609,7 +651,7 @@ MCP-сервер Codex зможе керувати застосунками. Я
}
```
Перевірка каркаса лише з Codex:
Перевірка harness лише з Codex:
```json5
{
@ -631,7 +673,7 @@ MCP-сервер Codex зможе керувати застосунками. Я
}
```
Підтвердження Codex із переглядом guardian:
Підтвердження Codex із перевіркою guardian:
```json5
{
@ -653,7 +695,7 @@ MCP-сервер Codex зможе керувати застосунками. Я
}
```
Віддалений app-server з явними заголовками:
Віддалений app-server із явними заголовками:
```json5
{
@ -676,69 +718,69 @@ MCP-сервер Codex зможе керувати застосунками. Я
}
```
Перемикання моделей залишається під контролем OpenClaw. Коли сесію OpenClaw приєднано
Перемикання моделей і далі контролюється OpenClaw. Коли сесію OpenClaw приєднано
до наявного потоку Codex, наступний хід знову надсилає до
app-server поточно вибрані модель OpenAI, провайдера, політику підтверджень, пісочницю та рівень сервісу.
app-server поточну вибрану модель OpenAI, провайдера, політику підтверджень, sandbox і service tier.
Перемикання з `openai/gpt-5.5` на `openai/gpt-5.2` зберігає
прив’язку до потоку, але просить Codex продовжити з новою вибраною моделлю.
## Команда Codex
Комплектний Plugin реєструє `/codex` як авторизовану slash-команду. Вона є
загальною і працює в будь-якому каналі, який підтримує текстові команди OpenClaw.
Вбудований Plugin реєструє `/codex` як авторизовану slash-команду. Вона є
універсальною і працює в будь-якому каналі, що підтримує текстові команди OpenClaw.
Поширені форми:
- `/codex status` показує живе підключення до app-server, моделі, обліковий запис, ліміти швидкості, MCP-сервери та skills.
- `/codex status` показує живе підключення до app-server, моделі, обліковий запис, обмеження швидкості, MCP-сервери та Skills.
- `/codex models` перелічує живі моделі app-server Codex.
- `/codex threads [filter]` перелічує нещодавні потоки Codex.
- `/codex resume <thread-id>` приєднує поточну сесію OpenClaw до наявного потоку Codex.
- `/codex compact` просить app-server Codex виконати Compaction приєднаного потоку.
- `/codex review` запускає нативну перевірку Codex для приєднаного потоку.
- `/codex computer-use status` перевіряє налаштований Plugin Computer Use і MCP-сервер.
- `/codex computer-use install` установлює налаштований Plugin Computer Use і перезавантажує MCP-сервери.
- `/codex account` показує стан облікового запису та лімітів швидкості.
- `/codex computer-use install` встановлює налаштований Plugin Computer Use і перезавантажує MCP-сервери.
- `/codex account` показує стан облікового запису та обмежень швидкості.
- `/codex mcp` перелічує стан MCP-сервера app-server Codex.
- `/codex skills` перелічує Skills app-server Codex.
`/codex resume` записує той самий побічний файл прив’язки, який каркас використовує для
звичайних ходів. На наступному повідомленні OpenClaw відновлює цей потік Codex, передає
поточну вибрану модель OpenClaw до app-server і зберігає увімкнену
`/codex resume` записує той самий sidecar-файл прив’язки, який harness використовує для
звичайних ходів. У наступному повідомленні OpenClaw відновлює цей потік Codex, передає
поточну вибрану модель OpenClaw до app-server і зберігає ввімкнену
розширену історію.
Поверхня команд вимагає Codex app-server `0.125.0` або новішої версії. Окремі
Поверхня команд потребує Codex app-server `0.125.0` або новішої версії. Окремі
методи керування позначаються як `unsupported by this Codex app-server`, якщо
майбутній або нестандартний app-server не надає цей метод JSON-RPC.
майбутній або спеціальний app-server не надає цей метод JSON-RPC.
## Межі хуків
Каркас Codex має три шари хуків:
Harness Codex має три шари хуків:
| Шар | Власник | Призначення |
| ------------------------------------- | ------------------------ | -------------------------------------------------------------------- |
| Хуки Plugin OpenClaw | OpenClaw | Сумісність продукту/Plugin між каркасами PI і Codex. |
| Проміжне ПЗ розширень app-server Codex | Комплектні Plugins OpenClaw | Поведінка адаптера на рівні ходу навколо динамічних інструментів OpenClaw. |
| Шар | Власник | Призначення |
| ------------------------------------- | ------------------------ | ------------------------------------------------------------------ |
| Хуки Plugin OpenClaw | OpenClaw | Сумісність продукту/Plugin між harness PI та Codex. |
| Middleware розширення app-server Codex | Вбудовані Plugins OpenClaw | Поведінка адаптера на рівні ходу навколо динамічних інструментів OpenClaw. |
| Нативні хуки Codex | Codex | Низькорівневий життєвий цикл Codex і політика нативних інструментів із конфігурації Codex. |
OpenClaw не використовує файли `hooks.json` проєкту або глобальні файли Codex для маршрутизації
поведінки Plugin OpenClaw. Для підтримуваного мосту нативних інструментів і дозволів
OpenClaw не використовує файли проєктного або глобального Codex `hooks.json` для маршрутизації
поведінки Plugin OpenClaw. Для підтримуваного bridge нативних інструментів і дозволів
OpenClaw впроваджує конфігурацію Codex для кожного потоку для `PreToolUse`, `PostToolUse`,
`PermissionRequest` і `Stop`. Інші хуки Codex, як-от `SessionStart` і
`UserPromptSubmit`, залишаються елементами керування на рівні Codex; вони не
експонуються як хуки Plugin OpenClaw у контракті v1.
`PermissionRequest` і `Stop`. Інші хуки Codex, такі як `SessionStart` і
`UserPromptSubmit`, залишаються елементами керування на рівні Codex; вони не відкриваються як
хуки Plugin OpenClaw у контракті v1.
Для динамічних інструментів OpenClaw OpenClaw виконує інструмент після того, як Codex запитує
виклик, тож OpenClaw запускає поведінку Plugin і проміжного ПЗ, якою він володіє в
адаптері каркаса. Для нативних інструментів Codex Codex володіє канонічним записом інструмента.
OpenClaw може віддзеркалювати вибрані події, але не може переписувати нативний потік Codex,
якщо Codex не відкриє цю операцію через app-server або зворотні виклики
виклик, тому OpenClaw запускає належну йому поведінку Plugin і middleware в
адаптері harness. Для нативних інструментів Codex Codex володіє канонічним записом інструмента.
OpenClaw може дзеркалити вибрані події, але не може переписати нативний потік Codex,
якщо Codex не відкриває цю операцію через app-server або зворотні виклики
нативних хуків.
Проєкції Compaction і життєвого циклу LLM походять із сповіщень app-server Codex
і стану адаптера OpenClaw, а не з команд нативних хуків Codex.
Проєкції Compaction і життєвого циклу LLM надходять із
сповіщень app-server Codex і стану адаптера OpenClaw, а не з команд нативних хуків Codex.
Події OpenClaw `before_compaction`, `after_compaction`, `llm_input` і
`llm_output` — це спостереження на рівні адаптера, а не побайтні захоплення
внутрішнього запиту Codex або даних Compaction.
`llm_output` — це спостереження на рівні адаптера, а не побайтові захоплення
внутрішнього запиту Codex або payload Compaction.
Нативні сповіщення app-server Codex `hook/started` і `hook/completed`
проєктуються як події агента `codex_app_server.hook` для траєкторії та налагодження.
@ -746,126 +788,124 @@ OpenClaw може віддзеркалювати вибрані події, ал
## Контракт підтримки V1
Режим Codex — це не PI з іншим викликом моделі під ним. Codex володіє більшою частиною
нативного циклу моделі, а OpenClaw адаптує свої поверхні Plugin і сесії
Режим Codex — це не PI з іншим викликом моделі під ним. Codex керує більшою частиною
нативного циклу моделі, а OpenClaw адаптує свої поверхні Plugin і сесій
навколо цієї межі.
Підтримується в середовищі виконання Codex v1:
Підтримується в runtime Codex v1:
| Поверхня | Підтримка | Чому |
| --------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Цикл моделі OpenAI через Codex | Підтримується | App-server Codex володіє ходом OpenAI, нативним відновленням потоку та нативним продовженням інструментів. |
| Маршрутизація та доставка каналів OpenClaw | Підтримується | Telegram, Discord, Slack, WhatsApp, iMessage та інші канали залишаються поза середовищем виконання моделі. |
| Динамічні інструменти OpenClaw | Підтримується | Codex просить OpenClaw виконати ці інструменти, тож OpenClaw залишається на шляху виконання. |
| Plugins запиту та контексту | Підтримується | OpenClaw будує накладки запиту та проєктує контекст у хід Codex перед запуском або відновленням потоку. |
| Життєвий цикл рушія контексту | Підтримується | Збирання, ingest або супровід після ходу, а також координація Compaction рушія контексту виконуються для ходів Codex. |
| Хуки динамічних інструментів | Підтримується | `before_tool_call`, `after_tool_call` і проміжне ПЗ для результатів інструментів виконуються навколо динамічних інструментів OpenClaw. |
| Хуки життєвого циклу | Підтримуються як спостереження адаптера | `llm_input`, `llm_output`, `agent_end`, `before_compaction` і `after_compaction` запускаються з чесними даними режиму Codex. |
| Шлюз перегляду фінальної відповіді | Підтримується через ретрансляцію нативного хука | Codex `Stop` ретранслюється в `before_agent_finalize`; `revise` просить Codex виконати ще один прохід моделі перед фіналізацією. |
| Блокування або спостереження нативної оболонки, patch і MCP | Підтримується через ретрансляцію нативного хука | Codex `PreToolUse` і `PostToolUse` ретранслюються для зафіксованих поверхонь нативних інструментів, включно з корисними навантаженнями MCP в Codex app-server `0.125.0` або новішому. Блокування підтримується; переписування аргументів — ні. |
| Політика нативних дозволів | Підтримується через ретрансляцію нативного хука | Codex `PermissionRequest` можна маршрутизувати через політику OpenClaw там, де це надає середовище виконання. Якщо OpenClaw не повертає рішення, Codex продовжує через свій звичайний шлях підтвердження guardian або користувача. |
| Захоплення траєкторії app-server | Підтримується | OpenClaw записує запит, який він надіслав до app-server, і сповіщення app-server, які він отримує. |
| Поверхня | Підтримка | Чому |
| --------------------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Цикл моделі OpenAI через Codex | Підтримується | App-server Codex керує ходом OpenAI, нативним відновленням потоку та нативним продовженням інструментів. |
| Маршрутизація та доставка каналів OpenClaw | Підтримується | Telegram, Discord, Slack, WhatsApp, iMessage та інші канали залишаються поза runtime моделі. |
| Динамічні інструменти OpenClaw | Підтримується | Codex просить OpenClaw виконувати ці інструменти, тому OpenClaw залишається в шляху виконання. |
| Plugins prompt і контексту | Підтримується | OpenClaw будує накладки prompt і проєктує контекст у хід Codex перед запуском або відновленням потоку. |
| Життєвий цикл рушія контексту | Підтримується | Збирання, ingest або обслуговування після ходу, а також координація Compaction рушія контексту виконуються для ходів Codex. |
| Хуки динамічних інструментів | Підтримується | `before_tool_call`, `after_tool_call` і middleware результатів інструментів виконуються навколо динамічних інструментів, якими володіє OpenClaw. |
| Хуки життєвого циклу | Підтримуються як спостереження адаптера | `llm_input`, `llm_output`, `agent_end`, `before_compaction` і `after_compaction` спрацьовують із чесними payload для режиму Codex. |
| Шлюз перегляду фінальної відповіді | Підтримується через ретрансляцію нативних хуків | `Stop` Codex ретранслюється до `before_agent_finalize`; `revise` просить Codex зробити ще один прохід моделі перед завершенням. |
| Блокування або спостереження за нативними shell, patch і MCP | Підтримується через ретрансляцію нативних хуків | `PreToolUse` і `PostToolUse` Codex ретранслюються для зафіксованих поверхонь нативних інструментів, включно з payload MCP у Codex app-server `0.125.0` або новішому. Блокування підтримується; переписування аргументів — ні. |
| Нативна політика дозволів | Підтримується через ретрансляцію нативних хуків | `PermissionRequest` Codex можна маршрутизувати через політику OpenClaw там, де runtime це підтримує. Якщо OpenClaw не повертає рішення, Codex продовжує через свій звичайний шлях підтвердження guardian або користувача. |
| Захоплення траєкторії app-server | Підтримується | OpenClaw записує запит, який він надіслав до app-server, і сповіщення app-server, які отримує. |
Не підтримується в середовищі виконання Codex v1:
Не підтримується в runtime Codex v1:
| Поверхня | Межа V1 | Майбутній шлях |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Мутація аргументів нативних інструментів | Нативні pre-tool hooks Codex можуть блокувати, але OpenClaw не переписує аргументи нативних інструментів Codex. | Потрібна підтримка hook/schema Codex для заміни вхідних даних інструмента. |
| Редагована історія нативного транскрипту Codex | Codex володіє канонічною історією нативного потоку. OpenClaw володіє дзеркалом і може проєктувати майбутній контекст, але не має змінювати непідтримувані внутрішні механізми. | Додати явні API app-server Codex, якщо потрібна хірургія нативного потоку. |
| `tool_result_persist` для записів нативних інструментів Codex | Цей хук перетворює записи транскрипту, якими володіє OpenClaw, а не записи нативних інструментів Codex. | Можна було б віддзеркалювати перетворені записи, але канонічне переписування потребує підтримки Codex. |
| Багаті метадані нативної Compaction | OpenClaw спостерігає початок і завершення Compaction, але не отримує стабільний список збереженого/відкинутого, дельту токенів або дані зведення. | Потрібні багатші події Compaction Codex. |
| Втручання в Compaction | Поточні хуки Compaction OpenClaw у режимі Codex працюють на рівні сповіщень. | Додати pre/post хуки Compaction Codex, якщо Plugins мають скасовувати або переписувати нативну Compaction. |
| Побайтне захоплення запиту до API моделі | OpenClaw може захоплювати запити й сповіщення app-server, але ядро Codex внутрішньо будує фінальний запит до API OpenAI. | Потрібна подія трасування запиту моделі Codex або API налагодження. |
| Поверхня | Межа V1 | Подальший шлях |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Мутація аргументів нативних інструментів | Нативні pre-tool hooks Codex можуть блокувати, але OpenClaw не переписує аргументи нативних інструментів Codex. | Потребує підтримки Codex hooks/schema для заміни вхідних даних інструмента. |
| Редагована історія нативного транскрипту Codex | Codex володіє канонічною історією нативного потоку. OpenClaw володіє дзеркалом і може проєктувати майбутній контекст, але не повинен змінювати непідтримувані внутрішні механізми. | Додати явні API app-server Codex, якщо потрібне втручання в нативний потік. |
| `tool_result_persist` для записів нативних інструментів Codex | Цей hook перетворює записи транскрипту, якими володіє OpenClaw, а не записи нативних інструментів Codex. | Може дзеркалити перетворені записи, але канонічне переписування потребує підтримки Codex. |
| Багаті метадані нативної Compaction | OpenClaw спостерігає початок і завершення Compaction, але не отримує стабільного списку збереженого/відкинутого, дельти токенів або payload підсумку. | Потрібні багатші події Compaction у Codex. |
| Втручання в Compaction | Поточні hooks Compaction в OpenClaw працюють у режимі Codex на рівні сповіщень. | Додати hooks Codex до/після Compaction, якщо Plugins мають блокувати або переписувати нативну Compaction. |
| Побайтове захоплення запиту до API моделі | OpenClaw може захоплювати запити та сповіщення app-server, але ядро Codex формує фінальний запит до OpenAI API внутрішньо. | Потрібна подія трасування запиту моделі Codex або debug API. |
## Інструменти, медіа та Compaction
Каркас Codex змінює лише низькорівневий виконавець вбудованого агента.
Harness Codex змінює лише низькорівневий виконавець вбудованого агента.
OpenClaw, як і раніше, формує список інструментів і отримує результати динамічних інструментів від
каркаса. Текст, зображення, відео, музика, TTS, підтвердження та вивід інструментів обміну повідомленнями
і далі проходять звичайним шляхом доставки OpenClaw.
OpenClaw і далі будує список інструментів і отримує результати динамічних інструментів від
harness. Текст, зображення, відео, музика, TTS, підтвердження та вивід інструментів повідомлень
і далі проходять через звичайний шлях доставки OpenClaw.
Ретрансляція нативних хуків навмисно є загальною, але контракт підтримки v1
обмежений шляхами нативних інструментів і дозволів Codex, які тестує OpenClaw. У
середовищі виконання Codex це включає корисні навантаження `PreToolUse`,
`PostToolUse` і `PermissionRequest` для shell, patch і MCP. Не припускайте, що кожна майбутня
подія хука Codex є поверхнею Plugin OpenClaw, доки її не буде названо в контракті
середовища виконання.
Ретрансляція нативних hooks навмисно є загальною, але контракт підтримки v1
обмежено шляхами нативних інструментів і дозволів Codex, які тестує OpenClaw. У
runtime Codex це включає payload `PreToolUse`,
`PostToolUse` і `PermissionRequest` для shell, patch та MCP. Не припускайте, що кожна майбутня
подія hook Codex є поверхнею Plugin OpenClaw, доки контракт runtime
не назве її явно.
Для `PermissionRequest` OpenClaw повертає явні рішення allow або deny
лише тоді, коли політика ухвалює рішення. Результат без рішення — це не allow. Codex
розглядає його як відсутність рішення хука і переходить до власного шляху підтвердження guardian або користувача.
лише коли це визначає політика. Результат без рішення — це не allow. Codex трактує його як
відсутність рішення hook і переходить до власного шляху підтвердження guardian або користувача.
Запити на підтвердження інструментів MCP Codex маршрутизуються через потік
підтвердження Plugin OpenClaw, коли Codex позначає `_meta.codex_approval_kind` як
`"mcp_tool_call"`. Запити Codex `request_user_input` надсилаються назад до
початкового чату, а наступне поставлене в чергу follow-up-повідомлення відповідає на цей нативний
запит сервера замість того, щоб спрямовуватися як додатковий контекст. Інші запити на elicitation MCP
і далі завершуються помилкою без небезпечного продовження.
Запити на підтвердження інструментів MCP Codex маршрутизуються через
потік підтвердження Plugin OpenClaw, коли Codex позначає `_meta.codex_approval_kind` як
`"mcp_tool_call"`. Prompt `request_user_input` Codex надсилаються назад до
початкового чату, а наступне повідомлення в черзі відповідає на цей запит нативного
сервера замість того, щоб спрямовуватися як додатковий контекст. Інші запити MCP на отримання даних
і далі завершуються помилкою безпечним способом.
Коли вибрана модель використовує каркас Codex, нативна Compaction потоку делегується
app-server Codex. OpenClaw зберігає дзеркало транскрипту для історії каналу,
пошуку, `/new`, `/reset` і майбутнього перемикання моделі або каркаса. Дзеркало
включає запит користувача, фінальний текст асистента та легковагові записи
міркування або плану Codex, коли app-server їх надсилає. Наразі OpenClaw лише
записує сигнали початку та завершення нативної Compaction. Він поки не показує
людинозрозуміле зведення Compaction або придатний для аудиту список того, які записи Codex
Коли вибрана модель використовує harness Codex, нативна Compaction потоку
делегується app-server Codex. OpenClaw зберігає дзеркало транскрипту для історії каналу,
пошуку, `/new`, `/reset` і майбутнього перемикання моделі або harness. Дзеркало
містить prompt користувача, фінальний текст асистента та полегшені записи міркування або плану Codex, коли app-server їх надсилає. Наразі OpenClaw лише записує сигнали початку та завершення нативної Compaction. Він іще не показує
людинозрозумілий підсумок Compaction або аудитований список того, які записи Codex
зберіг після Compaction.
Оскільки Codex володіє канонічним нативним потоком, `tool_result_persist` наразі
не переписує записи результатів нативних інструментів Codex. Він застосовується лише тоді,
коли OpenClaw записує результат інструмента в транскрипт сесії, яким володіє OpenClaw.
Оскільки Codex володіє канонічним нативним потоком, `tool_result_persist` наразі не
переписує записи результатів нативних інструментів Codex. Він застосовується лише коли
OpenClaw записує результат інструмента в транскрипт сесії, яким володіє OpenClaw.
Генерація медіа не потребує PI. Генерація зображень, відео, музики, PDF, TTS і
розуміння медіа й далі використовують відповідні налаштування провайдера/моделі, як-от
Генерація медіа не потребує PI. Генерація зображень, відео, музики, PDF, TTS і розуміння медіа
і далі використовують відповідні налаштування провайдера/моделі, як-от
`agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` і
`messages.tts`.
## Усунення несправностей
**Codex не з’являється як звичайний провайдер `/model`:** це очікувана поведінка для
**Codex не з’являється як звичайний провайдер `/model`:** це очікувано для
нових конфігурацій. Виберіть модель `openai/gpt-*` з
`agentRuntime.id: "codex"` (або застаріле посилання `codex/*`), увімкніть
`plugins.entries.codex.enabled` і перевірте, чи `plugins.allow` не виключає
`codex`.
**OpenClaw використовує PI замість Codex:** `agentRuntime.id: "auto"` усе ще може використовувати PI як
бекенд сумісності, коли жоден каркас Codex не бере на себе цей запуск. Установіть
backend сумісності, коли жоден harness Codex не бере виконання на себе. Встановіть
`agentRuntime.id: "codex"`, щоб примусово вибрати Codex під час тестування. Примусове
середовище виконання Codex тепер завершується помилкою замість переходу до PI, якщо ви
явно не встановите `agentRuntime.fallback: "pi"`. Щойно app-server Codex
вибрано, його помилки відображаються напряму без додаткової конфігурації запасного варіанта.
runtime Codex тепер завершується помилкою замість переходу на PI, якщо ви
явно не встановили `agentRuntime.fallback: "pi"`. Щойно app-server Codex
вибрано, його збої проявляються безпосередньо без додаткової конфігурації резервного варіанта.
**App-server відхиляється:** оновіть Codex, щоб рукостискання app-server
повідомляло версію `0.125.0` або новішу. Попередні випуски тієї ж версії або версії з суфіксом збірки,
такі як `0.125.0-alpha.2` або `0.125.0+custom`, відхиляються, тому що саме стабільний
мінімум протоколу `0.125.0` тестує OpenClaw.
**app-server відхиляється:** оновіть Codex так, щоб handshake app-server
повідомляв версію `0.125.0` або новішу. Попередні випуски тієї самої версії або версії
із суфіксом збірки, як-от `0.125.0-alpha.2` або `0.125.0+custom`, відхиляються, оскільки
стабільна нижня межа протоколу `0.125.0` — це те, що тестує OpenClaw.
**Виявлення моделей повільне:** зменште `plugins.entries.codex.config.discovery.timeoutMs`
або вимкніть виявлення.
**Транспорт WebSocket відразу завершується помилкою:** перевірте `appServer.url`, `authToken`
і те, що віддалений app-server використовує ту саму версію протоколу app-server Codex.
**Транспорт WebSocket одразу завершується помилкою:** перевірте `appServer.url`, `authToken`
і що віддалений app-server використовує ту саму версію протоколу app-server Codex.
**Модель не Codex використовує PI:** це очікувана поведінка, якщо ви не примусово встановили
**Модель не Codex використовує PI:** це очікувано, якщо ви не примусово встановили
`agentRuntime.id: "codex"` для цього агента або не вибрали застаріле
посилання `codex/*`. Звичайні `openai/gpt-*` та інші посилання провайдерів залишаються на своєму нормальному
шляху провайдера в режимі `auto`. Якщо ви примусово встановите `agentRuntime.id: "codex"`, кожен вбудований
хід для цього агента має бути моделлю OpenAI, підтримуваною Codex.
посилання `codex/*`. Звичайні `openai/gpt-*` та інші посилання провайдерів залишаються на своєму
звичайному шляху провайдера в режимі `auto`. Якщо ви примусово встановите `agentRuntime.id: "codex"`, кожен вбудований
хід для цього агента має використовувати підтримувану Codex модель OpenAI.
**Computer Use установлено, але інструменти не запускаються:** перевірте
`/codex computer-use status` з нової сесії. Якщо інструмент повідомляє
`Native hook relay unavailable`, використайте `/new` або `/reset`; якщо це не зникає, перезапустіть
gateway, щоб очистити застарілі реєстрації нативних хуків. Якщо `computer-use.list_apps`
**Computer Use встановлено, але інструменти не працюють:** перевірте
`/codex computer-use status` із нової сесії. Якщо інструмент повідомляє
`Native hook relay unavailable`, використайте `/new` або `/reset`; якщо це не допомагає, перезапустіть
gateway, щоб очистити застарілі реєстрації нативних hooks. Якщо `computer-use.list_apps`
перевищує час очікування, перезапустіть Codex Computer Use або Codex Desktop і повторіть спробу.
## Пов’язані матеріали
## Пов’язане
- [Plugins каркаса агента](/uk/plugins/sdk-agent-harness)
- [Середовища виконання агента](/uk/concepts/agent-runtimes)
- [Plugins harness агента](/uk/plugins/sdk-agent-harness)
- [Середовища виконання агентів](/uk/concepts/agent-runtimes)
- [Провайдери моделей](/uk/concepts/model-providers)
- [Провайдер OpenAI](/uk/providers/openai)
- [Стан](/uk/cli/status)
- [Хуки Plugin](/uk/plugins/hooks)
- [Довідник з конфігурації](/uk/gateway/configuration-reference)
- [Довідник із конфігурації](/uk/gateway/configuration-reference)
- [Тестування](/uk/help/testing-live#live-codex-app-server-harness-smoke)

View File

@ -0,0 +1,274 @@
---
read_when:
- Ви налаштовуєте вбудований плагін memory-lancedb
- Вам потрібна довготривала пам’ять на базі LanceDB з автоматичним пригадуванням або автоматичним збереженням
- Ви використовуєте локальні ембединги, сумісні з OpenAI, наприклад Ollama
sidebarTitle: Memory LanceDB
summary: Налаштуйте вбудований плагін пам’яті LanceDB, включно з локальними ембедингами, сумісними з Ollama
title: Пам’ять LanceDB
x-i18n:
generated_at: "2026-04-28T00:03:39Z"
model: gpt-5.4
provider: openai
source_hash: e3d0e1a286dfae36967a04863c047f40b629656efa62364c65e67283d3c7a945
source_path: plugins/memory-lancedb.md
workflow: 15
---
`memory-lancedb` — це вбудований плагін пам’яті, який зберігає довготривалу пам’ять у
LanceDB і використовує ембединги для пригадування. Він може автоматично
пригадувати релевантні спогади перед ходом моделі та фіксувати важливі факти
після відповіді.
Використовуйте його, якщо вам потрібна локальна векторна база даних для пам’яті,
потрібна точка доступу до ембедингів, сумісна з OpenAI, або якщо ви хочете
зберігати базу даних пам’яті поза типовим вбудованим сховищем пам’яті.
<Note>
`memory-lancedb` — це активний плагін пам’яті. Увімкніть його, вибравши слот
пам’яті через `plugins.slots.memory = "memory-lancedb"`. Супутні плагіни, такі як
`memory-wiki`, можуть працювати поруч із ним, але лише один плагін володіє
слотом Active Memory.
</Note>
## Швидкий старт
```json5
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
apiKey: "${OPENAI_API_KEY}",
model: "text-embedding-3-small",
},
autoRecall: true,
autoCapture: false,
},
},
},
},
}
```
Перезапустіть Gateway після зміни конфігурації плагіна:
```bash
openclaw gateway restart
```
Потім перевірте, що плагін завантажено:
```bash
openclaw plugins list
```
## Ембединги Ollama
`memory-lancedb` викликає ембединги через API ембедингів, сумісний з OpenAI.
Для ембедингів Ollama використовуйте тут endpoint сумісності Ollama `/v1`. Це
стосується лише ембедингів; провайдер чату/моделей Ollama використовує нативний
URL API Ollama, описаний у [Ollama](/uk/providers/ollama).
```json5
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
apiKey: "ollama",
baseUrl: "http://127.0.0.1:11434/v1",
model: "mxbai-embed-large",
dimensions: 1024,
},
recallMaxChars: 400,
autoRecall: true,
autoCapture: false,
},
},
},
},
}
```
Установіть `dimensions` для нестандартних моделей ембедингів. OpenClaw знає
розмірність для `text-embedding-3-small` і `text-embedding-3-large`; для
користувацьких моделей потрібно вказати це значення в конфігурації, щоб LanceDB
міг створити векторний стовпець.
Для невеликих локальних моделей ембедингів зменште `recallMaxChars`, якщо
бачите помилки довжини контексту від локального сервера.
## Обмеження пригадування та збереження
`memory-lancedb` має два окремі текстові обмеження:
| Налаштування | Типово | Діапазон | Застосовується до |
| ---------------- | ------- | --------- | --------------------------------------------- |
| `recallMaxChars` | `1000` | 100-10000 | тексту, надісланого до API ембедингів для пригадування |
| `captureMaxChars` | `500` | 100-10000 | довжини повідомлення асистента, придатної для збереження |
`recallMaxChars` керує автоматичним пригадуванням, інструментом `memory_recall`,
шляхом запиту `memory_forget` і `openclaw ltm search`. Автоматичне пригадування
надає перевагу останньому повідомленню користувача в ході та повертається до
повного prompt лише тоді, коли повідомлення користувача недоступне. Це дозволяє
не включати метадані каналу й великі блоки prompt у запит на ембединг.
`captureMaxChars` визначає, чи є відповідь достатньо короткою, щоб її можна було
розглядати для автоматичного збереження. Це не обмежує ембединги запитів для
пригадування.
## Команди
Коли `memory-lancedb` є активним плагіном пам’яті, він реєструє простір імен CLI
`ltm`:
```bash
openclaw ltm list
openclaw ltm search "project preferences"
openclaw ltm stats
```
Агенти також отримують інструменти пам’яті LanceDB від активного плагіна пам’яті:
- `memory_recall` для пригадування на базі LanceDB
- `memory_store` для збереження важливих фактів, уподобань, рішень і сутностей
- `memory_forget` для видалення відповідних спогадів
## Сховище
Типово дані LanceDB розміщуються в `~/.openclaw/memory/lancedb`. Щоб змінити
шлях, використайте `dbPath`:
```json5
{
plugins: {
entries: {
"memory-lancedb": {
enabled: true,
config: {
dbPath: "~/.openclaw/memory/lancedb",
embedding: {
apiKey: "${OPENAI_API_KEY}",
model: "text-embedding-3-small",
},
},
},
},
},
}
```
`storageOptions` приймає рядкові пари ключ/значення для бекендів сховища LanceDB
і підтримує розгортання `${ENV_VAR}`:
```json5
{
plugins: {
entries: {
"memory-lancedb": {
enabled: true,
config: {
dbPath: "s3://memory-bucket/openclaw",
storageOptions: {
access_key: "${AWS_ACCESS_KEY_ID}",
secret_key: "${AWS_SECRET_ACCESS_KEY}",
endpoint: "${AWS_ENDPOINT_URL}",
},
embedding: {
apiKey: "${OPENAI_API_KEY}",
model: "text-embedding-3-small",
},
},
},
},
},
}
```
## Залежності середовища виконання
`memory-lancedb` залежить від нативного пакета `@lancedb/lancedb`. Паковані
встановлення OpenClaw спочатку намагаються використати вбудовану залежність
середовища виконання та можуть відновити залежність середовища виконання плагіна
в стані OpenClaw, якщо вбудований імпорт недоступний.
Якщо в старішому встановленні під час завантаження плагіна в журналі з’являється
помилка про відсутній `dist/package.json` або відсутній `@lancedb/lancedb`,
оновіть OpenClaw і перезапустіть Gateway.
Якщо плагін журналює, що LanceDB недоступний на `darwin-x64`, використовуйте на
цій машині типовий бекенд пам’яті, перенесіть Gateway на підтримувану платформу
або вимкніть `memory-lancedb`.
## Усунення проблем
### Довжина вхідних даних перевищує довжину контексту
Зазвичай це означає, що модель ембедингів відхилила запит на пригадування:
```text
memory-lancedb: recall failed: Error: 400 the input length exceeds the context length
```
Установіть менше значення `recallMaxChars`, а потім перезапустіть Gateway:
```json5
{
plugins: {
entries: {
"memory-lancedb": {
config: {
recallMaxChars: 400,
},
},
},
},
}
```
Для Ollama також перевірте, що сервер ембедингів доступний з хоста Gateway:
```bash
curl http://127.0.0.1:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"mxbai-embed-large","input":"hello"}'
```
### Непідтримувана модель ембедингів
Без `dimensions` відомі лише вбудовані розмірності ембедингів OpenAI. Для
локальних або користувацьких моделей ембедингів установіть `embedding.dimensions`
у розмір вектора, який повідомляє ця модель.
### Плагін завантажується, але спогади не з’являються
Перевірте, що `plugins.slots.memory` вказує на `memory-lancedb`, а потім
виконайте:
```bash
openclaw ltm stats
openclaw ltm search "recent preference"
```
Якщо `autoCapture` вимкнено, плагін пригадуватиме наявні спогади, але не
зберігатиме автоматично нові. Використовуйте інструмент `memory_store` або
увімкніть `autoCapture`, якщо хочете автоматичне збереження.
## Пов’язані матеріали
- [Огляд пам’яті](/uk/concepts/memory)
- [Active Memory](/uk/concepts/active-memory)
- [Пошук у пам’яті](/uk/concepts/memory-search)
- [Memory Wiki](/uk/plugins/memory-wiki)
- [Ollama](/uk/providers/ollama)

View File

@ -1,311 +1,317 @@
---
read_when:
- Вибір правильного підшляху plugin-sdk для імпорту plugin
- Аудит підшляхів bundled-plugin і допоміжних поверхонь
- Вибір правильного підшляху plugin-sdk для імпорту Plugin
- Аудит підшляхів bundled-plugin і поверхонь допоміжних функцій
summary: 'Каталог підшляхів Plugin SDK: які імпорти де розміщені, згруповано за областями'
title: Підшляхи Plugin SDK
x-i18n:
generated_at: "2026-04-27T23:28:31Z"
generated_at: "2026-04-28T00:03:44Z"
model: gpt-5.4
provider: openai
source_hash: 36691aa4951e8207e5d87b532e6a653cf50f9a1a74aaeaed289ef2f6778555bd
source_hash: 5a51833cc4d8136f4e432822f3fc27e38373784519cfcb7ce209dbe01fa0a325
source_path: plugins/sdk-subpaths.md
workflow: 15
---
Plugin SDK представлено як набір вузьких підшляхів у `openclaw/plugin-sdk/`.
Ця сторінка каталогізує найуживаніші підшляхи, згруповані за призначенням. Згенерований
повний список із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`;
зарезервовані допоміжні підшляхи bundled-plugin також з’являються там, але є
деталлю реалізації, якщо лише сторінка документації явно не просуває їх.
Plugin SDK представлений як набір вузьких підшляхів у `openclaw/plugin-sdk/`.
На цій сторінці наведено каталог поширених підшляхів, згрупованих за призначенням. Згенерований
повний список із понад 200 підшляхів міститься у `scripts/lib/plugin-sdk-entrypoints.json`;
зарезервовані допоміжні підшляхи bundled-plugin також наведені там, але є деталями
реалізації, якщо лише певна сторінка документації явно не рекомендує їх.
Для посібника з розробки plugin див. [Огляд Plugin SDK](/uk/plugins/sdk-overview).
Посібник з розробки Plugin див. у [Огляд Plugin SDK](/uk/plugins/sdk-overview).
## Точка входу plugin
## Точка входу Plugin
| Підшлях | Основні експорти |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/testing` | Публічні тестові фікстури plugin, допоміжні засоби реєстрації/каталогу провайдерів, хуки контрактів майстра та допоміжні засоби підтримки контрактів bundled-plugin |
| `plugin-sdk/plugin-test-api` | Мінімальний конструктор моків `OpenClawPluginApi` для прямих unit-тестів реєстрації plugin |
| `plugin-sdk/migration` | Допоміжні засоби елементів провайдера міграції, як-от `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` | Публічні тестові фікстури Plugin, допоміжні функції реєстрації/каталогу провайдерів, хуки контрактів майстра та допоміжні функції підтримки контрактів bundled-plugin |
| `plugin-sdk/plugin-test-api` | Мінімальний конструктор мока `OpenClawPluginApi` для прямих модульних тестів реєстрації Plugin |
| `plugin-sdk/channel-test-helpers` | Допоміжні функції для тестування життєвого циклу облікового запису каналу, директорії, конфігурації надсилання, мока середовища виконання та хуків |
| `plugin-sdk/plugin-test-contracts` | Допоміжні функції контрактів для реєстрації Plugin, маніфесту пакета, публічного артефакту, API середовища виконання, побічного ефекту імпорту та прямого імпорту |
| `plugin-sdk/provider-test-contracts` | Допоміжні функції контрактів для середовища виконання провайдера, автентифікації, виявлення, онбордингу, каталогу, web-search/fetch і майстра |
| `plugin-sdk/migration` | Допоміжні функції елементів провайдера міграції, як-от `createMigrationItem`, константи причин, маркери статусу елементів, допоміжні функції редагування та `summarizeMigrationItems` |
| `plugin-sdk/migration-runtime` | Допоміжні функції міграції для середовища виконання, як-от `copyMigrationFileItem` і `writeMigrationReport` |
<AccordionGroup>
<Accordion title="Підшляхи каналів">
<Accordion title="Підшляхи каналу">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, підказки списку дозволених, конструктори стану налаштування |
| `plugin-sdk/setup` | Спільні допоміжні функції майстра налаштування, підказки allowlist, конструктори статусу налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби конфігурації/контролю дій для багатьох облікових записів, допоміжні засоби резервного використання типового облікового запису |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації ідентифікатора облікового запису |
| `plugin-sdk/account-resolution` | Пошук облікового запису + допоміжні засоби резервного використання типового |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку облікових записів/дій з обліковими записами |
| `plugin-sdk/account-core` | Допоміжні функції конфігурації/шлюзу дій для кількох облікових записів, допоміжні функції резервного переходу до облікового запису за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні функції нормалізації ідентифікатора облікового запису |
| `plugin-sdk/account-resolution` | Допоміжні функції пошуку облікового запису та резервного переходу до типового значення |
| `plugin-sdk/account-helpers` | Вузькі допоміжні функції списку облікових записів/дій з обліковими записами |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та універсальний конструктор |
| `plugin-sdk/channel-config-schema` | Спільні примітиви схеми конфігурації каналу та узагальнений конструктор |
| `plugin-sdk/channel-config-schema-legacy` | Застарілі схеми конфігурації bundled-channel лише для сумісності з bundled |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервною підтримкою bundled-contract |
| `plugin-sdk/command-gating` | Вузькі допоміжні засоби шлюзування авторизації команд |
| `plugin-sdk/telegram-command-config` | Допоміжні функції нормалізації/валідації користувацьких команд Telegram із резервною підтримкою bundled-contract |
| `plugin-sdk/command-gating` | Вузькі допоміжні функції шлюзу авторизації команд |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні засоби життєвого циклу/фіналізації потоку чернетки |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних даних + побудови конверта |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та диспетчеризації вхідних відповідей |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-send-deps` | Полегшений пошук залежностей надсилання вихідних даних для адаптерів каналів |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби runtime для вихідної доставки, ідентичності, делегата надсилання, сесії, форматування та планування корисного навантаження |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні засоби нормалізації опитувань |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу прив’язок потоків і адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий конструктор корисного навантаження медіа агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби runtime для прив’язки розмов/потоків, pairing і налаштованих прив’язок |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації runtime |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби runtime для визначення групових політик |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/підсумку стану каналу |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, допоміжні функції життєвого циклу/фіналізації чернеткового потоку |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні функції маршрутів вхідних повідомлень і конструктора envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні функції запису та диспетчеризації вхідних відповідей |
| `plugin-sdk/messaging-targets` | Допоміжні функції розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні функції завантаження вихідних медіа |
| `plugin-sdk/outbound-send-deps` | Легковаговий пошук залежностей надсилання вихідних повідомлень для адаптерів каналів |
| `plugin-sdk/outbound-runtime` | Допоміжні функції доставки вихідних повідомлень, ідентичності, делегата надсилання, сесії, форматування та планування payload |
| `plugin-sdk/poll-runtime` | Вузькі допоміжні функції нормалізації poll |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні функції життєвого циклу thread-binding і адаптера |
| `plugin-sdk/agent-media-payload` | Застарілий конструктор payload медіа агента |
| `plugin-sdk/conversation-runtime` | Допоміжні функції прив’язки conversation/thread, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжна функція знімка конфігурації середовища виконання |
| `plugin-sdk/runtime-group-policy` | Допоміжні функції визначення group-policy для середовища виконання |
| `plugin-sdk/channel-status` | Спільні допоміжні функції знімка/зведення статусу каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти plugin каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації списку дозволених |
| `plugin-sdk/group-access` | Спільні допоміжні засоби прийняття рішень щодо групового доступу |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби runtime для семантичного подання повідомлень, доставки та застарілих інтерактивних відповідей. Див. [Подання повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Барель сумісності для debounce вхідних даних, зіставлення згадок, допоміжних засобів політики згадок і допоміжних засобів конверта |
| `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні засоби debounce вхідних даних |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні засоби політики згадок, маркерів згадок і тексту згадок без ширшої поверхні runtime вхідних даних |
| `plugin-sdk/channel-envelope` | Вузькі допоміжні засоби форматування конверта вхідних даних |
| `plugin-sdk/channel-location` | Допоміжні засоби контексту розташування каналу та форматування |
| `plugin-sdk/channel-logging` | Допоміжні засоби логування каналів для відкидання вхідних даних і збоїв typing/ack |
| `plugin-sdk/channel-config-writes` | Допоміжні функції авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти Plugin каналу |
| `plugin-sdk/allowlist-config-edit` | Допоміжні функції редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні функції рішень щодо group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні функції автентифікації/захисту direct-DM |
| `plugin-sdk/interactive-runtime` | Допоміжні функції семантичного представлення повідомлень, доставки та застарілих інтерактивних відповідей. Див. [Представлення повідомлень](/uk/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Барель сумісності для debounce вхідних повідомлень, зіставлення згадок, допоміжних функцій mention-policy та envelope |
| `plugin-sdk/channel-inbound-debounce` | Вузькі допоміжні функції debounce вхідних повідомлень |
| `plugin-sdk/channel-mention-gating` | Вузькі допоміжні функції mention-policy, маркерів згадок і тексту згадок без ширшої поверхні середовища виконання вхідних повідомлень |
| `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 |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контрактів каналів |
| `plugin-sdk/channel-feedback` | Підключення зворотного зв’язку/реакцій |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби secret-контрактів, як-от `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи secret-цілей |
| `plugin-sdk/channel-actions` | Допоміжні функції дій з повідомленнями каналу, а також застарілі допоміжні функції native schema, збережені для сумісності Plugin |
| `plugin-sdk/channel-targets` | Допоміжні функції розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контрактів каналу |
| `plugin-sdk/channel-feedback` | Зв’язування feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні функції secret-contract, як-от `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей secret |
</Accordion>
<Accordion title="Підшляхи провайдерів">
<Accordion title="Підшляхи провайдера">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `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` | Допоміжні засоби runtime для визначення API-ключів для plugin провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілів API-ключів, як-от `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний конструктор результатів OAuth auth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні засоби інтерактивного входу для plugin провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища auth провайдера |
| `plugin-sdk/lmstudio` | Підтримуваний фасад провайдера LM Studio для налаштування, виявлення каталогу та підготовки моделі в середовищі виконання |
| `plugin-sdk/lmstudio-runtime` | Підтримуваний фасад середовища виконання LM Studio для типових параметрів локального сервера, виявлення моделей, заголовків запитів і допоміжних функцій для завантажених моделей |
| `plugin-sdk/provider-setup` | Кураторські допоміжні функції налаштування локального/self-hosted провайдера |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні функції налаштування self-hosted провайдера, сумісного з OpenAI |
| `plugin-sdk/cli-backend` | Типові значення CLI backend + константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні функції визначення API-key у середовищі виконання для Plugin провайдера |
| `plugin-sdk/provider-auth-api-key` | Допоміжні функції онбордингу/запису профілю API-key, як-от `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний конструктор результату автентифікації OAuth |
| `plugin-sdk/provider-auth-login` | Спільні допоміжні функції інтерактивного входу для Plugin провайдера |
| `plugin-sdk/provider-env-vars` | Допоміжні функції пошуку auth env var провайдера |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори політик replay, допоміжні засоби endpoint провайдерів та допоміжні засоби нормалізації model-id, як-от `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Хуки runtime каталогу провайдерів і шви реєстру plugin-провайдерів для тестів контрактів |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні конструктори replay-policy, допоміжні функції endpoint провайдера та допоміжні функції нормалізації model-id, як-от `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-runtime` | Хук середовища виконання каталогу провайдера та шви реєстру plugin-provider для контрактних тестів |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `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 |
| `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-http` | Загальні допоміжні функції HTTP/можливостей endpoint провайдера, помилки HTTP провайдера та допоміжні функції multipart form для аудіотранскрипції |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні функції контракту config/selection для web-fetch, як-от `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні функції реєстрації/кешу провайдера web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні функції config/credential для web-search для провайдерів, яким не потрібне вбудовування enable Plugin |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні функції контракту config/credential для web-search, як-от `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setters/getters облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні функції реєстрації/кешу/середовища виконання провайдера web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні функції сумісності xAI, як-от `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-transport-runtime` | Допоміжні засоби runtime транспорту нативного провайдера, як-от guarded fetch, трансформації транспортних повідомлень і потоки записуваних транспортних подій |
| `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби process-local singleton/map/cache |
| `plugin-sdk/group-activation` | Вузькі допоміжні засоби режиму активації груп і розбору команд |
| `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 і writable потоки transport event |
| `plugin-sdk/provider-onboard` | Допоміжні функції patch конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні функції singleton/map/cache, локальних для процесу |
| `plugin-sdk/group-activation` | Вузькі допоміжні функції режиму активації групи та розбору команд |
</Accordion>
<Accordion title="Підшляхи auth і безпеки">
<Accordion title="Підшляхи автентифікації та безпеки">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, включно з форматуванням меню динамічних аргументів, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні функції реєстру команд, включно з форматуванням меню динамічних аргументів, допоміжні функції авторизації відправника |
| `plugin-sdk/command-status` | Конструктори повідомлень команд/довідки, як-от `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення затверджувача та 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 для гарячих точок входу каналу |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для обробника approval; віддавайте перевагу вужчим швам adapter/gateway, якщо їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби native цілей approval + прив’язки облікових записів |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби корисного навантаження відповіді для exec/plugin approval |
| `plugin-sdk/approval-runtime` | Допоміжні засоби корисного навантаження exec/plugin approval, native допоміжні засоби маршрутизації/runtime approval і структуровані допоміжні засоби відображення approval, як-от `formatApprovalDisplayPath` |
| `plugin-sdk/reply-dedupe` | Вузькі допоміжні засоби скидання дедуплікації вхідних відповідей |
| `plugin-sdk/channel-contract-testing` | Вузькі допоміжні засоби тестування контрактів каналів без широкого тестового бареля |
| `plugin-sdk/command-auth-native` | Native auth команд, форматування меню динамічних аргументів і native допоміжні засоби session-target |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-primitives-runtime` | Полегшені предикати тексту команд для гарячих шляхів каналів |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команд і поверхні команд |
| `plugin-sdk/approval-auth-runtime` | Допоміжні функції визначення затверджувача та автентифікації дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні функції профілю/фільтра затвердження native exec |
| `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки native approval |
| `plugin-sdk/approval-gateway-runtime` | Спільна допоміжна функція визначення Gateway approval |
| `plugin-sdk/approval-handler-adapter-runtime` | Легковагові допоміжні функції завантаження адаптера native approval для гарячих точок входу каналу |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні функції середовища виконання approval handler; віддавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні функції цілі native approval + прив’язки облікового запису |
| `plugin-sdk/approval-reply-runtime` | Допоміжні функції payload відповіді для затвердження exec/Plugin |
| `plugin-sdk/approval-runtime` | Допоміжні функції payload затвердження exec/Plugin, допоміжні функції маршрутизації/середовища виконання native approval і допоміжні функції структурованого відображення approval, як-от `formatApprovalDisplayPath` |
| `plugin-sdk/reply-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` | Легковагові предикати тексту команд для гарячих шляхів каналу |
| `plugin-sdk/command-surface` | Допоміжні функції нормалізації command-body і command-surface |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання secret-контрактів для secret-поверхонь каналів/plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби типізації `coerceSecretRef` і SecretRef для парсингу secret-контрактів/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, шлюзування DM, зовнішнього вмісту, редагування чутливого тексту, порівняння секретів у сталий час і збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватних мереж |
| `plugin-sdk/ssrf-dispatcher` | Вузькі pinned-dispatcher допоміжні засоби без широкої інфраструктурної runtime-поверхні |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, SSRF-захищеного fetch, помилок SSRF і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби парсингу secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запитів/цілей Webhook і приведення raw websocket/body |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту/тайм-аутів |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні функції збирання secret-contract для поверхонь secret каналу/Plugin |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні функції `coerceSecretRef` і типізації SecretRef для розбору secret-contract/config |
| `plugin-sdk/security-runtime` | Спільні допоміжні функції trust, DM gating, external-content, редагування чутливого тексту, порівняння secret за сталий час і збирання secret |
| `plugin-sdk/ssrf-policy` | Допоміжні функції allowlist хостів і політики SSRF для приватної мережі |
| `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/webhook-ingress` | Допоміжні функції запиту/цілі Webhook і приведення raw websocket/body |
| `plugin-sdk/webhook-request-guards` | Допоміжні функції розміру body/timeout запиту |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
<Accordion title="Підшляхи середовища виконання та сховища">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/встановлення plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, logger, timeout, retry і backoff |
| `plugin-sdk/browser-config` | Підтримуваний фасад конфігурації браузера для нормалізованого профілю/типових значень, парсингу URL CDP і допоміжних засобів auth керування браузером |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку runtime-context каналу |
| `plugin-sdk/runtime` | Широкі допоміжні функції середовища виконання/логування/резервного копіювання/встановлення Plugin |
| `plugin-sdk/runtime-env` | Вузькі допоміжні функції env середовища виконання, 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` | Спільні допоміжні засоби команд/хуків/http/інтерактивності plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline для Webhook/внутрішніх хуків |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy імпорту/runtime-прив’язки, як-от `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби виконання процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування, версії, виклику аргументів і lazy груп команд |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта Gateway, Gateway CLI RPC, помилок протоколу Gateway і patch стану каналу |
| `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації plugin, як-от `OpenClawConfig` і типів конфігурації каналів/провайдерів |
| `plugin-sdk/plugin-config-runtime` | Допоміжні засоби пошуку конфігурації plugin у 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` | Виявлення автопосилань на файлові посилання без широкого бареля text-runtime |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, конструктори можливостей approval, допоміжні засоби auth/профілів, native допоміжні засоби маршрутизації/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/plugin-runtime` | Спільні допоміжні функції команд/хуків/http/interactive Plugin |
| `plugin-sdk/hook-runtime` | Спільні допоміжні функції конвеєра Webhook/внутрішніх хуків |
| `plugin-sdk/lazy-runtime` | Допоміжні функції lazy import/binding середовища виконання, як-от `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні функції exec процесу |
| `plugin-sdk/cli-runtime` | Допоміжні функції форматування CLI, wait, version, invocation аргументів і lazy command-group |
| `plugin-sdk/gateway-runtime` | Допоміжні функції клієнта Gateway, CLI RPC Gateway, помилок протоколу Gateway та patch статусу каналу |
| `plugin-sdk/config-types` | Поверхня конфігурації лише для типів для форм конфігурації Plugin, як-от `OpenClawConfig` і типів конфігурації каналу/провайдера |
| `plugin-sdk/plugin-config-runtime` | Допоміжні функції пошуку plugin-config у середовищі виконання, як-от `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` | Виявлення autolink посилань на файли без широкого barrel `text-runtime` |
| `plugin-sdk/approval-runtime` | Допоміжні функції затвердження exec/Plugin, конструктори approval-capability, допоміжні функції auth/profile, допоміжні функції native routing/runtime і форматування структурованого шляху відображення approval |
| `plugin-sdk/reply-runtime` | Спільні допоміжні функції середовища виконання для вхідних повідомлень/відповідей, chunking, dispatch, Heartbeat, планувальник відповідей |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні функції dispatch/finalize відповідей і conversation-label |
| `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` | Допоміжні засоби маршруту/ключа сесії/прив’язки облікового запису, як-от `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби підсумків стану каналів/облікових записів, типові значення runtime-state і допоміжні засоби метаданих issue |
| `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` | Допоміжні засоби логера підсистеми та редагування |
| `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` | Допоміжні засоби повторно вхідного блокування файлів |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби дискового кешу дедуплікації |
| `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/сесії ACP і dispatch відповідей |
| `plugin-sdk/acp-binding-resolve-runtime` | Визначення прив’язок ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime агента |
| `plugin-sdk/boolean-param` | Нестрогий зчитувач булевих параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби початкового налаштування пристрою та токенів pairing |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді `/models` command/provider |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації native команд |
| `plugin-sdk/agent-harness` | Експериментальна trusted-plugin поверхня для низькорівневих harness агента: типи harness, допоміжні засоби steer/abort активного запуску, допоміжні засоби мосту tool OpenClaw, допоміжні засоби політики runtime-plan tool, класифікація результатів terminal, допоміжні засоби форматування/деталізації прогресу tool і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I |
| `plugin-sdk/async-lock-runtime` | Допоміжний засіб process-local async lock для невеликих файлів runtime-стану |
| `plugin-sdk/channel-activity-runtime` | Допоміжний засіб телеметрії активності каналу |
| `plugin-sdk/concurrency-runtime` | Допоміжний засіб обмеженої конкурентності async-задач |
| `plugin-sdk/dedupe-runtime` | Допоміжні засоби кешу дедуплікації в пам’яті |
| `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` | Допоміжні засоби черги системних подій |
| `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/reply-chunking` | Вузькі допоміжні функції chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні функції шляху сховища сесій, session-key, updated-at і мутації сховища |
| `plugin-sdk/cron-store-runtime` | Допоміжні функції шляху/load/save сховища Cron |
| `plugin-sdk/state-paths` | Допоміжні функції шляхів директорій state/OAuth |
| `plugin-sdk/routing` | Допоміжні функції маршруту/ключа сесії/прив’язки облікового запису, як-от `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні функції зведення статусу каналу/облікового запису, типові значення runtime-state і допоміжні функції метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні функції target resolver |
| `plugin-sdk/string-normalization-runtime` | Допоміжні функції нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL із вхідних даних типу fetch/request |
| `plugin-sdk/run-command` | Виконавець команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені читачі параметрів 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` | Допоміжні функції кешу дедуплікації на диску |
| `plugin-sdk/acp-runtime` | Допоміжні функції середовища виконання/сесії ACP і dispatch відповідей |
| `plugin-sdk/acp-binding-resolve-runtime` | Розв’язання прив’язки ACP лише для читання без імпортів запуску життєвого циклу |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви schema конфігурації середовища виконання агента |
| `plugin-sdk/boolean-param` | Читач вільного boolean параметра |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні функції розв’язання збігів небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні функції початкової ініціалізації пристрою та pairing token |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних функцій passive-channel, статусу й ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні функції відповідей команди `/models`/провайдера |
| `plugin-sdk/skill-commands-runtime` | Допоміжні функції списку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні функції реєстру/build/serialize нативних команд |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих harness агента: типи harness, допоміжні функції steer/abort активного запуску, допоміжні функції мосту інструментів OpenClaw, допоміжні функції політики tool для runtime-plan, класифікація результатів terminal, допоміжні функції форматування/деталізації прогресу tool і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні функції виявлення endpoint Z.A.I |
| `plugin-sdk/async-lock-runtime` | Допоміжна функція локального для процесу async lock для невеликих файлів runtime state |
| `plugin-sdk/channel-activity-runtime` | Допоміжна функція telemetry активності каналу |
| `plugin-sdk/concurrency-runtime` | Допоміжна функція обмеженої конкурентності async задач |
| `plugin-sdk/dedupe-runtime` | Допоміжні функції кешу дедуплікації в пам’яті |
| `plugin-sdk/delivery-queue-runtime` | Допоміжна функція drain черги очікуваної вихідної доставки |
| `plugin-sdk/file-access-runtime` | Допоміжні функції безпечних шляхів до локальних файлів і джерел медіа |
| `plugin-sdk/heartbeat-runtime` | Допоміжні функції подій і видимості Heartbeat |
| `plugin-sdk/number-runtime` | Допоміжна функція приведення чисел |
| `plugin-sdk/secure-random-runtime` | Допоміжні функції безпечних token/UUID |
| `plugin-sdk/system-event-runtime` | Допоміжні функції черги системних подій |
| `plugin-sdk/transport-ready-runtime` | Допоміжна функція очікування готовності транспорту |
| `plugin-sdk/infra-runtime` | Застарілий shim сумісності; використовуйте наведені вище сфокусовані підшляхи середовища виконання |
| `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` | Поточний стан прив’язки розмови без маршрутизації налаштованих прив’язок або сховищ pairing |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби сховища сесій без широких імпортів запису/обслуговування конфігурації |
| `plugin-sdk/context-visibility-runtime` | Допоміжні засоби визначення видимості контексту та фільтрації додаткового контексту без широких імпортів конфігурації/безпеки |
| `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` | Допоміжні засоби каталогу/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація каталогів на основі конфігурації |
| `plugin-sdk/response-limit-runtime` | Читач обмеженого response body без широкої поверхні media runtime |
| `plugin-sdk/session-binding-runtime` | Поточний стан прив’язки conversation без маршрутизації configured binding або pairing stores |
| `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 |
| `plugin-sdk/retry-runtime` | Допоміжні функції конфігурації retry і виконавця retry |
| `plugin-sdk/agent-runtime` | Допоміжні функції директорії/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/dedup директорії на основі конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також конструктори корисного навантаження медіа |
| `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` | Типи провайдерів мовлення, а також орієнтовані на провайдерів експорти директив, реєстру, валідації та допоміжних засобів мовлення |
| `plugin-sdk/speech-core` | Спільні типи провайдерів мовлення, реєстр, директиви, нормалізація та експорти допоміжних засобів мовлення |
| `plugin-sdk/realtime-transcription` | Типи провайдерів транскрипції в реальному часі, допоміжні засоби реєстру та спільний допоміжний засіб сесії WebSocket |
| `plugin-sdk/realtime-voice` | Типи провайдерів голосу в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні засоби failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошук провайдера та парсинг model-ref |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошук провайдера та парсинг model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру цілей Webhook і встановлення маршрутів |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/media-runtime` | Спільні допоміжні функції fetch/transform/store медіа, а також конструктори payload медіа |
| `plugin-sdk/media-store` | Вузькі допоміжні функції media store, як-от `saveMediaBuffer` |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні функції failover генерації медіа, вибору кандидатів і повідомлень про відсутню модель |
| `plugin-sdk/media-understanding` | Типи провайдера media understanding, а також експорти допоміжних функцій для зображень/аудіо, орієнтованих на провайдера |
| `plugin-sdk/text-runtime` | Спільні допоміжні функції text/markdown/logging, як-от видалення видимого для асистента тексту, допоміжні функції render/chunking/table для Markdown, допоміжні функції редагування, допоміжні функції тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжна функція chunking вихідного тексту |
| `plugin-sdk/speech` | Типи провайдера speech, а також експорти допоміжних функцій директив, реєстру, валідації та speech, орієнтованих на провайдера |
| `plugin-sdk/speech-core` | Спільні типи провайдера speech, а також експорти допоміжних функцій реєстру, директив, нормалізації та speech |
| `plugin-sdk/realtime-transcription` | Типи провайдера realtime transcription, допоміжні функції реєстру та спільна допоміжна функція сесії WebSocket |
| `plugin-sdk/realtime-voice` | Типи провайдера realtime voice і допоміжні функції реєстру |
| `plugin-sdk/image-generation` | Типи провайдера генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, допоміжні функції failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи провайдера/запиту/результату генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні функції failover, пошук провайдера та розбір model-ref |
| `plugin-sdk/video-generation` | Типи провайдера/запиту/результату генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні функції failover, пошук провайдера та розбір model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні функції реєстру цілей Webhook і встановлення маршруту |
| `plugin-sdk/webhook-path` | Допоміжні функції нормалізації шляху Webhook |
| `plugin-sdk/web-media` | Спільні допоміжні функції завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для споживачів Plugin SDK |
| `plugin-sdk/testing` | Публічні допоміжні засоби тестування extension, включно з моками реєстру/runtime plugin, захопленням реєстрації провайдерів, допоміжними засобами майстра налаштування, фікстурами fetch/env/temp/time, допоміжними засобами schema/media/live-test, `installCommonResolveTargetErrorCases`, `writeSkill`, `createTestRegistry` і завантаженням env для live generation. Допоміжні засоби extension `*.test-support.ts` мають лишатися тут або у сфокусованих підшляхах SDK, а не у внутрішніх модулях core |
| `plugin-sdk/plugin-test-api` | Мінімальний допоміжний засіб `createTestPluginApi` для прямих unit-тестів реєстрації plugin без імпорту мостів repo test helper |
| `plugin-sdk/testing` | Публічні допоміжні функції тестування extension, включно з моками реєстру/runtime Plugin, захопленням реєстрації провайдера, допоміжними функціями майстра налаштування, фікстурами fetch/env/temp/time, допоміжними функціями schema/media/live-test, `installCommonResolveTargetErrorCases`, `writeSkill`, `createTestRegistry` і завантаженням env для live generation. Допоміжні функції extension `*.test-support.ts` мають залишатися тут або на сфокусованих підшляхах SDK, а не в core internals |
| `plugin-sdk/plugin-test-api` | Мінімальна допоміжна функція `createTestPluginApi` для прямих модульних тестів реєстрації Plugin без імпорту містків допоміжних функцій тестування репозиторію |
| `plugin-sdk/channel-test-helpers` | Орієнтовані на канал допоміжні функції тестування для життєвого циклу запуску облікового запису, перевірок директорії, threading конфігурації надсилання, моків runtime, проблем статусу, вихідної доставки та реєстрації хуків |
| `plugin-sdk/plugin-test-contracts` | Допоміжні функції контрактів для пакета Plugin, реєстрації, публічного артефакту, прямого імпорту, API runtime та побічного ефекту імпорту |
| `plugin-sdk/provider-test-contracts` | Допоміжні функції контрактів для runtime провайдера, auth, discovery, onboard, catalog, wizard, web-search/fetch і stream |
</Accordion>
<Accordion title="Підшляхи пам’яті">
<Accordion title="Підшляхи Memory">
| Підшлях | Основні експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для менеджера/конфігурації/файлів/допоміжних засобів CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад runtime індексації/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embeddings хоста пам’яті, доступ до реєстру, локальний провайдер і загальні допоміжні засоби batch/remote |
| `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-events` | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби стану хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Нейтральний до постачальника псевдонім для допоміжних засобів core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Нейтральний до постачальника псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Нейтральний до постачальника псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби керованого markdown для plugin, суміжних із пам’яттю |
| `plugin-sdk/memory-host-search` | Фасад runtime Active Memory для доступу до менеджера пошуку |
| `plugin-sdk/memory-host-status` | Нейтральний до постачальника псевдонім для допоміжних засобів стану хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb |
| `plugin-sdk/memory-core` | Поверхня допоміжних функцій bundled memory-core для менеджера/конфігурації/файлів/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Фасад середовища виконання індексу/пошуку Memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста Memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Контракти embedding хоста Memory, доступ до реєстру, локальний провайдер і загальні допоміжні функції batch/remote |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста Memory |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста Memory |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні функції multimodal хоста Memory |
| `plugin-sdk/memory-core-host-query` | Допоміжні функції query хоста Memory |
| `plugin-sdk/memory-core-host-secret` | Допоміжні функції secret хоста Memory |
| `plugin-sdk/memory-core-host-events` | Допоміжні функції журналу подій хоста Memory |
| `plugin-sdk/memory-core-host-status` | Допоміжні функції статусу хоста Memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні функції CLI runtime хоста Memory |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні функції core runtime хоста Memory |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні функції файлів/runtime хоста Memory |
| `plugin-sdk/memory-host-core` | Нейтральний до вендора псевдонім для допоміжних функцій core runtime хоста Memory |
| `plugin-sdk/memory-host-events` | Нейтральний до вендора псевдонім для допоміжних функцій журналу подій хоста Memory |
| `plugin-sdk/memory-host-files` | Нейтральний до вендора псевдонім для допоміжних функцій файлів/runtime хоста Memory |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні функції managed-markdown для plugin, суміжних із memory |
| `plugin-sdk/memory-host-search` | Фасад середовища виконання Active Memory для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний до вендора псевдонім для допоміжних функцій статусу хоста Memory |
| `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` лишається барелем сумісності. |
| 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 |
| Допоміжні засоби, специфічні для каналів | `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` | Застарілі шви сумісності/допоміжних засобів bundled channel. Нові plugin мають імпортувати універсальні підшляхи SDK або локальні барелі 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` | Шви допоміжних засобів bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні функції підтримки bundled browser plugin. `browser-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 |
| Допоміжні функції для конкретних каналів | `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` | Застарілі шви сумісності/допоміжних функцій bundled channel. Нові plugins мають імпортувати загальні підшляхи 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` | Шви допоміжних функцій bundled feature/plugin; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
@ -313,4 +319,4 @@ x-i18n:
- [Огляд Plugin SDK](/uk/plugins/sdk-overview)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)
- [Створення plugin](/uk/plugins/building-plugins)
- [Створення plugins](/uk/plugins/building-plugins)

View File

@ -1,37 +1,43 @@
---
read_when:
- Ви пишете тести для плагіна
- Вам потрібні утиліти тестування з SDK плагіна
- Ви хочете зрозуміти контрактні тести для вбудованих плагінів
- Ви пишете тести для Plugin
- Вам потрібні утиліти тестування з SDK Plugin
- Ви хочете зрозуміти контрактні тести для вбудованих Plugin
sidebarTitle: Testing
summary: Утиліти та шаблони тестування для плагінів OpenClaw
title: Тестування плагінів
summary: Утиліти та шаблони тестування для Plugin OpenClaw
title: Тестування Plugin
x-i18n:
generated_at: "2026-04-27T23:28:28Z"
generated_at: "2026-04-28T00:03:38Z"
model: gpt-5.4
provider: openai
source_hash: e68bd201689490e9b42c8511fc205e5a14383c56e534270692cf3b21d0758e40
source_hash: 2c2aa1506f6f115168c980d76785db6b8531c6565219ac07b35f43319b0a5bbd
source_path: plugins/sdk-testing.md
workflow: 15
---
Довідник з утиліт тестування, шаблонів і примусового застосування lint-правил для плагінів OpenClaw.
Довідник з утиліт тестування, шаблонів і примусового застосування lint для Plugin OpenClaw.
<Tip>
**Шукаєте приклади тестів?** Практичні посібники містять готові приклади тестів:
[Тести плагінів каналів](/uk/plugins/sdk-channel-plugins#step-6-test) і
[Тести плагінів провайдерів](/uk/plugins/sdk-provider-plugins#step-6-test).
[Тести Plugin каналу](/uk/plugins/sdk-channel-plugins#step-6-test) і
[Тести Plugin провайдера](/uk/plugins/sdk-provider-plugins#step-6-test).
</Tip>
## Утиліти тестування
**Загальний імпорт:** `openclaw/plugin-sdk/testing`
**Імпорт моків Plugin 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`
Підшлях testing експортує вузький набір допоміжних засобів для авторів плагінів:
**Імпорт допоміжного засобу тестування каналу:** `openclaw/plugin-sdk/channel-test-helpers`
**Імпорт контракту Plugin:** `openclaw/plugin-sdk/plugin-test-contracts`
**Імпорт контракту провайдера:** `openclaw/plugin-sdk/provider-test-contracts`
Підшлях testing експортує вузький набір допоміжних засобів для авторів Plugin:
```typescript
import {
@ -41,48 +47,59 @@ import {
} from "openclaw/plugin-sdk/testing";
import { createTestPluginApi } from "openclaw/plugin-sdk/plugin-test-api";
import { expectChannelInboundContextContract } from "openclaw/plugin-sdk/channel-contract-testing";
import { createStartAccountContext } from "openclaw/plugin-sdk/channel-test-helpers";
import { describePluginRegistrationContract } from "openclaw/plugin-sdk/plugin-test-contracts";
import { describeOpenAIProviderRuntimeContract } from "openclaw/plugin-sdk/provider-test-contracts";
```
### Доступні експорти
| Export | Призначення |
| Export | Purpose |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `createTestPluginApi` | Створює мінімальний мок plugin API для прямих unit-тестів реєстрації. Імпортується з `plugin-sdk/plugin-test-api` |
| `expectChannelInboundContextContract` | Перевіряє форму вхідного контексту каналу. Імпортується з `plugin-sdk/channel-contract-testing` |
| `installChannelOutboundPayloadContractSuite` | Додає набір контрактних перевірок для вихідного payload каналу. Імпортується з `plugin-sdk/channel-contract-testing` |
| `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` |
| `describePluginRegistrationContract` | Встановити перевірки контракту реєстрації Plugin. Імпортуйте з `plugin-sdk/plugin-test-contracts` |
| `describeOpenAIProviderRuntimeContract` | Встановити перевірки контракту середовища виконання для сімейства провайдерів. Імпортуйте з `plugin-sdk/provider-test-contracts` |
| `installCommonResolveTargetErrorCases` | Спільні тестові випадки для обробки помилок під час визначення цілі |
| `shouldAckReaction` | Перевіряє, чи має канал додавати реакцію підтвердження |
| `removeAckReactionAfterReply` | Видаляє реакцію підтвердження після доставки відповіді |
| `createTestRegistry` | Створює тестову фікстуру реєстру плагінів каналів |
| `createEmptyPluginRegistry` | Створює порожню тестову фікстуру реєстру плагінів |
| `setActivePluginRegistry` | Встановлює фікстуру реєстру для runtime-тестів плагінів |
| `createRequestCaptureJsonFetch` | Перехоплює JSON-запити fetch у тестах медіадопоміжних засобів |
| `withFetchPreconnect` | Запускає тести fetch із встановленими хуками preconnect |
| `withEnv` / `withEnvAsync` | Тимчасово змінює змінні середовища |
| `createTempHomeEnv` / `withTempDir` | Створює ізольовані файлові тестові фікстури |
| `createMockServerResponse` | Створює мінімальний мок HTTP-відповіді сервера |
| `registerSingleProviderPlugin` | Реєструє один плагін провайдера в smoke-тестах завантажувача |
| `registerProviderPlugin` | Збирає всі типи провайдерів з одного плагіна |
| `registerProviderPlugins` | Збирає реєстрації провайдерів з кількох плагінів |
| `requireRegisteredProvider` | Перевіряє, що колекція провайдерів містить id |
| `runProviderCatalog` | Виконує хук каталогу провайдера з тестовими залежностями |
| `resolveProviderWizardOptions` | Визначає варіанти майстра налаштування провайдера в контрактних тестах |
| `resolveProviderModelPickerEntries` | Визначає елементи вибору моделей провайдера в контрактних тестах |
| `buildProviderPluginMethodChoice` | Створює id варіантів майстра провайдера для перевірок |
| `setProviderWizardProvidersResolverForTest` | Впроваджує провайдери майстра для ізольованих тестів |
| `createProviderUsageFetch` | Створює фікстури fetch для використання провайдера |
| `useFrozenTime` / `useRealTime` | Заморожує та відновлює таймери для чутливих до часу тестів |
| `createRuntimeEnv` | Створює змокане CLI/runtime-середовище плагіна |
| `createTestWizardPrompter` | Створює змоканий prompter майстра налаштування |
| `createPluginSetupWizardStatus` | Створює допоміжні засоби стану налаштування для плагінів каналів |
| `createRuntimeTaskFlow` | Створює ізольований стан runtime TaskFlow |
| `typedCases` | Зберігає літеральні типи для табличних тестів |
| `shouldAckReaction` | Перевірити, чи має канал додавати реакцію підтвердження |
| `removeAckReactionAfterReply` | Видалити реакцію підтвердження після доставки відповіді |
| `createTestRegistry` | Побудувати фікстуру реєстру Plugin каналу |
| `createEmptyPluginRegistry` | Побудувати порожню фікстуру реєстру Plugin |
| `setActivePluginRegistry` | Встановити фікстуру реєстру для тестів середовища виконання Plugin |
| `createRequestCaptureJsonFetch` | Перехоплювати JSON-запити fetch у тестах допоміжних засобів для медіа |
| `withFetchPreconnect` | Запускати тести fetch з установленими хуками preconnect |
| `withEnv` / `withEnvAsync` | Тимчасово підміняти змінні середовища |
| `createTempHomeEnv` / `withTempDir` | Створювати ізольовані файлові фікстури для тестів |
| `createMockServerResponse` | Створювати мінімальний мок відповіді HTTP-сервера |
| `registerSingleProviderPlugin` | Реєструвати один Plugin провайдера в smoke-тестах завантажувача |
| `registerProviderPlugin` | Захоплювати всі типи провайдерів з одного Plugin |
| `registerProviderPlugins` | Захоплювати реєстрації провайдерів у кількох Plugin |
| `requireRegisteredProvider` | Перевіряти, що колекція провайдерів містить ідентифікатор |
| `runProviderCatalog` | Виконувати хук каталогу провайдера з тестовими залежностями |
| `resolveProviderWizardOptions` | Визначати варіанти майстра налаштування провайдера в контрактних тестах |
| `resolveProviderModelPickerEntries` | Визначати елементи засобу вибору моделей провайдера в контрактних тестах |
| `buildProviderPluginMethodChoice` | Будувати ідентифікатори варіантів майстра провайдера для перевірок |
| `setProviderWizardProvidersResolverForTest` | Впроваджувати провайдерів майстра провайдера для ізольованих тестів |
| `createProviderUsageFetch` | Побудувати фікстури fetch для використання провайдера |
| `useFrozenTime` / `useRealTime` | Заморожувати й відновлювати таймери для тестів, чутливих до часу |
| `createRuntimeEnv` | Побудувати змокане середовище виконання CLI/Plugin |
| `createTestWizardPrompter` | Побудувати змоканий prompter майстра налаштування |
| `createPluginSetupWizardStatus` | Побудувати допоміжні засоби стану налаштування для Plugin каналу |
| `createRuntimeTaskFlow` | Створювати ізольований стан виконання TaskFlow |
| `typedCases` | Зберігати literal-типи для таблично-керованих тестів |
Контрактні набори тестів для вбудованих плагінів також використовують підшляхи SDK testing для тестових допоміжних засобів реєстру, маніфесту, публічних артефактів і runtime-фікстур. Нові тести розширень мають використовувати `openclaw/plugin-sdk/testing` або вужчий задокументований підшлях SDK, як-от `plugin-sdk/plugin-test-api` чи `plugin-sdk/channel-contract-testing`, замість прямого імпорту файлів `src/**` із репозиторію.
Набори контрактних тестів для вбудованих Plugin також використовують підшляхи SDK testing для допоміжних засобів фікстур реєстру, маніфесту, публічного артефакту та середовища виконання, призначених лише для тестів. Набори лише для core, які залежать від інвентаря вбудованого OpenClaw, залишаються в `src/plugins/contracts`.
Нові тести розширень слід тримати на `openclaw/plugin-sdk/testing` або в більш вузькому
задокументованому підшляху SDK, як-от `plugin-sdk/plugin-test-api` або
`plugin-sdk/channel-contract-testing`, `plugin-sdk/channel-test-helpers`,
`plugin-sdk/plugin-test-contracts` чи `plugin-sdk/provider-test-contracts`,
а не імпортувати безпосередньо файли репозиторію `src/**` або мости репозиторію `test/helpers/plugins/*`.
### Типи
Підшлях testing також повторно експортує типи, корисні у тестових файлах:
Підшлях testing також повторно експортує типи, корисні у файлах тестів:
```typescript
import type {
@ -97,7 +114,8 @@ import type {
## Тестування визначення цілі
Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні випадки помилок для визначення цілі каналу:
Використовуйте `installCommonResolveTargetErrorCases`, щоб додати стандартні випадки помилок для
визначення цілі каналу:
```typescript
import { describe } from "vitest";
@ -123,17 +141,24 @@ describe("my-channel target resolution", () => {
### Тестування контрактів реєстрації
Unit-тести, які передають вручну написаний мок `api` до `register(api)`, не перевіряють умови прийняття завантажувача OpenClaw. Додайте принаймні один smoke-тест на основі завантажувача для кожної поверхні реєстрації, від якої залежить ваш плагін, особливо для хуків та ексклюзивних можливостей, таких як пам’ять.
Модульні тести, які передають власноруч написаний мок `api` у `register(api)`, не перевіряють
шлюзи приймання завантажувача OpenClaw. Додайте принаймні один smoke-тест на основі завантажувача
для кожної поверхні реєстрації, від якої залежить ваш Plugin, особливо для хуків і
ексклюзивних можливостей, таких як пам’ять.
Справжній завантажувач завершує реєстрацію плагіна з помилкою, якщо бракує обов’язкових метаданих або якщо плагін викликає API можливості, якою не володіє. Наприклад,
`api.registerHook(...)` потребує назви хука, а
`api.registerMemoryCapability(...)` вимагає, щоб маніфест плагіна або експортована точка входу оголошували `kind: "memory"`.
Справжній завантажувач не допускає реєстрацію Plugin, якщо бракує обов’язкових метаданих або якщо
Plugin викликає API можливості, якою він не володіє. Наприклад,
`api.registerHook(...)` вимагає ім’я хука, а
`api.registerMemoryCapability(...)` вимагає, щоб маніфест Plugin або експортована точка входу оголошували `kind: "memory"`.
### Тестування доступу до runtime-конфігурації
### Тестування доступу до конфігурації середовища виконання
Під час тестування вбудованих плагінів віддавайте перевагу спільному моку runtime плагіна з допоміжних засобів тестування репозиторію. Його застарілі моки `runtime.config.loadConfig()` і `runtime.config.writeConfigFile(...)` за замовчуванням викидають помилку, щоб тести виявляли нове використання API сумісності. Перевизначайте ці моки лише тоді, коли тест явно покриває застарілу поведінку сумісності.
Для тестування вбудованих Plugin каналів надавайте перевагу спільному моку середовища виконання Plugin з `openclaw/plugin-sdk/channel-test-helpers`. Його застарілі моки `runtime.config.loadConfig()` і
`runtime.config.writeConfigFile(...)` за замовчуванням викидають помилки, щоб тести виявляли нове
використання API сумісності. Перевизначайте ці моки лише тоді, коли тест
явно покриває застарілу поведінку сумісності.
### Unit-тестування плагіна каналу
### Модульне тестування Plugin каналу
```typescript
import { describe, it, expect, vi } from "vitest";
@ -169,7 +194,7 @@ describe("my-channel plugin", () => {
});
```
### Unit-тестування плагіна провайдера
### Модульне тестування Plugin провайдера
```typescript
import { describe, it, expect } from "vitest";
@ -197,9 +222,9 @@ describe("my-provider plugin", () => {
});
```
### Мокання runtime плагіна
### Мокання середовища виконання Plugin
Для коду, який використовує `createPluginRuntimeStore`, замокуйте runtime у тестах:
Для коду, який використовує `createPluginRuntimeStore`, змокуйте середовище виконання в тестах:
```typescript
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
@ -230,9 +255,9 @@ store.setRuntime(mockRuntime);
store.clearRuntime();
```
### Тестування з окремими стабами для екземплярів
### Тестування з підмінами для окремих екземплярів
Віддавайте перевагу окремим стабам для екземплярів замість мутації прототипу:
Надавайте перевагу підмінам для окремих екземплярів замість мутації прототипу:
```typescript
// Preferred: per-instance stub
@ -243,9 +268,9 @@ client.sendMessage = vi.fn().mockResolvedValue({ id: "msg-1" });
// MyChannelClient.prototype.sendMessage = vi.fn();
```
## Контрактні тести (плагіни в репозиторії)
## Контрактні тести (Plugin у репозиторії)
Вбудовані плагіни мають контрактні тести, які перевіряють належність реєстрації:
Вбудовані Plugin мають контрактні тести, які перевіряють належність реєстрації:
```bash
pnpm test -- src/plugins/contracts/
@ -253,14 +278,14 @@ pnpm test -- src/plugins/contracts/
Ці тести перевіряють:
- Які плагіни реєструють які провайдери
- Які плагіни реєструють які мовленнєві провайдери
- Які Plugin реєструють які провайдери
- Які Plugin реєструють які мовленнєві провайдери
- Коректність форми реєстрації
- Відповідність runtime-контракту
- Відповідність контракту середовища виконання
### Запуск тестів для окремої області
### Запуск тестів з обмеженою областю
Для конкретного плагіна:
Для конкретного Plugin:
```bash
pnpm test -- <bundled-plugin-root>/my-channel/
@ -274,20 +299,20 @@ pnpm test -- src/plugins/contracts/auth.contract.test.ts
pnpm test -- src/plugins/contracts/runtime.contract.test.ts
```
## Примусове застосування lint-правил (плагіни в репозиторії)
## Примусове застосування lint (Plugin у репозиторії)
Три правила застосовуються через `pnpm check` для плагінів у репозиторії:
`pnpm check` примусово застосовує три правила для Plugin у репозиторії:
1. **Жодних монолітних кореневих імпортів** -- кореневий barrel `openclaw/plugin-sdk` заборонений
2. **Жодних прямих імпортів із `src/`** -- плагіни не можуть напряму імпортувати `../../src/`
3. **Жодних self-imports** -- плагіни не можуть імпортувати власний підшлях `plugin-sdk/<name>`
1. **Без монолітних імпортів із кореня** -- кореневий barrel `openclaw/plugin-sdk` заборонено
2. **Без прямих імпортів із `src/`** -- Plugin не можуть імпортувати `../../src/` напряму
3. **Без самоімпортів** -- Plugin не можуть імпортувати власний підшлях `plugin-sdk/<name>`
Зовнішні плагіни не підпадають під ці lint-правила, але дотримуватися тих самих
Зовнішні Plugin не підпадають під дію цих правил lint, але дотримуватися тих самих
шаблонів рекомендується.
## Конфігурація тестування
OpenClaw використовує Vitest із порогами покриття V8. Для тестів плагінів:
OpenClaw використовує Vitest із порогами покриття V8. Для тестів Plugin:
```bash
# Run all tests
@ -303,7 +328,7 @@ pnpm test -- <bundled-plugin-root>/my-channel/ -t "resolves account"
pnpm test:coverage
```
Якщо локальні запуски спричиняють нестачу пам’яті:
Якщо локальні запуски спричиняють навантаження на пам’ять:
```bash
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
@ -311,7 +336,7 @@ OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test
## Пов’язане
- [Огляд SDK](/uk/plugins/sdk-overview) -- правила імпорту
- [Плагіни каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс плагіна каналу
- [Плагіни провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- хуки плагіна провайдера
- [Створення плагінів](/uk/plugins/building-plugins) -- посібник для початку роботи
- [Огляд SDK](/uk/plugins/sdk-overview) -- угоди щодо імпорту
- [Plugin каналів SDK](/uk/plugins/sdk-channel-plugins) -- інтерфейс Plugin каналу
- [Plugin провайдерів SDK](/uk/plugins/sdk-provider-plugins) -- хуки Plugin провайдера
- [Створення Plugin](/uk/plugins/building-plugins) -- посібник для початку роботи

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,37 @@
---
read_when:
- Встановлення або налаштування Plugins
- Розуміння правил виявлення та завантаження Plugins
- Робота з пакетами Plugins, сумісними з Codex/Claude
- Встановлення або налаштування плагінів
- Розуміння правил виявлення та завантаження плагінів
- Робота з сумісними з Codex/Claude пакетами плагінів
sidebarTitle: Install and Configure
summary: Встановлюйте, налаштовуйте та керуйте Plugins OpenClaw
title: Plugins
summary: Встановлюйте, налаштовуйте та керуйте плагінами OpenClaw
title: Плагіни
x-i18n:
generated_at: "2026-04-27T23:14:25Z"
generated_at: "2026-04-28T00:03:38Z"
model: gpt-5.4
provider: openai
source_hash: f3465cb1f7e304c0ffd59ae9a4c586237f99f1dc861e93821f9a9d1fea4e371d
source_hash: 7cd8b279b49611bb556e71210cf86eb54b4dc291021df2ae376ad718113ac0de
source_path: tools/plugin.md
workflow: 15
---
Plugins розширюють OpenClaw новими можливостями: канали, провайдери моделей,
середовища агентів, інструменти, Skills, мовлення, транскрипція в реальному часі, голос у реальному
часі, розуміння медіа, генерація зображень, генерація відео, отримання даних із вебу, вебпошук
тощо. Деякі Plugins є **основними** (постачаються з OpenClaw), інші —
**зовнішніми** (опубліковані в npm спільнотою).
Плагіни розширюють OpenClaw новими можливостями: канали, постачальники моделей, обв’язки агентів, інструменти, Skills, мовлення, транскрипція в реальному часі, голос у реальному часі, розуміння медіа, генерація зображень, генерація відео, отримання даних із вебу, вебпошук тощо. Деякі плагіни є **core** (постачаються разом з OpenClaw), інші — **external** (опубліковані спільнотою в npm).
## Швидкий старт
<Steps>
<Step title=ерегляньте, що завантажено">
<Step title=одивіться, що завантажено">
```bash
openclaw plugins list
```
</Step>
<Step title="Установіть Plugin">
<Step title="Установіть плагін">
```bash
# Із npm
# From npm
openclaw plugins install @openclaw/voice-call
# Із локального каталогу або архіву
# From a local directory or archive
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
```
@ -47,12 +43,12 @@ Plugins розширюють OpenClaw новими можливостями: к
openclaw gateway restart
```
Потім налаштуйте в `plugins.entries.\<id\>.config` у вашому файлі конфігурації.
Потім налаштуйте в `plugins.entries.\<id\>.config` у вашому конфігураційному файлі.
</Step>
</Steps>
Якщо ви віддаєте перевагу керуванню безпосередньо з чату, увімкніть `commands.plugins: true` і використовуйте:
Якщо ви надаєте перевагу керуванню безпосередньо в чаті, увімкніть `commands.plugins: true` і використовуйте:
```text
/plugin install clawhub:@openclaw/voice-call
@ -60,69 +56,58 @@ Plugins розширюють OpenClaw новими можливостями: к
/plugin enable voice-call
```
Шлях встановлення використовує той самий механізм визначення, що й CLI: локальний шлях/архів, явний
`clawhub:<pkg>`, явний `npm:<pkg>` або специфікація пакета без префікса (спочатку ClawHub, потім
резервний варіант через npm).
Шлях установлення використовує той самий механізм розпізнавання, що й CLI: локальний шлях/архів, явний `clawhub:<pkg>`, явний `npm:<pkg>` або специфікація пакета без префікса (спочатку ClawHub, потім резервний варіант npm).
Якщо конфігурація недійсна, встановлення зазвичай завершується безпечною відмовою й пропонує
`openclaw doctor --fix`. Єдиний виняток для відновлення — вузький шлях
перевстановлення вбудованого Plugin для Plugins, які погоджуються на
Якщо конфігурація недійсна, установлення зазвичай безпечно завершується з відмовою та вказує вам на `openclaw doctor --fix`. Єдиний виняток для відновлення — вузький шлях перевстановлення вбудованого плагіна для плагінів, які використовують
`openclaw.install.allowInvalidConfigRecovery`.
Під час запуску Gateway недійсна конфігурація одного Plugin ізолюється на рівні цього Plugin:
під час запуску журналюється проблема `plugins.entries.<id>.config`, цей Plugin пропускається під час
завантаження, а інші Plugins і канали залишаються онлайн. Виконайте `openclaw doctor --fix`,
щоб ізолювати некоректну конфігурацію Plugin, вимкнувши запис цього Plugin і видаливши
його недійсне корисне навантаження конфігурації; звичайна резервна копія конфігурації зберігає попередні значення.
Коли конфігурація каналу посилається на Plugin, який більше неможливо виявити, але той самий
застарілий ідентифікатор Plugin залишається в конфігурації Plugin або записах встановлення, під час запуску Gateway
Під час запуску Gateway недійсна конфігурація одного плагіна ізолюється лише до цього плагіна:
під час запуску в журналі фіксується проблема `plugins.entries.<id>.config`, цей плагін пропускається під час завантаження, а інші плагіни та канали залишаються онлайн. Запустіть `openclaw doctor --fix`,
щоб ізолювати неправильну конфігурацію плагіна, вимкнувши цей запис плагіна та видаливши його недійсний вміст конфігурації; звичайна резервна копія конфігурації збереже попередні значення.
Коли конфігурація каналу посилається на плагін, який більше неможливо виявити, але той самий застарілий ідентифікатор плагіна залишається в конфігурації плагіна або записах установлення, під час запуску Gateway
журналюються попередження, і цей канал пропускається замість блокування всіх інших каналів.
Виконайте `openclaw doctor --fix`, щоб видалити застарілі записи каналу/Plugin; невідомі
ключі каналів без ознак застарілого Plugin усе ще не проходять перевірку, щоб опечатки лишалися помітними.
Якщо встановлено `plugins.enabled: false`, застарілі посилання на Plugins вважаються неактивними:
під час запуску Gateway пропускається виявлення/завантаження Plugins, а `openclaw doctor` зберігає
вимкнену конфігурацію Plugin замість автоматичного видалення. Знову ввімкніть Plugins перед
запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори Plugin.
Запустіть `openclaw doctor --fix`, щоб видалити застарілі записи каналу/плагіна; невідомі ключі каналу без ознак застарілого плагіна все одно не проходять валідацію, щоб помилки в написанні залишалися помітними.
Якщо встановлено `plugins.enabled: false`, застарілі посилання на плагіни вважаються неактивними:
під час запуску Gateway пропускаються роботи з виявлення/завантаження плагінів, а `openclaw doctor` зберігає вимкнену конфігурацію плагіна замість її автоматичного видалення. Знову ввімкніть плагіни перед
запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори плагінів.
Пакетні інсталяції OpenClaw не встановлюють завчасно все дерево залежностей середовища виконання для кожного вбудованого Plugin.
Коли вбудований Plugin, що належить OpenClaw, активний через
конфігурацію Plugin, застарілу конфігурацію каналу або маніфест із увімкненням за замовчуванням, під час запуску
відновлюються лише задекларовані залежності середовища виконання цього Plugin перед його імпортом.
Лише збережений стан автентифікації каналу сам по собі не активує вбудований канал для відновлення
Пакетні інсталяції OpenClaw не встановлюють завчасно все дерево залежностей середовища виконання для кожного вбудованого плагіна.
Коли вбудований плагін, який належить OpenClaw, активний через конфігурацію
плагіна, застарілу конфігурацію каналу або маніфест із увімкненням за замовчуванням, під час запуску
виправляються лише оголошені залежності середовища виконання цього плагіна перед його імпортом.
Лише збережений стан автентифікації каналу сам по собі не активує вбудований канал для виправлення
залежностей середовища виконання під час запуску Gateway.
Явне вимкнення все одно має пріоритет: `plugins.entries.<id>.enabled: false`,
`plugins.deny`, `plugins.enabled: false` і `channels.<id>.enabled: false`
запобігають автоматичному відновленню вбудованих залежностей середовища виконання для цього Plugin/каналу.
Непорожній `plugins.allow` також обмежує відновлення залежностей середовища виконання для вбудованих Plugins, увімкнених за замовчуванням;
явне ввімкнення вбудованого каналу (`channels.<id>.enabled: true`) усе ще може
відновити залежності Plugin цього каналу.
Зовнішні Plugins і власні шляхи завантаження все одно потрібно встановлювати через
запобігають автоматичному виправленню вбудованих залежностей середовища виконання для цього плагіна/каналу.
Непорожній `plugins.allow` також обмежує виправлення вбудованих залежностей середовища виконання для вбудованих плагінів, увімкнених за замовчуванням;
явне ввімкнення вбудованого каналу (`channels.<id>.enabled: true`) усе ще може виправити залежності плагіна цього каналу.
External-плагіни та користувацькі шляхи завантаження, як і раніше, потрібно встановлювати через
`openclaw plugins install`.
## Типи Plugins
## Типи плагінів
OpenClaw розпізнає два формати Plugins:
OpenClaw розпізнає два формати плагінів:
| Формат | Як це працює | Приклади |
| ---------- | ---------------------------------------------------------------- | ------------------------------------------------------ |
| **Нативний** | `openclaw.plugin.json` + модуль середовища виконання; виконується в процесі | Офіційні Plugins, npm-пакети спільноти |
| **Пакет** | Сумісний із Codex/Claude/Cursor макет; зіставляється з можливостями OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
| Формат | Як це працює | Приклади |
| ---------- | --------------------------------------------------------------- | ------------------------------------------------------ |
| **Native** | `openclaw.plugin.json` + модуль середовища виконання; виконується в межах процесу | Офіційні плагіни, npm-пакети спільноти |
| **Bundle** | Сумісний із Codex/Claude/Cursor макет; зіставляється з можливостями OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
Обидва відображаються в `openclaw plugins list`. Докладніше про пакети див. у [Пакети Plugin](/uk/plugins/bundles).
Обидва відображаються в `openclaw plugins list`. Докладніше про пакети див. у [Plugin Bundles](/uk/plugins/bundles).
Якщо ви пишете нативний Plugin, почніть із [Створення Plugins](/uk/plugins/building-plugins)
і [Огляд SDK Plugin](/uk/plugins/sdk-overview).
Якщо ви пишете Native-плагін, почніть із [Building Plugins](/uk/plugins/building-plugins)
та [Plugin SDK Overview](/uk/plugins/sdk-overview).
## Точки входу пакета
Нативні npm-пакети Plugins мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має залишатися в межах каталогу пакета та вказувати на придатний для читання
файл середовища виконання або на вихідний файл TypeScript із виведеним з нього
зібраним JavaScript-файлом, наприклад `src/index.ts` до `dist/index.js`.
Npm-пакети Native-плагінів мають оголошувати `openclaw.extensions` у `package.json`.
Кожен запис має залишатися в межах каталогу пакета та вказувати на доступний для читання
файл середовища виконання або на вихідний файл TypeScript з виведеним
зібраним JavaScript-відповідником, наприклад `src/index.ts` до `dist/index.js`.
Використовуйте `openclaw.runtimeExtensions`, коли опубліковані файли середовища виконання не розміщені
за тими самими шляхами, що й вихідні записи. Якщо це поле задано,
`runtimeExtensions` має містити рівно один запис для кожного запису `extensions`. Невідповідні списки призводять до збою встановлення та
виявлення Plugin, а не до мовчазного повернення до шляхів вихідного коду.
Використовуйте `openclaw.runtimeExtensions`, якщо опубліковані файли середовища виконання не розміщені за тими самими шляхами, що й записи вихідного коду. Якщо цей параметр присутній, `runtimeExtensions` має містити
рівно один запис для кожного запису `extensions`. Невідповідні списки призводять до помилки встановлення та
виявлення плагіна замість тихого резервного переходу до шляхів вихідного коду.
```json
{
@ -134,11 +119,11 @@ OpenClaw розпізнає два формати Plugins:
}
```
## Офіційні Plugins
## Офіційні плагіни
### Доступні для встановлення (npm)
| Plugin | Пакет | Документація |
| Плагін | Пакет | Документація |
| --------------- | ---------------------- | ------------------------------------ |
| Matrix | `@openclaw/matrix` | [Matrix](/uk/channels/matrix) |
| Microsoft Teams | `@openclaw/msteams` | [Microsoft Teams](/uk/channels/msteams) |
@ -147,10 +132,10 @@ OpenClaw розпізнає два формати Plugins:
| Zalo | `@openclaw/zalo` | [Zalo](/uk/channels/zalo) |
| Zalo Personal | `@openclaw/zalouser` | [Zalo Personal](/uk/plugins/zalouser) |
### Основні (постачаються з OpenClaw)
### Core (постачаються разом з OpenClaw)
<AccordionGroup>
<Accordion title=ровайдери моделей (увімкнені за замовчуванням)">
<Accordion title=остачальники моделей (увімкнені за замовчуванням)">
`anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`,
`huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `qwen`,
`moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`,
@ -158,22 +143,26 @@ OpenClaw розпізнає два формати Plugins:
`vercel-ai-gateway`, `volcengine`, `xiaomi`, `zai`
</Accordion>
<Accordion title="Plugins пам’яті">
- `memory-core` — вбудований пошук пам’яті (типово через `plugins.slots.memory`)
- `memory-lancedb` — довготривала пам’ять із встановленням на вимогу з автоматичним пригадуванням/захопленням (установіть `plugins.slots.memory = "memory-lancedb"`)
<Accordion title="Плагіни пам’яті">
- `memory-core` — вбудований пошук у пам’яті (за замовчуванням через `plugins.slots.memory`)
- `memory-lancedb` — довготривала пам’ять з установленням на вимогу, автоматичним пригадуванням/захопленням (установіть `plugins.slots.memory = "memory-lancedb"`)
Див. [Memory LanceDB](/uk/plugins/memory-lancedb), щоб дізнатися про
налаштування ембедингів, сумісних з OpenAI, приклади Ollama, ліміти пригадування та усунення несправностей.
</Accordion>
<Accordion title="Провайдери мовлення (увімкнені за замовчуванням)">
<Accordion title=остачальники мовлення (увімкнені за замовчуванням)">
`elevenlabs`, `microsoft`
</Accordion>
<Accordion title="Інше">
- `browser` — вбудований Plugin браузера для інструмента браузера, CLI `openclaw browser`, методу Gateway `browser.request`, середовища виконання браузера та служби керування браузером за замовчуванням (увімкнений за замовчуванням; вимкніть його перед заміною)
- `copilot-proxy` — міст VS Code Copilot Proxy (вимкнений за замовчуванням)
- `browser` — вбудований browser-плагін для browser-інструмента, CLI `openclaw browser`, методу Gateway `browser.request`, browser runtime і служби керування браузером за замовчуванням (увімкнений за замовчуванням; вимкніть його перед заміною)
- `copilot-proxy` — міст VS Code Copilot Proxy (за замовчуванням вимкнений)
</Accordion>
</AccordionGroup>
Шукаєте сторонні Plugins? Див. [Plugins спільноти](/uk/plugins/community).
Шукаєте сторонні плагіни? Див. [Community Plugins](/uk/plugins/community).
## Конфігурація
@ -191,111 +180,111 @@ OpenClaw розпізнає два формати Plugins:
}
```
| Поле | Опис |
| ---------------- | --------------------------------------------------------- |
| `enabled` | Головний перемикач (типово: `true`) |
| `allow` | Список дозволених Plugins (необов’язково) |
| `deny` | Список заборонених Plugins (необов’язково; заборона має пріоритет) |
| `load.paths` | Додаткові файли/каталоги Plugins |
| `slots` | Селектори ексклюзивних слотів (наприклад, `memory`, `contextEngine`) |
| `entries.\<id\>` | Перемикачі та конфігурація для окремого Plugin |
| Поле | Опис |
| --------------- | --------------------------------------------------------- |
| `enabled` | Головний перемикач (типово: `true`) |
| `allow` | Список дозволених плагінів (необов’язково) |
| `deny` | Список заборонених плагінів (необов’язково; заборона має пріоритет) |
| `load.paths` | Додаткові файли/каталоги плагінів |
| `slots` | Селектори ексклюзивних слотів (наприклад, `memory`, `contextEngine`) |
| `entries.\<id\>` | Перемикачі та конфігурація для окремого плагіна |
Зміни конфігурації **потребують перезапуску Gateway**. Якщо Gateway запущено з
відстеженням конфігурації та внутрішньопроцесним перезапуском (типовий шлях `openclaw gateway`),
цей перезапуск зазвичай виконується автоматично невдовзі після запису конфігурації.
Підтримуваного шляху гарячого перезавантаження для нативного коду середовища виконання Plugin або хуків життєвого циклу немає;
перезапустіть процес Gateway, який обслуговує живий канал, перш ніж
Зміни конфігурації **потребують перезапуску Gateway**. Якщо Gateway запущений з
відстеженням конфігурації та внутрішньопроцесним перезапуском (стандартний шлях `openclaw gateway`),
цей перезапуск зазвичай виконується автоматично невдовзі після запису змін конфігурації.
Підтримуваного шляху гарячого перезавантаження для коду середовища виконання Native-плагіна або хуків життєвого циклу немає;
перезапустіть процес Gateway, який обслуговує активний канал, перш ніж
очікувати, що оновлений код `register(api)`, хуки `api.on(...)`, інструменти, служби або
хуки провайдера/середовища виконання почнуть працювати.
хуки постачальника/runtime почнуть виконуватися.
`openclaw plugins list` — це локальний знімок реєстру/конфігурації Plugins. Позначка
`enabled` для Plugin там означає, що збережений реєстр і поточна конфігурація дозволяють цьому
Plugin брати участь у роботі. Це не доводить, що вже запущений віддалений дочірній Gateway
перезапустився з тим самим кодом Plugin. У конфігураціях VPS/контейнерів з
обгортками процесів надсилайте перезапуски до фактичного процесу `openclaw gateway run`,
`openclaw plugins list` — це локальний знімок реєстру/конфігурації плагінів. Позначка
`enabled` для плагіна там означає, що збережений реєстр і поточна конфігурація дозволяють
плагіну брати участь у роботі. Це не доводить, що вже запущений віддалений дочірній процес Gateway
було перезапущено з тим самим кодом плагіна. У середовищах VPS/контейнерів з
процесами-обгортками надсилайте перезапуски фактичному процесу `openclaw gateway run`
або використовуйте `openclaw gateway restart` для запущеного Gateway.
<Accordion title="Стани Plugin: вимкнений vs відсутній vs недійсний">
- **Вимкнений**: Plugin існує, але правила ввімкнення вимкнули його. Конфігурація зберігається.
- **Відсутній**: конфігурація посилається на ідентифікатор Plugin, який не знайдено під час виявлення.
- **Недійсний**: Plugin існує, але його конфігурація не відповідає оголошеній схемі. Під час запуску Gateway пропускається лише цей Plugin; `openclaw doctor --fix` може ізолювати недійсний запис, вимкнувши його та видаливши його корисне навантаження конфігурації.
<Accordion title="Стани плагіна: вимкнений vs відсутній vs недійсний">
- **Вимкнений**: плагін існує, але правила ввімкнення вимкнули його. Конфігурація зберігається.
- **Відсутній**: конфігурація посилається на ідентифікатор плагіна, який не було знайдено під час виявлення.
- **Недійсний**: плагін існує, але його конфігурація не відповідає оголошеній схемі. Під час запуску Gateway пропускається лише цей плагін; `openclaw doctor --fix` може ізолювати недійсний запис, вимкнувши його та видаливши його вміст конфігурації.
</Accordion>
## Виявлення та пріоритет
## Виявлення та пріоритетність
OpenClaw сканує Plugins в такому порядку (перший збіг має пріоритет):
OpenClaw сканує плагіни в такому порядку (перше знайдене збіг має пріоритет):
<Steps>
<Step title="Шляхи конфігурації">
`plugins.load.paths` — явні шляхи до файлів або каталогів. Шляхи, які
вказують назад на власні паковані каталоги вбудованих Plugins OpenClaw, ігноруються;
виконайте `openclaw doctor --fix`, щоб видалити ці застарілі псевдоніми.
`plugins.load.paths` — явні шляхи до файлів або каталогів. Шляхи, які вказують
назад на власні каталогі пакетних вбудованих плагінів OpenClaw, ігноруються;
запустіть `openclaw doctor --fix`, щоб видалити ці застарілі псевдоніми.
</Step>
<Step title="Plugins робочого простору">
<Step title="Плагіни робочого простору">
`\<workspace\>/.openclaw/<plugin-root>/*.ts` і `\<workspace\>/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Глобальні Plugins">
<Step title="Глобальні плагіни">
`~/.openclaw/<plugin-root>/*.ts` і `~/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Вбудовані Plugins">
Постачаються з OpenClaw. Багато з них увімкнені за замовчуванням (провайдери моделей, мовлення).
<Step title="Вбудовані плагіни">
Постачаються разом з OpenClaw. Багато з них увімкнені за замовчуванням (постачальники моделей, мовлення).
Інші потребують явного ввімкнення.
</Step>
</Steps>
Пакетні інсталяції та Docker-образи зазвичай визначають вбудовані Plugins із
скомпільованого дерева `dist/extensions`. Якщо каталог вихідного коду вбудованого Plugin
примонтовано bind-монтуванням поверх відповідного пакованого шляху вихідного коду, наприклад
`/app/extensions/synology-chat`, OpenClaw трактує цей примонтований каталог вихідного коду
як накладання джерела вбудованого Plugin і виявляє його раніше за пакований
пакет `/app/dist/extensions/synology-chat`. Це дає змогу циклам роботи супровідників у контейнерах
працювати без повернення кожного вбудованого Plugin до вихідного коду TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово використовувати
паковані пакети dist, навіть коли присутні монтування з накладанням вихідного коду.
Пакетні інсталяції та Docker-образи зазвичай визначають вбудовані плагіни з
зібраного дерева `dist/extensions`. Якщо каталог вихідного коду вбудованого плагіна
монтується bind-монтуванням поверх відповідного пакетного шляху вихідного коду, наприклад
`/app/extensions/synology-chat`, OpenClaw розглядає цей змонтований каталог вихідного коду
як накладання вихідного коду вбудованого плагіна та виявляє його раніше за пакетний
пакет `/app/dist/extensions/synology-chat`. Це дозволяє циклам роботи супровідників у контейнерах
працювати без перемикання кожного вбудованого плагіна назад на вихідний код TypeScript.
Установіть `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS=1`, щоб примусово використовувати пакетні dist-збірки,
навіть якщо присутні змонтовані накладання вихідного коду.
### Правила ввімкнення
- `plugins.enabled: false` вимикає всі Plugins і пропускає роботу з виявлення/завантаження Plugins
- `plugins.enabled: false` вимикає всі плагіни й пропускає роботу з виявлення/завантаження плагінів
- `plugins.deny` завжди має пріоритет над allow
- `plugins.entries.\<id\>.enabled: false` вимикає цей Plugin
- Plugins із походженням із робочого простору **типово вимкнені** (їх потрібно явно ввімкнути)
- Вбудовані Plugins дотримуються вбудованого набору типово ввімкнених, якщо не задано перевизначення
- Ексклюзивні слоти можуть примусово ввімкнути вибраний Plugin для цього слота
- Деякі вбудовані Plugins з добровільним увімкненням автоматично вмикаються, коли конфігурація називає
поверхню, що належить Plugin, наприклад посилання на модель провайдера, конфігурацію каналу або
середовище виконання harness
- Застаріла конфігурація Plugin зберігається, поки активний `plugins.enabled: false`;
знову ввімкніть Plugins перед запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори
- Маршрути Codex сімейства OpenAI зберігають окремі межі Plugins:
`openai-codex/*` належить Plugin OpenAI, тоді як вбудований Plugin
app-server Codex вибирається через `agentRuntime.id: "codex"` або застарілі
- `plugins.entries.\<id\>.enabled: false` вимикає цей плагін
- Плагіни з робочого простору **вимкнені за замовчуванням** (їх потрібно явно ввімкнути)
- Вбудовані плагіни дотримуються вбудованого набору, увімкненого за замовчуванням, якщо це не перевизначено
- Ексклюзивні слоти можуть примусово ввімкнути вибраний плагін для цього слота
- Деякі вбудовані opt-in плагіни вмикаються автоматично, коли конфігурація називає
поверхню, що належить плагіну, наприклад посилання на модель постачальника, конфігурацію каналу або
runtime обв’язки
- Застаріла конфігурація плагіна зберігається, поки активне `plugins.enabled: false`;
знову ввімкніть плагіни перед запуском очищення doctor, якщо хочете видалити застарілі ідентифікатори
- Маршрути Codex сімейства OpenAI зберігають окремі межі плагінів:
`openai-codex/*` належить плагіну OpenAI, тоді як вбудований плагін Codex
app-server вибирається через `agentRuntime.id: "codex"` або застарілі
посилання на модель `codex/*`
## Усунення проблем із хуками середовища виконання
## Усунення проблем із runtime-хуками
Якщо Plugin з’являється в `plugins list`, але побічні ефекти або хуки `register(api)`
не виконуються в трафіку живого чату, спочатку перевірте таке:
Якщо плагін з’являється в `plugins list`, але побічні ефекти `register(api)` або хуки
не запускаються в трафіку живого чату, спочатку перевірте таке:
- Виконайте `openclaw gateway status --deep --require-rpc` і підтвердьте, що активні
- Запустіть `openclaw gateway status --deep --require-rpc` і підтвердьте, що активні
URL Gateway, профіль, шлях до конфігурації та процес — саме ті, які ви редагуєте.
- Перезапустіть живий Gateway після змін встановлення/конфігурації/коду Plugin. У контейнерах
- Перезапустіть активний Gateway після змін установлення/конфігурації/коду плагіна. У контейнерах
з обгортками PID 1 може бути лише супервізором; перезапустіть або надішліть сигнал дочірньому
процесу `openclaw gateway run`.
- Використайте `openclaw plugins inspect <id> --json`, щоб підтвердити реєстрацію хуків і
діагностику. Для не вбудованих хукiв розмови, таких як `llm_input`,
діагностику. Для невбудованих conversation-хуків, таких як `llm_input`,
`llm_output`, `before_agent_finalize` і `agent_end`, потрібен
`plugins.entries.<id>.hooks.allowConversationAccess=true`.
- Для перемикання моделей надавайте перевагу `before_model_resolve`. Він виконується перед
визначенням моделі для кроків агента; `llm_output` виконується лише після того, як спроба моделі
створить вивід асистента.
- Для перемикання моделей надавайте перевагу `before_model_resolve`. Він запускається до
розв’язання моделі для ходів агента; `llm_output` запускається лише після того, як спроба моделі
дає відповідь асистента.
- Для підтвердження фактичної моделі сесії використовуйте `openclaw sessions` або
поверхні сесії/стану Gateway, а під час налагодження корисних навантажень провайдера запускайте
поверхні сесії/статусу Gateway, а під час налагодження payload постачальника запускайте
Gateway з `--raw-stream --raw-stream-path <path>`.
### Дубльоване володіння каналом або інструментом
### Дублювання володіння каналом або інструментом
Симптоми:
@ -303,81 +292,81 @@ OpenClaw сканує Plugins в такому порядку (перший зб
- `channel setup already registered: <channel-id> (<plugin-id>)`
- `plugin tool name conflict (<plugin-id>): <tool-name>`
Це означає, що більше ніж один увімкнений Plugin намагається володіти тим самим каналом,
потоком налаштування або назвою інструмента. Найпоширеніша причина — зовнішній Plugin каналу,
встановлений поруч із вбудованим Plugin, який тепер надає той самий ідентифікатор каналу.
Це означає, що більш ніж один увімкнений плагін намагається володіти тим самим каналом,
потоком налаштування або назвою інструмента. Найпоширеніша причина — зовнішній плагін каналу,
установлений поруч із вбудованим плагіном, який тепер надає той самий ідентифікатор каналу.
Кроки налагодження:
- Виконайте `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений Plugin
та його походження.
- Виконайте `openclaw plugins inspect <id> --json` для кожного підозрілого Plugin і
порівняйте `channels`, `channelConfigs`, `tools` та діагностику.
- Виконайте `openclaw plugins registry --refresh` після встановлення або видалення
пакетів Plugin, щоб збережені метадані відображали поточне встановлення.
- Перезапустіть Gateway після змін встановлення, реєстру або конфігурації.
- Запустіть `openclaw plugins list --enabled --verbose`, щоб побачити кожен увімкнений плагін
і його походження.
- Запустіть `openclaw plugins inspect <id> --json` для кожного підозрюваного плагіна та
порівняйте `channels`, `channelConfigs`, `tools` і діагностику.
- Запустіть `openclaw plugins registry --refresh` після встановлення або видалення
пакетів плагінів, щоб збережені метадані відображали поточний стан установлення.
- Перезапустіть Gateway після змін установлення, реєстру або конфігурації.
Варіанти виправлення:
- Якщо один Plugin навмисно замінює інший для того самого ідентифікатора каналу,
бажаний Plugin має оголосити `channelConfigs.<channel-id>.preferOver` з
ідентифікатором Plugin нижчого пріоритету. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
- Якщо один плагін навмисно замінює інший для того самого ідентифікатора каналу,
бажаний плагін має оголосити `channelConfigs.<channel-id>.preferOver` із
ідентифікатором плагіна з нижчим пріоритетом. Див. [/plugins/manifest#replacing-another-channel-plugin](/uk/plugins/manifest#replacing-another-channel-plugin).
- Якщо дублювання випадкове, вимкніть одну зі сторін через
`plugins.entries.<plugin-id>.enabled: false` або видаліть застаріле встановлення Plugin.
- Якщо ви явно ввімкнули обидва Plugins, OpenClaw зберігає цей запит і
повідомляє про конфлікт. Виберіть одного власника для каналу або перейменуйте
інструменти, що належать Plugin, щоб поверхня середовища виконання була однозначною.
`plugins.entries.<plugin-id>.enabled: false` або видаліть застаріле встановлення плагіна.
- Якщо ви явно ввімкнули обидва плагіни, OpenClaw зберігає цей запит і
повідомляє про конфлікт. Виберіть одного власника для каналу або перейменуйте інструменти,
що належать плагіну, щоб поверхня runtime була однозначною.
## Слоти Plugin (ексклюзивні категорії)
## Слоти плагінів (ексклюзивні категорії)
Деякі категорії є ексклюзивними (одночасно активним може бути лише один):
Деякі категорії є ексклюзивними (одночасно може бути активним лише один):
```json5
{
plugins: {
slots: {
memory: "memory-core", // або "none", щоб вимкнути
contextEngine: "legacy", // або ідентифікатор Plugin
memory: "memory-core", // or "none" to disable
contextEngine: "legacy", // or a plugin id
},
},
}
```
| Слот | Що він керує | За замовчуванням |
| --------------- | ----------------------- | --------------------- |
| `memory` | Active Memory Plugin | `memory-core` |
| Слот | Що він контролює | Типово |
| --------------- | ----------------------- | ------------------- |
| `memory` | Active Memory plugin | `memory-core` |
| `contextEngine` | Активний рушій контексту | `legacy` (вбудований) |
## Довідник CLI
## Довідка CLI
```bash
openclaw plugins list # компактний список
openclaw plugins list --enabled # лише ввімкнені Plugins
openclaw plugins list --verbose # детальні рядки для кожного Plugin
openclaw plugins list --json # машиночитний список
openclaw plugins inspect <id> # докладні деталі
openclaw plugins inspect <id> --json # машиночитний формат
openclaw plugins inspect --all # таблиця для всього набору
openclaw plugins info <id> # псевдонім inspect
openclaw plugins doctor # діагностика
openclaw plugins registry # перегляд збереженого стану реєстру
openclaw plugins registry --refresh # перебудова збереженого реєстру
openclaw doctor --fix # відновлення стану реєстру Plugin
openclaw plugins list # compact inventory
openclaw plugins list --enabled # only enabled plugins
openclaw plugins list --verbose # per-plugin detail lines
openclaw plugins list --json # machine-readable inventory
openclaw plugins inspect <id> # deep detail
openclaw plugins inspect <id> --json # machine-readable
openclaw plugins inspect --all # fleet-wide table
openclaw plugins info <id> # inspect alias
openclaw plugins doctor # diagnostics
openclaw plugins registry # inspect persisted registry state
openclaw plugins registry --refresh # rebuild persisted registry
openclaw doctor --fix # repair plugin registry state
openclaw plugins install <package> # встановлення (спочатку ClawHub, потім npm)
openclaw plugins install clawhub:<pkg> # встановлення лише з ClawHub
openclaw plugins install npm:<pkg> # встановлення лише з npm
openclaw plugins install <spec> --force # перезаписати наявне встановлення
openclaw plugins install <path> # встановлення з локального шляху
openclaw plugins install -l <path> # зв’язування (без копіювання) для розробки
openclaw plugins install <package> # install (ClawHub first, then npm)
openclaw plugins install clawhub:<pkg> # install from ClawHub only
openclaw plugins install npm:<pkg> # install from npm only
openclaw plugins install <spec> --force # overwrite existing install
openclaw plugins install <path> # install from local path
openclaw plugins install -l <path> # link (no copy) for dev
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin # записати точну визначену npm-специфікацію
openclaw plugins install <spec> --pin # record exact resolved npm spec
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id-or-npm-spec> # оновити один Plugin
openclaw plugins update <id-or-npm-spec> # update one plugin
openclaw plugins update <id-or-npm-spec> --dangerously-force-unsafe-install
openclaw plugins update --all # оновити все
openclaw plugins uninstall <id> # видалити конфігурацію та записи індексу Plugin
openclaw plugins update --all # update all
openclaw plugins uninstall <id> # remove config and plugin index records
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
@ -386,72 +375,71 @@ openclaw plugins enable <id>
openclaw plugins disable <id>
```
Вбудовані Plugins постачаються разом із OpenClaw. Багато з них увімкнені за замовчуванням (наприклад,
вбудовані провайдери моделей, вбудовані провайдери мовлення та вбудований Plugin
браузера). Інші вбудовані Plugins усе ще потребують `openclaw plugins enable <id>`.
Вбудовані плагіни постачаються разом з OpenClaw. Багато з них увімкнені за замовчуванням (наприклад,
вбудовані постачальники моделей, вбудовані постачальники мовлення та вбудований
browser-плагін). Інші вбудовані плагіни все ще потребують `openclaw plugins enable <id>`.
`--force` перезаписує наявний встановлений Plugin або набір хуків на місці. Використовуйте
`openclaw plugins update <id-or-npm-spec>` для звичайних оновлень відстежуваних npm
Plugins. Цей параметр не підтримується з `--link`, який повторно використовує шлях до джерела
замість копіювання в керовану ціль встановлення.
`--force` перезаписує наявний установлений плагін або hook pack на місці. Використовуйте
`openclaw plugins update <id-or-npm-spec>` для звичайних оновлень відстежуваних npm-
плагінів. Він не підтримується з `--link`, який повторно використовує шлях до джерела
замість копіювання в керовану ціль установлення.
Коли `plugins.allow` уже задано, `openclaw plugins install` додає
ідентифікатор встановленого Plugin до цього списку allow перед його ввімкненням. Якщо той самий ідентифікатор Plugin
присутній у `plugins.deny`, встановлення видаляє цей застарілий запис deny, щоб
явно встановлений Plugin можна було одразу завантажити після перезапуску.
Коли `plugins.allow` уже встановлено, `openclaw plugins install` додає
ідентифікатор встановленого плагіна до цього списку дозволених перед його ввімкненням. Якщо той самий ідентифікатор плагіна
присутній у `plugins.deny`, установлення видаляє цей застарілий запис deny, щоб
явно встановлений плагін можна було одразу завантажити після перезапуску.
OpenClaw зберігає локальний реєстр Plugin як холодну модель читання для
обліку Plugins, володіння внесками та планування запуску. Потоки встановлення, оновлення,
видалення, ввімкнення та вимкнення оновлюють цей реєстр після зміни стану Plugin.
Той самий файл `plugins/installs.json` зберігає довговічні метадані встановлення у
верхньорівневому `installRecords` і метадані маніфесту, які можна перебудувати, у `plugins`. Якщо
OpenClaw зберігає локальний реєстр плагінів як постійну модель холодного читання для
інвентаризації плагінів, володіння внесками та планування запуску. Потоки встановлення, оновлення,
видалення, увімкнення та вимкнення оновлюють цей реєстр після зміни стану
плагіна. Той самий файл `plugins/installs.json` зберігає довговічні метадані встановлення у
верхньорівневому `installRecords` та відновлювані метадані маніфесту в `plugins`. Якщо
реєстр відсутній, застарілий або недійсний, `openclaw plugins registry
--refresh` перебудовує його представлення маніфесту з записів встановлення, політики конфігурації та
метаданих маніфесту/пакета без завантаження модулів середовища виконання Plugin.
`openclaw plugins update <id-or-npm-spec>` застосовується до відстежуваних встановлень. Передавання
npm-специфікації пакета з dist-tag або точною версією знову зіставляє назву пакета
із записом відстежуваного Plugin і записує нову специфікацію для майбутніх оновлень.
Передавання назви пакета без версії повертає точно закріплене встановлення назад до
типової лінії випуску реєстру. Якщо встановлений npm Plugin уже відповідає
визначеній версії та записаній ідентичності артефакта, OpenClaw пропускає оновлення
без завантаження, перевстановлення або переписування конфігурації.
--refresh` перебудовує його представлення маніфесту із записів установлення, політики конфігурації та
метаданих маніфесту/пакета без завантаження runtime-модулів плагіна.
`openclaw plugins update <id-or-npm-spec>` застосовується до відстежуваних установлень. Передавання
специфікації npm-пакета з dist-tag або точною версією зводить назву пакета
назад до відстежуваного запису плагіна та записує нову специфікацію для майбутніх оновлень.
Передавання назви пакета без версії повертає точно зафіксоване встановлення назад до
типової лінії випуску реєстру. Якщо встановлений npm-плагін уже відповідає
розв’язаній версії та записаній ідентичності артефакту, OpenClaw пропускає оновлення
без завантаження, перевстановлення або перезапису конфігурації.
`--pin` працює лише для npm. Він не підтримується з `--marketplace`, оскільки
встановлення з marketplace зберігають метадані джерела marketplace замість npm-специфікації.
`--pin` є лише для npm. Він не підтримується з `--marketplace`, тому що
установлення з marketplace зберігають метадані джерела marketplace замість npm-специфікації.
`--dangerously-force-unsafe-install` — це аварійне перевизначення для хибнопозитивних
спрацювань вбудованого сканера небезпечного коду. Воно дозволяє продовжити встановлення
та оновлення Plugin попри вбудовані результати `critical`, але все одно
не обходить блокування політики Plugin `before_install` або блокування через збої сканування.
Сканування встановлення ігнорує типові тестові файли та каталоги, такі як `tests/`,
`__tests__/`, `*.test.*` і `*.spec.*`, щоб уникнути блокування пакетованих тестових моків;
задекларовані точки входу середовища виконання Plugin усе одно скануються, навіть якщо вони використовують одну
з цих назв.
спрацювань вбудованого сканера небезпечного коду. Воно дозволяє встановлення плагінів
та оновлення плагінів попри вбудовані знахідки рівня `critical`, але все одно
не обходить блокування політики плагіна `before_install` або блокування через помилки сканування.
Сканування встановлення ігнорують поширені тестові файли та каталоги, такі як `tests/`,
`__tests__/`, `*.test.*` і `*.spec.*`, щоб не блокувати пакетні тестові моки;
оголошені runtime-точки входу плагіна все одно скануються, навіть якщо вони використовують одну з
цих назв.
Цей прапорець CLI застосовується лише до потоків встановлення/оновлення Plugin. Встановлення залежностей Skills
через Gateway натомість використовують відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як `openclaw skills install` лишається окремим потоком завантаження/встановлення Skills із ClawHub.
Цей прапорець CLI застосовується лише до потоків встановлення/оновлення плагінів. Установлення залежностей Skills через Gateway
замість цього використовують відповідне перевизначення запиту `dangerouslyForceUnsafeInstall`, тоді як
`openclaw skills install` залишається окремим потоком завантаження/установлення Skills із ClawHub.
Сумісні пакети беруть участь у тому самому потоці list/inspect/enable/disable
для Plugins. Поточна підтримка середовища виконання включає Skills пакетів, command-skills Claude,
типові значення Claude `settings.json`, типові значення Claude `.lsp.json` і
`lspServers`, оголошені в маніфесті, command-skills Cursor і сумісні каталоги
хуків Codex.
для плагінів. Поточна підтримка runtime охоплює Skills у пакетах, Claude command-skills,
значення за замовчуванням Claude `settings.json`, значення за замовчуванням Claude `.lsp.json` і оголошені в маніфесті
`lspServers`, Cursor command-skills та сумісні каталоги хуків Codex.
`openclaw plugins inspect <id>` також повідомляє про виявлені можливості пакетів, а також
підтримувані або непідтримувані записи MCP- і LSP-серверів для Plugins на основі пакетів.
`openclaw plugins inspect <id>` також повідомляє про виявлені можливості пакета, а також
підтримувані або непідтримувані записи MCP і LSP-серверів для плагінів на основі пакетів.
Джерелами marketplace можуть бути назва відомого marketplace Claude з
`~/.claude/plugins/known_marketplaces.json`, локальний корінь marketplace або шлях до
`marketplace.json`, скорочений запис GitHub на кшталт `owner/repo`, URL репозиторію GitHub
або URL git. Для віддалених marketplace записи Plugin мають залишатися в межах
Джерела marketplace можуть бути відомою назвою marketplace Claude з
`~/.claude/plugins/known_marketplaces.json`, локальним коренем marketplace або шляхом до
`marketplace.json`, скороченим записом GitHub на кшталт `owner/repo`, URL репозиторію GitHub або git URL. Для віддалених marketplace записи плагінів мають залишатися в межах
клонованого репозиторію marketplace і використовувати лише відносні шляхи джерел.
Повні відомості див. у [довіднику CLI `openclaw plugins`](/uk/cli/plugins).
Див. повну інформацію в [довідці CLI `openclaw plugins`](/uk/cli/plugins).
## Огляд API Plugin
## Огляд API плагінів
Нативні Plugins експортують об’єкт точки входу, який надає `register(api)`. Старіші
Plugins усе ще можуть використовувати `activate(api)` як застарілий псевдонім, але нові Plugins повинні
Native-плагіни експортують вхідний об’єкт, який надає `register(api)`. Старіші
плагіни все ще можуть використовувати `activate(api)` як застарілий псевдонім, але нові плагіни повинні
використовувати `register`.
```typescript
@ -472,74 +460,73 @@ export default definePluginEntry({
});
```
OpenClaw завантажує об’єкт точки входу та викликає `register(api)` під час
активації Plugin. Завантажувач усе ще повертається до `activate(api)` для старіших Plugins,
але вбудовані Plugins і нові зовнішні Plugins повинні вважати `register` публічним контрактом.
OpenClaw завантажує вхідний об’єкт і викликає `register(api)` під час
активації плагіна. Завантажувач усе ще повертається до `activate(api)` для старіших плагінів,
але вбудовані плагіни та нові зовнішні плагіни мають розглядати `register` як
публічний контракт.
`api.registrationMode` повідомляє Plugin, чому завантажується його точка входу:
`api.registrationMode` повідомляє плагіну, чому завантажується його вхідний об’єкт:
| Режим | Значення |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `full` | Активація середовища виконання. Реєструйте інструменти, хуки, служби, команди, маршрути та інші побічні ефекти живого середовища. |
| `discovery` | Виявлення можливостей лише для читання. Реєструйте провайдерів і метадані; код точки входу довіреного Plugin може завантажуватися, але живі побічні ефекти слід пропускати. |
| `setup-only` | Завантаження метаданих налаштування каналу через полегшену точку входу налаштування. |
| `setup-runtime`| Завантаження налаштування каналу, яке також потребує точки входу середовища виконання. |
| `cli-metadata` | Лише збирання метаданих команд CLI. |
| Режим | Значення |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `full` | Активація runtime. Реєструйте інструменти, хуки, служби, команди, маршрути та інші побічні ефекти активної роботи. |
| `discovery` | Виявлення можливостей лише для читання. Реєструйте постачальників і метадані; код вхідного об’єкта довіреного плагіна може завантажуватися, але пропускайте побічні ефекти активної роботи. |
| `setup-only` | Завантаження метаданих налаштування каналу через полегшений вхідний об’єкт налаштування. |
| `setup-runtime` | Завантаження налаштування каналу, яке також потребує runtime-вхідного об’єкта. |
| `cli-metadata` | Лише збирання метаданих команди CLI. |
Точки входу Plugin, які відкривають сокети, бази даних, фонові працівники або довготривалі
клієнти, повинні захищати ці побічні ефекти умовою `api.registrationMode === "full"`.
Записи плагінів, які відкривають сокети, бази даних, фонові воркери або довгоживучі
клієнти, повинні захищати ці побічні ефекти за допомогою `api.registrationMode === "full"`.
Завантаження для виявлення кешуються окремо від активаційних завантажень і не замінюють
реєстр запущеного Gateway. Виявлення не активує, але й не є вільним від імпорту:
OpenClaw може обчислювати модуль точки входу довіреного Plugin або модуль Plugin каналу, щоб зібрати
знімок. Тримайте верхній рівень модулів легким і без побічних ефектів та переносіть
мережеві клієнти, підпроцеси, слухачі, читання облікових даних і запуск служб
за шляхи повного середовища виконання.
реєстр запущеного Gateway. Виявлення не активує runtime, але й не є вільним від імпорту:
OpenClaw може обчислювати довірений вхідний об’єкт плагіна або модуль channel-плагіна, щоб побудувати
знімок. Робіть верхні рівні модуля легкими та без побічних ефектів, а мережевих клієнтів,
підпроцеси, слухачів, зчитування облікових даних і запуск служб переносіть у шляхи повного runtime.
Поширені методи реєстрації:
| Метод | Що він реєструє |
| -------------------------------------- | --------------------------- |
| `registerProvider` | Провайдер моделі (LLM) |
| `registerChannel` | Канал чату |
| `registerTool` | Інструмент агента |
| `registerHook` / `on(...)` | Хуки життєвого циклу |
| `registerSpeechProvider` | Синтез мовлення / STT |
| `registerRealtimeTranscriptionProvider`| Потоковий STT |
| `registerRealtimeVoiceProvider` | Двобічний голос у реальному часі |
| `registerMediaUnderstandingProvider` | Аналіз зображень/аудіо |
| `registerImageGenerationProvider` | Генерація зображень |
| `registerMusicGenerationProvider` | Генерація музики |
| `registerVideoGenerationProvider` | Генерація відео |
| `registerWebFetchProvider` | Провайдер отримання/скрейпінгу вебу |
| `registerWebSearchProvider` | Вебпошук |
| `registerHttpRoute` | HTTP-ендпойнт |
| `registerCommand` / `registerCli` | Команди CLI |
| `registerContextEngine` | Рушій контексту |
| `registerService` | Фонова служба |
| Метод | Що він реєструє |
| --------------------------------------- | -------------------------- |
| `registerProvider` | Постачальник моделей (LLM) |
| `registerChannel` | Канал чату |
| `registerTool` | Інструмент агента |
| `registerHook` / `on(...)` | Хуки життєвого циклу |
| `registerSpeechProvider` | Text-to-speech / STT |
| `registerRealtimeTranscriptionProvider` | Потоковий STT |
| `registerRealtimeVoiceProvider` | Двосторонній голос у реальному часі |
| `registerMediaUnderstandingProvider` | Аналіз зображень/аудіо |
| `registerImageGenerationProvider` | Генерація зображень |
| `registerMusicGenerationProvider` | Генерація музики |
| `registerVideoGenerationProvider` | Генерація відео |
| `registerWebFetchProvider` | Постачальник отримання/скрапінгу вебданих |
| `registerWebSearchProvider` | Вебпошук |
| `registerHttpRoute` | HTTP-ендпойнт |
| `registerCommand` / `registerCli` | Команди CLI |
| `registerContextEngine` | Рушій контексту |
| `registerService` | Фонова служба |
Поведінка захисту хуків для типізованих хуків життєвого циклу:
Поведінка guard-хуків для типізованих хуків життєвого циклу:
- `before_tool_call`: `{ block: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: `{ block: false }` не виконує жодної дії та не скасовує раніше встановлене блокування.
- `before_tool_call`: `{ block: false }` нічого не робить і не скасовує раніше встановлене блокування.
- `before_install`: `{ block: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `before_install`: `{ block: false }` не виконує жодної дії та не скасовує раніше встановлене блокування.
- `before_install`: `{ block: false }` нічого не робить і не скасовує раніше встановлене блокування.
- `message_sending`: `{ cancel: true }` є термінальним; обробники з нижчим пріоритетом пропускаються.
- `message_sending`: `{ cancel: false }` не виконує жодної дії та не скасовує раніше встановлене скасування.
- `message_sending`: `{ cancel: false }` нічого не робить і не скасовує раніше встановлене скасування.
Нативні запуски app-server Codex повертають події нативних інструментів Codex назад у цю
поверхню хуків. Plugins можуть блокувати нативні інструменти Codex через `before_tool_call`,
спостерігати за результатами через `after_tool_call` і брати участь у схваленнях
`PermissionRequest` Codex. Міст поки що не переписує аргументи нативних інструментів Codex.
Точна межа підтримки середовища виконання Codex описана в
[контракті підтримки Codex harness v1](/uk/plugins/codex-harness#v1-support-contract).
Native Codex app-server повертає через міст події інструментів Codex-native назад у цю
поверхню хуків. Плагіни можуть блокувати native-інструменти Codex через `before_tool_call`,
спостерігати результати через `after_tool_call` і брати участь у схваленнях
Codex `PermissionRequest`. Міст поки що не переписує аргументи native-інструментів Codex. Точна межа підтримки runtime Codex описана в
[Codex harness v1 support contract](/uk/plugins/codex-harness#v1-support-contract).
Повну поведінку типізованих хуків див. в [огляді SDK](/uk/plugins/sdk-overview#hook-decision-semantics).
Щоб дізнатися про повну поведінку типізованих хуків, див. [огляд SDK](/uk/plugins/sdk-overview#hook-decision-semantics).
## Пов’язане
- [Створення plugins](/uk/plugins/building-plugins) — створіть власний Plugin
- [Пакети Plugin](/uk/plugins/bundles) — сумісність пакетів Codex/Claude/Cursor
- [Маніфест Plugin](/uk/plugins/manifest) — схема маніфесту
- [Реєстрація інструментів](/uk/plugins/building-plugins#registering-agent-tools) — додайте інструменти агента в Plugin
- [Внутрішня архітектура Plugin](/uk/plugins/architecture) — модель можливостей і конвеєр завантаження
- [Plugins спільноти](/uk/plugins/community) — сторонні списки
- [Building plugins](/uk/plugins/building-plugins) — створення власного плагіна
- [Plugin bundles](/uk/plugins/bundles) — сумісність пакетів Codex/Claude/Cursor
- [Plugin manifest](/uk/plugins/manifest) — схема маніфесту
- [Registering tools](/uk/plugins/building-plugins#registering-agent-tools) — додавання інструментів агента в плагін
- [Plugin internals](/uk/plugins/architecture) — модель можливостей і конвеєр завантаження
- [Community plugins](/uk/plugins/community) — сторонні списки