chore(i18n): refresh uk translations
This commit is contained in:
parent
ab5f74dd26
commit
8798e436b7
File diff suppressed because it is too large
Load Diff
@ -1,35 +1,36 @@
|
||||
---
|
||||
read_when:
|
||||
- Потрібно знати, з якого підшляху SDK виконувати імпорт
|
||||
- Потрібно знати, з якого підшляху SDK імпортувати
|
||||
- Вам потрібна довідка щодо всіх методів реєстрації в OpenClawPluginApi
|
||||
- Ви шукаєте конкретний експорт SDK
|
||||
sidebarTitle: Plugin SDK overview
|
||||
summary: Мапа імпортів, довідник API реєстрації та архітектура SDK
|
||||
summary: Карта імпортів, довідник API реєстрації та архітектура SDK
|
||||
title: Огляд Plugin SDK
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T20:40:27Z"
|
||||
generated_at: "2026-05-02T02:49:22Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 28da709ac7dc86e6d5b553b6c8ecaed105c68de63f94804bc5aed56ebc6c5de9
|
||||
source_hash: be5fa531e603fb6d87f84e3193ebd61be1431b57b8f284871ae15f34ca93fc69
|
||||
source_path: plugins/sdk-overview.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
SDK Plugin — це типізований контракт між Plugin і ядром. Ця сторінка є
|
||||
довідником щодо **того, що імпортувати** і **що можна реєструвати**.
|
||||
SDK плагінів — це типізований контракт між плагінами та ядром. Ця сторінка є
|
||||
довідником щодо **того, що імпортувати** і **того, що можна реєструвати**.
|
||||
|
||||
<Note>
|
||||
Ця сторінка призначена для авторів Plugin, які використовують `openclaw/plugin-sdk/*` всередині
|
||||
OpenClaw. Для зовнішніх застосунків, скриптів, панелей керування, завдань CI та розширень IDE,
|
||||
які хочуть запускати агентів через Gateway, натомість використовуйте
|
||||
[OpenClaw App SDK](/uk/concepts/openclaw-sdk) і пакет `@openclaw/sdk`.
|
||||
Ця сторінка призначена для авторів плагінів, які використовують
|
||||
`openclaw/plugin-sdk/*` всередині OpenClaw. Для зовнішніх застосунків,
|
||||
скриптів, панелей керування, завдань CI та розширень IDE, які хочуть запускати
|
||||
агентів через Gateway, натомість використовуйте
|
||||
[SDK застосунків OpenClaw](/uk/concepts/openclaw-sdk) і пакет `@openclaw/sdk`.
|
||||
</Note>
|
||||
|
||||
<Tip>
|
||||
Шукаєте натомість практичний посібник? Почніть із [Створення Plugin](/uk/plugins/building-plugins), використовуйте [Channel plugins](/uk/plugins/sdk-channel-plugins) для каналів Plugin, [Provider plugins](/uk/plugins/sdk-provider-plugins) для провайдерів Plugin і [Plugin hooks](/uk/plugins/hooks) для Plugin інструментів або хуків життєвого циклу.
|
||||
Натомість шукаєте практичний посібник? Почніть із [Створення плагінів](/uk/plugins/building-plugins), використовуйте [Плагіни каналів](/uk/plugins/sdk-channel-plugins) для плагінів каналів, [Плагіни провайдерів](/uk/plugins/sdk-provider-plugins) для плагінів провайдерів і [Хуки Plugin](/uk/plugins/hooks) для плагінів хуків інструментів або життєвого циклу.
|
||||
</Tip>
|
||||
|
||||
## Угода імпорту
|
||||
## Угода щодо імпорту
|
||||
|
||||
Завжди імпортуйте з конкретного підшляху:
|
||||
|
||||
@ -38,45 +39,48 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
|
||||
```
|
||||
|
||||
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий запуск і
|
||||
запобігає проблемам із циклічними залежностями. Для допоміжних засобів входу/збирання,
|
||||
специфічних для каналу, надавайте перевагу `openclaw/plugin-sdk/channel-core`; залишайте
|
||||
`openclaw/plugin-sdk/core` для ширшої поверхні та спільних допоміжних засобів, таких як
|
||||
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий запуск
|
||||
і запобігає проблемам із циклічними залежностями. Для допоміжних засобів
|
||||
входу/збирання, специфічних для каналів, віддавайте перевагу
|
||||
`openclaw/plugin-sdk/channel-core`; залишайте `openclaw/plugin-sdk/core` для
|
||||
ширшої спільної поверхні та спільних допоміжних засобів, як-от
|
||||
`buildChannelConfigSchema`.
|
||||
|
||||
Для конфігурації каналу публікуйте JSON Schema, що належить каналу, через
|
||||
`openclaw.plugin.json#channelConfigs`. Підшлях `plugin-sdk/channel-config-schema`
|
||||
призначений для спільних примітивів схем і загального конструктора. Вбудовані Plugin
|
||||
OpenClaw використовують `plugin-sdk/bundled-channel-config-schema` для збережених
|
||||
схем вбудованих каналів. Застарілі експорти сумісності залишаються в
|
||||
`plugin-sdk/channel-config-schema-legacy`; жоден із підшляхів вбудованих схем не є
|
||||
шаблоном для нових Plugin.
|
||||
призначений для спільних примітивів схеми та загального збирача. Вбудовані
|
||||
плагіни OpenClaw використовують `plugin-sdk/bundled-channel-config-schema` для
|
||||
збережених схем вбудованих каналів. Застарілі експорти сумісності залишаються в
|
||||
`plugin-sdk/channel-config-schema-legacy`; жоден із підшляхів вбудованих схем не
|
||||
є шаблоном для нових плагінів.
|
||||
|
||||
<Warning>
|
||||
Не імпортуйте зручні шви, брендовані провайдерами або каналами (наприклад
|
||||
Не імпортуйте зручні шви з брендингом провайдера або каналу (наприклад
|
||||
`openclaw/plugin-sdk/slack`, `.../discord`, `.../signal`, `.../whatsapp`).
|
||||
Вбудовані Plugin компонують загальні підшляхи SDK усередині власних барелів `api.ts` /
|
||||
`runtime-api.ts`; споживачі ядра мають або використовувати ці локальні для Plugin
|
||||
барелі, або додати вузький загальний контракт SDK, коли потреба справді
|
||||
міжканальна.
|
||||
Вбудовані плагіни компонують загальні підшляхи SDK всередині власних барелів
|
||||
`api.ts` / `runtime-api.ts`; споживачі ядра мають або використовувати ці
|
||||
локальні для плагіна барелі, або додати вузький загальний контракт SDK, коли
|
||||
потреба справді є міжканальною.
|
||||
|
||||
Невеликий набір допоміжних швів вбудованих Plugin досі з’являється в згенерованій мапі
|
||||
експортів, коли вони мають відстежене використання власником. Вони існують лише для
|
||||
обслуговування вбудованих Plugin і не рекомендовані як шляхи імпорту для нових сторонніх
|
||||
Plugin.
|
||||
Невеликий набір допоміжних швів вбудованих плагінів досі з’являється у
|
||||
згенерованій мапі експортів, коли для них відстежено використання власником.
|
||||
Вони існують лише для супроводу вбудованих плагінів і не рекомендовані як шляхи
|
||||
імпорту для нових сторонніх плагінів.
|
||||
|
||||
`openclaw/plugin-sdk/discord` і `openclaw/plugin-sdk/telegram-account` також збережено
|
||||
як застарілі фасади сумісності для відстеженого використання власником. Не копіюйте
|
||||
ці шляхи імпорту в нові Plugin; натомість використовуйте ін’єктовані runtime-помічники
|
||||
та загальні підшляхи SDK каналів.
|
||||
`openclaw/plugin-sdk/discord` і `openclaw/plugin-sdk/telegram-account` також
|
||||
збережені як застарілі фасади сумісності для відстеженого використання
|
||||
власником. Не копіюйте ці шляхи імпорту в нові плагіни; натомість
|
||||
використовуйте ін’єктовані runtime-допоміжні засоби та загальні підшляхи SDK
|
||||
каналів.
|
||||
</Warning>
|
||||
|
||||
## Довідник підшляхів
|
||||
|
||||
SDK Plugin доступний як набір вузьких підшляхів, згрупованих за областями (вхід
|
||||
Plugin, канал, провайдер, автентифікація, runtime, можливість, пам’ять і зарезервовані
|
||||
допоміжні засоби вбудованих Plugin). Повний каталог — згрупований і з посиланнями —
|
||||
див. у [Підшляхи SDK Plugin](/uk/plugins/sdk-subpaths).
|
||||
SDK плагінів надається як набір вузьких підшляхів, згрупованих за областями
|
||||
(вхід плагіна, канал, провайдер, автентифікація, runtime, можливості, пам’ять і
|
||||
зарезервовані допоміжні засоби вбудованих плагінів). Повний каталог —
|
||||
згрупований і з посиланнями — дивіться в
|
||||
[підшляхах SDK Plugin](/uk/plugins/sdk-subpaths).
|
||||
|
||||
Згенерований список із понад 200 підшляхів міститься в `scripts/lib/plugin-sdk-entrypoints.json`.
|
||||
|
||||
@ -91,111 +95,110 @@ Plugin, канал, провайдер, автентифікація, runtime,
|
||||
| ------------------------------------------------ | --------------------------------------- |
|
||||
| `api.registerProvider(...)` | Текстове виведення (LLM) |
|
||||
| `api.registerAgentHarness(...)` | Експериментальний низькорівневий виконавець агента |
|
||||
| `api.registerCliBackend(...)` | Локальний бекенд CLI-виведення |
|
||||
| `api.registerChannel(...)` | Канал повідомлень |
|
||||
| `api.registerSpeechProvider(...)` | Text-to-speech / STT-синтез |
|
||||
| `api.registerCliBackend(...)` | Локальний backend виведення CLI |
|
||||
| `api.registerChannel(...)` | Канал обміну повідомленнями |
|
||||
| `api.registerSpeechProvider(...)` | Перетворення тексту на мовлення / синтез STT |
|
||||
| `api.registerRealtimeTranscriptionProvider(...)` | Потокова транскрипція в реальному часі |
|
||||
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні голосові сеанси в реальному часі |
|
||||
| `api.registerRealtimeVoiceProvider(...)` | Дуплексні голосові сесії в реальному часі |
|
||||
| `api.registerMediaUnderstandingProvider(...)` | Аналіз зображень/аудіо/відео |
|
||||
| `api.registerImageGenerationProvider(...)` | Генерація зображень |
|
||||
| `api.registerMusicGenerationProvider(...)` | Генерація музики |
|
||||
| `api.registerVideoGenerationProvider(...)` | Генерація відео |
|
||||
| `api.registerWebFetchProvider(...)` | Провайдер веб-отримання / скрейпінгу |
|
||||
| `api.registerWebFetchProvider(...)` | Провайдер web fetch / scraping |
|
||||
| `api.registerWebSearchProvider(...)` | Вебпошук |
|
||||
|
||||
### Інструменти та команди
|
||||
|
||||
| Метод | Що він реєструє |
|
||||
| Метод | Що він реєструє |
|
||||
| ------------------------------- | ---------------------------------------------- |
|
||||
| `api.registerTool(tool, opts?)` | Інструмент агента (обов’язковий або `{ optional: true }`) |
|
||||
| `api.registerCommand(def)` | Користувацька команда (обходить LLM) |
|
||||
| `api.registerCommand(def)` | Користувацька команда (оминає LLM) |
|
||||
|
||||
Команди Plugin можуть задавати `agentPromptGuidance`, коли агенту потрібна коротка
|
||||
підказка маршрутизації, що належить команді. Тримайте цей текст про саму команду;
|
||||
не додавайте політику, специфічну для провайдера або Plugin, до побудовників промптів ядра.
|
||||
Команди плагінів можуть задавати `agentPromptGuidance`, коли агенту потрібна
|
||||
коротка підказка маршрутизації, що належить команді. Тримайте цей текст про саму
|
||||
команду; не додавайте політику, специфічну для провайдера або плагіна, до
|
||||
збирачів prompt у ядрі.
|
||||
|
||||
### Інфраструктура
|
||||
|
||||
| Метод | Що він реєструє |
|
||||
| ---------------------------------------------- | ----------------------------------------- |
|
||||
| `api.registerHook(events, handler, opts?)` | Хук події |
|
||||
| `api.registerHttpRoute(params)` | HTTP-ендпоїнт Gateway |
|
||||
| `api.registerGatewayMethod(name, handler)` | RPC-метод Gateway |
|
||||
| `api.registerGatewayDiscoveryService(service)` | Рекламодавець локального виявлення Gateway |
|
||||
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
|
||||
| `api.registerService(service)` | Фонова служба |
|
||||
| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник |
|
||||
| `api.registerAgentToolResultMiddleware(...)` | Runtime-посередник результатів інструментів |
|
||||
| `api.registerMemoryPromptSupplement(builder)` | Додатковий розділ промпта поруч із пам’яттю |
|
||||
| `api.registerMemoryCorpusSupplement(adapter)` | Додатковий корпус пошуку/читання пам’яті |
|
||||
| Метод | Що він реєструє |
|
||||
| ---------------------------------------------- | --------------------------------------- |
|
||||
| `api.registerHook(events, handler, opts?)` | Хук події |
|
||||
| `api.registerHttpRoute(params)` | HTTP endpoint Gateway |
|
||||
| `api.registerGatewayMethod(name, handler)` | Метод RPC Gateway |
|
||||
| `api.registerGatewayDiscoveryService(service)` | Рекламодавець виявлення локального Gateway |
|
||||
| `api.registerCli(registrar, opts?)` | Підкоманда CLI |
|
||||
| `api.registerService(service)` | Фонова служба |
|
||||
| `api.registerInteractiveHandler(registration)` | Інтерактивний обробник |
|
||||
| `api.registerAgentToolResultMiddleware(...)` | Runtime middleware результатів інструментів |
|
||||
| `api.registerMemoryPromptSupplement(builder)` | Адитивний розділ prompt поруч із пам’яттю |
|
||||
| `api.registerMemoryCorpusSupplement(adapter)` | Адитивний корпус пошуку/читання пам’яті |
|
||||
|
||||
### Хуки хоста для workflow-Plugin
|
||||
### Хостові хуки для workflow-плагінів
|
||||
|
||||
Хуки хоста — це шви SDK для Plugin, яким потрібно брати участь у життєвому циклі
|
||||
хоста, а не лише додавати провайдера, канал або інструмент. Це загальні контракти;
|
||||
Plan Mode може їх використовувати, але так само можуть workflow-процеси затвердження,
|
||||
шлюзи політик робочого простору, фонові монітори, майстри налаштування та супровідні
|
||||
Plugin інтерфейсу.
|
||||
Хостові хуки — це шви SDK для плагінів, яким потрібно брати участь у життєвому
|
||||
циклі хоста, а не лише додавати провайдера, канал або інструмент. Це загальні
|
||||
контракти; Plan Mode може їх використовувати, але так само можуть workflow
|
||||
погоджень, policy gates робочого простору, фонові монітори, майстри
|
||||
налаштування та супровідні UI-плагіни.
|
||||
|
||||
| Метод | Контракт, яким він володіє |
|
||||
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------- |
|
||||
| `api.registerSessionExtension(...)` | Стан сеансу, що належить Plugin, JSON-сумісний і проєктується через сеанси Gateway |
|
||||
| `api.enqueueNextTurnInjection(...)` | Стійкий exactly-once контекст, ін’єктований у наступний хід агента для одного сеансу |
|
||||
| `api.registerTrustedToolPolicy(...)` | Політика інструментів вбудованого/довіреного pre-plugin, яка може блокувати або переписувати параметри інструмента |
|
||||
| `api.registerToolMetadata(...)` | Метадані відображення каталогу інструментів без зміни реалізації інструмента |
|
||||
| `api.registerCommand(...)` | Обмежені команди Plugin; результати команд можуть задавати `continueAgent: true` |
|
||||
| `api.registerControlUiDescriptor(...)` | Дескриптори внеску Control UI для поверхонь сеансу, інструмента, запуску або налаштувань |
|
||||
| `api.registerRuntimeLifecycle(...)` | Зворотні виклики очищення для runtime-ресурсів, що належать Plugin, на шляхах reset/delete/reload |
|
||||
| `api.registerAgentEventSubscription(...)` | Санітизовані підписки на події для стану workflow і моніторів |
|
||||
| `api.setRunContext(...)` / `getRunContext(...)` / `clearRunContext(...)` | Тимчасовий стан Plugin на запуск, очищений під час термінального життєвого циклу запуску |
|
||||
| `api.registerSessionSchedulerJob(...)` | Записи завдань планувальника сеансів, що належать Plugin, із детермінованим очищенням |
|
||||
| Метод | Контракт, яким він володіє |
|
||||
| ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `api.registerSessionExtension(...)` | Стан сесії, що належить плагіну, сумісний із JSON і проєктується через сесії Gateway |
|
||||
| `api.enqueueNextTurnInjection(...)` | Стійкий рівно-один-раз контекст, ін’єктований у наступний хід агента для однієї сесії |
|
||||
| `api.registerTrustedToolPolicy(...)` | Політика інструментів вбудованого/довіреного pre-plugin, яка може блокувати або переписувати параметри інструменту |
|
||||
| `api.registerToolMetadata(...)` | Метадані відображення каталогу інструментів без зміни реалізації інструменту |
|
||||
| `api.registerCommand(...)` | Обмежені за областю команди плагінів; результати команд можуть задавати `continueAgent: true`; нативні команди Discord підтримують `descriptionLocalizations` |
|
||||
| `api.registerControlUiDescriptor(...)` | Дескриптори внеску Control UI для поверхонь сесії, інструменту, запуску або налаштувань |
|
||||
| `api.registerRuntimeLifecycle(...)` | Зворотні виклики очищення для runtime-ресурсів, що належать плагіну, на шляхах reset/delete/reload |
|
||||
| `api.registerAgentEventSubscription(...)` | Санітизовані підписки на події для стану workflow та моніторів |
|
||||
| `api.setRunContext(...)` / `getRunContext(...)` / `clearRunContext(...)` | Чернетковий стан плагіна для окремого запуску, очищений під час термінального життєвого циклу запуску |
|
||||
| `api.registerSessionSchedulerJob(...)` | Записи завдань планувальника сесій, що належать плагіну, з детермінованим очищенням |
|
||||
|
||||
Контракти навмисно розділяють повноваження:
|
||||
|
||||
- Зовнішні Plugin можуть володіти розширеннями сеансів, дескрипторами UI, командами, метаданими інструментів, ін’єкціями наступного ходу та звичайними хуками.
|
||||
- Довірені політики інструментів запускаються перед звичайними хуками `before_tool_call` і доступні лише для вбудованих, оскільки беруть участь у політиці безпеки хоста.
|
||||
- Зарезервоване володіння командами доступне лише для вбудованих. Зовнішні Plugin мають використовувати власні назви команд або псевдоніми.
|
||||
- `allowPromptInjection=false` вимикає хуки, що змінюють промпт, зокрема
|
||||
`agent_turn_prepare`, `before_prompt_build`, `heartbeat_prompt_contribution`,
|
||||
поля промпта зі застарілого `before_agent_start` і
|
||||
`enqueueNextTurnInjection`.
|
||||
- Зовнішні плагіни можуть володіти розширеннями сесій, дескрипторами UI, командами, метаданими інструментів, ін’єкціями наступного ходу та звичайними хуками.
|
||||
- Довірені політики інструментів виконуються перед звичайними хуками `before_tool_call` і доступні лише вбудованим плагінам, бо вони беруть участь у політиці безпеки хоста.
|
||||
- Зарезервоване володіння командами доступне лише вбудованим плагінам. Зовнішні плагіни мають використовувати власні назви команд або псевдоніми.
|
||||
- `allowPromptInjection=false` вимикає хуки, що змінюють prompt, включно з `agent_turn_prepare`, `before_prompt_build`, `heartbeat_prompt_contribution`, полями prompt із застарілого `before_agent_start` та `enqueueNextTurnInjection`.
|
||||
|
||||
Приклади споживачів поза Plan:
|
||||
Приклади споживачів, не пов’язаних із Plan:
|
||||
|
||||
| Архетип Plugin | Використані хуки |
|
||||
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Workflow затвердження | Розширення сеансу, продовження команди, ін’єкція наступного ходу, дескриптор UI |
|
||||
| Шлюз політики бюджету/робочого простору | Довірена політика інструментів, метадані інструментів, проєкція сеансу |
|
||||
| Фоновий монітор життєвого циклу | Очищення життєвого циклу runtime, підписка на події агента, володіння/очищення планувальника сеансів, внесок heartbeat-промпта, дескриптор UI |
|
||||
| Майстер налаштування або onboarding | Розширення сеансу, обмежені команди, дескриптор Control UI |
|
||||
| Архетип плагіна | Використані хуки |
|
||||
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Workflow погодження | Розширення сесії, продовження команди, ін’єкція наступного ходу, дескриптор UI |
|
||||
| Policy gate бюджету/робочого простору | Довірена політика інструментів, метадані інструментів, проєкція сесії |
|
||||
| Фоновий монітор життєвого циклу | Очищення runtime-життєвого циклу, підписка на події агента, володіння/очищення планувальника сесій, внесок heartbeat prompt, дескриптор UI |
|
||||
| Майстер налаштування або onboarding | Розширення сесії, scoped-команди, дескриптор Control UI |
|
||||
|
||||
<Note>
|
||||
Зарезервовані core admin простори назв (`config.*`, `exec.approvals.*`, `wizard.*`,
|
||||
`update.*`) завжди залишаються `operator.admin`, навіть якщо Plugin намагається
|
||||
призначити вужчу область методу Gateway. Надавайте перевагу префіксам, специфічним
|
||||
для Plugin, для методів, що належать Plugin.
|
||||
Зарезервовані простори імен адміністрування ядра (`config.*`,
|
||||
`exec.approvals.*`, `wizard.*`, `update.*`) завжди залишаються
|
||||
`operator.admin`, навіть якщо плагін намагається призначити вужчу область
|
||||
методу gateway. Віддавайте перевагу префіксам, специфічним для плагіна, для
|
||||
методів, що належать плагіну.
|
||||
</Note>
|
||||
|
||||
<Accordion title="Коли використовувати посередник результатів інструментів">
|
||||
Вбудовані Plugin можуть використовувати `api.registerAgentToolResultMiddleware(...)`, коли
|
||||
їм потрібно переписати результат інструмента після виконання й до того, як runtime
|
||||
<Accordion title="Коли використовувати middleware результатів інструментів">
|
||||
Вбудовані плагіни можуть використовувати `api.registerAgentToolResultMiddleware(...)`, коли
|
||||
їм потрібно переписати результат інструменту після виконання і до того, як runtime
|
||||
передасть цей результат назад у модель. Це довірений runtime-нейтральний
|
||||
шов для асинхронних редукторів виводу, таких як tokenjuice.
|
||||
|
||||
Вбудовані Plugin мають оголошувати `contracts.agentToolResultMiddleware` для кожного
|
||||
цільового runtime, наприклад `["pi", "codex"]`. Зовнішні Plugin
|
||||
не можуть реєструвати цей посередник; залишайте звичайні хуки Plugin OpenClaw для роботи,
|
||||
яка не потребує pre-model таймінгу результатів інструментів. Старий шлях реєстрації
|
||||
вбудованої фабрики розширень лише для Pi було вилучено.
|
||||
Вбудовані плагіни мають оголошувати `contracts.agentToolResultMiddleware` для
|
||||
кожного цільового runtime, наприклад `["pi", "codex"]`. Зовнішні плагіни
|
||||
не можуть реєструвати цей middleware; залишайте звичайні хуки плагінів OpenClaw для роботи,
|
||||
якій не потрібен timing результатів інструментів перед моделлю. Старий шлях
|
||||
реєстрації вбудованої фабрики розширень лише для Pi було вилучено.
|
||||
</Accordion>
|
||||
|
||||
### Реєстрація виявлення Gateway
|
||||
|
||||
`api.registerGatewayDiscoveryService(...)` дає Plugin змогу рекламувати активний
|
||||
Gateway у локальному транспорті виявлення, такому як mDNS/Bonjour. OpenClaw викликає
|
||||
службу під час запуску Gateway, коли локальне виявлення ввімкнено, передає поточні
|
||||
порти Gateway і несекретні TXT-підказки, а також викликає повернений обробник
|
||||
`stop` під час завершення роботи Gateway.
|
||||
`api.registerGatewayDiscoveryService(...)` дає плагіну змогу оголошувати активний
|
||||
Gateway у локальному транспорті виявлення, як-от mDNS/Bonjour. OpenClaw викликає
|
||||
службу під час запуску Gateway, коли локальне виявлення ввімкнено, передає
|
||||
поточні порти Gateway і несекретні підказки TXT, а під час завершення роботи
|
||||
Gateway викликає повернений обробник `stop`.
|
||||
|
||||
```typescript
|
||||
api.registerGatewayDiscoveryService({
|
||||
@ -211,9 +214,9 @@ api.registerGatewayDiscoveryService({
|
||||
});
|
||||
```
|
||||
|
||||
Plugin-и виявлення Gateway не повинні розглядати рекламовані значення TXT як секрети або
|
||||
автентифікацію. Виявлення є підказкою для маршрутизації; автентифікація Gateway і закріплення TLS усе ще
|
||||
відповідають за довіру.
|
||||
Плагіни виявлення Gateway не повинні вважати оголошені значення TXT секретами чи
|
||||
автентифікацією. Виявлення — це підказка для маршрутизації; автентифікація
|
||||
Gateway і прив’язування TLS усе ще відповідають за довіру.
|
||||
|
||||
### Метадані реєстрації CLI
|
||||
|
||||
@ -221,11 +224,11 @@ Plugin-и виявлення Gateway не повинні розглядати р
|
||||
|
||||
- `commands`: явні корені команд, якими володіє реєстратор
|
||||
- `descriptors`: дескриптори команд під час розбору, що використовуються для довідки кореневого CLI,
|
||||
маршрутизації та ледачої реєстрації CLI Plugin-а
|
||||
маршрутизації та лінивої реєстрації CLI плагіна
|
||||
|
||||
Якщо ви хочете, щоб команда Plugin-а залишалася ліниво завантажуваною у звичайному шляху кореневого CLI,
|
||||
надайте `descriptors`, які охоплюють кожен корінь команди верхнього рівня, відкритий цим
|
||||
реєстратором.
|
||||
Якщо ви хочете, щоб команда плагіна лишалася ліниво завантажуваною у звичайному
|
||||
шляху кореневого CLI, надайте `descriptors`, які охоплюють кожен корінь команди
|
||||
верхнього рівня, відкритий цим реєстратором.
|
||||
|
||||
```typescript
|
||||
api.registerCli(
|
||||
@ -245,98 +248,100 @@ api.registerCli(
|
||||
);
|
||||
```
|
||||
|
||||
Використовуйте лише `commands`, тільки коли вам не потрібна ледача реєстрація кореневого CLI.
|
||||
Цей eager-шлях сумісності залишається підтримуваним, але він не встановлює
|
||||
заповнювачі на основі дескрипторів для ледачого завантаження під час розбору.
|
||||
Використовуйте лише `commands` тільки тоді, коли вам не потрібна лінива
|
||||
реєстрація кореневого CLI. Цей нетерплячий шлях сумісності й надалі
|
||||
підтримується, але він не встановлює заповнювачі на основі дескрипторів для
|
||||
лінивого завантаження під час розбору.
|
||||
|
||||
### Реєстрація бекенда CLI
|
||||
|
||||
`api.registerCliBackend(...)` дає Plugin-у змогу володіти типовою конфігурацією для локального
|
||||
бекенда AI CLI, такого як `codex-cli`.
|
||||
`api.registerCliBackend(...)` дає плагіну змогу володіти типовою конфігурацією
|
||||
для локального бекенда AI CLI, як-от `codex-cli`.
|
||||
|
||||
- `id` бекенда стає префіксом провайдера в посиланнях на моделі, як-от `codex-cli/gpt-5`.
|
||||
- `config` бекенда використовує ту саму форму, що й `agents.defaults.cliBackends.<id>`.
|
||||
- Конфігурація користувача все одно має пріоритет. OpenClaw зливає `agents.defaults.cliBackends.<id>` поверх
|
||||
типових значень Plugin-а перед запуском CLI.
|
||||
- Використовуйте `normalizeConfig`, коли бекенду потрібні переписування сумісності після злиття
|
||||
- Конфігурація користувача все одно має пріоритет. OpenClaw об’єднує `agents.defaults.cliBackends.<id>` поверх
|
||||
типового значення плагіна перед запуском CLI.
|
||||
- Використовуйте `normalizeConfig`, коли бекенду потрібні переписування сумісності після об’єднання
|
||||
(наприклад, нормалізація старих форм прапорців).
|
||||
|
||||
### Ексклюзивні слоти
|
||||
|
||||
| Метод | Що він реєструє |
|
||||
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `api.registerContextEngine(id, factory)` | Рушій контексту (одночасно активний лише один). Callback `assemble()` отримує `availableTools` і `citationsMode`, щоб рушій міг адаптувати доповнення до промпта. |
|
||||
| `api.registerMemoryCapability(capability)` | Уніфікована можливість пам’яті |
|
||||
| `api.registerMemoryPromptSection(builder)` | Побудовник секції промпта пам’яті |
|
||||
| `api.registerMemoryFlushPlan(resolver)` | Резолвер плану скидання пам’яті |
|
||||
| `api.registerMemoryRuntime(runtime)` | Адаптер runtime пам’яті |
|
||||
| Метод | Що реєструє |
|
||||
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `api.registerContextEngine(id, factory)` | Двигун контексту (один активний одночасно). Зворотний виклик `assemble()` отримує `availableTools` і `citationsMode`, щоб двигун міг адаптувати додатки до промпта. |
|
||||
| `api.registerMemoryCapability(capability)` | Уніфікована можливість пам’яті |
|
||||
| `api.registerMemoryPromptSection(builder)` | Побудовник розділу промпта пам’яті |
|
||||
| `api.registerMemoryFlushPlan(resolver)` | Резолвер плану скидання пам’яті |
|
||||
| `api.registerMemoryRuntime(runtime)` | Адаптер середовища виконання пам’яті |
|
||||
|
||||
### Адаптери вбудовування пам’яті
|
||||
|
||||
| Метод | Що він реєструє |
|
||||
| ---------------------------------------------- | -------------------------------------------- |
|
||||
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер вбудовування пам’яті для активного Plugin-а |
|
||||
| Метод | Що реєструє |
|
||||
| ---------------------------------------------- | ----------------------------------------- |
|
||||
| `api.registerMemoryEmbeddingProvider(adapter)` | Адаптер вбудовування пам’яті для активного плагіна |
|
||||
|
||||
- `registerMemoryCapability` є бажаним ексклюзивним API Plugin-а пам’яті.
|
||||
- `registerMemoryCapability` — бажаний ексклюзивний API плагіна пам’яті.
|
||||
- `registerMemoryCapability` також може відкривати `publicArtifacts.listArtifacts(...)`,
|
||||
щоб супутні Plugin-и могли споживати експортовані артефакти пам’яті через
|
||||
`openclaw/plugin-sdk/memory-host-core`, а не звертатися до приватної структури конкретного
|
||||
Plugin-а пам’яті.
|
||||
щоб супровідні плагіни могли споживати експортовані артефакти пам’яті через
|
||||
`openclaw/plugin-sdk/memory-host-core`, а не звертатися до приватної структури
|
||||
конкретного плагіна пам’яті.
|
||||
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` і
|
||||
`registerMemoryRuntime` є ексклюзивними API Plugin-а пам’яті з підтримкою сумісності зі спадковими версіями.
|
||||
`registerMemoryRuntime` — ексклюзивні API плагіна пам’яті зі спадковою сумісністю.
|
||||
- `MemoryFlushPlan.model` може закріпити хід скидання за точним посиланням
|
||||
`provider/model`, таким як `ollama/qwen3:8b`, без успадкування активного
|
||||
ланцюга fallback.
|
||||
- `registerMemoryEmbeddingProvider` дає активному Plugin-у пам’яті змогу зареєструвати один
|
||||
або кілька id адаптерів вбудовування (наприклад, `openai`, `gemini` або користувацький
|
||||
id, визначений Plugin-ом).
|
||||
- Конфігурація користувача, така як `agents.defaults.memorySearch.provider` і
|
||||
`agents.defaults.memorySearch.fallback`, розв’язується відносно цих зареєстрованих
|
||||
id адаптерів.
|
||||
`provider/model`, як-от `ollama/qwen3:8b`, без успадкування активного ланцюжка
|
||||
резервних варіантів.
|
||||
- `registerMemoryEmbeddingProvider` дає активному плагіну пам’яті змогу
|
||||
зареєструвати один або кілька ідентифікаторів адаптерів вбудовування
|
||||
(наприклад `openai`, `gemini` або власний ідентифікатор, визначений плагіном).
|
||||
- Конфігурація користувача, як-от `agents.defaults.memorySearch.provider` і
|
||||
`agents.defaults.memorySearch.fallback`, розв’язується відносно цих
|
||||
зареєстрованих ідентифікаторів адаптерів.
|
||||
|
||||
### Події та життєвий цикл
|
||||
|
||||
| Метод | Що він робить |
|
||||
| -------------------------------------------- | ------------------------------ |
|
||||
| Метод | Що робить |
|
||||
| -------------------------------------------- | ------------------------------- |
|
||||
| `api.on(hookName, handler, opts?)` | Типізований хук життєвого циклу |
|
||||
| `api.onConversationBindingResolved(handler)` | Callback прив’язки розмови |
|
||||
| `api.onConversationBindingResolved(handler)` | Зворотний виклик прив’язки розмови |
|
||||
|
||||
Див. [Хуки Plugin-а](/uk/plugins/hooks) для прикладів, поширених назв хуків і семантики guard.
|
||||
Див. [хуки плагінів](/uk/plugins/hooks), щоб знайти приклади, поширені назви хуків
|
||||
і семантику запобіжників.
|
||||
|
||||
### Семантика рішень хуків
|
||||
|
||||
- `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`), а не як перевизначення.
|
||||
- `message_received`: використовуйте типізоване поле `threadId`, коли вам потрібна маршрутизація вхідних гілок/тем. Зберігайте `metadata` для специфічних для каналу додаткових даних.
|
||||
- `message_sending`: використовуйте типізовані поля маршрутизації `replyToId` / `threadId` перед fallback до специфічного для каналу `metadata`.
|
||||
- `before_tool_call`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
|
||||
- `before_tool_call`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як пропуск `block`), а не як перевизначення.
|
||||
- `before_install`: повернення `{ block: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
|
||||
- `before_install`: повернення `{ block: false }` розглядається як відсутність рішення (так само, як пропуск `block`), а не як перевизначення.
|
||||
- `reply_dispatch`: повернення `{ handled: true, ... }` є термінальним. Щойно будь-який обробник заявляє про обробку відправлення, обробники з нижчим пріоритетом і типовий шлях відправлення моделі пропускаються.
|
||||
- `message_sending`: повернення `{ cancel: true }` є термінальним. Щойно будь-який обробник встановлює його, обробники з нижчим пріоритетом пропускаються.
|
||||
- `message_sending`: повернення `{ cancel: false }` розглядається як відсутність рішення (так само, як пропуск `cancel`), а не як перевизначення.
|
||||
- `message_received`: використовуйте типізоване поле `threadId`, коли вам потрібна маршрутизація вхідної гілки/теми. Залишайте `metadata` для додаткових даних, специфічних для каналу.
|
||||
- `message_sending`: використовуйте типізовані поля маршрутизації `replyToId` / `threadId`, перш ніж переходити до специфічних для каналу `metadata`.
|
||||
- `gateway_start`: використовуйте `ctx.config`, `ctx.workspaceDir` і `ctx.getCron?.()` для стану запуску, яким володіє Gateway, замість покладання на внутрішні хуки `gateway:startup`.
|
||||
- `cron_changed`: спостерігайте за змінами життєвого циклу Cron, яким володіє Gateway. Використовуйте `event.job?.state?.nextRunAtMs` і `ctx.getCron?.()` під час синхронізації зовнішніх планувальників пробудження, і залишайте OpenClaw джерелом істини для перевірок строку виконання та виконання.
|
||||
- `cron_changed`: спостерігайте за змінами життєвого циклу cron, яким володіє Gateway. Використовуйте `event.job?.state?.nextRunAtMs` і `ctx.getCron?.()` під час синхронізації зовнішніх планувальників пробудження, а OpenClaw залишайте джерелом істини для перевірок строків і виконання.
|
||||
|
||||
### Поля об’єкта API
|
||||
|
||||
| Поле | Тип | Опис |
|
||||
| ------------------------ | ------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `api.id` | `string` | Id Plugin-а |
|
||||
| `api.name` | `string` | Відображувана назва |
|
||||
| `api.version` | `string?` | Версія Plugin-а (необов’язково) |
|
||||
| `api.description` | `string?` | Опис Plugin-а (необов’язково) |
|
||||
| `api.source` | `string` | Шлях джерела Plugin-а |
|
||||
| `api.rootDir` | `string?` | Кореневий каталог Plugin-а (необов’язково) |
|
||||
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний runtime-знімок у пам’яті, коли доступний) |
|
||||
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для Plugin-а, з `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"` — це легке стартове/setup-вікно перед повним entry point |
|
||||
| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня Plugin-а |
|
||||
| Поле | Тип | Опис |
|
||||
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `api.id` | `string` | Ідентифікатор плагіна |
|
||||
| `api.name` | `string` | Відображувана назва |
|
||||
| `api.version` | `string?` | Версія плагіна (необов’язково) |
|
||||
| `api.description` | `string?` | Опис плагіна (необов’язково) |
|
||||
| `api.source` | `string` | Шлях до джерела плагіна |
|
||||
| `api.rootDir` | `string?` | Кореневий каталог плагіна (необов’язково) |
|
||||
| `api.config` | `OpenClawConfig` | Поточний знімок конфігурації (активний знімок середовища виконання в пам’яті, коли доступний) |
|
||||
| `api.pluginConfig` | `Record<string, unknown>` | Конфігурація, специфічна для плагіна, з `plugins.entries.<id>.config` |
|
||||
| `api.runtime` | `PluginRuntime` | [Допоміжні засоби середовища виконання](/uk/plugins/sdk-runtime) |
|
||||
| `api.logger` | `PluginLogger` | Логер з областю дії (`debug`, `info`, `warn`, `error`) |
|
||||
| `api.registrationMode` | `PluginRegistrationMode` | Поточний режим завантаження; `"setup-runtime"` — це легке вікно запуску/налаштування перед повним входом |
|
||||
| `api.resolvePath(input)` | `(string) => string` | Розв’язати шлях відносно кореня плагіна |
|
||||
|
||||
## Конвенція внутрішніх модулів
|
||||
## Внутрішня домовленість щодо модулів
|
||||
|
||||
У межах вашого Plugin-а використовуйте локальні barrel-файли для внутрішніх імпортів:
|
||||
У своєму плагіні використовуйте локальні barrel-файли для внутрішніх імпортів:
|
||||
|
||||
```
|
||||
my-plugin/
|
||||
@ -347,56 +352,57 @@ my-plugin/
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Ніколи не імпортуйте власний Plugin через `openclaw/plugin-sdk/<your-plugin>`
|
||||
з production-коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
|
||||
`./runtime-api.ts`. Шлях SDK є лише зовнішнім контрактом.
|
||||
Ніколи не імпортуйте власний плагін через `openclaw/plugin-sdk/<your-plugin>`
|
||||
з виробничого коду. Спрямовуйте внутрішні імпорти через `./api.ts` або
|
||||
`./runtime-api.ts`. Шлях SDK — це лише зовнішній контракт.
|
||||
</Warning>
|
||||
|
||||
Публічні поверхні bundled Plugin-а, завантажені через фасад (`api.ts`, `runtime-api.ts`,
|
||||
`index.ts`, `setup-entry.ts` і подібні публічні entry-файли), віддають перевагу
|
||||
активному runtime-знімку конфігурації, коли OpenClaw уже запущено. Якщо runtime-знімка
|
||||
ще немає, вони fallback до розв’язаної конфігурації на диску.
|
||||
Фасади packaged bundled Plugin-а слід завантажувати через фасадні завантажувачі Plugin-ів OpenClaw;
|
||||
прямі імпорти з `dist/extensions/...` обходять маніфест
|
||||
і runtime-перевірки sidecar, які packaged-інсталяції використовують для коду, яким володіє Plugin.
|
||||
Публічні поверхні вбудованого плагіна, завантажені через фасад (`api.ts`, `runtime-api.ts`,
|
||||
`index.ts`, `setup-entry.ts` і подібні публічні вхідні файли), віддають перевагу
|
||||
активному знімку конфігурації середовища виконання, коли OpenClaw уже працює. Якщо знімка
|
||||
середовища виконання ще немає, вони повертаються до розв’язаної конфігурації на диску.
|
||||
Фасади упакованих вбудованих плагінів слід завантажувати через фасадні завантажувачі
|
||||
плагінів OpenClaw; прямі імпорти з `dist/extensions/...` обходять маніфест
|
||||
і перевірки бічного середовища виконання, які упаковані встановлення використовують
|
||||
для коду, яким володіє плагін.
|
||||
|
||||
Provider Plugin-и можуть відкривати вузький barrel контракту, локальний для Plugin-а, коли
|
||||
хелпер навмисно є специфічним для провайдера і ще не належить до загального підшляху SDK.
|
||||
Bundled-приклади:
|
||||
Плагіни провайдерів можуть відкривати вузький локальний для плагіна контрактний
|
||||
barrel-файл, коли допоміжний засіб навмисно специфічний для провайдера й поки що
|
||||
не належить до загального підшляху SDK. Вбудовані приклади:
|
||||
|
||||
- **Anthropic**: публічна межа `api.ts` / `contract-api.ts` для Claude
|
||||
beta-header і stream-хелперів `service_tier`.
|
||||
- **`@openclaw/openai-provider`**: `api.ts` експортує побудовники провайдера,
|
||||
хелпери типових моделей і побудовники realtime-провайдера.
|
||||
- **Anthropic**: публічний шов `api.ts` / `contract-api.ts` для Claude
|
||||
beta-header і потокових допоміжних засобів `service_tier`.
|
||||
- **`@openclaw/openai-provider`**: `api.ts` експортує побудовники провайдерів,
|
||||
допоміжні засоби типових моделей і побудовники провайдерів реального часу.
|
||||
- **`@openclaw/openrouter-provider`**: `api.ts` експортує побудовник провайдера
|
||||
плюс хелпери onboarding/config.
|
||||
разом із допоміжними засобами онбордингу/конфігурації.
|
||||
|
||||
<Warning>
|
||||
Production-код Extension також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
|
||||
Якщо хелпер справді спільний, піднесіть його до нейтрального підшляху SDK,
|
||||
такого як `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або інша
|
||||
поверхня, орієнтована на можливості, замість зв’язування двох Plugin-ів між собою.
|
||||
Виробничий код розширення також має уникати імпортів `openclaw/plugin-sdk/<other-plugin>`.
|
||||
Якщо допоміжний засіб справді спільний, просуньте його до нейтрального підшляху SDK,
|
||||
як-от `openclaw/plugin-sdk/speech`, `.../provider-model-shared` або іншої
|
||||
поверхні, орієнтованої на можливості, замість зв’язування двох плагінів між собою.
|
||||
</Warning>
|
||||
|
||||
## Пов’язане
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Entry points" icon="door-open" href="/uk/plugins/sdk-entrypoints">
|
||||
Опції `definePluginEntry` і `defineChannelPluginEntry`.
|
||||
<Card title="Точки входу" icon="door-open" href="/uk/plugins/sdk-entrypoints">
|
||||
Параметри `definePluginEntry` і `defineChannelPluginEntry`.
|
||||
</Card>
|
||||
<Card title="Runtime-хелпери" icon="gears" href="/uk/plugins/sdk-runtime">
|
||||
<Card title="Допоміжні засоби середовища виконання" icon="gears" href="/uk/plugins/sdk-runtime">
|
||||
Повний довідник простору імен `api.runtime`.
|
||||
</Card>
|
||||
<Card title="Setup і конфігурація" icon="sliders" href="/uk/plugins/sdk-setup">
|
||||
<Card title="Налаштування та конфігурація" icon="sliders" href="/uk/plugins/sdk-setup">
|
||||
Пакування, маніфести та схеми конфігурації.
|
||||
</Card>
|
||||
<Card title="Тестування" icon="vial" href="/uk/plugins/sdk-testing">
|
||||
Тестові утиліти та правила lint.
|
||||
Тестові утиліти та правила лінтингу.
|
||||
</Card>
|
||||
<Card title="Міграція SDK" icon="arrows-turn-right" href="/uk/plugins/sdk-migration">
|
||||
Міграція із застарілих поверхонь.
|
||||
</Card>
|
||||
<Card title="Внутрішня архітектура Plugin-а" icon="diagram-project" href="/uk/plugins/architecture">
|
||||
<Card title="Внутрішні механізми Plugin" icon="diagram-project" href="/uk/plugins/architecture">
|
||||
Глибока архітектура та модель можливостей.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви додаєте майстер налаштування до Plugin
|
||||
- Потрібно зрозуміти відмінності між setup-entry.ts і index.ts
|
||||
- Ви додаєте майстер налаштування для Plugin
|
||||
- Потрібно зрозуміти setup-entry.ts порівняно з index.ts
|
||||
- Ви визначаєте схеми конфігурації Plugin або метадані openclaw у package.json
|
||||
sidebarTitle: Setup and config
|
||||
summary: Майстри налаштування, setup-entry.ts, схеми конфігурації та метадані package.json
|
||||
title: Налаштування та конфігурація Plugin
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T20:40:50Z"
|
||||
generated_at: "2026-05-02T02:49:26Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: d61cbbeb3e9e303d098fcddf4ba101ff6717c232d5db4b36c28008c84bd32be8
|
||||
source_hash: 322cf8988da686d5bf7577f9825f6f8decb738f91563e4022c14bf16dca22824
|
||||
source_path: plugins/sdk-setup.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Довідник із пакування плагінів (метадані `package.json`), маніфестів (`openclaw.plugin.json`), записів налаштування та схем конфігурації.
|
||||
Довідка з пакування Plugin (метадані `package.json`), маніфестів (`openclaw.plugin.json`), записів налаштування та схем конфігурації.
|
||||
|
||||
<Tip>
|
||||
**Шукаєте покроковий посібник?** Практичні посібники охоплюють пакування в контексті: [плагіни каналів](/uk/plugins/sdk-channel-plugins#step-1-package-and-manifest) і [плагіни провайдерів](/uk/plugins/sdk-provider-plugins#step-1-package-and-manifest).
|
||||
**Шукаєте покроковий посібник?** Практичні посібники розглядають пакування в контексті: [Plugin каналів](/uk/plugins/sdk-channel-plugins#step-1-package-and-manifest) і [Plugin провайдерів](/uk/plugins/sdk-provider-plugins#step-1-package-and-manifest).
|
||||
</Tip>
|
||||
|
||||
## Метадані пакета
|
||||
|
||||
Ваш `package.json` потребує поля `openclaw`, яке повідомляє системі плагінів, що надає ваш плагін:
|
||||
Ваш `package.json` потребує поля `openclaw`, яке повідомляє системі Plugin, що надає ваш Plugin:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Channel plugin">
|
||||
@ -67,7 +67,7 @@ x-i18n:
|
||||
</Tabs>
|
||||
|
||||
<Note>
|
||||
Якщо ви публікуєте плагін зовнішньо в ClawHub, ці поля `compat` і `build` обов’язкові. Канонічні фрагменти публікації розташовані в `docs/snippets/plugin-publish/`.
|
||||
Якщо ви публікуєте Plugin зовнішньо на ClawHub, ці поля `compat` і `build` є обов’язковими. Канонічні фрагменти для публікації розташовані в `docs/snippets/plugin-publish/`.
|
||||
</Note>
|
||||
|
||||
### Поля `openclaw`
|
||||
@ -76,45 +76,45 @@ x-i18n:
|
||||
Файли точок входу (відносно кореня пакета).
|
||||
</ParamField>
|
||||
<ParamField path="setupEntry" type="string">
|
||||
Легкий запис лише для налаштування (необов’язково).
|
||||
Легка точка входу лише для налаштування (необов’язково).
|
||||
</ParamField>
|
||||
<ParamField path="channel" type="object">
|
||||
Метадані каталогу каналів для поверхонь налаштування, вибору, швидкого старту та статусу.
|
||||
Метадані каталогу каналів для поверхонь налаштування, вибору, швидкого старту та стану.
|
||||
</ParamField>
|
||||
<ParamField path="providers" type="string[]">
|
||||
Ідентифікатори провайдерів, зареєстровані цим плагіном.
|
||||
Ідентифікатори провайдерів, зареєстровані цим Plugin.
|
||||
</ParamField>
|
||||
<ParamField path="install" type="object">
|
||||
Підказки встановлення: `npmSpec`, `localPath`, `defaultChoice`, `minHostVersion`, `expectedIntegrity`, `allowInvalidConfigRecovery`.
|
||||
</ParamField>
|
||||
<ParamField path="startup" type="object">
|
||||
Прапорці поведінки запуску.
|
||||
Прапорці поведінки під час запуску.
|
||||
</ParamField>
|
||||
|
||||
### `openclaw.channel`
|
||||
|
||||
`openclaw.channel` — це легкі метадані пакета для виявлення каналів і поверхонь налаштування до завантаження середовища виконання.
|
||||
`openclaw.channel` — це легкі метадані пакета для виявлення каналів і поверхонь налаштування до завантаження runtime.
|
||||
|
||||
| Поле | Тип | Що це означає |
|
||||
| -------------------------------------- | ---------- | ----------------------------------------------------------------------------- |
|
||||
| `id` | `string` | Канонічний ідентифікатор каналу. |
|
||||
| `label` | `string` | Основна мітка каналу. |
|
||||
| `selectionLabel` | `string` | Мітка вибору/налаштування, коли вона має відрізнятися від `label`. |
|
||||
| `detailLabel` | `string` | Вторинна детальна мітка для розширених каталогів каналів і поверхонь статусу. |
|
||||
| `docsPath` | `string` | Шлях до документації для посилань налаштування та вибору. |
|
||||
| `docsLabel` | `string` | Перевизначення мітки для посилань на документацію, коли вона має відрізнятися від ідентифікатора каналу. |
|
||||
| `blurb` | `string` | Короткий опис для онбордингу/каталогу. |
|
||||
| `detailLabel` | `string` | Вторинна докладна мітка для розширених каталогів каналів і поверхонь стану. |
|
||||
| `docsPath` | `string` | Шлях документації для посилань налаштування й вибору. |
|
||||
| `docsLabel` | `string` | Перевизначає мітку, використану для посилань на документацію, коли вона має відрізнятися від ідентифікатора каналу. |
|
||||
| `blurb` | `string` | Короткий опис для onboarding/каталогу. |
|
||||
| `order` | `number` | Порядок сортування в каталогах каналів. |
|
||||
| `aliases` | `string[]` | Додаткові псевдоніми пошуку для вибору каналу. |
|
||||
| `preferOver` | `string[]` | Ідентифікатори плагінів/каналів із нижчим пріоритетом, які цей канал має випереджати. |
|
||||
| `systemImage` | `string` | Необов’язкова назва піктограми/системного зображення для UI-каталогів каналів. |
|
||||
| `selectionDocsPrefix` | `string` | Текст-префікс перед посиланнями на документацію в поверхнях вибору. |
|
||||
| `selectionDocsOmitLabel` | `boolean` | Показувати шлях документації напряму замість посилання на документацію з міткою в тексті вибору. |
|
||||
| `preferOver` | `string[]` | Ідентифікатори Plugin/каналів із нижчим пріоритетом, які цей канал має випереджати. |
|
||||
| `systemImage` | `string` | Необов’язкова назва іконки/system-image для UI-каталогів каналів. |
|
||||
| `selectionDocsPrefix` | `string` | Текст префікса перед посиланнями на документацію в поверхнях вибору. |
|
||||
| `selectionDocsOmitLabel` | `boolean` | Показувати шлях документації напряму замість підписаного посилання на документацію в тексті вибору. |
|
||||
| `selectionExtras` | `string[]` | Додаткові короткі рядки, додані до тексту вибору. |
|
||||
| `markdownCapable` | `boolean` | Позначає канал як придатний до markdown для рішень щодо вихідного форматування. |
|
||||
| `exposure` | `object` | Елементи керування видимістю каналу для налаштування, списків налаштованих каналів і поверхонь документації. |
|
||||
| `quickstartAllowFrom` | `boolean` | Додає цей канал до стандартного потоку швидкого старту `allowFrom`. |
|
||||
| `forceAccountBinding` | `boolean` | Вимагає явного прив’язування облікового запису, навіть коли існує лише один обліковий запис. |
|
||||
| `markdownCapable` | `boolean` | Позначає канал як здатний працювати з Markdown для рішень щодо вихідного форматування. |
|
||||
| `exposure` | `object` | Керування видимістю каналу для налаштування, списків налаштованого та поверхонь документації. |
|
||||
| `quickstartAllowFrom` | `boolean` | Додає цей канал до стандартного потоку налаштування швидкого старту `allowFrom`. |
|
||||
| `forceAccountBinding` | `boolean` | Вимагати явну прив’язку облікового запису, навіть коли існує лише один обліковий запис. |
|
||||
| `preferSessionLookupForAnnounceTarget` | `boolean` | Надавати перевагу пошуку сеансу під час визначення цілей оголошень для цього каналу. |
|
||||
|
||||
Приклад:
|
||||
@ -149,8 +149,8 @@ x-i18n:
|
||||
|
||||
`exposure` підтримує:
|
||||
|
||||
- `configured`: включати канал у поверхні списків налаштованих каналів/статусу
|
||||
- `setup`: включати канал в інтерактивні засоби вибору налаштування/конфігурації
|
||||
- `configured`: включати канал у поверхні списків налаштованого/стану
|
||||
- `setup`: включати канал в інтерактивні засоби вибору налаштування/конфігурування
|
||||
- `docs`: позначати канал як публічний у поверхнях документації/навігації
|
||||
|
||||
<Note>
|
||||
@ -161,24 +161,24 @@ x-i18n:
|
||||
|
||||
`openclaw.install` — це метадані пакета, а не метадані маніфесту.
|
||||
|
||||
| Поле | Тип | Що це означає |
|
||||
| ---------------------------- | -------------------- | -------------------------------------------------------------------------------- |
|
||||
| `npmSpec` | `string` | Канонічна специфікація npm для потоків встановлення/оновлення. |
|
||||
| `localPath` | `string` | Локальний шлях розробки або шлях до вбудованого встановлення. |
|
||||
| `defaultChoice` | `"npm"` \| `"local"` | Бажане джерело встановлення, коли доступні обидва. |
|
||||
| `minHostVersion` | `string` | Мінімальна підтримувана версія OpenClaw у формі `>=x.y.z`. |
|
||||
| Поле | Тип | Що це означає |
|
||||
| ---------------------------- | -------------------- | --------------------------------------------------------------------------------- |
|
||||
| `npmSpec` | `string` | Канонічна npm-специфікація для потоків встановлення/оновлення. |
|
||||
| `localPath` | `string` | Локальний шлях розробки або шлях встановлення в комплекті. |
|
||||
| `defaultChoice` | `"npm"` \| `"local"` | Бажане джерело встановлення, коли доступні обидва. |
|
||||
| `minHostVersion` | `string` | Мінімальна підтримувана версія OpenClaw у формі `>=x.y.z` або `>=x.y.z-prerelease`. |
|
||||
| `expectedIntegrity` | `string` | Очікуваний рядок цілісності npm dist, зазвичай `sha512-...`, для закріплених встановлень. |
|
||||
| `allowInvalidConfigRecovery` | `boolean` | Дозволяє потокам перевстановлення вбудованих плагінів відновлюватися після конкретних помилок застарілої конфігурації. |
|
||||
| `allowInvalidConfigRecovery` | `boolean` | Дозволяє потокам перевстановлення Plugin у комплекті відновлюватися після конкретних збоїв через застарілу конфігурацію. |
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Onboarding behavior">
|
||||
Інтерактивний онбординг також використовує `openclaw.install` для поверхонь встановлення на вимогу. Якщо ваш плагін показує варіанти автентифікації провайдера або метадані налаштування/каталогу каналу до завантаження середовища виконання, онбординг може показати цей вибір, запропонувати npm або локальне встановлення, встановити або ввімкнути плагін, а потім продовжити вибраний потік. Варіанти онбордингу npm потребують довірених метаданих каталогу з реєстровим `npmSpec`; точні версії та `expectedIntegrity` є необов’язковими закріпленнями. Якщо `expectedIntegrity` присутній, потоки встановлення/оновлення примусово його застосовують. Зберігайте метадані «що показувати» в `openclaw.plugin.json`, а метадані «як це встановити» — у `package.json`.
|
||||
Інтерактивний onboarding також використовує `openclaw.install` для поверхонь встановлення на вимогу. Якщо ваш Plugin надає вибір автентифікації провайдера або метадані налаштування/каталогу каналу до завантаження runtime, onboarding може показати цей вибір, запропонувати npm або локальне встановлення, встановити чи ввімкнути Plugin, а потім продовжити вибраний потік. Варіанти npm для onboarding потребують довірених метаданих каталогу з реєстровим `npmSpec`; точні версії та `expectedIntegrity` є необов’язковими закріпленнями. Якщо `expectedIntegrity` присутній, потоки встановлення/оновлення забезпечують його дотримання. Зберігайте метадані "що показувати" в `openclaw.plugin.json`, а метадані "як це встановити" — у `package.json`.
|
||||
</Accordion>
|
||||
<Accordion title="minHostVersion enforcement">
|
||||
Якщо `minHostVersion` задано, його примусово перевіряють як встановлення, так і завантаження реєстру маніфестів. Старіші хости пропускають плагін; недійсні рядки версій відхиляються.
|
||||
Якщо `minHostVersion` задано, і встановлення, і завантаження реєстру маніфестів для невбудованих Plugin забезпечують його дотримання. Старіші хости пропускають зовнішні Plugin; недійсні рядки версій відхиляються. Вбудовані вихідні Plugin вважаються версіонованими разом із checkout хоста.
|
||||
</Accordion>
|
||||
<Accordion title="Pinned npm installs">
|
||||
Для закріплених встановлень npm зберігайте точну версію в `npmSpec` і додайте очікувану цілісність артефакта:
|
||||
Для закріплених npm-встановлень зберігайте точну версію в `npmSpec` і додайте очікувану цілісність артефакта:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -194,13 +194,13 @@ x-i18n:
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="allowInvalidConfigRecovery scope">
|
||||
`allowInvalidConfigRecovery` не є загальним обходом для пошкоджених конфігурацій. Він призначений лише для вузького відновлення вбудованих плагінів, щоб перевстановлення/налаштування могло виправити відомі залишки оновлення, як-от відсутній шлях до вбудованого плагіна або застарілий запис `channels.<id>` для того самого плагіна. Якщо конфігурація пошкоджена з непов’язаних причин, встановлення все одно завершується закритою відмовою й повідомляє оператору запустити `openclaw doctor --fix`.
|
||||
`allowInvalidConfigRecovery` не є загальним обходом для зламаних конфігурацій. Він призначений лише для вузького відновлення Plugin у комплекті, щоб перевстановлення/налаштування могло виправити відомі залишки після оновлення, як-от відсутній шлях Plugin у комплекті або застарілий запис `channels.<id>` для того самого Plugin. Якщо конфігурація зламана з не пов’язаних причин, встановлення все одно безпечно завершується помилкою й повідомляє оператору запустити `openclaw doctor --fix`.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### Відкладене повне завантаження
|
||||
|
||||
Плагіни каналів можуть увімкнути відкладене завантаження за допомогою:
|
||||
Plugin каналів можуть увімкнути відкладене завантаження за допомогою:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -214,17 +214,17 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
Коли це ввімкнено, OpenClaw завантажує лише `setupEntry` під час етапу запуску до прослуховування, навіть для вже налаштованих каналів. Повний запис завантажується після того, як gateway починає прослуховування.
|
||||
Коли це ввімкнено, OpenClaw завантажує лише `setupEntry` під час фази запуску до початку прослуховування, навіть для вже налаштованих каналів. Повна точка входу завантажується після того, як Gateway починає прослуховування.
|
||||
|
||||
<Warning>
|
||||
Вмикайте відкладене завантаження лише тоді, коли ваш `setupEntry` реєструє все, що потрібно gateway до початку прослуховування (реєстрація каналу, HTTP-маршрути, методи gateway). Якщо повний запис володіє потрібними можливостями запуску, залиште поведінку за замовчуванням.
|
||||
Вмикайте відкладене завантаження лише тоді, коли ваш `setupEntry` реєструє все, що потрібно Gateway до початку прослуховування (реєстрація каналу, HTTP-маршрути, методи gateway). Якщо повна точка входу володіє потрібними можливостями запуску, залиште поведінку за замовчуванням.
|
||||
</Warning>
|
||||
|
||||
Якщо ваш запис налаштування/повний запис реєструє RPC-методи gateway, тримайте їх на префіксі, специфічному для плагіна. Зарезервовані основні простори імен адміністрування (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) залишаються власністю core і завжди розв’язуються в `operator.admin`.
|
||||
Якщо ваша точка входу setup/full реєструє gateway RPC-методи, тримайте їх на префіксі, специфічному для Plugin. Зарезервовані основні простори імен адміністратора (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) залишаються у власності core і завжди вирішуються до `operator.admin`.
|
||||
|
||||
## Маніфест Plugin
|
||||
|
||||
Кожен нативний плагін має постачати `openclaw.plugin.json` у корені пакета. OpenClaw використовує це для перевірки конфігурації без виконання коду плагіна.
|
||||
Кожен нативний Plugin має постачати `openclaw.plugin.json` у корені пакета. OpenClaw використовує його для перевірки конфігурації без виконання коду Plugin.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -244,7 +244,7 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
Для плагінів каналів додайте `kind` і `channels`:
|
||||
Для Plugin каналів додайте `kind` і `channels`:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -259,7 +259,7 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
Навіть плагіни без конфігурації мають постачати схему. Порожня схема є дійсною:
|
||||
Навіть Plugin без конфігурації мають постачати схему. Порожня схема є дійсною:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -271,11 +271,11 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
Див. [маніфест Plugin](/uk/plugins/manifest) для повного довідника схеми.
|
||||
Див. [Маніфест Plugin](/uk/plugins/manifest) для повної довідки зі схеми.
|
||||
|
||||
## Публікація в ClawHub
|
||||
## Публікація ClawHub
|
||||
|
||||
Для пакетів плагінів використовуйте команду ClawHub, специфічну для пакета:
|
||||
Для пакетів Plugin використовуйте специфічну для пакетів команду ClawHub:
|
||||
|
||||
```bash
|
||||
clawhub package publish your-org/your-plugin --dry-run
|
||||
@ -283,12 +283,12 @@ clawhub package publish your-org/your-plugin
|
||||
```
|
||||
|
||||
<Note>
|
||||
Застарілий псевдонім публікації лише для skill призначений для skills. Пакети плагінів завжди мають використовувати `clawhub package publish`.
|
||||
Застарілий псевдонім публікації лише для skills призначений для skills. Пакети Plugin мають завжди використовувати `clawhub package publish`.
|
||||
</Note>
|
||||
|
||||
## Запис налаштування
|
||||
|
||||
Файл `setup-entry.ts` — це легка альтернатива `index.ts`, яку OpenClaw завантажує, коли йому потрібні лише поверхні налаштування (онбординг, відновлення конфігурації, перевірка вимкненого каналу).
|
||||
Файл `setup-entry.ts` є легкою альтернативою `index.ts`, яку OpenClaw завантажує, коли потрібні лише поверхні налаштування (онбординг, відновлення конфігурації, перевірка вимкненого каналу).
|
||||
|
||||
```typescript
|
||||
// setup-entry.ts
|
||||
@ -298,9 +298,9 @@ import { myChannelPlugin } from "./src/channel.js";
|
||||
export default defineSetupPluginEntry(myChannelPlugin);
|
||||
```
|
||||
|
||||
Це запобігає завантаженню важкого runtime-коду (криптографічних бібліотек, реєстрацій CLI, фонових сервісів) під час потоків налаштування.
|
||||
Це уникає завантаження важкого коду runtime (криптографічних бібліотек, реєстрацій CLI, фонових сервісів) під час потоків налаштування.
|
||||
|
||||
Вбудовані канали робочого простору, які зберігають безпечні для налаштування експорти в допоміжних модулях, можуть використовувати `defineBundledChannelSetupEntry(...)` з `openclaw/plugin-sdk/channel-entry-contract` замість `defineSetupPluginEntry(...)`. Цей вбудований контракт також підтримує необов'язковий експорт `runtime`, щоб runtime-зв'язування під час налаштування залишалося легким і явним.
|
||||
Вбудовані канали робочої області, які тримають безпечні для налаштування експорти в супровідних модулях, можуть використовувати `defineBundledChannelSetupEntry(...)` з `openclaw/plugin-sdk/channel-entry-contract` замість `defineSetupPluginEntry(...)`. Цей вбудований контракт також підтримує необов’язковий експорт `runtime`, щоб runtime-зв’язування під час налаштування залишалося легким і явним.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Коли OpenClaw використовує setupEntry замість повного entry">
|
||||
@ -309,49 +309,49 @@ export default defineSetupPluginEntry(myChannelPlugin);
|
||||
- Увімкнено відкладене завантаження (`deferConfiguredChannelFullLoadUntilAfterListen`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Що setupEntry має зареєструвати">
|
||||
- Об'єкт Plugin каналу (через `defineSetupPluginEntry`).
|
||||
- Будь-які HTTP-маршрути, потрібні до прослуховування Gateway.
|
||||
<Accordion title="Що setupEntry має реєструвати">
|
||||
- Об’єкт Plugin каналу (через `defineSetupPluginEntry`).
|
||||
- Будь-які HTTP-маршрути, потрібні до запуску прослуховування Gateway.
|
||||
- Будь-які методи Gateway, потрібні під час запуску.
|
||||
|
||||
Ці стартові методи Gateway усе одно мають уникати зарезервованих адміністративних просторів імен ядра, таких як `config.*` або `update.*`.
|
||||
Ці стартові методи Gateway все одно мають уникати зарезервованих core-просторів імен адміністрування, як-от `config.*` або `update.*`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Що setupEntry НЕ має містити">
|
||||
- Реєстрації CLI.
|
||||
- Фонові сервіси.
|
||||
- Важкі runtime-імпорти (криптографія, SDK).
|
||||
- Методи Gateway, потрібні лише після запуску.
|
||||
<Accordion title="Чого setupEntry НЕ має містити">
|
||||
- Реєстрацій CLI.
|
||||
- Фонових сервісів.
|
||||
- Важких імпортів runtime (криптографія, SDK).
|
||||
- Методів Gateway, потрібних лише після запуску.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### Вузькі імпорти помічників налаштування
|
||||
### Вузькі імпорти допоміжних засобів налаштування
|
||||
|
||||
Для гарячих шляхів, призначених лише для налаштування, надавайте перевагу вузьким швам помічників налаштування замість ширшої парасольки `plugin-sdk/setup`, коли вам потрібна лише частина поверхні налаштування:
|
||||
Для гарячих шляхів лише налаштування віддавайте перевагу вузьким швам допоміжних засобів налаштування замість ширшої обгортки `plugin-sdk/setup`, коли вам потрібна лише частина поверхні налаштування:
|
||||
|
||||
| Шлях імпорту | Для чого використовувати | Ключові експорти |
|
||||
| ---------------------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `plugin-sdk/setup-runtime` | runtime-помічники часу налаштування, доступні в `setupEntry` / відкладеному запуску каналу | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
|
||||
| `plugin-sdk/setup-adapter-runtime` | адаптери налаштування облікових записів з урахуванням середовища | `createEnvPatchedAccountSetupAdapter` |
|
||||
| `plugin-sdk/setup-tools` | помічники CLI/archive/docs для налаштування/встановлення | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
|
||||
| `plugin-sdk/setup-runtime` | runtime-допоміжні засоби під час налаштування, які залишаються доступними в `setupEntry` / відкладеному запуску каналу | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
|
||||
| `plugin-sdk/setup-adapter-runtime` | адаптери налаштування облікового запису з урахуванням середовища | `createEnvPatchedAccountSetupAdapter` |
|
||||
| `plugin-sdk/setup-tools` | допоміжні засоби CLI/архівів/документації для налаштування/встановлення | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
|
||||
|
||||
Використовуйте ширший шов `plugin-sdk/setup`, коли потрібен повний спільний інструментарій налаштування, зокрема помічники config-patch, як-от `moveSingleAccountChannelSectionToDefaultAccount(...)`.
|
||||
Використовуйте ширший шов `plugin-sdk/setup`, коли вам потрібен повний спільний інструментарій налаштування, зокрема допоміжні засоби патчів конфігурації, як-от `moveSingleAccountChannelSectionToDefaultAccount(...)`.
|
||||
|
||||
Адаптери патчів налаштування залишаються безпечними для гарячого шляху під час імпорту. Їхній вбудований пошук поверхні контракту просування одного облікового запису є лінивим, тож імпорт `plugin-sdk/setup-runtime` не завантажує заздалегідь виявлення вбудованої поверхні контракту до фактичного використання адаптера.
|
||||
Адаптери патчів налаштування залишаються безпечними для імпорту на гарячому шляху. Їхній пошук поверхні контракту вбудованого підвищення одного облікового запису є лінивим, тож імпорт `plugin-sdk/setup-runtime` не завантажує заздалегідь виявлення вбудованої поверхні контракту до фактичного використання адаптера.
|
||||
|
||||
### Просування одного облікового запису, кероване каналом
|
||||
### Підвищення одного облікового запису, що належить каналу
|
||||
|
||||
Коли канал оновлюється з конфігурації верхнього рівня для одного облікового запису до `channels.<id>.accounts.*`, стандартна спільна поведінка переміщує просунуті значення, що належать до області облікового запису, в `accounts.default`.
|
||||
Коли канал переходить від конфігурації одного облікового запису верхнього рівня до `channels.<id>.accounts.*`, стандартна спільна поведінка переносить підвищені значення, прив’язані до облікового запису, в `accounts.default`.
|
||||
|
||||
Вбудовані канали можуть звузити або перевизначити це просування через свою поверхню контракту налаштування:
|
||||
Вбудовані канали можуть звузити або перевизначити це підвищення через свою поверхню контракту налаштування:
|
||||
|
||||
- `singleAccountKeysToMove`: додаткові ключі верхнього рівня, які потрібно перемістити до просунутого облікового запису
|
||||
- `namedAccountPromotionKeys`: коли іменовані облікові записи вже існують, лише ці ключі переміщуються до просунутого облікового запису; спільні ключі політики/доставки залишаються в корені каналу
|
||||
- `resolveSingleAccountPromotionTarget(...)`: виберіть, який наявний обліковий запис отримає просунуті значення
|
||||
- `singleAccountKeysToMove`: додаткові ключі верхнього рівня, які слід перенести до підвищеного облікового запису
|
||||
- `namedAccountPromotionKeys`: коли іменовані облікові записи вже існують, лише ці ключі переносяться до підвищеного облікового запису; спільні ключі політики/доставки залишаються в корені каналу
|
||||
- `resolveSingleAccountPromotionTarget(...)`: вибирає, який наявний обліковий запис отримує підвищені значення
|
||||
|
||||
<Note>
|
||||
Matrix є поточним вбудованим прикладом. Якщо вже існує рівно один іменований обліковий запис Matrix або якщо `defaultAccount` вказує на наявний неканонічний ключ, такий як `Ops`, просування зберігає цей обліковий запис замість створення нового запису `accounts.default`.
|
||||
Matrix є поточним вбудованим прикладом. Якщо вже існує рівно один іменований обліковий запис Matrix або якщо `defaultAccount` вказує на наявний неканонічний ключ, як-от `Ops`, підвищення зберігає цей обліковий запис замість створення нового запису `accounts.default`.
|
||||
</Note>
|
||||
|
||||
## Схема конфігурації
|
||||
@ -374,7 +374,7 @@ Matrix є поточним вбудованим прикладом. Якщо в
|
||||
|
||||
Ваш Plugin отримує цю конфігурацію як `api.pluginConfig` під час реєстрації.
|
||||
|
||||
Для конфігурації, специфічної для каналу, натомість використовуйте розділ конфігурації каналу:
|
||||
Для конфігурації, специфічної для каналу, використовуйте натомість розділ конфігурації каналу:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -387,7 +387,7 @@ Matrix є поточним вбудованим прикладом. Якщо в
|
||||
}
|
||||
```
|
||||
|
||||
### Побудова схем конфігурації каналів
|
||||
### Побудова схем конфігурації каналу
|
||||
|
||||
Використовуйте `buildChannelConfigSchema`, щоб перетворити схему Zod на обгортку `ChannelConfigSchema`, яку використовують артефакти конфігурації, що належать Plugin:
|
||||
|
||||
@ -405,11 +405,11 @@ const accountSchema = z.object({
|
||||
const configSchema = buildChannelConfigSchema(accountSchema);
|
||||
```
|
||||
|
||||
Для сторонніх plugins холодним шляхом контракту все ще є маніфест Plugin: віддзеркальте згенеровану JSON Schema в `openclaw.plugin.json#channelConfigs`, щоб схема конфігурації, налаштування та UI-поверхні могли перевіряти `channels.<id>` без завантаження runtime-коду.
|
||||
Для сторонніх plugins контракт холодного шляху все ще є маніфестом Plugin: віддзеркальте згенеровану JSON Schema в `openclaw.plugin.json#channelConfigs`, щоб схема конфігурації, налаштування й UI-поверхні могли перевіряти `channels.<id>` без завантаження runtime-коду.
|
||||
|
||||
## Майстри налаштування
|
||||
|
||||
Plugins каналів можуть надавати інтерактивні майстри налаштування для `openclaw onboard`. Майстер є об'єктом `ChannelSetupWizard` у `ChannelPlugin`:
|
||||
Plugins каналів можуть надавати інтерактивні майстри налаштування для `openclaw onboard`. Майстер є об’єктом `ChannelSetupWizard` у `ChannelPlugin`:
|
||||
|
||||
```typescript
|
||||
import type { ChannelSetupWizard } from "openclaw/plugin-sdk/channel-setup";
|
||||
@ -442,17 +442,17 @@ const setupWizard: ChannelSetupWizard = {
|
||||
};
|
||||
```
|
||||
|
||||
Тип `ChannelSetupWizard` підтримує `credentials`, `textInputs`, `dmPolicy`, `allowFrom`, `groupAccess`, `prepare`, `finalize` та інше. Повні приклади дивіться у пакетах вбудованих plugins (наприклад, у Plugin Discord `src/channel.setup.ts`).
|
||||
Тип `ChannelSetupWizard` підтримує `credentials`, `textInputs`, `dmPolicy`, `allowFrom`, `groupAccess`, `prepare`, `finalize` тощо. Повні приклади дивіться у вбудованих пакетах Plugin (наприклад, Plugin Discord `src/channel.setup.ts`).
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Спільні запити allowFrom">
|
||||
Для запитів allowlist DM, яким потрібен лише стандартний потік `note -> prompt -> parse -> merge -> patch`, надавайте перевагу спільним помічникам налаштування з `openclaw/plugin-sdk/setup`: `createPromptParsedAllowFromForAccount(...)`, `createTopLevelChannelParsedAllowFromPrompt(...)` і `createNestedChannelParsedAllowFromPrompt(...)`.
|
||||
Для запитів списку дозволених DM, яким потрібен лише стандартний потік `note -> prompt -> parse -> merge -> patch`, віддавайте перевагу спільним допоміжним засобам налаштування з `openclaw/plugin-sdk/setup`: `createPromptParsedAllowFromForAccount(...)`, `createTopLevelChannelParsedAllowFromPrompt(...)` і `createNestedChannelParsedAllowFromPrompt(...)`.
|
||||
</Accordion>
|
||||
<Accordion title="Стандартний статус налаштування каналу">
|
||||
Для блоків статусу налаштування каналу, які відрізняються лише мітками, оцінками та необов'язковими додатковими рядками, надавайте перевагу `createStandardChannelSetupStatus(...)` з `openclaw/plugin-sdk/setup` замість ручного створення того самого об'єкта `status` у кожному Plugin.
|
||||
Для блоків статусу налаштування каналу, які відрізняються лише мітками, оцінками та необов’язковими додатковими рядками, віддавайте перевагу `createStandardChannelSetupStatus(...)` з `openclaw/plugin-sdk/setup` замість ручного створення того самого об’єкта `status` у кожному Plugin.
|
||||
</Accordion>
|
||||
<Accordion title="Необов'язкова поверхня налаштування каналу">
|
||||
Для необов'язкових поверхонь налаштування, які мають з'являтися лише в певних контекстах, використовуйте `createOptionalChannelSetupSurface` з `openclaw/plugin-sdk/channel-setup`:
|
||||
<Accordion title="Необов’язкова поверхня налаштування каналу">
|
||||
Для необов’язкових поверхонь налаштування, які мають з’являтися лише в певних контекстах, використовуйте `createOptionalChannelSetupSurface` з `openclaw/plugin-sdk/channel-setup`:
|
||||
|
||||
```typescript
|
||||
import { createOptionalChannelSetupSurface } from "openclaw/plugin-sdk/channel-setup";
|
||||
@ -466,17 +466,17 @@ const setupWizard: ChannelSetupWizard = {
|
||||
// Returns { setupAdapter, setupWizard }
|
||||
```
|
||||
|
||||
`plugin-sdk/channel-setup` також надає нижчорівневі побудовники `createOptionalChannelSetupAdapter(...)` і `createOptionalChannelSetupWizard(...)`, коли вам потрібна лише одна половина цієї поверхні необов'язкового встановлення.
|
||||
`plugin-sdk/channel-setup` також надає нижчерівневі побудовники `createOptionalChannelSetupAdapter(...)` і `createOptionalChannelSetupWizard(...)`, коли вам потрібна лише одна половина цієї поверхні необов’язкового встановлення.
|
||||
|
||||
Згенерований необов'язковий адаптер/майстер закривається безпечно у разі реальних записів конфігурації. Вони повторно використовують одне повідомлення про необхідність встановлення в `validateInput`, `applyAccountConfig` і `finalize` та додають посилання на документацію, коли задано `docsPath`.
|
||||
Згенерований необов’язковий адаптер/майстер закрито відмовляє для реальних записів конфігурації. Вони повторно використовують одне повідомлення про необхідність встановлення в `validateInput`, `applyAccountConfig` і `finalize`, а також додають посилання на документацію, коли задано `docsPath`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Помічники налаштування на основі бінарних файлів">
|
||||
Для UI налаштування на основі бінарних файлів надавайте перевагу спільним делегованим помічникам замість копіювання того самого зв'язувального коду binary/status у кожен канал:
|
||||
<Accordion title="Допоміжні засоби налаштування на основі binary">
|
||||
Для UI налаштування на основі binary віддавайте перевагу спільним делегованим допоміжним засобам замість копіювання того самого зв’язування binary/статусу в кожен канал:
|
||||
|
||||
- `createDetectedBinaryStatus(...)` для блоків статусу, які відрізняються лише мітками, підказками, оцінками та виявленням бінарного файлу
|
||||
- `createCliPathTextInput(...)` для текстових вводів на основі шляху
|
||||
- `createDelegatedSetupWizardStatusResolvers(...)`, `createDelegatedPrepare(...)`, `createDelegatedFinalize(...)` і `createDelegatedResolveConfigured(...)`, коли `setupEntry` має ліниво переспрямовувати до важчого повного майстра
|
||||
- `createDetectedBinaryStatus(...)` для блоків статусу, що відрізняються лише мітками, підказками, оцінками та виявленням binary
|
||||
- `createCliPathTextInput(...)` для текстових полів на основі шляху
|
||||
- `createDelegatedSetupWizardStatusResolvers(...)`, `createDelegatedPrepare(...)`, `createDelegatedFinalize(...)` і `createDelegatedResolveConfigured(...)`, коли `setupEntry` потрібно ліниво переспрямовувати до важчого повного майстра
|
||||
- `createDelegatedTextInputShouldPrompt(...)`, коли `setupEntry` потрібно лише делегувати рішення `textInputs[*].shouldPrompt`
|
||||
|
||||
</Accordion>
|
||||
@ -484,7 +484,7 @@ const setupWizard: ChannelSetupWizard = {
|
||||
|
||||
## Публікація та встановлення
|
||||
|
||||
**Зовнішні plugins:** опублікуйте в [ClawHub](/uk/tools/clawhub), потім установіть:
|
||||
**Зовнішні plugins:** опублікуйте в [ClawHub](/uk/tools/clawhub), потім встановіть:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Автоматично (ClawHub, потім npm)">
|
||||
@ -492,7 +492,7 @@ const setupWizard: ChannelSetupWizard = {
|
||||
openclaw plugins install @myorg/openclaw-my-plugin
|
||||
```
|
||||
|
||||
OpenClaw спершу пробує ClawHub і автоматично повертається до npm.
|
||||
OpenClaw спочатку пробує ClawHub і автоматично переходить до npm у разі невдачі.
|
||||
|
||||
</Tab>
|
||||
<Tab title="Лише ClawHub">
|
||||
@ -500,7 +500,7 @@ const setupWizard: ChannelSetupWizard = {
|
||||
openclaw plugins install clawhub:@myorg/openclaw-my-plugin
|
||||
```
|
||||
</Tab>
|
||||
<Tab title="Специфікація пакета npm">
|
||||
<Tab title="Специфікація npm-пакета">
|
||||
Використовуйте npm, коли пакет ще не переміщено до ClawHub або коли вам потрібен
|
||||
прямий шлях встановлення npm під час міграції:
|
||||
|
||||
@ -511,26 +511,26 @@ const setupWizard: ChannelSetupWizard = {
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
**Plugins у репозиторії:** розміщуйте під деревом робочого простору вбудованих plugins, і їх буде автоматично виявлено під час збірки.
|
||||
**Plugins у репозиторії:** розміщуйте під деревом робочої області вбудованих plugins, і вони автоматично виявлятимуться під час збірки.
|
||||
|
||||
**Користувачі можуть установити:**
|
||||
**Користувачі можуть встановити:**
|
||||
|
||||
```bash
|
||||
openclaw plugins install <package-name>
|
||||
```
|
||||
|
||||
<Info>
|
||||
Для встановлень із npm `openclaw plugins install` встановлює пакет у `~/.openclaw/npm` з вимкненими lifecycle-скриптами. Тримайте дерева залежностей Plugin чистими JS/TS і уникайте пакетів, які потребують збірок `postinstall`.
|
||||
Для встановлень із npm `openclaw plugins install` встановлює пакет у `~/.openclaw/npm` з вимкненими lifecycle-скриптами. Тримайте дерева залежностей Plugin чистими JS/TS і уникайте пакетів, які потребують `postinstall`-збірок.
|
||||
</Info>
|
||||
|
||||
<Note>
|
||||
Запуск Gateway не встановлює залежності Plugin. Потоки встановлення npm/git/ClawHub відповідають за узгодження залежностей; локальні plugins уже повинні мати встановлені залежності.
|
||||
Запуск Gateway не встановлює залежності Plugin. Потоки встановлення npm/git/ClawHub відповідають за збіжність залежностей; локальні plugins уже мають мати встановлені свої залежності.
|
||||
</Note>
|
||||
|
||||
Метадані пакетів у комплекті задаються явно, а не виводяться зі зібраного JavaScript під час запуску Gateway. Залежності часу виконання мають бути в пакеті Plugin, якому вони належать; запуск запакованого OpenClaw ніколи не виправляє й не віддзеркалює залежності Plugin.
|
||||
Метадані вбудованого пакета задаються явно, а не виводяться зі зібраного JavaScript під час запуску Gateway. Runtime-залежності мають бути в пакеті Plugin, якому вони належать; запуск пакетованого OpenClaw ніколи не виправляє й не дзеркалить залежності Plugin.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Створення plugins](/uk/plugins/building-plugins) — покроковий посібник для початку роботи
|
||||
- [Маніфест Plugin](/uk/plugins/manifest) — повний довідник схеми маніфесту
|
||||
- [Точки входу SDK](/uk/plugins/sdk-entrypoints) — `definePluginEntry` і `defineChannelPluginEntry`
|
||||
- [Маніфест Plugin](/uk/plugins/manifest) — повна довідка зі схеми маніфесту
|
||||
- [Точки входу SDK](/uk/plugins/sdk-entrypoints) — `definePluginEntry` та `defineChannelPluginEntry`
|
||||
|
||||
@ -1,37 +1,38 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете використовувати моделі Google Gemini з OpenClaw
|
||||
- Потрібен ключ API або потік автентифікації OAuth
|
||||
- Вам потрібен ключ API або потік автентифікації OAuth
|
||||
summary: Налаштування Google Gemini (ключ API + OAuth, генерація зображень, розуміння медіа, TTS, вебпошук)
|
||||
title: Google (Gemini)
|
||||
x-i18n:
|
||||
generated_at: "2026-04-28T11:22:43Z"
|
||||
generated_at: "2026-05-02T02:49:08Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: ea4b53dcea10fef67920da3baca4c85325ee4d4da780fbf708b67bc618e064a6
|
||||
source_hash: 17d7694408dd02ea87d71530a544ad45e0284a973803f76313338a5065b3f7d5
|
||||
source_path: providers/google.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Plugin Google надає доступ до моделей Gemini через Google AI Studio, а також генерацію зображень, розуміння медіа (зображення/аудіо/відео), перетворення тексту на мовлення та вебпошук через
|
||||
Plugin Google надає доступ до моделей Gemini через Google AI Studio, а також
|
||||
генерацію зображень, розуміння медіа (зображення/аудіо/відео), перетворення тексту на мовлення та вебпошук через
|
||||
Gemini Grounding.
|
||||
|
||||
- Провайдер: `google`
|
||||
- Автентифікація: `GEMINI_API_KEY` або `GOOGLE_API_KEY`
|
||||
- API: Google Gemini API
|
||||
- Опція середовища виконання: `agents.defaults.agentRuntime.id: "google-gemini-cli"`
|
||||
повторно використовує OAuth Gemini CLI, зберігаючи посилання на моделі канонічними як `google/*`.
|
||||
повторно використовує OAuth Gemini CLI, водночас зберігаючи посилання на моделі канонічними як `google/*`.
|
||||
|
||||
## Початок роботи
|
||||
|
||||
Виберіть бажаний спосіб автентифікації та виконайте кроки налаштування.
|
||||
Виберіть бажаний метод автентифікації та виконайте кроки налаштування.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Ключ API">
|
||||
**Найкраще для:** стандартного доступу до Gemini API через Google AI Studio.
|
||||
|
||||
<Steps>
|
||||
<Step title="Запустіть початкове налаштування">
|
||||
<Step title="Запустіть онбординг">
|
||||
```bash
|
||||
openclaw onboard --auth-choice gemini-api-key
|
||||
```
|
||||
@ -64,7 +65,7 @@ Gemini Grounding.
|
||||
</Steps>
|
||||
|
||||
<Tip>
|
||||
Змінні середовища `GEMINI_API_KEY` і `GOOGLE_API_KEY` приймаються обидві. Використовуйте ту, яку вже налаштовано.
|
||||
Змінні середовища `GEMINI_API_KEY` і `GOOGLE_API_KEY` обидві підтримуються. Використовуйте ту, яку вже налаштовано.
|
||||
</Tip>
|
||||
|
||||
</Tab>
|
||||
@ -74,12 +75,12 @@ Gemini Grounding.
|
||||
|
||||
<Warning>
|
||||
Провайдер `google-gemini-cli` є неофіційною інтеграцією. Деякі користувачі
|
||||
повідомляють про обмеження облікового запису під час використання OAuth у такий спосіб. Використовуйте на власний ризик.
|
||||
повідомляють про обмеження облікових записів під час використання OAuth у такий спосіб. Використовуйте на власний ризик.
|
||||
</Warning>
|
||||
|
||||
<Steps>
|
||||
<Step title="Установіть Gemini CLI">
|
||||
Локальна команда `gemini` має бути доступною в `PATH`.
|
||||
Локальна команда `gemini` має бути доступна в `PATH`.
|
||||
|
||||
```bash
|
||||
# Homebrew
|
||||
@ -89,8 +90,8 @@ Gemini Grounding.
|
||||
npm install -g @google/gemini-cli
|
||||
```
|
||||
|
||||
OpenClaw підтримує як установлення через Homebrew, так і глобальне встановлення через npm, зокрема
|
||||
поширені макети Windows/npm.
|
||||
OpenClaw підтримує встановлення через Homebrew і глобальні встановлення npm, включно з
|
||||
поширеними структурами Windows/npm.
|
||||
</Step>
|
||||
<Step title="Увійдіть через OAuth">
|
||||
```bash
|
||||
@ -118,13 +119,13 @@ Gemini Grounding.
|
||||
(Або варіанти `GEMINI_CLI_*`.)
|
||||
|
||||
<Note>
|
||||
Якщо запити Gemini CLI OAuth не виконуються після входу, задайте `GOOGLE_CLOUD_PROJECT` або
|
||||
Якщо запити Gemini CLI OAuth не вдаються після входу, задайте `GOOGLE_CLOUD_PROJECT` або
|
||||
`GOOGLE_CLOUD_PROJECT_ID` на хості Gateway і повторіть спробу.
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
Якщо вхід завершується помилкою до запуску потоку в браузері, переконайтеся, що локальну команду `gemini`
|
||||
встановлено і вона є в `PATH`.
|
||||
Якщо вхід не вдається до запуску браузерного потоку, переконайтеся, що локальну команду `gemini`
|
||||
установлено і вона є в `PATH`.
|
||||
</Note>
|
||||
|
||||
Посилання на моделі `google-gemini-cli/*` є застарілими псевдонімами сумісності. Нові
|
||||
@ -137,33 +138,60 @@ Gemini Grounding.
|
||||
## Можливості
|
||||
|
||||
| Можливість | Підтримується |
|
||||
| ---------------------- | ----------------------------- |
|
||||
| Чат-доповнення | Так |
|
||||
| Генерація зображень | Так |
|
||||
| Генерація музики | Так |
|
||||
| Перетворення тексту на мовлення | Так |
|
||||
| Голос у реальному часі | Так (Google Live API) |
|
||||
| Розуміння зображень | Так |
|
||||
| Транскрипція аудіо | Так |
|
||||
| Розуміння відео | Так |
|
||||
| Вебпошук (Grounding) | Так |
|
||||
| ---------------------- | ---------------------------- |
|
||||
| Завершення чату | Так |
|
||||
| Генерація зображень | Так |
|
||||
| Генерація музики | Так |
|
||||
| Перетворення тексту на мовлення | Так |
|
||||
| Голос у реальному часі | Так (Google Live API) |
|
||||
| Розуміння зображень | Так |
|
||||
| Транскрипція аудіо | Так |
|
||||
| Розуміння відео | Так |
|
||||
| Вебпошук (Grounding) | Так |
|
||||
| Мислення/міркування | Так (Gemini 2.5+ / Gemini 3+) |
|
||||
| Моделі Gemma 4 | Так |
|
||||
| Моделі Gemma 4 | Так |
|
||||
|
||||
## Вебпошук
|
||||
|
||||
Вбудований провайдер вебпошуку `gemini` використовує заземлення Gemini Google Search.
|
||||
Налаштуйте його в `plugins.entries.google.config.webSearch`:
|
||||
|
||||
```json5
|
||||
{
|
||||
plugins: {
|
||||
entries: {
|
||||
google: {
|
||||
config: {
|
||||
webSearch: {
|
||||
apiKey: "AIza...", // optional if GEMINI_API_KEY is set
|
||||
baseUrl: "https://generativelanguage.googleapis.com/v1beta",
|
||||
model: "gemini-2.5-flash",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
`webSearch.baseUrl` є необов'язковим і призначений для операторських проксі або сумісних
|
||||
кінцевих точок Gemini API. Див. [Пошук Gemini](/uk/tools/gemini-search) щодо
|
||||
поведінки інструмента, специфічної для провайдера.
|
||||
|
||||
<Tip>
|
||||
Моделі Gemini 3 використовують `thinkingLevel` замість `thinkingBudget`. OpenClaw зіставляє
|
||||
керування міркуванням для Gemini 3, Gemini 3.1 і псевдонімів `gemini-*-latest` із
|
||||
`thinkingLevel`, щоб запуски за замовчуванням або з малою затримкою не надсилали вимкнені
|
||||
Моделі Gemini 3 використовують `thinkingLevel`, а не `thinkingBudget`. OpenClaw зіставляє
|
||||
керування міркуваннями для Gemini 3, Gemini 3.1 і псевдонімів `gemini-*-latest` з
|
||||
`thinkingLevel`, щоб запуски за замовчуванням/із низькою затримкою не надсилали вимкнені
|
||||
значення `thinkingBudget`.
|
||||
|
||||
`/think adaptive` зберігає динамічну семантику мислення Google замість вибору
|
||||
фіксованого рівня OpenClaw. Gemini 3 і Gemini 3.1 не передають фіксований `thinkingLevel`, щоб
|
||||
Google міг вибрати рівень; Gemini 2.5 надсилає динамічний маркер Google
|
||||
фіксованого рівня OpenClaw. Gemini 3 і Gemini 3.1 пропускають фіксований `thinkingLevel`, щоб
|
||||
Google міг вибрати рівень; Gemini 2.5 надсилає динамічний sentinel Google
|
||||
`thinkingBudget: -1`.
|
||||
|
||||
Моделі Gemma 4 (наприклад `gemma-4-26b-a4b-it`) підтримують режим мислення. OpenClaw
|
||||
переписує `thinkingBudget` у підтримуваний Google `thinkingLevel` для Gemma 4.
|
||||
Якщо встановити мислення на `off`, воно залишається вимкненим замість зіставлення з
|
||||
Установлення мислення в `off` зберігає вимкнене мислення замість зіставлення з
|
||||
`MINIMAL`.
|
||||
</Tip>
|
||||
|
||||
@ -174,7 +202,7 @@ Google міг вибрати рівень; Gemini 2.5 надсилає дина
|
||||
|
||||
- Також підтримує `google/gemini-3-pro-image-preview`
|
||||
- Генерація: до 4 зображень на запит
|
||||
- Режим редагування: увімкнений, до 5 вхідних зображень
|
||||
- Режим редагування: увімкнено, до 5 вхідних зображень
|
||||
- Керування геометрією: `size`, `aspectRatio` і `resolution`
|
||||
|
||||
Щоб використовувати Google як провайдера зображень за замовчуванням:
|
||||
@ -201,7 +229,7 @@ Google міг вибрати рівень; Gemini 2.5 надсилає дина
|
||||
інструмент `video_generate`.
|
||||
|
||||
- Модель відео за замовчуванням: `google/veo-3.1-fast-generate-preview`
|
||||
- Режими: текст-у-відео, зображення-у-відео та потоки з посиланням на одне відео
|
||||
- Режими: текст-у-відео, зображення-у-відео та потоки посилання на одне відео
|
||||
- Підтримує `aspectRatio`, `resolution` і `audio`
|
||||
- Поточне обмеження тривалості: **від 4 до 8 секунд**
|
||||
|
||||
@ -231,9 +259,9 @@ Google міг вибрати рівень; Gemini 2.5 надсилає дина
|
||||
- Модель музики за замовчуванням: `google/lyria-3-clip-preview`
|
||||
- Також підтримує `google/lyria-3-pro-preview`
|
||||
- Керування промптом: `lyrics` і `instrumental`
|
||||
- Формат виводу: `mp3` за замовчуванням, а також `wav` у `google/lyria-3-pro-preview`
|
||||
- Референсні входи: до 10 зображень
|
||||
- Запуски, підтримувані сеансом, від’єднуються через спільний потік завдань/статусу, зокрема `action: "status"`
|
||||
- Формат виводу: `mp3` за замовчуванням, плюс `wav` на `google/lyria-3-pro-preview`
|
||||
- Вхідні референси: до 10 зображень
|
||||
- Запуски з підтримкою сесії від'єднуються через спільний потік завдання/статусу, включно з `action: "status"`
|
||||
|
||||
Щоб використовувати Google як провайдера музики за замовчуванням:
|
||||
|
||||
@ -255,7 +283,7 @@ Google міг вибрати рівень; Gemini 2.5 надсилає дина
|
||||
|
||||
## Перетворення тексту на мовлення
|
||||
|
||||
Вбудований мовленнєвий провайдер `google` використовує шлях TTS Gemini API з
|
||||
Вбудований мовленнєвий провайдер `google` використовує шлях Gemini API TTS із
|
||||
`gemini-3.1-flash-tts-preview`.
|
||||
|
||||
- Голос за замовчуванням: `Kore`
|
||||
@ -285,9 +313,9 @@ Google міг вибрати рівень; Gemini 2.5 надсилає дина
|
||||
|
||||
Gemini API TTS використовує промпти природною мовою для керування стилем. Установіть
|
||||
`audioProfile`, щоб додавати багаторазовий стильовий промпт перед озвучуваним текстом. Установіть
|
||||
`speakerName`, коли текст промпта посилається на іменованого мовця.
|
||||
`speakerName`, коли текст промпта посилається на названого мовця.
|
||||
|
||||
Gemini API TTS також приймає виразні аудіотеги у квадратних дужках у тексті,
|
||||
Gemini API TTS також приймає виразні аудіотеги в квадратних дужках у тексті,
|
||||
наприклад `[whispers]` або `[laughs]`. Щоб теги не відображалися у видимій відповіді чату,
|
||||
але надсилалися до TTS, помістіть їх у блок `[[tts:text]]...[[/tts:text]]`:
|
||||
|
||||
@ -298,29 +326,29 @@ Here is the clean reply text.
|
||||
```
|
||||
|
||||
<Note>
|
||||
Ключ API Google Cloud Console, обмежений Gemini API, є дійсним для цього
|
||||
Ключ API Google Cloud Console, обмежений Gemini API, є чинним для цього
|
||||
провайдера. Це не окремий шлях Cloud Text-to-Speech API.
|
||||
</Note>
|
||||
|
||||
## Голос у реальному часі
|
||||
|
||||
Вбудований Plugin `google` реєструє провайдера голосу в реальному часі на базі
|
||||
Gemini Live API для бекендних аудіомостів, таких як Voice Call і Google Meet.
|
||||
Gemini Live API для бекенд-аудіомостів, як-от Voice Call і Google Meet.
|
||||
|
||||
| Налаштування | Шлях конфігурації | Значення за замовчуванням |
|
||||
| Налаштування | Шлях конфігурації | За замовчуванням |
|
||||
| --------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
||||
| Модель | `plugins.entries.voice-call.config.realtime.providers.google.model` | `gemini-2.5-flash-native-audio-preview-12-2025` |
|
||||
| Голос | `...google.voice` | `Kore` |
|
||||
| Температура | `...google.temperature` | (не задано) |
|
||||
| Чутливість початку VAD | `...google.startSensitivity` | (не задано) |
|
||||
| Чутливість завершення VAD | `...google.endSensitivity` | (не задано) |
|
||||
| Чутливість завершення VAD | `...google.endSensitivity` | (не задано) |
|
||||
| Тривалість тиші | `...google.silenceDurationMs` | (не задано) |
|
||||
| Обробка активності | `...google.activityHandling` | Значення Google за замовчуванням, `start-of-activity-interrupts` |
|
||||
| Покриття репліки | `...google.turnCoverage` | Значення Google за замовчуванням, `only-activity` |
|
||||
| Обробка активності | `...google.activityHandling` | За замовчуванням Google, `start-of-activity-interrupts` |
|
||||
| Покриття репліки | `...google.turnCoverage` | За замовчуванням Google, `only-activity` |
|
||||
| Вимкнути автоматичний VAD | `...google.automaticActivityDetectionDisabled` | `false` |
|
||||
| Ключ API | `...google.apiKey` | Повертається до `models.providers.google.apiKey`, `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
|
||||
Приклад конфігурації Voice Call у реальному часі:
|
||||
Приклад конфігурації реального часу Voice Call:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -349,22 +377,22 @@ Gemini Live API для бекендних аудіомостів, таких я
|
||||
```
|
||||
|
||||
<Note>
|
||||
Google Live API використовує двоспрямоване аудіо та виклик функцій через WebSocket.
|
||||
OpenClaw адаптує аудіо телефонії/моста Meet до потоку PCM Live API від Gemini і
|
||||
зберігає виклики інструментів у спільному контракті голосу в реальному часі. Залишайте `temperature`
|
||||
невстановленим, якщо вам не потрібні зміни семплінгу; OpenClaw пропускає непозитивні значення,
|
||||
оскільки Google Live може повертати транскрипти без аудіо для `temperature: 0`.
|
||||
Транскрибування Gemini API вмикається без `languageCodes`; поточний Google
|
||||
SDK відхиляє підказки кодів мов у цьому шляху API.
|
||||
Google Live API використовує двонапрямний звук і виклик функцій через WebSocket.
|
||||
OpenClaw адаптує звук телефонії/моста Meet до потоку Gemini PCM Live API і
|
||||
зберігає виклики інструментів у спільному контракті голосу реального часу. Залиште `temperature`
|
||||
незаданим, якщо вам не потрібні зміни семплювання; OpenClaw пропускає непозитивні значення,
|
||||
оскільки Google Live може повертати транскрипти без звуку для `temperature: 0`.
|
||||
Транскрипцію Gemini API увімкнено без `languageCodes`; поточний Google
|
||||
SDK відхиляє підказки кодів мов на цьому шляху API.
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
Control UI Talk підтримує браузерні сесії Google Live з обмеженими одноразовими
|
||||
токенами. Провайдери голосу в реальному часі лише для бекенда також можуть працювати через загальний
|
||||
транспорт ретрансляції Gateway, який зберігає облікові дані провайдера на Gateway.
|
||||
Control UI Talk підтримує браузерні сеанси Google Live з обмеженими одноразовими
|
||||
токенами. Постачальники голосу реального часу, що працюють лише на бекенді, також можуть працювати через загальний
|
||||
транспорт ретрансляції Gateway, який зберігає облікові дані постачальника на Gateway.
|
||||
</Note>
|
||||
|
||||
Для живої перевірки мейнтейнерами виконайте
|
||||
Для live-перевірки супровідником виконайте
|
||||
`OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts`.
|
||||
Гілка Google випускає токен Live API тієї самої обмеженої форми, яку використовує Control
|
||||
UI Talk, відкриває браузерну кінцеву точку WebSocket, надсилає початкове корисне навантаження налаштування
|
||||
@ -379,9 +407,9 @@ UI Talk, відкриває браузерну кінцеву точку WebSock
|
||||
|
||||
- Налаштуйте параметри для окремої моделі або глобально за допомогою
|
||||
`cachedContent` або застарілого `cached_content`
|
||||
- Якщо присутні обидва, перевагу має `cachedContent`
|
||||
- Якщо присутні обидва, пріоритет має `cachedContent`
|
||||
- Приклад значення: `cachedContents/prebuilt-context`
|
||||
- Використання влучень кешу Gemini нормалізується в OpenClaw `cacheRead` з
|
||||
- Використання потрапляння в кеш Gemini нормалізується в OpenClaw `cacheRead` з
|
||||
upstream `cachedContentTokenCount`
|
||||
|
||||
```json5
|
||||
@ -402,11 +430,11 @@ UI Talk, відкриває браузерну кінцеву точку WebSock
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Примітки щодо використання JSON у Gemini CLI">
|
||||
Під час використання OAuth-провайдера `google-gemini-cli` OpenClaw нормалізує
|
||||
<Accordion title="Нотатки щодо використання JSON у Gemini CLI">
|
||||
Під час використання OAuth-постачальника `google-gemini-cli` OpenClaw нормалізує
|
||||
JSON-вивід CLI так:
|
||||
|
||||
- Текст відповіді береться з поля CLI JSON `response`.
|
||||
- Текст відповіді надходить із поля CLI JSON `response`.
|
||||
- Використання повертається до `stats`, коли CLI залишає `usage` порожнім.
|
||||
- `stats.cached` нормалізується в OpenClaw `cacheRead`.
|
||||
- Якщо `stats.input` відсутній, OpenClaw виводить вхідні токени з
|
||||
@ -414,7 +442,7 @@ UI Talk, відкриває браузерну кінцеву точку WebSock
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування середовища та демона">
|
||||
<Accordion title="Налаштування середовища й демона">
|
||||
Якщо Gateway працює як демон (launchd/systemd), переконайтеся, що `GEMINI_API_KEY`
|
||||
доступний цьому процесу (наприклад, у `~/.openclaw/.env` або через
|
||||
`env.shellEnv`).
|
||||
@ -425,15 +453,15 @@ UI Talk, відкриває браузерну кінцеву точку WebSock
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Вибір моделі" href="/uk/concepts/model-providers" icon="layers">
|
||||
Вибір провайдерів, посилань на моделі та поведінки failover.
|
||||
Вибір постачальників, посилань на моделі й поведінки відмовостійкого перемикання.
|
||||
</Card>
|
||||
<Card title="Генерація зображень" href="/uk/tools/image-generation" icon="image">
|
||||
Спільні параметри інструмента зображень і вибір провайдера.
|
||||
Спільні параметри інструменту зображень і вибір постачальника.
|
||||
</Card>
|
||||
<Card title="Генерація відео" href="/uk/tools/video-generation" icon="video">
|
||||
Спільні параметри інструмента відео та вибір провайдера.
|
||||
Спільні параметри інструменту відео й вибір постачальника.
|
||||
</Card>
|
||||
<Card title="Генерація музики" href="/uk/tools/music-generation" icon="music">
|
||||
Спільні параметри інструмента музики та вибір провайдера.
|
||||
Спільні параметри інструменту музики й вибір постачальника.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -5,31 +5,31 @@ read_when:
|
||||
summary: Використовуйте моделі xAI Grok в OpenClaw
|
||||
title: xAI
|
||||
x-i18n:
|
||||
generated_at: "2026-05-02T01:45:06Z"
|
||||
generated_at: "2026-05-02T02:49:09Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 9366d6a053fb515d843bbb984ee0fce2eb342a022a6d9aa60df983fc0f8d5745
|
||||
source_hash: 7f36b597fd5c47b61724080deb0d545bca024aca17744fc8aa6a0eb4872d12d2
|
||||
source_path: providers/xai.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw постачається з вбудованим плагіном провайдера `xai` для моделей Grok.
|
||||
OpenClaw постачається з вбудованим Plugin провайдера `xai` для моделей Grok.
|
||||
|
||||
## Початок роботи
|
||||
|
||||
<Steps>
|
||||
<Step title="Create an API key">
|
||||
<Step title="Створіть API-ключ">
|
||||
Створіть API-ключ у [консолі xAI](https://console.x.ai/).
|
||||
</Step>
|
||||
<Step title="Set your API key">
|
||||
Задайте `XAI_API_KEY` або виконайте:
|
||||
<Step title="Налаштуйте свій API-ключ">
|
||||
Налаштуйте `XAI_API_KEY` або виконайте:
|
||||
|
||||
```bash
|
||||
openclaw onboard --auth-choice xai-api-key
|
||||
```
|
||||
|
||||
</Step>
|
||||
<Step title="Pick a model">
|
||||
<Step title="Виберіть модель">
|
||||
```json5
|
||||
{
|
||||
agents: { defaults: { model: { primary: "xai/grok-4.3" } } },
|
||||
@ -40,18 +40,20 @@ OpenClaw постачається з вбудованим плагіном пр
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує xAI Responses API як вбудований транспорт xAI. Той самий
|
||||
`XAI_API_KEY` також може забезпечувати `web_search` на базі Grok, першокласний
|
||||
`x_search` і віддалене `code_execution`.
|
||||
`XAI_API_KEY` також може забезпечувати `web_search` на базі Grok, повноцінний `x_search`
|
||||
і віддалене `code_execution`.
|
||||
Якщо ви зберігаєте ключ xAI у `plugins.entries.xai.config.webSearch.apiKey`,
|
||||
вбудований провайдер моделей xAI також повторно використовує цей ключ як резервний.
|
||||
Налаштування `code_execution` розміщено в `plugins.entries.xai.config.codeExecution`.
|
||||
вбудований провайдер моделей xAI також використовує цей ключ як резервний.
|
||||
Налаштуйте `plugins.entries.xai.config.webSearch.baseUrl`, щоб спрямовувати Grok `web_search`
|
||||
і, за замовчуванням, `x_search` через операторський проксі xAI Responses.
|
||||
Налаштування `code_execution` розміщені в `plugins.entries.xai.config.codeExecution`.
|
||||
</Note>
|
||||
|
||||
## Вбудований каталог
|
||||
|
||||
OpenClaw одразу містить такі сімейства моделей xAI:
|
||||
OpenClaw одразу включає такі сімейства моделей xAI:
|
||||
|
||||
| Сімейство | Ідентифікатори моделей |
|
||||
| Сімейство | Ідентифікатори моделей |
|
||||
| -------------- | ------------------------------------------------------------------------ |
|
||||
| Grok 3 | `grok-3`, `grok-3-fast`, `grok-3-mini`, `grok-3-mini-fast` |
|
||||
| Grok 4.3 | `grok-4.3` |
|
||||
@ -61,8 +63,8 @@ OpenClaw одразу містить такі сімейства моделей
|
||||
| Grok 4.20 Beta | `grok-4.20-beta-latest-reasoning`, `grok-4.20-beta-latest-non-reasoning` |
|
||||
| Grok Code | `grok-code-fast-1` |
|
||||
|
||||
Плагін також перенаправляє новіші ідентифікатори `grok-4*` і `grok-code-fast*`,
|
||||
коли вони мають таку саму форму API.
|
||||
Plugin також напряму розпізнає новіші ідентифікатори `grok-4*` і `grok-code-fast*`, коли
|
||||
вони використовують ту саму форму API.
|
||||
|
||||
<Tip>
|
||||
`grok-4.3`, `grok-4-fast`, `grok-4-1-fast` і варіанти `grok-4.20-beta-*`
|
||||
@ -71,12 +73,12 @@ OpenClaw одразу містить такі сімейства моделей
|
||||
|
||||
## Покриття функцій OpenClaw
|
||||
|
||||
Вбудований плагін відображає поточну публічну поверхню API xAI на спільні
|
||||
контракти провайдерів та інструментів OpenClaw. Можливості, які не вписуються
|
||||
у спільний контракт (наприклад, потоковий TTS і голос у реальному часі), не
|
||||
експонуються — див. таблицю нижче.
|
||||
Вбудований Plugin відображає поточну публічну поверхню API xAI на спільні
|
||||
контракти провайдера й інструментів OpenClaw. Можливості, які не вкладаються у спільний контракт
|
||||
(наприклад, потоковий TTS і голос у реальному часі), не експонуються — див. таблицю
|
||||
нижче.
|
||||
|
||||
| Можливість xAI | Поверхня OpenClaw | Стан |
|
||||
| Можливість xAI | Поверхня OpenClaw | Статус |
|
||||
| -------------------------- | ----------------------------------------- | ------------------------------------------------------------------- |
|
||||
| Chat / Responses | провайдер моделей `xai/<model>` | Так |
|
||||
| Серверний вебпошук | провайдер `web_search` `grok` | Так |
|
||||
@ -88,45 +90,45 @@ OpenClaw одразу містить такі сімейства моделей
|
||||
| Потоковий TTS | — | Не експонується; контракт TTS OpenClaw повертає повні аудіобуфери |
|
||||
| Пакетний speech-to-text | `tools.media.audio` / розуміння медіа | Так |
|
||||
| Потоковий speech-to-text | Voice Call `streaming.provider: "xai"` | Так |
|
||||
| Голос у реальному часі | — | Ще не експонується; інший контракт сеансу/WebSocket |
|
||||
| Файли / пакети | Лише сумісність із загальним API моделей | Не першокласний інструмент OpenClaw |
|
||||
| Голос у реальному часі | — | Поки не експонується; інший контракт сесії/WebSocket |
|
||||
| Файли / пакети | Лише сумісність із загальним API моделей | Не є повноцінним інструментом OpenClaw |
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує REST API xAI для зображень/відео/TTS/STT для генерації
|
||||
медіа, мовлення та пакетної транскрипції, потоковий WebSocket STT xAI для живої
|
||||
транскрипції голосових викликів і Responses API для моделей, пошуку та
|
||||
інструментів виконання коду. Функції, яким потрібні інші контракти OpenClaw,
|
||||
як-от сеанси голосу в реальному часі, задокументовано тут як можливості upstream,
|
||||
а не як приховану поведінку плагіна.
|
||||
OpenClaw використовує REST API xAI для зображень/відео/TTS/STT для генерації медіа,
|
||||
мовлення й пакетної транскрипції, потоковий STT WebSocket xAI для живої
|
||||
транскрипції голосових викликів і Responses API для інструментів моделей, пошуку та
|
||||
виконання коду. Функції, яким потрібні інші контракти OpenClaw, як-от
|
||||
голосові сесії в реальному часі, задокументовані тут як можливості upstream,
|
||||
а не як прихована поведінка Plugin.
|
||||
</Note>
|
||||
|
||||
### Зіставлення Fast-режиму
|
||||
### Зіставлення швидкого режиму
|
||||
|
||||
`/fast on` або `agents.defaults.models["xai/<model>"].params.fastMode: true`
|
||||
переписує нативні запити xAI так:
|
||||
|
||||
| Початкова модель | Ціль Fast-режиму |
|
||||
| ---------------- | ----------------- |
|
||||
| `grok-3` | `grok-3-fast` |
|
||||
| `grok-3-mini` | `grok-3-mini-fast` |
|
||||
| `grok-4` | `grok-4-fast` |
|
||||
| `grok-4-0709` | `grok-4-fast` |
|
||||
| Початкова модель | Ціль швидкого режиму |
|
||||
| ---------------- | -------------------- |
|
||||
| `grok-3` | `grok-3-fast` |
|
||||
| `grok-3-mini` | `grok-3-mini-fast` |
|
||||
| `grok-4` | `grok-4-fast` |
|
||||
| `grok-4-0709` | `grok-4-fast` |
|
||||
|
||||
### Застарілі псевдоніми сумісності
|
||||
|
||||
Застарілі псевдоніми й надалі нормалізуються до канонічних вбудованих ідентифікаторів:
|
||||
Застарілі псевдоніми й далі нормалізуються до канонічних вбудованих ідентифікаторів:
|
||||
|
||||
| Застарілий псевдонім | Канонічний ідентифікатор |
|
||||
| ------------------------- | ------------------------------------- |
|
||||
| `grok-4-fast-reasoning` | `grok-4-fast` |
|
||||
| `grok-4-1-fast-reasoning` | `grok-4-1-fast` |
|
||||
| `grok-4.20-reasoning` | `grok-4.20-beta-latest-reasoning` |
|
||||
| `grok-4.20-non-reasoning` | `grok-4.20-beta-latest-non-reasoning` |
|
||||
| Застарілий псевдонім | Канонічний ідентифікатор |
|
||||
| -------------------------- | ----------------------------------- |
|
||||
| `grok-4-fast-reasoning` | `grok-4-fast` |
|
||||
| `grok-4-1-fast-reasoning` | `grok-4-1-fast` |
|
||||
| `grok-4.20-reasoning` | `grok-4.20-beta-latest-reasoning` |
|
||||
| `grok-4.20-non-reasoning` | `grok-4.20-beta-latest-non-reasoning` |
|
||||
|
||||
## Функції
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Web search">
|
||||
<Accordion title="Вебпошук">
|
||||
Вбудований провайдер вебпошуку `grok` також використовує `XAI_API_KEY`:
|
||||
|
||||
```bash
|
||||
@ -135,28 +137,27 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Video generation">
|
||||
Вбудований плагін `xai` реєструє генерацію відео через спільний
|
||||
<Accordion title="Генерація відео">
|
||||
Вбудований Plugin `xai` реєструє генерацію відео через спільний
|
||||
інструмент `video_generate`.
|
||||
|
||||
- Стандартна модель відео: `xai/grok-imagine-video`
|
||||
- Режими: text-to-video, image-to-video, генерація reference-image, віддалене
|
||||
редагування відео та віддалене розширення відео
|
||||
- Модель відео за замовчуванням: `xai/grok-imagine-video`
|
||||
- Режими: text-to-video, image-to-video, генерація за еталонним зображенням, віддалене
|
||||
редагування відео та віддалене продовження відео
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`
|
||||
- Роздільні здатності: `480P`, `720P`
|
||||
- Роздільності: `480P`, `720P`
|
||||
- Тривалість: 1-15 секунд для генерації/image-to-video, 1-10 секунд під час
|
||||
використання ролей `reference_image`, 2-10 секунд для розширення
|
||||
- Генерація reference-image: задайте `imageRoles` як `reference_image` для
|
||||
використання ролей `reference_image`, 2-10 секунд для продовження
|
||||
- Генерація за еталонним зображенням: встановіть `imageRoles` на `reference_image` для
|
||||
кожного наданого зображення; xAI приймає до 7 таких зображень
|
||||
|
||||
<Warning>
|
||||
Локальні відеобуфери не приймаються. Використовуйте віддалені URL `http(s)`
|
||||
для вхідних даних редагування/розширення відео. Image-to-video приймає
|
||||
локальні буфери зображень, оскільки OpenClaw може закодувати їх як data URL
|
||||
для xAI.
|
||||
Локальні відеобуфери не приймаються. Використовуйте віддалені URL `http(s)` для
|
||||
вхідних даних редагування/продовження відео. Image-to-video приймає локальні буфери зображень, тому що
|
||||
OpenClaw може закодувати їх як data URL для xAI.
|
||||
</Warning>
|
||||
|
||||
Щоб використовувати xAI як стандартного постачальника відео:
|
||||
Щоб використовувати xAI як провайдера відео за замовчуванням:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -172,29 +173,29 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
|
||||
<Note>
|
||||
Див. [Генерація відео](/uk/tools/video-generation) щодо спільних параметрів інструмента,
|
||||
вибору постачальника та поведінки перемикання в разі відмови.
|
||||
вибору провайдера та поведінки failover.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Генерація зображень">
|
||||
Вбудований `xai` plugin реєструє генерацію зображень через спільний
|
||||
Вбудований Plugin `xai` реєструє генерацію зображень через спільний
|
||||
інструмент `image_generate`.
|
||||
|
||||
- Стандартна модель зображень: `xai/grok-imagine-image`
|
||||
- Модель зображень за замовчуванням: `xai/grok-imagine-image`
|
||||
- Додаткова модель: `xai/grok-imagine-image-pro`
|
||||
- Режими: текст-у-зображення та редагування за референсним зображенням
|
||||
- Референсні вхідні дані: одне `image` або до п’яти `images`
|
||||
- Режими: text-to-image і редагування за еталонним зображенням
|
||||
- Еталонні вхідні дані: одне `image` або до п’яти `images`
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2:3`, `3:2`
|
||||
- Роздільності: `1K`, `2K`
|
||||
- Кількість: до 4 зображень
|
||||
|
||||
OpenClaw запитує в xAI відповіді зображень у форматі `b64_json`, щоб згенеровані медіа можна було
|
||||
OpenClaw запитує в xAI відповіді зображень `b64_json`, щоб згенеровані медіа можна було
|
||||
зберігати й доставляти через звичайний шлях вкладень каналу. Локальні
|
||||
референсні зображення перетворюються на data URLs; віддалені посилання `http(s)`
|
||||
еталонні зображення перетворюються на data URL; віддалені посилання `http(s)`
|
||||
передаються без змін.
|
||||
|
||||
Щоб використовувати xAI як стандартного постачальника зображень:
|
||||
Щоб використовувати xAI як провайдера зображень за замовчуванням:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -210,25 +211,24 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
|
||||
<Note>
|
||||
xAI також документує `quality`, `mask`, `user` і додаткові нативні співвідношення,
|
||||
такі як `1:2`, `2:1`, `9:20` і `20:9`. Наразі OpenClaw передає лише
|
||||
спільні міжпостачальницькі елементи керування зображеннями; непідтримувані параметри,
|
||||
притаманні лише нативному інтерфейсу, навмисно не експонуються через `image_generate`.
|
||||
як-от `1:2`, `2:1`, `9:20` і `20:9`. Сьогодні OpenClaw пересилає лише
|
||||
спільні міжпровайдерні елементи керування зображеннями; непідтримувані суто нативні параметри
|
||||
навмисно не експонуються через `image_generate`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Текст-у-мовлення">
|
||||
Вбудований `xai` plugin реєструє текст-у-мовлення через спільну поверхню
|
||||
постачальника `tts`.
|
||||
<Accordion title="Text-to-speech">
|
||||
Вбудований Plugin `xai` реєструє text-to-speech через спільну поверхню провайдера `tts`.
|
||||
|
||||
- Голоси: `eve`, `ara`, `rex`, `sal`, `leo`, `una`
|
||||
- Стандартний голос: `eve`
|
||||
- Голос за замовчуванням: `eve`
|
||||
- Формати: `mp3`, `wav`, `pcm`, `mulaw`, `alaw`
|
||||
- Мова: код BCP-47 або `auto`
|
||||
- Швидкість: нативне перевизначення швидкості постачальника
|
||||
- Швидкість: нативне для провайдера перевизначення швидкості
|
||||
- Нативний формат голосових нотаток Opus не підтримується
|
||||
|
||||
Щоб використовувати xAI як стандартного постачальника TTS:
|
||||
Щоб використовувати xAI як провайдера TTS за замовчуванням:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -246,25 +246,25 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
```
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує пакетний endpoint xAI `/v1/tts`. xAI також пропонує потоковий TTS
|
||||
через WebSocket, але контракт постачальника мовлення OpenClaw наразі очікує
|
||||
повний аудіобуфер перед доставленням відповіді.
|
||||
OpenClaw використовує пакетний endpoint `/v1/tts` xAI. xAI також пропонує потоковий TTS
|
||||
через WebSocket, але контракт провайдера мовлення OpenClaw наразі очікує
|
||||
повний аудіобуфер перед доставкою відповіді.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Мовлення-у-текст">
|
||||
Вбудований `xai` plugin реєструє пакетне мовлення-у-текст через поверхню
|
||||
транскрибування для розуміння медіа OpenClaw.
|
||||
<Accordion title="Speech-to-text">
|
||||
Вбудований Plugin `xai` реєструє пакетний speech-to-text через поверхню
|
||||
транскрипції розуміння медіа OpenClaw.
|
||||
|
||||
- Стандартна модель: `grok-stt`
|
||||
- Модель за замовчуванням: `grok-stt`
|
||||
- Endpoint: xAI REST `/v1/stt`
|
||||
- Шлях введення: завантаження аудіофайлу multipart
|
||||
- Підтримується OpenClaw усюди, де транскрибування вхідного аудіо використовує
|
||||
- Шлях вхідних даних: завантаження аудіофайлу multipart
|
||||
- Підтримується OpenClaw усюди, де транскрипція вхідного аудіо використовує
|
||||
`tools.media.audio`, включно із сегментами голосових каналів Discord і
|
||||
аудіовкладеннями каналів
|
||||
|
||||
Щоб примусово використовувати xAI для транскрибування вхідного аудіо:
|
||||
Щоб примусово використовувати xAI для транскрипції вхідного аудіо:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -285,24 +285,24 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
```
|
||||
|
||||
Мову можна надати через спільну конфігурацію аудіомедіа або через запит
|
||||
транскрибування для окремого виклику. Підказки prompt приймаються спільною поверхнею
|
||||
OpenClaw, але інтеграція xAI REST STT передає лише файл, модель і
|
||||
мову, оскільки вони чітко відповідають поточному публічному endpoint xAI.
|
||||
транскрипції для конкретного виклику. Підказки prompt приймаються спільною поверхнею
|
||||
OpenClaw, але інтеграція xAI REST STT пересилає лише файл, модель і
|
||||
мову, бо саме вони чітко відповідають поточному публічному endpoint xAI.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Потокове мовлення-у-текст">
|
||||
Вбудований `xai` plugin також реєструє постачальника транскрибування в реальному часі
|
||||
для аудіо живих голосових викликів.
|
||||
<Accordion title="Потоковий speech-to-text">
|
||||
Вбудований Plugin `xai` також реєструє провайдера транскрипції в реальному часі
|
||||
для живого аудіо голосових викликів.
|
||||
|
||||
- Endpoint: xAI WebSocket `wss://api.x.ai/v1/stt`
|
||||
- Стандартне кодування: `mulaw`
|
||||
- Стандартна частота дискретизації: `8000`
|
||||
- Стандартне визначення завершення: `800ms`
|
||||
- Кодування за замовчуванням: `mulaw`
|
||||
- Частота дискретизації за замовчуванням: `8000`
|
||||
- Endpointing за замовчуванням: `800ms`
|
||||
- Проміжні транскрипти: увімкнено за замовчуванням
|
||||
|
||||
Медіапотік Twilio у Voice Call надсилає аудіокадри G.711 µ-law, тому
|
||||
постачальник xAI може передавати ці кадри напряму без перекодування:
|
||||
провайдер xAI може пересилати ці кадри напряму без транскодування:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -328,30 +328,31 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
}
|
||||
```
|
||||
|
||||
Конфігурація, що належить постачальнику, розміщується в
|
||||
Конфігурація, що належить провайдеру, міститься в
|
||||
`plugins.entries.voice-call.config.streaming.providers.xai`. Підтримувані
|
||||
ключі: `apiKey`, `baseUrl`, `sampleRate`, `encoding` (`pcm`, `mulaw` або
|
||||
`alaw`), `interimResults`, `endpointingMs` і `language`.
|
||||
|
||||
<Note>
|
||||
Цей потоковий провайдер призначений для шляху транскрипції в реальному часі Voice Call.
|
||||
Голос Discord наразі записує короткі сегменти й натомість використовує пакетний
|
||||
шлях транскрипції `tools.media.audio`.
|
||||
Цей потоковий провайдер призначений для шляху транскрипції в реальному часі
|
||||
Voice Call. Голос Discord наразі записує короткі сегменти й натомість
|
||||
використовує пакетний шлях транскрипції `tools.media.audio`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Конфігурація x_search">
|
||||
Вбудований xAI Plugin надає `x_search` як інструмент OpenClaw для пошуку
|
||||
Вбудований Plugin xAI надає `x_search` як інструмент OpenClaw для пошуку
|
||||
вмісту X (раніше Twitter) через Grok.
|
||||
|
||||
Шлях конфігурації: `plugins.entries.xai.config.xSearch`
|
||||
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ------------------ | ------- | ------------------ | ------------------------------------ |
|
||||
| `enabled` | boolean | — | Увімкнути або вимкнути x_search |
|
||||
| `model` | string | `grok-4-1-fast` | Модель, що використовується для запитів x_search |
|
||||
| `inlineCitations` | boolean | — | Додавати вбудовані цитати в результати |
|
||||
| `baseUrl` | string | — | Перевизначення базової URL-адреси xAI Responses |
|
||||
| `inlineCitations` | boolean | — | Додавати в результати вбудовані цитування |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
| `cacheTtlMinutes` | number | — | Час життя кешу в хвилинах |
|
||||
@ -365,6 +366,7 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
xSearch: {
|
||||
enabled: true,
|
||||
model: "grok-4-1-fast",
|
||||
baseUrl: "https://api.x.ai/v1",
|
||||
inlineCitations: true,
|
||||
},
|
||||
},
|
||||
@ -377,20 +379,20 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Конфігурація виконання коду">
|
||||
Вбудований xAI Plugin надає `code_execution` як інструмент OpenClaw для
|
||||
віддаленого виконання коду в пісочниці xAI.
|
||||
Вбудований Plugin xAI надає `code_execution` як інструмент OpenClaw для
|
||||
віддаленого виконання коду в sandbox-середовищі xAI.
|
||||
|
||||
Шлях конфігурації: `plugins.entries.xai.config.codeExecution`
|
||||
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ----------------- | ------- | ------------------------- | --------------------------------- |
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ----------------- | ------- | ------------------------- | ------------------------------------- |
|
||||
| `enabled` | boolean | `true` (якщо ключ доступний) | Увімкнути або вимкнути виконання коду |
|
||||
| `model` | string | `grok-4-1-fast` | Модель, що використовується для запитів виконання коду |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
|
||||
<Note>
|
||||
Це віддалене виконання в пісочниці xAI, а не локальний [`exec`](/uk/tools/exec).
|
||||
Це віддалене виконання в sandbox xAI, а не локальний [`exec`](/uk/tools/exec).
|
||||
</Note>
|
||||
|
||||
```json5
|
||||
@ -413,42 +415,46 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Відомі обмеження">
|
||||
- Сьогодні автентифікація доступна лише за API-ключем. В OpenClaw ще немає
|
||||
потоку xAI OAuth або device-code.
|
||||
- `grok-4.20-multi-agent-experimental-beta-0304` не підтримується на
|
||||
звичайному шляху провайдера xAI, оскільки він потребує іншої поверхні
|
||||
upstream API, ніж стандартний транспорт xAI в OpenClaw.
|
||||
- Голос xAI Realtime ще не зареєстрований як провайдер OpenClaw. Для нього
|
||||
потрібен інший контракт двонапрямної голосової сесії, ніж для пакетного STT або
|
||||
потокової транскрипції.
|
||||
- `quality` зображення xAI, `mask` зображення та додаткові власні співвідношення сторін
|
||||
не надаються, доки спільний інструмент `image_generate` не матиме відповідних
|
||||
міжпровайдерних елементів керування.
|
||||
- Сьогодні автентифікація працює лише через API-ключ. В OpenClaw поки немає
|
||||
xAI OAuth або потоку з кодом пристрою.
|
||||
- `grok-4.20-multi-agent-experimental-beta-0304` не підтримується у
|
||||
звичайному шляху провайдера xAI, бо потребує іншої поверхні вищого API,
|
||||
ніж стандартний транспорт OpenClaw для xAI.
|
||||
- Голос xAI Realtime ще не зареєстровано як провайдер OpenClaw. Для нього
|
||||
потрібен інший контракт двоспрямованого голосового сеансу, ніж для
|
||||
пакетного STT або потокової транскрипції.
|
||||
- `quality` зображення xAI, `mask` зображення та додаткові власні лише для
|
||||
xAI співвідношення сторін не відкриті, доки спільний інструмент
|
||||
`image_generate` не матиме відповідних міжпровайдерних елементів керування.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Розширені примітки">
|
||||
- OpenClaw автоматично застосовує специфічні для xAI виправлення сумісності
|
||||
схем інструментів і викликів інструментів на спільному шляху runner.
|
||||
- Власні запити xAI типово використовують `tool_stream: true`. Установіть
|
||||
`agents.defaults.models["xai/<model>"].params.tool_stream` на `false`, щоб
|
||||
вимкнути це.
|
||||
- Вбудована обгортка xAI вилучає непідтримувані суворі прапорці схем інструментів і
|
||||
ключі payload reasoning перед надсиланням власних запитів xAI.
|
||||
- `web_search`, `x_search` і `code_execution` надаються як інструменти OpenClaw.
|
||||
OpenClaw вмикає конкретний вбудований інструмент xAI, потрібний у кожному запиті
|
||||
інструмента, замість прикріплення всіх власних інструментів до кожного ходу чату.
|
||||
- `x_search` і `code_execution` належать вбудованому xAI Plugin, а не жорстко
|
||||
закодовані в базовому runtime моделі.
|
||||
- `code_execution` — це віддалене виконання в пісочниці xAI, а не локальний
|
||||
- OpenClaw автоматично застосовує виправлення сумісності схем інструментів і
|
||||
викликів інструментів, специфічні для xAI, у спільному шляху runner.
|
||||
- Власні запити xAI за замовчуванням використовують `tool_stream: true`.
|
||||
Установіть `agents.defaults.models["xai/<model>"].params.tool_stream` у
|
||||
`false`, щоб вимкнути це.
|
||||
- Вбудована обгортка xAI прибирає непідтримувані суворі прапорці схем
|
||||
інструментів і ключі payload міркування перед надсиланням власних запитів xAI.
|
||||
- `web_search`, `x_search` і `code_execution` надаються як інструменти
|
||||
OpenClaw. OpenClaw вмикає потрібний конкретний вбудований інструмент xAI
|
||||
всередині кожного запиту інструмента, а не приєднує всі власні інструменти
|
||||
до кожного ходу чату.
|
||||
- Grok `web_search` читає `plugins.entries.xai.config.webSearch.baseUrl`.
|
||||
`x_search` читає `plugins.entries.xai.config.xSearch.baseUrl`, а потім
|
||||
повертається до базової URL-адреси вебпошуку Grok.
|
||||
- `x_search` і `code_execution` належать вбудованому Plugin xAI, а не
|
||||
жорстко закодовані в основний runtime моделей.
|
||||
- `code_execution` — це віддалене виконання в sandbox xAI, а не локальний
|
||||
[`exec`](/uk/tools/exec).
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Live testing
|
||||
|
||||
Медійні шляхи xAI покриті модульними тестами та opt-in live-наборами. Live
|
||||
команди завантажують секрети з вашої login shell, зокрема `~/.profile`, перед
|
||||
перевіркою `XAI_API_KEY`.
|
||||
Шляхи медіа xAI покриті модульними тестами та live-наборами, що вмикаються
|
||||
явно. Live-команди завантажують секрети з вашої login shell, зокрема з
|
||||
`~/.profile`, перед перевіркою `XAI_API_KEY`.
|
||||
|
||||
```bash
|
||||
pnpm test extensions/xai
|
||||
@ -456,11 +462,11 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_TEST_QUIET=1 pnpm test:live -- extensions/xai
|
||||
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_TEST_QUIET=1 OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS=xai pnpm test:live -- test/image-generation.runtime.live.test.ts
|
||||
```
|
||||
|
||||
Специфічний для провайдера live-файл синтезує звичайний TTS, дружній до телефонії PCM
|
||||
TTS, транскрибує аудіо через пакетний STT xAI, передає той самий PCM потоком через
|
||||
xAI realtime STT, генерує результат text-to-image і редагує еталонне зображення. Спільний
|
||||
live-файл зображень перевіряє той самий провайдер xAI через шлях вибору runtime,
|
||||
fallback, нормалізації та медійних вкладень OpenClaw.
|
||||
Live-файл, специфічний для провайдера, синтезує звичайний TTS, телефонно-зручний
|
||||
PCM TTS, транскрибує аудіо через пакетний STT xAI, потоково передає той самий
|
||||
PCM через realtime STT xAI, генерує text-to-image результат і редагує еталонне
|
||||
зображення. Спільний live-файл зображень перевіряє того самого провайдера xAI
|
||||
через шлях вибору runtime, fallback, нормалізації та медіавкладення OpenClaw.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
@ -474,7 +480,7 @@ fallback, нормалізації та медійних вкладень OpenCl
|
||||
<Card title="Усі провайдери" href="/uk/providers/index" icon="grid-2">
|
||||
Ширший огляд провайдерів.
|
||||
</Card>
|
||||
<Card title="Усунення неполадок" href="/uk/help/troubleshooting" icon="wrench">
|
||||
<Card title="Усунення несправностей" href="/uk/help/troubleshooting" icon="wrench">
|
||||
Поширені проблеми та виправлення.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете використовувати Gemini для web_search
|
||||
- Вам потрібен `GEMINI_API_KEY`
|
||||
- Ви хочете grounding через Google Search
|
||||
summary: Web search Gemini з grounding через Google Search
|
||||
- Потрібен GEMINI_API_KEY
|
||||
- Вам потрібне обґрунтування через Google Search
|
||||
summary: Вебпошук Gemini із прив’язкою до Google Search
|
||||
title: Пошук Gemini
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T21:14:55Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-05-02T02:49:20Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 0778ae326e23ea1bb719fdc694b2accc5a6651e08658a695d4d70e20fc5943a4
|
||||
source_hash: 5e36382dc6a4f9a30f12025cc81bb7ed4999e56a236fc85ee7a37444674bf798
|
||||
source_path: tools/gemini-search.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw підтримує моделі Gemini з вбудованим
|
||||
[grounding через Google Search](https://ai.google.dev/gemini-api/docs/grounding), який повертає
|
||||
AI-синтезовані відповіді, підкріплені живими результатами Google Search з
|
||||
цитуванням.
|
||||
[обґрунтуванням Google Search](https://ai.google.dev/gemini-api/docs/grounding),
|
||||
яке повертає AI-синтезовані відповіді на основі живих результатів Google Search
|
||||
із цитуваннями.
|
||||
|
||||
## Отримайте API-ключ
|
||||
|
||||
@ -46,6 +46,7 @@ AI-синтезовані відповіді, підкріплені живим
|
||||
config: {
|
||||
webSearch: {
|
||||
apiKey: "AIza...", // optional if GEMINI_API_KEY is set
|
||||
baseUrl: "https://generativelanguage.googleapis.com/v1beta", // optional proxy/base URL override
|
||||
model: "gemini-2.5-flash", // default
|
||||
},
|
||||
},
|
||||
@ -67,37 +68,44 @@ AI-синтезовані відповіді, підкріплені живим
|
||||
|
||||
## Як це працює
|
||||
|
||||
На відміну від традиційних search-провайдерів, які повертають список посилань і snippets,
|
||||
Gemini використовує grounding через Google Search, щоб створювати AI-синтезовані відповіді з
|
||||
inline-цитуванням. Результати містять і синтезовану відповідь, і URL
|
||||
джерел.
|
||||
На відміну від традиційних пошукових провайдерів, які повертають список посилань і фрагментів,
|
||||
Gemini використовує обґрунтування Google Search, щоб створювати AI-синтезовані відповіді з
|
||||
вбудованими цитуваннями. Результати містять як синтезовану відповідь, так і вихідні
|
||||
URL.
|
||||
|
||||
- Citation URL з grounding Gemini автоматично розв’язуються з URL-перенаправлень
|
||||
Google у прямі URL.
|
||||
- Розв’язання перенаправлень використовує шлях захисту SSRF (перевірки HEAD + redirect +
|
||||
валідація http/https) до повернення фінального citation URL.
|
||||
- Розв’язання перенаправлень використовує суворі типові налаштування SSRF, тому перенаправлення на
|
||||
- URL цитувань із обґрунтування Gemini автоматично перетворюються з URL
|
||||
переспрямування Google на прямі URL.
|
||||
- Перетворення переспрямувань використовує шлях захисту від SSRF (HEAD + перевірки переспрямувань +
|
||||
перевірка http/https) перед поверненням фінального URL цитування.
|
||||
- Перетворення переспрямувань використовує строгі типові налаштування SSRF, тому переспрямування на
|
||||
приватні/внутрішні цілі блокуються.
|
||||
|
||||
## Підтримувані параметри
|
||||
|
||||
Пошук Gemini підтримує `query`.
|
||||
|
||||
`count` приймається для сумісності зі спільним `web_search`, але grounding Gemini
|
||||
усе одно повертає одну синтезовану відповідь із цитуванням, а не список з N
|
||||
результатів.
|
||||
`count` приймається для сумісності зі спільним `web_search`, але обґрунтування Gemini
|
||||
все одно повертає одну синтезовану відповідь із цитуваннями, а не список із N результатів.
|
||||
|
||||
Специфічні для provider фільтри, такі як `country`, `language`, `freshness` і
|
||||
Фільтри, специфічні для провайдера, як-от `country`, `language`, `freshness` і
|
||||
`domain_filter`, не підтримуються.
|
||||
|
||||
## Вибір моделі
|
||||
|
||||
Типова модель — `gemini-2.5-flash` (швидка й економічно ефективна). Будь-яку модель Gemini,
|
||||
що підтримує grounding, можна використовувати через
|
||||
Типова модель — `gemini-2.5-flash` (швидка й економічна). Будь-яку модель Gemini,
|
||||
що підтримує обґрунтування, можна використовувати через
|
||||
`plugins.entries.google.config.webSearch.model`.
|
||||
|
||||
## Перевизначення базового URL
|
||||
|
||||
Задайте `plugins.entries.google.config.webSearch.baseUrl`, коли вебпошук Gemini
|
||||
має проходити через проксі оператора або власну Gemini-сумісну кінцеву точку. Просте
|
||||
значення `https://generativelanguage.googleapis.com` нормалізується до
|
||||
`https://generativelanguage.googleapis.com/v1beta`; власні шляхи проксі зберігаються
|
||||
як надано після обрізання кінцевих скісних рисок.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Огляд Web Search](/uk/tools/web) -- усі providers і автовизначення
|
||||
- [Brave Search](/uk/tools/brave-search) -- структуровані результати зі snippets
|
||||
- [Огляд Web Search](/uk/tools/web) -- усі провайдери й автоматичне виявлення
|
||||
- [Brave Search](/uk/tools/brave-search) -- структуровані результати з фрагментами
|
||||
- [Perplexity Search](/uk/tools/perplexity-search) -- структуровані результати + витягування вмісту
|
||||
|
||||
@ -1,23 +1,30 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете використовувати Grok для web_search
|
||||
- Для веб-пошуку потрібен XAI_API_KEY
|
||||
summary: Вебпошук Grok через вебобґрунтовані відповіді xAI
|
||||
- Для вебпошуку потрібен XAI_API_KEY
|
||||
summary: Вебпошук Grok через відповіді xAI з опорою на веб
|
||||
title: Пошук Grok
|
||||
x-i18n:
|
||||
generated_at: "2026-05-02T01:59:43Z"
|
||||
generated_at: "2026-05-02T02:49:13Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: ab38ee8614ba4bab9a3bf91cb14d4565f1766513594fd2d1a280ff4b2fed1478
|
||||
source_hash: 7238be2b488ba285c948065f5c1deff21898409aa11bdaa9ec893274d0eadd4a
|
||||
source_path: tools/grok-search.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw підтримує Grok як постачальника `web_search`, використовуючи відповіді xAI, підкріплені веб-даними, для створення синтезованих ШІ відповідей на основі актуальних результатів пошуку з посиланнями на джерела.
|
||||
OpenClaw підтримує Grok як провайдера `web_search`, використовуючи відповіді xAI,
|
||||
обґрунтовані веб-пошуком, для створення синтезованих ШІ відповідей, підкріплених
|
||||
актуальними результатами пошуку з цитуваннями.
|
||||
|
||||
Той самий `XAI_API_KEY` також може забезпечувати роботу вбудованого інструмента `x_search` для пошуку дописів X (раніше Twitter). Якщо ви зберігаєте ключ у `plugins.entries.xai.config.webSearch.apiKey`, OpenClaw тепер також повторно використовує його як резервний варіант для вбудованого постачальника моделей xAI.
|
||||
Той самий `XAI_API_KEY` також може забезпечувати роботу вбудованого інструмента
|
||||
`x_search` для пошуку дописів X (раніше Twitter). Якщо ви зберігаєте ключ у
|
||||
`plugins.entries.xai.config.webSearch.apiKey`, OpenClaw тепер також повторно
|
||||
використовує його як резервний варіант для вбудованого провайдера моделей xAI.
|
||||
|
||||
Для метрик X на рівні допису, як-от репости, відповіді, закладки або перегляди, надавайте перевагу `x_search` з точною URL-адресою допису або ID статусу замість широкого пошукового запиту.
|
||||
Для метрик X на рівні допису, як-от репости, відповіді, закладки або перегляди,
|
||||
надавайте перевагу `x_search` з точною URL-адресою допису або ID статусу замість
|
||||
широкого пошукового запиту.
|
||||
|
||||
## Онбординг і налаштування
|
||||
|
||||
@ -26,22 +33,23 @@ OpenClaw підтримує Grok як постачальника `web_search`,
|
||||
- `openclaw onboard`
|
||||
- `openclaw configure --section web`
|
||||
|
||||
OpenClaw може показати окремий наступний крок для ввімкнення `x_search` з тим самим `XAI_API_KEY`. Цей наступний крок:
|
||||
OpenClaw може показати окремий наступний крок, щоб увімкнути `x_search` з тим
|
||||
самим `XAI_API_KEY`. Цей наступний крок:
|
||||
|
||||
- з’являється лише після вибору Grok для `web_search`
|
||||
- не є окремим вибором постачальника веб-пошуку верхнього рівня
|
||||
- може додатково встановити модель `x_search` під час того самого процесу
|
||||
- не є окремим вибором провайдера веб-пошуку верхнього рівня
|
||||
- може додатково задати модель `x_search` під час того самого процесу
|
||||
|
||||
Якщо ви пропустите його, ви зможете ввімкнути або змінити `x_search` пізніше в конфігурації.
|
||||
Якщо ви його пропустите, ви зможете ввімкнути або змінити `x_search` пізніше в конфігурації.
|
||||
|
||||
## Отримання API-ключа
|
||||
|
||||
<Steps>
|
||||
<Step title="Створіть ключ">
|
||||
Отримайте API-ключ у [xAI](https://console.x.ai/).
|
||||
Отримайте API-ключ від [xAI](https://console.x.ai/).
|
||||
</Step>
|
||||
<Step title="Збережіть ключ">
|
||||
Установіть `XAI_API_KEY` в середовищі Gateway або налаштуйте через:
|
||||
Установіть `XAI_API_KEY` у середовищі Gateway або налаштуйте через:
|
||||
|
||||
```bash
|
||||
openclaw configure --section web
|
||||
@ -60,6 +68,7 @@ OpenClaw може показати окремий наступний крок д
|
||||
config: {
|
||||
webSearch: {
|
||||
apiKey: "xai-...", // optional if XAI_API_KEY is set
|
||||
baseUrl: "https://api.x.ai/v1", // optional Responses API proxy/base URL override
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -75,25 +84,37 @@ OpenClaw може показати окремий наступний крок д
|
||||
}
|
||||
```
|
||||
|
||||
**Альтернатива через середовище:** установіть `XAI_API_KEY` в середовищі Gateway.
|
||||
Для встановлення gateway помістіть його в `~/.openclaw/.env`.
|
||||
**Альтернатива через середовище:** установіть `XAI_API_KEY` у середовищі Gateway.
|
||||
Для встановлення gateway додайте його в `~/.openclaw/.env`.
|
||||
|
||||
## Як це працює
|
||||
|
||||
Grok використовує відповіді xAI, підкріплені веб-даними, щоб синтезувати відповіді з вбудованими посиланнями на джерела, подібно до підходу Gemini з прив’язкою до Google Search.
|
||||
Grok використовує відповіді xAI, обґрунтовані веб-пошуком, щоб синтезувати відповіді
|
||||
з вбудованими цитуваннями, подібно до підходу Gemini з обґрунтуванням через Google Search.
|
||||
|
||||
## Підтримувані параметри
|
||||
|
||||
Пошук Grok підтримує `query`.
|
||||
|
||||
`count` приймається для сумісності зі спільним `web_search`, але Grok все одно повертає одну синтезовану відповідь із посиланнями на джерела, а не список із N результатів.
|
||||
`count` приймається для сумісності зі спільним `web_search`, але Grok усе одно
|
||||
повертає одну синтезовану відповідь із цитуваннями, а не список із N результатів.
|
||||
|
||||
Фільтри, специфічні для постачальника, наразі не підтримуються.
|
||||
Фільтри, специфічні для провайдера, наразі не підтримуються.
|
||||
|
||||
Grok використовує специфічний для постачальника стандартний тайм-аут 60 секунд, оскільки пошуки xAI Responses з опорою на веб-дані можуть виконуватися довше, ніж спільний стандартний тайм-аут `web_search`. Установіть `tools.web.search.timeoutSeconds`, щоб перевизначити його.
|
||||
Grok використовує специфічний для провайдера стандартний тайм-аут 60 секунд, тому що
|
||||
веб-пошуки xAI Responses з обґрунтуванням можуть тривати довше, ніж стандартне
|
||||
значення спільного `web_search`. Установіть `tools.web.search.timeoutSeconds`, щоб перевизначити його.
|
||||
|
||||
## Перевизначення базової URL-адреси
|
||||
|
||||
Установіть `plugins.entries.xai.config.webSearch.baseUrl`, коли веб-пошук Grok має
|
||||
маршрутизуватися через операторський проксі або xAI-сумісну кінцеву точку Responses.
|
||||
OpenClaw надсилає POST-запити до `<baseUrl>/responses` після обрізання кінцевих скісних рисок. `x_search`
|
||||
використовує той самий резервний варіант `webSearch.baseUrl`, якщо
|
||||
`plugins.entries.xai.config.xSearch.baseUrl` не задано.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Огляд Web Search](/uk/tools/web) -- усі постачальники й автовиявлення
|
||||
- [Огляд Web Search](/uk/tools/web) -- усі провайдери й автовиявлення
|
||||
- [`x_search` у Web Search](/uk/tools/web#x_search) -- повноцінний пошук X через xAI
|
||||
- [Gemini Search](/uk/tools/gemini-search) -- синтезовані ШІ відповіді через прив’язку до Google grounding
|
||||
- [Пошук Gemini](/uk/tools/gemini-search) -- синтезовані ШІ відповіді через обґрунтування Google
|
||||
|
||||
@ -3,38 +3,38 @@ read_when:
|
||||
- Використання або налаштування чат-команд
|
||||
- Налагодження маршрутизації команд або дозволів
|
||||
sidebarTitle: Slash commands
|
||||
summary: 'Slash-команди: текстові й нативні, конфігурація та підтримувані команди'
|
||||
title: Команди зі скісною рискою
|
||||
summary: 'Слеш-команди: текстові проти нативних, конфігурація та підтримувані команди'
|
||||
title: Слеш-команди
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T10:03:23Z"
|
||||
generated_at: "2026-05-02T02:49:16Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: cfa4c8e294080e824b15f0b54842718f7913cf6d42b7edd4ca9695c3d4113924
|
||||
source_hash: 00a00619cc0eff25b81b475eab5b0b3d808bf067e6e004a491a90ec3982149b7
|
||||
source_path: tools/slash-commands.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! <cmd>` (з `/bash <cmd>` як псевдонімом).
|
||||
Команди обробляє Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! <cmd>` (з `/bash <cmd>` як псевдонімом).
|
||||
|
||||
Коли розмова або гілка прив’язана до сеансу ACP, звичайний подальший текст спрямовується до цього середовища ACP. Команди керування Gateway все одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` плюс `/unfocus` залишаються локальними щоразу, коли для поверхні ввімкнено обробку команд.
|
||||
Коли розмову або гілку прив’язано до ACP-сесії, звичайний подальший текст спрямовується до цього ACP harness. Команди керування Gateway усе одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` і `/unfocus` залишаються локальними, коли для цієї поверхні ввімкнено обробку команд.
|
||||
|
||||
Є дві пов’язані системи:
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Команди">
|
||||
<Accordion title="Commands">
|
||||
Окремі повідомлення `/...`.
|
||||
</Accordion>
|
||||
<Accordion title="Директиви">
|
||||
<Accordion title="Directives">
|
||||
`/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
|
||||
|
||||
- Директиви вилучаються з повідомлення до того, як модель його побачить.
|
||||
- У звичайних повідомленнях чату (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сеансу.
|
||||
- У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сеансі й відповідають підтвердженням.
|
||||
- Директиви застосовуються лише для **авторизованих відправників**. Якщо встановлено `commands.allowFrom`, використовується тільки цей список дозволених; інакше авторизація надходить зі списків дозволених/сполучення каналу плюс `commands.useAccessGroups`. Для неавторизованих відправників директиви трактуються як звичайний текст.
|
||||
- Directives вилучаються з повідомлення до того, як модель його побачить.
|
||||
- У звичайних повідомленнях чату (не лише з directives) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сесії.
|
||||
- У повідомленнях лише з directives (повідомлення містить тільки directives) вони зберігаються в сесії й відповідають підтвердженням.
|
||||
- Directives застосовуються лише для **авторизованих відправників**. Якщо встановлено `commands.allowFrom`, використовується тільки цей список дозволених; інакше авторизація походить зі списків дозволених каналу/сполучення плюс `commands.useAccessGroups`. Неавторизовані відправники бачать directives як звичайний текст.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Вбудовані скорочення">
|
||||
Лише відправники зі списку дозволених/авторизовані відправники: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
<Accordion title="Inline shortcuts">
|
||||
Лише відправники зі списку дозволених/авторизовані: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
|
||||
Вони виконуються негайно, вилучаються до того, як модель побачить повідомлення, а решта тексту продовжує проходити звичайним потоком.
|
||||
|
||||
@ -69,123 +69,124 @@ x-i18n:
|
||||
```
|
||||
|
||||
<ParamField path="commands.text" type="boolean" default="true">
|
||||
Увімкнює розбір `/...` у повідомленнях чату. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення на `false`.
|
||||
Вмикає розбір `/...` у повідомленнях чату. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення на `false`.
|
||||
</ParamField>
|
||||
<ParamField path="commands.native" type='boolean | "auto"' default='"auto"'>
|
||||
Реєструє нативні команди. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash-команди); ігнорується для провайдерів без нативної підтримки. Встановіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично.
|
||||
Реєструє нативні команди. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки. Установіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Командами Slack керують у застосунку Slack, і вони не видаляються автоматично.
|
||||
</ParamField>
|
||||
У Discord специфікації нативних команд можуть містити `descriptionLocalizations`, які OpenClaw публікує як Discord `description_localizations` і включає до порівнянь узгодження.
|
||||
<ParamField path="commands.nativeSkills" type='boolean | "auto"' default='"auto"'>
|
||||
Реєструє команди **skill** нативно, коли це підтримується. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення slash-команди для кожного skill). Встановіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`).
|
||||
Реєструє команди **skill** нативно, коли це підтримується. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення slash command для кожного skill). Установіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.bash" type="boolean" default="false">
|
||||
Увімкнює `! <cmd>` для запуску shell-команд хоста (`/bash <cmd>` є псевдонімом; потребує allowlist-ів `tools.elevated`).
|
||||
Вмикає `! <cmd>` для запуску команд оболонки хоста (`/bash <cmd>` є псевдонімом; потрібні списки дозволених `tools.elevated`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.bashForegroundMs" type="number" default="2000">
|
||||
Керує тим, як довго bash чекає перед перемиканням у фоновий режим (`0` одразу переводить у фон).
|
||||
Керує тим, як довго bash очікує перед переходом у фоновий режим (`0` одразу переводить у фон).
|
||||
</ParamField>
|
||||
<ParamField path="commands.config" type="boolean" default="false">
|
||||
Увімкнює `/config` (читає/записує `openclaw.json`).
|
||||
Вмикає `/config` (читає/записує `openclaw.json`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.mcp" type="boolean" default="false">
|
||||
Увімкнює `/mcp` (читає/записує MCP-конфігурацію під керуванням OpenClaw у `mcp.servers`).
|
||||
Вмикає `/mcp` (читає/записує MCP-конфігурацію, керовану OpenClaw, у `mcp.servers`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.plugins" type="boolean" default="false">
|
||||
Увімкнює `/plugins` (виявлення/стан plugins, а також елементи керування встановленням і ввімкненням/вимкненням).
|
||||
Вмикає `/plugins` (виявлення/статус plugin, а також елементи керування встановленням і ввімкненням/вимкненням).
|
||||
</ParamField>
|
||||
<ParamField path="commands.debug" type="boolean" default="false">
|
||||
Увімкнює `/debug` (лише runtime-перевизначення).
|
||||
Вмикає `/debug` (лише runtime-перевизначення).
|
||||
</ParamField>
|
||||
<ParamField path="commands.restart" type="boolean" default="true">
|
||||
Увімкнює `/restart` і дії інструмента перезапуску Gateway.
|
||||
Вмикає `/restart` плюс дії інструментів перезапуску Gateway.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerAllowFrom" type="string[]">
|
||||
Задає явний allowlist власника для командних/інструментальних поверхонь, доступних лише власнику. Це обліковий запис оператора-людини, який може схвалювати небезпечні дії та запускати команди на кшталт `/diagnostics`, `/export-trajectory` і `/config`. Він відокремлений від `commands.allowFrom` і доступу через DM-парування.
|
||||
Задає явний список дозволених власника для командних/інструментальних поверхонь лише для власника. Це обліковий запис людини-оператора, який може схвалювати небезпечні дії та запускати команди, як-от `/diagnostics`, `/export-trajectory` і `/config`. Він відокремлений від `commands.allowFrom` і від доступу через DM-сполучення.
|
||||
</ParamField>
|
||||
<ParamField path="channels.<channel>.commands.enforceOwnerForCommands" type="boolean" default="false">
|
||||
Для окремого каналу: змушує команди лише для власника вимагати **ідентичність власника** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з визначеним кандидатом у власники (наприклад, записом у `commands.ownerAllowFrom` чи нативними метаданими власника від провайдера), або мати внутрішню область дії `operator.admin` у внутрішньому каналі повідомлень. Запис із wildcard у `allowFrom` каналу або порожній/невизначений список кандидатів у власники **не** є достатнім — команди лише для власника на цьому каналі завершуються закрито. Залиште це вимкненим, якщо хочете, щоб команди лише для власника обмежувалися тільки `ownerAllowFrom` і стандартними allowlist-ами команд.
|
||||
Для окремого каналу: змушує команди лише для власника вимагати **ідентичність власника** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з визначеним кандидатом-власником (наприклад, записом у `commands.ownerAllowFrom` або нативними метаданими власника провайдера), або мати внутрішній scope `operator.admin` у внутрішньому каналі повідомлень. Запис із wildcard у канальному `allowFrom` або порожній/невизначений список кандидатів-власників **не** є достатнім — команди лише для власника в цьому каналі fail closed. Залиште це вимкненим, якщо хочете, щоб команди лише для власника обмежувалися тільки `ownerAllowFrom` і стандартними списками дозволених команд.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerDisplay" type='"raw" | "hash"'>
|
||||
Керує тим, як ідентифікатори власників відображаються в системному prompt.
|
||||
Керує тим, як owner ids відображаються в системному prompt.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerDisplaySecret" type="string">
|
||||
Необов’язково задає HMAC-секрет, який використовується, коли `commands.ownerDisplay="hash"`.
|
||||
За бажанням задає секрет HMAC, який використовується, коли `commands.ownerDisplay="hash"`.
|
||||
</ParamField>
|
||||
<ParamField path="commands.allowFrom" type="object">
|
||||
Allowlist для авторизації команд для окремих провайдерів. Коли налаштовано, це єдине джерело авторизації для команд і директив (allowlist-и/парування каналів і `commands.useAccessGroups` ігноруються). Використовуйте `"*"` для глобального значення за замовчуванням; ключі для конкретних провайдерів його перевизначають.
|
||||
Список дозволених для кожного провайдера для авторизації команд. Коли він налаштований, це єдине джерело авторизації для команд і directives (списки дозволених каналу/сполучення та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` як глобальне значення за замовчуванням; ключі конкретних провайдерів його перевизначають.
|
||||
</ParamField>
|
||||
<ParamField path="commands.useAccessGroups" type="boolean" default="true">
|
||||
Забезпечує застосування allowlist-ів/політик для команд, коли `commands.allowFrom` не встановлено.
|
||||
Забезпечує застосування списків дозволених/політик для команд, коли `commands.allowFrom` не встановлено.
|
||||
</ParamField>
|
||||
|
||||
## Список команд
|
||||
|
||||
Поточне джерело істини:
|
||||
|
||||
- вбудовані команди core походять із `src/auto-reply/commands-registry.shared.ts`
|
||||
- вбудовані core-команди походять із `src/auto-reply/commands-registry.shared.ts`
|
||||
- згенеровані команди dock походять із `src/auto-reply/commands-registry.data.ts`
|
||||
- команди plugin походять із викликів `registerCommand()` у plugin
|
||||
- команди plugin походять із викликів plugin `registerCommand()`
|
||||
- фактична доступність на вашому gateway усе ще залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins
|
||||
|
||||
### Вбудовані команди core
|
||||
### Вбудовані core-команди
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Sessions and runs">
|
||||
- `/new [model]` запускає нову сесію; `/reset` є псевдонімом скидання.
|
||||
- `/reset soft [message]` зберігає поточний transcript, відкидає повторно використані ідентифікатори CLI-сесій backend і повторно запускає завантаження startup/system-prompt на місці.
|
||||
- `/compact [instructions]` ущільнює контекст сесії. Див. [Compaction](/uk/concepts/compaction).
|
||||
- `/reset soft [message]` зберігає поточну стенограму, відкидає повторно використані ідентифікатори сесій CLI backend і повторно запускає завантаження startup/system-prompt на місці.
|
||||
- `/compact [instructions]` стискає контекст сесії. Див. [Compaction](/uk/concepts/compaction).
|
||||
- `/stop` перериває поточний запуск.
|
||||
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують закінченням строку дії прив’язки thread.
|
||||
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують закінченням терміну прив’язки гілки.
|
||||
- `/export-session [path]` експортує поточну сесію в HTML. Псевдонім: `/export`.
|
||||
- `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [trajectory bundle](/uk/tools/trajectory) для поточної сесії. Використовуйте це, коли вам потрібна часова шкала prompt, tool і transcript для однієї сесії OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються власнику приватно. Псевдонім: `/trajectory`.
|
||||
- `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [пакет trajectory](/uk/tools/trajectory) для поточної сесії. Використовуйте це, коли потрібна хронологія prompt, tool і стенограми для однієї сесії OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються власнику приватно. Псевдонім: `/trajectory`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Model and run controls">
|
||||
- `/think <level>` задає рівень thinking. Параметри надходять із профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а користувацькі рівні, як-от `xhigh`, `adaptive`, `max`, або бінарний `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`.
|
||||
- `/verbose on|off|full` перемикає verbose-вивід. Псевдонім: `/v`.
|
||||
- `/trace on|off` перемикає trace-вивід plugin для поточної сесії.
|
||||
- `/think <level>` задає рівень мислення. Варіанти походять із профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а спеціальні рівні, як-от `xhigh`, `adaptive`, `max`, або бінарний `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`.
|
||||
- `/verbose on|off|full` перемикає докладний вивід. Псевдонім: `/v`.
|
||||
- `/trace on|off` перемикає вивід trace plugin для поточної сесії.
|
||||
- `/fast [status|on|off]` показує або задає fast mode.
|
||||
- `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`.
|
||||
- `/elevated [on|off|ask|full]` перемикає elevated mode. Псевдонім: `/elev`.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або задає exec-значення за замовчуванням.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або задає exec defaults.
|
||||
- `/model [name|#|status]` показує або задає модель.
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` перелічує налаштованих/доступних за автентифікацією провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний каталог цього провайдера.
|
||||
- `/queue <mode>` керує поведінкою черги (`steer`, застаріле `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) і параметрами на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сесії. Див. [Command queue](/uk/concepts/queue) і [Steering queue](/uk/concepts/queue-steering).
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` перелічує налаштованих/доступних через auth провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний каталог цього провайдера.
|
||||
- `/queue <mode>` керує поведінкою черги (`steer`, застаріле `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс параметрами на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сесії. Див. [Черга команд](/uk/concepts/queue) і [Steering queue](/uk/concepts/queue-steering).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Discovery and status">
|
||||
- `/help` показує коротке зведення довідки.
|
||||
- `/help` показує коротке зведення допомоги.
|
||||
- `/commands` показує згенерований каталог команд.
|
||||
- `/tools [compact|verbose]` показує, що поточний agent може використовувати прямо зараз.
|
||||
- `/status` показує стан виконання/runtime, зокрема мітки `Execution`/`Runtime` і використання/квоту провайдера, коли доступно.
|
||||
- `/diagnostics [note]` — це потік звіту підтримки лише для власника для багів Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте diagnostics правилом allow-all. Після схвалення він надсилає придатний для вставлення звіт із локальним шляхом bundle, зведенням manifest, нотатками щодо приватності та відповідними ідентифікаторами сесій. У групових чатах prompt схвалення та звіт надсилаються власнику приватно. Коли активна сесія використовує OpenAI Codex harness, те саме схвалення також надсилає відповідний feedback Codex на сервери OpenAI, а завершена відповідь перелічує ідентифікатори сесій OpenClaw, ідентифікатори thread Codex і команди `codex resume <thread-id>`. Див. [Diagnostics Export](/uk/gateway/diagnostics).
|
||||
- `/crestodian <request>` запускає helper налаштування та repair Crestodian з owner DM.
|
||||
- `/tasks` перелічує активні/недавні фонові завдання для поточної сесії.
|
||||
- `/context [list|detail|json]` пояснює, як збирається контекст.
|
||||
- `/whoami` показує ваш ідентифікатор відправника. Псевдонім: `/id`.
|
||||
- `/usage off|tokens|full|cost` керує footer використання для кожної відповіді або друкує локальне зведення витрат.
|
||||
- `/tools [compact|verbose]` показує, що поточний agent може використовувати просто зараз.
|
||||
- `/status` показує статус виконання/runtime, включно з мітками `Execution`/`Runtime` та використанням/квотою провайдера, коли доступно.
|
||||
- `/diagnostics [note]` — це support-report flow лише для власника для багів Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте diagnostics правилом allow-all. Після схвалення він надсилає звіт, придатний для вставлення, з локальним шляхом до bundle, зведенням manifest, нотатками про приватність і релевантними ідентифікаторами сесій. У групових чатах prompt схвалення та звіт надсилаються власнику приватно. Коли активна сесія використовує OpenAI Codex harness, те саме схвалення також надсилає релевантний Codex feedback на сервери OpenAI, а завершена відповідь перелічує ідентифікатори сесій OpenClaw, ідентифікатори гілок Codex і команди `codex resume <thread-id>`. Див. [Експорт діагностики](/uk/gateway/diagnostics).
|
||||
- `/crestodian <request>` запускає помічник налаштування та відновлення Crestodian з DM власника.
|
||||
- `/tasks` перелічує активні/нещодавні фонові задачі для поточної сесії.
|
||||
- `/context [list|detail|json]` пояснює, як складається контекст.
|
||||
- `/whoami` показує ваш sender id. Псевдонім: `/id`.
|
||||
- `/usage off|tokens|full|cost` керує футером використання для кожної відповіді або друкує локальне зведення вартості.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Skills, allowlists, approvals">
|
||||
- `/skill <name> [input]` запускає skill за назвою.
|
||||
- `/allowlist [list|add|remove] ...` керує записами allowlist. Лише текст.
|
||||
- `/approve <id> <decision>` розв’язує prompts схвалення exec.
|
||||
- `/allowlist [list|add|remove] ...` керує записами списку дозволених. Лише текст.
|
||||
- `/approve <id> <decision>` вирішує prompts схвалення exec.
|
||||
- `/btw <question>` ставить побічне запитання без зміни майбутнього контексту сесії. Див. [BTW](/uk/tools/btw).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Subagents and ACP">
|
||||
- `/subagents list|kill|log|info|send|steer|spawn` керує запусками sub-agent для поточної сесії.
|
||||
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує ACP-сесіями та runtime-параметрами.
|
||||
- `/focus <target>` прив’язує поточний thread Discord або тему/розмову Telegram до цільової сесії.
|
||||
- `/focus <target>` прив’язує поточну гілку Discord або тему/розмову Telegram до цільової сесії.
|
||||
- `/unfocus` видаляє поточну прив’язку.
|
||||
- `/agents` перелічує agent-ів, прив’язаних до thread, для поточної сесії.
|
||||
- `/kill <id|#|all>` перериває одного або всіх запущених sub-agent-ів.
|
||||
- `/steer <id|#> <message>` надсилає steer-повідомлення запущеному sub-agent. Псевдонім: `/tell`.
|
||||
- `/agents` перелічує прив’язаних до гілки agents для поточної сесії.
|
||||
- `/kill <id|#|all>` перериває одного або всіх запущених sub-agents.
|
||||
- `/steer <id|#> <message>` надсилає steering запущеному sub-agent. Псевдонім: `/tell`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Записи лише власником і адміністрування">
|
||||
- `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потребує `commands.config: true`.
|
||||
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера під керуванням OpenClaw у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`.
|
||||
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан плагінів. `/plugin` — псевдонім. Записи лише для власника. Потребує `commands.plugins: true`.
|
||||
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`.
|
||||
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` є псевдонімом. Записи лише для власника. Потребує `commands.plugins: true`.
|
||||
- `/debug show|set|unset|reset` керує лише runtime-перевизначеннями конфігурації. Лише для власника. Потребує `commands.debug: true`.
|
||||
- `/restart` перезапускає OpenClaw, коли ввімкнено. Типово: ввімкнено; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/send on|off|inherit` задає політику надсилання. Лише для власника.
|
||||
@ -194,42 +195,41 @@ x-i18n:
|
||||
<Accordion title="Голос, TTS, керування каналом">
|
||||
- `/tts on|off|status|chat|latest|provider|limit|summary|audio|help` керує TTS. Див. [TTS](/uk/tools/tts).
|
||||
- `/activation mention|always` задає режим активації в групі.
|
||||
- `/bash <command>` виконує команду оболонки хоста. Лише текст. Псевдонім: `! <command>`. Потребує `commands.bash: true` плюс списки дозволеного `tools.elevated`.
|
||||
- `!poll [sessionId]` перевіряє фонове bash-завдання.
|
||||
- `!stop [sessionId]` зупиняє фонове bash-завдання.
|
||||
- `/bash <command>` запускає команду оболонки хоста. Лише текст. Псевдонім: `! <command>`. Потребує `commands.bash: true` плюс списки дозволів `tools.elevated`.
|
||||
- `!poll [sessionId]` перевіряє фонове завдання bash.
|
||||
- `!stop [sessionId]` зупиняє фонове завдання bash.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### Згенеровані dock-команди
|
||||
### Згенеровані команди dock
|
||||
|
||||
Dock-команди перемикають маршрут відповіді поточної сесії на інший пов'язаний
|
||||
канал. Див. [докінг каналів](/uk/concepts/channel-docking) щодо налаштування,
|
||||
прикладів і усунення несправностей.
|
||||
Команди dock перемикають маршрут відповіді поточного сеансу на інший пов’язаний
|
||||
канал. Налаштування, приклади й усунення несправностей див. у [стикуванні каналів](/uk/concepts/channel-docking).
|
||||
|
||||
Dock-команди генеруються з плагінів каналів із підтримкою native-command. Поточний вбудований набір:
|
||||
Команди dock генеруються з channel plugins із підтримкою нативних команд. Поточний вбудований набір:
|
||||
|
||||
- `/dock-discord` (псевдонім: `/dock_discord`)
|
||||
- `/dock-mattermost` (псевдонім: `/dock_mattermost`)
|
||||
- `/dock-slack` (псевдонім: `/dock_slack`)
|
||||
- `/dock-telegram` (псевдонім: `/dock_telegram`)
|
||||
|
||||
Використовуйте dock-команди з прямого чату, щоб перемкнути маршрут відповіді поточної сесії на інший пов'язаний канал. Агент зберігає той самий контекст сесії, але майбутні відповіді для цієї сесії доставляються вибраному співрозмовнику каналу.
|
||||
Використовуйте команди dock із прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов’язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному peer каналу.
|
||||
|
||||
Dock-команди потребують `session.identityLinks`. Відправник-джерело й цільовий співрозмовник мають бути в одній групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активній сесії. Якщо відправник не пов'язаний зі співрозмовником Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату.
|
||||
Команди dock потребують `session.identityLinks`. Відправник-джерело й цільовий peer мають бути в одній групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправник не пов’язаний із peer Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату.
|
||||
|
||||
Докінг змінює лише маршрут активної сесії. Він не створює облікові записи каналів, не надає доступ, не обходить списки дозволеного каналів і не переносить історію транскрипту в іншу сесію. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану dock-команду, щоб знову перемкнути маршрут.
|
||||
Docking змінює лише маршрут активного сеансу. Це не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналів і не переносить історію транскрипта до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду dock, щоб знову перемкнути маршрут.
|
||||
|
||||
### Вбудовані команди плагінів
|
||||
### Команди вбудованих plugins
|
||||
|
||||
Вбудовані плагіни можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії:
|
||||
Вбудовані plugins можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії:
|
||||
|
||||
- `/dreaming [on|off|status|help]` перемикає dreaming пам'яті. Див. [Dreaming](/uk/concepts/dreaming).
|
||||
- `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком сполучення/налаштування пристрою. Див. [Сполучення](/uk/channels/pairing).
|
||||
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово активує високоризикові команди телефонного вузла.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord назва native-команди — `/talkvoice`.
|
||||
- `/card ...` надсилає пресети багатих карток LINE. Див. [LINE](/uk/channels/line).
|
||||
- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє й керує вбудованим app-server harness Codex. Див. [harness Codex](/uk/plugins/codex-harness).
|
||||
- `/dreaming [on|off|status|help]` перемикає Dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming).
|
||||
- `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком сполучення/налаштування пристрою. Див. [Pairing](/uk/channels/pairing).
|
||||
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово озброює високоризикові команди телефонного вузла.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord нативна назва команди — `/talkvoice`.
|
||||
- `/card ...` надсилає пресети насичених карток LINE. Див. [LINE](/uk/channels/line).
|
||||
- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє й керує вбудованим app-server harness Codex. Див. [Codex harness](/uk/plugins/codex-harness).
|
||||
- Команди лише для QQBot:
|
||||
- `/bot-ping`
|
||||
- `/bot-version`
|
||||
@ -237,89 +237,90 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
- `/bot-upgrade`
|
||||
- `/bot-logs`
|
||||
|
||||
### Динамічні команди Skills
|
||||
### Динамічні команди skills
|
||||
|
||||
Викликані користувачем Skills також доступні як slash-команди:
|
||||
Skills, які може викликати користувач, також доступні як slash-команди:
|
||||
|
||||
- `/skill <name> [input]` завжди працює як універсальна точка входу.
|
||||
- Skills також можуть з'являтися як прямі команди на кшталт `/prose`, коли skill/plugin їх реєструє.
|
||||
- Реєстрація native-команд Skills керується `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
|
||||
- `/skill <name> [input]` завжди працює як загальна точка входу.
|
||||
- skills також можуть з’являтися як прямі команди на кшталт `/prose`, коли skill/plugin їх реєструє.
|
||||
- реєстрацією нативних команд skill керують `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
|
||||
- специфікації команд можуть надавати `descriptionLocalizations` для нативних поверхонь, які підтримують локалізовані описи, зокрема Discord.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Примітки щодо аргументів і парсера">
|
||||
- Команди приймають необов'язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст розглядається як тіло повідомлення.
|
||||
- Для повної розбивки використання провайдера використовуйте `openclaw status --usage`.
|
||||
<Accordion title="Нотатки щодо аргументів і парсера">
|
||||
- Команди приймають необов’язковий `:` між командою й аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву provider (нечіткий збіг); якщо збігу немає, текст обробляється як тіло повідомлення.
|
||||
- Для повної розбивки використання provider скористайтеся `openclaw status --usage`.
|
||||
- `/allowlist add|remove` потребує `commands.config=true` і враховує `configWrites` каналу.
|
||||
- У багатооблікових каналах `/allowlist --account <id>`, спрямований на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/usage` керує футером використання для кожної відповіді; `/usage cost` друкує локальне зведення витрат із журналів сесій OpenClaw.
|
||||
- `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/plugins install <spec>` приймає ті самі специфікації плагінів, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:<repo>` або `clawhub:<pkg>`.
|
||||
- `/plugins enable|disable` оновлює конфігурацію плагінів і може запропонувати перезапуск.
|
||||
- У каналах із кількома обліковими записами орієнтовані на конфігурацію `/allowlist --account <id>` і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/usage` керує футером використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сеансу OpenClaw.
|
||||
- `/restart` типово ввімкнено; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/plugins install <spec>` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:<repo>` або `clawhub:<pkg>`.
|
||||
- `/plugins enable|disable` оновлює конфігурацію plugin і може запропонувати перезапуск.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Поведінка, специфічна для каналу">
|
||||
- Native-команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступно як текст). `join` потребує guild і вибраного голосового/сценічного каналу. Потребує `channels.discord.voice` і native-команд.
|
||||
- Команди прив'язки тредів Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив'язок тредів (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і runtime-поведінка: [агенти ACP](/uk/tools/acp-agents).
|
||||
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступно як текст). `join` потребує guild і вибраного голосового/stage-каналу. Потребує `channels.discord.voice` і нативних команд.
|
||||
- Команди прив’язки thread у Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив’язок thread (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і поведінка runtime: [агенти ACP](/uk/tools/acp-agents).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Безпека verbose / trace / fast / reasoning">
|
||||
- `/verbose` призначено для налагодження та додаткової видимості; тримайте його **вимкненим** під час звичайного використання.
|
||||
- `/trace` вужчий за `/verbose`: він показує лише trace/debug-рядки, що належать плагінам, і не вмикає звичайний verbose-шум інструментів.
|
||||
- `/fast on|off` зберігає перевизначення сесії. Використовуйте опцію `inherit` в UI сесій, щоб очистити його й повернутися до типових значень конфігурації.
|
||||
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex відображають його в `service_tier=priority` на native Responses endpoints, тоді як прямі публічні запити Anthropic, зокрема OAuth-автентифікований трафік, надісланий до `api.anthropic.com`, відображають його в `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
|
||||
- Зведення збоїв інструментів усе ще показуються, коли доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning, вивід інструментів або діагностику плагінів, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах.
|
||||
- `/verbose` призначено для налагодження й додаткової видимості; тримайте його **вимкненим** під час звичайного використання.
|
||||
- `/trace` вужчий за `/verbose`: він показує лише trace/debug-рядки, що належать plugin, і залишає звичайний докладний шум інструментів вимкненим.
|
||||
- `/fast on|off` зберігає перевизначення сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions, щоб очистити його й повернутися до типових значень конфігурації.
|
||||
- `/fast` залежить від provider: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних endpoints Responses, тоді як прямі публічні запити Anthropic, зокрема OAuth-автентифікований трафік, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
|
||||
- Підсумки збоїв інструментів усе ще показуються, коли доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning, вивід інструментів або діагностику plugin, які ви не мали наміру показувати. Бажано залишати їх вимкненими, особливо в групових чатах.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Перемикання моделей">
|
||||
- `/model` негайно зберігає нову модель сесії.
|
||||
<Accordion title="Перемикання моделі">
|
||||
- `/model` негайно зберігає нову модель сеансу.
|
||||
- Якщо агент неактивний, наступний запуск одразу використовує її.
|
||||
- Якщо запуск уже активний, OpenClaw позначає live-перемикання як очікуване й перезапускає в нову модель лише в чистій точці повторної спроби.
|
||||
- Якщо запуск уже активний, OpenClaw позначає live-перемикання як очікуване й перезапускається в нову модель лише в чистій точці повторної спроби.
|
||||
- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або наступного ходу користувача.
|
||||
- У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від режиму порятунку каналів повідомлень і не надає віддалених повноважень конфігурації.
|
||||
- У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від режиму rescue для каналів повідомлень і не надає віддалених повноважень конфігурації.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Швидкий шлях та inline-скорочення">
|
||||
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволеного обробляються негайно (обхід черги + моделі).
|
||||
- **Обмеження згадкою в групі:** повідомлення лише з командами від відправників зі списку дозволеного обходять вимоги згадки.
|
||||
- **Inline-скорочення (лише відправники зі списку дозволеного):** певні команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту.
|
||||
- Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує звичайний потік.
|
||||
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволів обробляються негайно (обхід черги + моделі).
|
||||
- **Обмеження згадками в групі:** повідомлення лише з командами від відправників зі списку дозволів обходять вимоги до згадок.
|
||||
- **Inline-скорочення (лише відправники зі списку дозволів):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і вилучаються до того, як модель побачить решту тексту.
|
||||
- Приклад: `hey /status` викликає відповідь зі статусом, а решта тексту продовжує проходити звичайним потоком.
|
||||
- Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
- Неавторизовані повідомлення лише з командами мовчки ігноруються, а inline-токени `/...` розглядаються як звичайний текст.
|
||||
- Неавторизовані повідомлення лише з командами мовчки ігноруються, а inline-токени `/...` обробляються як звичайний текст.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Команди Skills і native-аргументи">
|
||||
- **Команди Skills:** Skills з `user-invocable` доступні як slash-команди. Назви очищуються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає Skill за назвою (корисно, коли обмеження native-команд не дають створити окремі команди для кожного Skill).
|
||||
- Типово команди Skills передаються моделі як звичайний запит.
|
||||
- Skills можуть необов'язково оголосити `command-dispatch: tool`, щоб спрямувати команду безпосередньо до інструмента (детерміновано, без моделі).
|
||||
- Приклад: `/prose` (плагін OpenProse) — див. [OpenProse](/uk/prose).
|
||||
- **Аргументи native-команд:** Discord використовує автозавершення для динамічних опцій (і меню кнопок, коли ви пропускаєте обов'язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви пропускаєте аргумент. Динамічні варіанти розв'язуються відносно цільової моделі сесії, тому специфічні для моделі опції, як-от рівні `/think`, дотримуються перевизначення `/model` цієї сесії.
|
||||
<Accordion title="Команди Skills і нативні аргументи">
|
||||
- **Команди Skills:** skills `user-invocable` доступні як slash-команди. Імена нормалізуються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожного skill).
|
||||
- Типово команди skill пересилаються моделі як звичайний запит.
|
||||
- Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб спрямувати команду безпосередньо до інструмента (детерміновано, без моделі).
|
||||
- Приклад: `/prose` (OpenProse plugin) — див. [OpenProse](/uk/prose).
|
||||
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних опцій (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви пропускаєте аргумент. Динамічні варіанти розв’язуються відносно цільової моделі сеансу, тому специфічні для моделі опції, як-от рівні `/think`, наслідують перевизначення `/model` цього сеансу.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## `/tools`
|
||||
|
||||
`/tools` відповідає на runtime-питання, а не на питання конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**.
|
||||
`/tools` відповідає на runtime-запитання, а не на запитання конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**.
|
||||
|
||||
- Типовий `/tools` компактний і оптимізований для швидкого перегляду.
|
||||
- `/tools verbose` додає короткі описи.
|
||||
- Поверхні native-команд, які підтримують аргументи, надають той самий перемикач режиму: `compact|verbose`.
|
||||
- Результати прив'язані до сесії, тому зміна агента, каналу, треду, авторизації відправника або моделі може змінити вивід.
|
||||
- `/tools` включає інструменти, які фактично доступні під час runtime, зокрема основні інструменти, підключені інструменти плагінів та інструменти, що належать каналам.
|
||||
- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`.
|
||||
- Результати прив’язані до сеансу, тому зміна агента, каналу, thread, авторизації відправника або моделі може змінити вивід.
|
||||
- `/tools` включає інструменти, які фактично доступні під час runtime, зокрема core-інструменти, підключені інструменти plugin та інструменти, що належать каналу.
|
||||
|
||||
Для редагування профілю й перевизначень використовуйте панель інструментів Control UI або поверхні конфігурації/каталогу, а не розглядайте `/tools` як статичний каталог.
|
||||
Для редагування профілю й перевизначень використовуйте панель Tools в Control UI або поверхні конфігурації/каталогу, замість того щоб трактувати `/tools` як статичний каталог.
|
||||
|
||||
## Поверхні використання (що де показується)
|
||||
|
||||
- **Використання/квота провайдера** (приклад: "Claude 80% left") показується в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдера до `% left`; для MiniMax поля відсотків лише залишку інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану з тегом моделі.
|
||||
- **Рядки токенів/кешу** в `/status` можуть повертатися до останнього запису використання транскрипту, коли live-знімок сесії розріджений. Наявні ненульові live-значення все ще мають пріоритет, а fallback транскрипту також може відновити активну мітку runtime-моделі плюс більший prompt-орієнтований підсумок, коли збережені підсумки відсутні або менші.
|
||||
- **Виконання проти runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сесію: `OpenClaw Pi Default`, `OpenAI Codex`, CLI-бекенд або ACP-бекенд.
|
||||
- **Токени/вартість для кожної відповіді** керується `/usage off|tokens|full` (додається до звичайних відповідей).
|
||||
- `/model status` стосується **моделей/автентифікації/endpoints**, а не використання.
|
||||
- **Використання/квота provider** (приклад: "Claude 80% left") показується в `/status` для provider поточної моделі, коли відстеження використання ввімкнено. OpenClaw нормалізує вікна provider до `% left`; для MiniMax поля відсотків лише залишку інвертуються перед показом, а відповіді `model_remains` надають перевагу запису chat-моделі плюс позначці plan із тегом моделі.
|
||||
- **Рядки token/cache** у `/status` можуть повертатися до останнього запису використання транскрипта, коли live-знімок сеансу розріджений. Наявні ненульові live-значення все ще мають пріоритет, а fallback транскрипта також може відновити активну мітку runtime-моделі плюс більший prompt-орієнтований підсумок, коли збережені підсумки відсутні або менші.
|
||||
- **Execution проти runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сеанс: `OpenClaw Pi Default`, `OpenAI Codex`, CLI backend або ACP backend.
|
||||
- **Token/cost для кожної відповіді** керується `/usage off|tokens|full` (додається до звичайних відповідей).
|
||||
- `/model status` стосується **models/auth/endpoints**, а не використання.
|
||||
|
||||
## Вибір моделі (`/model`)
|
||||
|
||||
@ -336,16 +337,16 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
/model status
|
||||
```
|
||||
|
||||
Примітки:
|
||||
Нотатки:
|
||||
|
||||
- `/model` і `/model list` показують компактний нумерований picker (родина моделі + доступні провайдери).
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний picker із dropdown-полями провайдера й моделі плюс крок Submit.
|
||||
- `/model <#>` вибирає з цього picker (і віддає перевагу поточному провайдеру, коли можливо).
|
||||
- `/model status` показує докладний перегляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), коли доступно.
|
||||
- `/model` і `/model list` показують компактний нумерований вибір (сімейство моделей + доступні провайдери).
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера й моделі, а також кроком Submit.
|
||||
- `/model <#>` вибирає з цього списку (і за можливості надає перевагу поточному провайдеру).
|
||||
- `/model status` показує детальний вигляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), коли вони доступні.
|
||||
|
||||
## Debug-перевизначення
|
||||
## Перевизначення для налагодження
|
||||
|
||||
`/debug` дає змогу встановлювати **лише runtime** перевизначення конфігурації (у памʼяті, не на диску). Лише для власника. За замовчуванням вимкнено; увімкніть за допомогою `commands.debug: true`.
|
||||
`/debug` дає змогу встановити **лише runtime** перевизначення конфігурації (у пам’яті, не на диску). Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.debug: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -358,12 +359,12 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
```
|
||||
|
||||
<Note>
|
||||
Перевизначення застосовуються негайно для нових зчитувань конфігурації, але **не** записуються в `openclaw.json`. Скористайтеся `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску.
|
||||
Перевизначення негайно застосовуються до нових читань конфігурації, але **не** записуються в `openclaw.json`. Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску.
|
||||
</Note>
|
||||
|
||||
## Вивід трасування Plugin
|
||||
|
||||
`/trace` дає змогу перемикати **рядки трасування/налагодження plugin у межах сеансу** без увімкнення повного докладного режиму.
|
||||
`/trace` дає змогу перемикати **прив’язані до сесії рядки трасування/налагодження Plugin** без увімкнення повного докладного режиму.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -375,16 +376,16 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
|
||||
Примітки:
|
||||
|
||||
- `/trace` без аргументу показує поточний стан трасування сеансу.
|
||||
- `/trace on` вмикає рядки трасування plugin для поточного сеансу.
|
||||
- `/trace` без аргументу показує поточний стан трасування сесії.
|
||||
- `/trace on` вмикає рядки трасування Plugin для поточної сесії.
|
||||
- `/trace off` знову вимикає їх.
|
||||
- Рядки трасування Plugin можуть зʼявлятися в `/status` і як додаткове діагностичне повідомлення після звичайної відповіді асистента.
|
||||
- `/trace` не замінює `/debug`; `/debug` і надалі керує лише runtime перевизначеннями конфігурації.
|
||||
- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/статусу й надалі належить до `/verbose`.
|
||||
- Рядки трасування Plugin можуть з’являтися в `/status` і як подальше діагностичне повідомлення після звичайної відповіді асистента.
|
||||
- `/trace` не замінює `/debug`; `/debug` і далі керує лише runtime перевизначеннями конфігурації.
|
||||
- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/статусу й далі належить до `/verbose`.
|
||||
|
||||
## Оновлення конфігурації
|
||||
|
||||
`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. За замовчуванням вимкнено; увімкніть за допомогою `commands.config: true`.
|
||||
`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.config: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -397,12 +398,12 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
```
|
||||
|
||||
<Note>
|
||||
Конфігурація перевіряється перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються між перезапусками.
|
||||
Конфігурацію перевіряють перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються після перезапусків.
|
||||
</Note>
|
||||
|
||||
## Оновлення MCP
|
||||
|
||||
`/mcp` записує керовані OpenClaw визначення серверів MCP у `mcp.servers`. Лише для власника. За замовчуванням вимкнено; увімкніть за допомогою `commands.mcp: true`.
|
||||
`/mcp` записує визначення MCP-серверів, керовані OpenClaw, у `mcp.servers`. Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.mcp: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -414,12 +415,12 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
```
|
||||
|
||||
<Note>
|
||||
`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. Runtime-адаптери вирішують, які транспорти фактично можна виконати.
|
||||
`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, якими володіє Pi. Runtime-адаптери вирішують, які транспорти фактично можна виконати.
|
||||
</Note>
|
||||
|
||||
## Оновлення Plugin
|
||||
|
||||
`/plugins` дає операторам змогу переглядати виявлені plugins і перемикати ввімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. За замовчуванням вимкнено; увімкніть за допомогою `commands.plugins: true`.
|
||||
`/plugins` дає операторам змогу переглядати виявлені Plugin і перемикати ввімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. Вимкнено за замовчуванням; увімкніть за допомогою `commands.plugins: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -432,45 +433,45 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
```
|
||||
|
||||
<Note>
|
||||
- `/plugins list` і `/plugins show` використовують реальне виявлення plugin для поточного робочого простору та конфігурації на диску.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію plugin; це не встановлює й не видаляє plugins.
|
||||
- Після змін увімкнення/вимкнення перезапустіть gateway, щоб застосувати їх.
|
||||
- `/plugins list` і `/plugins show` використовують реальне виявлення Plugin у поточній робочій області разом із конфігурацією на диску.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію Plugin; це не встановлює й не видаляє Plugin.
|
||||
- Після змін увімкнення/вимкнення перезапустіть Gateway, щоб застосувати їх.
|
||||
|
||||
</Note>
|
||||
|
||||
## Примітки щодо поверхонь
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Сеанси для кожної поверхні">
|
||||
- **Текстові команди** виконуються у звичайному чат-сеансі (DM використовують спільний `main`, групи мають власний сеанс).
|
||||
- **Нативні команди** використовують ізольовані сеанси:
|
||||
<Accordion title="Сесії для кожної поверхні">
|
||||
- **Текстові команди** виконуються у звичайній чат-сесії (DM використовують спільну `main`, групи мають власну сесію).
|
||||
- **Нативні команди** використовують ізольовані сесії:
|
||||
- Discord: `agent:<agentId>:discord:slash:<userId>`
|
||||
- Slack: `agent:<agentId>:slack:slash:<userId>` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`)
|
||||
- Telegram: `telegram:slash:<userId>` (спрямовується на чат-сеанс через `CommandTargetSessionKey`)
|
||||
- **`/stop`** спрямовується на активний чат-сеанс, щоб він міг перервати поточний запуск.
|
||||
- Telegram: `telegram:slash:<userId>` (спрямовує на чат-сесію через `CommandTargetSessionKey`)
|
||||
- **`/stop`** спрямовується на активну чат-сесію, щоб вона могла перервати поточний запуск.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Особливості Slack">
|
||||
`channels.slack.slashCommand` і надалі підтримується для однієї команди в стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit.
|
||||
`channels.slack.slashCommand` усе ще підтримується для однієї команди в стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ephemeral кнопки Block Kit.
|
||||
|
||||
Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), оскільки Slack резервує `/status`. Текстова `/status` і надалі працює в повідомленнях Slack.
|
||||
Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` і далі працює в повідомленнях Slack.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Побічні запитання BTW
|
||||
|
||||
`/btw` — це швидке **побічне запитання** про поточний сеанс.
|
||||
`/btw` — це швидке **побічне запитання** щодо поточної сесії.
|
||||
|
||||
На відміну від звичайного чату:
|
||||
|
||||
- воно використовує поточний сеанс як фоновий контекст,
|
||||
- виконується як окремий одноразовий виклик **без інструментів**,
|
||||
- не змінює майбутній контекст сеансу,
|
||||
- не записується в історію стенограми,
|
||||
- доставляється як live-побічний результат замість звичайного повідомлення асистента.
|
||||
- воно використовує поточну сесію як фоновий контекст,
|
||||
- воно виконується як окремий одноразовий виклик **без інструментів**,
|
||||
- воно не змінює майбутній контекст сесії,
|
||||
- воно не записується в історію транскрипта,
|
||||
- воно доставляється як живий побічний результат, а не як звичайне повідомлення асистента.
|
||||
|
||||
Це робить `/btw` корисним, коли потрібне тимчасове уточнення, поки основне завдання продовжує виконуватися.
|
||||
Це робить `/btw` корисним, коли потрібне тимчасове уточнення, поки основне завдання триває.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -478,9 +479,9 @@ Dock-команди потребують `session.identityLinks`. Відправ
|
||||
/btw what are we doing right now?
|
||||
```
|
||||
|
||||
Див. [Побічні запитання BTW](/uk/tools/btw), щоб отримати повну інформацію про поведінку та UX клієнта.
|
||||
Див. [Побічні запитання BTW](/uk/tools/btw), щоб ознайомитися з повною поведінкою та деталями UX клієнта.
|
||||
|
||||
## Повʼязане
|
||||
## Пов’язане
|
||||
|
||||
- [Створення skills](/uk/tools/creating-skills)
|
||||
- [Skills](/uk/tools/skills)
|
||||
|
||||
@ -2,30 +2,30 @@
|
||||
read_when:
|
||||
- Ви хочете ввімкнути або налаштувати web_search
|
||||
- Ви хочете ввімкнути або налаштувати x_search
|
||||
- Вам потрібно вибрати провайдера пошуку
|
||||
- Ви хочете зрозуміти автоматичне виявлення та fallback провайдера
|
||||
- Потрібно вибрати пошукового провайдера
|
||||
- Ви хочете зрозуміти автовиявлення та резервний перехід провайдера
|
||||
sidebarTitle: Web Search
|
||||
summary: web_search, x_search і web_fetch — пошук у вебі, пошук дописів у X або отримання вмісту сторінки
|
||||
title: Вебпошук
|
||||
summary: web_search, x_search і web_fetch -- пошук в інтернеті, пошук дописів X або отримання вмісту сторінки
|
||||
title: Пошук в інтернеті
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T06:29:17Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-05-02T02:50:03Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 9f8233a33f0729c6413eda59c4ebc3338a1e398e8280eb12650197225ef8981e
|
||||
source_hash: 4de24a2430bbdfb0926dcec9dc3b44cc3a0af07f06ff2926e486168eac3d76d0
|
||||
source_path: tools/web.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Інструмент `web_search` виконує пошук у вебі за допомогою налаштованого провайдера і
|
||||
повертає результати. Результати кешуються за запитом на 15 хвилин (це можна налаштувати).
|
||||
Інструмент `web_search` шукає в інтернеті за допомогою налаштованого вами провайдера та
|
||||
повертає результати. Результати кешуються за запитом на 15 хвилин (налаштовується).
|
||||
|
||||
OpenClaw також містить `x_search` для дописів X (раніше Twitter) і
|
||||
`web_fetch` для полегшеного отримання URL. На цьому етапі `web_fetch` залишається
|
||||
локальним, тоді як `web_search` і `x_search` можуть під капотом використовувати xAI Responses.
|
||||
`web_fetch` для легкого отримання URL. На цьому етапі `web_fetch` залишається
|
||||
локальним, тоді як `web_search` і `x_search` можуть використовувати xAI Responses під капотом.
|
||||
|
||||
<Info>
|
||||
`web_search` — це легкий HTTP-інструмент, а не автоматизація браузера. Для
|
||||
сайтів із важким JS або логінами використовуйте [Web Browser](/uk/tools/browser). Для
|
||||
сайтів із великою кількістю JS або входів в обліковий запис використовуйте [Веббраузер](/uk/tools/browser). Для
|
||||
отримання конкретного URL використовуйте [Web Fetch](/uk/tools/web-fetch).
|
||||
</Info>
|
||||
|
||||
@ -33,17 +33,17 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
|
||||
<Steps>
|
||||
<Step title="Виберіть провайдера">
|
||||
Виберіть провайдера та завершіть усі необхідні кроки налаштування. Деякі провайдери
|
||||
не потребують ключів, тоді як інші використовують API key. Докладніше
|
||||
див. на сторінках провайдерів нижче.
|
||||
Виберіть провайдера та виконайте потрібне налаштування. Деякі провайдери
|
||||
не потребують ключа, тоді як інші використовують API-ключі. Докладніше див.
|
||||
на сторінках провайдерів нижче.
|
||||
</Step>
|
||||
<Step title="Налаштуйте">
|
||||
```bash
|
||||
openclaw configure --section web
|
||||
```
|
||||
Це збереже провайдера та всі потрібні облікові дані. Ви також можете задати env
|
||||
var (наприклад, `BRAVE_API_KEY`) і пропустити цей крок для
|
||||
провайдерів на основі API.
|
||||
Це зберігає провайдера та всі потрібні облікові дані. Ви також можете задати змінну
|
||||
середовища (наприклад `BRAVE_API_KEY`) і пропустити цей крок для провайдерів,
|
||||
що працюють через API.
|
||||
</Step>
|
||||
<Step title="Використовуйте">
|
||||
Тепер агент може викликати `web_search`:
|
||||
@ -52,7 +52,7 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
await web_search({ query: "OpenClaw plugin SDK" });
|
||||
```
|
||||
|
||||
Для дописів у X використовуйте:
|
||||
Для дописів X використовуйте:
|
||||
|
||||
```javascript
|
||||
await x_search({ query: "dinner recipes" });
|
||||
@ -65,75 +65,75 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Brave Search" icon="shield" href="/uk/tools/brave-search">
|
||||
Структуровані результати зі snippet. Підтримує режим `llm-context`, фільтри країни/мови. Доступний безкоштовний тариф.
|
||||
Структуровані результати з фрагментами. Підтримує режим `llm-context`, фільтри країни/мови. Доступний безкоштовний рівень.
|
||||
</Card>
|
||||
<Card title="DuckDuckGo" icon="bird" href="/uk/tools/duckduckgo-search">
|
||||
Fallback без ключа. API key не потрібен. Неофіційна інтеграція на основі HTML.
|
||||
Резервний варіант без ключа. API-ключ не потрібен. Неофіційна інтеграція на основі HTML.
|
||||
</Card>
|
||||
<Card title="Exa" icon="brain" href="/uk/tools/exa-search">
|
||||
Нейронний + ключовий пошук із витяганням вмісту (highlights, текст, підсумки).
|
||||
Нейронний + ключовий пошук із витягуванням вмісту (виділення, текст, підсумки).
|
||||
</Card>
|
||||
<Card title="Firecrawl" icon="flame" href="/uk/tools/firecrawl">
|
||||
Структуровані результати. Найкраще поєднується з `firecrawl_search` і `firecrawl_scrape` для глибокого витягання.
|
||||
Структуровані результати. Найкраще поєднувати з `firecrawl_search` і `firecrawl_scrape` для глибокого витягування.
|
||||
</Card>
|
||||
<Card title="Gemini" icon="sparkles" href="/uk/tools/gemini-search">
|
||||
AI-синтезовані відповіді з цитуванням через grounding Google Search.
|
||||
Відповіді, синтезовані ШІ, із цитуваннями через прив’язку до Google Search.
|
||||
</Card>
|
||||
<Card title="Grok" icon="zap" href="/uk/tools/grok-search">
|
||||
AI-синтезовані відповіді з цитуванням через web grounding xAI.
|
||||
Відповіді, синтезовані ШІ, із цитуваннями через вебприв’язку xAI.
|
||||
</Card>
|
||||
<Card title="Kimi" icon="moon" href="/uk/tools/kimi-search">
|
||||
AI-синтезовані відповіді з цитуванням через вебпошук Moonshot.
|
||||
Відповіді, синтезовані ШІ, із цитуваннями через вебпошук Moonshot.
|
||||
</Card>
|
||||
<Card title="MiniMax Search" icon="globe" href="/uk/tools/minimax-search">
|
||||
Структуровані результати через API пошуку MiniMax Coding Plan.
|
||||
Структуровані результати через пошуковий API MiniMax Coding Plan.
|
||||
</Card>
|
||||
<Card title="Ollama Web Search" icon="globe" href="/uk/tools/ollama-search">
|
||||
Пошук через локальний хост Ollama з входом у систему або розміщений API Ollama.
|
||||
Пошук через локальний хост Ollama із виконаним входом або розміщений API Ollama.
|
||||
</Card>
|
||||
<Card title="Perplexity" icon="search" href="/uk/tools/perplexity-search">
|
||||
Структуровані результати з елементами керування витяганням вмісту та фільтрацією доменів.
|
||||
Структуровані результати з елементами керування витягуванням вмісту та фільтрацією доменів.
|
||||
</Card>
|
||||
<Card title="SearXNG" icon="server" href="/uk/tools/searxng-search">
|
||||
Самостійно розміщений метапошук. API key не потрібен. Агрегує Google, Bing, DuckDuckGo та інші.
|
||||
Самостійно розміщений метапошук. API-ключ не потрібен. Агрегує Google, Bing, DuckDuckGo тощо.
|
||||
</Card>
|
||||
<Card title="Tavily" icon="globe" href="/uk/tools/tavily">
|
||||
Структуровані результати з глибиною пошуку, фільтрацією тем і `tavily_extract` для витягання URL.
|
||||
Структуровані результати з глибиною пошуку, фільтрацією за темою та `tavily_extract` для витягування URL.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
### Порівняння провайдерів
|
||||
|
||||
| Провайдер | Стиль результатів | Фільтри | API key |
|
||||
| ----------------------------------------- | --------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------- |
|
||||
| [Brave](/uk/tools/brave-search) | Структуровані snippet | Країна, мова, час, режим `llm-context` | `BRAVE_API_KEY` |
|
||||
| [DuckDuckGo](/uk/tools/duckduckgo-search) | Структуровані snippet | -- | Немає (без ключа) |
|
||||
| [Exa](/uk/tools/exa-search) | Структуровані + витягнуті | Нейронний/ключовий режим, дата, витягання вмісту | `EXA_API_KEY` |
|
||||
| [Firecrawl](/uk/tools/firecrawl) | Структуровані snippet | Через інструмент `firecrawl_search` | `FIRECRAWL_API_KEY` |
|
||||
| [Gemini](/uk/tools/gemini-search) | AI-синтезовані + цитування | -- | `GEMINI_API_KEY` |
|
||||
| [Grok](/uk/tools/grok-search) | AI-синтезовані + цитування | -- | `XAI_API_KEY` |
|
||||
| [Kimi](/uk/tools/kimi-search) | AI-синтезовані + цитування | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
|
||||
| [MiniMax Search](/uk/tools/minimax-search) | Структуровані snippet | Регіон (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` |
|
||||
| [Ollama Web Search](/uk/tools/ollama-search) | Структуровані snippet | -- | Немає для локальних хостів із входом у систему; `OLLAMA_API_KEY` для прямого пошуку `https://ollama.com` |
|
||||
| [Perplexity](/uk/tools/perplexity-search) | Структуровані snippet | Країна, мова, час, домени, обмеження вмісту | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
|
||||
| [SearXNG](/uk/tools/searxng-search) | Структуровані snippet | Категорії, мова | Немає (самостійно розміщений) |
|
||||
| [Tavily](/uk/tools/tavily) | Структуровані snippet | Через інструмент `tavily_search` | `TAVILY_API_KEY` |
|
||||
| Провайдер | Стиль результатів | Фільтри | API-ключ |
|
||||
| ----------------------------------------- | -------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
| [Brave](/uk/tools/brave-search) | Структуровані фрагменти | Країна, мова, час, режим `llm-context` | `BRAVE_API_KEY` |
|
||||
| [DuckDuckGo](/uk/tools/duckduckgo-search) | Структуровані фрагменти | -- | Немає (без ключа) |
|
||||
| [Exa](/uk/tools/exa-search) | Структуровані + витягнуті | Нейронний/ключовий режим, дата, витягування вмісту | `EXA_API_KEY` |
|
||||
| [Firecrawl](/uk/tools/firecrawl) | Структуровані фрагменти | Через інструмент `firecrawl_search` | `FIRECRAWL_API_KEY` |
|
||||
| [Gemini](/uk/tools/gemini-search) | Синтезовані ШІ + цитування | -- | `GEMINI_API_KEY` |
|
||||
| [Grok](/uk/tools/grok-search) | Синтезовані ШІ + цитування | -- | `XAI_API_KEY` |
|
||||
| [Kimi](/uk/tools/kimi-search) | Синтезовані ШІ + цитування | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
|
||||
| [MiniMax Search](/uk/tools/minimax-search) | Структуровані фрагменти | Регіон (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` |
|
||||
| [Ollama Web Search](/uk/tools/ollama-search) | Структуровані фрагменти | -- | Немає для локальних хостів із виконаним входом; `OLLAMA_API_KEY` для прямого пошуку `https://ollama.com` |
|
||||
| [Perplexity](/uk/tools/perplexity-search) | Структуровані фрагменти | Країна, мова, час, домени, обмеження вмісту | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
|
||||
| [SearXNG](/uk/tools/searxng-search) | Структуровані фрагменти | Категорії, мова | Немає (самостійне розміщення) |
|
||||
| [Tavily](/uk/tools/tavily) | Структуровані фрагменти | Через інструмент `tavily_search` | `TAVILY_API_KEY` |
|
||||
|
||||
## Автовиявлення
|
||||
|
||||
## Власний вебпошук OpenAI
|
||||
## Вбудований вебпошук OpenAI
|
||||
|
||||
Прямі моделі OpenAI Responses автоматично використовують розміщений OpenAI інструмент `web_search`, коли вебпошук OpenClaw увімкнено й не зафіксовано керований провайдер. Це поведінка, що належить провайдеру у вбудованому plugin OpenAI, і вона застосовується лише до нативного API-трафіку OpenAI, а не до сумісних з OpenAI proxy base URL чи маршрутів Azure. Установіть `tools.web.search.provider` на іншого провайдера, наприклад `brave`, щоб зберегти керований інструмент `web_search` для моделей OpenAI, або встановіть `tools.web.search.enabled: false`, щоб вимкнути і керований пошук, і власний пошук OpenAI.
|
||||
Прямі моделі OpenAI Responses автоматично використовують розміщений OpenAI інструмент `web_search`, коли вебпошук OpenClaw увімкнено й не закріплено керованого провайдера. Це поведінка, що належить провайдеру, у вбудованому OpenAI plugin, і вона застосовується лише до нативного трафіку OpenAI API, а не до OpenAI-сумісних проксі-базових URL або маршрутів Azure. Задайте для `tools.web.search.provider` іншого провайдера, наприклад `brave`, щоб зберегти керований інструмент `web_search` для моделей OpenAI, або задайте `tools.web.search.enabled: false`, щоб вимкнути і керований пошук, і нативний пошук OpenAI.
|
||||
|
||||
## Власний вебпошук Codex
|
||||
## Вбудований вебпошук Codex
|
||||
|
||||
Моделі з підтримкою Codex можуть за бажанням використовувати власний інструмент `web_search` провайдера Responses замість керованої функції `web_search` OpenClaw.
|
||||
Моделі з підтримкою Codex можуть за бажанням використовувати провайдерський нативний інструмент Responses `web_search` замість керованої функції OpenClaw `web_search`.
|
||||
|
||||
- Налаштовується через `tools.web.search.openaiCodex`
|
||||
- Активується лише для моделей із підтримкою Codex (`openai-codex/*` або провайдерів, що використовують `api: "openai-codex-responses"`)
|
||||
- Налаштуйте його в `tools.web.search.openaiCodex`
|
||||
- Він активується лише для моделей із підтримкою Codex (`openai-codex/*` або провайдерів, що використовують `api: "openai-codex-responses"`)
|
||||
- Керований `web_search` і далі застосовується до моделей без Codex
|
||||
- `mode: "cached"` — типове та рекомендоване значення
|
||||
- `tools.web.search.enabled: false` вимикає і керований, і власний пошук
|
||||
- `mode: "cached"` є стандартним і рекомендованим налаштуванням
|
||||
- `tools.web.search.enabled: false` вимикає і керований, і нативний пошук
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -158,15 +158,15 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
}
|
||||
```
|
||||
|
||||
Якщо власний пошук Codex увімкнено, але поточна модель не підтримує Codex, OpenClaw зберігає звичайну поведінку керованого `web_search`.
|
||||
Якщо нативний пошук Codex увімкнено, але поточна модель не підтримує Codex, OpenClaw зберігає звичайну поведінку керованого `web_search`.
|
||||
|
||||
## Налаштування вебпошуку
|
||||
|
||||
Списки провайдерів у документації та потоках налаштування наведено за алфавітом. Автовиявлення використовує
|
||||
окремий порядок пріоритетів.
|
||||
Списки провайдерів у документації та потоках налаштування впорядковані за абеткою. Автовиявлення зберігає
|
||||
окремий порядок пріоритету.
|
||||
|
||||
Якщо `provider` не задано, OpenClaw перевіряє провайдерів у такому порядку й використовує
|
||||
першого, який готовий:
|
||||
Якщо `provider` не задано, OpenClaw перевіряє провайдерів у такому порядку та використовує
|
||||
першого готового:
|
||||
|
||||
Спочатку провайдери на основі API:
|
||||
|
||||
@ -180,25 +180,25 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
8. **Exa** -- `EXA_API_KEY` або `plugins.entries.exa.config.webSearch.apiKey` (порядок 65)
|
||||
9. **Tavily** -- `TAVILY_API_KEY` або `plugins.entries.tavily.config.webSearch.apiKey` (порядок 70)
|
||||
|
||||
Після цього fallback без ключа:
|
||||
Після цього резервні варіанти без ключа:
|
||||
|
||||
10. **DuckDuckGo** -- HTML-fallback без ключа, без облікового запису чи API key (порядок 100)
|
||||
11. **Ollama Web Search** -- fallback без ключа через ваш налаштований локальний хост Ollama, коли він доступний і виконано `ollama signin`; може повторно використовувати bearer auth провайдера Ollama, коли це потрібно хосту, і може викликати прямий пошук `https://ollama.com`, якщо налаштовано `OLLAMA_API_KEY` (порядок 110)
|
||||
10. **DuckDuckGo** -- резервний HTML-варіант без ключа, без облікового запису чи API-ключа (порядок 100)
|
||||
11. **Ollama Web Search** -- резервний варіант без ключа через ваш налаштований локальний хост Ollama, коли він доступний і в ньому виконано вхід за допомогою `ollama signin`; може повторно використовувати bearer-автентифікацію провайдера Ollama, коли хост її потребує, і може викликати прямий пошук `https://ollama.com`, коли налаштовано `OLLAMA_API_KEY` (порядок 110)
|
||||
12. **SearXNG** -- `SEARXNG_BASE_URL` або `plugins.entries.searxng.config.webSearch.baseUrl` (порядок 200)
|
||||
|
||||
Якщо жодного провайдера не виявлено, використовується Brave (ви отримаєте помилку
|
||||
про відсутній ключ із пропозицією налаштувати його).
|
||||
Якщо жодного провайдера не виявлено, він повертається до Brave (ви отримаєте помилку про відсутній ключ
|
||||
із запитом налаштувати його).
|
||||
|
||||
<Note>
|
||||
Усі поля ключів провайдерів підтримують об’єкти SecretRef. SecretRef
|
||||
у межах plugin у `plugins.entries.<plugin>.config.webSearch.apiKey` визначаються для
|
||||
вбудованих провайдерів вебпошуку на основі API, включно з Brave, Exa, Firecrawl,
|
||||
Усі поля ключів провайдерів підтримують об’єкти SecretRef. SecretRef у межах plugin
|
||||
за шляхом `plugins.entries.<plugin>.config.webSearch.apiKey` розв’язуються для
|
||||
вбудованих провайдерів вебпошуку на основі API, зокрема Brave, Exa, Firecrawl,
|
||||
Gemini, Grok, Kimi, MiniMax, Perplexity і Tavily,
|
||||
незалежно від того, чи провайдер вибрано явно через `tools.web.search.provider`, чи
|
||||
через автовиявлення. У режимі автовиявлення OpenClaw визначає лише ключ
|
||||
вибраного провайдера — SecretRef невибраних провайдерів залишаються неактивними, тож ви можете
|
||||
тримати налаштованими кількох провайдерів, не сплачуючи вартість визначення для
|
||||
тих, які не використовуєте.
|
||||
незалежно від того, чи провайдера явно вибрано через `tools.web.search.provider`, чи
|
||||
вибрано через автовиявлення. У режимі автовиявлення OpenClaw розв’язує лише
|
||||
ключ вибраного провайдера -- невибрані SecretRef залишаються неактивними, тож ви можете
|
||||
тримати налаштованими кілька провайдерів без витрат на розв’язання для тих,
|
||||
які ви не використовуєте.
|
||||
</Note>
|
||||
|
||||
## Конфігурація
|
||||
@ -208,8 +208,8 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
tools: {
|
||||
web: {
|
||||
search: {
|
||||
enabled: true, // типово: true
|
||||
provider: "brave", // або пропустіть для автовиявлення
|
||||
enabled: true, // default: true
|
||||
provider: "brave", // or omit for auto-detection
|
||||
maxResults: 5,
|
||||
timeoutSeconds: 30,
|
||||
cacheTtlMinutes: 15,
|
||||
@ -219,37 +219,34 @@ OpenClaw також містить `x_search` для дописів X (рані
|
||||
}
|
||||
```
|
||||
|
||||
Конфігурація для конкретного провайдера (API key, base URL, режими) знаходиться в
|
||||
Конфігурація, специфічна для провайдера (API-ключі, базові URL, режими), розміщується в
|
||||
`plugins.entries.<plugin>.config.webSearch.*`. Приклади див. на сторінках провайдерів.
|
||||
|
||||
Вибір fallback-провайдера для `web_fetch` виконується окремо:
|
||||
Вибір резервного провайдера `web_fetch` є окремим:
|
||||
|
||||
- виберіть його через `tools.web.fetch.provider`
|
||||
- або пропустіть це поле й дозвольте OpenClaw автоматично виявити першого готового
|
||||
провайдера web-fetch серед доступних облікових даних
|
||||
- наразі вбудованим провайдером web-fetch є Firecrawl, який налаштовується через
|
||||
- виберіть його за допомогою `tools.web.fetch.provider`
|
||||
- або опустіть це поле та дозвольте OpenClaw автоматично виявити першого готового провайдера web-fetch
|
||||
з доступних облікових даних
|
||||
- наразі вбудований провайдер web-fetch — Firecrawl, налаштований у
|
||||
`plugins.entries.firecrawl.config.webFetch.*`
|
||||
|
||||
Коли ви вибираєте **Kimi** під час `openclaw onboard` або
|
||||
`openclaw configure --section web`, OpenClaw також може запитати:
|
||||
|
||||
- API-регіон Moonshot (`https://api.moonshot.ai/v1` або `https://api.moonshot.cn/v1`)
|
||||
- типову модель вебпошуку Kimi (типово `kimi-k2.6`)
|
||||
- регіон Moonshot API (`https://api.moonshot.ai/v1` або `https://api.moonshot.cn/v1`)
|
||||
- стандартну модель вебпошуку Kimi (стандартно `kimi-k2.6`)
|
||||
|
||||
Для `x_search` налаштуйте `plugins.entries.xai.config.xSearch.*`. Він використовує
|
||||
той самий fallback `XAI_API_KEY`, що й вебпошук Grok.
|
||||
Застарілу конфігурацію `tools.web.x_search.*` автоматично мігрує `openclaw doctor --fix`.
|
||||
Для `x_search` налаштуйте `plugins.entries.xai.config.xSearch.*`. Він використовує той самий резервний `XAI_API_KEY`, що й вебпошук Grok.
|
||||
Застаріла конфігурація `tools.web.x_search.*` автоматично мігрується командою `openclaw doctor --fix`.
|
||||
Коли ви вибираєте Grok під час `openclaw onboard` або `openclaw configure --section web`,
|
||||
OpenClaw також може запропонувати необов’язкове налаштування `x_search` з тим самим ключем.
|
||||
Це окремий подальший крок усередині шляху Grok, а не окремий вибір провайдера
|
||||
вебпошуку верхнього рівня. Якщо ви виберете іншого провайдера, OpenClaw не
|
||||
показуватиме запит для `x_search`.
|
||||
Це окремий наступний крок усередині шляху Grok, а не окремий вибір провайдера вебпошуку верхнього рівня. Якщо ви виберете іншого провайдера, OpenClaw не показуватиме запит `x_search`.
|
||||
|
||||
### Зберігання API key
|
||||
### Зберігання API-ключів
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Файл конфігурації">
|
||||
Запустіть `openclaw configure --section web` або задайте ключ безпосередньо:
|
||||
Запустіть `openclaw configure --section web` або задайте ключ напряму:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -269,14 +266,14 @@ OpenClaw також може запропонувати необов’язко
|
||||
|
||||
</Tab>
|
||||
<Tab title="Змінна середовища">
|
||||
Задайте env var провайдера в середовищі процесу Gateway:
|
||||
Задайте змінну середовища провайдера в середовищі процесу Gateway:
|
||||
|
||||
```bash
|
||||
export BRAVE_API_KEY="YOUR_KEY"
|
||||
```
|
||||
|
||||
Для встановлення gateway помістіть її в `~/.openclaw/.env`.
|
||||
Див. [Змінні env](/uk/help/faq#env-vars-and-env-loading).
|
||||
Див. [Змінні середовища](/uk/help/faq#env-vars-and-env-loading).
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@ -284,44 +281,49 @@ OpenClaw також може запропонувати необов’язко
|
||||
## Параметри інструмента
|
||||
|
||||
| Параметр | Опис |
|
||||
| -------------------- | ----------------------------------------------------- |
|
||||
| `query` | Пошуковий запит (обов’язково) |
|
||||
| `count` | Кількість результатів для повернення (1-10, типово: 5) |
|
||||
| `country` | 2-літерний код країни ISO (наприклад, "US", "DE") |
|
||||
| `language` | Код мови ISO 639-1 (наприклад, "en", "de") |
|
||||
| `search_lang` | Код мови пошуку (лише Brave) |
|
||||
| `freshness` | Фільтр часу: `day`, `week`, `month` або `year` |
|
||||
| `date_after` | Результати після цієї дати (YYYY-MM-DD) |
|
||||
| `date_before` | Результати до цієї дати (YYYY-MM-DD) |
|
||||
| `ui_lang` | Код мови UI (лише Brave) |
|
||||
| `domain_filter` | Масив allowlist/denylist доменів (лише Perplexity) |
|
||||
| `max_tokens` | Загальний бюджет вмісту, типово 25000 (лише Perplexity) |
|
||||
| `max_tokens_per_page`| Обмеження токенів на сторінку, типово 2048 (лише Perplexity) |
|
||||
| --------------------- | ----------------------------------------------------- |
|
||||
| `query` | Пошуковий запит (обов’язково) |
|
||||
| `count` | Кількість результатів для повернення (1-10, типово: 5) |
|
||||
| `country` | 2-літерний код країни ISO (наприклад, "US", "DE") |
|
||||
| `language` | Код мови ISO 639-1 (наприклад, "en", "de") |
|
||||
| `search_lang` | Код мови пошуку (лише Brave) |
|
||||
| `freshness` | Фільтр часу: `day`, `week`, `month` або `year` |
|
||||
| `date_after` | Результати після цієї дати (YYYY-MM-DD) |
|
||||
| `date_before` | Результати до цієї дати (YYYY-MM-DD) |
|
||||
| `ui_lang` | Код мови інтерфейсу (лише Brave) |
|
||||
| `domain_filter` | Масив дозволених/заборонених доменів (лише Perplexity) |
|
||||
| `max_tokens` | Загальний бюджет вмісту, типово 25000 (лише Perplexity) |
|
||||
| `max_tokens_per_page` | Обмеження токенів на сторінку, типово 2048 (лише Perplexity) |
|
||||
|
||||
<Warning>
|
||||
Не всі параметри працюють з усіма провайдерами. Режим `llm-context` у Brave
|
||||
Не всі параметри працюють з усіма провайдерами. Режим Brave `llm-context`
|
||||
відхиляє `ui_lang`, `freshness`, `date_after` і `date_before`.
|
||||
Gemini, Grok і Kimi повертають одну AI-синтезовану відповідь із цитуваннями. Вони
|
||||
Gemini, Grok і Kimi повертають одну синтезовану відповідь із цитуваннями. Вони
|
||||
приймають `count` для сумісності зі спільним інструментом, але це не змінює
|
||||
форму grounded answer.
|
||||
форму обґрунтованої відповіді.
|
||||
Perplexity поводиться так само, коли ви використовуєте шлях сумісності
|
||||
Sonar/OpenRouter (`plugins.entries.perplexity.config.webSearch.baseUrl` /
|
||||
`model` або `OPENROUTER_API_KEY`).
|
||||
SearXNG приймає `http://` лише для довірених хостів у приватній мережі або loopback;
|
||||
SearXNG приймає `http://` лише для довірених хостів приватної мережі або local loopback;
|
||||
публічні кінцеві точки SearXNG мають використовувати `https://`.
|
||||
Firecrawl і Tavily підтримують через `web_search`
|
||||
лише `query` і `count` -- для розширених параметрів використовуйте їхні спеціалізовані інструменти.
|
||||
Firecrawl і Tavily підтримують лише `query` і `count` через `web_search`
|
||||
-- використовуйте їхні спеціалізовані інструменти для розширених параметрів.
|
||||
</Warning>
|
||||
|
||||
## x_search
|
||||
|
||||
`x_search` виконує запити до дописів у X (раніше Twitter) через xAI і повертає
|
||||
AI-синтезовані відповіді з цитуваннями. Він приймає запити природною мовою та
|
||||
необов’язкові структуровані фільтри. OpenClaw вмикає вбудований інструмент `x_search`
|
||||
xAI лише для запиту, який обслуговує цей виклик інструмента.
|
||||
`x_search` запитує дописи X (раніше Twitter) за допомогою xAI і повертає
|
||||
синтезовані ШІ відповіді з цитуваннями. Він приймає запити природною мовою та
|
||||
необов’язкові структуровані фільтри. OpenClaw вмикає вбудований інструмент xAI
|
||||
`x_search` лише для запиту, який обслуговує цей виклик інструмента.
|
||||
|
||||
<Note>
|
||||
xAI документує `x_search` як інструмент із підтримкою пошуку за ключовими словами, семантичного пошуку, пошуку користувачів і отримання thread. Для статистики взаємодії на рівні окремого допису, як-от repost, replies, bookmarks або views, краще використовувати цільовий пошук за точним URL допису або status ID. Широкі пошуки за ключовими словами можуть знайти потрібний допис, але повернути менш повні метадані для конкретного допису. Гарний шаблон такий: спочатку знайдіть допис, а потім виконайте другий запит `x_search`, зосереджений саме на цьому дописі.
|
||||
xAI документує `x_search` як такий, що підтримує пошук за ключовими словами, семантичний пошук, пошук користувачів
|
||||
і отримання тредів. Для статистики взаємодії окремого допису, як-от репости,
|
||||
відповіді, закладки або перегляди, віддавайте перевагу цільовому пошуку за точною URL-адресою допису
|
||||
або ID статусу. Широкі пошуки за ключовими словами можуть знайти правильний допис, але повернути менш
|
||||
повні метадані окремого допису. Добрий шаблон: спочатку знайдіть допис, а потім
|
||||
запустіть другий запит `x_search`, зосереджений саме на цьому дописі.
|
||||
</Note>
|
||||
|
||||
### Конфігурація x_search
|
||||
@ -335,13 +337,15 @@ xAI лише для запиту, який обслуговує цей викл
|
||||
xSearch: {
|
||||
enabled: true,
|
||||
model: "grok-4-1-fast-non-reasoning",
|
||||
baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
|
||||
inlineCitations: false,
|
||||
maxTurns: 2,
|
||||
timeoutSeconds: 30,
|
||||
cacheTtlMinutes: 15,
|
||||
},
|
||||
webSearch: {
|
||||
apiKey: "xai-...", // необов’язково, якщо задано XAI_API_KEY
|
||||
apiKey: "xai-...", // optional if XAI_API_KEY is set
|
||||
baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -350,17 +354,22 @@ xAI лише для запиту, який обслуговує цей викл
|
||||
}
|
||||
```
|
||||
|
||||
`x_search` надсилає POST до `<baseUrl>/responses`, коли
|
||||
`plugins.entries.xai.config.xSearch.baseUrl` задано. Якщо це поле пропущено,
|
||||
він повертається до `plugins.entries.xai.config.webSearch.baseUrl`, потім до
|
||||
застарілого `tools.web.search.grok.baseUrl`, і зрештою до публічної кінцевої точки xAI.
|
||||
|
||||
### Параметри x_search
|
||||
|
||||
| Параметр | Опис |
|
||||
| -------------------------- | ------------------------------------------------------ |
|
||||
| `query` | Пошуковий запит (обов’язково) |
|
||||
| `allowed_x_handles` | Обмежити результати конкретними X handle |
|
||||
| `excluded_x_handles` | Виключити конкретні X handle |
|
||||
| `from_date` | Включати лише дописи, створені в цю дату або пізніше (YYYY-MM-DD) |
|
||||
| `to_date` | Включати лише дописи, створені в цю дату або раніше (YYYY-MM-DD) |
|
||||
| `enable_image_understanding` | Дозволити xAI аналізувати зображення, вкладені у відповідні дописи |
|
||||
| `enable_video_understanding` | Дозволити xAI аналізувати відео, вкладені у відповідні дописи |
|
||||
| Параметр | Опис |
|
||||
| ---------------------------- | ------------------------------------------------------ |
|
||||
| `query` | Пошуковий запит (обов’язково) |
|
||||
| `allowed_x_handles` | Обмежити результати певними X handles |
|
||||
| `excluded_x_handles` | Виключити певні X handles |
|
||||
| `from_date` | Включати лише дописи на цю дату або після неї (YYYY-MM-DD) |
|
||||
| `to_date` | Включати лише дописи на цю дату або до неї (YYYY-MM-DD) |
|
||||
| `enable_image_understanding` | Дозволити xAI перевіряти зображення, прикріплені до відповідних дописів |
|
||||
| `enable_video_understanding` | Дозволити xAI перевіряти відео, прикріплені до відповідних дописів |
|
||||
|
||||
### Приклад x_search
|
||||
|
||||
@ -373,7 +382,7 @@ await x_search({
|
||||
```
|
||||
|
||||
```javascript
|
||||
// Статистика окремого допису: використовуйте точний status URL або status ID, коли це можливо
|
||||
// Per-post stats: use the exact status URL or status ID when possible
|
||||
await x_search({
|
||||
query: "https://x.com/huntharo/status/1905678901234567890",
|
||||
});
|
||||
@ -382,23 +391,23 @@ await x_search({
|
||||
## Приклади
|
||||
|
||||
```javascript
|
||||
// Базовий пошук
|
||||
// Basic search
|
||||
await web_search({ query: "OpenClaw plugin SDK" });
|
||||
|
||||
// Пошук для Німеччини
|
||||
// German-specific search
|
||||
await web_search({ query: "TV online schauen", country: "DE", language: "de" });
|
||||
|
||||
// Недавні результати (за минулий тиждень)
|
||||
// Recent results (past week)
|
||||
await web_search({ query: "AI developments", freshness: "week" });
|
||||
|
||||
// Діапазон дат
|
||||
// Date range
|
||||
await web_search({
|
||||
query: "climate research",
|
||||
date_after: "2024-01-01",
|
||||
date_before: "2024-06-30",
|
||||
});
|
||||
|
||||
// Фільтрація доменів (лише Perplexity)
|
||||
// Domain filtering (Perplexity only)
|
||||
await web_search({
|
||||
query: "product reviews",
|
||||
domain_filter: ["-reddit.com", "-pinterest.com"],
|
||||
@ -407,20 +416,20 @@ await web_search({
|
||||
|
||||
## Профілі інструментів
|
||||
|
||||
Якщо ви використовуєте профілі інструментів або allowlist, додайте `web_search`, `x_search` або `group:web`:
|
||||
Якщо ви використовуєте профілі інструментів або списки дозволів, додайте `web_search`, `x_search` або `group:web`:
|
||||
|
||||
```json5
|
||||
{
|
||||
tools: {
|
||||
allow: ["web_search", "x_search"],
|
||||
// або: allow: ["group:web"] (включає web_search, x_search і web_fetch)
|
||||
// or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Web Fetch](/uk/tools/web-fetch) -- отримання URL і витягання придатного для читання вмісту
|
||||
- [Web Browser](/uk/tools/browser) -- повна автоматизація браузера для сайтів із важким JS
|
||||
- [Web Fetch](/uk/tools/web-fetch) -- отримати URL і витягти читабельний вміст
|
||||
- [Web Browser](/uk/tools/browser) -- повна автоматизація браузера для сайтів із великою кількістю JS
|
||||
- [Grok Search](/uk/tools/grok-search) -- Grok як провайдер `web_search`
|
||||
- [Ollama Web Search](/uk/tools/ollama-search) -- вебпошук без ключа через ваш хост Ollama
|
||||
|
||||
Loading…
Reference in New Issue
Block a user