chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-10 20:26:40 +00:00
parent c0c7ed2f19
commit d1b5802b86
6 changed files with 1307 additions and 1057 deletions

View File

@ -1,41 +1,41 @@
---
read_when:
- Вам потрібен довідник із налаштування моделей для кожного постачальника окремо
- Вам потрібні приклади конфігурацій або команди CLI для початкового налаштування постачальників моделей
summary: Огляд постачальників моделей із прикладами конфігурацій і потоків CLI
- Вам потрібні приклади конфігурацій або команд онбордингу CLI для постачальників моделей
summary: Огляд постачальників моделей із прикладами конфігурацій + потоками CLI
title: Постачальники моделей
x-i18n:
generated_at: "2026-04-08T18:10:02Z"
generated_at: "2026-04-10T20:23:44Z"
model: gpt-5.4
provider: openai
source_hash: 53e3141256781002bbe1d7e7b78724a18d061fcf36a203baae04a091b8c9ea1b
source_hash: f3d50795107077c7065773b5e545fae04b97f1d932a650d577b325d93bf25192
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`, це стане allowlist.
- Допоміжні команди CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
- Резервні правила під час виконання, cooldown-перевірки та збереження перевизначень сеансу
- Резервні правила середовища виконання, перевірки cooldown і збереження session-override
задокументовано в [/concepts/model-failover](/uk/concepts/model-failover).
- `models.providers.*.models[].contextWindow` — це нативні метадані моделі;
`models.providers.*.models[].contextTokens` — це фактичне обмеження під час виконання.
- Плагіни постачальників можуть додавати каталоги моделей через `registerProvider({ catalog })`;
`models.providers.*.models[].contextTokens` — це фактичне обмеження середовища виконання.
- Плагіни постачальників можуть впроваджувати каталоги моделей через `registerProvider({ catalog })`;
OpenClaw об’єднує цей вивід у `models.providers` перед записом
`models.json`.
- Маніфести постачальників можуть оголошувати `providerAuthEnvVars` і
`providerAuthAliases`, щоб загальні перевірки автентифікації на основі env і варіанти постачальників
не потребували завантаження runtime плагіна. Решта мапи env-змінних у ядрі тепер
потрібна лише для неплагінних/вбудованих постачальників і кількох випадків із загальним пріоритетом,
як-от початкове налаштування Anthropic із пріоритетом API-ключа.
- Плагіни постачальників також можуть володіти поведінкою runtime постачальника через
`providerAuthAliases`, щоб загальні перевірки автентифікації на основі env
і варіанти постачальників не потребували завантаження середовища виконання плагіна. Решта основної мапи env-змінних тепер
використовується лише для неплагінних/основних постачальників і кількох випадків
із загальним пріоритетом, таких як онбординг Anthropic із пріоритетом API-ключа.
- Плагіни постачальників також можуть володіти поведінкою середовища виконання постачальника через
`normalizeModelId`, `normalizeTransport`, `normalizeConfig`,
`applyNativeStreamingUsageCompat`, `resolveConfigApiKey`,
`resolveSyntheticAuth`, `shouldDeferSyntheticProfileAuth`,
@ -53,175 +53,179 @@ x-i18n:
`resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`,
`prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, і
`onModelSelected`.
- Примітка: `capabilities` runtime постачальника — це спільні метадані виконавця (сімейство постачальника,
особливості транскрипту/інструментів, підказки щодо транспорту/кешу). Це не те саме,
що [публічна модель можливостей](/uk/plugins/architecture#public-capability-model),
- Примітка: runtime `capabilities` постачальника — це спільні метадані виконувача (сімейство постачальника, особливості стенограми/інструментів, підказки щодо транспорту/кешу). Це не те
саме, що [публічна модель можливостей](/uk/plugins/architecture#public-capability-model),
яка описує, що реєструє плагін (текстовий inference, мовлення тощо).
- Вбудований постачальник `codex` працює в парі з вбудованим агентним середовищем Codex.
Використовуйте `codex/gpt-*`, коли вам потрібні керований Codex вхід, виявлення моделей, нативне
відновлення thread і виконання app-server. Звичайні посилання `openai/gpt-*` і надалі
використовують постачальника OpenAI та стандартний транспорт постачальників OpenClaw.
## Поведінка постачальника, якою володіє плагін
## Поведінка постачальників, якою володіє плагін
Тепер плагіни постачальників можуть володіти більшістю специфічної логіки постачальника, тоді як OpenClaw зберігає
Плагіни постачальників тепер можуть володіти більшістю специфічної для постачальника логіки, тоді як OpenClaw зберігає
загальний цикл inference.
Типовий поділ:
- `auth[].run` / `auth[].runNonInteractive`: постачальник володіє потоками початкового налаштування/входу
- `auth[].run` / `auth[].runNonInteractive`: постачальник володіє потоками онбордингу/входу
для `openclaw onboard`, `openclaw models auth` і безголового налаштування
- `wizard.setup` / `wizard.modelPicker`: постачальник володіє мітками вибору автентифікації,
застарілими псевдонімами, підказками щодо списку дозволених моделей для початкового налаштування і записами налаштування в пікерах онбордингу/моделей
застарілими псевдонімами, підказками allowlist для онбордингу та записами
налаштування в засобах вибору онбордингу/моделей
- `catalog`: постачальник з’являється в `models.providers`
- `normalizeModelId`: постачальник нормалізує застарілі/preview ідентифікатори моделей перед
пошуком або канонізацією
- `normalizeTransport`: постачальник нормалізує `api` / `baseUrl` сімейства транспорту
перед загальним збиранням моделі; OpenClaw спершу перевіряє відповідного постачальника,
перед загальним складанням моделі; OpenClaw спочатку перевіряє відповідного постачальника,
потім інші плагіни постачальників із підтримкою хуків, доки один із них справді не змінить
транспорт
- `normalizeConfig`: постачальник нормалізує конфігурацію `models.providers.<id>` перед тим,
як runtime її використає; OpenClaw спершу перевіряє відповідного постачальника, потім інші
- `normalizeConfig`: постачальник нормалізує конфігурацію `models.providers.<id>` перед
використанням у середовищі виконання; OpenClaw спочатку перевіряє відповідного постачальника, потім інші
плагіни постачальників із підтримкою хуків, доки один із них справді не змінить конфігурацію. Якщо жоден
хук постачальника не переписує конфігурацію, вбудовані допоміжні засоби для сімейства Google
усе одно нормалізують підтримувані записи постачальників Google.
- `applyNativeStreamingUsageCompat`: постачальник застосовує сумісні переписування native streaming-usage, керовані endpoint, для конфігурованих постачальників
- `resolveConfigApiKey`: постачальник визначає автентифікацію через env-маркери для конфігурованих постачальників
без примусового завантаження повної runtime-автентифікації. `amazon-bedrock` також має
вбудований resolver AWS env-marker тут, хоча runtime-автентифікація Bedrock використовує
хук постачальника не переписує конфігурацію, вбудовані допоміжні засоби сімейства Google все одно
нормалізують підтримувані записи постачальників Google.
- `applyNativeStreamingUsageCompat`: постачальник застосовує переписування сумісності native streaming-usage на основі endpoint для конфігурованих постачальників
- `resolveConfigApiKey`: постачальник визначає автентифікацію маркерів env для конфігурованих постачальників
без примусового повного завантаження runtime-автентифікації. `amazon-bedrock` також має
тут вбудований розв’язувач маркерів AWS env, хоча runtime-автентифікація Bedrock використовує
стандартний ланцюжок AWS SDK.
- `resolveSyntheticAuth`: постачальник може показувати доступність локальної/self-hosted або іншої
автентифікації на основі конфігурації без збереження секретів у відкритому вигляді
- `shouldDeferSyntheticProfileAuth`: постачальник може позначати збережені синтетичні заповнювачі профілів
як менш пріоритетні, ніж автентифікація на основі env/конфігурації
- `resolveSyntheticAuth`: постачальник може надавати доступність локальної/self-hosted або іншої
автентифікації на основі конфігурації без збереження відкритих секретів
- `shouldDeferSyntheticProfileAuth`: постачальник може позначати збережені synthetic profile
placeholders як нижчі за пріоритетом, ніж автентифікація на основі env/конфігурації
- `resolveDynamicModel`: постачальник приймає ідентифікатори моделей, яких ще немає в локальному
статичному каталозі
- `prepareDynamicModel`: постачальнику потрібно оновлення метаданих перед повторною спробою
- `prepareDynamicModel`: постачальнику потрібне оновлення метаданих перед повторною спробою
динамічного визначення
- `normalizeResolvedModel`: постачальнику потрібні переписування транспорту або base URL
- `contributeResolvedModelCompat`: постачальник додає прапори сумісності для своїх
вендорських моделей, навіть коли вони надходять через інший сумісний транспорт
- `capabilities`: постачальник публікує особливості транскрипту/інструментів/сімейства постачальника
- `normalizeToolSchemas`: постачальник очищає схеми інструментів, перш ніж вбудований
виконавець їх побачить
- `inspectToolSchemas`: постачальник показує специфічні для транспорту попередження про схеми
вендорських моделей, навіть якщо вони надходять через інший сумісний транспорт
- `capabilities`: постачальник публікує особливості стенограми/інструментів/сімейства постачальника
- `normalizeToolSchemas`: постачальник очищає схеми інструментів перед тим, як вбудований
виконувач їх побачить
- `inspectToolSchemas`: постачальник показує попередження про схеми, специфічні для транспорту,
після нормалізації
- `resolveReasoningOutputMode`: постачальник обирає нативні чи теговані
- `resolveReasoningOutputMode`: постачальник вибирає нативні або теговані
контракти виводу reasoning
- `prepareExtraParams`: постачальник задає значення за замовчуванням або нормалізує параметри запиту для кожної моделі
- `createStreamFn`: постачальник замінює звичайний шлях потоку на повністю
власний транспорт
- `wrapStreamFn`: постачальник застосовує обгортки сумісності для заголовків/тіла/моделі запиту
- `resolveTransportTurnState`: постачальник надає нативні заголовки транспорту
або метадані на кожен хід
- `prepareExtraParams`: постачальник задає типові або нормалізує параметри запиту для кожної моделі
- `createStreamFn`: постачальник замінює звичайний шлях stream повністю
користувацьким транспортом
- `wrapStreamFn`: постачальник застосовує обгортки сумісності для заголовків/тіла запиту/моделі
- `resolveTransportTurnState`: постачальник надає нативні транспортні
заголовки або метадані для кожного ходу
- `resolveWebSocketSessionPolicy`: постачальник надає нативні заголовки сесії WebSocket
або політику cool-down сесії
- `createEmbeddingProvider`: постачальник володіє поведінкою embedding для пам’яті, коли вона
має належати плагіну постачальника, а не вбудованому комутатору embedding
- `formatApiKey`: постачальник форматує збережені профілі автентифікації у runtime-рядок
`apiKey`, очікуваний транспортом
- `refreshOAuth`: постачальник володіє оновленням OAuth, коли спільних
засобів оновлення `pi-ai` недостатньо
- `buildAuthDoctorHint`: постачальник додає вказівки з відновлення, коли оновлення OAuth
- `createEmbeddingProvider`: постачальник володіє поведінкою memory embedding, коли вона
належить плагіну постачальника, а не основному комутатору embedding
- `formatApiKey`: постачальник форматує збережені профілі автентифікації у runtime
рядок `apiKey`, очікуваний транспортом
- `refreshOAuth`: постачальник володіє оновленням OAuth, коли спільних оновлювачів `pi-ai`
недостатньо
- `buildAuthDoctorHint`: постачальник додає рекомендації з виправлення, коли оновлення OAuth
не вдається
- `matchesContextOverflowError`: постачальник розпізнає специфічні для постачальника
помилки переповнення context window, які загальні евристики пропустили б
- `classifyFailoverReason`: постачальник зіставляє специфічні для постачальника сирі помилки транспорту/API
з причинами failover, такими як rate limit або overload
- `isCacheTtlEligible`: постачальник вирішує, які upstream ідентифікатори моделей підтримують prompt-cache TTL
помилки переповнення вікна контексту, які загальні евристики пропустили б
- `classifyFailoverReason`: постачальник зіставляє специфічні для постачальника сирі транспортні/API
помилки з причинами failover, такими як rate limit або overload
- `isCacheTtlEligible`: постачальник визначає, які upstream ідентифікатори моделей підтримують prompt-cache TTL
- `buildMissingAuthMessage`: постачальник замінює загальну помилку сховища автентифікації
специфічною для постачальника підказкою щодо відновлення
- `suppressBuiltInModel`: постачальник приховує застарілі upstream-рядки і може повертати
помилку, яка належить вендору, для прямих збоїв визначення
- `augmentModelCatalog`: постачальник додає синтетичні/фінальні рядки каталогу після
на специфічну для постачальника підказку з відновлення
- `suppressBuiltInModel`: постачальник приховує застарілі upstream рядки та може повертати
помилку, що належить вендору, для прямих збоїв визначення
- `augmentModelCatalog`: постачальник додає synthetic/final рядки каталогу після
виявлення та об’єднання конфігурації
- `isBinaryThinking`: постачальник володіє UX бінарного thinking увімк./вимк.
- `supportsXHighThinking`: постачальник вмикає `xhigh` для вибраних моделей
- `resolveDefaultThinkingLevel`: постачальник володіє політикою `/think` за замовчуванням для
- `isBinaryThinking`: постачальник володіє UX для бінарного вмикання/вимикання thinking
- `supportsXHighThinking`: постачальник додає вибраним моделям підтримку `xhigh`
- `resolveDefaultThinkingLevel`: постачальник володіє типовою політикою `/think` для
сімейства моделей
- `applyConfigDefaults`: постачальник застосовує глобальні значення за замовчуванням, специфічні для постачальника,
- `applyConfigDefaults`: постачальник застосовує глобальні типові значення, специфічні для постачальника,
під час матеріалізації конфігурації на основі режиму автентифікації, env або сімейства моделей
- `isModernModelRef`: постачальник володіє зіставленням бажаних live/smoke моделей
- `isModernModelRef`: постачальник володіє зіставленням бажаних моделей для live/smoke
- `prepareRuntimeAuth`: постачальник перетворює налаштовані облікові дані на короткоживучий
runtime-токен
- `resolveUsageAuth`: постачальник визначає облікові дані використання/квот для `/usage`
і пов’язаних поверхонь статусу/звітності
- `fetchUsageSnapshot`: постачальник володіє отриманням/розбором endpoint використання, тоді як
ядро все ще володіє оболонкою зведення та форматуванням
- `onModelSelected`: постачальник виконує побічні дії після вибору моделі, такі як
телеметрія або керування сеансом, що належить постачальнику
- `resolveUsageAuth`: постачальник визначає облікові дані usage/quota для `/usage`
та пов’язаних поверхонь стану/звітності
- `fetchUsageSnapshot`: постачальник володіє отриманням/розбором endpoint usage, тоді як
core і далі володіє оболонкою підсумку та форматуванням
- `onModelSelected`: постачальник виконує побічні ефекти після вибору моделі, такі як
телеметрія або облік сесій, що належить постачальнику
Поточні вбудовані приклади:
- `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
endpoint usage, метадані cache-TTL/сімейства постачальника та глобальні
типові значення конфігурації з урахуванням автентифікації
- `amazon-bedrock`: зіставлення переповнення контексту, яким володіє постачальник, і класифікація
причин failover для специфічних помилок Bedrock throttle/not-ready, а також
спільне сімейство повторного відтворення `anthropic-by-model` для захистів політики повторного відтворення
лише для Claude у трафіку Anthropic
- `anthropic-vertex`: захисти політики повторного відтворення лише для Claude в трафіку
повідомлень Anthropic
- `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`
санітизація Gemini thought-signature у проксійованому трафіку Gemini, впровадження proxy
reasoning через сімейство потоків `openrouter-thinking`, пересилання
метаданих маршрутизації та політика cache-TTL
- `github-copilot`: онбординг/вхід за пристроєм, резервна сумісність уперед для моделей,
підказки Claude-thinking для стенограм, обмін runtime-токенів і отримання
endpoint usage
- `openai`: резервна сумісність уперед для GPT-5.4, нормалізація прямого транспорту
OpenAI, підказки про відсутню автентифікацію з урахуванням Codex, придушення Spark, synthetic
рядки каталогу OpenAI/Codex, політика thinking/live-model, нормалізація псевдонімів usage-token
(`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 також
володіє форматуванням токенів профілю автентифікації, розбором токенів використання та отриманням
endpoint квот для поверхонь використання
- `moonshot`: спільний транспорт, нормалізація payload thinking, що належить плагіну
- `kilocode`: спільний транспорт, заголовки запитів, що належать плагіну, нормалізація payload reasoning,
очищення thought-signature proxy-Gemini і політика cache-TTL
- `zai`: резервна сумісність уперед для GLM-5, значення за замовчуванням `tool_stream`, політика cache-TTL,
політика binary-thinking/live-model і автентифікація використання + отримання квот;
нативна перевірка повторного відтворення Gemini, санітизація bootstrap replay, тегований
режим виводу reasoning, зіставлення сучасних моделей, реєстрація вбудованого постачальника
генерації зображень для моделей Gemini image-preview і вбудована
реєстрація постачальника генерації відео для моделей Veo; Gemini CLI OAuth також
володіє форматуванням токенів профілю автентифікації, розбором usage-token і отриманням
endpoint квот для поверхонь usage
- `moonshot`: спільний транспорт, нормалізація payload thinking, якою володіє плагін
- `kilocode`: спільний транспорт, заголовки запитів, якими володіє плагін, нормалізація payload reasoning,
санітизація proxy-Gemini thought-signature і політика cache-TTL
- `zai`: резервна сумісність уперед для GLM-5, типові значення `tool_stream`, політика cache-TTL,
політика binary-thinking/live-model і usage auth + отримання квот;
невідомі ідентифікатори `glm-5*` синтезуються з вбудованого шаблону `glm-4.7`
- `xai`: нативна нормалізація транспорту Responses, переписування псевдонімів `/fast` для
швидких варіантів Grok, значення за замовчуванням `tool_stream`, очищення схем інструментів /
payload reasoning для xAI і вбудована реєстрація постачальника генерації відео
швидких варіантів Grok, типовий `tool_stream`, очищення схем інструментів /
payload reasoning, специфічне для xAI, і реєстрація вбудованого постачальника генерації відео
для `grok-imagine-video`
- `mistral`: метадані можливостей, що належать плагіну
- `opencode` і `opencode-go`: метадані можливостей, що належать плагіну, плюс
очищення thought-signature proxy-Gemini
- `alibaba`: каталог генерації відео, що належить плагіну, для прямих посилань на моделі Wan,
як-от `alibaba/wan2.6-t2v`
- `byteplus`: каталоги, що належать плагіну, плюс вбудована реєстрація постачальника генерації відео
- `mistral`: метадані можливостей, якими володіє плагін
- `opencode` і `opencode-go`: метадані можливостей, якими володіє плагін, плюс
санітизація proxy-Gemini thought-signature
- `alibaba`: каталог генерації відео, яким володіє плагін, для прямих посилань на моделі Wan,
таких як `alibaba/wan2.6-t2v`
- `byteplus`: каталоги, якими володіє плагін, плюс реєстрація вбудованого постачальника генерації відео
для моделей Seedance text-to-video/image-to-video
- `fal`: вбудована реєстрація постачальника генерації відео для hosted third-party
реєстрація постачальника генерації зображень для моделей FLUX image плюс вбудована
реєстрація постачальника генерації відео для hosted third-party video models
- `fal`: реєстрація вбудованого постачальника генерації відео для розміщених сторонніх
моделей, реєстрація постачальника генерації зображень для моделей FLUX плюс вбудована
реєстрація постачальника генерації відео для розміщених сторонніх відеомоделей
- `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`,
`stepfun`, `synthetic`, `venice`, `vercel-ai-gateway` і `volcengine`:
лише каталоги, що належать плагіну
- `qwen`: каталоги, що належать плагіну, для текстових моделей плюс спільні
реєстрації постачальників media-understanding і video-generation для його
мультимодальних поверхонь; генерація відео Qwen використовує стандартні відеоendpoint DashScope
з вбудованими моделями Wan, такими як `wan2.6-t2v` і `wan2.7-r2v`
- `runway`: реєстрація постачальника генерації відео, що належить плагіну, для нативних
моделей Runway на основі задач, таких як `gen4.5`
- `minimax`: каталоги, що належать плагіну, вбудована реєстрація постачальника генерації відео
лише каталоги, якими володіє плагін
- `qwen`: каталоги текстових моделей, якими володіє плагін, плюс спільні
реєстрації постачальників media-understanding і генерації відео для його
мультимодальних поверхонь; генерація відео Qwen використовує стандартні відеоendpoint DashScope
зі вбудованими моделями Wan, такими як `wan2.6-t2v` і `wan2.7-r2v`
- `runway`: реєстрація постачальника генерації відео, якою володіє плагін, для нативних
task-based моделей Runway, таких як `gen4.5`
- `minimax`: каталоги, якими володіє плагін, вбудована реєстрація постачальника генерації відео
для відеомоделей Hailuo, вбудована реєстрація постачальника генерації зображень
для `image-01`, гібридний вибір політики replay Anthropic/OpenAI і логіка
автентифікації/знімків використання
- `together`: каталоги, що належать плагіну, плюс вбудована реєстрація постачальника генерації відео
для `image-01`, гібридний вибір політики повторного відтворення Anthropic/OpenAI
і логіка auth/snapshot usage
- `together`: каталоги, якими володіє плагін, плюс вбудована реєстрація постачальника генерації відео
для відеомоделей Wan
- `xiaomi`: каталоги, що належать плагіну, плюс логіка автентифікації/знімків використання
- `xiaomi`: каталоги, якими володіє плагін, плюс логіка auth/snapshot usage
Тепер вбудований плагін `openai` володіє обома ідентифікаторами постачальника: `openai` і
Вбудований плагін `openai` тепер володіє обома ідентифікаторами постачальників: `openai` і
`openai-codex`.
Це охоплює постачальників, які все ще вписуються в нормальні транспорти OpenClaw. Постачальник,
якому потрібен повністю власний виконавець запитів, — це окрема, глибша поверхня розширення.
Це охоплює постачальників, які все ще відповідають звичайним транспортам OpenClaw. Постачальник,
якому потрібен повністю користувацький виконувач запитів, — це окрема, глибша поверхня розширення.
## Ротація API-ключів
@ -231,19 +235,19 @@ x-i18n:
- `<PROVIDER>_API_KEYS` (список через кому або крапку з комою)
- `<PROVIDER>_API_KEY` (основний ключ)
- `<PROVIDER>_API_KEY_*` (нумерований список, наприклад `<PROVIDER>_API_KEY_1`)
- Для постачальників Google `GOOGLE_API_KEY` також включено як резервний варіант.
- Для постачальників 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, завершуються негайно; ротація ключів не виконується.
- Коли всі кандидатні ключі зазнають невдачі, повертається фінальна помилка з останньої спроби.
`workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміт usage).
- Збої, не пов’язані з rate limit, завершуються одразу; ротація ключів не виконується.
- Якщо всі кандидатні ключі не спрацювали, повертається остання помилка з останньої спроби.
## Вбудовані постачальники (каталог pi-ai)
OpenClaw постачається з каталогом piai. Для цих постачальників **не потрібна**
конфігурація `models.providers`; достатньо налаштувати автентифікацію та вибрати модель.
OpenClaw постачається з каталогом piai. Ці постачальники **не**
потребують конфігурації `models.providers`; просто налаштуйте автентифікацію й виберіть модель.
### OpenAI
@ -252,18 +256,18 @@ OpenClaw постачається з каталогом piai. Для цих
- Необов’язкова ротація: `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"`)
- Warm-up OpenAI Responses WebSocket за замовчуванням увімкнено через `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` зіставляють прямі запити Responses `openai/*` з `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`, а не
`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
формування payload для сумісності reasoning OpenAI; проксі-маршрути цього не роблять
- `openai/gpt-5.3-codex-spark` навмисно приглушено в OpenClaw, оскільки live API OpenAI його відхиляє; Spark вважається лише Codex
```json5
{
@ -278,9 +282,9 @@ OpenClaw постачається з каталогом piai. Для цих
- Необов’язкова ротація: `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 setup-token і надалі доступний як підтримуваний шлях токена OpenClaw, але тепер OpenClaw віддає перевагу повторному використанню Claude CLI і `claude -p`, коли це можливо.
```json5
{
@ -294,16 +298,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"`)
- Типовий транспорт — `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 на
`chatgpt.com/backend-api`, а не до загальних OpenAI-сумісних проксі
- Використовує той самий перемикач `/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.
- Має той самий спільний перемикач `/fast` і конфігурацію `params.fastMode`, що й прямий `openai/*`; OpenClaw зіставляє це з `service_tier=priority`
- `openai-codex/gpt-5.3-codex-spark` і далі доступний, коли каталог Codex OAuth його показує; залежить від entitlement
- `openai-codex/gpt-5.4` зберігає нативні `contextWindow = 1050000` і типові runtime `contextTokens = 272000`; перевизначте runtime-ліміт через `models.providers.openai-codex.models[].contextTokens`
- Примітка щодо політики: OAuth OpenAI Codex явно підтримується для зовнішніх інструментів/робочих процесів, таких як OpenClaw.
```json5
{
@ -325,9 +329,9 @@ OpenClaw постачається з каталогом piai. Для цих
### Інші розміщені варіанти у стилі підписки
- [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 endpoint
- [Qwen Cloud](/uk/providers/qwen): поверхня постачальника Qwen Cloud плюс зіставлення endpoint-ів Alibaba DashScope і Coding Plan
- [MiniMax](/uk/providers/minimax): доступ через OAuth або API-ключ MiniMax Coding Plan
- [GLM Models](/uk/providers/glm): endpoint-и Z.AI Coding Plan або загальні API
### OpenCode
@ -347,31 +351,31 @@ 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/...`; cache hit-и Gemini відображаються як OpenClaw `cacheRead`
### Google Vertex і Gemini CLI
- Постачальники: `google-vertex`, `google-gemini-cli`
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує власний OAuth-потік
- Обережно: OAuth Gemini CLI в OpenClaw — це неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікових записів Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- OAuth Gemini CLI постачається як частина вбудованого плагіна `google`.
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує свій потік OAuth
- Увага: Gemini CLI OAuth в OpenClaw — це неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікового запису Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- Gemini CLI OAuth постачається як частина вбудованого плагіна `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`
- Типова модель: `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`.
токени в профілях автентифікації на хості шлюзу.
- Якщо після входу запити не працюють, встановіть `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості шлюзу.
- JSON-відповіді Gemini CLI розбираються з `response`; usage резервно береться з
`stats`, а `stats.cached` нормалізується до OpenClaw `cacheRead`.
### Z.AI (GLM)
@ -396,37 +400,38 @@ OpenClaw постачається з каталогом piai. Для цих
- Приклад моделі: `kilocode/kilo/auto`
- CLI: `openclaw onboard --auth-choice kilocode-api-key`
- Base URL: `https://api.kilo.ai/api/gateway/`
- Статичний резервний каталог постачається з `kilocode/kilo/auto`; live
виявлення `https://api.kilo.ai/api/gateway/models` може додатково розширити runtime-каталог.
- Статичний запасний каталог постачається з `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 заголовки атрибуції застосунку лише тоді, коли
- OpenClaw застосовує задокументовані заголовки атрибуції застосунку OpenRouter лише тоді, коли
запит справді спрямовано на `openrouter.ai`
- Специфічні для OpenRouter маркери Anthropic `cache_control` так само обмежені
- Специфічні для OpenRouter маркери Anthropic `cache_control` так само обмежуються
перевіреними маршрутами OpenRouter, а не довільними URL проксі
- OpenRouter залишається на проксі-подібному OpenAI-сумісному шляху, тому нативне
- OpenRouter і далі працює на шляху проксі-стилю, сумісному з OpenAI, тож нативне
формування запитів лише для OpenAI (`serviceTier`, Responses `store`,
підказки prompt-cache, payload сумісності reasoning OpenAI) не пересилається
- Посилання OpenRouter на основі Gemini зберігають лише очищення thought-signature proxy-Gemini;
нативна перевірка replay Gemini і bootstrap-переписування залишаються вимкненими
підказки prompt-cache, payload сумісності reasoning OpenAI) не пересилається
- Посилання OpenRouter на базі Gemini зберігають лише шлях санітизації proxy-Gemini thought-signature;
нативна перевірка повторного відтворення Gemini та переписування bootstrap залишаються вимкненими
- Kilo Gateway: `kilocode` (`KILOCODE_API_KEY`)
- Приклад моделі: `kilocode/kilo/auto`
- Посилання Kilo на основі Gemini зберігають той самий шлях очищення thought-signature
proxy-Gemini; `kilocode/kilo/auto` та інші підказки про непідтримку proxy-reasoning
пропускають ін’єкцію proxy reasoning
- Посилання Kilo на базі Gemini зберігають той самий шлях
санітизації proxy-Gemini thought-signature; `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`
- Початкове налаштування/API-ключ MiniMax записує явні визначення моделі M2.7 з
`input: ["text", "image"]`; вбудований каталог постачальника зберігає chat-посилання
лише текстовими, доки конфігурацію цього постачальника не буде матеріалізовано
- Онбординг MiniMax/налаштування API-ключа записує явні визначення моделі M2.7 з
`input: ["text", "image"]`; вбудований каталог постачальника зберігає chat refs
лише текстовими, доки не буде матеріалізовано конфігурацію цього постачальника
- Moonshot: `moonshot` (`MOONSHOT_API_KEY`)
- Приклад моделі: `moonshot/kimi-k2.5`
- Kimi Coding: `kimi` (`KIMI_API_KEY` або `KIMICODE_API_KEY`)
@ -455,32 +460,32 @@ OpenClaw постачається з каталогом piai. Для цих
- Нативні вбудовані запити 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`
- CLI: `openclaw onboard --auth-choice mistral-api-key`
- Groq: `groq` (`GROQ_API_KEY`)
- Cerebras: `cerebras` (`CEREBRAS_API_KEY`)
- Моделі GLM на Cerebras використовують ідентифікатори `zai-glm-4.7` і `zai-glm-4.6`.
- OpenAI-сумісний base URL: `https://api.cerebras.ai/v1`.
- Моделі GLM у Cerebras використовують ідентифікатори `zai-glm-4.7` і `zai-glm-4.6`.
- Base URL, сумісний з OpenAI: `https://api.cerebras.ai/v1`.
- GitHub Copilot: `github-copilot` (`COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN`)
- Приклад моделі Hugging Face Inference: `huggingface/deepseek-ai/DeepSeek-R1`; CLI: `openclaw onboard --auth-choice huggingface-api-key`. Див. [Hugging Face (Inference)](/uk/providers/huggingface).
## Постачальники через `models.providers` (custom/base URL)
## Постачальники через `models.providers` (користувацький/base URL)
Використовуйте `models.providers` (або `models.json`), щоб додати **власних** постачальників або
OpenAI/Anthropicсумісні проксі.
Використовуйте `models.providers` (або `models.json`), щоб додати **користувацьких** постачальників або
OpenAI/Anthropic-сумісні проксі.
Багато з наведених нижче вбудованих плагінів постачальників уже публікують каталог за замовчуванням.
Багато з наведених нижче вбудованих плагінів постачальників уже публікують типовий каталог.
Використовуйте явні записи `models.providers.<id>` лише тоді, коли хочете перевизначити
base URL, заголовки або список моделей за замовчуванням.
типовий base URL, заголовки або список моделей.
### Moonshot AI (Kimi)
Moonshot постачається як вбудований плагін постачальника. Використовуйте вбудованого постачальника
за замовчуванням і додавайте явний запис `models.providers.moonshot` лише тоді, коли
Moonshot постачається як вбудований плагін постачальника. Типово використовуйте вбудованого постачальника,
і додавайте явний запис `models.providers.moonshot` лише тоді, коли
потрібно перевизначити base URL або метадані моделі:
- Постачальник: `moonshot`
@ -541,7 +546,7 @@ Kimi Coding використовує Anthropic-сумісний endpoint Moonsho
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`
@ -554,13 +559,13 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
}
```
Початкове налаштування за замовчуванням використовує поверхню coding, але загальний каталог `volcengine/*`
Онбординг типово використовує coding surface, але загальний каталог `volcengine/*`
реєструється одночасно.
У пікерах моделей під час початкового налаштування/конфігурування вибір автентифікації Volcengine віддає перевагу і рядкам
У засобах вибору моделей для онбордингу/налаштування вибір автентифікації Volcengine віддає перевагу і рядкам
`volcengine/*`, і `volcengine-plan/*`. Якщо ці моделі ще не завантажено,
OpenClaw повертається до нефільтрованого каталогу замість того, щоб показувати порожній
пікер у межах постачальника.
OpenClaw повертається до нефільтрованого каталогу замість показу порожнього
засобу вибору в межах постачальника.
Доступні моделі:
@ -570,7 +575,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`
@ -582,7 +587,7 @@ OpenClaw повертається до нефільтрованого катал
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`
@ -595,13 +600,13 @@ BytePlus ARK надає міжнародним користувачам дост
}
```
Початкове налаштування за замовчуванням використовує поверхню coding, але загальний каталог `byteplus/*`
Онбординг типово використовує coding surface, але загальний каталог `byteplus/*`
реєструється одночасно.
У пікерах моделей під час початкового налаштування/конфігурування вибір автентифікації BytePlus віддає перевагу і рядкам
У засобах вибору моделей для онбордингу/налаштування вибір автентифікації BytePlus віддає перевагу і рядкам
`byteplus/*`, і `byteplus-plan/*`. Якщо ці моделі ще не завантажено,
OpenClaw повертається до нефільтрованого каталогу замість того, щоб показувати порожній
пікер у межах постачальника.
OpenClaw повертається до нефільтрованого каталогу замість показу порожнього
засобу вибору в межах постачальника.
Доступні моделі:
@ -609,7 +614,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`
@ -647,36 +652,36 @@ Synthetic надає Anthropic-сумісні моделі через поста
### MiniMax
MiniMax налаштовується через `models.providers`, оскільки використовує власні endpoint:
MiniMax налаштовується через `models.providers`, оскільки використовує користувацькі endpoint-и:
- 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 OAuth (Global): `--auth-choice minimax-global-oauth`
- MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth`
- MiniMax API-ключ (Global): `--auth-choice minimax-global-api`
- MiniMax API-ключ (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-сумісному streaming-шляху MiniMax OpenClaw вимикає thinking за
замовчуванням, якщо ви явно його не задасте, а `/fast on` переписує
На Anthropic-сумісному streaming path MiniMax OpenClaw типово вимикає thinking,
якщо ви не ввімкнете його явно, а `/fast on` переписує
`MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
Поділ можливостей, якими володіє плагін:
- Значення за замовчуванням для тексту/чату залишаються на `minimax/MiniMax-M2.7`
- Типові значення text/chat залишаються на `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
# Встановіть Ollama, потім завантажте модель:
@ -691,26 +696,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:
OpenAI-сумісних серверів:
- Постачальник: `vllm`
- Автентифікація: необов’язкова (залежить від вашого сервера)
- Base URL за замовчуванням: `http://127.0.0.1:8000/v1`
- Типовий base URL: `http://127.0.0.1:8000/v1`
Щоб увімкнути автоматичне локальне виявлення (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
Щоб увімкнути локальне auto-discovery (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
```bash
export VLLM_API_KEY="vllm-local"
```
Потім задайте модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
Потім установіть модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
```json5
{
@ -720,25 +725,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`
Щоб увімкнути автоматичне локальне виявлення (підійде будь-яке значення, якщо ваш сервер не
Щоб увімкнути локальне auto-discovery (підійде будь-яке значення, якщо ваш сервер не
вимагає автентифікації):
```bash
export SGLANG_API_KEY="sglang-local"
```
Потім задайте модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
Потім установіть модель (замініть на один з ідентифікаторів, які повертає `/v1/models`):
```json5
{
@ -748,7 +753,7 @@ export SGLANG_API_KEY="sglang-local"
}
```
Деталі див. у [/providers/sglang](/uk/providers/sglang).
Докладніше див. у [/providers/sglang](/uk/providers/sglang).
### Локальні проксі (LM Studio, vLLM, LiteLLM тощо)
@ -771,7 +776,7 @@ export SGLANG_API_KEY="sglang-local"
models: [
{
id: "my-local-model",
name: "Local Model",
name: "Локальна модель",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
@ -787,21 +792,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"` на ненативних endpoint (будь-який непорожній `baseUrl`, хост якого не є `api.openai.com`) OpenClaw примусово встановлює `compat.supportsDeveloperRole: false`, щоб уникати помилок постачальника 400 для непідтримуваних ролей `developer`.
- Маршрути проксі-подібного OpenAI-сумісного типу також пропускають нативне формування запитів лише для OpenAI:
- Рекомендовано: установлюйте явні значення, що відповідають лімітам вашого проксі/моделі.
- Для `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 і без прихованих заголовків
формування payload для сумісності reasoning OpenAI і без прихованих заголовків
атрибуції OpenClaw.
- Якщо `baseUrl` порожній/не вказаний, OpenClaw зберігає типову поведінку OpenAI (яка вказує на `api.openai.com`).
- З міркувань безпеки явне `compat.supportsDeveloperRole: true` все одно перевизначається на ненативних endpoint `openai-completions`.
- Якщо `baseUrl` порожній або не вказаний, OpenClaw зберігає типову поведінку OpenAI (яка спрямовується на `api.openai.com`).
- З міркувань безпеки явне `compat.supportsDeveloperRole: true` усе одно перевизначається на ненативних endpoint-ах `openai-completions`.
## Приклади CLI
@ -811,11 +816,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) — посібники з налаштування для кожного постачальника
- [Model Failover](/uk/concepts/model-failover) — ланцюжки резервування та поведінка повторних спроб
- [Configuration Reference](/uk/gateway/configuration-reference#agent-defaults) — ключі конфігурації моделей
- [Providers](/uk/providers) — посібники з налаштування для окремих постачальників

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,192 @@
---
read_when:
- Ви змінюєте вбудоване середовище виконання агента або реєстр каркаса
- Ви реєструєте каркас агента з вбудованого або довіреного плагіна
- Вам потрібно зрозуміти, як плагін Codex пов’язаний із постачальниками моделей
sidebarTitle: Agent Harness
summary: Експериментальна поверхня SDK для плагінів, які замінюють низькорівневий вбудований виконавець агента
title: Плагіни каркаса агента
x-i18n:
generated_at: "2026-04-10T20:23:46Z"
model: gpt-5.4
provider: openai
source_hash: ba482dd6a2e4730c2d623b4739e2e6037cec8bb71bf7164b4e9d7ea8e43056d8
source_path: plugins/sdk-agent-harness.md
workflow: 15
---
# Плагіни каркаса агента
**Каркас агента** — це низькорівневий виконавець одного підготовленого ходу агента OpenClaw. Це не постачальник моделей, не канал і не реєстр інструментів.
Використовуйте цю поверхню лише для вбудованих або довірених нативних плагінів. Контракт усе ще є експериментальним, оскільки типи параметрів навмисно віддзеркалюють поточний вбудований раннер.
## Коли використовувати каркас
Реєструйте каркас агента, коли сімейство моделей має власне нативне середовище виконання сесій і звичайний транспорт постачальника OpenClaw є неправильною абстракцією.
Приклади:
- нативний сервер агента для кодування, який керує потоками та компакцією
- локальний CLI або демон, який має потоково передавати нативні події плану, міркувань і інструментів
- середовище виконання моделі, якому потрібен власний resume id на додачу до транскрипту сесії OpenClaw
**Не** реєструйте каркас лише для того, щоб додати новий LLM API. Для звичайних HTTP або WebSocket API моделей створіть [плагін постачальника](/uk/plugins/sdk-provider-plugins).
## Чим усе ще керує ядро
До того, як буде вибрано каркас, OpenClaw уже визначив:
- постачальника й модель
- стан автентифікації середовища виконання
- рівень міркувань і бюджет контексту
- файл транскрипту/сесії OpenClaw
- робочий простір, пісочницю та політику інструментів
- колбеки відповіді каналу та колбеки потокової передачі
- політику резервного перемикання моделей і перемикання живої моделі
Цей поділ є навмисним. Каркас виконує підготовлену спробу; він не вибирає постачальників, не замінює доставлення каналу й не перемикає моделі непомітно.
## Зареєструвати каркас
**Імпорт:** `openclaw/plugin-sdk/agent-harness`
```typescript
import type { AgentHarness } from "openclaw/plugin-sdk/agent-harness";
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
const myHarness: AgentHarness = {
id: "my-harness",
label: "My native agent harness",
supports(ctx) {
return ctx.provider === "my-provider"
? { supported: true, priority: 100 }
: { supported: false };
},
async runAttempt(params) {
// Start or resume your native thread.
// Use params.prompt, params.tools, params.images, params.onPartialReply,
// params.onAgentEvent, and the other prepared attempt fields.
return await runMyNativeTurn(params);
},
};
export default definePluginEntry({
id: "my-native-agent",
name: "My Native Agent",
description: "Runs selected models through a native agent daemon.",
register(api) {
api.registerAgentHarness(myHarness);
},
});
```
## Політика вибору
OpenClaw вибирає каркас після визначення постачальника/моделі:
1. `OPENCLAW_AGENT_RUNTIME=<id>` примусово вибирає зареєстрований каркас із цим id.
2. `OPENCLAW_AGENT_RUNTIME=pi` примусово вибирає вбудований каркас PI.
3. `OPENCLAW_AGENT_RUNTIME=auto` запитує зареєстровані каркаси, чи підтримують вони визначеного постачальника/модель.
4. Якщо жоден зареєстрований каркас не підходить, OpenClaw використовує PI.
Помилки примусово вибраного каркаса плагіна відображаються як помилки виконання. У режимі `auto` OpenClaw може повернутися до PI, якщо вибраний каркас плагіна зазнає збою до того, як хід спричинить побічні ефекти.
Вбудований плагін Codex реєструє `codex` як id свого каркаса. Для сумісності `codex-app-server` і `app-server` також вказують на цей самий каркас, коли ви вручну задаєте `OPENCLAW_AGENT_RUNTIME`.
## Поєднання постачальника та каркаса
Більшість каркасів також мають реєструвати постачальника. Постачальник робить посилання на моделі, стан автентифікації, метадані моделі та вибір `/model` видимими для решти OpenClaw. Потім каркас заявляє про цей постачальник у `supports(...)`.
Вбудований плагін Codex дотримується цього шаблону:
- id постачальника: `codex`
- посилання на моделі для користувача: `codex/gpt-5.4`, `codex/gpt-5.2` або інша модель, повернена сервером застосунку Codex
- id каркаса: `codex`
- автентифікація: синтетична доступність постачальника, оскільки каркас Codex керує нативним входом/сесією Codex
- запит до app-server: OpenClaw надсилає до Codex голий id моделі й дозволяє каркасу працювати з нативним протоколом app-server
Плагін Codex є додатковим. Звичайні посилання `openai/gpt-*` залишаються посиланнями постачальника OpenAI і продовжують використовувати звичайний шлях постачальника OpenClaw. Вибирайте `codex/gpt-*`, коли вам потрібні автентифікація під керуванням Codex, виявлення моделей Codex, нативні потоки та виконання через Codex app-server. `/model` може перемикатися між моделями Codex, які повертає Codex app-server, без потреби в облікових даних постачальника OpenAI.
OpenClaw вимагає Codex app-server версії `0.118.0` або новішої. Плагін Codex перевіряє initialize handshake app-server і блокує старі або неверсіоновані сервери, щоб OpenClaw працював лише з тією поверхнею протоколу, з якою його було протестовано.
## Політика вибору каркаса
За замовчуванням OpenClaw запускає вбудованих агентів із `agents.defaults.embeddedHarness`, установленим у `{ runtime: "auto", fallback: "pi" }`. У режимі `auto` зареєстровані каркаси плагінів можуть претендувати на пару постачальник/модель. Якщо не підходить жоден або якщо автоматично вибраний каркас плагіна зазнає збою до створення виводу, OpenClaw повертається до PI.
Установіть `fallback: "none"`, коли вам потрібно довести, що виконується лише каркас плагіна:
```json
{
"agents": {
"defaults": {
"model": "codex/gpt-5.4",
"embeddedHarness": {
"runtime": "codex",
"fallback": "none"
}
}
}
}
```
Перевизначення для окремого агента використовують ту саму форму:
```json
{
"agents": {
"defaults": {
"embeddedHarness": {
"runtime": "auto",
"fallback": "pi"
}
},
"list": [
{
"id": "codex-only",
"model": "codex/gpt-5.4",
"embeddedHarness": {
"runtime": "codex",
"fallback": "none"
}
}
]
}
}
```
`OPENCLAW_AGENT_RUNTIME` усе ще перевизначає налаштоване середовище виконання. Використовуйте `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, щоб вимкнути резервний перехід до PI через змінну середовища.
## Нативні сесії та дзеркало транскрипту
Каркас може зберігати нативний id сесії, id потоку або токен відновлення на боці демона. Явно пов’язуйте цю прив’язку із сесією OpenClaw і продовжуйте віддзеркалювати видимий для користувача вивід асистента/інструментів у транскрипт OpenClaw.
Транскрипт OpenClaw залишається шаром сумісності для:
- видимої в каналі історії сесії
- пошуку та індексації транскрипту
- перемикання назад на вбудований каркас PI у наступному ході
- загальної поведінки `/new`, `/reset` і видалення сесії
Якщо ваш каркас зберігає побічну прив’язку, реалізуйте `reset(...)`, щоб OpenClaw міг очистити її, коли пов’язану сесію OpenClaw скинуто.
## Результати інструментів і медіа
Ядро формує список інструментів OpenClaw і передає його в підготовлену спробу. Коли каркас виконує динамічний виклик інструмента, повертайте результат інструмента назад через форму результату каркаса, а не надсилайте медіа каналу самостійно.
Це зберігає текст, зображення, відео, музику, TTS, затвердження та вивід інструментів обміну повідомленнями на тому самому шляху доставлення, що й у виконаннях на базі PI.
## Поточні обмеження
- Публічний шлях імпорту є загальним, але деякі псевдоніми типів спроб/результатів усе ще містять назви `Pi` для сумісності.
- Установлення сторонніх каркасів є експериментальним. Надавайте перевагу плагінам постачальників, доки вам не знадобиться нативне середовище виконання сесій.
- Перемикання каркасів між ходами підтримується. Не перемикайте каркаси посеред ходу після того, як уже почалися нативні інструменти, затвердження, текст асистента або надсилання повідомлень.
## Пов’язане
- [Огляд SDK](/uk/plugins/sdk-overview)
- [Допоміжні засоби середовища виконання](/uk/plugins/sdk-runtime)
- [Плагіни постачальників](/uk/plugins/sdk-provider-plugins)
- [Постачальники моделей](/uk/concepts/model-providers)

View File

@ -1,33 +1,33 @@
---
read_when:
- Потрібно знати, з якого підшляху SDK імпортувати
- Потрібен довідник для всіх методів реєстрації в OpenClawPluginApi
- Вам потрібно знати, з якого підшляху SDK імпортувати
- Вам потрібен довідник для всіх методів реєстрації в OpenClawPluginApi
- Ви шукаєте конкретний експорт SDK
sidebarTitle: SDK Overview
summary: Карта імпортів, довідник API реєстрації та архітектура SDK
summary: Карта імпорту, довідник з API реєстрації та архітектура SDK
title: Огляд Plugin SDK
x-i18n:
generated_at: "2026-04-09T00:38:40Z"
generated_at: "2026-04-10T20:23:45Z"
model: gpt-5.4
provider: openai
source_hash: bf205af060971931df97dca4af5110ce173d2b7c12f56ad7c62d664a402f2381
source_hash: 4bfeb5896f68e3e4ee8cf434d43a019e0d1fe5af57f5bf7a5172847c476def0c
source_path: plugins/sdk-overview.md
workflow: 15
---
# Огляд Plugin SDK
Plugin SDK — це типізований контракт між плагінами та ядром. Ця сторінка —
довідник про **що імпортувати** і **що можна реєструвати**.
Plugin SDK — це типізований контракт між плагінами та core. Ця сторінка є
довідником для **того, що імпортувати** і **що можна реєструвати**.
<Tip>
**Шукаєте покроковий посібник?**
**Шукаєте практичний посібник?**
- Перший плагін? Почніть із [Getting Started](/uk/plugins/building-plugins)
- Плагін каналу? Див. [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Плагін провайдера? Див. [Provider Plugins](/uk/plugins/sdk-provider-plugins)
- Плагін каналу? Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins)
- Плагін провайдера? Дивіться [Provider Plugins](/uk/plugins/sdk-provider-plugins)
</Tip>
## Правило імпорту
## Угода щодо імпорту
Завжди імпортуйте з конкретного підшляху:
@ -37,45 +37,43 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий
запуск і запобігає проблемам із циклічними залежностями. Для специфічних для
каналів допоміжних засобів входу/збирання надавайте перевагу
`openclaw/plugin-sdk/channel-core`; залишайте `openclaw/plugin-sdk/core` для
запуск і запобігає проблемам із циклічними залежностями. Для специфічних для каналу
допоміжних засобів entry/build віддавайте перевагу `openclaw/plugin-sdk/channel-core`; залишайте `openclaw/plugin-sdk/core` для
ширшої узагальнювальної поверхні та спільних допоміжних засобів, таких як
`buildChannelConfigSchema`.
Не додавайте і не використовуйте зручні шви з назвами провайдерів, такі як
Не додавайте і не використовуйте зручні шари, названі на честь провайдерів, як-от
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або допоміжні
шви з брендингом каналів. Вбудовані плагіни мають компонувати загальні
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а ядро
має або використовувати ці локальні barrel-файли плагіна, або додавати вузький
загальний контракт SDK, якщо потреба справді є міжканальною.
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, або
допоміжні шари з брендуванням каналів. Вбудовані плагіни мають компонувати загальні
підшляхи SDK у власних barrel-файлах `api.ts` або `runtime-api.ts`, а core
має або використовувати ці локальні barrel-файли плагінів, або додавати вузький загальний SDK
контракт, коли потреба справді є міжканальною.
Згенерована карта експортів усе ще містить невеликий набір допоміжних
швів для вбудованих плагінів, таких як `plugin-sdk/feishu`,
`plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і
`plugin-sdk/matrix*`. Ці підшляхи існують лише для підтримки вбудованих
плагінів і сумісності; їх навмисно не включено до загальної таблиці нижче,
і вони не є рекомендованим шляхом імпорту для нових сторонніх плагінів.
Згенерована карта експортів усе ще містить невеликий набір допоміжних шарів
для вбудованих плагінів, як-от `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` і `plugin-sdk/matrix*`. Ці
підшляхи існують лише для підтримки вбудованих плагінів і сумісності; вони
навмисно не включені до загальної таблиці нижче і не є рекомендованим
шляхом імпорту для нових сторонніх плагінів.
## Довідник підшляхів
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список
із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із
понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
Зарезервовані допоміжні підшляхи вбудованих плагінів усе ще з’являються в
цьому згенерованому списку. Вважайте їх деталями реалізації / поверхнями
сумісності, якщо тільки якась сторінка документації явно не просуває один із
них як публічний.
Зарезервовані допоміжні підшляхи для вбудованих плагінів усе ще з’являються в цьому
згенерованому списку. Розглядайте їх як деталі реалізації/поверхні сумісності,
якщо лише сторінка документації явно не позначає один із них як публічний.
### Вхід плагіна
### Вхідна точка плагіна
| Підшлях | Ключові експорти |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| Підшлях | Ключові експорти |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Підшляхи каналів">
@ -84,46 +82,46 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Експорт кореневої Zod-схеми `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, а також `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, запити списків дозволених джерел, побудова статусу налаштування |
| `plugin-sdk/setup` | Спільні допоміжні засоби майстра налаштування, запити allowlist, побудовники статусу налаштування |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Допоміжні засоби для конфігурації/керування шлюзами дій з кількома обліковими записами, допоміжні засоби резервного використання типового облікового запису |
| `plugin-sdk/account-core` | Допоміжні засоби для конфігурації/контролю дій багатьох облікових записів, допоміжні засоби резервного використання облікового запису за замовчуванням |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, допоміжні засоби нормалізації account-id |
| `plugin-sdk/account-resolution` | Пошук облікового запису + допоміжні засоби резервного використання типового значення |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списків облікових записів / дій над обліковими записами |
| `plugin-sdk/account-resolution` | Допоміжні засоби пошуку облікового запису та резервного використання за замовчуванням |
| `plugin-sdk/account-helpers` | Вузькі допоміжні засоби для списку облікових записів/дій з обліковими записами |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Типи схеми конфігурації каналу |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервним вбудованим контрактом |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації/валідації користувацьких команд Telegram із резервною підтримкою вбудованого контракту |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби маршрутизації вхідних повідомлень і побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та диспетчеризації вхідних повідомлень |
| `plugin-sdk/inbound-envelope` | Спільні допоміжні засоби для route вхідних повідомлень і побудови envelope |
| `plugin-sdk/inbound-reply-dispatch` | Спільні допоміжні засоби запису та dispatch для вхідних повідомлень |
| `plugin-sdk/messaging-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/outbound-media` | Спільні допоміжні засоби завантаження вихідних медіа |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби ідентичності вихідних повідомлень / делегатів надсилання |
| `plugin-sdk/thread-bindings-runtime` | Життєвий цикл прив’язок потоків і допоміжні засоби адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник медіа payload агента |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби прив’язки розмов/потоків, pairинг і налаштованих прив’язок |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб знімка конфігурації під час виконання |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення групових політик під час виконання |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби знімка/зведення статусу каналу |
| `plugin-sdk/outbound-runtime` | Допоміжні засоби для вихідної ідентичності/делегування надсилання |
| `plugin-sdk/thread-bindings-runtime` | Допоміжні засоби життєвого циклу thread-binding та адаптерів |
| `plugin-sdk/agent-media-payload` | Застарілий побудовник agent media payload |
| `plugin-sdk/conversation-runtime` | Допоміжні засоби для conversation/thread binding, pairing і configured-binding |
| `plugin-sdk/runtime-config-snapshot` | Допоміжний засіб snapshot конфігурації середовища виконання |
| `plugin-sdk/runtime-group-policy` | Допоміжні засоби визначення group-policy середовища виконання |
| `plugin-sdk/channel-status` | Спільні допоміжні засоби snapshot/summary статусу каналу |
| `plugin-sdk/channel-config-primitives` | Вузькі примітиви схеми конфігурації каналу |
| `plugin-sdk/channel-config-writes` | Допоміжні засоби авторизації запису конфігурації каналу |
| `plugin-sdk/channel-plugin-common` | Спільні преамбулні експорти плагінів каналів |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації списку дозволених джерел |
| `plugin-sdk/group-access` | Спільні допоміжні засоби рішень щодо доступу груп |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби автентифікації/захисту прямих DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби нормалізації/скорочення payload інтерактивних відповідей |
| `plugin-sdk/channel-inbound` | Допоміжні засоби debounce для вхідних повідомлень, зіставлення згадок, політики згадок і envelope |
| `plugin-sdk/channel-send-result` | Типи результатів відповіді |
| `plugin-sdk/channel-plugin-common` | Спільні prelude-експорти плагінів каналів |
| `plugin-sdk/allowlist-config-edit` | Допоміжні засоби редагування/читання конфігурації allowlist |
| `plugin-sdk/group-access` | Спільні допоміжні засоби ухвалення рішень щодо group-access |
| `plugin-sdk/direct-dm` | Спільні допоміжні засоби auth/guard для direct-DM |
| `plugin-sdk/interactive-runtime` | Допоміжні засоби нормалізації/зменшення interactive reply payload |
| `plugin-sdk/channel-inbound` | Допоміжні засоби debounce вхідних повідомлень, зіставлення згадок, політики згадок та допоміжні засоби envelope |
| `plugin-sdk/channel-send-result` | Типи результатів reply |
| `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` |
| `plugin-sdk/channel-targets` | Допоміжні засоби розбору/зіставлення цілей |
| `plugin-sdk/channel-contract` | Типи контракту каналу |
| `plugin-sdk/channel-feedback` | Підключення відгуків/реакцій |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби контракту секретів, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, а також типи цілей секретів |
| `plugin-sdk/channel-feedback` | Підключення feedback/reaction |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби секретного контракту, такі як `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, і типи цілей секретів |
</Accordion>
<Accordion title="Підшляхи провайдерів">
@ -132,236 +130,238 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/provider-setup` | Кураторські допоміжні засоби налаштування локальних/self-hosted провайдерів |
| `plugin-sdk/self-hosted-provider-setup` | Сфокусовані допоміжні засоби налаштування self-hosted провайдерів, сумісних з OpenAI |
| `plugin-sdk/cli-backend` | Типові значення CLI-бекенду + константи watchdog |
| `plugin-sdk/cli-backend` | Значення за замовчуванням для бекенда CLI та константи watchdog |
| `plugin-sdk/provider-auth-runtime` | Допоміжні засоби визначення API-ключів під час виконання для плагінів провайдерів |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API-ключа, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результату OAuth-автентифікації |
| `plugin-sdk/provider-auth-api-key` | Допоміжні засоби онбордингу/запису профілю API-ключів, такі як `upsertApiKeyProfile` |
| `plugin-sdk/provider-auth-result` | Стандартний побудовник результатів OAuth auth |
| `plugin-sdk/provider-auth-login` | Спільні інтерактивні допоміжні засоби входу для плагінів провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку env var для автентифікації провайдерів |
| `plugin-sdk/provider-env-vars` | Допоміжні засоби пошуку змінних середовища auth провайдерів |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники політик replay, допоміжні засоби endpoint провайдерів і нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, спільні побудовники replay-policy, допоміжні засоби endpoint провайдерів і допоміжні засоби нормалізації model-id, такі як `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Загальні допоміжні засоби HTTP/можливостей endpoint провайдерів |
| `plugin-sdk/provider-web-fetch-contract` | Вузькі допоміжні засоби контракту конфігурації/вибору web-fetch, такі як `enablePluginInConfig` і `WebFetchProviderPlugin` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешу провайдерів web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення ввімкнення плагіна |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і область дії setter/getter для облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешу/виконання провайдерів web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схеми Gemini + діагностика та допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-web-fetch` | Допоміжні засоби реєстрації/кешування провайдерів web-fetch |
| `plugin-sdk/provider-web-search-config-contract` | Вузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення увімкнення плагіна |
| `plugin-sdk/provider-web-search-contract` | Вузькі допоміжні засоби контракту конфігурації/облікових даних web-search, такі як `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` і scoped setters/getters для облікових даних |
| `plugin-sdk/provider-web-search` | Допоміжні засоби реєстрації/кешування/виконання провайдерів web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, очищення схем Gemini + діагностика, а також допоміжні засоби сумісності xAI, такі як `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` та подібні |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-onboard` | Допоміжні засоби патчів конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби локальних для процесу singleton/map/cache |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, типи stream wrapper та спільні допоміжні засоби wrapper для Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-onboard` | Допоміжні засоби виправлення конфігурації онбордингу |
| `plugin-sdk/global-singleton` | Допоміжні засоби для локальних у межах процесу singleton/map/cache |
</Accordion>
<Accordion title="Підшляхи автентифікації та безпеки">
<Accordion title="Підшляхи auth і безпеки">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, допоміжні засоби реєстру команд, допоміжні засоби авторизації відправника |
| `plugin-sdk/command-status` | Побудовники повідомлень команд/довідки, такі як `buildCommandsMessagePaginated` і `buildHelpMessage` |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і автентифікації дій у межах того самого чату |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілів/фільтрів нативного схвалення виконання |
| `plugin-sdk/approval-delivery-runtime` | Адаптери нативних можливостей/доставки схвалення |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення шлюзу схвалення |
| `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження нативного адаптера схвалення для гарячих entrypoint каналу |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime-обробника схвалення; надавайте перевагу вужчим швам adapter/gateway, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби нативних цілей схвалення + прив’язки облікових записів |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповідей схвалення exec/plugin |
| `plugin-sdk/command-auth-native` | Допоміжні засоби нативної автентифікації команд + нативних цілей сеансу |
| `plugin-sdk/approval-auth-runtime` | Допоміжні засоби визначення approver і auth дій у тому самому чаті |
| `plugin-sdk/approval-client-runtime` | Допоміжні засоби профілю/фільтра native exec approval |
| `plugin-sdk/approval-delivery-runtime` | Адаптери можливостей/доставки native approval |
| `plugin-sdk/approval-gateway-runtime` | Спільний допоміжний засіб визначення approval gateway |
| `plugin-sdk/approval-handler-adapter-runtime` | Полегшені допоміжні засоби завантаження адаптера native approval для гарячих entrypoint каналів |
| `plugin-sdk/approval-handler-runtime` | Ширші допоміжні засоби runtime для approval handler; віддавайте перевагу вужчим adapter/gateway seams, коли їх достатньо |
| `plugin-sdk/approval-native-runtime` | Допоміжні засоби для native approval target і account-binding |
| `plugin-sdk/approval-reply-runtime` | Допоміжні засоби payload відповіді exec/plugin approval |
| `plugin-sdk/command-auth-native` | Native command auth і допоміжні засоби native session-target |
| `plugin-sdk/command-detection` | Спільні допоміжні засоби виявлення команд |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації тіла команди та command-surface |
| `plugin-sdk/command-surface` | Допоміжні засоби нормалізації command-body і command-surface |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання контракту секретів для поверхонь секретів каналу/плагіна |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для парсингу контракту секретів/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, обмеження DM, зовнішнього вмісту та збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для списків дозволених хостів і приватних мереж |
| `plugin-sdk/channel-secret-runtime` | Вузькі допоміжні засоби збирання секретного контракту для поверхонь секретів каналів/плагінів |
| `plugin-sdk/secret-ref-runtime` | Вузькі допоміжні засоби `coerceSecretRef` і типізації SecretRef для розбору секретного контракту/конфігурації |
| `plugin-sdk/security-runtime` | Спільні допоміжні засоби довіри, DM gating, зовнішнього вмісту та збирання секретів |
| `plugin-sdk/ssrf-policy` | Допоміжні засоби політики SSRF для allowlist хостів і приватних мереж |
| `plugin-sdk/ssrf-runtime` | Допоміжні засоби pinned-dispatcher, fetch із захистом SSRF і політики SSRF |
| `plugin-sdk/secret-input` | Допоміжні засоби парсингу введення секретів |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запиту/цілі webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби розміру тіла запиту / тайм-аутів |
| `plugin-sdk/secret-input` | Допоміжні засоби розбору secret input |
| `plugin-sdk/webhook-ingress` | Допоміжні засоби запитів/цілей webhook |
| `plugin-sdk/webhook-request-guards` | Допоміжні засоби для розміру body запиту/timeout |
</Accordion>
<Accordion title="Підшляхи runtime і сховища">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/логування/резервних копій/встановлення плагінів |
| `plugin-sdk/runtime-env` | Вужчі допоміжні засоби env runtime, логера, тайм-аутів, повторних спроб і backoff |
| `plugin-sdk/runtime` | Широкі допоміжні засоби runtime/logging/backup/plugin-install |
| `plugin-sdk/runtime-env` | Вузькі допоміжні засоби runtime env, logger, timeout, retry і backoff |
| `plugin-sdk/channel-runtime-context` | Загальні допоміжні засоби реєстрації та пошуку channel runtime-context |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/хуків/http/інтерактивних функцій плагіна |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline webhook/внутрішніх хуків |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби лінивого імпорту/прив’язки runtime, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/plugin-runtime` | Спільні допоміжні засоби команд/хуків/http/interactive для плагінів |
| `plugin-sdk/hook-runtime` | Спільні допоміжні засоби pipeline для webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Допоміжні засоби lazy runtime import/binding, такі як `createLazyRuntimeModule`, `createLazyRuntimeMethod` і `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Допоміжні засоби виконання процесів |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування та версій |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта шлюзу та патчів статусу каналу |
| `plugin-sdk/cli-runtime` | Допоміжні засоби форматування CLI, очікування і версії |
| `plugin-sdk/gateway-runtime` | Допоміжні засоби клієнта gateway і patch статусу каналу |
| `plugin-sdk/config-runtime` | Допоміжні засоби завантаження/запису конфігурації |
| `plugin-sdk/telegram-command-config` | Нормалізація назв/описів команд Telegram і перевірки дублювань/конфліктів, навіть коли поверхня вбудованого контракту Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні засоби схвалення exec/plugin, побудовники можливостей схвалення, допоміжні засоби auth/profile, нативної маршрутизації/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime для вхідних повідомлень/відповідей, chunking, dispatch, heartbeat, planner відповідей |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize для відповідей |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби історії відповідей для короткого вікна, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/telegram-command-config` | Допоміжні засоби нормалізації назв/описів команд Telegram і перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна |
| `plugin-sdk/approval-runtime` | Допоміжні засоби exec/plugin approval, побудовники approval-capability, допоміжні засоби auth/profile, native routing/runtime |
| `plugin-sdk/reply-runtime` | Спільні допоміжні засоби runtime для inbound/reply, chunking, dispatch, heartbeat, planner відповіді |
| `plugin-sdk/reply-dispatch-runtime` | Вузькі допоміжні засоби dispatch/finalize відповіді |
| `plugin-sdk/reply-history` | Спільні допоміжні засоби short-window reply-history, такі як `buildHistoryContext`, `recordPendingHistoryEntry` і `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Вузькі допоміжні засоби chunking тексту/markdown |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби шляхів до сховища сеансів + updated-at |
| `plugin-sdk/session-store-runtime` | Допоміжні засоби для шляху сховища сесій і updated-at |
| `plugin-sdk/state-paths` | Допоміжні засоби шляхів до каталогів state/OAuth |
| `plugin-sdk/routing` | Допоміжні засоби маршрутів / session-key / прив’язки облікових записів, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби зведення статусу каналу/облікового запису, типові значення стану runtime і допоміжні засоби метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби визначення цілей |
| `plugin-sdk/routing` | Допоміжні засоби route/session-key/account binding, такі як `resolveAgentRoute`, `buildAgentSessionKey` і `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Спільні допоміжні засоби summary статусу каналу/облікового запису, значення runtime-state за замовчуванням і допоміжні засоби метаданих проблем |
| `plugin-sdk/target-resolver-runtime` | Спільні допоміжні засоби target resolver |
| `plugin-sdk/string-normalization-runtime` | Допоміжні засоби нормалізації slug/рядків |
| `plugin-sdk/request-url` | Витягування рядкових URL із fetch/request-подібних входів |
| `plugin-sdk/request-url` | Витягання рядкових URL із fetch/request-подібних входів |
| `plugin-sdk/run-command` | Виконавець команд із таймером і нормалізованими результатами stdout/stderr |
| `plugin-sdk/param-readers` | Поширені читачі параметрів інструментів/CLI |
| `plugin-sdk/tool-payload` | Витягування нормалізованих payload із об’єктів результатів інструментів |
| `plugin-sdk/tool-send` | Витягування канонічних полів цілі надсилання з аргументів інструменту |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби шляхів для тимчасових завантажень |
| `plugin-sdk/logging-core` | Допоміжні засоби логера підсистеми та редагування чутливих даних |
| `plugin-sdk/param-readers` | Поширені зчитувачі параметрів tool/CLI |
| `plugin-sdk/tool-payload` | Витягання нормалізованих payload із об’єктів результатів tool |
| `plugin-sdk/tool-send` | Витягання канонічних полів цілі надсилання з аргументів tool |
| `plugin-sdk/temp-path` | Спільні допоміжні засоби для шляхів тимчасового завантаження |
| `plugin-sdk/logging-core` | Допоміжні засоби для logger підсистеми та редагування |
| `plugin-sdk/markdown-table-runtime` | Допоміжні засоби режиму таблиць Markdown |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису JSON-стану |
| `plugin-sdk/file-lock` | Реентерабельні допоміжні засоби file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби кешу дедуплікації на диску |
| `plugin-sdk/acp-runtime` | Допоміжні засоби runtime/сеансів ACP і dispatch відповідей |
| `plugin-sdk/json-store` | Невеликі допоміжні засоби читання/запису JSON state |
| `plugin-sdk/file-lock` | Допоміжні засоби повторно-вхідного file-lock |
| `plugin-sdk/persistent-dedupe` | Допоміжні засоби dedupe cache з дисковим збереженням |
| `plugin-sdk/acp-runtime` | Допоміжні засоби ACP runtime/session і reply-dispatch |
| `plugin-sdk/agent-config-primitives` | Вузькі примітиви схеми конфігурації runtime агента |
| `plugin-sdk/boolean-param` | Читач слабко типізованих boolean-параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення зіставлення небезпечних імен |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою та токенів pairингу |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів пасивних каналів, статусу та ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповідей команди `/models` / провайдера |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби переліку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/build/serialize нативних команд |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.AI |
| `plugin-sdk/boolean-param` | Гнучкий зчитувач булевих параметрів |
| `plugin-sdk/dangerous-name-runtime` | Допоміжні засоби визначення збігів для небезпечних назв |
| `plugin-sdk/device-bootstrap` | Допоміжні засоби bootstrap пристрою і pairing token |
| `plugin-sdk/extension-shared` | Спільні примітиви допоміжних засобів passive-channel, status і ambient proxy |
| `plugin-sdk/models-provider-runtime` | Допоміжні засоби відповіді для команди `/models` і провайдерів |
| `plugin-sdk/skill-commands-runtime` | Допоміжні засоби для списку команд Skills |
| `plugin-sdk/native-command-registry` | Допоміжні засоби реєстру/побудови/серіалізації native command |
| `plugin-sdk/agent-harness` | Експериментальна поверхня trusted-plugin для низькорівневих agent harness: типи harness, допоміжні засоби steer/abort для активного запуску, допоміжні засоби bridge інструментів OpenClaw і утиліти результатів спроб |
| `plugin-sdk/provider-zai-endpoint` | Допоміжні засоби виявлення endpoint Z.A.I |
| `plugin-sdk/infra-runtime` | Допоміжні засоби системних подій/heartbeat |
| `plugin-sdk/collection-runtime` | Невеликі допоміжні засоби обмеженого кешу |
| `plugin-sdk/diagnostic-runtime` | Допоміжні засоби прапорців і подій діагностики |
| `plugin-sdk/error-runtime` | Допоміжні засоби графа помилок, форматування, спільної класифікації помилок, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Допоміжні засоби обгорнутого fetch, proxy і pinned lookup |
| `plugin-sdk/fetch-runtime` | Обгорнутий fetch, proxy і допоміжні засоби pinned lookup |
| `plugin-sdk/host-runtime` | Допоміжні засоби нормалізації hostname і SCP host |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації повторних спроб і виконавця повторних спроб |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/робочого простору агента |
| `plugin-sdk/directory-runtime` | Запит/дедуплікація каталогів на основі конфігурації |
| `plugin-sdk/retry-runtime` | Допоміжні засоби конфігурації retry і виконавця retry |
| `plugin-sdk/agent-runtime` | Допоміжні засоби каталогу/ідентичності/workspace агента |
| `plugin-sdk/directory-runtime` | Запит/dedup каталогів із підтримкою конфігурації |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Підшляхи можливостей і тестування">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа плюс побудовники медіа payload |
| `plugin-sdk/media-runtime` | Спільні допоміжні засоби fetch/transform/store для медіа, а також побудовники media payload |
| `plugin-sdk/media-generation-runtime` | Спільні допоміжні засоби failover для генерації медіа, вибір кандидатів і повідомлення про відсутні моделі |
| `plugin-sdk/media-understanding` | Типи провайдерів розуміння медіа плюс орієнтовані на провайдерів експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби тексту/markdown/логування, такі як вилучення видимого асистенту тексту, render/chunking/table для markdown, редагування чутливих даних, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/media-understanding` | Типи провайдерів media understanding, а також орієнтовані на провайдерів експорти допоміжних засобів для зображень/аудіо |
| `plugin-sdk/text-runtime` | Спільні допоміжні засоби для тексту/markdown/logging, такі як видалення тексту, видимого асистенту, допоміжні засоби render/chunking/table для markdown, допоміжні засоби редагування, допоміжні засоби тегів директив і утиліти безпечного тексту |
| `plugin-sdk/text-chunking` | Допоміжний засіб chunking вихідного тексту |
| `plugin-sdk/speech` | Типи провайдерів мовлення плюс орієнтовані на провайдерів допоміжні засоби директив, реєстру та валідації |
| `plugin-sdk/speech-core` | Спільні типи провайдерів мовлення, допоміжні засоби реєстру, директив і нормалізації |
| `plugin-sdk/realtime-transcription` | Типи провайдерів транскрипції в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Типи провайдерів голосу в реальному часі та допоміжні засоби реєстру |
| `plugin-sdk/speech` | Типи провайдерів speech, а також орієнтовані на провайдерів допоміжні засоби для директив, реєстру і валідації |
| `plugin-sdk/speech-core` | Спільні допоміжні засоби типів провайдерів speech, реєстру, директив і нормалізації |
| `plugin-sdk/realtime-transcription` | Типи провайдерів realtime transcription і допоміжні засоби реєстру |
| `plugin-sdk/realtime-voice` | Типи провайдерів realtime voice і допоміжні засоби реєстру |
| `plugin-sdk/image-generation` | Типи провайдерів генерації зображень |
| `plugin-sdk/image-generation-core` | Спільні типи генерації зображень, failover, auth і допоміжні засоби реєстру |
| `plugin-sdk/image-generation-core` | Спільні допоміжні засоби типів генерації зображень, failover, auth і реєстру |
| `plugin-sdk/music-generation` | Типи провайдерів/запитів/результатів генерації музики |
| `plugin-sdk/music-generation-core` | Спільні типи генерації музики, допоміжні засоби failover, пошук провайдерів і парсинг model-ref |
| `plugin-sdk/music-generation-core` | Спільні допоміжні засоби типів генерації музики, failover, пошуку провайдерів і розбору model-ref |
| `plugin-sdk/video-generation` | Типи провайдерів/запитів/результатів генерації відео |
| `plugin-sdk/video-generation-core` | Спільні типи генерації відео, допоміжні засоби failover, пошук провайдерів і парсинг model-ref |
| `plugin-sdk/webhook-targets` | Реєстр цілей webhook і допоміжні засоби встановлення маршрутів |
| `plugin-sdk/video-generation-core` | Спільні допоміжні засоби типів генерації відео, failover, пошуку провайдерів і розбору model-ref |
| `plugin-sdk/webhook-targets` | Допоміжні засоби реєстру webhook target і встановлення route |
| `plugin-sdk/webhook-path` | Допоміжні засоби нормалізації шляху webhook |
| `plugin-sdk/web-media` | Спільні допоміжні засоби завантаження віддалених/локальних медіа |
| `plugin-sdk/zod` | Повторно експортований `zod` для споживачів Plugin SDK |
| `plugin-sdk/zod` | Повторно експортований `zod` для користувачів Plugin SDK |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
<Accordion title="Підшляхи пам’яті">
| Підшлях | Ключові експорти |
| --- | --- |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Runtime facade для індексації/пошуку в пам’яті |
| `plugin-sdk/memory-core` | Поверхня допоміжних засобів bundled memory-core для manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Runtime facade для індексу/пошуку пам’яті |
| `plugin-sdk/memory-core-host-engine-foundation` | Експорти foundation engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-embeddings` | Експорти embedding engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-qmd` | Експорти QMD engine хоста пам’яті |
| `plugin-sdk/memory-core-host-engine-storage` | Експорти storage engine хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні засоби мультимодального хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби запитів хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби секретів хоста пам’яті |
| `plugin-sdk/memory-core-host-multimodal` | Допоміжні засоби multimodal хоста пам’яті |
| `plugin-sdk/memory-core-host-query` | Допоміжні засоби query хоста пам’яті |
| `plugin-sdk/memory-core-host-secret` | Допоміжні засоби secret хоста пам’яті |
| `plugin-sdk/memory-core-host-events` | Допоміжні засоби журналу подій хоста пам’яті |
| `plugin-sdk/memory-core-host-status` | Допоміжні засоби статусу хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-cli` | Допоміжні засоби CLI runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-core` | Допоміжні засоби core runtime хоста пам’яті |
| `plugin-sdk/memory-core-host-runtime-files` | Допоміжні засоби файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Нейтральний щодо постачальника псевдонім для допоміжних засобів core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Нейтральний щодо постачальника псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Нейтральний щодо постачальника псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-core` | Нейтральний щодо вендора псевдонім для допоміжних засобів core runtime хоста пам’яті |
| `plugin-sdk/memory-host-events` | Нейтральний щодо вендора псевдонім для допоміжних засобів журналу подій хоста пам’яті |
| `plugin-sdk/memory-host-files` | Нейтральний щодо вендора псевдонім для допоміжних засобів файлів/runtime хоста пам’яті |
| `plugin-sdk/memory-host-markdown` | Спільні допоміжні засоби managed-markdown для плагінів, суміжних із пам’яттю |
| `plugin-sdk/memory-host-search` | Active memory runtime facade для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний щодо постачальника псевдонім для допоміжних засобів статусу хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів вбудованого memory-lancedb |
| `plugin-sdk/memory-host-search` | Активна runtime facade пам’яті для доступу до search-manager |
| `plugin-sdk/memory-host-status` | Нейтральний щодо вендора псевдонім для допоміжних засобів статусу хоста пам’яті |
| `plugin-sdk/memory-lancedb` | Поверхня допоміжних засобів bundled memory-lancedb |
</Accordion>
<Accordion title="Зарезервовані підшляхи допоміжних засобів вбудованих плагінів">
| Сімейство | Поточні підшляхи | Призначення |
<Accordion title="Зарезервовані підшляхи допоміжних засобів для вбудованих плагінів">
| Сімейство | Поточні підшляхи | Призначене використання |
| --- | --- | --- |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Допоміжні засоби підтримки вбудованого browser plugin (`browser-support` залишається barrel-файлом сумісності) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Поверхня допоміжних засобів/runtime для вбудованого Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Поверхня допоміжних засобів/runtime для вбудованого LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Поверхня допоміжних засобів для вбудованого IRC |
| Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Шви сумісності / допоміжні засоби для вбудованих каналів |
| Допоміжні засоби, специфічні для auth/плагіна | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Шви допоміжних засобів для вбудованих функцій/плагінів; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Допоміжна/runtime поверхня вбудованого Matrix |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Допоміжна/runtime поверхня вбудованого LINE |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Допоміжна поверхня вбудованого IRC |
| Допоміжні засоби, специфічні для каналів | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Шари сумісності/допоміжні засоби для вбудованих каналів |
| Допоміжні засоби, специфічні для auth/плагінів | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Шари допоміжних засобів для вбудованих можливостей/плагінів; `plugin-sdk/github-copilot-token` наразі експортує `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` і `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
## API реєстрації
Колбек `register(api)` отримує об’єкт `OpenClawPluginApi` з такими
Зворотний виклик `register(api)` отримує об’єкт `OpenClawPluginApi` з такими
методами:
### Реєстрація можливостей
| Метод | Що він реєструє |
| ------------------------------------------------ | ------------------------------- |
| `api.registerProvider(...)` | Текстовий inference (LLM) |
| `api.registerCliBackend(...)` | Локальний CLI-бекенд inference |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT |
| Метод | Що він реєструє |
| ------------------------------------------------ | ------------------------------------- |
| `api.registerProvider(...)` | Текстовий inference (LLM) |
| `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець агента |
| `api.registerCliBackend(...)` | Локальний inference-бекенд CLI |
| `api.registerChannel(...)` | Канал обміну повідомленнями |
| `api.registerSpeechProvider(...)` | Синтез text-to-speech / STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова транскрипція в реальному часі |
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні голосові сеанси в реальному часі |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні голосові сесії в реальному часі |
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Вебпошук |
### Інструменти та команди
| Метод | Що він реєструє |
| ------------------------------ | -------------------------------------------- |
| Метод | Що він реєструє |
| ------------------------------- | --------------------------------------------- |
| `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) |
| `api.registerCommand(def)` | Користувацька команда (оминає LLM) |
| `api.registerCommand(def)` | Користувацька команда (оминає LLM) |
### Інфраструктура
| Метод | Що він реєструє |
| --------------------------------------------- | ---------------------------------- |
| `api.registerHook(events, handler, opts?)` | Хук події |
| `api.registerHttpRoute(params)` | HTTP endpoint шлюзу |
| `api.registerGatewayMethod(name, handler)` | RPC-метод шлюзу |
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
| `api.registerService(service)` | Фоновий сервіс |
| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник |
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із пам’яттю |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання пам’яті |
| ---------------------------------------------- | ---------------------------------- |
| `api.registerHook(events, handler, opts?)` | Хук події |
| `api.registerHttpRoute(params)` | HTTP endpoint gateway |
| `api.registerGatewayMethod(name, handler)` | RPC-метод gateway |
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
| `api.registerService(service)` | Фонова служба |
| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник |
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt, суміжний із пам’яттю |
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання пам’яті |
Зарезервовані простори імен адміністрування ядра (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди залишаються `operator.admin`, навіть якщо плагін
намагається призначити вужчу область дії методу шлюзу. Для методів, що
належать плагіну, надавайте перевагу специфічним для плагіна префіксам.
Зарезервовані простори імен core admin (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) завжди залишаються `operator.admin`, навіть якщо плагін намагається призначити
вужчу область видимості для методу gateway. Для методів, що належать плагіну,
віддавайте перевагу префіксам, специфічним для плагіна.
### Метадані реєстрації CLI
`api.registerCli(registrar, opts?)` приймає два типи метаданих верхнього рівня:
- `commands`: явні корені команд, якими володіє registrar
- `descriptors`: дескриптори команд часу парсингу, що використовуються для довідки кореневого CLI,
- `commands`: явні корені команд, що належать реєстратору
- `descriptors`: дескриптори команд на етапі розбору, які використовуються для кореневої довідки CLI,
маршрутизації та лінивої реєстрації CLI плагіна
Якщо ви хочете, щоб команда плагіна залишалася ліниво завантажуваною в
звичайному шляху кореневого CLI, надайте `descriptors`, які охоплюють кожен
корінь команди верхнього рівня, що експонується цим registrar.
Якщо ви хочете, щоб команда плагіна залишалася ліниво завантажуваною у звичайному кореневому шляху CLI,
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, що експонується цим
реєстратором.
```typescript
api.registerCli(
@ -381,88 +381,87 @@ api.registerCli(
);
```
Використовуйте лише `commands`, коли вам не потрібна лінива реєстрація
кореневого CLI. Цей eager-шлях сумісності залишається підтримуваним, але він
не встановлює placeholder-и на основі дескрипторів для лінивого завантаження
під час парсингу.
Використовуйте лише `commands`, якщо вам не потрібна лінива реєстрація кореневого CLI.
Цей eager-шлях сумісності все ще підтримується, але він не встановлює
заповнювачі на основі дескрипторів для лінивого завантаження на етапі розбору.
### Реєстрація CLI-бекенду
### Реєстрація CLI-бекенда
`api.registerCliBackend(...)` дає змогу плагіну володіти типовою конфігурацією
для локального AI CLI-бекенду, такого як `codex-cli`.
`api.registerCliBackend(...)` дає змогу плагіну володіти конфігурацією за замовчуванням для локального
AI CLI-бекенда, такого як `codex-cli`.
- `id` бекенду стає префіксом провайдера в model ref на кшталт `codex-cli/gpt-5`.
- `config` бекенду використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Конфігурація користувача все одно має пріоритет. OpenClaw зливає `agents.defaults.cliBackends.<id>` поверх
типового значення плагіна перед запуском CLI.
- Використовуйте `normalizeConfig`, коли бекенду потрібні переписування сумісності після злиття
(наприклад, для нормалізації старих форм прапорців).
- `id` бекенда стає префіксом провайдера в model ref, наприклад `codex-cli/gpt-5`.
- `config` бекенда використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
- Конфігурація користувача все одно має пріоритет. OpenClaw об’єднує `agents.defaults.cliBackends.<id>` поверх
значення плагіна за замовчуванням перед запуском CLI.
- Використовуйте `normalizeConfig`, коли бекенду потрібні переписування для сумісності після об’єднання
(наприклад, нормалізація старих форм прапорців).
### Ексклюзивні слоти
| Метод | Що він реєструє |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Context engine (одночасно активний лише один). Колбек `assemble()` отримує `availableTools` і `citationsMode`, щоб engine міг адаптувати доповнення до prompt. |
| `api.registerMemoryCapability(capability)` | Уніфіковану можливість пам’яті |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Рушій контексту (одночасно активним може бути лише один). Зворотний виклик `assemble()` отримує `availableTools` і `citationsMode`, щоб рушій міг адаптувати доповнення prompt. |
| `api.registerMemoryCapability(capability)` | Єдину можливість пам’яті |
| `api.registerMemoryPromptSection(builder)` | Побудовник розділу prompt пам’яті |
| `api.registerMemoryFlushPlan(resolver)` | Resolver плану flush пам’яті |
| `api.registerMemoryFlushPlan(resolver)` | Резолвер плану скидання пам’яті |
| `api.registerMemoryRuntime(runtime)` | Адаптер runtime пам’яті |
### Адаптери embedding для пам’яті
### Адаптери embeddings пам’яті
| Метод | Що він реєструє |
| --------------------------------------------- | -------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embedding пам’яті для активного плагіна |
| Метод | Що він реєструє |
| ---------------------------------------------- | ----------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер embeddings пам’яті для активного плагіна |
- `registerMemoryCapability` — рекомендований API ексклюзивного memory-plugin.
- `registerMemoryCapability` також може експонувати `publicArtifacts.listArtifacts(...)`,
щоб супутні плагіни могли споживати експортовані артефакти пам’яті через
`openclaw/plugin-sdk/memory-host-core` замість звернення до приватного
макета конкретного плагіна пам’яті.
- `registerMemoryCapability`це рекомендований API ексклюзивного memory-plugin.
- `registerMemoryCapability` також може експортувати `publicArtifacts.listArtifacts(...)`,
щоб companion plugins могли використовувати експортовані артефакти пам’яті через
`openclaw/plugin-sdk/memory-host-core` замість звернення до приватної структури
конкретного memory plugin.
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` і
`registerMemoryRuntime` — це застаріло-сумісні API ексклюзивного memory-plugin.
- `registerMemoryEmbeddingProvider` дає змогу активному memory-plugin зареєструвати
один або кілька id адаптерів embedding (наприклад, `openai`, `gemini` або
`registerMemoryRuntime` — це сумісні зі старими версіями API ексклюзивних memory-plugin.
- `registerMemoryEmbeddingProvider` дає змогу активному memory plugin зареєструвати один
або кілька ідентифікаторів adapter embeddings (наприклад, `openai`, `gemini` або
користувацький id, визначений плагіном).
- Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і
`agents.defaults.memorySearch.fallback`, визначається відносно цих зареєстрованих
id адаптерів.
id adapter.
### Події та життєвий цикл
| Метод | Що він робить |
| ------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу |
| `api.onConversationBindingResolved(handler)` | Колбек визначення прив’язки розмови |
| -------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Типізований lifecycle hook |
| `api.onConversationBindingResolved(handler)` | Зворотний виклик binding розмови |
### Семантика рішень хуків
### Семантика рішень для хуків
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно якийсь обробник встановить його, обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення.
- `before_install`: повернення `{ block: true }` є термінальним. Щойно якийсь обробник встановить його, обробники з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` трактується як відсутність рішення (так само, як і пропуск `block`), а не як перевизначення.
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно якийсь обробник візьме dispatch на себе, обробники з нижчим пріоритетом і типовий шлях dispatch моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно якийсь обробник встановить його, обробники з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` трактується як відсутність рішення (так само, як і пропуск `cancel`), а не як перевизначення.
- `before_tool_call`: повернення `{ block: true }` є остаточним. Щойно будь-який обробник встановлює це значення, обробники з нижчим пріоритетом пропускаються.
- `before_tool_call`: повернення `{ block: false }` вважається відсутністю рішення (так само, як пропуск `block`), а не перевизначенням.
- `before_install`: повернення `{ block: true }` є остаточним. Щойно будь-який обробник встановлює це значення, обробники з нижчим пріоритетом пропускаються.
- `before_install`: повернення `{ block: false }` вважається відсутністю рішення (так само, як пропуск `block`), а не перевизначенням.
- `reply_dispatch`: повернення `{ handled: true, ... }` є остаточним. Щойно будь-який обробник бере на себе dispatch, обробники з нижчим пріоритетом і стандартний шлях dispatch моделі пропускаються.
- `message_sending`: повернення `{ cancel: true }` є остаточним. Щойно будь-який обробник встановлює це значення, обробники з нижчим пріоритетом пропускаються.
- `message_sending`: повернення `{ cancel: false }` вважається відсутністю рішення (так само, як пропуск `cancel`), а не перевизначенням.
### Поля об’єкта API
| Поле | Тип | Опис |
| ------------------------ | ------------------------- | ----------------------------------------------------------------------------------------- |
| `api.id` | `string` | ID плагіна |
| `api.name` | `string` | Відображувана назва |
| `api.version` | `string?` | Версія плагіна (необов’язково) |
| `api.description` | `string?` | Опис плагіна (необов’язково) |
| `api.source` | `string` | Шлях до джерела плагіна |
| `api.rootDir` | `string?` | Кореневий каталог плагіна (необов’язково) |
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок runtime у пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для плагіна, з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Логер з областю дії (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування перед повним entry |
| `api.resolvePath(input)` | `(string) => string` | Визначення шляху відносно кореня плагіна |
| Поле | Тип | Опис |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| `api.id` | `string` | Ідентифікатор плагіна |
| `api.name` | `string` | Відображувана назва |
| `api.version` | `string?` | Версія плагіна (необов’язково) |
| `api.description` | `string?` | Опис плагіна (необов’язково) |
| `api.source` | `string` | Шлях до джерела плагіна |
| `api.rootDir` | `string?` | Кореневий каталог плагіна (необов’язково) |
| `api.config` | `OpenClawConfig` | Поточний snapshot конфігурації (активний snapshot runtime в пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для плагіна, з `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger з обмеженою областю (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування до повного entry |
| `api.resolvePath(input)` | `(string) => string` | Визначити шлях відносно кореня плагіна |
## Внутрішнє правило модулів
## Угода щодо внутрішніх модулів
Усередині вашого плагіна використовуйте локальні barrel-файли для внутрішніх імпортів:
@ -471,49 +470,45 @@ my-plugin/
api.ts # Публічні експорти для зовнішніх споживачів
runtime-api.ts # Експорти runtime лише для внутрішнього використання
index.ts # Точка входу плагіна
setup-entry.ts # Полегшений вхід лише для налаштування (необов’язково)
setup-entry.ts # Полегшений entry лише для налаштування (необов’язково)
```
<Warning>
Ніколи не імпортуйте власний плагін через `openclaw/plugin-sdk/<your-plugin>`
у production-коді. Спрямовуйте внутрішні імпорти через `./api.ts` або
з production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
`./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт.
</Warning>
Публічні поверхні вбудованих плагінів, що завантажуються через facade
(`api.ts`, `runtime-api.ts`, `index.ts`, `setup-entry.ts` та подібні публічні
entry-файли), тепер віддають перевагу активному знімку конфігурації runtime,
коли OpenClaw уже запущено. Якщо знімка runtime ще немає, вони переходять до
резервного використання визначеного файла конфігурації на диску.
Фасадно-завантажувані публічні поверхні вбудованих плагінів (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` та подібні публічні entry-файли) тепер віддають перевагу
активному snapshot конфігурації runtime, коли OpenClaw уже запущено. Якщо snapshot runtime
ще не існує, вони повертаються до визначеного файлу конфігурації на диску.
Плагіни провайдерів також можуть експонувати вузький локальний barrel-файл
контракту плагіна, коли допоміжний засіб навмисно є специфічним для провайдера
і ще не належить до загального підшляху SDK. Поточний вбудований приклад:
провайдер Anthropic тримає свої допоміжні засоби потоку Claude у власному
публічному шві `api.ts` / `contract-api.ts` замість просування логіки
beta-header Anthropic і `service_tier` до загального контракту
`plugin-sdk/*`.
Плагіни провайдерів також можуть експонувати вузький локальний контрактний barrel плагіна, коли
допоміжний засіб навмисно є специфічним для провайдера і ще не належить до загального підшляху SDK.
Поточний вбудований приклад: провайдер Anthropic зберігає свої допоміжні засоби потоків Claude
у власному публічному seam `api.ts` / `contract-api.ts` замість того, щоб просувати логіку
Anthropic beta-header і `service_tier` у загальний контракт `plugin-sdk/*`.
Інші поточні вбудовані приклади:
- `@openclaw/openai-provider`: `api.ts` експортує побудовники провайдерів,
допоміжні засоби типових моделей і побудовники провайдерів realtime
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник провайдера та
допоміжні засоби моделей за замовчуванням і побудовники realtime-провайдерів
- `@openclaw/openrouter-provider`: `api.ts` експортує побудовник провайдера, а також
допоміжні засоби онбордингу/конфігурації
<Warning>
Production-код розширень також має уникати імпортів
`openclaw/plugin-sdk/<other-plugin>`. Якщо допоміжний засіб справді є спільним,
перенесіть його до нейтрального підшляху SDK, такого як
`openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої
поверхні, орієнтованої на можливості, замість зв’язування двох плагінів між собою.
Production-код розширень також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
Якщо допоміжний засіб справді є спільним, винесіть його в нейтральний підшлях SDK,
такий як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншу
поверхню, орієнтовану на можливість, замість жорсткого зв’язування двох плагінів.
</Warning>
## Пов’язане
## Пов’язані матеріали
- [Entry Points](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry`
- [Runtime Helpers](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime`
- [Setup and Config](/uk/plugins/sdk-setup) — пакування, маніфести, схеми конфігурації
- [Testing](/uk/plugins/sdk-testing) — утиліти тестування та правила lint
- [SDK Migration](/uk/plugins/sdk-migration) — міграція з застарілих поверхонь
- [Plugin Internals](/uk/plugins/architecture) — поглиблена архітектура та модель можливостей
- [Точки входу](/uk/plugins/sdk-entrypoints) — параметри `definePluginEntry` і `defineChannelPluginEntry`
- [Допоміжні засоби runtime](/uk/plugins/sdk-runtime) — повний довідник простору імен `api.runtime`
- [Налаштування і конфігурація](/uk/plugins/sdk-setup) — пакування, маніфести, схеми конфігурації
- [Тестування](/uk/plugins/sdk-testing) — утиліти тестування та правила lint
- [Міграція SDK](/uk/plugins/sdk-migration) — міграція з застарілих поверхонь
- [Внутрішня будова плагінів](/uk/plugins/architecture) — детальна архітектура і модель можливостей

View File

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

View File

@ -1,29 +1,29 @@
---
read_when:
- Вам потрібно викликати основні допоміжні засоби з плагіна (TTS, STT, генерація зображень, вебпошук, субагент)
- Ви хочете зрозуміти, що надає `api.runtime`
- Ви звертаєтеся до допоміжних засобів конфігурації, агента або медіа з коду плагіна
- Вам потрібно викликати допоміжні засоби ядра з плагіна (TTS, STT, генерація зображень, вебпошук, субагент)
- Ви хочете зрозуміти, що надає api.runtime
- Ви отримуєте доступ до допоміжних засобів конфігурації, агента або медіа з коду плагіна
sidebarTitle: Runtime Helpers
summary: api.runtime -- вбудовані допоміжні засоби середовища виконання, доступні плагінам
summary: api.runtime -- впроваджені допоміжні засоби середовища виконання, доступні для плагінів
title: Допоміжні засоби середовища виконання плагіна
x-i18n:
generated_at: "2026-04-07T06:53:09Z"
generated_at: "2026-04-10T20:23:46Z"
model: gpt-5.4
provider: openai
source_hash: acb9e56678e9ed08d0998dfafd7cd1982b592be5bc34d9e2d2c1f70274f8f248
source_hash: fbf8a6ecd970300f784b8aca20eed40ba12c83107abd27385bfdc3347d2544be
source_path: plugins/sdk-runtime.md
workflow: 15
---
# Допоміжні засоби середовища виконання плагіна
Довідник щодо об’єкта `api.runtime`, який вбудовується в кожен плагін під час
Довідка щодо об’єкта `api.runtime`, який впроваджується в кожен плагін під час
реєстрації. Використовуйте ці допоміжні засоби замість прямого імпорту внутрішніх
компонентів хоста.
<Tip>
**Потрібен покроковий посібник?** Дивіться [Channel Plugins](/uk/plugins/sdk-channel-plugins)
або [Provider Plugins](/uk/plugins/sdk-provider-plugins) для покрокових інструкцій,
**Шукаєте покрокове пояснення?** Перегляньте [Плагіни каналів](/uk/plugins/sdk-channel-plugins)
або [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins), щоб знайти покрокові посібники,
які показують ці допоміжні засоби в контексті.
</Tip>
@ -58,9 +58,9 @@ const timeoutMs = api.runtime.agent.resolveAgentTimeoutMs(cfg);
// Ensure workspace exists
await api.runtime.agent.ensureAgentWorkspace(cfg);
// Run an embedded Pi agent
// Run an embedded agent turn
const agentDir = api.runtime.agent.resolveAgentDir(cfg);
const result = await api.runtime.agent.runEmbeddedPiAgent({
const result = await api.runtime.agent.runEmbeddedAgent({
sessionId: "my-plugin:task-1",
runId: crypto.randomUUID(),
sessionFile: path.join(agentDir, "sessions", "my-plugin-task-1.jsonl"),
@ -70,7 +70,14 @@ const result = await api.runtime.agent.runEmbeddedPiAgent({
});
```
**Допоміжні засоби сховища сесій** містяться в `api.runtime.agent.session`:
`runEmbeddedAgent(...)` — це нейтральний допоміжний засіб для запуску звичайного
ходу агента OpenClaw з коду плагіна. Він використовує той самий механізм
визначення провайдера/моделі та вибору harness агента, що й відповіді,
запущені каналом.
`runEmbeddedPiAgent(...)` залишається псевдонімом для сумісності.
**Допоміжні засоби сховища сесій** розміщені в `api.runtime.agent.session`:
```typescript
const storePath = api.runtime.agent.session.resolveStorePath(cfg);
@ -81,7 +88,7 @@ const filePath = api.runtime.agent.session.resolveSessionFilePath(cfg, sessionId
### `api.runtime.agent.defaults`
Константи моделі та провайдера за замовчуванням:
Константи стандартної моделі та провайдера:
```typescript
const model = api.runtime.agent.defaults.model; // e.g. "anthropic/claude-sonnet-4-6"
@ -90,7 +97,7 @@ const provider = api.runtime.agent.defaults.provider; // e.g. "anthropic"
### `api.runtime.subagent`
Запуск і керування фоновими запусками субагентів.
Запуск і керування фоновими запусками субагента.
```typescript
// Start a subagent run
@ -121,14 +128,14 @@ await api.runtime.subagent.deleteSession({
Перевизначення моделі (`provider`/`model`) потребує явної згоди оператора через
`plugins.entries.<id>.subagent.allowModelOverride: true` у конфігурації.
Ненадійні плагіни все одно можуть запускати субагентів, але запити на
перевизначення відхиляються.
перевизначення буде відхилено.
</Warning>
### `api.runtime.taskFlow`
Прив’яжіть середовище виконання Task Flow до наявного ключа сесії OpenClaw або
контексту довіреного інструмента, а потім створюйте й керуйте Task Flow без
передавання власника в кожному виклику.
Прив’язує середовище виконання Task Flow до наявного ключа сесії OpenClaw або
контексту довіреного інструмента, а потім дає змогу створювати й керувати Task Flow
без передавання власника в кожному виклику.
```typescript
const taskFlow = api.runtime.taskFlow.fromToolContext(ctx);
@ -155,7 +162,7 @@ const waiting = taskFlow.setWaiting({
});
```
Використовуйте `bindSession({ sessionKey, requesterOrigin })`, якщо у вас уже є
Використовуйте `bindSession({ sessionKey, requesterOrigin })`, коли у вас уже є
довірений ключ сесії OpenClaw із вашого власного шару прив’язки. Не виконуйте
прив’язку на основі необробленого користувацького вводу.
@ -183,8 +190,8 @@ const voices = await api.runtime.tts.listVoices({
});
```
Використовує основну конфігурацію `messages.tts` і вибір провайдера. Повертає
PCM-аудіобуфер + частоту дискретизації.
Використовує основну конфігурацію `messages.tts` і механізм вибору провайдера.
Повертає буфер аудіо PCM + частоту дискретизації.
### `api.runtime.mediaUnderstanding`
@ -218,11 +225,11 @@ const result = await api.runtime.mediaUnderstanding.runFile({
});
```
Повертає `{ text: undefined }`, якщо жодного виводу не створено (наприклад,
вхідні дані пропущено).
Повертає `{ text: undefined }`, якщо вихідні дані не було створено
(наприклад, якщо вхідні дані було пропущено).
<Info>
`api.runtime.stt.transcribeAudioFile(...)` залишається сумісним псевдонімом
`api.runtime.stt.transcribeAudioFile(...)` залишається псевдонімом для сумісності
для `api.runtime.mediaUnderstanding.transcribeAudioFile(...)`.
</Info>
@ -254,7 +261,7 @@ const result = await api.runtime.webSearch.search({
### `api.runtime.media`
Низькорівневі медіаутиліти.
Низькорівневі мультимедійні утиліти.
```typescript
const webMedia = await api.runtime.media.loadWebMedia(url);
@ -276,7 +283,7 @@ await api.runtime.config.writeConfigFile(cfg);
### `api.runtime.system`
Системні утиліти.
Утиліти системного рівня.
```typescript
await api.runtime.system.enqueueSystemEvent(event);
@ -300,7 +307,7 @@ api.runtime.events.onSessionTranscriptUpdate((update) => {
### `api.runtime.logging`
Логування.
Журналювання.
```typescript
const verbose = api.runtime.logging.shouldLogVerbose();
@ -339,12 +346,11 @@ api.runtime.tools.registerMemoryCli(/* ... */);
### `api.runtime.channel`
Допоміжні засоби середовища виконання для каналу (доступні, коли завантажено
плагін каналу).
Допоміжні засоби середовища виконання, специфічні для каналу (доступні, коли
завантажено плагін каналу).
`api.runtime.channel.mentions` — це спільна поверхня політики згадок у вхідних
повідомленнях для вбудованих плагінів каналів, які використовують вбудоване
середовище виконання:
`api.runtime.channel.mentions` — це спільна поверхня політики вхідних згадок для
вбудованих плагінів каналів, які використовують впровадження середовища виконання:
```typescript
const mentionMatch = api.runtime.channel.mentions.matchesMentionWithExplicit(text, {
@ -379,7 +385,7 @@ const decision = api.runtime.channel.mentions.resolveInboundMentionDecision({
- `implicitMentionKindWhen`
- `resolveInboundMentionDecision`
`api.runtime.channel.mentions` навмисно не надає старі сумісні допоміжні засоби
`api.runtime.channel.mentions` навмисно не надає старі допоміжні засоби сумісності
`resolveMentionGating*`. Надавайте перевагу нормалізованому шляху
`{ facts, policy }`.
@ -421,14 +427,14 @@ export function tryGetRuntime() {
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| `api.id` | `string` | Ідентифікатор плагіна |
| `api.name` | `string` | Відображувана назва плагіна |
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок середовища виконання в пам’яті, якщо доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація плагіна з `plugins.entries.<id>.config` |
| `api.logger` | `PluginLogger` | Логер з областю видимості (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це легке вікно запуску/налаштування перед повним входом |
| `api.resolvePath(input)` | `(string) => string` | Визначити шлях відносно кореня плагіна |
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок середовища виконання в пам’яті, коли доступний) |
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для плагіна, з `plugins.entries.<id>.config` |
| `api.logger` | `PluginLogger` | Logger з областю видимості (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це полегшене вікно запуску/налаштування перед повним запуском entry point |
| `api.resolvePath(input)` | `(string) => string` | Визначає шлях відносно кореня плагіна |
## Пов’язане
- [SDK Overview](/uk/plugins/sdk-overview) -- довідник щодо підшляхів
- [SDK Entry Points](/uk/plugins/sdk-entrypoints) -- параметри `definePluginEntry`
- [Plugin Internals](/uk/plugins/architecture) -- модель можливостей і реєстр
- [Огляд SDK](/uk/plugins/sdk-overview) -- довідка щодо підшляхів
- [Точки входу SDK](/uk/plugins/sdk-entrypoints) -- параметри `definePluginEntry`
- [Внутрішня структура плагіна](/uk/plugins/architecture) -- модель можливостей і реєстр