chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-08 18:12:39 +00:00
parent a000ac4238
commit 37fd8f9d9c
4 changed files with 1264 additions and 1251 deletions

View File

@ -1,40 +1,41 @@
---
read_when:
- Вам потрібен довідник із налаштування моделей для кожного постачальника окремо
- Ви хочете приклади конфігурацій або команд CLI для онбордингу постачальників моделей
summary: Огляд постачальників моделей із прикладами конфігурацій і потоками CLI
- Вам потрібні приклади конфігурацій або команди CLI для початкового налаштування постачальників моделей
summary: Огляд постачальників моделей із прикладами конфігурацій і потоків CLI
title: Постачальники моделей
x-i18n:
generated_at: "2026-04-08T03:42:18Z"
generated_at: "2026-04-08T18:10:02Z"
model: gpt-5.4
provider: openai
source_hash: 558ac9e34b67fcc3dd6791a01bebc17e1c34152fa6c5611593d681e8cfa532d9
source_hash: 53e3141256781002bbe1d7e7b78724a18d061fcf36a203baae04a091b8c9ea1b
source_path: concepts/model-providers.md
workflow: 15
---
# Постачальники моделей
На цій сторінці описано **постачальників LLM/моделей** (а не канали чату, як-от WhatsApp/Telegram).
Ця сторінка охоплює **постачальників LLM/моделей** (а не канали чату на кшталт WhatsApp/Telegram).
Правила вибору моделей див. у [/concepts/models](/uk/concepts/models).
## Швидкі правила
- Посилання на моделі використовують формат `provider/model` (приклад: `opencode/claude-opus-4-6`).
- Якщо ви задаєте `agents.defaults.models`, це стає списком дозволених моделей.
- Якщо ви задаєте `agents.defaults.models`, воно стає списком дозволених моделей.
- Допоміжні команди CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
- Резервні правила часу виконання, cooldown-перевірки та збереження перевизначень сеансу
- Резервні правила під час виконання, cooldown-перевірки та збереження перевизначень сеансу
задокументовано в [/concepts/model-failover](/uk/concepts/model-failover).
- `models.providers.*.models[].contextWindow` — це власні метадані моделі;
- `models.providers.*.models[].contextWindow` — це нативні метадані моделі;
`models.providers.*.models[].contextTokens` — це фактичне обмеження під час виконання.
- Плагіни постачальників можуть впроваджувати каталоги моделей через `registerProvider({ catalog })`;
OpenClaw об’єднує цей результат у `models.providers` перед записом
- Плагіни постачальників можуть додавати каталоги моделей через `registerProvider({ catalog })`;
OpenClaw об’єднує цей вивід у `models.providers` перед записом
`models.json`.
- Маніфести постачальників можуть оголошувати `providerAuthEnvVars`, щоб загальні перевірки
автентифікації на основі змінних середовища не потребували завантаження часу виконання плагіна. Решта базової мапи змінних середовища
тепер використовується лише для неплагінових/базових постачальників і кількох випадків
загального пріоритету, як-от онбординг Anthropic із пріоритетом API-ключа.
- Плагіни постачальників також можуть володіти поведінкою часу виконання постачальника через
- Маніфести постачальників можуть оголошувати `providerAuthEnvVars` і
`providerAuthAliases`, щоб загальні перевірки автентифікації на основі env і варіанти постачальників
не потребували завантаження runtime плагіна. Решта мапи env-змінних у ядрі тепер
потрібна лише для неплагінних/вбудованих постачальників і кількох випадків із загальним пріоритетом,
як-от початкове налаштування Anthropic із пріоритетом API-ключа.
- Плагіни постачальників також можуть володіти поведінкою runtime постачальника через
`normalizeModelId`, `normalizeTransport`, `normalizeConfig`,
`applyNativeStreamingUsageCompat`, `resolveConfigApiKey`,
`resolveSyntheticAuth`, `shouldDeferSyntheticProfileAuth`,
@ -50,216 +51,219 @@ x-i18n:
`isCacheTtlEligible`, `buildMissingAuthMessage`, `suppressBuiltInModel`,
`augmentModelCatalog`, `isBinaryThinking`, `supportsXHighThinking`,
`resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`,
`prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, and
`prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, і
`onModelSelected`.
- Примітка: `capabilities` часу виконання постачальника — це спільні метадані раннера (сімейство постачальника,
особливості стенограми/інструментів, підказки щодо транспорту/кешу). Це не те
саме, що [публічна модель можливостей](/uk/plugins/architecture#public-capability-model),
яка описує, що реєструє плагін (текстове інференсування, мовлення тощо).
- Примітка: `capabilities` runtime постачальника — це спільні метадані виконавця (сімейство постачальника,
особливості транскрипту/інструментів, підказки щодо транспорту/кешу). Це не те саме,
що [публічна модель можливостей](/uk/plugins/architecture#public-capability-model),
яка описує, що реєструє плагін (текстовий inference, мовлення тощо).
## Поведінка постачальника, що належить плагіну
## Поведінка постачальника, якою володіє плагін
Плагіни постачальників тепер можуть володіти більшістю специфічної для постачальника логіки, тоді як OpenClaw зберігає
загальний цикл інференсування.
Тепер плагіни постачальників можуть володіти більшістю специфічної логіки постачальника, тоді як OpenClaw зберігає
загальний цикл inference.
Типовий розподіл:
Типовий поділ:
- `auth[].run` / `auth[].runNonInteractive`: постачальник володіє потоками онбордингу/входу
- `auth[].run` / `auth[].runNonInteractive`: постачальник володіє потоками початкового налаштування/входу
для `openclaw onboard`, `openclaw models auth` і безголового налаштування
- `wizard.setup` / `wizard.modelPicker`: постачальник володіє підписами вибору автентифікації,
застарілими псевдонімами, підказками списку дозволених моделей під час онбордингу та записами налаштування в засобах вибору онбордингу/моделей
- `wizard.setup` / `wizard.modelPicker`: постачальник володіє мітками вибору автентифікації,
застарілими псевдонімами, підказками щодо списку дозволених моделей для початкового налаштування і записами налаштування в пікерах онбордингу/моделей
- `catalog`: постачальник з’являється в `models.providers`
- `normalizeModelId`: постачальник нормалізує застарілі/preview-ідентифікатори моделей перед
- `normalizeModelId`: постачальник нормалізує застарілі/preview ідентифікатори моделей перед
пошуком або канонізацією
- `normalizeTransport`: постачальник нормалізує `api` / `baseUrl` сімейства транспорту
перед загальним складанням моделі; OpenClaw спочатку перевіряє відповідного постачальника,
перед загальним збиранням моделі; OpenClaw спершу перевіряє відповідного постачальника,
потім інші плагіни постачальників із підтримкою хуків, доки один із них справді не змінить
транспорт
- `normalizeConfig`: постачальник нормалізує конфігурацію `models.providers.<id>` перед
її використанням під час виконання; OpenClaw спочатку перевіряє відповідного постачальника, потім інші
- `normalizeConfig`: постачальник нормалізує конфігурацію `models.providers.<id>` перед тим,
як runtime її використає; OpenClaw спершу перевіряє відповідного постачальника, потім інші
плагіни постачальників із підтримкою хуків, доки один із них справді не змінить конфігурацію. Якщо жоден
хук постачальника не переписує конфігурацію, вбудовані допоміжні засоби сімейства Google
усе ще нормалізують підтримувані записи постачальників Google.
- `applyNativeStreamingUsageCompat`: постачальник застосовує переписування сумісності власного потокового використання на основі кінцевої точки для конфігурованих постачальників
- `resolveConfigApiKey`: постачальник розв’язує автентифікацію за маркером змінної середовища для конфігурованих постачальників
без примусового повного завантаження автентифікації часу виконання. `amazon-bedrock` тут також має
вбудований резолвер маркерів середовища AWS, хоча автентифікація часу виконання Bedrock використовує
типовий ланцюжок AWS SDK.
- `resolveSyntheticAuth`: постачальник може надавати доступність локальної/self-hosted чи іншої
автентифікації на основі конфігурації без збереження незашифрованих секретів
- `shouldDeferSyntheticProfileAuth`: постачальник може позначати збережені синтетичні профілі-заповнювачі
як менш пріоритетні, ніж автентифікація на основі env/config
хук постачальника не переписує конфігурацію, вбудовані допоміжні засоби для сімейства Google
усе одно нормалізують підтримувані записи постачальників Google.
- `applyNativeStreamingUsageCompat`: постачальник застосовує сумісні переписування native streaming-usage, керовані endpoint, для конфігурованих постачальників
- `resolveConfigApiKey`: постачальник визначає автентифікацію через env-маркери для конфігурованих постачальників
без примусового завантаження повної runtime-автентифікації. `amazon-bedrock` також має
вбудований resolver AWS env-marker тут, хоча runtime-автентифікація Bedrock використовує
стандартний ланцюжок AWS SDK.
- `resolveSyntheticAuth`: постачальник може показувати доступність локальної/self-hosted або іншої
автентифікації на основі конфігурації без збереження секретів у відкритому вигляді
- `shouldDeferSyntheticProfileAuth`: постачальник може позначати збережені синтетичні заповнювачі профілів
як менш пріоритетні, ніж автентифікація на основі env/конфігурації
- `resolveDynamicModel`: постачальник приймає ідентифікатори моделей, яких ще немає в локальному
статичному каталозі
- `prepareDynamicModel`: постачальнику потрібне оновлення метаданих перед повторною спробою
динамічного розв’язання
- `prepareDynamicModel`: постачальнику потрібно оновлення метаданих перед повторною спробою
динамічного визначення
- `normalizeResolvedModel`: постачальнику потрібні переписування транспорту або base URL
- `contributeResolvedModelCompat`: постачальник додає прапорці сумісності для своїх
вендорних моделей навіть тоді, коли вони надходять через інший сумісний транспорт
- `capabilities`: постачальник публікує особливості стенограми/інструментів/сімейства постачальника
- `normalizeToolSchemas`: постачальник очищає схеми інструментів перед тим, як їх побачить
вбудований раннер
- `inspectToolSchemas`: постачальник показує попередження про схему, специфічні для транспорту,
- `contributeResolvedModelCompat`: постачальник додає прапори сумісності для своїх
вендорських моделей, навіть коли вони надходять через інший сумісний транспорт
- `capabilities`: постачальник публікує особливості транскрипту/інструментів/сімейства постачальника
- `normalizeToolSchemas`: постачальник очищає схеми інструментів, перш ніж вбудований
виконавець їх побачить
- `inspectToolSchemas`: постачальник показує специфічні для транспорту попередження про схеми
після нормалізації
- `resolveReasoningOutputMode`: постачальник вибирає власні чи теговані
контракти виводу міркувань
- `prepareExtraParams`: постачальник задає типові значення або нормалізує параметри запиту для кожної моделі
- `createStreamFn`: постачальник замінює звичайний шлях потоку повністю
власним транспортом
- `wrapStreamFn`: постачальник застосовує обгортки сумісності заголовків/тіла/моделі запиту
- `resolveTransportTurnState`: постачальник надає власні заголовки або метадані транспорту
для кожного ходу
- `resolveWebSocketSessionPolicy`: постачальник надає власні заголовки сеансу WebSocket
або політику cooldown сеансу
- `resolveReasoningOutputMode`: постачальник обирає нативні чи теговані
контракти виводу reasoning
- `prepareExtraParams`: постачальник задає значення за замовчуванням або нормалізує параметри запиту для кожної моделі
- `createStreamFn`: постачальник замінює звичайний шлях потоку на повністю
власний транспорт
- `wrapStreamFn`: постачальник застосовує обгортки сумісності для заголовків/тіла/моделі запиту
- `resolveTransportTurnState`: постачальник надає нативні заголовки транспорту
або метадані на кожен хід
- `resolveWebSocketSessionPolicy`: постачальник надає нативні заголовки сесії WebSocket
або політику cool-down сесії
- `createEmbeddingProvider`: постачальник володіє поведінкою embedding для пам’яті, коли вона
належить плагіну постачальника, а не базовому комутатору embedding
- `formatApiKey`: постачальник форматує збережені профілі автентифікації у
рядок `apiKey`, який очікує транспорт під час виконання
має належати плагіну постачальника, а не вбудованому комутатору embedding
- `formatApiKey`: постачальник форматує збережені профілі автентифікації у runtime-рядок
`apiKey`, очікуваний транспортом
- `refreshOAuth`: постачальник володіє оновленням OAuth, коли спільних
засобів оновлення `pi-ai` недостатньо
- `buildAuthDoctorHint`: постачальник додає вказівки з відновлення, коли оновлення OAuth
не вдається
- `matchesContextOverflowError`: постачальник розпізнає специфічні для постачальника
помилки переповнення контекстного вікна, які пропустили б загальні евристики
- `classifyFailoverReason`: постачальник мапить специфічні для постачальника сирі помилки транспорту/API
на причини перемикання, як-от rate limit або перевантаження
- `isCacheTtlEligible`: постачальник визначає, які ідентифікатори моделей вищого рівня підтримують TTL кешу промптів
помилки переповнення context window, які загальні евристики пропустили б
- `classifyFailoverReason`: постачальник зіставляє специфічні для постачальника сирі помилки транспорту/API
з причинами failover, такими як rate limit або overload
- `isCacheTtlEligible`: постачальник вирішує, які upstream ідентифікатори моделей підтримують prompt-cache TTL
- `buildMissingAuthMessage`: постачальник замінює загальну помилку сховища автентифікації
на специфічну для постачальника підказку з відновлення
- `suppressBuiltInModel`: постачальник приховує застарілі рядки вищого рівня і може повернути
помилку, що належить вендору, для прямих помилок розв’язання
специфічною для постачальника підказкою щодо відновлення
- `suppressBuiltInModel`: постачальник приховує застарілі upstream-рядки і може повертати
помилку, яка належить вендору, для прямих збоїв визначення
- `augmentModelCatalog`: постачальник додає синтетичні/фінальні рядки каталогу після
виявлення та злиття конфігурації
- `isBinaryThinking`: постачальник володіє UX двійкового ввімкнення/вимкнення thinking
виявлення та об’єднання конфігурації
- `isBinaryThinking`: постачальник володіє UX бінарного thinking увімк./вимк.
- `supportsXHighThinking`: постачальник вмикає `xhigh` для вибраних моделей
- `resolveDefaultThinkingLevel`: постачальник володіє типовою політикою `/think` для
- `resolveDefaultThinkingLevel`: постачальник володіє політикою `/think` за замовчуванням для
сімейства моделей
- `applyConfigDefaults`: постачальник застосовує специфічні глобальні типові значення постачальника
- `applyConfigDefaults`: постачальник застосовує глобальні значення за замовчуванням, специфічні для постачальника,
під час матеріалізації конфігурації на основі режиму автентифікації, env або сімейства моделей
- `isModernModelRef`: постачальник володіє зіставленням бажаної live/smoke-моделі
- `isModernModelRef`: постачальник володіє зіставленням бажаних live/smoke моделей
- `prepareRuntimeAuth`: постачальник перетворює налаштовані облікові дані на короткоживучий
токен часу виконання
- `resolveUsageAuth`: постачальник розв’язує облікові дані використання/квоти для `/usage`
runtime-токен
- `resolveUsageAuth`: постачальник визначає облікові дані використання/квот для `/usage`
і пов’язаних поверхонь статусу/звітності
- `fetchUsageSnapshot`: постачальник володіє отриманням/розбором кінцевої точки використання, тоді як
базова система все ще володіє оболонкою підсумку та форматуванням
- `onModelSelected`: постачальник виконує побічні ефекти після вибору, як-от
телеметрія або ведення обліку сеансу, що належить постачальнику
- `fetchUsageSnapshot`: постачальник володіє отриманням/розбором endpoint використання, тоді як
ядро все ще володіє оболонкою зведення та форматуванням
- `onModelSelected`: постачальник виконує побічні дії після вибору моделі, такі як
телеметрія або керування сеансом, що належить постачальнику
Поточні вбудовані приклади:
- `anthropic`: резервна пряма сумісність для Claude 4.6, підказки з відновлення автентифікації, отримання
кінцевої точки використання, метадані TTL кешу/сімейства постачальника та глобальні
типові значення конфігурації з урахуванням автентифікації
- `amazon-bedrock`: зіставлення переповнення контексту та класифікація причин
перемикання, що належать постачальнику, для специфічних помилок Bedrock щодо throttle/not-ready, а також
спільне сімейство повторного відтворення `anthropic-by-model` для політики replay лише Claude
- `anthropic`: резервна сумісність уперед для Claude 4.6, підказки з відновлення автентифікації, отримання
endpoint використання, метадані cache-TTL/сімейства постачальника та глобальні
значення конфігурації за замовчуванням з урахуванням автентифікації
- `amazon-bedrock`: визначення переповнення контексту та класифікація причин
failover для специфічних помилок Bedrock throttle/not-ready, а також
спільне сімейство повторного відтворення `anthropic-by-model` для захисту політики replay лише для Claude
на трафіку Anthropic
- `anthropic-vertex`: обмеження політики replay лише Claude для Anthropic-message
трафіку
- `openrouter`: наскрізні ідентифікатори моделей, обгортки запитів, підказки
щодо можливостей постачальника, санітизація thought-signature Gemini на проксійованому трафіку Gemini,
проксійнe впровадження reasoning через сімейство потоків `openrouter-thinking`, переадресація
метаданих маршрутизації та політика TTL кешу
- `github-copilot`: онбординг/вхід із пристрою, резервне суміщення моделей для майбутньої сумісності,
підказки стенограми Claude-thinking, обмін токенів часу виконання та отримання
кінцевої точки використання
- `openai`: резервна пряма сумісність для GPT-5.4, нормалізація прямого транспорту
OpenAI, підказки про відсутню автентифікацію з урахуванням Codex, приглушення Spark, синтетичні
рядки каталогу OpenAI/Codex, політика thinking/live-моделей, нормалізація псевдонімів токенів використання (`input` / `output` і сімейства `prompt` / `completion`), спільне
сімейство потоків `openai-responses-defaults` для власних обгорток OpenAI/Codex,
метадані сімейства постачальника, реєстрація вбудованого постачальника генерації зображень
для `gpt-image-1` та реєстрація вбудованого постачальника генерації відео
для `sora-2`
- `google` і `google-gemini-cli`: резервна пряма сумісність для Gemini 3.1,
власна перевірка replay Gemini, санітизація bootstrap replay, тегований
режим виводу reasoning, зіставлення сучасних моделей, реєстрація вбудованого постачальника генерації зображень для моделей Gemini image-preview і вбудована
- `anthropic-vertex`: захист політики replay лише для Claude на трафіку
Anthropic-message
- `openrouter`: наскрізні ідентифікатори моделей, обгортки запитів, підказки щодо можливостей постачальника,
очищення thought-signature Gemini на проксійованому трафіку Gemini, ін’єкція proxy
reasoning через сімейство потоків `openrouter-thinking`, пересилання метаданих
маршрутизації та політика cache-TTL
- `github-copilot`: початкове налаштування/вхід через пристрій, резервна сумісність моделей уперед,
підказки транскрипту Claude-thinking, обмін runtime-токенів і отримання endpoint
використання
- `openai`: резервна сумісність уперед для GPT-5.4, пряма нормалізація транспорту OpenAI,
підказки відсутньої автентифікації з урахуванням Codex, приглушення Spark, синтетичні
рядки каталогу OpenAI/Codex, політика thinking/live-model, нормалізація псевдонімів токенів використання
(`input` / `output` і сімейства `prompt` / `completion`), спільне сімейство потоків
`openai-responses-defaults` для нативних обгорток OpenAI/Codex,
метадані сімейства постачальника, вбудована реєстрація постачальника
генерації зображень для `gpt-image-1` і вбудована реєстрація постачальника
генерації відео для `sora-2`
- `google` і `google-gemini-cli`: резервна сумісність уперед для Gemini 3.1,
нативна перевірка replay Gemini, очищення bootstrap replay, тегований
режим виводу reasoning, зіставлення сучасних моделей, вбудована реєстрація постачальника генерації зображень
для preview-моделей Gemini image і вбудована
реєстрація постачальника генерації відео для моделей Veo; OAuth Gemini CLI також
володіє форматуванням токенів профілю автентифікації, розбором токенів використання та отриманням
кінцевої точки квот для поверхонь використання
- `moonshot`: спільний транспорт, нормалізація корисного навантаження thinking, що належить плагіну
- `kilocode`: спільний транспорт, заголовки запиту, що належать плагіну, нормалізація
корисного навантаження reasoning, санітизація thought-signature проксійованого Gemini та політика TTL кешу
- `zai`: резервна пряма сумісність для GLM-5, типові значення `tool_stream`, TTL кешу,
політика binary-thinking/live-моделей, а також автентифікація використання + отримання квот;
endpoint квот для поверхонь використання
- `moonshot`: спільний транспорт, нормалізація payload thinking, що належить плагіну
- `kilocode`: спільний транспорт, заголовки запитів, що належать плагіну, нормалізація payload reasoning,
очищення thought-signature proxy-Gemini і політика cache-TTL
- `zai`: резервна сумісність уперед для GLM-5, значення за замовчуванням `tool_stream`, політика cache-TTL,
політика binary-thinking/live-model і автентифікація використання + отримання квот;
невідомі ідентифікатори `glm-5*` синтезуються з вбудованого шаблону `glm-4.7`
- `xai`: нормалізація власного транспорту Responses, переписування псевдонімів `/fast` для
швидких варіантів Grok, типовий `tool_stream`, очищення схем інструментів /
корисного навантаження reasoning, специфічне для xAI, та вбудована реєстрація постачальника генерації відео
- `xai`: нативна нормалізація транспорту Responses, переписування псевдонімів `/fast` для
швидких варіантів Grok, значення за замовчуванням `tool_stream`, очищення схем інструментів /
payload reasoning для xAI і вбудована реєстрація постачальника генерації відео
для `grok-imagine-video`
- `mistral`: метадані можливостей, що належать плагіну
- `opencode` і `opencode-go`: метадані можливостей, що належать плагіну, плюс
санітизація thought-signature проксійованого Gemini
очищення thought-signature proxy-Gemini
- `alibaba`: каталог генерації відео, що належить плагіну, для прямих посилань на моделі Wan,
таких як `alibaba/wan2.6-t2v`
як-от `alibaba/wan2.6-t2v`
- `byteplus`: каталоги, що належать плагіну, плюс вбудована реєстрація постачальника генерації відео
для моделей Seedance text-to-video/image-to-video
- `fal`: вбудована реєстрація постачальника генерації відео для розміщеної сторонньої
реєстрації постачальника генерації зображень для моделей зображень FLUX, а також вбудована
реєстрація постачальника генерації відео для розміщених сторонніх відеомоделей
- `fal`: вбудована реєстрація постачальника генерації відео для hosted third-party
реєстрація постачальника генерації зображень для моделей FLUX image плюс вбудована
реєстрація постачальника генерації відео для hosted third-party video models
- `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`,
`stepfun`, `synthetic`, `venice`, `vercel-ai-gateway` і `volcengine`:
лише каталоги, що належать плагіну
- `qwen`: каталоги, що належать плагіну, для текстових моделей плюс спільні
реєстрації постачальників media-understanding і генерації відео для його
мультимодальних поверхонь; генерація відео Qwen використовує стандартні кінцеві точки DashScope video з вбудованими моделями Wan, такими як `wan2.6-t2v` і `wan2.7-r2v`
- `runway`: реєстрація постачальника генерації відео, що належить плагіну, для власних
моделей на основі задач Runway, таких як `gen4.5`
реєстрації постачальників media-understanding і video-generation для його
мультимодальних поверхонь; генерація відео Qwen використовує стандартні відеоendpoint DashScope
з вбудованими моделями Wan, такими як `wan2.6-t2v` і `wan2.7-r2v`
- `runway`: реєстрація постачальника генерації відео, що належить плагіну, для нативних
моделей Runway на основі задач, таких як `gen4.5`
- `minimax`: каталоги, що належать плагіну, вбудована реєстрація постачальника генерації відео
для моделей відео Hailuo, вбудована реєстрація постачальника генерації зображень
для `image-01`, гібридний вибір політики replay Anthropic/OpenAI
та логіка автентифікації/знімка використання
для відеомоделей Hailuo, вбудована реєстрація постачальника генерації зображень
для `image-01`, гібридний вибір політики replay Anthropic/OpenAI і логіка
автентифікації/знімків використання
- `together`: каталоги, що належать плагіну, плюс вбудована реєстрація постачальника генерації відео
для відеомоделей Wan
- `xiaomi`: каталоги, що належать плагіну, плюс логіка автентифікації/знімка використання
- `xiaomi`: каталоги, що належать плагіну, плюс логіка автентифікації/знімків використання
Вбудований плагін `openai` тепер володіє обома ідентифікаторами постачальників: `openai` і
Тепер вбудований плагін `openai` володіє обома ідентифікаторами постачальника: `openai` і
`openai-codex`.
Це охоплює постачальників, які все ще вписуються у звичайні транспорти OpenClaw. Постачальник,
Це охоплює постачальників, які все ще вписуються в нормальні транспорти OpenClaw. Постачальник,
якому потрібен повністю власний виконавець запитів, — це окрема, глибша поверхня розширення.
## Ротація API-ключів
- Підтримує загальну ротацію постачальників для вибраних постачальників.
- Налаштуйте кілька ключів через:
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (єдиний live-override, найвищий пріоритет)
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (одне live-перевизначення, найвищий пріоритет)
- `<PROVIDER>_API_KEYS` (список через кому або крапку з комою)
- `<PROVIDER>_API_KEY` (основний ключ)
- `<PROVIDER>_API_KEY_*` (нумерований список, наприклад `<PROVIDER>_API_KEY_1`)
- Для постачальників Google як резерв також додається `GOOGLE_API_KEY`.
- Порядок вибору ключів зберігає пріоритет і видаляє дублікати значень.
- Запити повторюються з наступним ключем лише у відповідь на rate-limit (наприклад,
- Для постачальників Google `GOOGLE_API_KEY` також включено як резервний варіант.
- Порядок вибору ключів зберігає пріоритет і усуває дублікати значень.
- Запити повторюються з наступним ключем лише у відповідях із rate limit (наприклад
`429`, `rate_limit`, `quota`, `resource exhausted`, `Too many
concurrent requests`, `ThrottlingException`, `concurrency limit reached`,
`workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміт використання).
- Помилки, не пов’язані з rate-limit, завершуються негайно; ротація ключів не виконується.
- Коли всі кандидатні ключі не спрацьовують, повертається фінальна помилка з останньої спроби.
- Збої, не пов’язані з rate limit, завершуються негайно; ротація ключів не виконується.
- Коли всі кандидатні ключі зазнають невдачі, повертається фінальна помилка з останньої спроби.
## Вбудовані постачальники (каталог pi-ai)
OpenClaw постачається з каталогом piai. Ці постачальники не потребують
конфігурації `models.providers`; достатньо задати автентифікацію й вибрати модель.
OpenClaw постачається з каталогом piai. Для цих постачальників **не потрібна**
конфігурація `models.providers`; достатньо налаштувати автентифікацію та вибрати модель.
### OpenAI
- Постачальник: `openai`
- Автентифікація: `OPENAI_API_KEY`
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, а також `OPENCLAW_LIVE_OPENAI_KEY` (єдине перевизначення)
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, а також `OPENCLAW_LIVE_OPENAI_KEY` (одне перевизначення)
- Приклади моделей: `openai/gpt-5.4`, `openai/gpt-5.4-pro`
- CLI: `openclaw onboard --auth-choice openai-api-key`
- Типовий транспорт — `auto` (спочатку WebSocket, резервно SSE)
- Перевизначення для окремої моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- Підігрів WebSocket OpenAI Responses типово ввімкнено через `params.openaiWsWarmup` (`true`/`false`)
- Транспорт за замовчуванням`auto` (спочатку WebSocket, резервно SSE)
- Перевизначення для кожної моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- Warm-up OpenAI Responses WebSocket за замовчуванням увімкнено через `params.openaiWsWarmup` (`true`/`false`)
- Пріоритетну обробку OpenAI можна ввімкнути через `agents.defaults.models["openai/<model>"].params.serviceTier`
- `/fast` і `params.fastMode` маплять прямі запити OpenAI `openai/*` Responses на `service_tier=priority` у `api.openai.com`
- `/fast` і `params.fastMode` зіставляють прямі запити Responses `openai/*` з `service_tier=priority` на `api.openai.com`
- Використовуйте `params.serviceTier`, якщо вам потрібен явний рівень замість спільного перемикача `/fast`
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`,
`User-Agent`) застосовуються лише до власного трафіку OpenAI на `api.openai.com`, а не до
загальних OpenAI-сумісних проксі
- Власні маршрути OpenAI також зберігають `store` Responses, підказки кешу промптів і
формування корисного навантаження для сумісності reasoning OpenAI; проксі-маршрути — ні
- `openai/gpt-5.3-codex-spark` навмисно приглушено в OpenClaw, оскільки жива API OpenAI його відхиляє; Spark розглядається лише як Codex
`User-Agent`) застосовуються лише до нативного трафіку OpenAI на `api.openai.com`, а не
до загальних OpenAI-сумісних проксі
- Нативні маршрути OpenAI також зберігають `store` Responses, підказки prompt-cache і
формування payload сумісності reasoning OpenAI; проксі-маршрути цього не роблять
- `openai/gpt-5.3-codex-spark` навмисно приглушено в OpenClaw, оскільки live API OpenAI його відхиляє; Spark вважається доступним лише для Codex
```json5
{
@ -271,12 +275,12 @@ OpenClaw постачається з каталогом piai. Ці поста
- Постачальник: `anthropic`
- Автентифікація: `ANTHROPIC_API_KEY`
- Необов’язкова ротація: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, а також `OPENCLAW_LIVE_ANTHROPIC_KEY` (єдине перевизначення)
- Необов’язкова ротація: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, а також `OPENCLAW_LIVE_ANTHROPIC_KEY` (одне перевизначення)
- Приклад моделі: `anthropic/claude-opus-4-6`
- CLI: `openclaw onboard --auth-choice apiKey`
- Прямі публічні запити Anthropic підтримують спільний перемикач `/fast` і `params.fastMode`, включно з трафіком, автентифікованим API-ключем та OAuth, надісланим до `api.anthropic.com`; OpenClaw мапить це на Anthropic `service_tier` (`auto` проти `standard_only`)
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тож OpenClaw вважає повторне використання Claude CLI і `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- Токен налаштування Anthropic і далі доступний як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI і `claude -p`, коли це доступно.
- Прямі публічні запити Anthropic підтримують спільний перемикач `/fast` і `params.fastMode`, включно з трафіком, автентифікованим API-ключем і OAuth, надісланим на `api.anthropic.com`; OpenClaw зіставляє це з Anthropic `service_tier` (`auto` проти `standard_only`)
- Примітка Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тож OpenClaw вважає повторне використання Claude CLI і `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- Токен налаштування Anthropic усе ще доступний як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI і `claude -p`, якщо вони доступні.
```json5
{
@ -290,16 +294,16 @@ OpenClaw постачається з каталогом piai. Ці поста
- Автентифікація: OAuth (ChatGPT)
- Приклад моделі: `openai-codex/gpt-5.4`
- CLI: `openclaw onboard --auth-choice openai-codex` або `openclaw models auth login --provider openai-codex`
- Типовий транспорт — `auto` (спочатку WebSocket, резервно SSE)
- Перевизначення для окремої моделі через `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- `params.serviceTier` також передається у власних запитах Codex Responses (`chatgpt.com/backend-api`)
- Транспорт за замовчуванням`auto` (спочатку WebSocket, резервно SSE)
- Перевизначення для кожної моделі через `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- `params.serviceTier` також пересилається в нативних запитах Codex Responses (`chatgpt.com/backend-api`)
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`,
`User-Agent`) додаються лише до власного трафіку Codex на
`User-Agent`) додаються лише до нативного трафіку Codex на
`chatgpt.com/backend-api`, а не до загальних OpenAI-сумісних проксі
- Використовує той самий перемикач `/fast` і конфігурацію `params.fastMode`, що й прямий `openai/*`; OpenClaw мапить це на `service_tier=priority`
- `openai-codex/gpt-5.3-codex-spark` і далі доступний, коли каталог OAuth Codex його показує; залежить від прав доступу
- `openai-codex/gpt-5.4` зберігає власний `contextWindow = 1050000` і типове обмеження часу виконання `contextTokens = 272000`; перевизначте ліміт часу виконання через `models.providers.openai-codex.models[].contextTokens`
- Примітка щодо політики: OpenAI Codex OAuth офіційно підтримується для зовнішніх інструментів/робочих процесів, таких як OpenClaw.
- Використовує той самий перемикач `/fast` і конфігурацію `params.fastMode`, що й прямий `openai/*`; OpenClaw зіставляє це з `service_tier=priority`
- `openai-codex/gpt-5.3-codex-spark` залишається доступною, коли каталог OAuth Codex її показує; залежить від entitlement
- `openai-codex/gpt-5.4` зберігає нативні `contextWindow = 1050000` і типові для runtime `contextTokens = 272000`; перевизначте обмеження runtime через `models.providers.openai-codex.models[].contextTokens`
- Примітка щодо політики: OAuth OpenAI Codex явно підтримується для зовнішніх інструментів/процесів, таких як OpenClaw.
```json5
{
@ -321,15 +325,15 @@ OpenClaw постачається з каталогом piai. Ці поста
### Інші розміщені варіанти у стилі підписки
- [Qwen Cloud](/uk/providers/qwen): поверхня постачальника Qwen Cloud, а також мапінг кінцевих точок Alibaba DashScope і Coding Plan
- [Qwen Cloud](/uk/providers/qwen): поверхня постачальника Qwen Cloud плюс зіставлення endpoint Alibaba DashScope і Coding Plan
- [MiniMax](/uk/providers/minimax): доступ MiniMax Coding Plan через OAuth або API-ключ
- [GLM Models](/uk/providers/glm): кінцеві точки Z.AI Coding Plan або загального API
- [GLM Models](/uk/providers/glm): Z.AI Coding Plan або загальні API endpoint
### OpenCode
- Автентифікація: `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`)
- Постачальник часу виконання Zen: `opencode`
- Постачальник часу виконання Go: `opencode-go`
- Постачальник Zen runtime: `opencode`
- Постачальник Go runtime: `opencode-go`
- Приклади моделей: `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.5`
- CLI: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`
@ -343,30 +347,30 @@ OpenClaw постачається з каталогом piai. Ці поста
- Постачальник: `google`
- Автентифікація: `GEMINI_API_KEY`
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, резервний `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (єдине перевизначення)
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, резервний `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (одне перевизначення)
- Приклади моделей: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
- Сумісність: застаріла конфігурація OpenClaw з `google/gemini-3.1-flash-preview` нормалізується до `google/gemini-3-flash-preview`
- CLI: `openclaw onboard --auth-choice gemini-api-key`
- Прямі запуски Gemini також приймають `agents.defaults.models["google/<model>"].params.cachedContent`
(або застарілий `cached_content`) для передавання власного
дескриптора `cachedContents/...`; попадання в кеш Gemini відображаються як OpenClaw `cacheRead`
(або застаріле `cached_content`) для пересилання нативного для постачальника
дескриптора `cachedContents/...`; збіги кешу Gemini відображаються як OpenClaw `cacheRead`
### Google Vertex і Gemini CLI
- Постачальники: `google-vertex`, `google-gemini-cli`
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує власний потік OAuth
- Увага: OAuth Gemini CLI в OpenClaw — неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікового запису Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує власний OAuth-потік
- Обережно: OAuth Gemini CLI в OpenClaw — це неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікових записів Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- OAuth Gemini CLI постачається як частина вбудованого плагіна `google`.
- Спочатку встановіть Gemini CLI:
- `brew install gemini-cli`
- або `npm install -g @google/gemini-cli`
- Увімкнення: `openclaw plugins enable google`
- Вхід: `openclaw models auth login --provider google-gemini-cli --set-default`
- Типова модель: `google-gemini-cli/gemini-3-flash-preview`
- Примітка: **не потрібно** вставляти client id або secret у `openclaw.json`. Потік входу CLI зберігає
токени в профілях автентифікації на хості шлюзу.
- Якщо запити не працюють після входу, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості шлюзу.
- JSON-відповіді Gemini CLI розбираються з `response`; використання резервно береться з
- Модель за замовчуванням: `google-gemini-cli/gemini-3-flash-preview`
- Примітка: вам **не потрібно** вставляти client id або secret у `openclaw.json`. Потік входу CLI зберігає
токени в профілях автентифікації на хості gateway.
- Якщо після входу запити не працюють, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості gateway.
- JSON-відповіді Gemini CLI аналізуються з `response`; використання резервно береться з
`stats`, а `stats.cached` нормалізується в OpenClaw `cacheRead`.
### Z.AI (GLM)
@ -376,7 +380,7 @@ OpenClaw постачається з каталогом piai. Ці поста
- Приклад моделі: `zai/glm-5.1`
- CLI: `openclaw onboard --auth-choice zai-api-key`
- Псевдоніми: `z.ai/*` і `z-ai/*` нормалізуються до `zai/*`
- `zai-api-key` автоматично визначає відповідну кінцеву точку Z.AI; `zai-coding-global`, `zai-coding-cn`, `zai-global` і `zai-cn` примусово задають конкретну поверхню
- `zai-api-key` автоматично визначає відповідний endpoint Z.AI; `zai-coding-global`, `zai-coding-cn`, `zai-global` і `zai-cn` примусово вибирають конкретну поверхню
### Vercel AI Gateway
@ -392,38 +396,37 @@ OpenClaw постачається з каталогом piai. Ці поста
- Приклад моделі: `kilocode/kilo/auto`
- CLI: `openclaw onboard --auth-choice kilocode-api-key`
- Base URL: `https://api.kilo.ai/api/gateway/`
- Статичний резервний каталог постачається з `kilocode/kilo/auto`; живе
виявлення `https://api.kilo.ai/api/gateway/models` може додатково розширити
каталог часу виконання.
- Точна маршрутизація на верхньому рівні за `kilocode/kilo/auto` належить Kilo Gateway,
- Статичний резервний каталог постачається з `kilocode/kilo/auto`; live
виявлення `https://api.kilo.ai/api/gateway/models` може додатково розширити runtime-каталог.
- Точна upstream-маршрутизація за `kilocode/kilo/auto` належить Kilo Gateway,
а не жорстко закодована в OpenClaw.
Докладніше про налаштування див. у [/providers/kilocode](/uk/providers/kilocode).
Деталі налаштування див. у [/providers/kilocode](/uk/providers/kilocode).
### Інші вбудовані плагіни постачальників
- OpenRouter: `openrouter` (`OPENROUTER_API_KEY`)
- Приклад моделі: `openrouter/auto`
- OpenClaw застосовує документовані заголовки атрибуції застосунку OpenRouter лише тоді, коли
запит справді націлений на `openrouter.ai`
- Маркери Anthropic `cache_control`, специфічні для OpenRouter, так само обмежені
- OpenClaw застосовує задокументовані OpenRouter заголовки атрибуції застосунку лише тоді, коли
запит справді спрямовано на `openrouter.ai`
- Специфічні для OpenRouter маркери Anthropic `cache_control` так само обмежені
перевіреними маршрутами OpenRouter, а не довільними URL проксі
- OpenRouter залишається на проксійному OpenAI-сумісному шляху, тому власне
лише-OpenAI формування запитів (`serviceTier`, `store` Responses,
підказки кешу промптів, payload для сумісності reasoning OpenAI) не передається
- Посилання OpenRouter на базі Gemini зберігають лише санітизацію thought-signature проксійованого Gemini;
власна перевірка replay Gemini та переписування bootstrap залишаються вимкненими
- OpenRouter залишається на проксі-подібному OpenAI-сумісному шляху, тому нативне
формування запитів лише для OpenAI (`serviceTier`, Responses `store`,
підказки prompt-cache, payload сумісності reasoning OpenAI) не пересилається
- Посилання OpenRouter на основі Gemini зберігають лише очищення thought-signature proxy-Gemini;
нативна перевірка replay Gemini і bootstrap-переписування залишаються вимкненими
- Kilo Gateway: `kilocode` (`KILOCODE_API_KEY`)
- Приклад моделі: `kilocode/kilo/auto`
- Посилання Kilo на базі Gemini зберігають той самий шлях санітизації thought-signature
проксійованого Gemini; `kilocode/kilo/auto` та інші підказки, що не підтримують proxy-reasoning,
пропускають упровадження proxy reasoning
- Посилання Kilo на основі Gemini зберігають той самий шлях очищення thought-signature
proxy-Gemini; `kilocode/kilo/auto` та інші підказки про непідтримку proxy-reasoning
пропускають ін’єкцію proxy reasoning
- MiniMax: `minimax` (API-ключ) і `minimax-portal` (OAuth)
- Автентифікація: `MINIMAX_API_KEY` для `minimax`; `MINIMAX_OAUTH_TOKEN` або `MINIMAX_API_KEY` для `minimax-portal`
- Приклад моделі: `minimax/MiniMax-M2.7` або `minimax-portal/MiniMax-M2.7`
- Онбординг MiniMax/налаштування API-ключа записує явні визначення моделей M2.7 з
`input: ["text", "image"]`; вбудований каталог постачальника зберігає посилання чату
лише текстовими, доки конфігурація цього постачальника не буде матеріалізована
- Початкове налаштування/API-ключ MiniMax записує явні визначення моделі M2.7 з
`input: ["text", "image"]`; вбудований каталог постачальника зберігає chat-посилання
лише текстовими, доки конфігурацію цього постачальника не буде матеріалізовано
- Moonshot: `moonshot` (`MOONSHOT_API_KEY`)
- Приклад моделі: `moonshot/kimi-k2.5`
- Kimi Coding: `kimi` (`KIMI_API_KEY` або `KIMICODE_API_KEY`)
@ -449,11 +452,11 @@ OpenClaw постачається з каталогом piai. Ці поста
- BytePlus: `byteplus` (`BYTEPLUS_API_KEY`)
- Приклад моделі: `byteplus-plan/ark-code-latest`
- xAI: `xai` (`XAI_API_KEY`)
- Власні вбудовані запити xAI використовують шлях xAI Responses
- Нативні вбудовані запити xAI використовують шлях xAI Responses
- `/fast` або `params.fastMode: true` переписує `grok-3`, `grok-3-mini`,
`grok-4` і `grok-4-0709` на їхні варіанти `*-fast`
- `tool_stream` типово ввімкнено; задайте
`agents.defaults.models["xai/<model>"].params.tool_stream` у `false`, щоб
- `tool_stream` за замовчуванням увімкнений; задайте
`agents.defaults.models["xai/<model>"].params.tool_stream` як `false`, щоб
вимкнути його
- Mistral: `mistral` (`MISTRAL_API_KEY`)
- Приклад моделі: `mistral/mistral-large-latest`
@ -470,14 +473,14 @@ OpenClaw постачається з каталогом piai. Ці поста
Використовуйте `models.providers` (або `models.json`), щоб додати **власних** постачальників або
OpenAI/Anthropicсумісні проксі.
Багато з наведених нижче вбудованих плагінів постачальників уже публікують типовий каталог.
Багато з наведених нижче вбудованих плагінів постачальників уже публікують каталог за замовчуванням.
Використовуйте явні записи `models.providers.<id>` лише тоді, коли хочете перевизначити
типовий base URL, заголовки або список моделей.
base URL, заголовки або список моделей за замовчуванням.
### Moonshot AI (Kimi)
Moonshot постачається як вбудований плагін постачальника. Використовуйте вбудованого постачальника
типово й додавайте явний запис `models.providers.moonshot` лише тоді, коли
за замовчуванням і додавайте явний запис `models.providers.moonshot` лише тоді, коли
потрібно перевизначити base URL або метадані моделі:
- Постачальник: `moonshot`
@ -517,7 +520,7 @@ Moonshot постачається як вбудований плагін пос
### Kimi Coding
Kimi Coding використовує Anthropic-сумісну кінцеву точку Moonshot AI:
Kimi Coding використовує Anthropic-сумісний endpoint Moonshot AI:
- Постачальник: `kimi`
- Автентифікація: `KIMI_API_KEY`
@ -538,7 +541,7 @@ Kimi Coding використовує Anthropic-сумісну кінцеву т
Volcano Engine (火山引擎) надає доступ до Doubao та інших моделей у Китаї.
- Постачальник: `volcengine` (coding: `volcengine-plan`)
- Постачальник: `volcengine` (для coding: `volcengine-plan`)
- Автентифікація: `VOLCANO_ENGINE_API_KEY`
- Приклад моделі: `volcengine-plan/ark-code-latest`
- CLI: `openclaw onboard --auth-choice volcengine-api-key`
@ -551,13 +554,13 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
}
```
Під час онбордингу типово вибирається coding-поверхня, але загальний каталог `volcengine/*`
Початкове налаштування за замовчуванням використовує поверхню coding, але загальний каталог `volcengine/*`
реєструється одночасно.
У засобах вибору моделей під час онбордингу/налаштування вибір автентифікації Volcengine надає перевагу і рядкам
У пікерах моделей під час початкового налаштування/конфігурування вибір автентифікації Volcengine віддає перевагу і рядкам
`volcengine/*`, і `volcengine-plan/*`. Якщо ці моделі ще не завантажено,
OpenClaw повертається до нефільтрованого каталогу замість показу порожнього
засобу вибору в межах постачальника.
OpenClaw повертається до нефільтрованого каталогу замість того, щоб показувати порожній
пікер у межах постачальника.
Доступні моделі:
@ -567,7 +570,7 @@ OpenClaw повертається до нефільтрованого катал
- `volcengine/glm-4-7-251222` (GLM 4.7)
- `volcengine/deepseek-v3-2-251201` (DeepSeek V3.2 128K)
Coding-моделі (`volcengine-plan`):
Моделі для coding (`volcengine-plan`):
- `volcengine-plan/ark-code-latest`
- `volcengine-plan/doubao-seed-code`
@ -575,11 +578,11 @@ Coding-моделі (`volcengine-plan`):
- `volcengine-plan/kimi-k2-thinking`
- `volcengine-plan/glm-4.7`
### BytePlus (International)
### BytePlus (міжнародний)
BytePlus ARK надає міжнародним користувачам доступ до тих самих моделей, що й Volcano Engine.
- Постачальник: `byteplus` (coding: `byteplus-plan`)
- Постачальник: `byteplus` (для coding: `byteplus-plan`)
- Автентифікація: `BYTEPLUS_API_KEY`
- Приклад моделі: `byteplus-plan/ark-code-latest`
- CLI: `openclaw onboard --auth-choice byteplus-api-key`
@ -592,13 +595,13 @@ BytePlus ARK надає міжнародним користувачам дост
}
```
Під час онбордингу типово вибирається coding-поверхня, але загальний каталог `byteplus/*`
Початкове налаштування за замовчуванням використовує поверхню coding, але загальний каталог `byteplus/*`
реєструється одночасно.
У засобах вибору моделей під час онбордингу/налаштування вибір автентифікації BytePlus надає перевагу і рядкам
У пікерах моделей під час початкового налаштування/конфігурування вибір автентифікації BytePlus віддає перевагу і рядкам
`byteplus/*`, і `byteplus-plan/*`. Якщо ці моделі ще не завантажено,
OpenClaw повертається до нефільтрованого каталогу замість показу порожнього
засобу вибору в межах постачальника.
OpenClaw повертається до нефільтрованого каталогу замість того, щоб показувати порожній
пікер у межах постачальника.
Доступні моделі:
@ -606,7 +609,7 @@ OpenClaw повертається до нефільтрованого катал
- `byteplus/kimi-k2-5-260127` (Kimi K2.5)
- `byteplus/glm-4-7-251222` (GLM 4.7)
Coding-моделі (`byteplus-plan`):
Моделі для coding (`byteplus-plan`):
- `byteplus-plan/ark-code-latest`
- `byteplus-plan/doubao-seed-code`
@ -616,7 +619,7 @@ Coding-моделі (`byteplus-plan`):
### Synthetic
Synthetic надає Anthropic-сумісні моделі за постачальником `synthetic`:
Synthetic надає Anthropic-сумісні моделі через постачальника `synthetic`:
- Постачальник: `synthetic`
- Автентифікація: `SYNTHETIC_API_KEY`
@ -644,39 +647,39 @@ Synthetic надає Anthropic-сумісні моделі за постачал
### MiniMax
MiniMax налаштовується через `models.providers`, оскільки використовує власні кінцеві точки:
MiniMax налаштовується через `models.providers`, оскільки використовує власні endpoint:
- MiniMax OAuth (Global): `--auth-choice minimax-global-oauth`
- MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth`
- MiniMax API key (Global): `--auth-choice minimax-global-api`
- MiniMax API key (CN): `--auth-choice minimax-cn-api`
- OAuth MiniMax (Global): `--auth-choice minimax-global-oauth`
- OAuth MiniMax (CN): `--auth-choice minimax-cn-oauth`
- API-ключ MiniMax (Global): `--auth-choice minimax-global-api`
- API-ключ MiniMax (CN): `--auth-choice minimax-cn-api`
- Автентифікація: `MINIMAX_API_KEY` для `minimax`; `MINIMAX_OAUTH_TOKEN` або
`MINIMAX_API_KEY` для `minimax-portal`
Докладніше про налаштування, варіанти моделей і фрагменти конфігурації див. у [/providers/minimax](/uk/providers/minimax).
Деталі налаштування, варіанти моделей і фрагменти конфігурації див. у [/providers/minimax](/uk/providers/minimax).
На Anthropic-сумісному потоковому шляху MiniMax OpenClaw типово вимикає thinking,
якщо ви явно його не задасте, а `/fast on` переписує
На Anthropic-сумісному streaming-шляху MiniMax OpenClaw вимикає thinking за
замовчуванням, якщо ви явно його не задасте, а `/fast on` переписує
`MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
Розподіл можливостей, що належать плагіну:
Поділ можливостей, якими володіє плагін:
- Типові значення тексту/чату залишаються на `minimax/MiniMax-M2.7`
- Значення за замовчуванням для тексту/чату залишаються на `minimax/MiniMax-M2.7`
- Генерація зображень — це `minimax/image-01` або `minimax-portal/image-01`
- Розуміння зображень — це належний плагіну `MiniMax-VL-01` на обох шляхах автентифікації MiniMax
- Розуміння зображень — це `MiniMax-VL-01`, що належить плагіну, на обох шляхах автентифікації MiniMax
- Вебпошук залишається на ідентифікаторі постачальника `minimax`
### Ollama
Ollama постачається як вбудований плагін постачальника й використовує власне API Ollama:
Ollama постачається як вбудований плагін постачальника і використовує нативний API Ollama:
- Постачальник: `ollama`
- Автентифікація: не потрібна (локальний сервер)
- Приклад моделі: `ollama/llama3.3`
- Встановлення: [https://ollama.com/download](https://ollama.com/download)
- Установлення: [https://ollama.com/download](https://ollama.com/download)
```bash
# Install Ollama, then pull a model:
# Встановіть Ollama, потім завантажте модель:
ollama pull llama3.3
```
@ -688,26 +691,26 @@ ollama pull llama3.3
}
```
Ollama виявляється локально за адресою `http://127.0.0.1:11434`, коли ви вмикаєте це через
`OLLAMA_API_KEY`, а вбудований плагін постачальника додає Ollama безпосередньо до
`openclaw onboard` і засобу вибору моделей. Докладніше про онбординг, режими cloud/local і користувацьку конфігурацію див. у [/providers/ollama](/uk/providers/ollama).
Ollama локально виявляється за адресою `http://127.0.0.1:11434`, коли ви явно вмикаєте
його через `OLLAMA_API_KEY`, а вбудований плагін постачальника додає Ollama безпосередньо в
`openclaw onboard` і пікер моделей. Деталі початкового налаштування, cloud/local режиму та власної конфігурації див. у [/providers/ollama](/uk/providers/ollama).
### vLLM
vLLM постачається як вбудований плагін постачальника для локальних/self-hosted OpenAI-сумісних
серверів:
vLLM постачається як вбудований плагін постачальника для локальних/self-hosted
серверів, сумісних з OpenAI:
- Постачальник: `vllm`
- Автентифікація: необов’язкова (залежить від вашого сервера)
- Типовий base URL: `http://127.0.0.1:8000/v1`
- Base URL за замовчуванням: `http://127.0.0.1:8000/v1`
Щоб локально ввімкнути автовиявлення (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
Щоб увімкнути автоматичне локальне виявлення (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
```bash
export VLLM_API_KEY="vllm-local"
```
Потім задайте модель (замініть на один з ідентифікаторів, що повертає `/v1/models`):
Потім задайте модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
```json5
{
@ -717,25 +720,25 @@ export VLLM_API_KEY="vllm-local"
}
```
Докладніше див. у [/providers/vllm](/uk/providers/vllm).
Деталі див. у [/providers/vllm](/uk/providers/vllm).
### SGLang
SGLang постачається як вбудований плагін постачальника для швидких self-hosted
OpenAI-сумісних серверів:
серверів, сумісних з OpenAI:
- Постачальник: `sglang`
- Автентифікація: необов’язкова (залежить від вашого сервера)
- Типовий base URL: `http://127.0.0.1:30000/v1`
- Base URL за замовчуванням: `http://127.0.0.1:30000/v1`
Щоб локально ввімкнути автовиявлення (підійде будь-яке значення, якщо ваш сервер не
Щоб увімкнути автоматичне локальне виявлення (підійде будь-яке значення, якщо ваш сервер не
вимагає автентифікації):
```bash
export SGLANG_API_KEY="sglang-local"
```
Потім задайте модель (замініть на один з ідентифікаторів, що повертає `/v1/models`):
Потім задайте модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
```json5
{
@ -745,11 +748,11 @@ export SGLANG_API_KEY="sglang-local"
}
```
Докладніше див. у [/providers/sglang](/uk/providers/sglang).
Деталі див. у [/providers/sglang](/uk/providers/sglang).
### Локальні проксі (LM Studio, vLLM, LiteLLM тощо)
Приклад (OpenAIсумісний):
Приклад (сумісний з OpenAI):
```json5
{
@ -784,20 +787,21 @@ export SGLANG_API_KEY="sglang-local"
Примітки:
- Для власних постачальників `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` є необов’язковими.
Якщо їх не задано, OpenClaw використовує такі типові значення:
- Для власних постачальників `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` необов’язкові.
Якщо їх не вказано, OpenClaw використовує такі значення за замовчуванням:
- `reasoning: false`
- `input: ["text"]`
- `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }`
- `contextWindow: 200000`
- `maxTokens: 8192`
- Рекомендація: задавайте явні значення, що відповідають лімітам вашого проксі/моделі.
- Для `api: "openai-completions"` на невласних кінцевих точках (будь-який непорожній `baseUrl`, чий хост не є `api.openai.com`) OpenClaw примусово задає `compat.supportsDeveloperRole: false`, щоб уникнути помилок постачальника 400 через непідтримувані ролі `developer`.
- Проксійні OpenAI-сумісні маршрути також пропускають власне лише-OpenAI формування запитів:
без `service_tier`, без `store` Responses, без підказок кешу промптів, без
формування payload для сумісності reasoning OpenAI і без прихованих заголовків атрибуції OpenClaw.
- Якщо `baseUrl` порожній/не вказаний, OpenClaw зберігає типову поведінку OpenAI (яка веде до `api.openai.com`).
- Для безпеки явне `compat.supportsDeveloperRole: true` усе одно перевизначається на невласних кінцевих точках `openai-completions`.
- Рекомендовано: задавайте явні значення, що відповідають обмеженням вашого проксі/моделі.
- Для `api: "openai-completions"` на ненативних endpoint (будь-який непорожній `baseUrl`, хост якого не є `api.openai.com`) OpenClaw примусово встановлює `compat.supportsDeveloperRole: false`, щоб уникати помилок постачальника 400 для непідтримуваних ролей `developer`.
- Маршрути проксі-подібного OpenAI-сумісного типу також пропускають нативне формування запитів лише для OpenAI:
без `service_tier`, без Responses `store`, без підказок prompt-cache, без
формування payload сумісності reasoning OpenAI і без прихованих заголовків
атрибуції OpenClaw.
- Якщо `baseUrl` порожній/не вказаний, OpenClaw зберігає типову поведінку OpenAI (яка вказує на `api.openai.com`).
- З міркувань безпеки явне `compat.supportsDeveloperRole: true` все одно перевизначається на ненативних endpoint `openai-completions`.
## Приклади CLI
@ -807,11 +811,11 @@ openclaw models set opencode/claude-opus-4-6
openclaw models list
```
Див. також: [/gateway/configuration](/uk/gateway/configuration) для повних прикладів конфігурації.
Див. також: [/gateway/configuration](/uk/gateway/configuration), де наведено повні приклади конфігурації.
## Пов’язане
- [Models](/uk/concepts/models) — конфігурація моделей і псевдоніми
- [Model Failover](/uk/concepts/model-failover) — ланцюжки резервного перемикання та поведінка повторних спроб
- [Configuration Reference](/uk/gateway/configuration-reference#agent-defaults) — ключі конфігурації моделей
- [Providers](/uk/providers) — інструкції з налаштування для кожного постачальника
- [Configuration Reference](/uk/gateway/configuration-reference#agent-defaults) — ключі конфігурації моделі
- [Providers](/uk/providers) — посібники з налаштування для кожного постачальника

File diff suppressed because it is too large Load Diff

View File

@ -1,75 +1,75 @@
---
read_when:
- Ви створюєте плагін OpenClaw
- Вам потрібно постачати schema конфігурації плагіна або налагодити помилки валідації плагіна
summary: Вимоги до маніфесту плагіна та JSON schema (сувора валідація конфігурації)
- Вам потрібно постачати схему конфігурації плагіна або налагоджувати помилки валідації плагіна
summary: Вимоги до маніфесту плагіна та JSON Schema (сувора валідація конфігурації)
title: Маніфест плагіна
x-i18n:
generated_at: "2026-04-06T18:56:33Z"
generated_at: "2026-04-08T18:09:11Z"
model: gpt-5.4
provider: openai
source_hash: 22d41b9f8748b1b1b066ee856be4a8f41e88b9a8bc073d74fc79d2bb0982f01a
source_hash: 9a7ee4b621a801d2a8f32f8976b0e1d9433c7810eb360aca466031fc0ffb286a
source_path: plugins/manifest.md
workflow: 15
---
# Маніфест плагіна (openclaw.plugin.json)
Ця сторінка стосується лише **власного маніфесту плагіна OpenClaw**.
Ця сторінка стосується лише **нативного маніфесту плагіна OpenClaw**.
Сумісні макети пакетів описані в [Пакети плагінів](/uk/plugins/bundles).
Сумісні макети bundle описано в розділі [Пакети плагінів](/uk/plugins/bundles).
Сумісні формати пакетів використовують інші файли маніфесту:
Сумісні формати bundle використовують інші файли маніфесту:
- Пакет Codex: `.codex-plugin/plugin.json`
- Пакет Claude: `.claude-plugin/plugin.json` або типовий макет компонентів Claude
- Codex bundle: `.codex-plugin/plugin.json`
- Claude bundle: `.claude-plugin/plugin.json` або типовий макет компонента Claude
без маніфесту
- Пакет Cursor: `.cursor-plugin/plugin.json`
- Cursor bundle: `.cursor-plugin/plugin.json`
OpenClaw також автоматично виявляє ці макети пакетів, але вони не проходять валідацію
за schema `openclaw.plugin.json`, описаною тут.
OpenClaw також автоматично виявляє ці макети bundle, але вони не проходять валідацію
за схемою `openclaw.plugin.json`, описаною тут.
Для сумісних пакетів OpenClaw наразі зчитує метадані пакета разом з оголошеними
коренями Skills, коренями команд Claude, типовими значеннями `settings.json` пакета Claude,
типовими значеннями LSP пакета Claude та підтримуваними наборами хуків, якщо макет відповідає
Для сумісних bundle OpenClaw зараз читає метадані bundle разом з оголошеними
коренями Skills, коренями команд Claude, значеннями за замовчуванням `settings.json` у Claude bundle,
значеннями за замовчуванням LSP у Claude bundle та підтримуваними пакетами хукiв, коли макет відповідає
очікуванням рантайму OpenClaw.
Кожен власний плагін OpenClaw **повинен** постачатися з файлом `openclaw.plugin.json` у
Кожен нативний плагін OpenClaw **повинен** постачати файл `openclaw.plugin.json` у
**корені плагіна**. OpenClaw використовує цей маніфест для валідації конфігурації
**без виконання коду плагіна**. Відсутні або невалідні маніфести вважаються
помилками плагіна та блокують валідацію конфігурації.
**без виконання коду плагіна**. Відсутні або недійсні маніфести вважаються
помилками плагіна і блокують валідацію конфігурації.
Дивіться повний посібник із системи плагінів: [Плагіни](/uk/tools/plugin).
Щодо власної моделі можливостей і поточних рекомендацій із зовнішньої сумісності:
Дивіться повний посібник по системі плагінів: [Плагіни](/uk/tools/plugin).
Щодо нативної моделі можливостей і поточних рекомендацій із зовнішньої сумісності:
[Модель можливостей](/uk/plugins/architecture#public-capability-model).
## Що робить цей файл
`openclaw.plugin.json` — це метадані, які OpenClaw зчитує до завантаження коду
вашого плагіна.
`openclaw.plugin.json` — це метадані, які OpenClaw читає перед завантаженням
коду вашого плагіна.
Використовуйте його для:
- ідентифікації плагіна
- валідації конфігурації
- метаданих автентифікації та онбордингу, які мають бути доступні без запуску рантайму
плагіна
- метаданих автентифікації та онбордингу, які мають бути доступні без запуску
рантайму плагіна
- метаданих псевдонімів та автоувімкнення, які мають визначатися до завантаження рантайму плагіна
- метаданих володіння скороченими сімействами моделей, які мають автоматично активувати
- скорочених метаданих про належність до сімейств моделей, які мають автоматично активувати
плагін до завантаження рантайму
- статичних знімків володіння можливостями, що використовуються для сумісної в’язки bundled-плагінів і
перевірки контрактів
- метаданих конфігурації каналів, які мають об’єднуватися в поверхні каталогу та валідації
- статичних знімків належності можливостей, що використовуються для вбудованої compat-обв’язки та
покриття контрактів
- метаданих конфігурації для конкретних каналів, які мають зливатися в поверхні каталогу й валідації
без завантаження рантайму
- підказок UI для конфігурації
Не використовуйте його для:
- реєстрації поведінки рантайму
- оголошення кодових entrypoint-ів
- оголошення кодових entrypoint
- метаданих встановлення npm
Це належить коду вашого плагіна та `package.json`.
Для цього призначені код вашого плагіна та `package.json`.
## Мінімальний приклад
@ -90,7 +90,7 @@ OpenClaw також автоматично виявляє ці макети па
{
"id": "openrouter",
"name": "OpenRouter",
"description": "Плагін провайдера OpenRouter",
"description": "OpenRouter provider plugin",
"version": "1.0.0",
"providers": ["openrouter"],
"modelSupport": {
@ -100,6 +100,9 @@ OpenClaw також автоматично виявляє ці макети па
"providerAuthEnvVars": {
"openrouter": ["OPENROUTER_API_KEY"]
},
"providerAuthAliases": {
"openrouter-coding": "openrouter"
},
"channelEnvVars": {
"openrouter-chatops": ["OPENROUTER_CHATOPS_TOKEN"]
},
@ -108,19 +111,19 @@ OpenClaw також автоматично виявляє ці макети па
"provider": "openrouter",
"method": "api-key",
"choiceId": "openrouter-api-key",
"choiceLabel": "Ключ API OpenRouter",
"choiceLabel": "OpenRouter API key",
"groupId": "openrouter",
"groupLabel": "OpenRouter",
"optionKey": "openrouterApiKey",
"cliFlag": "--openrouter-api-key",
"cliOption": "--openrouter-api-key <key>",
"cliDescription": "Ключ API OpenRouter",
"cliDescription": "OpenRouter API key",
"onboardingScopes": ["text-inference"]
}
],
"uiHints": {
"apiKey": {
"label": "Ключ API",
"label": "API key",
"placeholder": "sk-or-v1-...",
"sensitive": true
}
@ -137,56 +140,57 @@ OpenClaw також автоматично виявляє ці макети па
}
```
## Довідка щодо полів верхнього рівня
## Довідник полів верхнього рівня
| Поле | Обов’язкове | Тип | Що воно означає |
| Поле | Обов’язкове | Тип | Що це означає |
| ----------------------------------- | ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id` | Так | `string` | Канонічний id плагіна. Саме цей id використовується в `plugins.entries.<id>`. |
| `id` | Так | `string` | Канонічний ідентифікатор плагіна. Це ідентифікатор, який використовується в `plugins.entries.<id>`. |
| `configSchema` | Так | `object` | Вбудована JSON Schema для конфігурації цього плагіна. |
| `enabledByDefault` | Ні | `true` | Позначає bundled-плагін як увімкнений за замовчуванням. Опустіть це поле або встановіть будь-яке значення, відмінне від `true`, щоб залишити плагін вимкненим за замовчуванням. |
| `legacyPluginIds` | Ні | `string[]` | Застарілі id, які нормалізуються до цього канонічного id плагіна. |
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Id провайдерів, які мають автоматично вмикати цей плагін, коли автентифікація, конфігурація або посилання на моделі згадують їх. |
| `enabledByDefault` | Ні | `true` | Позначає вбудований плагін як увімкнений за замовчуванням. Не вказуйте це поле або встановіть будь-яке значення, відмінне від `true`, щоб плагін залишався вимкненим за замовчуванням. |
| `legacyPluginIds` | Ні | `string[]` | Застарілі ідентифікатори, які нормалізуються до цього канонічного ідентифікатора плагіна. |
| `autoEnableWhenConfiguredProviders` | Ні | `string[]` | Ідентифікатори провайдерів, які мають автоматично вмикати цей плагін, коли на них посилаються автентифікація, конфігурація або посилання на моделі. |
| `kind` | Ні | `"memory"` \| `"context-engine"` | Оголошує ексклюзивний тип плагіна, який використовується `plugins.slots.*`. |
| `channels` | Ні | `string[]` | Id каналів, якими володіє цей плагін. Використовується для виявлення та валідації конфігурації. |
| `providers` | Ні | `string[]` | Id провайдерів, якими володіє цей плагін. |
| `modelSupport` | Ні | `object` | Власні для маніфесту метадані скорочених сімейств моделей, які використовуються для автозавантаження плагіна до рантайму. |
| `cliBackends` | Ні | `string[]` | Id backend-ів інференсу CLI, якими володіє цей плагін. Використовується для автоактивації під час запуску з явних посилань у конфігурації. |
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легкі env-метадані автентифікації провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легкі env-метадані каналів, які OpenClaw може перевіряти без завантаження коду плагіна. Використовуйте це для налаштування каналів через env або поверхонь автентифікації, які мають бачити стандартні помічники запуску/конфігурації. |
| `providerAuthChoices` | Ні | `object[]` | Легкі метадані варіантів автентифікації для пікерів онбордингу, визначення preferred-provider та простої в’язки прапорців CLI. |
| `contracts` | Ні | `object` | Статичний bundled-знімок можливостей для speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search та володіння інструментами. |
| `channelConfigs` | Ні | `Record<string, object>` | Власні для маніфесту метадані конфігурації каналів, які об’єднуються в поверхні виявлення та валідації до завантаження рантайму. |
| `channels` | Ні | `string[]` | Ідентифікатори каналів, якими володіє цей плагін. Використовується для виявлення та валідації конфігурації. |
| `providers` | Ні | `string[]` | Ідентифікатори провайдерів, якими володіє цей плагін. |
| `modelSupport` | Ні | `object` | Скорочені метадані про сімейства моделей, що належать маніфесту та використовуються для автозавантаження плагіна до запуску рантайму. |
| `cliBackends` | Ні | `string[]` | Ідентифікатори backend для інференсу в CLI, якими володіє цей плагін. Використовується для автоактивації під час запуску з явних посилань у конфігурації. |
| `providerAuthEnvVars` | Ні | `Record<string, string[]>` | Легкі метадані env для автентифікації провайдера, які OpenClaw може перевіряти без завантаження коду плагіна. |
| `providerAuthAliases` | Ні | `Record<string, string>` | Ідентифікатори провайдерів, які мають повторно використовувати інший ідентифікатор провайдера для пошуку автентифікації, наприклад coding-провайдер, який використовує той самий API-ключ і профілі автентифікації базового провайдера. |
| `channelEnvVars` | Ні | `Record<string, string[]>` | Легкі метадані env для каналів, які OpenClaw може перевіряти без завантаження коду плагіна. Використовуйте це для налаштування каналів через env або поверхонь автентифікації, які мають бачити типові помічники старту/конфігурації. |
| `providerAuthChoices` | Ні | `object[]` | Легкі метадані варіантів автентифікації для селекторів онбордингу, визначення preferred provider і простої обв’язки CLI-прапорців. |
| `contracts` | Ні | `object` | Статичний знімок вбудованих можливостей для speech, realtime transcription, realtime voice, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search та належності інструментів. |
| `channelConfigs` | Ні | `Record<string, object>` | Метадані конфігурації каналів, що належать маніфесту та зливаються в поверхні виявлення й валідації до завантаження рантайму. |
| `skills` | Ні | `string[]` | Каталоги Skills для завантаження, відносно кореня плагіна. |
| `name` | Ні | `string` | Людинозрозуміла назва плагіна. |
| `description` | Ні | `string` | Короткий опис, який показується на поверхнях плагіна. |
| `version` | Ні | `string` | Інформаційна версія плагіна. |
| `uiHints` | Ні | `Record<string, object>` | UI-мітки, placeholders та підказки щодо чутливості для полів конфігурації. |
| `name` | Ні | `string` | Зрозуміла людині назва плагіна. |
| `description` | Ні | `string` | Короткий опис, що показується в поверхнях плагіна. |
| `version` | Ні | `string` | Інформаційна версія плагіна. |
| `uiHints` | Ні | `Record<string, object>` | Підписи UI, заповнювачі та підказки чутливості для полів конфігурації. |
## Довідка щодо `providerAuthChoices`
## Довідник `providerAuthChoices`
Кожен запис `providerAuthChoices` описує один варіант онбордингу або автентифікації.
OpenClaw зчитує це до завантаження рантайму провайдера.
OpenClaw читає це до завантаження рантайму провайдера.
| Поле | Обов’язкове | Тип | Що воно означає |
| -------------------- | ----------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `provider` | Так | `string` | Id провайдера, до якого належить цей варіант. |
| `method` | Так | `string` | Id методу автентифікації, до якого потрібно спрямувати запит. |
| `choiceId` | Так | `string` | Стабільний id варіанта автентифікації, який використовується онбордингом і потоками CLI. |
| `choiceLabel` | Ні | `string` | Мітка для користувача. Якщо опущено, OpenClaw використовує `choiceId`. |
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для пікера. |
| `assistantPriority` | Ні | `number` | Менші значення сортуються раніше в інтерактивних пікерах, керованих асистентом. |
| `assistantVisibility`| Ні | `"visible"` \| `"manual-only"` | Приховує варіант у пікерах асистента, але залишає можливість ручного вибору через CLI. |
| `deprecatedChoiceIds`| Ні | `string[]` | Застарілі id варіантів, які мають перенаправляти користувачів на цей замінний варіант. |
| `groupId` | Ні | `string` | Необов’язковий id групи для групування пов’язаних варіантів. |
| `groupLabel` | Ні | `string` | Мітка для цієї групи, видима користувачеві. |
| `groupHint` | Ні | `string` | Короткий допоміжний текст для групи. |
| `optionKey` | Ні | `string` | Внутрішній ключ опції для простих потоків автентифікації з одним прапорцем. |
| `cliFlag` | Ні | `string` | Назва прапорця CLI, наприклад `--openrouter-api-key`. |
| `cliOption` | Ні | `string` | Повна форма опції CLI, наприклад `--openrouter-api-key <key>`. |
| `cliDescription` | Ні | `string` | Опис, який використовується в довідці CLI. |
| `onboardingScopes` | Ні | `Array<"text-inference" \| "image-generation">` | На яких поверхнях онбордингу має відображатися цей варіант. Якщо опущено, типово використовується `["text-inference"]`. |
| Поле | Обов’язкове | Тип | Що це означає |
| --------------------- | ----------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `provider` | Так | `string` | Ідентифікатор провайдера, якому належить цей варіант. |
| `method` | Так | `string` | Ідентифікатор методу автентифікації, до якого потрібно диспетчеризувати. |
| `choiceId` | Так | `string` | Стабільний ідентифікатор варіанта автентифікації, який використовується в потоках онбордингу та CLI. |
| `choiceLabel` | Ні | `string` | Підпис для користувача. Якщо не вказано, OpenClaw використовує `choiceId`. |
| `choiceHint` | Ні | `string` | Короткий допоміжний текст для селектора. |
| `assistantPriority` | Ні | `number` | Менші значення сортуються вище в інтерактивних селекторах, керованих асистентом. |
| `assistantVisibility` | Ні | `"visible"` \| `"manual-only"` | Приховує варіант із селекторів асистента, але все ще дозволяє ручний вибір через CLI. |
| `deprecatedChoiceIds` | Ні | `string[]` | Застарілі ідентифікатори варіантів, які мають перенаправляти користувачів на цей варіант-заміну. |
| `groupId` | Ні | `string` | Необов’язковий ідентифікатор групи для групування пов’язаних варіантів. |
| `groupLabel` | Ні | `string` | Підпис для цієї групи, видимий користувачу. |
| `groupHint` | Ні | `string` | Короткий допоміжний текст для групи. |
| `optionKey` | Ні | `string` | Внутрішній ключ параметра для простих потоків автентифікації з одним прапорцем. |
| `cliFlag` | Ні | `string` | Назва прапорця CLI, наприклад `--openrouter-api-key`. |
| `cliOption` | Ні | `string` | Повна форма параметра CLI, наприклад `--openrouter-api-key <key>`. |
| `cliDescription` | Ні | `string` | Опис, що використовується в довідці CLI. |
| `onboardingScopes` | Ні | `Array<"text-inference" \| "image-generation">` | У яких поверхнях онбордингу має з’являтися цей варіант. Якщо не вказано, за замовчуванням використовується `["text-inference"]`. |
## Довідка щодо `uiHints`
## Довідник `uiHints`
`uiHints` — це мапа від назв полів конфігурації до невеликих підказок рендерингу.
@ -194,8 +198,8 @@ OpenClaw зчитує це до завантаження рантайму про
{
"uiHints": {
"apiKey": {
"label": "Ключ API",
"help": "Використовується для запитів OpenRouter",
"label": "API key",
"help": "Used for OpenRouter requests",
"placeholder": "sk-or-v1-...",
"sensitive": true
}
@ -205,19 +209,19 @@ OpenClaw зчитує це до завантаження рантайму про
Кожна підказка для поля може містити:
| Поле | Тип | Що воно означає |
| ------------- | ---------- | --------------------------------------- |
| `label` | `string` | Мітка поля для користувача. |
| `help` | `string` | Короткий допоміжний текст. |
| `tags` | `string[]` | Необов’язкові UI-теги. |
| `advanced` | `boolean` | Позначає поле як розширене. |
| `sensitive` | `boolean` | Позначає поле як секретне або чутливе. |
| `placeholder` | `string` | Текст placeholder для полів форми. |
| Поле | Тип | Що це означає |
| ------------- | ---------- | ------------------------------------ |
| `label` | `string` | Підпис поля для користувача. |
| `help` | `string` | Короткий допоміжний текст. |
| `tags` | `string[]` | Необов’язкові теги UI. |
| `advanced` | `boolean` | Позначає поле як розширене. |
| `sensitive` | `boolean` | Позначає поле як секретне або чутливе. |
| `placeholder` | `string` | Текст-заповнювач для полів форми. |
## Довідка щодо `contracts`
## Довідник `contracts`
Використовуйте `contracts` лише для статичних метаданих володіння можливостями, які OpenClaw може
зчитати без імпорту рантайму плагіна.
Використовуйте `contracts` лише для статичних метаданих про належність можливостей, які OpenClaw може
читати без імпорту рантайму плагіна.
```json
{
@ -237,19 +241,19 @@ OpenClaw зчитує це до завантаження рантайму про
Кожен список є необов’язковим:
| Поле | Тип | Що воно означає |
| -------------------------------- | ---------- | ---------------------------------------------------------- |
| `speechProviders` | `string[]` | Id speech-провайдерів, якими володіє цей плагін. |
| `realtimeTranscriptionProviders` | `string[]` | Id провайдерів realtime transcription, якими володіє цей плагін. |
| `realtimeVoiceProviders` | `string[]` | Id провайдерів realtime voice, якими володіє цей плагін. |
| `mediaUnderstandingProviders` | `string[]` | Id провайдерів media-understanding, якими володіє цей плагін. |
| `imageGenerationProviders` | `string[]` | Id провайдерів image-generation, якими володіє цей плагін. |
| `videoGenerationProviders` | `string[]` | Id провайдерів video-generation, якими володіє цей плагін. |
| `webFetchProviders` | `string[]` | Id провайдерів web-fetch, якими володіє цей плагін. |
| `webSearchProviders` | `string[]` | Id провайдерів web-search, якими володіє цей плагін. |
| `tools` | `string[]` | Назви інструментів агента, якими володіє цей плагін для bundled-перевірок контрактів. |
| Поле | Тип | Що це означає |
| -------------------------------- | ---------- | ----------------------------------------------------------- |
| `speechProviders` | `string[]` | Ідентифікатори провайдерів speech, якими володіє цей плагін. |
| `realtimeTranscriptionProviders` | `string[]` | Ідентифікатори провайдерів realtime-transcription, якими володіє цей плагін. |
| `realtimeVoiceProviders` | `string[]` | Ідентифікатори провайдерів realtime-voice, якими володіє цей плагін. |
| `mediaUnderstandingProviders` | `string[]` | Ідентифікатори провайдерів media-understanding, якими володіє цей плагін. |
| `imageGenerationProviders` | `string[]` | Ідентифікатори провайдерів image-generation, якими володіє цей плагін. |
| `videoGenerationProviders` | `string[]` | Ідентифікатори провайдерів video-generation, якими володіє цей плагін. |
| `webFetchProviders` | `string[]` | Ідентифікатори провайдерів web-fetch, якими володіє цей плагін. |
| `webSearchProviders` | `string[]` | Ідентифікатори провайдерів web-search, якими володіє цей плагін. |
| `tools` | `string[]` | Назви інструментів агента, якими володіє цей плагін для перевірок вбудованих контрактів. |
## Довідка щодо `channelConfigs`
## Довідник `channelConfigs`
Використовуйте `channelConfigs`, коли плагіну каналу потрібні легкі метадані конфігурації до
завантаження рантайму.
@ -267,12 +271,12 @@ OpenClaw зчитує це до завантаження рантайму про
},
"uiHints": {
"homeserverUrl": {
"label": "URL homeserver-а",
"label": "Homeserver URL",
"placeholder": "https://matrix.example.com"
}
},
"label": "Matrix",
"description": "Підключення до Matrix homeserver-а",
"description": "Matrix homeserver connection",
"preferOver": ["matrix-legacy"]
}
}
@ -281,18 +285,19 @@ OpenClaw зчитує це до завантаження рантайму про
Кожен запис каналу може містити:
| Поле | Тип | Що воно означає |
| ------------- | ------------------------ | -------------------------------------------------------------------------------------------- |
| Поле | Тип | Що це означає |
| ------------- | ------------------------ | --------------------------------------------------------------------------------------------- |
| `schema` | `object` | JSON Schema для `channels.<id>`. Обов’язкове для кожного оголошеного запису конфігурації каналу. |
| `uiHints` | `Record<string, object>` | Необов’язкові UI-мітки/placeholders/підказки чутливості для цього розділу конфігурації каналу. |
| `label` | `string` | Мітка каналу, що додається до поверхонь пікера та інспекції, коли метадані рантайму ще не готові. |
| `description` | `string` | Короткий опис каналу для поверхонь інспекції та каталогу. |
| `preferOver` | `string[]` | Id застарілих або менш пріоритетних плагінів, які цей канал має випереджати на поверхнях вибору. |
| `uiHints` | `Record<string, object>` | Необов’язкові підписи UI/заповнювачі/підказки чутливості для цього розділу конфігурації каналу. |
| `label` | `string` | Підпис каналу, що зливається в поверхні селектора та перегляду, коли метадані рантайму ще не готові. |
| `description` | `string` | Короткий опис каналу для поверхонь перегляду та каталогу. |
| `preferOver` | `string[]` | Застарілі або менш пріоритетні ідентифікатори плагінів, які цей канал має перевершувати в поверхнях вибору. |
## Довідка щодо `modelSupport`
## Довідник `modelSupport`
Використовуйте `modelSupport`, коли OpenClaw має визначати ваш плагін провайдера за
скороченими id моделей на кшталт `gpt-5.4` або `claude-sonnet-4.6` до завантаження рантайму плагіна.
Використовуйте `modelSupport`, коли OpenClaw має виводити ваш плагін провайдера з
скорочених ідентифікаторів моделей на кшталт `gpt-5.4` або `claude-sonnet-4.6` до того, як завантажиться
рантайм плагіна.
```json
{
@ -305,72 +310,73 @@ OpenClaw зчитує це до завантаження рантайму про
OpenClaw застосовує такий пріоритет:
- явні посилання `provider/model` використовують метадані маніфесту `providers`, що належать власнику
- явні посилання `provider/model` використовують метадані маніфесту `providers`, яким належить модель
- `modelPatterns` мають пріоритет над `modelPrefixes`
- якщо збігаються один неbundled-плагін і один bundled-плагін, перемагає неbundled-плагін
- решта неоднозначностей ігнорується, доки користувач або конфігурація не вкаже провайдера
- якщо збігаються один невбудований плагін і один вбудований плагін, перемагає невбудований
плагін
- решта неоднозначностей ігноруються, доки користувач або конфігурація не вкажуть провайдера
Поля:
| Поле | Тип | Що воно означає |
| --------------- | ---------- | ------------------------------------------------------------------------------ |
| `modelPrefixes` | `string[]` | Префікси, які зіставляються через `startsWith` зі скороченими id моделей. |
| `modelPatterns` | `string[]` | Джерела regex, які зіставляються зі скороченими id моделей після видалення суфікса профілю. |
| Поле | Тип | Що це означає |
| --------------- | ---------- | -------------------------------------------------------------------------------- |
| `modelPrefixes` | `string[]` | Префікси, які зіставляються через `startsWith` зі скороченими ідентифікаторами моделей. |
| `modelPatterns` | `string[]` | Джерела regex, які зіставляються зі скороченими ідентифікаторами моделей після видалення суфікса профілю. |
Застарілі ключі можливостей верхнього рівня є deprecated. Використовуйте `openclaw doctor --fix`, щоб
Застарілі ключі можливостей верхнього рівня більше не рекомендуються. Використовуйте `openclaw doctor --fix`, щоб
перемістити `speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`,
`webFetchProviders` і `webSearchProviders` до `contracts`; звичайне
завантаження маніфесту більше не трактує ці поля верхнього рівня як
володіння можливостями.
належність можливостей.
## Маніфест у порівнянні з package.json
## Маніфест і package.json
Ці два файли виконують різні завдання:
| Файл | Для чого використовувати |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів автентифікації та UI-підказки, які мають існувати до запуску коду плагіна |
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, який використовується для entrypoint-ів, обмежень встановлення, налаштування або метаданих каталогу |
| `openclaw.plugin.json` | Виявлення, валідація конфігурації, метадані варіантів автентифікації та підказки UI, які мають існувати до запуску коду плагіна |
| `package.json` | Метадані npm, встановлення залежностей і блок `openclaw`, що використовується для entrypoint, обмежень встановлення, налаштування або метаданих каталогу |
Якщо ви не впевнені, куди має належати певний фрагмент метаданих, використовуйте таке правило:
Якщо ви не впевнені, куди належить певний фрагмент метаданих, використовуйте таке правило:
- якщо OpenClaw має знати це до завантаження коду плагіна, помістіть це в `openclaw.plugin.json`
- якщо це стосується пакування, entry-файлів або поведінки npm install, помістіть це в `package.json`
- якщо OpenClaw повинен знати це до завантаження коду плагіна, помістіть це в `openclaw.plugin.json`
- якщо це стосується пакування, entry file або поведінки встановлення npm, помістіть це в `package.json`
### Поля package.json, які впливають на виявлення
### Поля package.json, що впливають на виявлення
Деякі метадані плагіна до запуску рантайму навмисно зберігаються в `package.json` у блоці
Деякі метадані плагіна до запуску рантайму навмисно розміщуються в `package.json` у блоці
`openclaw`, а не в `openclaw.plugin.json`.
Важливі приклади:
| Поле | Що воно означає |
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.extensions` | Оголошує власні entrypoint плагіна. |
| `openclaw.setupEntry` | Легкий entrypoint лише для налаштування, який використовується під час онбордингу та відкладеного запуску каналів. |
| `openclaw.channel` | Легкі метадані каталогу каналів, як-от мітки, шляхи до документації, псевдоніми та текст для вибору. |
| `openclaw.channel.configuredState` | Легкі метадані перевірки configured-state, які можуть відповісти на запитання «чи вже існує налаштування лише через env?» без завантаження повного рантайму каналу. |
| `openclaw.channel.persistedAuthState` | Легкі метадані перевірки persisted-auth, які можуть відповісти на запитання «чи вже хтось увійшов у систему?» без завантаження повного рантайму каналу. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки для встановлення/оновлення bundled-плагінів і зовнішньо опублікованих плагінів. |
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw, із semver-межою на кшталт `>=2026.3.22`. |
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення через перевстановлення bundled-плагіна, коли конфігурація невалідна. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen`| Дозволяє поверхням каналу лише для налаштування завантажуватися до повного плагіна каналу під час запуску. |
| Поле | Що це означає |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.extensions` | Оголошує нативні entrypoint плагіна. |
| `openclaw.setupEntry` | Полегшений entrypoint лише для налаштування, який використовується під час онбордингу та відкладеного запуску каналу. |
| `openclaw.channel` | Легкі метадані каталогу каналів, як-от підписи, шляхи до документації, псевдоніми та текст для вибору. |
| `openclaw.channel.configuredState` | Легкі метадані перевірки налаштованого стану, які можуть відповісти на питання «чи вже існує налаштування лише через env?» без завантаження повного рантайму каналу. |
| `openclaw.channel.persistedAuthState` | Легкі метадані перевірки збереженого стану автентифікації, які можуть відповісти на питання «чи вже є хоч один активний вхід?» без завантаження повного рантайму каналу. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Підказки встановлення/оновлення для вбудованих і зовнішньо опублікованих плагінів. |
| `openclaw.install.defaultChoice` | Бажаний шлях встановлення, коли доступно кілька джерел встановлення. |
| `openclaw.install.minHostVersion` | Мінімальна підтримувана версія хоста OpenClaw із semver-нижньою межею на кшталт `>=2026.3.22`. |
| `openclaw.install.allowInvalidConfigRecovery` | Дозволяє вузький шлях відновлення перевстановлення вбудованого плагіна, коли конфігурація недійсна. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Дозволяє поверхням каналу лише для налаштування завантажуватися до повного плагіна каналу під час запуску. |
`openclaw.install.minHostVersion` перевіряється під час встановлення та
завантаження реєстру маніфестів. Невалідні значення відхиляються; новіші, але валідні значення пропускають
плагін на старіших хостах.
`openclaw.install.minHostVersion` застосовується під час встановлення та
завантаження реєстру маніфестів. Недійсні значення відхиляються; новіші, але коректні значення
призводять до пропуску плагіна на старіших хостах.
`openclaw.install.allowInvalidConfigRecovery` навмисно є вузьким. Воно
не робить довільні зламані конфігурації придатними для встановлення. Наразі воно лише дозволяє
процесам встановлення відновлюватися після конкретних застарілих збоїв оновлення bundled-плагіна, таких як
відсутній шлях bundled-плагіна або застарілий запис `channels.<id>` для цього самого
bundled-плагіна. Непов’язані помилки конфігурації все одно блокують встановлення та спрямовують операторів
`openclaw.install.allowInvalidConfigRecovery` навмисно є вузьким механізмом. Це
не робить довільні пошкоджені конфігурації придатними до встановлення. Зараз це лише дозволяє
потокам встановлення відновлюватися після конкретних застарілих збоїв оновлення вбудованих плагінів, таких як
відсутній шлях до вбудованого плагіна або застарілий запис `channels.<id>` для того самого
вбудованого плагіна. Непов’язані помилки конфігурації все одно блокують встановлення й спрямовують операторів
до `openclaw doctor --fix`.
`openclaw.channel.persistedAuthState` — це метадані пакета для маленького модуля
`openclaw.channel.persistedAuthState` — це метадані пакета для крихітного модуля
перевірки:
```json
@ -387,12 +393,13 @@ bundled-плагіна. Непов’язані помилки конфігур
}
```
Використовуйте це, коли потоки setup, doctor або configured-state потребують
легкої yes/no перевірки автентифікації до завантаження повного плагіна каналу. Цільовий експорт має бути невеликою
функцією, яка читає лише збережений стан; не спрямовуйте його через повний barrel рантайму каналу.
Використовуйте це, коли потоки setup, doctor або configured-state потребують дешевої перевірки автентифікації так/ні
до завантаження повного плагіна каналу. Цільовий експорт має бути невеликою
функцією, яка читає лише збережений стан; не спрямовуйте її через повний
barrel рантайму каналу.
`openclaw.channel.configuredState` має таку саму форму для легких перевірок
configured-state лише через env:
`openclaw.channel.configuredState` має ту саму форму для дешевих перевірок
налаштованого стану лише через env:
```json
{
@ -408,61 +415,64 @@ configured-state лише через env:
}
```
Використовуйте це, коли канал може відповісти про configured-state на основі env або інших невеликих
вхідних даних без рантайму. Якщо перевірка потребує повного визначення конфігурації або реального
рантайму каналу, залиште цю логіку в хуку плагіна `config.hasConfiguredState`.
Використовуйте це, коли канал може визначити налаштований стан через env або інші невеликі
нерантаймові вхідні дані. Якщо перевірка потребує повного визначення конфігурації або справжнього
рантайму каналу, залишайте цю логіку в хуку плагіна `config.hasConfiguredState`.
## Вимоги до JSON Schema
- **Кожен плагін повинен постачати JSON Schema**, навіть якщо він не приймає конфігурацію.
- Порожня schema є допустимою (наприклад, `{ "type": "object", "additionalProperties": false }`).
- Schema проходять валідацію під час читання/запису конфігурації, а не під час рантайму.
- Порожня схема припустима (наприклад, `{ "type": "object", "additionalProperties": false }`).
- Схеми проходять валідацію під час читання/запису конфігурації, а не в рантаймі.
## Поведінка валідації
- Невідомі ключі `channels.*` — це **помилки**, якщо тільки id каналу не оголошено
маніфестом плагіна.
- Невідомі ключі `channels.*` — це **помилки**, якщо тільки ідентифікатор каналу не оголошено
в маніфесті плагіна.
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` і `plugins.slots.*`
повинні посилатися на **виявлювані** id плагінів. Невідомі id — це **помилки**.
- Якщо плагін установлено, але він має зламаний або відсутній маніфест чи schema,
повинні посилатися на **доступні для виявлення** ідентифікатори плагінів. Невідомі ідентифікатори — це **помилки**.
- Якщо плагін установлено, але він має пошкоджений або відсутній маніфест чи схему,
валідація завершується помилкою, а Doctor повідомляє про помилку плагіна.
- Якщо конфігурація плагіна існує, але плагін **вимкнено**, конфігурація зберігається, і
у Doctor та журналах з’являється **попередження**.
- Якщо конфігурація плагіна існує, але сам плагін **вимкнений**, конфігурація зберігається, а в
Doctor і журналах з’являється **попередження**.
Дивіться [Довідник із конфігурації](/uk/gateway/configuration) для повної schema `plugins.*`.
Дивіться [Довідник з конфігурації](/uk/gateway/configuration) для повної схеми `plugins.*`.
## Примітки
- Маніфест **обов’язковий для власних плагінів OpenClaw**, включно із завантаженням із локальної файлової системи.
- Рантайм усе одно завантажує модуль плагіна окремо; маніфест використовується лише для
виявлення + валідації.
- Власні маніфести аналізуються за допомогою JSON5, тому коментарі, кінцеві коми та
неукладені в лапки ключі приймаються, якщо підсумкове значення все ще є об’єктом.
- Завантажувач маніфесту зчитує лише задокументовані поля маніфесту. Уникайте додавання
- Маніфест **обов’язковий для нативних плагінів OpenClaw**, включно із завантаженням із локальної файлової системи.
- Рантайм усе одно окремо завантажує модуль плагіна; маніфест призначений лише для
виявлення та валідації.
- Нативні маніфести розбираються за допомогою JSON5, тому коментарі, завершальні коми та
незакавычені ключі приймаються, якщо кінцеве значення все ще є об’єктом.
- Завантажувач маніфесту читає лише задокументовані поля маніфесту. Уникайте додавання
тут власних ключів верхнього рівня.
- `providerAuthEnvVars` — це легкий шлях метаданих для перевірок автентифікації, валідації
env-marker та подібних поверхонь автентифікації провайдера, які не повинні запускати рантайм плагіна
env-маркерів і подібних поверхонь автентифікації провайдера, які не повинні запускати рантайм плагіна
лише для перевірки назв env.
- `channelEnvVars` — це легкий шлях метаданих для shell-env fallback, підказок setup
- `providerAuthAliases` дозволяє варіантам провайдерів повторно використовувати автентифікацію
іншого провайдера: env vars, профілі автентифікації, автентифікацію на основі конфігурації та
варіант онбордингу з API-ключем, без жорсткого кодування цього зв’язку в core.
- `channelEnvVars` — це легкий шлях метаданих для fallback через shell env, запитів setup
та подібних поверхонь каналів, які не повинні запускати рантайм плагіна
лише для перевірки назв env.
- `providerAuthChoices` — це легкий шлях метаданих для пікерів варіантів автентифікації,
визначення `--auth-choice`, мапінгу preferred-provider і простої реєстрації прапорців CLI
під час онбордингу до завантаження рантайму провайдера. Метадані wizard рантайму,
які потребують коду провайдера, див. у
- `providerAuthChoices` — це легкий шлях метаданих для селекторів варіантів автентифікації,
визначення `--auth-choice`, зіставлення preferred provider і простої реєстрації
прапорців CLI онбордингу до завантаження рантайму провайдера. Для метаданих
майстра рантайму, які потребують коду провайдера, дивіться
[Хуки рантайму провайдера](/uk/plugins/architecture#provider-runtime-hooks).
- Ексклюзивні типи плагінів вибираються через `plugins.slots.*`.
- `kind: "memory"` вибирається через `plugins.slots.memory`.
- `kind: "context-engine"` вибирається через `plugins.slots.contextEngine`
(типово: вбудований `legacy`).
- `channels`, `providers`, `cliBackends` і `skills` можна опустити, якщо
плагіну вони не потрібні.
- Якщо ваш плагін залежить від native-модулів, задокументуйте кроки збирання та будь-які
(за замовчуванням: вбудований `legacy`).
- `channels`, `providers`, `cliBackends` і `skills` можна не вказувати, якщо
плагін їх не потребує.
- Якщо ваш плагін залежить від нативних модулів, задокументуйте кроки збирання та всі
вимоги до allowlist менеджера пакетів (наприклад, pnpm `allow-build-scripts`
- `pnpm rebuild <package>`).
## Пов’язані матеріали
## Пов’язане
- [Створення плагінів](/uk/plugins/building-plugins) — початок роботи з плагінами
- [Архітектура плагінів](/uk/plugins/architecture) — внутрішня архітектура
- [Огляд SDK](/uk/plugins/sdk-overview) — довідник з Plugin SDK
- [Огляд SDK](/uk/plugins/sdk-overview) — довідник по Plugin SDK

View File

@ -7,27 +7,27 @@ sidebarTitle: Provider Plugins
summary: Покроковий посібник зі створення плагіна постачальника моделей для OpenClaw
title: Створення плагінів постачальників
x-i18n:
generated_at: "2026-04-06T15:31:24Z"
generated_at: "2026-04-08T18:09:13Z"
model: gpt-5.4
provider: openai
source_hash: 4da82a353e1bf4fe6dc09e14b8614133ac96565679627de51415926014bd3990
source_hash: 38d9af522dc19e49c81203a83a4096f01c2398b1df771c848a30ad98f251e9e1
source_path: plugins/sdk-provider-plugins.md
workflow: 15
---
# Створення плагінів постачальників
У цьому посібнику покроково розглядається створення плагіна постачальника, який додає до OpenClaw постачальника моделей
(LLM). Наприкінці ви матимете постачальника з каталогом моделей,
автентифікацією через API-ключ і динамічним визначенням моделей.
Цей посібник покроково пояснює, як створити плагін постачальника, який додає
до OpenClaw постачальника моделей (LLM). Наприкінці у вас буде постачальник із каталогом моделей,
автентифікацією через API key та динамічним визначенням моделей.
<Info>
Якщо ви раніше не створювали жодного плагіна OpenClaw, спочатку прочитайте
[Getting Started](/uk/plugins/building-plugins) про базову структуру
пакета й налаштування маніфесту.
[Getting Started](/uk/plugins/building-plugins), щоб ознайомитися з базовою
структурою пакета та налаштуванням маніфесту.
</Info>
## Покрокове проходження
## Покроковий приклад
<Steps>
<a id="step-1-package-and-manifest"></a>
@ -65,6 +65,9 @@ x-i18n:
"providerAuthEnvVars": {
"acme-ai": ["ACME_AI_API_KEY"]
},
"providerAuthAliases": {
"acme-ai-coding": "acme-ai"
},
"providerAuthChoices": [
{
"provider": "acme-ai",
@ -87,16 +90,17 @@ x-i18n:
</CodeGroup>
Маніфест оголошує `providerAuthEnvVars`, щоб OpenClaw міг виявляти
облікові дані без завантаження runtime вашого плагіна. `modelSupport` є необов'язковим
і дає змогу OpenClaw автоматично завантажувати ваш плагін постачальника за скороченими id моделей
на кшталт `acme-large` ще до появи runtime hooks. Якщо ви публікуєте
постачальника в ClawHub, поля `openclaw.compat` і `openclaw.build`
обов'язкові в `package.json`.
облікові дані без завантаження runtime вашого плагіна. Додайте `providerAuthAliases`,
якщо варіант постачальника має повторно використовувати автентифікацію іншого ідентифікатора постачальника. `modelSupport`
необов’язковий і дозволяє OpenClaw автоматично завантажувати ваш плагін постачальника зі скорочених
ідентифікаторів моделей, таких як `acme-large`, ще до появи runtime hooks. Якщо ви публікуєте
постачальника у ClawHub, ці поля `openclaw.compat` і `openclaw.build`
обов’язкові в `package.json`.
</Step>
<Step title="Зареєструйте постачальника">
Мінімальний постачальник потребує `id`, `label`, `auth` і `catalog`:
Мінімальному постачальнику потрібні `id`, `label`, `auth` і `catalog`:
```typescript index.ts
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
@ -171,8 +175,8 @@ x-i18n:
`openclaw onboard --acme-ai-api-key <key>` і вибрати
`acme-ai/acme-large` як свою модель.
Для вбудованих постачальників, які реєструють лише одного текстового постачальника з
автентифікацією через API-ключ і одним runtime на основі каталогу, віддавайте перевагу вужчому
Для вбудованих постачальників, які реєструють лише одного текстового постачальника з автентифікацією через API key
плюс один runtime на основі каталогу, віддавайте перевагу вужчому
допоміжному засобу `defineSingleProviderPluginEntry(...)`:
```typescript
@ -208,24 +212,24 @@ x-i18n:
});
```
Якщо вашому потоку автентифікації також потрібно змінювати `models.providers.*`, псевдоніми й
типову модель агента під час онбордингу, використовуйте готові допоміжні засоби з
`openclaw/plugin-sdk/provider-onboard`. Найвужчі допоміжні засоби —
це `createDefaultModelPresetAppliers(...)`,
Якщо ваш потік автентифікації також має оновлювати `models.providers.*`, aliases і
модель агента за замовчуванням під час онбордингу, використовуйте готові helper-функції з
`openclaw/plugin-sdk/provider-onboard`. Найвужчі helper-функції:
`createDefaultModelPresetAppliers(...)`,
`createDefaultModelsPresetAppliers(...)` і
`createModelCatalogPresetAppliers(...)`.
Коли нативний endpoint постачальника підтримує блоки streamed usage на
звичайному transport `openai-completions`, віддавайте перевагу спільним допоміжним засобам каталогу з
`openclaw/plugin-sdk/provider-catalog-shared`, а не жорстко закодованим перевіркам
id постачальника. `supportsNativeStreamingUsageCompat(...)` і
`applyProviderNativeStreamingUsageCompat(...)` визначають підтримку з мапи можливостей endpoint, тому нативні endpoint у стилі Moonshot/DashScope
також підключаються, навіть коли плагін використовує власний id постачальника.
Якщо власний endpoint постачальника підтримує потокові блоки використання на
звичайному транспорті `openai-completions`, віддавайте перевагу спільним helper-функціям каталогу з
`openclaw/plugin-sdk/provider-catalog-shared` замість жорсткого кодування перевірок
ідентифікатора постачальника. `supportsNativeStreamingUsageCompat(...)` і
`applyProviderNativeStreamingUsageCompat(...)` визначають підтримку з карти можливостей endpoint, тож власні endpoint Moonshot/DashScope-типу
також можуть бути увімкнені, навіть якщо плагін використовує власний ідентифікатор постачальника.
</Step>
<Step title="Додайте динамічне визначення моделей">
Якщо ваш постачальник приймає довільні id моделей (як проксі або маршрутизатор),
Якщо ваш постачальник приймає довільні ідентифікатори моделей (як проксі чи маршрутизатор),
додайте `resolveDynamicModel`:
```typescript
@ -248,16 +252,16 @@ x-i18n:
```
Якщо для визначення потрібен мережевий виклик, використовуйте `prepareDynamicModel` для асинхронного
прогрівання `resolveDynamicModel` буде запущено знову після його завершення.
прогріву — після завершення `resolveDynamicModel` буде запущено знову.
</Step>
<Step title="Додайте runtime hooks (за потреби)">
Більшості постачальників достатньо `catalog` + `resolveDynamicModel`. Додавайте hooks
поступово, у міру того як цього потребуватиме ваш постачальник.
Більшості постачальників потрібні лише `catalog` + `resolveDynamicModel`. Додавайте hooks
поступово, коли вони стають потрібними вашому постачальнику.
Спільні збирачі допоміжних засобів тепер покривають найпоширеніші сімейства replay/tool-compat,
тому плагінам зазвичай не потрібно вручну підключати кожен hook по одному:
Спільні builder-функції helper-ів тепер покривають найпоширеніші сімейства
replay/tool-compat, тому плагінам зазвичай не потрібно вручну підключати кожен hook окремо:
```typescript
import { buildProviderReplayFamilyHooks } from "openclaw/plugin-sdk/provider-model-shared";
@ -281,11 +285,11 @@ x-i18n:
| Family | Що воно підключає |
| --- | --- |
| `openai-compatible` | Спільна політика replay у стилі OpenAI для сумісних з OpenAI transport, включно з очищенням id викликів інструментів, виправленнями порядку assistant-first і загальною перевіркою ходів Gemini там, де це потрібно transport |
| `anthropic-by-model` | Політика replay з урахуванням Claude, вибрана за `modelId`, тому transport Anthropic-message отримують очищення thinking-блоків, специфічне для Claude, лише коли визначена модель справді має id Claude |
| `google-gemini` | Нативна політика replay Gemini плюс очищення bootstrap replay і режим виводу reasoning з тегами |
| `passthrough-gemini` | Очищення thought-signature Gemini для моделей Gemini, що працюють через OpenAI-сумісні проксі transport; не вмикає нативну перевірку replay Gemini або переписування bootstrap |
| `hybrid-anthropic-openai` | Гібридна політика для постачальників, які поєднують поверхні моделей Anthropic-message і OpenAI-compatible в одному плагіні; необов'язкове відкидання thinking-блоків лише для Claude залишається обмеженим стороною Anthropic |
| `openai-compatible` | Спільна політика replay у стилі OpenAI для OpenAI-сумісних транспортів, зокрема очищення tool-call-id, виправлення порядку assistant-first і загальна валідація Gemini-turn там, де цього потребує транспорт |
| `anthropic-by-model` | Політика replay з урахуванням Claude, що вибирається за `modelId`, тому транспорти Anthropic-message отримують очищення thinking-block, специфічне для Claude, лише коли визначена модель справді є ідентифікатором Claude |
| `google-gemini` | Власна політика replay Gemini плюс очищення bootstrap replay і режим tagged reasoning-output |
| `passthrough-gemini` | Очищення thought-signature Gemini для моделей Gemini, що працюють через OpenAI-сумісні проксі-транспорти; не вмикає власну валідацію replay Gemini або переписування bootstrap |
| `hybrid-anthropic-openai` | Гібридна політика для постачальників, які поєднують поверхні моделей Anthropic-message і OpenAI-compatible в одному плагіні; необов’язкове видалення thinking-block лише для Claude залишається обмеженим стороною Anthropic |
Реальні вбудовані приклади:
@ -300,12 +304,12 @@ x-i18n:
| Family | Що воно підключає |
| --- | --- |
| `google-thinking` | Нормалізація payload thinking Gemini на спільному шляху stream |
| `kilocode-thinking` | Обгортка reasoning Kilo на спільному шляху proxy stream, де для `kilo/auto` і id proxy reasoning, що не підтримуються, ін'єкція thinking пропускається |
| `moonshot-thinking` | Відображення payload нативного двійкового thinking Moonshot з конфігурації + рівня `/think` |
| `kilocode-thinking` | Обгортка міркування Kilo на спільному шляху проксі-stream, де `kilo/auto` та непідтримувані ідентифікатори міркування проксі пропускають інжектований thinking |
| `moonshot-thinking` | Відображення бінарного payload native-thinking Moonshot із config + рівня `/think` |
| `minimax-fast-mode` | Переписування моделі MiniMax fast-mode на спільному шляху stream |
| `openai-responses-defaults` | Спільні нативні обгортки OpenAI/Codex Responses: заголовки атрибуції, `/fast`/`serviceTier`, verbosity тексту, нативний вебпошук Codex, формування payload сумісності reasoning і керування контекстом Responses |
| `openrouter-thinking` | Обгортка reasoning OpenRouter для proxy-маршрутів, де пропуски для моделей, що не підтримуються, і `auto` централізовано обробляються |
| `tool-stream-default-on` | Обгортка `tool_stream`, увімкнена типово, для постачальників на кшталт Z.AI, які хочуть потокову передачу інструментів, якщо її не вимкнули явно |
| `openai-responses-defaults` | Спільні власні обгортки OpenAI/Codex Responses: заголовки attribution, `/fast`/`serviceTier`, verbosity тексту, власний web search Codex, формування payload для сумісності reasoning і керування контекстом Responses |
| `openrouter-thinking` | Обгортка reasoning OpenRouter для маршрутів проксі, з централізованою обробкою пропусків для непідтримуваних моделей і `auto` |
| `tool-stream-default-on` | Обгортка `tool_stream`, увімкнена за замовчуванням, для таких постачальників, як Z.AI, які хочуть потокову передачу інструментів, якщо її явно не вимкнено |
Реальні вбудовані приклади:
@ -318,80 +322,79 @@ x-i18n:
- `zai`: `tool-stream-default-on`
`openclaw/plugin-sdk/provider-model-shared` також експортує enum сімейств replay
разом зі спільними допоміжними засобами, з яких ці сімейства побудовані. Типові публічні експорти
разом зі спільними helper-функціями, на основі яких побудовано ці сімейства. Поширені публічні експорти
включають:
- `ProviderReplayFamily`
- `buildProviderReplayFamilyHooks(...)`
- спільні збирачі replay, такі як `buildOpenAICompatibleReplayPolicy(...)`,
- спільні builder-функції replay, як-от `buildOpenAICompatibleReplayPolicy(...)`,
`buildAnthropicReplayPolicyForModel(...)`,
`buildGoogleGeminiReplayPolicy(...)` і
`buildHybridAnthropicOrOpenAIReplayPolicy(...)`
- допоміжні засоби replay Gemini, такі як `sanitizeGoogleGeminiReplayHistory(...)`
- helper-функції replay Gemini, як-от `sanitizeGoogleGeminiReplayHistory(...)`
і `resolveTaggedReasoningOutputMode()`
- допоміжні засоби для endpoint/моделей, такі як `resolveProviderEndpoint(...)`,
- helper-функції для endpoint/моделей, як-от `resolveProviderEndpoint(...)`,
`normalizeProviderId(...)`, `normalizeGooglePreviewModelId(...)` і
`normalizeNativeXaiModelId(...)`
`openclaw/plugin-sdk/provider-stream` надає і збирач сімейств, і
публічні допоміжні засоби обгорток, які ці сімейства повторно використовують. Типові публічні експорти
`openclaw/plugin-sdk/provider-stream` надає як builder сімейств,
так і публічні helper-обгортки, які ці сімейства повторно використовують. Поширені публічні експорти
включають:
- `ProviderStreamFamily`
- `buildProviderStreamFamilyHooks(...)`
- `composeProviderStreamWrappers(...)`
- спільні обгортки OpenAI/Codex, такі як
- спільні обгортки OpenAI/Codex, як-от
`createOpenAIAttributionHeadersWrapper(...)`,
`createOpenAIFastModeWrapper(...)`,
`createOpenAIServiceTierWrapper(...)`,
`createOpenAIResponsesContextManagementWrapper(...)` і
`createCodexNativeWebSearchWrapper(...)`
- спільні proxy/provider-обгортки, такі як `createOpenRouterWrapper(...)`,
- спільні обгортки проксі/постачальників, як-от `createOpenRouterWrapper(...)`,
`createToolStreamWrapper(...)` і `createMinimaxFastModeWrapper(...)`
Деякі stream-допоміжні засоби навмисно залишаються локальними для постачальника. Поточний вбудований
Деякі helper-функції для stream навмисно залишаються локальними для конкретного постачальника. Поточний вбудований
приклад: `@openclaw/anthropic-provider` експортує
`wrapAnthropicProviderStream`, `resolveAnthropicBetas`,
`resolveAnthropicFastMode`, `resolveAnthropicServiceTier` і
низькорівневі збирачі обгорток Anthropic зі свого публічного шва `api.ts` /
`contract-api.ts`. Ці допоміжні засоби залишаються специфічними для Anthropic, оскільки
вони також кодують обробку бета-можливостей Claude OAuth і gating `context1m`.
builder-функції нижчого рівня для обгорток Anthropic зі свого публічного інтерфейсу `api.ts` /
`contract-api.ts`. Ці helper-функції залишаються специфічними для Anthropic, оскільки
вони також кодують обробку бета-версій Claude OAuth і обмеження `context1m`.
Інші вбудовані постачальники також зберігають transport-специфічні обгортки локальними, коли
цю поведінку не вдається чисто розділити між сімействами. Поточний приклад: вбудований
плагін xAI зберігає нативне формування xAI Responses у власному
`wrapStreamFn`, включно з переписуванням псевдонімів `/fast`, типовим `tool_stream`,
очищенням strict-tool, що не підтримується, і видаленням
payload reasoning, специфічного для xAI.
Інші вбудовані постачальники також залишають локальними обгортки, специфічні для транспорту, коли
цю поведінку неможливо чисто розділити між сімействами. Поточний приклад: вбудований
плагін xAI залишає власне формування Responses xAI у своєму
`wrapStreamFn`, зокрема переписування alias `/fast`, `tool_stream` за замовчуванням,
очищення непідтримуваних strict-tool і видалення payload reasoning, специфічного для xAI.
`openclaw/plugin-sdk/provider-tools` наразі надає одне спільне
сімейство схем інструментів разом зі спільними допоміжними засобами схем/сумісності:
сімейство tool-schema плюс спільні helper-функції schema/compat:
- `ProviderToolCompatFamily` документує поточний перелік спільних сімейств.
- `buildProviderToolCompatFamilyHooks("gemini")` підключає очищення схем Gemini
+ діагностику для постачальників, яким потрібні безпечні для Gemini схеми інструментів.
- `buildProviderToolCompatFamilyHooks("gemini")` підключає очищення schema
Gemini + діагностику для постачальників, яким потрібні Gemini-safe tool schemas.
- `normalizeGeminiToolSchemas(...)` і `inspectGeminiToolSchemas(...)`
— це базові публічні допоміжні засоби для схем Gemini.
- `resolveXaiModelCompatPatch()` повертає вбудований патч сумісності xAI:
`toolSchemaProfile: "xai"`, ключові слова схем, що не підтримуються, нативну
підтримку `web_search` і декодування аргументів викликів інструментів з HTML-сутностей.
- `applyXaiModelCompat(model)` застосовує той самий патч сумісності xAI до
визначеної моделі перед тим, як вона потрапить до раннера.
— це базові публічні helper-функції schema Gemini.
- `resolveXaiModelCompatPatch()` повертає вбудований compat patch xAI:
`toolSchemaProfile: "xai"`, непідтримувані ключові слова schema, власну
підтримку `web_search` і декодування аргументів виклику інструментів з HTML-entity.
- `applyXaiModelCompat(model)` застосовує той самий compat patch xAI до
визначеної моделі, перш ніж вона потрапить до runner.
Реальний вбудований приклад: плагін xAI використовує `normalizeResolvedModel` плюс
`contributeResolvedModelCompat`, щоб ці метадані сумісності залишалися у володінні
постачальника, а не жорстко кодувалися в core як правила xAI.
`contributeResolvedModelCompat`, щоб зберегти ці метадані compat у власності
постачальника, а не жорстко кодувати правила xAI в core.
Той самий шаблон на рівні кореня пакета також лежить в основі інших вбудованих постачальників:
Такий самий шаблон на рівні кореня пакета також лежить в основі інших вбудованих постачальників:
- `@openclaw/openai-provider`: `api.ts` експортує збирачі постачальника,
допоміжні засоби типових моделей і збирачі постачальника realtime
- `@openclaw/openrouter-provider`: `api.ts` експортує збирач постачальника
плюс допоміжні засоби для онбордингу/конфігурації
- `@openclaw/openai-provider`: `api.ts` експортує builder-функції постачальника,
helper-функції для моделей за замовчуванням і builder-функції постачальника realtime
- `@openclaw/openrouter-provider`: `api.ts` експортує builder-функцію постачальника
плюс helper-функції для onboarding/config
<Tabs>
<Tab title="Обмін токенів">
Для постачальників, яким потрібен обмін токенів перед кожним викликом inference:
<Tab title="Обмін токенами">
Для постачальників, яким потрібен обмін токенами перед кожним викликом inference:
```typescript
prepareRuntimeAuth: async (ctx) => {
@ -404,8 +407,8 @@ x-i18n:
},
```
</Tab>
<Tab title="Власні заголовки">
Для постачальників, яким потрібні власні заголовки запитів або зміни тіла запиту:
<Tab title="Користувацькі заголовки">
Для постачальників, яким потрібні користувацькі заголовки запиту або зміни тіла запиту:
```typescript
// wrapStreamFn returns a StreamFn derived from ctx.streamFn
@ -422,9 +425,9 @@ x-i18n:
},
```
</Tab>
<Tab title="Ідентичність нативного transport">
Для постачальників, яким потрібні нативні заголовки або метадані
запиту/сеансу в загальних transport HTTP або WebSocket:
<Tab title="Власна ідентичність транспорту">
Для постачальників, яким потрібні власні заголовки запиту/сесії або метадані на
універсальних HTTP- чи WebSocket-транспортах:
```typescript
resolveTransportTurnState: (ctx) => ({
@ -444,8 +447,8 @@ x-i18n:
}),
```
</Tab>
<Tab title="Usage і білінг">
Для постачальників, які надають дані usage/білінгу:
<Tab title="Використання та білінг">
Для постачальників, які надають дані про використання/білінг:
```typescript
resolveUsageAuth: async (ctx) => {
@ -464,79 +467,79 @@ x-i18n:
| # | Hook | Коли використовувати |
| --- | --- | --- |
| 1 | `catalog` | Каталог моделей або типові значення base URL |
| 2 | `applyConfigDefaults` | Глобальні типові значення, якими володіє постачальник, під час materialization конфігурації |
| 3 | `normalizeModelId` | Очищення застарілих/preview псевдонімів model-id перед пошуком |
| 4 | `normalizeTransport` | Очищення `api` / `baseUrl` сімейства постачальника перед загальним складанням моделі |
| 5 | `normalizeConfig` | Нормалізація конфігурації `models.providers.<id>` |
| 6 | `applyNativeStreamingUsageCompat` | Переписування compat нативного streaming-usage для конфігурованих постачальників |
| 7 | `resolveConfigApiKey` | Визначення автентифікації через env-marker, яким володіє постачальник |
| 8 | `resolveSyntheticAuth` | Synthetic auth для local/self-hosted або на основі конфігурації |
| 9 | `shouldDeferSyntheticProfileAuth` | Знижує пріоритет synthetic placeholder збереженого профілю порівняно з env/config auth |
| 10 | `resolveDynamicModel` | Приймати довільні id моделей вище за потоком |
| 1 | `catalog` | Каталог моделей або значення `baseUrl` за замовчуванням |
| 2 | `applyConfigDefaults` | Глобальні значення за замовчуванням, що належать постачальнику, під час materialization config |
| 3 | `normalizeModelId` | Очищення aliases застарілих/preview model-id перед пошуком |
| 4 | `normalizeTransport` | Очищення `api` / `baseUrl` для сімейства постачальника перед загальним збиранням моделі |
| 5 | `normalizeConfig` | Нормалізація config `models.providers.<id>` |
| 6 | `applyNativeStreamingUsageCompat` | Переписування compat для власного streaming-usage для постачальників config |
| 7 | `resolveConfigApiKey` | Визначення автентифікації за env-marker, що належить постачальнику |
| 8 | `resolveSyntheticAuth` | Синтетична автентифікація local/self-hosted або на основі config |
| 9 | `shouldDeferSyntheticProfileAuth` | Знижує пріоритет синтетичних placeholders збереженого профілю відносно env/config auth |
| 10 | `resolveDynamicModel` | Прийом довільних upstream model IDs |
| 11 | `prepareDynamicModel` | Асинхронне отримання метаданих перед визначенням |
| 12 | `normalizeResolvedModel` | Переписування transport перед раннером |
| 12 | `normalizeResolvedModel` | Переписування транспорту перед runner |
Примітки щодо runtime fallback:
Примітки щодо runtime fallback:
- `normalizeConfig` спочатку перевіряє відповідного постачальника, а потім інші
плагіни постачальників із підтримкою hook, доки один із них справді не змінить конфігурацію.
Якщо жоден hook постачальника не перепише підтримуваний запис конфігурації сімейства Google,
вбудований нормалізатор конфігурації Google усе одно застосовується.
- `resolveConfigApiKey` використовує hook постачальника, якщо той наданий. Вбудований
шлях `amazon-bedrock` також має тут вбудований AWS env-marker resolver,
хоча сама runtime-автентифікація Bedrock і далі використовує стандартний
- `normalizeConfig` спочатку перевіряє відповідного постачальника, потім інші
плагіни постачальників, здатні обробляти hooks, доки один із них справді не змінить config.
Якщо жоден hook постачальника не перепише підтримуваний запис config сімейства Google,
усе одно застосовується вбудований нормалізатор config Google.
- `resolveConfigApiKey` використовує hook постачальника, якщо він доступний. Вбудований
шлях `amazon-bedrock` також має тут вбудований resolver AWS env-marker,
хоча сама runtime auth Bedrock усе ще використовує стандартний
ланцюжок AWS SDK.
| 13 | `contributeResolvedModelCompat` | Прапорці compat для моделей постачальника за іншим сумісним transport |
| 13 | `contributeResolvedModelCompat` | Прапори compat для моделей вендора за іншим сумісним транспортом |
| 14 | `capabilities` | Застарілий статичний набір можливостей; лише для сумісності |
| 15 | `normalizeToolSchemas` | Очищення схем інструментів, яким володіє постачальник, перед реєстрацією |
| 16 | `inspectToolSchemas` | Діагностика схем інструментів, якою володіє постачальник |
| 17 | `resolveReasoningOutputMode` | Контракт виводу reasoning з тегами чи нативний |
| 18 | `prepareExtraParams` | Типові параметри запиту |
| 19 | `createStreamFn` | Повністю власний transport StreamFn |
| 20 | `wrapStreamFn` | Власні обгортки заголовків/тіла на звичайному шляху stream |
| 21 | `resolveTransportTurnState` | Нативні заголовки/метадані для кожного ходу |
| 22 | `resolveWebSocketSessionPolicy` | Нативні заголовки сеансу WS/cool-down |
| 23 | `formatApiKey` | Власна форма runtime-токена |
| 24 | `refreshOAuth` | Власне оновлення OAuth |
| 25 | `buildAuthDoctorHint` | Підказка щодо відновлення автентифікації |
| 26 | `matchesContextOverflowError` | Виявлення переповнення, яким володіє постачальник |
| 27 | `classifyFailoverReason` | Класифікація rate-limit/overload, якою володіє постачальник |
| 15 | `normalizeToolSchemas` | Очищення tool-schema, що належить постачальнику, перед реєстрацією |
| 16 | `inspectToolSchemas` | Діагностика tool-schema, що належить постачальнику |
| 17 | `resolveReasoningOutputMode` | Контракт tagged vs native reasoning-output |
| 18 | `prepareExtraParams` | Параметри запиту за замовчуванням |
| 19 | `createStreamFn` | Повністю користувацький транспорт StreamFn |
| 20 | `wrapStreamFn` | Користувацькі обгортки заголовків/тіла на звичайному шляху stream |
| 21 | `resolveTransportTurnState` | Власні заголовки/метадані для кожного turn |
| 22 | `resolveWebSocketSessionPolicy` | Власні заголовки сесії WS / період охолодження |
| 23 | `formatApiKey` | Користувацька форма runtime token |
| 24 | `refreshOAuth` | Користувацьке оновлення OAuth |
| 25 | `buildAuthDoctorHint` | Підказка щодо виправлення автентифікації |
| 26 | `matchesContextOverflowError` | Визначення переповнення, що належить постачальнику |
| 27 | `classifyFailoverReason` | Класифікація rate-limit/overload, що належить постачальнику |
| 28 | `isCacheTtlEligible` | Керування TTL кешу prompt |
| 29 | `buildMissingAuthMessage` | Власна підказка про відсутню автентифікацію |
| 30 | `suppressBuiltInModel` | Приховати застарілі рядки вище за потоком |
| 31 | `augmentModelCatalog` | Synthetic рядки сумісності вперед у каталозі |
| 32 | `isBinaryThinking` | Двійкове thinking увімк./вимк. |
| 29 | `buildMissingAuthMessage` | Користувацька підказка про відсутню автентифікацію |
| 30 | `suppressBuiltInModel` | Приховати застарілі upstream rows |
| 31 | `augmentModelCatalog` | Синтетичні rows для forward-compat |
| 32 | `isBinaryThinking` | Бінарний thinking увімк./вимк. |
| 33 | `supportsXHighThinking` | Підтримка reasoning `xhigh` |
| 34 | `resolveDefaultThinkingLevel` | Типова політика `/think` |
| 35 | `isModernModelRef` | Зіставлення live/smoke моделей |
| 36 | `prepareRuntimeAuth` | Обмін токенів перед inference |
| 37 | `resolveUsageAuth` | Власний парсинг облікових даних usage |
| 38 | `fetchUsageSnapshot` | Власний endpoint usage |
| 39 | `createEmbeddingProvider` | Адаптер embedding для memory/search, яким володіє постачальник |
| 40 | `buildReplayPolicy` | Власна політика replay/compaction transcript |
| 34 | `resolveDefaultThinkingLevel` | Політика `/think` за замовчуванням |
| 35 | `isModernModelRef` | Відповідність live/smoke моделей |
| 36 | `prepareRuntimeAuth` | Обмін токенами перед inference |
| 37 | `resolveUsageAuth` | Користувацький розбір облікових даних usage |
| 38 | `fetchUsageSnapshot` | Користувацький endpoint usage |
| 39 | `createEmbeddingProvider` | Адаптер embedding, що належить постачальнику, для memory/search |
| 40 | `buildReplayPolicy` | Користувацька політика replay/compaction транскрипту |
| 41 | `sanitizeReplayHistory` | Специфічні для постачальника переписування replay після загального очищення |
| 42 | `validateReplayTurns` | Сувора перевірка ходів replay перед вбудованим раннером |
| 43 | `onModelSelected` | Зворотний виклик після вибору (наприклад, телеметрія) |
| 42 | `validateReplayTurns` | Сувора валідація replay-turn перед вбудованим runner |
| 43 | `onModelSelected` | Колбек після вибору моделі (наприклад, telemetry) |
Примітка щодо налаштування prompt:
- `resolveSystemPromptContribution` дає постачальнику змогу додавати
системні підказки з урахуванням кешу для сімейства моделей. Віддавайте цьому перевагу замість
`before_prompt_build`, коли поведінка належить одному сімейству постачальника/моделей
- `resolveSystemPromptContribution` дозволяє постачальнику додавати cache-aware
інструкції до system prompt для сімейства моделей. Віддавайте йому перевагу перед
`before_prompt_build`, якщо поведінка належить одному сімейству постачальника/моделей
і має зберігати стабільний/динамічний поділ кешу.
Детальні описи й приклади з реального світу дивіться в
Докладні описи та реальні приклади дивіться в
[Internals: Provider Runtime Hooks](/uk/plugins/architecture#provider-runtime-hooks).
</Accordion>
</Step>
<Step title="Додайте додаткові можливості (необов'язково)">
<Step title="Додайте додаткові можливості (необовязково)">
<a id="step-5-add-extra-capabilities"></a>
Плагін постачальника може реєструвати speech, realtime transcription, realtime
voice, media understanding, image generation, video generation, web fetch
і web search разом із текстовим inference:
і web search поряд із текстовим inference:
```typescript
register(api) {
@ -645,23 +648,23 @@ x-i18n:
```
OpenClaw класифікує це як плагін **hybrid-capability**. Це
рекомендований шаблон для корпоративних плагінів (один плагін на постачальника). Дивіться
рекомендований шаблон для корпоративних плагінів (один плагін на вендора). Див.
[Internals: Capability Ownership](/uk/plugins/architecture#capability-ownership-model).
Для генерації відео віддавайте перевагу показаній вище структурі можливостей із урахуванням режимів:
`generate`, `imageToVideo` і `videoToVideo`. Плоскі агреговані поля на
кшталт `maxInputImages`, `maxInputVideos` і `maxDurationSeconds`
недостатні, щоб чисто оголошувати підтримку режимів перетворення або вимкнених режимів.
Для генерації відео віддавайте перевагу наведеній вище структурі можливостей з урахуванням режимів:
`generate`, `imageToVideo` і `videoToVideo`. Пласкі агреговані поля, такі
як `maxInputImages`, `maxInputVideos` і `maxDurationSeconds`, недостатні,
щоб коректно оголошувати підтримку режимів трансформації або вимкнені режими.
Постачальники генерації музики мають дотримуватися того самого шаблону:
`generate` для генерації лише за prompt і `edit` для генерації
на основі еталонного зображення. Плоскі агреговані поля на кшталт `maxInputImages`,
`supportsLyrics` і `supportsFormat` недостатні для оголошення підтримки редагування;
на основі референсного зображення. Пласкі агреговані поля, такі як `maxInputImages`,
`supportsLyrics` і `supportsFormat`, недостатні, щоб оголосити підтримку edit;
очікуваним контрактом є явні блоки `generate` / `edit`.
</Step>
<Step title="Протестуйте">
<Step title="Тестування">
<a id="step-6-test"></a>
```typescript src/provider.test.ts
import { describe, it, expect } from "vitest";
@ -696,45 +699,45 @@ x-i18n:
</Step>
</Steps>
## Опублікуйте в ClawHub
## Публікація в ClawHub
Плагіни постачальників публікуються так само, як і будь-який інший зовнішній кодовий плагін:
Плагіни постачальників публікуються так само, як і будь-які інші зовнішні кодові плагіни:
```bash
clawhub package publish your-org/your-plugin --dry-run
clawhub package publish your-org/your-plugin
```
Не використовуйте тут застарілий псевдонім публікації лише для Skills; пакети плагінів мають використовувати
Не використовуйте тут застарілий alias публікації лише для Skills; пакети плагінів мають використовувати
`clawhub package publish`.
## Структура файлів
```
<bundled-plugin-root>/acme-ai/
├── package.json # metadata openclaw.providers
├── openclaw.plugin.json # Маніфест із providerAuthEnvVars
├── package.json # openclaw.providers metadata
├── openclaw.plugin.json # Manifest with provider auth metadata
├── index.ts # definePluginEntry + registerProvider
└── src/
├── provider.test.ts # Тести
└── usage.ts # Endpoint usage (необов'язково)
├── provider.test.ts # Tests
└── usage.ts # Usage endpoint (optional)
```
## Довідник щодо порядку каталогів
## Довідка щодо порядку catalog
`catalog.order` визначає, коли ваш каталог зливається відносно вбудованих
`catalog.order` керує тим, коли ваш каталог об’єднується відносно вбудованих
постачальників:
| Порядок | Коли | Випадок використання |
| --------- | ------------- | ----------------------------------------------- |
| `simple` | Перший прохід | Звичайні постачальники з API-ключем |
| `profile` | Після simple | Постачальники, обмежені профілями автентифікації |
| `paired` | Після profile | Синтезувати кілька пов'язаних записів |
| `late` | Останній прохід | Перевизначити наявних постачальників (виграє при колізії) |
| Order | Коли | Випадок використання |
| --------- | ------------- | --------------------------------------------- |
| `simple` | Перший прохід | Звичайні постачальники з API key |
| `profile` | Після simple | Постачальники, прив’язані до профілів auth |
| `paired` | Після profile | Синтез кількох пов’язаних записів |
| `late` | Останній прохід | Перевизначення наявних постачальників (перемагає при конфлікті) |
## Наступні кроки
- [Channel Plugins](/uk/plugins/sdk-channel-plugins) — якщо ваш плагін також надає канал
- [SDK Runtime](/uk/plugins/sdk-runtime) — допоміжні засоби `api.runtime` (TTS, пошук, subagent)
- [SDK Overview](/uk/plugins/sdk-overview) — повний довідник імпортів subpath
- [Plugin Internals](/uk/plugins/architecture#provider-runtime-hooks) — подробиці про hooks і вбудовані приклади
- [SDK Runtime](/uk/plugins/sdk-runtime) — helper-функції `api.runtime` (TTS, search, subagent)
- [SDK Overview](/uk/plugins/sdk-overview) — повний довідник з імпорту subpath
- [Plugin Internals](/uk/plugins/architecture#provider-runtime-hooks) — деталі hooks і приклади вбудованих реалізацій