chore(i18n): refresh uk translations
This commit is contained in:
parent
c0f2654569
commit
95d12c9c21
@ -1,62 +1,62 @@
|
||||
---
|
||||
read_when:
|
||||
- Вам потрібен довідник із налаштування моделей для кожного провайдера
|
||||
- Вам потрібен довідник із налаштування моделей за провайдерами
|
||||
- Вам потрібні приклади конфігурацій або команди CLI для початкового налаштування постачальників моделей
|
||||
sidebarTitle: Model providers
|
||||
summary: Огляд провайдера моделей із прикладами конфігурацій + CLI-сценаріями
|
||||
summary: Огляд постачальників моделей із прикладами конфігурацій + сценаріями CLI
|
||||
title: Постачальники моделей
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T16:29:15Z"
|
||||
generated_at: "2026-05-02T01:45:19Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 3902194674d6d4e17a8477c28addb39b8e04c3b498eb6a0305e82c2f1b5d737e
|
||||
source_hash: 8bec3029270ea475bfeb45d87a84ec01b52d461bceecc3ab4ec9ca1f62ac6cc5
|
||||
source_path: concepts/model-providers.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Довідник для **провайдерів LLM/моделей** (не каналів чату, як-от WhatsApp/Telegram). Правила вибору моделей див. у [Моделі](/uk/concepts/models).
|
||||
Довідник для **постачальників LLM/моделей** (не каналів чату, як-от WhatsApp/Telegram). Правила вибору моделей див. у [Моделі](/uk/concepts/models).
|
||||
|
||||
## Швидкі правила
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Посилання на моделі та помічники CLI">
|
||||
- Посилання на моделі використовують `provider/model` (приклад: `opencode/claude-opus-4-6`).
|
||||
- `agents.defaults.models` діє як список дозволених значень, коли його задано.
|
||||
- `agents.defaults.models` діє як список дозволених значень, якщо його задано.
|
||||
- Помічники CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
|
||||
- `models.providers.*.contextWindow` / `contextTokens` / `maxTokens` задають типові значення на рівні провайдера; `models.providers.*.models[].contextWindow` / `contextTokens` / `maxTokens` перевизначають їх для окремої моделі.
|
||||
- Правила резервного перемикання, проби після періоду охолодження та збереження перевизначень сеансу: [Резервне перемикання моделей](/uk/concepts/model-failover).
|
||||
- `models.providers.*.contextWindow` / `contextTokens` / `maxTokens` задають типові значення на рівні постачальника; `models.providers.*.models[].contextWindow` / `contextTokens` / `maxTokens` перевизначають їх для окремої моделі.
|
||||
- Правила резервного перемикання, перевірки після cooldown і збереження перевизначень сеансу: [Резервне перемикання моделей](/uk/concepts/model-failover).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Розділення провайдера й runtime OpenAI">
|
||||
<Accordion title="Розділення постачальника/середовища виконання OpenAI">
|
||||
Маршрути сімейства OpenAI залежать від префікса:
|
||||
|
||||
- `openai/<model>` використовує прямого провайдера OpenAI з API-ключем у PI.
|
||||
- `openai/<model>` використовує прямого постачальника OpenAI з API-ключем у PI.
|
||||
- `openai-codex/<model>` використовує Codex OAuth у PI.
|
||||
- `openai/<model>` разом із `agents.defaults.agentRuntime.id: "codex"` використовує нативний harness сервера застосунку Codex.
|
||||
- `openai/<model>` разом із `agents.defaults.agentRuntime.id: "codex"` використовує нативний серверний каркас застосунку Codex.
|
||||
|
||||
Див. [OpenAI](/uk/providers/openai) і [harness Codex](/uk/plugins/codex-harness). Якщо розділення провайдера й runtime незрозуміле, спершу прочитайте [Runtime агентів](/uk/concepts/agent-runtimes).
|
||||
Див. [OpenAI](/uk/providers/openai) і [каркас Codex](/uk/plugins/codex-harness). Якщо розділення постачальника/середовища виконання незрозуміле, спочатку прочитайте [Середовища виконання агентів](/uk/concepts/agent-runtimes).
|
||||
|
||||
Автоматичне ввімкнення Plugin дотримується тієї самої межі: `openai-codex/<model>` належить до Plugin OpenAI, тоді як Plugin Codex вмикається через `agentRuntime.id: "codex"` або застарілі посилання `codex/<model>`.
|
||||
Автоматичне ввімкнення Plugin дотримується тієї самої межі: `openai-codex/<model>` належить до OpenAI plugin, тоді як Codex plugin вмикається через `agentRuntime.id: "codex"` або застарілі посилання `codex/<model>`.
|
||||
|
||||
GPT-5.5 доступний через `openai/gpt-5.5` для прямого трафіку з API-ключем, `openai-codex/gpt-5.5` у PI для Codex OAuth, а також через нативний harness сервера застосунку Codex, коли задано `agentRuntime.id: "codex"`.
|
||||
GPT-5.5 доступна через `openai/gpt-5.5` для прямого трафіку з API-ключем, `openai-codex/gpt-5.5` у PI для Codex OAuth і нативний серверний каркас застосунку Codex, коли задано `agentRuntime.id: "codex"`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="CLI runtime">
|
||||
CLI runtime використовують те саме розділення: виберіть канонічні посилання на моделі, як-от `anthropic/claude-*`, `google/gemini-*` або `openai/gpt-*`, а потім задайте `agents.defaults.agentRuntime.id` як `claude-cli`, `google-gemini-cli` або `codex-cli`, коли потрібен локальний CLI бекенд.
|
||||
<Accordion title="Середовища виконання CLI">
|
||||
Середовища виконання CLI використовують те саме розділення: виберіть канонічні посилання на моделі, як-от `anthropic/claude-*`, `google/gemini-*` або `openai/gpt-*`, а потім задайте `agents.defaults.agentRuntime.id` як `claude-cli`, `google-gemini-cli` або `codex-cli`, коли потрібен локальний бекенд CLI.
|
||||
|
||||
Застарілі посилання `claude-cli/*`, `google-gemini-cli/*` і `codex-cli/*` мігрують назад до канонічних посилань провайдера, а runtime записується окремо.
|
||||
Застарілі посилання `claude-cli/*`, `google-gemini-cli/*` і `codex-cli/*` мігрують назад до канонічних посилань постачальників із середовищем виконання, записаним окремо.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Поведінка провайдера, якою володіє Plugin
|
||||
## Поведінка постачальника, якою володіє Plugin
|
||||
|
||||
Більшість специфічної для провайдерів логіки міститься в Plugin провайдерів (`registerProvider(...)`), тоді як OpenClaw зберігає загальний цикл inference. Plugin відповідають за onboarding, каталоги моделей, зіставлення змінних середовища для автентифікації, нормалізацію транспорту/конфігурації, очищення схем інструментів, класифікацію резервного перемикання, оновлення OAuth, звітування про використання, профілі мислення/reasoning тощо.
|
||||
Більшість специфічної для постачальника логіки живе в provider plugins (`registerProvider(...)`), тоді як OpenClaw зберігає загальний цикл inference. Plugins відповідають за onboarding, каталоги моделей, зіставлення змінних середовища для автентифікації, нормалізацію транспорту/конфігурації, очищення схем інструментів, класифікацію failover, оновлення OAuth, звітування про використання, профілі thinking/reasoning тощо.
|
||||
|
||||
Повний список хуків provider-SDK і прикладів вбудованих Plugin наведено в [Plugin провайдерів](/uk/plugins/sdk-provider-plugins). Провайдер, якому потрібен повністю власний виконавець запитів, є окремою, глибшою поверхнею розширення.
|
||||
Повний список хуків provider-SDK і прикладів bundled-plugin наведено в [Provider plugins](/uk/plugins/sdk-provider-plugins). Постачальник, якому потрібен повністю власний виконавець запитів, є окремою, глибшою поверхнею розширення.
|
||||
|
||||
<Note>
|
||||
Поведінка runner, якою володіє провайдер, живе в явних хуках провайдера, як-от політика replay, нормалізація схем інструментів, обгортання stream і помічники транспорту/запитів. Застарілий статичний пакет `ProviderPlugin.capabilities` призначений лише для сумісності й більше не читається спільною логікою runner.
|
||||
Поведінка runner, якою володіє постачальник, живе в явних хуках постачальника, таких як політика replay, нормалізація схем інструментів, обгортання stream і помічники транспорту/запитів. Застарілий статичний контейнер `ProviderPlugin.capabilities` призначений лише для сумісності й більше не читається спільною логікою runner.
|
||||
</Note>
|
||||
|
||||
## Ротація API-ключів
|
||||
@ -68,40 +68,40 @@ x-i18n:
|
||||
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (одне live-перевизначення, найвищий пріоритет)
|
||||
- `<PROVIDER>_API_KEYS` (список через кому або крапку з комою)
|
||||
- `<PROVIDER>_API_KEY` (основний ключ)
|
||||
- `<PROVIDER>_API_KEY_*` (нумерований список, напр. `<PROVIDER>_API_KEY_1`)
|
||||
- `<PROVIDER>_API_KEY_*` (нумерований список, наприклад `<PROVIDER>_API_KEY_1`)
|
||||
|
||||
Для провайдерів Google `GOOGLE_API_KEY` також включено як fallback. Порядок вибору ключів зберігає пріоритет і усуває дублікати значень.
|
||||
Для постачальників Google `GOOGLE_API_KEY` також включено як fallback. Порядок вибору ключів зберігає пріоритет і усуває дублікати значень.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Коли запускається ротація">
|
||||
- Запити повторюються з наступним ключем лише для відповідей про обмеження швидкості (наприклад, `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміт використання).
|
||||
- Збої, не пов’язані з обмеженням швидкості, одразу завершуються помилкою; ротація ключів не виконується.
|
||||
- Коли всі кандидатні ключі зазнають невдачі, повертається фінальна помилка з останньої спроби.
|
||||
- Запити повторюються з наступним ключем лише для відповідей про rate limit (наприклад `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміт використання).
|
||||
- Помилки, не пов’язані з rate limit, завершуються негайно; ротація ключів не виконується.
|
||||
- Коли всі ключі-кандидати зазнають невдачі, фінальна помилка повертається з останньої спроби.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Вбудовані провайдери (каталог pi-ai)
|
||||
## Вбудовані постачальники (каталог pi-ai)
|
||||
|
||||
OpenClaw постачається з каталогом pi‑ai. Ці провайдери **не** потребують конфігурації `models.providers`; просто задайте автентифікацію й виберіть модель.
|
||||
OpenClaw постачається з каталогом pi‑ai. Ці постачальники **не** потребують конфігурації `models.providers`; просто задайте автентифікацію й виберіть модель.
|
||||
|
||||
### OpenAI
|
||||
|
||||
- Постачальник: `openai`
|
||||
- Провайдер: `openai`
|
||||
- Автентифікація: `OPENAI_API_KEY`
|
||||
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, плюс `OPENCLAW_LIVE_OPENAI_KEY` (одноразове перевизначення)
|
||||
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, плюс `OPENCLAW_LIVE_OPENAI_KEY` (одне перевизначення)
|
||||
- Приклади моделей: `openai/gpt-5.5`, `openai/gpt-5.4-mini`
|
||||
- Перевірте доступність облікового запису/моделі за допомогою `openclaw models list --provider openai`, якщо конкретне встановлення або API-ключ поводиться інакше.
|
||||
- Перевірте доступність облікового запису/моделі за допомогою `openclaw models list --provider openai`, якщо конкретне встановлення або ключ API поводиться інакше.
|
||||
- CLI: `openclaw onboard --auth-choice openai-api-key`
|
||||
- Типовий транспорт — `auto` (спочатку WebSocket, резервно SSE)
|
||||
- Перевизначення для кожної моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
|
||||
- Прогрівання WebSocket для OpenAI Responses типово ввімкнене через `params.openaiWsWarmup` (`true`/`false`)
|
||||
- Транспорт за замовчуванням — `auto` (спершу WebSocket, резервний SSE)
|
||||
- Перевизначайте для окремої моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
|
||||
- Прогрівання OpenAI Responses WebSocket за замовчуванням увімкнене через `params.openaiWsWarmup` (`true`/`false`)
|
||||
- Пріоритетну обробку OpenAI можна ввімкнути через `agents.defaults.models["openai/<model>"].params.serviceTier`
|
||||
- `/fast` і `params.fastMode` зіставляють прямі запити Responses `openai/*` із `service_tier=priority` на `api.openai.com`
|
||||
- Використовуйте `params.serviceTier`, коли потрібен явний рівень замість спільного перемикача `/fast`
|
||||
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) застосовуються лише до нативного трафіку OpenAI на `api.openai.com`, а не до загальних OpenAI-сумісних проксі
|
||||
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) застосовуються лише до нативного трафіку OpenAI до `api.openai.com`, а не до загальних OpenAI-сумісних проксі
|
||||
- Нативні маршрути OpenAI також зберігають Responses `store`, підказки prompt-cache і формування payload для сумісності з reasoning OpenAI; проксі-маршрути цього не роблять
|
||||
- `openai/gpt-5.3-codex-spark` навмисно приховано в OpenClaw, оскільки live-запити OpenAI API його відхиляють, а поточний каталог Codex його не надає
|
||||
- `openai/gpt-5.3-codex-spark` навмисно пригнічено в OpenClaw, оскільки живі запити OpenAI API його відхиляють, а поточний каталог Codex його не надає
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -111,16 +111,16 @@ OpenClaw постачається з каталогом pi‑ai. Ці прова
|
||||
|
||||
### Anthropic
|
||||
|
||||
- Постачальник: `anthropic`
|
||||
- Провайдер: `anthropic`
|
||||
- Автентифікація: `ANTHROPIC_API_KEY`
|
||||
- Необов’язкова ротація: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, плюс `OPENCLAW_LIVE_ANTHROPIC_KEY` (одноразове перевизначення)
|
||||
- Необов’язкова ротація: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, плюс `OPENCLAW_LIVE_ANTHROPIC_KEY` (одне перевизначення)
|
||||
- Приклад моделі: `anthropic/claude-opus-4-6`
|
||||
- CLI: `openclaw onboard --auth-choice apiKey`
|
||||
- Прямі публічні запити Anthropic підтримують спільний перемикач `/fast` і `params.fastMode`, включно з трафіком з API-ключем та OAuth-автентифікацією, надісланим до `api.anthropic.com`; OpenClaw зіставляє це з Anthropic `service_tier` (`auto` проти `standard_only`)
|
||||
- Бажана конфігурація Claude CLI зберігає посилання на модель канонічним і вибирає бекенд CLI окремо: `anthropic/claude-opus-4-7` з `agents.defaults.agentRuntime.id: "claude-cli"`. Застарілі посилання `claude-cli/claude-opus-4-7` і далі працюють для сумісності.
|
||||
- Прямі публічні запити Anthropic підтримують спільний перемикач `/fast` і `params.fastMode`, зокрема трафік із ключем API та автентифікацією OAuth, надісланий до `api.anthropic.com`; OpenClaw зіставляє це з Anthropic `service_tier` (`auto` проти `standard_only`)
|
||||
- Бажана конфігурація Claude CLI зберігає канонічне посилання на модель і вибирає бекенд CLI окремо: `anthropic/claude-opus-4-7` з `agents.defaults.agentRuntime.id: "claude-cli"`. Застарілі посилання `claude-cli/claude-opus-4-7` досі працюють для сумісності.
|
||||
|
||||
<Note>
|
||||
Працівники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw розглядає повторне використання Claude CLI і використання `claude -p` як санкціоновані для цієї інтеграції, доки Anthropic не опублікує нову політику. Токен налаштування Anthropic залишається доступним як підтримуваний шлях токена OpenClaw, але тепер OpenClaw віддає перевагу повторному використанню Claude CLI і `claude -p`, коли вони доступні.
|
||||
Співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає повторне використання Claude CLI та використання `claude -p` санкціонованими для цієї інтеграції, доки Anthropic не опублікує нову політику. Anthropic setup-token залишається доступним як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI та `claude -p`, коли вони доступні.
|
||||
</Note>
|
||||
|
||||
```json5
|
||||
@ -131,22 +131,22 @@ OpenClaw постачається з каталогом pi‑ai. Ці прова
|
||||
|
||||
### OpenAI Codex OAuth
|
||||
|
||||
- Постачальник: `openai-codex`
|
||||
- Провайдер: `openai-codex`
|
||||
- Автентифікація: OAuth (ChatGPT)
|
||||
- Посилання на модель PI: `openai-codex/gpt-5.5`
|
||||
- Посилання на нативний harness app-server Codex: `openai/gpt-5.5` з `agents.defaults.agentRuntime.id: "codex"`
|
||||
- Документація нативного harness app-server Codex: [harness Codex](/uk/plugins/codex-harness)
|
||||
- Посилання на нативну обв’язку сервера застосунку Codex: `openai/gpt-5.5` з `agents.defaults.agentRuntime.id: "codex"`
|
||||
- Документація нативної обв’язки сервера застосунку Codex: [Обв’язка Codex](/uk/plugins/codex-harness)
|
||||
- Застарілі посилання на моделі: `codex/gpt-*`
|
||||
- Межа Plugin: `openai-codex/*` завантажує Plugin OpenAI; нативний Plugin app-server Codex вибирається лише runtime harness Codex або застарілими посиланнями `codex/*`.
|
||||
- Межа Plugin: `openai-codex/*` завантажує Plugin OpenAI; нативний Plugin сервера застосунку Codex вибирається лише середовищем виконання обв’язки Codex або застарілими посиланнями `codex/*`.
|
||||
- CLI: `openclaw onboard --auth-choice openai-codex` або `openclaw models auth login --provider openai-codex`
|
||||
- Типовий транспорт — `auto` (спочатку WebSocket, резервно SSE)
|
||||
- Перевизначення для кожної моделі PI через `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
|
||||
- `params.serviceTier` також пересилається в нативних запитах Codex Responses (`chatgpt.com/backend-api`)
|
||||
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) додаються лише до нативного трафіку Codex на `chatgpt.com/backend-api`, а не до загальних OpenAI-сумісних проксі
|
||||
- Транспорт за замовчуванням — `auto` (спершу WebSocket, резервний SSE)
|
||||
- Перевизначайте для окремої моделі PI через `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
|
||||
- `params.serviceTier` також пересилається у нативних запитах Codex Responses (`chatgpt.com/backend-api`)
|
||||
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) додаються лише до нативного трафіку Codex до `chatgpt.com/backend-api`, а не до загальних OpenAI-сумісних проксі
|
||||
- Має ту саму конфігурацію спільного перемикача `/fast` і `params.fastMode`, що й прямі `openai/*`; OpenClaw зіставляє це з `service_tier=priority`
|
||||
- `openai-codex/gpt-5.5` використовує нативні для каталогу Codex `contextWindow = 400000` і типовий runtime `contextTokens = 272000`; перевизначте обмеження runtime за допомогою `models.providers.openai-codex.models[].contextTokens`
|
||||
- `openai-codex/gpt-5.5` використовує нативне для каталогу Codex `contextWindow = 400000` і стандартне для середовища виконання `contextTokens = 272000`; перевизначайте обмеження середовища виконання за допомогою `models.providers.openai-codex.models[].contextTokens`
|
||||
- Примітка щодо політики: OpenAI Codex OAuth явно підтримується для зовнішніх інструментів/робочих процесів на кшталт OpenClaw.
|
||||
- Використовуйте `openai-codex/gpt-5.5`, коли потрібен маршрут Codex OAuth/підписки; використовуйте `openai/gpt-5.5`, коли ваше налаштування API-ключа і локальний каталог надають публічний маршрут API.
|
||||
- Використовуйте `openai-codex/gpt-5.5`, коли потрібен маршрут Codex OAuth/підписки; використовуйте `openai/gpt-5.5`, коли ваше налаштування ключа API та локальний каталог надають публічний маршрут API.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -166,25 +166,25 @@ OpenClaw постачається з каталогом pi‑ai. Ці прова
|
||||
}
|
||||
```
|
||||
|
||||
### Інші розміщені варіанти в стилі підписки
|
||||
### Інші розміщені варіанти у стилі підписки
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Моделі GLM" href="/uk/providers/glm">
|
||||
Coding Plan Z.AI або загальні кінцеві точки API.
|
||||
Z.AI Coding Plan або загальні кінцеві точки API.
|
||||
</Card>
|
||||
<Card title="MiniMax" href="/uk/providers/minimax">
|
||||
Доступ через OAuth MiniMax Coding Plan або API-ключ.
|
||||
MiniMax Coding Plan OAuth або доступ за ключем API.
|
||||
</Card>
|
||||
<Card title="Qwen Cloud" href="/uk/providers/qwen">
|
||||
Поверхня постачальника Qwen Cloud плюс зіставлення кінцевих точок Alibaba DashScope і Coding Plan.
|
||||
Поверхня провайдера Qwen Cloud плюс зіставлення кінцевих точок Alibaba DashScope і Coding Plan.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
### OpenCode
|
||||
|
||||
- Автентифікація: `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`)
|
||||
- Постачальник runtime Zen: `opencode`
|
||||
- Постачальник runtime Go: `opencode-go`
|
||||
- Провайдер середовища виконання Zen: `opencode`
|
||||
- Провайдер середовища виконання Go: `opencode-go`
|
||||
- Приклади моделей: `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.6`
|
||||
- CLI: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`
|
||||
|
||||
@ -194,28 +194,28 @@ OpenClaw постачається з каталогом pi‑ai. Ці прова
|
||||
}
|
||||
```
|
||||
|
||||
### Google Gemini (API-ключ)
|
||||
### Google Gemini (ключ API)
|
||||
|
||||
- Постачальник: `google`
|
||||
- Провайдер: `google`
|
||||
- Автентифікація: `GEMINI_API_KEY`
|
||||
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, резервний `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (одноразове перевизначення)
|
||||
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, резервний `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (одне перевизначення)
|
||||
- Приклади моделей: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
|
||||
- Сумісність: застаріла конфігурація OpenClaw, що використовує `google/gemini-3.1-flash-preview`, нормалізується до `google/gemini-3-flash-preview`
|
||||
- Псевдонім: `google/gemini-3.1-pro` приймається і нормалізується до live-ідентифікатора Gemini API від Google, `google/gemini-3.1-pro-preview`
|
||||
- Сумісність: застаріла конфігурація OpenClaw з `google/gemini-3.1-flash-preview` нормалізується до `google/gemini-3-flash-preview`
|
||||
- Псевдонім: `google/gemini-3.1-pro` приймається й нормалізується до живого ідентифікатора Gemini API від Google, `google/gemini-3.1-pro-preview`
|
||||
- CLI: `openclaw onboard --auth-choice gemini-api-key`
|
||||
- Мислення: `/think adaptive` використовує динамічне мислення Google. Gemini 3/3.1 пропускають фіксований `thinkingLevel`; Gemini 2.5 надсилає `thinkingBudget: -1`.
|
||||
- Прямі запуски Gemini також приймають `agents.defaults.models["google/<model>"].params.cachedContent` (або застаріле `cached_content`) для пересилання нативного для постачальника дескриптора `cachedContents/...`; влучання кешу Gemini відображаються як OpenClaw `cacheRead`
|
||||
- Прямі запуски Gemini також приймають `agents.defaults.models["google/<model>"].params.cachedContent` (або застарілий `cached_content`) для пересилання нативного для провайдера дескриптора `cachedContents/...`; влучання кешу Gemini відображаються як OpenClaw `cacheRead`
|
||||
|
||||
### Google Vertex і Gemini CLI
|
||||
|
||||
- Постачальники: `google-vertex`, `google-gemini-cli`
|
||||
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує свій OAuth-потік
|
||||
- Провайдери: `google-vertex`, `google-gemini-cli`
|
||||
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує власний потік OAuth
|
||||
|
||||
<Warning>
|
||||
Gemini CLI OAuth в OpenClaw є неофіційною інтеграцією. Деякі користувачі повідомляли про обмеження облікових записів Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
|
||||
Gemini CLI OAuth в OpenClaw є неофіційною інтеграцією. Деякі користувачі повідомляли про обмеження облікових записів Google після використання сторонніх клієнтів. Перегляньте умови Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
|
||||
</Warning>
|
||||
|
||||
Gemini CLI OAuth постачається як частина пакетного Plugin `google`.
|
||||
Gemini CLI OAuth постачається як частина bundled Plugin `google`.
|
||||
|
||||
<Steps>
|
||||
<Step title="Установіть Gemini CLI">
|
||||
@ -245,12 +245,12 @@ Gemini CLI OAuth постачається як частина пакетного
|
||||
Модель за замовчуванням: `google-gemini-cli/gemini-3-flash-preview`. Ви **не** вставляєте client id або secret у `openclaw.json`. Потік входу CLI зберігає токени в профілях автентифікації на хості gateway.
|
||||
|
||||
</Step>
|
||||
<Step title="Налаштувати проєкт (за потреби)">
|
||||
Якщо запити не проходять після входу, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості gateway.
|
||||
<Step title="Set project (if needed)">
|
||||
Якщо запити після входу не виконуються, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості gateway.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
JSON-відповіді Gemini CLI аналізуються з `response`; використання має fallback до `stats`, а `stats.cached` нормалізується в OpenClaw `cacheRead`.
|
||||
JSON-відповіді Gemini CLI розбираються з `response`; дані про використання повертаються до `stats`, а `stats.cached` нормалізується в OpenClaw `cacheRead`.
|
||||
|
||||
### Z.AI (GLM)
|
||||
|
||||
@ -259,7 +259,7 @@ JSON-відповіді Gemini CLI аналізуються з `response`; ви
|
||||
- Приклад моделі: `zai/glm-5.1`
|
||||
- CLI: `openclaw onboard --auth-choice zai-api-key`
|
||||
- Псевдоніми: `z.ai/*` і `z-ai/*` нормалізуються до `zai/*`
|
||||
- `zai-api-key` автоматично визначає відповідний endpoint Z.AI; `zai-coding-global`, `zai-coding-cn`, `zai-global` і `zai-cn` примусово вибирають конкретну поверхню
|
||||
- `zai-api-key` автоматично визначає відповідну кінцеву точку Z.AI; `zai-coding-global`, `zai-coding-cn`, `zai-global` і `zai-cn` примусово задають конкретну поверхню
|
||||
|
||||
### Vercel AI Gateway
|
||||
|
||||
@ -275,74 +275,74 @@ JSON-відповіді Gemini CLI аналізуються з `response`; ви
|
||||
- Приклад моделі: `kilocode/kilo/auto`
|
||||
- CLI: `openclaw onboard --auth-choice kilocode-api-key`
|
||||
- Базова URL-адреса: `https://api.kilo.ai/api/gateway/`
|
||||
- Статичний fallback-каталог постачається з `kilocode/kilo/auto`; live-виявлення `https://api.kilo.ai/api/gateway/models` може додатково розширити runtime-каталог.
|
||||
- Точна upstream-маршрутизація за `kilocode/kilo/auto` належить Kilo Gateway, а не жорстко закодована в OpenClaw.
|
||||
- Статичний резервний каталог постачається з `kilocode/kilo/auto`; live-виявлення `https://api.kilo.ai/api/gateway/models` може додатково розширити runtime-каталог.
|
||||
- Точна upstream-маршрутизація за `kilocode/kilo/auto` належить Kilo Gateway, а не жорстко задана в OpenClaw.
|
||||
|
||||
Див. [/providers/kilocode](/uk/providers/kilocode) для деталей налаштування.
|
||||
Див. [/providers/kilocode](/uk/providers/kilocode), щоб дізнатися подробиці налаштування.
|
||||
|
||||
### Інші вбудовані плагіни постачальників
|
||||
### Інші вбудовані provider plugins
|
||||
|
||||
| Постачальник | Id | Env автентифікації | Приклад моделі |
|
||||
| ---------------------- | -------------------------------- | ------------------------------------------------------------ | --------------------------------------------- |
|
||||
| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` |
|
||||
| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` |
|
||||
| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — |
|
||||
| DeepInfra | `deepinfra` | `DEEPINFRA_API_KEY` | `deepinfra/deepseek-ai/DeepSeek-V3.2` |
|
||||
| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek/deepseek-v4-flash` |
|
||||
| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — |
|
||||
| Groq | `groq` | `GROQ_API_KEY` | — |
|
||||
| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` або `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` |
|
||||
| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` |
|
||||
| Kimi Coding | `kimi` | `KIMI_API_KEY` або `KIMICODE_API_KEY` | `kimi/kimi-code` |
|
||||
| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` |
|
||||
| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` |
|
||||
| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` |
|
||||
| NVIDIA | `nvidia` | `NVIDIA_API_KEY` | `nvidia/nvidia/nemotron-3-super-120b-a12b` |
|
||||
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` |
|
||||
| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` |
|
||||
| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` |
|
||||
| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` |
|
||||
| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` |
|
||||
| Venice | `venice` | `VENICE_API_KEY` | — |
|
||||
| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` |
|
||||
| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` |
|
||||
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` |
|
||||
| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` |
|
||||
| Постачальник | Id | Змінна середовища автентифікації | Приклад моделі |
|
||||
| ---------------------- | -------------------------------- | ------------------------------------------------------------- | --------------------------------------------- |
|
||||
| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` |
|
||||
| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` |
|
||||
| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — |
|
||||
| DeepInfra | `deepinfra` | `DEEPINFRA_API_KEY` | `deepinfra/deepseek-ai/DeepSeek-V3.2` |
|
||||
| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek/deepseek-v4-flash` |
|
||||
| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — |
|
||||
| Groq | `groq` | `GROQ_API_KEY` | — |
|
||||
| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` або `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` |
|
||||
| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` |
|
||||
| Kimi Coding | `kimi` | `KIMI_API_KEY` або `KIMICODE_API_KEY` | `kimi/kimi-code` |
|
||||
| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` |
|
||||
| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` |
|
||||
| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` |
|
||||
| NVIDIA | `nvidia` | `NVIDIA_API_KEY` | `nvidia/nvidia/nemotron-3-super-120b-a12b` |
|
||||
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` |
|
||||
| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` |
|
||||
| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` |
|
||||
| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` |
|
||||
| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` |
|
||||
| Venice | `venice` | `VENICE_API_KEY` | — |
|
||||
| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` |
|
||||
| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` |
|
||||
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4.3` |
|
||||
| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` |
|
||||
|
||||
#### Особливості, які варто знати
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="OpenRouter">
|
||||
Застосовує свої заголовки атрибуції застосунку та маркери Anthropic `cache_control` лише на перевірених маршрутах `openrouter.ai`. Посилання DeepSeek, Moonshot і ZAI придатні для cache-TTL у керованому OpenRouter кешуванні prompt, але не отримують кеш-маркерів Anthropic. Як proxy-style OpenAI-сумісний шлях, він пропускає формування лише для native-OpenAI (`serviceTier`, Responses `store`, підказки prompt-cache, OpenAI reasoning-compat). Посилання на базі Gemini зберігають лише proxy-Gemini очищення thought-signature.
|
||||
Застосовує свої заголовки app-attribution і маркери Anthropic `cache_control` лише на перевірених маршрутах `openrouter.ai`. Посилання DeepSeek, Moonshot і ZAI придатні для cache-TTL у керованому OpenRouter кешуванні промптів, але не отримують маркерів кешу Anthropic. Як proxy-style OpenAI-compatible шлях, він пропускає shaping, призначений лише для native-OpenAI (`serviceTier`, Responses `store`, підказки prompt-cache, OpenAI reasoning-compat). Посилання на базі Gemini зберігають лише proxy-Gemini очищення thought-signature.
|
||||
</Accordion>
|
||||
<Accordion title="Kilo Gateway">
|
||||
Посилання на базі Gemini проходять той самий шлях очищення proxy-Gemini; `kilocode/kilo/auto` та інші посилання proxy-reasoning-unsupported пропускають інʼєкцію proxy reasoning.
|
||||
Посилання на базі Gemini використовують той самий шлях proxy-Gemini очищення; `kilocode/kilo/auto` та інші посилання proxy-reasoning-unsupported пропускають proxy reasoning injection.
|
||||
</Accordion>
|
||||
<Accordion title="MiniMax">
|
||||
Onboarding через API-ключ записує явні text-only визначення chat-моделей M2.7; розуміння зображень залишається на media provider `MiniMax-VL-01`, яким володіє плагін.
|
||||
Онбординг за API-ключем записує явні визначення чат-моделей M2.7 лише для тексту; розуміння зображень залишається в media provider `MiniMax-VL-01`, що належить Plugin.
|
||||
</Accordion>
|
||||
<Accordion title="NVIDIA">
|
||||
Ідентифікатори моделей використовують простір імен `nvidia/<vendor>/<model>` (наприклад, `nvidia/nvidia/nemotron-...` поряд із `nvidia/moonshotai/kimi-k2.5`); засоби вибору зберігають буквальну композицію `<provider>/<model-id>`, тоді як канонічний ключ, що надсилається до API, залишається з одним префіксом.
|
||||
Ідентифікатори моделей використовують простір імен `nvidia/<vendor>/<model>` (наприклад, `nvidia/nvidia/nemotron-...` поруч із `nvidia/moonshotai/kimi-k2.5`); засоби вибору зберігають буквальну композицію `<provider>/<model-id>`, тоді як канонічний ключ, що надсилається до API, лишається з одним префіксом.
|
||||
</Accordion>
|
||||
<Accordion title="xAI">
|
||||
Використовує шлях xAI Responses. `/fast` або `params.fastMode: true` переписує `grok-3`, `grok-3-mini`, `grok-4` і `grok-4-0709` на їхні варіанти `*-fast`. `tool_stream` увімкнено за замовчуванням; вимкніть через `agents.defaults.models["xai/<model>"].params.tool_stream=false`.
|
||||
Використовує шлях xAI Responses. `grok-4.3` є вбудованою чат-моделлю за замовчуванням. `/fast` або `params.fastMode: true` переписує `grok-3`, `grok-3-mini`, `grok-4` і `grok-4-0709` на їхні варіанти `*-fast`. `tool_stream` увімкнено за замовчуванням; вимикайте через `agents.defaults.models["xai/<model>"].params.tool_stream=false`.
|
||||
</Accordion>
|
||||
<Accordion title="Cerebras">
|
||||
Постачається як вбудований плагін постачальника `cerebras`. GLM використовує `zai-glm-4.7`; OpenAI-сумісна базова URL-адреса — `https://api.cerebras.ai/v1`.
|
||||
Постачається як вбудований provider plugin `cerebras`. GLM використовує `zai-glm-4.7`; OpenAI-compatible базова URL-адреса: `https://api.cerebras.ai/v1`.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Постачальники через `models.providers` (власна/базова URL-адреса)
|
||||
|
||||
Використовуйте `models.providers` (або `models.json`), щоб додати **власних** постачальників або OpenAI/Anthropic‑сумісні проксі.
|
||||
Використовуйте `models.providers` (або `models.json`), щоб додавати **власних** постачальників або OpenAI/Anthropic‑compatible проксі.
|
||||
|
||||
Багато вбудованих плагінів постачальників нижче вже публікують стандартний каталог. Використовуйте явні записи `models.providers.<id>` лише тоді, коли потрібно перевизначити стандартну базову URL-адресу, заголовки або список моделей.
|
||||
Багато наведених нижче вбудованих provider plugins уже публікують каталог за замовчуванням. Використовуйте явні записи `models.providers.<id>` лише тоді, коли потрібно перевизначити базову URL-адресу, заголовки або список моделей.
|
||||
|
||||
Перевірки можливостей моделей Gateway також читають явні метадані `models.providers.<id>.models[]`. Якщо власна або проксі-модель приймає зображення, задайте `input: ["text", "image"]` для цієї моделі, щоб шляхи WebChat і вкладень з node-origin передавали зображення як native model inputs, а не як text-only media refs.
|
||||
Перевірки можливостей моделей Gateway також читають явні метадані `models.providers.<id>.models[]`. Якщо власна або proxy-модель приймає зображення, задайте `input: ["text", "image"]` для цієї моделі, щоб WebChat і шляхи вкладень з node-origin передавали зображення як нативні вхідні дані моделі, а не як text-only media refs.
|
||||
|
||||
### Moonshot AI (Kimi)
|
||||
|
||||
Moonshot постачається як вбудований плагін постачальника. За замовчуванням використовуйте вбудованого постачальника й додавайте явний запис `models.providers.moonshot` лише тоді, коли потрібно перевизначити базову URL-адресу або метадані моделі:
|
||||
Moonshot постачається як вбудований provider plugin. За замовчуванням використовуйте вбудованого постачальника й додавайте явний запис `models.providers.moonshot` лише тоді, коли потрібно перевизначити базову URL-адресу або метадані моделі:
|
||||
|
||||
- Постачальник: `moonshot`
|
||||
- Автентифікація: `MOONSHOT_API_KEY`
|
||||
@ -380,9 +380,9 @@ Moonshot постачається як вбудований плагін пос
|
||||
}
|
||||
```
|
||||
|
||||
### Програмування з Kimi
|
||||
### Kimi для кодування
|
||||
|
||||
Kimi Coding використовує Anthropic-сумісну кінцеву точку Moonshot AI:
|
||||
Kimi Coding використовує сумісну з Anthropic кінцеву точку Moonshot AI:
|
||||
|
||||
- Провайдер: `kimi`
|
||||
- Автентифікація: `KIMI_API_KEY`
|
||||
@ -397,13 +397,13 @@ Kimi Coding використовує Anthropic-сумісну кінцеву т
|
||||
}
|
||||
```
|
||||
|
||||
Застарілий `kimi/k2p5` і надалі приймається як ідентифікатор моделі для сумісності.
|
||||
Застарілий `kimi/k2p5` і далі приймається як ідентифікатор моделі для сумісності.
|
||||
|
||||
### Volcano Engine (Doubao)
|
||||
|
||||
Volcano Engine (火山引擎) надає доступ до Doubao та інших моделей у Китаї.
|
||||
|
||||
- Провайдер: `volcengine` (для програмування: `volcengine-plan`)
|
||||
- Провайдер: `volcengine` (кодування: `volcengine-plan`)
|
||||
- Автентифікація: `VOLCANO_ENGINE_API_KEY`
|
||||
- Приклад моделі: `volcengine-plan/ark-code-latest`
|
||||
- CLI: `openclaw onboard --auth-choice volcengine-api-key`
|
||||
@ -416,12 +416,12 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
|
||||
}
|
||||
```
|
||||
|
||||
Onboarding за замовчуванням використовує поверхню для програмування, але загальний каталог `volcengine/*` реєструється одночасно.
|
||||
Під час онбордингу за замовчуванням використовується поверхня для кодування, але загальний каталог `volcengine/*` реєструється одночасно.
|
||||
|
||||
У засобах вибору моделі під час onboarding/configure варіант автентифікації Volcengine віддає перевагу рядкам як `volcengine/*`, так і `volcengine-plan/*`. Якщо ці моделі ще не завантажено, OpenClaw повертається до нефільтрованого каталогу замість показу порожнього засобу вибору, обмеженого провайдером.
|
||||
У засобах вибору моделі під час онбордингу або налаштування вибір автентифікації Volcengine надає перевагу рядкам `volcengine/*` і `volcengine-plan/*`. Якщо ці моделі ще не завантажені, OpenClaw натомість повертається до нефільтрованого каталогу, а не показує порожній засіб вибору, обмежений провайдером.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Стандартні моделі">
|
||||
<Tab title="Standard models">
|
||||
- `volcengine/doubao-seed-1-8-251228` (Doubao Seed 1.8)
|
||||
- `volcengine/doubao-seed-code-preview-251028`
|
||||
- `volcengine/kimi-k2-5-260127` (Kimi K2.5)
|
||||
@ -429,7 +429,7 @@ Onboarding за замовчуванням використовує поверх
|
||||
- `volcengine/deepseek-v3-2-251201` (DeepSeek V3.2 128K)
|
||||
|
||||
</Tab>
|
||||
<Tab title="Моделі для програмування (volcengine-plan)">
|
||||
<Tab title="Coding models (volcengine-plan)">
|
||||
- `volcengine-plan/ark-code-latest`
|
||||
- `volcengine-plan/doubao-seed-code`
|
||||
- `volcengine-plan/kimi-k2.5`
|
||||
@ -443,7 +443,7 @@ Onboarding за замовчуванням використовує поверх
|
||||
|
||||
BytePlus ARK надає міжнародним користувачам доступ до тих самих моделей, що й Volcano Engine.
|
||||
|
||||
- Провайдер: `byteplus` (для програмування: `byteplus-plan`)
|
||||
- Провайдер: `byteplus` (кодування: `byteplus-plan`)
|
||||
- Автентифікація: `BYTEPLUS_API_KEY`
|
||||
- Приклад моделі: `byteplus-plan/ark-code-latest`
|
||||
- CLI: `openclaw onboard --auth-choice byteplus-api-key`
|
||||
@ -456,18 +456,18 @@ BytePlus ARK надає міжнародним користувачам дост
|
||||
}
|
||||
```
|
||||
|
||||
Onboarding за замовчуванням використовує поверхню для програмування, але загальний каталог `byteplus/*` реєструється одночасно.
|
||||
Onboarding за замовчуванням використовує поверхню для кодування, але загальний каталог `byteplus/*` реєструється одночасно.
|
||||
|
||||
У засобах вибору моделі під час onboarding/configure вибір автентифікації BytePlus надає перевагу рядкам і `byteplus/*`, і `byteplus-plan/*`. Якщо ці моделі ще не завантажені, OpenClaw повертається до нефільтрованого каталогу замість показу порожнього засобу вибору, обмеженого провайдером.
|
||||
У засобах вибору моделей під час onboarding/configure варіант автентифікації BytePlus надає перевагу рядкам `byteplus/*` і `byteplus-plan/*`. Якщо ці моделі ще не завантажено, OpenClaw повертається до нефільтрованого каталогу замість показу порожнього засобу вибору, обмеженого провайдером.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Стандартні моделі">
|
||||
<Tab title="Standard models">
|
||||
- `byteplus/seed-1-8-251228` (Seed 1.8)
|
||||
- `byteplus/kimi-k2-5-260127` (Kimi K2.5)
|
||||
- `byteplus/glm-4-7-251222` (GLM 4.7)
|
||||
|
||||
</Tab>
|
||||
<Tab title="Моделі для програмування (byteplus-plan)">
|
||||
<Tab title="Coding models (byteplus-plan)">
|
||||
- `byteplus-plan/ark-code-latest`
|
||||
- `byteplus-plan/doubao-seed-code`
|
||||
- `byteplus-plan/kimi-k2.5`
|
||||
@ -515,18 +515,18 @@ MiniMax налаштовується через `models.providers`, оскіль
|
||||
- MiniMax API key (CN): `--auth-choice minimax-cn-api`
|
||||
- Автентифікація: `MINIMAX_API_KEY` для `minimax`; `MINIMAX_OAUTH_TOKEN` або `MINIMAX_API_KEY` для `minimax-portal`
|
||||
|
||||
Докладні відомості про налаштування, варіанти моделей і фрагменти конфігурації див. у [/providers/minimax](/uk/providers/minimax).
|
||||
Див. [/providers/minimax](/uk/providers/minimax), щоб отримати деталі налаштування, варіанти моделей і фрагменти конфігурації.
|
||||
|
||||
<Note>
|
||||
На Anthropic-сумісному потоковому шляху MiniMax OpenClaw типово вимикає мислення, якщо ви явно його не задасте, а `/fast on` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
|
||||
На Anthropic-сумісному шляху streaming MiniMax OpenClaw за замовчуванням вимикає thinking, якщо ви не задасте його явно, а `/fast on` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
|
||||
</Note>
|
||||
|
||||
Поділ можливостей, що належать Plugin:
|
||||
Розділення можливостей, якими володіє Plugin:
|
||||
|
||||
- Типові значення для тексту/чату залишаються на `minimax/MiniMax-M2.7`
|
||||
- Генерація зображень — це `minimax/image-01` або `minimax-portal/image-01`
|
||||
- Розуміння зображень належить Plugin `MiniMax-VL-01` на обох шляхах автентифікації MiniMax
|
||||
- Вебпошук залишається на id провайдера `minimax`
|
||||
- Генерація зображень: `minimax/image-01` або `minimax-portal/image-01`
|
||||
- Розуміння зображень належить Plugin: `MiniMax-VL-01` на обох шляхах автентифікації MiniMax
|
||||
- Web search залишається на ідентифікаторі провайдера `minimax`
|
||||
|
||||
### LM Studio
|
||||
|
||||
@ -534,7 +534,7 @@ LM Studio постачається як вбудований Plugin провай
|
||||
|
||||
- Провайдер: `lmstudio`
|
||||
- Автентифікація: `LM_API_TOKEN`
|
||||
- Типова базова URL-адреса для inference: `http://localhost:1234/v1`
|
||||
- Типовий базовий URL для inference: `http://localhost:1234/v1`
|
||||
|
||||
Потім задайте модель (замініть на один з ідентифікаторів, повернених `http://localhost:1234/api/v1/models`):
|
||||
|
||||
@ -546,7 +546,7 @@ LM Studio постачається як вбудований Plugin провай
|
||||
}
|
||||
```
|
||||
|
||||
OpenClaw використовує нативні `/api/v1/models` і `/api/v1/models/load` LM Studio для виявлення й автоматичного завантаження, а `/v1/chat/completions` типово для inference. Налаштування й усунення неполадок див. у [/providers/lmstudio](/uk/providers/lmstudio).
|
||||
OpenClaw використовує нативні `/api/v1/models` і `/api/v1/models/load` LM Studio для виявлення й автоматичного завантаження, а для inference за замовчуванням використовує `/v1/chat/completions`. Див. [/providers/lmstudio](/uk/providers/lmstudio) для налаштування й усунення несправностей.
|
||||
|
||||
### Ollama
|
||||
|
||||
@ -570,7 +570,7 @@ ollama pull llama3.3
|
||||
}
|
||||
```
|
||||
|
||||
Ollama виявляється локально на `http://127.0.0.1:11434`, коли ви погоджуєтеся через `OLLAMA_API_KEY`, а вбудований Plugin провайдера додає Ollama безпосередньо до `openclaw onboard` і засобу вибору моделі. Onboarding, хмарний/локальний режим і власне налаштування див. у [/providers/ollama](/uk/providers/ollama).
|
||||
Ollama виявляється локально за адресою `http://127.0.0.1:11434`, коли ви вмикаєте її через `OLLAMA_API_KEY`, а вбудований Plugin провайдера додає Ollama безпосередньо до `openclaw onboard` і засобу вибору моделей. Див. [/providers/ollama](/uk/providers/ollama) для onboarding, хмарного/локального режиму та власної конфігурації.
|
||||
|
||||
### vLLM
|
||||
|
||||
@ -578,9 +578,9 @@ vLLM постачається як вбудований Plugin провайде
|
||||
|
||||
- Провайдер: `vllm`
|
||||
- Автентифікація: необов’язкова (залежить від вашого сервера)
|
||||
- Типова базова URL-адреса: `http://127.0.0.1:8000/v1`
|
||||
- Типовий базовий URL: `http://127.0.0.1:8000/v1`
|
||||
|
||||
Щоб увімкнути локальне автовиявлення (підійде будь-яке значення, якщо ваш сервер не застосовує автентифікацію):
|
||||
Щоб увімкнути локальне автоматичне виявлення (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
|
||||
|
||||
```bash
|
||||
export VLLM_API_KEY="vllm-local"
|
||||
@ -596,7 +596,7 @@ export VLLM_API_KEY="vllm-local"
|
||||
}
|
||||
```
|
||||
|
||||
Докладніше див. у [/providers/vllm](/uk/providers/vllm).
|
||||
Див. [/providers/vllm](/uk/providers/vllm) для деталей.
|
||||
|
||||
### SGLang
|
||||
|
||||
@ -604,9 +604,9 @@ SGLang постачається як вбудований Plugin провайд
|
||||
|
||||
- Провайдер: `sglang`
|
||||
- Автентифікація: необов’язкова (залежить від вашого сервера)
|
||||
- Типова базова URL-адреса: `http://127.0.0.1:30000/v1`
|
||||
- Типовий базовий URL: `http://127.0.0.1:30000/v1`
|
||||
|
||||
Щоб увімкнути локальне автовиявлення (підійде будь-яке значення, якщо ваш сервер не застосовує автентифікацію):
|
||||
Щоб увімкнути локальне автоматичне виявлення (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
|
||||
|
||||
```bash
|
||||
export SGLANG_API_KEY="sglang-local"
|
||||
@ -622,7 +622,7 @@ export SGLANG_API_KEY="sglang-local"
|
||||
}
|
||||
```
|
||||
|
||||
Докладніше див. у [/providers/sglang](/uk/providers/sglang).
|
||||
Див. [/providers/sglang](/uk/providers/sglang) для деталей.
|
||||
|
||||
### Локальні проксі (LM Studio, vLLM, LiteLLM тощо)
|
||||
|
||||
@ -661,8 +661,8 @@ export SGLANG_API_KEY="sglang-local"
|
||||
```
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Типові необов’язкові поля">
|
||||
Для власних провайдерів `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` є необов’язковими. Якщо їх пропущено, OpenClaw типово використовує:
|
||||
<Accordion title="Default optional fields">
|
||||
Для власних провайдерів `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` є необов’язковими. Якщо їх пропущено, OpenClaw за замовчуванням використовує:
|
||||
|
||||
- `reasoning: false`
|
||||
- `input: ["text"]`
|
||||
@ -673,15 +673,15 @@ export SGLANG_API_KEY="sglang-local"
|
||||
Рекомендовано: задайте явні значення, що відповідають обмеженням вашого проксі/моделі.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Правила формування маршруту проксі">
|
||||
- Для `api: "openai-completions"` на ненативних кінцевих точках (будь-який непорожній `baseUrl`, хост якого не є `api.openai.com`) OpenClaw примусово задає `compat.supportsDeveloperRole: false`, щоб уникнути помилок 400 від провайдера для непідтримуваних ролей `developer`.
|
||||
- Проксі-маршрути у стилі OpenAI-сумісності також пропускають нативне формування запитів, призначене лише для OpenAI: без `service_tier`, без Responses `store`, без Completions `store`, без підказок кешу prompt, без формування OpenAI reasoning-compat payload і без прихованих заголовків атрибуції OpenClaw.
|
||||
- Для OpenAI-сумісних проксі Completions, яким потрібні специфічні для постачальника поля, задайте `agents.defaults.models["provider/model"].params.extra_body` (або `extraBody`), щоб об’єднати додатковий JSON з тілом вихідного запиту.
|
||||
- Для керування chat-template vLLM задайте `agents.defaults.models["provider/model"].params.chat_template_kwargs`. Вбудований Plugin vLLM автоматично надсилає `enable_thinking: false` і `force_nonempty_content: true` для `vllm/nemotron-3-*`, коли рівень мислення сеансу вимкнено.
|
||||
- Для повільних локальних моделей або віддалених хостів LAN/tailnet задайте `models.providers.<id>.timeoutSeconds`. Це розширює обробку HTTP-запитів моделі провайдера, зокрема connect, headers, потокове передавання body і загальне переривання guarded-fetch, не збільшуючи загальний timeout runtime агента.
|
||||
- Якщо `baseUrl` порожній або пропущений, OpenClaw зберігає типову поведінку OpenAI (яка розв’язується до `api.openai.com`).
|
||||
<Accordion title="Proxy-route shaping rules">
|
||||
- Для `api: "openai-completions"` на ненативних кінцевих точках (будь-який непорожній `baseUrl`, хост якого не є `api.openai.com`) OpenClaw примусово задає `compat.supportsDeveloperRole: false`, щоб уникнути помилок провайдера 400 для непідтримуваних ролей `developer`.
|
||||
- OpenAI-сумісні маршрути у стилі проксі також пропускають нативне формування запитів, призначене лише для OpenAI: без `service_tier`, без `store` для Responses, без `store` для Completions, без підказок prompt-cache, без формування payload для сумісності OpenAI reasoning і без прихованих заголовків атрибуції OpenClaw.
|
||||
- Для OpenAI-сумісних проксі Completions, яким потрібні поля, специфічні для постачальника, задайте `agents.defaults.models["provider/model"].params.extra_body` (або `extraBody`), щоб об’єднати додатковий JSON з тілом вихідного запиту.
|
||||
- Для елементів керування chat-template vLLM задайте `agents.defaults.models["provider/model"].params.chat_template_kwargs`. Вбудований Plugin vLLM автоматично надсилає `enable_thinking: false` і `force_nonempty_content: true` для `vllm/nemotron-3-*`, коли рівень thinking у сесії вимкнено.
|
||||
- Для повільних локальних моделей або віддалених хостів LAN/tailnet задайте `models.providers.<id>.timeoutSeconds`. Це розширює обробку HTTP-запитів моделі провайдера, включно з підключенням, заголовками, streaming тіла та загальним перериванням guarded-fetch, не збільшуючи timeout усього runtime агента.
|
||||
- Якщо `baseUrl` порожній або пропущений, OpenClaw зберігає типову поведінку OpenAI (яка резолвиться в `api.openai.com`).
|
||||
- З міркувань безпеки явне `compat.supportsDeveloperRole: true` все одно перевизначається на ненативних кінцевих точках `openai-completions`.
|
||||
- Для `api: "anthropic-messages"` на непрямих кінцевих точках (будь-який провайдер, крім канонічного `anthropic`, або власний `models.providers.anthropic.baseUrl`, хост якого не є публічною кінцевою точкою `api.anthropic.com`) OpenClaw пригнічує неявні бета-заголовки Anthropic, як-от `claude-code-20250219`, `interleaved-thinking-2025-05-14` і маркери OAuth, щоб власні Anthropic-сумісні проксі не відхиляли непідтримувані бета-прапорці. Явно задайте `models.providers.<id>.headers["anthropic-beta"]`, якщо вашому проксі потрібні певні бета-функції.
|
||||
- Для `api: "anthropic-messages"` на непрямих кінцевих точках (будь-який провайдер, окрім канонічного `anthropic`, або власний `models.providers.anthropic.baseUrl`, хост якого не є публічною кінцевою точкою `api.anthropic.com`) OpenClaw пригнічує неявні beta-заголовки Anthropic, як-от `claude-code-20250219`, `interleaved-thinking-2025-05-14` і маркери OAuth, щоб власні Anthropic-сумісні проксі не відхиляли непідтримувані beta-прапорці. Явно задайте `models.providers.<id>.headers["anthropic-beta"]`, якщо вашому проксі потрібні конкретні beta-функції.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -694,11 +694,11 @@ openclaw models set opencode/claude-opus-4-6
|
||||
openclaw models list
|
||||
```
|
||||
|
||||
Також див.: [Конфігурація](/uk/gateway/configuration) для повних прикладів конфігурації.
|
||||
Див. також: [Конфігурація](/uk/gateway/configuration) для повних прикладів конфігурації.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Довідник конфігурації](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделі
|
||||
- [Відпрацювання відмови моделі](/uk/concepts/model-failover) — ланцюги fallback і поведінка повторних спроб
|
||||
- [Довідник конфігурації](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделей
|
||||
- [Відмовостійкість моделей](/uk/concepts/model-failover) — ланцюжки резервного переходу та поведінка повторних спроб
|
||||
- [Моделі](/uk/concepts/models) — конфігурація моделей і псевдоніми
|
||||
- [Провайдери](/uk/providers) — посібники з налаштування для кожного провайдера
|
||||
|
||||
@ -4,26 +4,26 @@ read_when:
|
||||
- Налагодження визначення облікових даних для тестів у реальному середовищі
|
||||
- Додавання нового тесту в реальному середовищі для конкретного провайдера
|
||||
sidebarTitle: Live tests
|
||||
summary: 'Тести в реальному середовищі (із мережевими зверненнями): матриця моделей, бекенди CLI, ACP, медіапровайдери, облікові дані'
|
||||
title: 'Тестування: живі набори тестів'
|
||||
summary: 'Живі тести (з мережевими зверненнями): матриця моделей, бекенди CLI, ACP, постачальники медіа, облікові дані'
|
||||
title: 'Тестування: набори тестів у реальному середовищі'
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T20:38:06Z"
|
||||
generated_at: "2026-05-02T01:45:28Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 908ce317d5a8d45c8fa8dba4225dadf1bbbf530b5ff47272cd734739a57dbc6e
|
||||
source_hash: ce8bd75ee7837b48e6ba1d888d281ee053fc13bdcf0907baddeb78ebcbbef31c
|
||||
source_path: help/testing-live.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Для швидкого старту, QA-запускачів, unit/integration наборів і Docker-потоків див.
|
||||
[Тестування](/uk/help/testing). Ця сторінка охоплює **живі** (що торкаються мережі) тестові
|
||||
набори: матрицю моделей, CLI-бекенди, ACP і живі тести медіапровайдерів, а також
|
||||
Для швидкого старту, QA-запускачів, модульних/інтеграційних наборів і Docker-потоків див.
|
||||
[Тестування](/uk/help/testing). Ця сторінка описує **live** (із взаємодією з мережею) тестові
|
||||
набори: матрицю моделей, CLI-бекенди, ACP і live-тести медіапровайдерів, а також
|
||||
обробку облікових даних.
|
||||
|
||||
## Живі: локальні smoke-команди профілю
|
||||
## Live: локальні команди smoke для профілю
|
||||
|
||||
Підключіть `~/.profile` перед спеціальними живими перевірками, щоб ключі провайдера й локальні шляхи
|
||||
інструментів збігалися з вашою shell-оболонкою:
|
||||
Перед ad hoc live-перевірками виконайте source для `~/.profile`, щоб ключі провайдерів і локальні шляхи
|
||||
інструментів відповідали вашій оболонці:
|
||||
|
||||
```bash
|
||||
source ~/.profile
|
||||
@ -37,105 +37,105 @@ pnpm openclaw infer tts convert --local --json \
|
||||
--output /tmp/openclaw-live-smoke.mp3
|
||||
```
|
||||
|
||||
Безпечний smoke готовності голосового виклику:
|
||||
Безпечний smoke готовності голосових викликів:
|
||||
|
||||
```bash
|
||||
pnpm openclaw voicecall setup --json
|
||||
pnpm openclaw voicecall smoke --to "+15555550123"
|
||||
```
|
||||
|
||||
`voicecall smoke` є сухим запуском, якщо також не вказано `--yes`. Використовуйте `--yes` лише
|
||||
тоді, коли навмисно хочете здійснити реальний сповіщувальний дзвінок. Для Twilio, Telnyx і
|
||||
Plivo успішна перевірка готовності потребує публічної URL-адреси Webhook; локальні-only
|
||||
loopback/приватні резервні варіанти відхиляються за задумом.
|
||||
`voicecall smoke` є пробним запуском, якщо також не вказано `--yes`. Використовуйте `--yes` лише
|
||||
тоді, коли ви навмисно хочете здійснити справжній сповіщувальний дзвінок. Для Twilio, Telnyx і
|
||||
Plivo успішна перевірка готовності потребує публічної URL-адреси Webhook; резервні варіанти лише для
|
||||
local loopback/приватні резервні варіанти відхиляються за задумом.
|
||||
|
||||
## Живі: перевірка можливостей Android Node
|
||||
## Live: перевірка можливостей Android Node
|
||||
|
||||
- Тест: `src/gateway/android-node.capabilities.live.test.ts`
|
||||
- Скрипт: `pnpm android:test:integration`
|
||||
- Мета: викликати **кожну команду, яку зараз оголошує** підключений Android Node, і перевірити поведінку контракту команди.
|
||||
- Мета: викликати **кожну команду, яку зараз рекламує** підключений Android Node, і перевірити поведінку контракту команди.
|
||||
- Обсяг:
|
||||
- Попередньо підготовлене/ручне налаштування (набір не встановлює/запускає/сполучає застосунок).
|
||||
- Покомандна валідація Gateway `node.invoke` для вибраного Android Node.
|
||||
- Обов’язкове попереднє налаштування:
|
||||
- Android-застосунок уже підключений і сполучений із Gateway.
|
||||
- Застосунок утримується на передньому плані.
|
||||
- Дозволи/згода на захоплення надані для можливостей, які ви очікуєте успішними.
|
||||
- Попередньо підготовлене/ручне налаштування (набір не встановлює/не запускає/не сполучає застосунок).
|
||||
- Валідація Gateway `node.invoke` для вибраного Android Node, команда за командою.
|
||||
- Обов’язкова попередня підготовка:
|
||||
- Android-застосунок уже підключений і спарений із Gateway.
|
||||
- Застосунок залишається на передньому плані.
|
||||
- Дозволи/згода на захоплення надані для можливостей, які ви очікуєте успішно пройти.
|
||||
- Необов’язкові перевизначення цілі:
|
||||
- `OPENCLAW_ANDROID_NODE_ID` або `OPENCLAW_ANDROID_NODE_NAME`.
|
||||
- `OPENCLAW_ANDROID_GATEWAY_URL` / `OPENCLAW_ANDROID_GATEWAY_TOKEN` / `OPENCLAW_ANDROID_GATEWAY_PASSWORD`.
|
||||
- Повні деталі налаштування Android: [Android-застосунок](/uk/platforms/android)
|
||||
|
||||
## Живі: smoke моделей (ключі профілю)
|
||||
## Live: model smoke (ключі профілю)
|
||||
|
||||
Живі тести розділено на два шари, щоб можна було ізолювати збої:
|
||||
Live-тести поділено на два шари, щоб ми могли ізолювати збої:
|
||||
|
||||
- “Пряма модель” показує, чи провайдер/модель узагалі може відповісти з наданим ключем.
|
||||
- “Gateway smoke” показує, чи повний конвеєр gateway+agent працює для цієї моделі (сесії, історія, інструменти, політика sandbox тощо).
|
||||
- «Пряма модель» показує, чи провайдер/модель узагалі може відповісти з наданим ключем.
|
||||
- «Gateway smoke» показує, чи весь конвеєр gateway+agent працює для цієї моделі (сеанси, історія, інструменти, політика sandbox тощо).
|
||||
|
||||
### Шар 1: пряме завершення моделі (без gateway)
|
||||
### Шар 1: Пряме завершення моделі (без Gateway)
|
||||
|
||||
- Тест: `src/agents/models.profiles.live.test.ts`
|
||||
- Мета:
|
||||
- Перелічити виявлені моделі
|
||||
- Використати `getApiKeyForModel`, щоб вибрати моделі, для яких у вас є облікові дані
|
||||
- Запустити невелике завершення для кожної моделі (і цільові регресійні перевірки, де потрібно)
|
||||
- Запустити невелике завершення для кожної моделі (і цільові регресії за потреби)
|
||||
- Як увімкнути:
|
||||
- `pnpm test:live` (або `OPENCLAW_LIVE_TEST=1`, якщо викликаєте Vitest напряму)
|
||||
- Установіть `OPENCLAW_LIVE_MODELS=modern` (або `all`, псевдонім для modern), щоб фактично запустити цей набір; інакше він пропускається, щоб `pnpm test:live` був зосереджений на gateway smoke
|
||||
- Як вибирати моделі:
|
||||
- `OPENCLAW_LIVE_MODELS=modern`, щоб запустити сучасний allowlist (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4)
|
||||
- Установіть `OPENCLAW_LIVE_MODELS=modern` (або `all`, псевдонім для modern), щоб фактично запустити цей набір; інакше він пропускається, щоб `pnpm test:live` залишався зосередженим на gateway smoke
|
||||
- Як вибрати моделі:
|
||||
- `OPENCLAW_LIVE_MODELS=modern`, щоб запустити сучасний allowlist (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)
|
||||
- `OPENCLAW_LIVE_MODELS=all` є псевдонімом для сучасного allowlist
|
||||
- або `OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."` (allowlist через кому)
|
||||
- Сучасні/all перевірки за замовчуванням мають кероване високосигнальне обмеження; установіть `OPENCLAW_LIVE_MAX_MODELS=0` для вичерпної сучасної перевірки або додатне число для меншого обмеження.
|
||||
- Вичерпні перевірки використовують `OPENCLAW_LIVE_TEST_TIMEOUT_MS` для тайм-ауту всього тесту direct-model. Типово: 60 хвилин.
|
||||
- Проби direct-model за замовчуванням виконуються з паралельністю 20; установіть `OPENCLAW_LIVE_MODEL_CONCURRENCY`, щоб перевизначити.
|
||||
- Як вибирати провайдерів:
|
||||
- Перевірки modern/all за замовчуванням використовують кураторський високосигнальний ліміт; установіть `OPENCLAW_LIVE_MAX_MODELS=0` для вичерпної modern-перевірки або додатне число для меншого ліміту.
|
||||
- Вичерпні перевірки використовують `OPENCLAW_LIVE_TEST_TIMEOUT_MS` як таймаут усього тесту прямої моделі. За замовчуванням: 60 хвилин.
|
||||
- Проби прямої моделі за замовчуванням виконуються з паралелізмом 20; установіть `OPENCLAW_LIVE_MODEL_CONCURRENCY`, щоб перевизначити.
|
||||
- Як вибрати провайдерів:
|
||||
- `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (allowlist через кому)
|
||||
- Звідки беруться ключі:
|
||||
- За замовчуванням: сховище профілю та резервні env-значення
|
||||
- Установіть `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати лише **сховище профілю**
|
||||
- За замовчуванням: сховище профілів і резервні варіанти env
|
||||
- Установіть `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати лише **сховище профілів**
|
||||
- Навіщо це існує:
|
||||
- Відокремлює “API провайдера зламане / ключ недійсний” від “конвеєр агента gateway зламаний”
|
||||
- Містить невеликі ізольовані регресійні перевірки (приклад: OpenAI Responses/Codex Responses reasoning replay + потоки tool-call)
|
||||
- Відокремлює «API провайдера зламано / ключ недійсний» від «конвеєр gateway agent зламано»
|
||||
- Містить невеликі, ізольовані регресії (приклад: reasoning replay OpenAI Responses/Codex Responses + потоки tool-call)
|
||||
|
||||
### Шар 2: Gateway + smoke dev-агента (що насправді робить "@openclaw")
|
||||
### Шар 2: Gateway + dev agent smoke (що насправді робить "@openclaw")
|
||||
|
||||
- Тест: `src/gateway/gateway-models.profiles.live.test.ts`
|
||||
- Мета:
|
||||
- Запустити gateway в процесі
|
||||
- Створити/виправити сесію `agent:dev:*` (перевизначення моделі для кожного запуску)
|
||||
- Ітерувати моделі з ключами й перевірити:
|
||||
- “змістовну” відповідь (без інструментів)
|
||||
- працює реальний виклик інструмента (проба читання)
|
||||
- необов’язкові додаткові проби інструментів (проба exec+read)
|
||||
- регресійні шляхи OpenAI (tool-call-only → follow-up) продовжують працювати
|
||||
- Запустити внутрішньопроцесний Gateway
|
||||
- Створити/змінити сеанс `agent:dev:*` (перевизначення моделі для кожного запуску)
|
||||
- Перебрати моделі з ключами й перевірити:
|
||||
- «змістовну» відповідь (без інструментів)
|
||||
- працює справжній виклик інструмента (read-проба)
|
||||
- необов’язкові додаткові проби інструментів (exec+read-проба)
|
||||
- регресійні шляхи OpenAI (лише tool-call → follow-up) продовжують працювати
|
||||
- Деталі проб (щоб можна було швидко пояснити збої):
|
||||
- проба `read`: тест записує nonce-файл у workspace і просить агента `read` його та повернути nonce.
|
||||
- проба `exec+read`: тест просить агента через `exec` записати nonce у тимчасовий файл, а потім `read` його назад.
|
||||
- проба зображення: тест додає згенерований PNG (cat + рандомізований код) і очікує, що модель поверне `cat <CODE>`.
|
||||
- `read`-проба: тест записує nonce-файл у робочій області й просить агента `read` його та повернути nonce.
|
||||
- `exec+read`-проба: тест просить агента через `exec` записати nonce у тимчасовий файл, а потім через `read` прочитати його назад.
|
||||
- проба зображення: тест долучає згенерований PNG (cat + рандомізований код) і очікує, що модель поверне `cat <CODE>`.
|
||||
- Посилання на реалізацію: `src/gateway/gateway-models.profiles.live.test.ts` і `src/gateway/live-image-probe.ts`.
|
||||
- Як увімкнути:
|
||||
- `pnpm test:live` (або `OPENCLAW_LIVE_TEST=1`, якщо викликаєте Vitest напряму)
|
||||
- Як вибирати моделі:
|
||||
- Типово: сучасний allowlist (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4)
|
||||
- Як вибрати моделі:
|
||||
- За замовчуванням: сучасний allowlist (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)
|
||||
- `OPENCLAW_LIVE_GATEWAY_MODELS=all` є псевдонімом для сучасного allowlist
|
||||
- Або встановіть `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (або список через кому), щоб звузити вибір
|
||||
- Сучасні/all gateway-перевірки за замовчуванням мають кероване високосигнальне обмеження; установіть `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0` для вичерпної сучасної перевірки або додатне число для меншого обмеження.
|
||||
- Як вибирати провайдерів (уникати “усе через OpenRouter”):
|
||||
- Або встановіть `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (або список через кому), щоб звузити
|
||||
- Gateway-перевірки modern/all за замовчуванням використовують кураторський високосигнальний ліміт; установіть `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0` для вичерпної modern-перевірки або додатне число для меншого ліміту.
|
||||
- Як вибрати провайдерів (уникайте «усе з OpenRouter»):
|
||||
- `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (allowlist через кому)
|
||||
- Проби інструментів і зображень завжди ввімкнені в цьому живому тесті:
|
||||
- проба `read` + проба `exec+read` (навантаження інструментів)
|
||||
- проба зображення запускається, коли модель оголошує підтримку вводу зображень
|
||||
- Проби інструментів + зображень у цьому live-тесті завжди ввімкнені:
|
||||
- `read`-проба + `exec+read`-проба (навантаження інструментів)
|
||||
- проба зображення виконується, коли модель оголошує підтримку введення зображень
|
||||
- Потік (на високому рівні):
|
||||
- Тест генерує крихітний PNG із “CAT” + випадковим кодом (`src/gateway/live-image-probe.ts`)
|
||||
- Надсилає його через `agent` `attachments: [{ mimeType: "image/png", content: "<base64>" }]`
|
||||
- Gateway розбирає вкладення в `images[]` (`src/gateway/server-methods/agent.ts` + `src/gateway/chat-attachments.ts`)
|
||||
- Вбудований агент пересилає мультимодальне повідомлення користувача до моделі
|
||||
- Перевірка: відповідь містить `cat` + код (толерантність OCR: допускаються незначні помилки)
|
||||
- Твердження: відповідь містить `cat` + код (толерантність OCR: незначні помилки дозволені)
|
||||
|
||||
<Tip>
|
||||
Щоб побачити, що можна протестувати на вашій машині (і точні ids `provider/model`), запустіть:
|
||||
Щоб побачити, що можна тестувати на вашій машині (і точні ідентифікатори `provider/model`), запустіть:
|
||||
|
||||
```bash
|
||||
openclaw models list
|
||||
@ -144,27 +144,27 @@ openclaw models list --json
|
||||
|
||||
</Tip>
|
||||
|
||||
## Живі: smoke CLI-бекенда (Claude, Codex, Gemini або інші локальні CLI)
|
||||
## Live: CLI backend smoke (Claude, Codex, Gemini або інші локальні CLI)
|
||||
|
||||
- Тест: `src/gateway/gateway-cli-backend.live.test.ts`
|
||||
- Мета: перевірити конвеєр Gateway + agent за допомогою локального CLI-бекенда, не торкаючись вашої типової конфігурації.
|
||||
- Специфічні для бекенда smoke-типові значення містяться у визначенні `cli-backend.ts` власницького plugin.
|
||||
- Специфічні для бекенда smoke-налаштування за замовчуванням живуть у визначенні `cli-backend.ts` відповідного Plugin.
|
||||
- Увімкнення:
|
||||
- `pnpm test:live` (або `OPENCLAW_LIVE_TEST=1`, якщо викликаєте Vitest напряму)
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND=1`
|
||||
- Типові значення:
|
||||
- Типовий провайдер/модель: `claude-cli/claude-sonnet-4-6`
|
||||
- Поведінка команд/аргументів/зображень надходить із metadata власницького CLI backend plugin.
|
||||
- Поведінка команди/аргументів/зображень береться з метаданих відповідного CLI backend plugin.
|
||||
- Перевизначення (необов’язково):
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.5"`
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"`
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'`
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1`, щоб надіслати реальне вкладення-зображення (шляхи ін’єктуються в prompt). Docker-рецепти за замовчуванням вимикають це, якщо явно не запитано.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1`, щоб надіслати справжнє зображення-вкладення (шляхи ін’єктуються в prompt). Docker-рецепти за замовчуванням вимикають це, якщо явно не запитано.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`, щоб передавати шляхи до файлів зображень як CLI-аргументи замість ін’єкції в prompt.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (або `"list"`), щоб керувати тим, як передаються аргументи зображень, коли встановлено `IMAGE_ARG`.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1`, щоб надіслати другий хід і перевірити потік resume.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1`, щоб увімкнути пробу безперервності тієї самої сесії Claude Sonnet -> Opus, коли вибрана модель підтримує ціль перемикання. Docker-рецепти за замовчуванням вимикають це для сукупної надійності.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1`, щоб увімкнути MCP/tool loopback пробу. Docker-рецепти за замовчуванням вимикають це, якщо явно не запитано.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1`, щоб увімкнути пробу безперервності Claude Sonnet -> Opus у тому самому сеансі, коли вибрана модель підтримує ціль перемикання. Docker-рецепти за замовчуванням вимикають це для сукупної надійності.
|
||||
- `OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1`, щоб увімкнути пробу MCP/інструментального loopback. Docker-рецепти за замовчуванням вимикають це, якщо явно не запитано.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -174,7 +174,7 @@ OPENCLAW_LIVE_CLI_BACKEND=1 \
|
||||
pnpm test:live src/gateway/gateway-cli-backend.live.test.ts
|
||||
```
|
||||
|
||||
Дешевий smoke конфігурації Gemini MCP:
|
||||
Дешева smoke-перевірка конфігурації Gemini MCP:
|
||||
|
||||
```bash
|
||||
OPENCLAW_LIVE_TEST=1 \
|
||||
@ -183,8 +183,8 @@ OPENCLAW_LIVE_TEST=1 \
|
||||
|
||||
Це не просить Gemini згенерувати відповідь. Воно записує ті самі системні
|
||||
налаштування, які OpenClaw надає Gemini, а потім запускає `gemini --debug mcp list`, щоб довести, що
|
||||
збережений сервер `transport: "streamable-http"` нормалізується до HTTP MCP
|
||||
форми Gemini й може підключитися до локального streamable-HTTP MCP сервера.
|
||||
збережений сервер `transport: "streamable-http"` нормалізується до HTTP MCP-форми Gemini
|
||||
і може підключитися до локального streamable-HTTP MCP-сервера.
|
||||
|
||||
Docker-рецепт:
|
||||
|
||||
@ -201,31 +201,31 @@ pnpm test:docker:live-cli-backend:codex
|
||||
pnpm test:docker:live-cli-backend:gemini
|
||||
```
|
||||
|
||||
Примітки:
|
||||
Нотатки:
|
||||
|
||||
- Docker runner розташований у `scripts/test-live-cli-backend-docker.sh`.
|
||||
- Він запускає live CLI-backend smoke всередині Docker-образу репозиторію як non-root користувач `node`.
|
||||
- Він визначає CLI smoke metadata з власницького plugin, потім встановлює відповідний Linux CLI пакет (`@anthropic-ai/claude-code`, `@openai/codex` або `@google/gemini-cli`) у кешований записуваний префікс за `OPENCLAW_DOCKER_CLI_TOOLS_DIR` (типово: `~/.cache/openclaw/docker-cli-tools`).
|
||||
- `pnpm test:docker:live-cli-backend:claude-subscription` потребує переносного Claude Code subscription OAuth через `~/.claude/.credentials.json` із `claudeAiOauth.subscriptionType` або `CLAUDE_CODE_OAUTH_TOKEN` з `claude setup-token`. Спершу він доводить прямий `claude -p` у Docker, потім запускає два Gateway CLI-backend ходи без збереження env vars ключів Anthropic API. Ця subscription lane вимикає Claude MCP/tool і проби зображень за замовчуванням, бо Claude наразі маршрутизує використання сторонніх застосунків через billing додаткового використання замість звичайних лімітів subscription plan.
|
||||
- Живий CLI-backend smoke тепер перевіряє той самий наскрізний потік для Claude, Codex і Gemini: текстовий хід, хід класифікації зображення, потім виклик інструмента MCP `cron`, перевірений через gateway CLI.
|
||||
- Типовий smoke Claude також виправляє сесію із Sonnet на Opus і перевіряє, що відновлена сесія все ще пам’ятає попередню нотатку.
|
||||
- Docker-запускач розташований у `scripts/test-live-cli-backend-docker.sh`.
|
||||
- Він запускає live CLI-backend smoke всередині Docker-образу репозиторію як некореневий користувач `node`.
|
||||
- Він визначає CLI smoke-метадані з відповідного Plugin, а потім встановлює відповідний Linux CLI-пакет (`@anthropic-ai/claude-code`, `@openai/codex` або `@google/gemini-cli`) у кешований записуваний префікс за `OPENCLAW_DOCKER_CLI_TOOLS_DIR` (за замовчуванням: `~/.cache/openclaw/docker-cli-tools`).
|
||||
- `pnpm test:docker:live-cli-backend:claude-subscription` потребує переносного OAuth для підписки Claude Code через `~/.claude/.credentials.json` із `claudeAiOauth.subscriptionType` або `CLAUDE_CODE_OAUTH_TOKEN` з `claude setup-token`. Спочатку він доводить прямий `claude -p` у Docker, а потім запускає два Gateway CLI-backend ходи без збереження env vars ключа Anthropic API. Ця subscription-смуга за замовчуванням вимикає Claude MCP/інструментальну пробу та пробу зображення, бо Claude зараз маршрутизує використання сторонніх застосунків через billing додаткового використання замість звичайних лімітів плану підписки.
|
||||
- Live CLI-backend smoke тепер перевіряє той самий end-to-end потік для Claude, Codex і Gemini: текстовий хід, хід класифікації зображення, а потім виклик інструмента MCP `cron`, перевірений через gateway CLI.
|
||||
- Типовий smoke Claude також змінює сеанс із Sonnet на Opus і перевіряє, що відновлений сеанс усе ще пам’ятає попередню нотатку.
|
||||
|
||||
## Живі: ACP bind smoke (`/acp spawn ... --bind here`)
|
||||
## Live: ACP bind smoke (`/acp spawn ... --bind here`)
|
||||
|
||||
- Тест: `src/gateway/gateway-acp-bind.live.test.ts`
|
||||
- Мета: перевірити реальний потік прив’язування розмови ACP із live ACP-агентом:
|
||||
- Мета: перевірити справжній потік прив’язування розмови ACP із живим агентом ACP:
|
||||
- надіслати `/acp spawn <agent> --bind here`
|
||||
- прив’язати синтетичну розмову message-channel на місці
|
||||
- прив’язати синтетичну розмову каналу повідомлень на місці
|
||||
- надіслати звичайне подальше повідомлення в тій самій розмові
|
||||
- перевірити, що подальше повідомлення потрапляє в transcript прив’язаного сеансу ACP
|
||||
- перевірити, що подальше повідомлення потрапляє до транскрипта прив’язаної сесії ACP
|
||||
- Увімкнення:
|
||||
- `pnpm test:live src/gateway/gateway-acp-bind.live.test.ts`
|
||||
- `OPENCLAW_LIVE_ACP_BIND=1`
|
||||
- Значення за замовчуванням:
|
||||
- ACP-агенти в Docker: `claude,codex,gemini`
|
||||
- ACP-агент для прямого `pnpm test:live ...`: `claude`
|
||||
- Синтетичний канал: контекст розмови у стилі Slack DM
|
||||
- ACP-бекенд: `acpx`
|
||||
- Типові значення:
|
||||
- агенти ACP у Docker: `claude,codex,gemini`
|
||||
- агент ACP для прямого `pnpm test:live ...`: `claude`
|
||||
- синтетичний канал: контекст розмови у стилі Slack DM
|
||||
- бекенд ACP: `acpx`
|
||||
- Перевизначення:
|
||||
- `OPENCLAW_LIVE_ACP_BIND_AGENT=claude`
|
||||
- `OPENCLAW_LIVE_ACP_BIND_AGENT=codex`
|
||||
@ -240,9 +240,9 @@ pnpm test:docker:live-cli-backend:gemini
|
||||
- `OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1`
|
||||
- `OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.5`
|
||||
- Примітки:
|
||||
- Ця лінія використовує поверхню gateway `chat.send` з admin-only синтетичними полями originating-route, щоб тести могли приєднувати контекст message-channel без імітації зовнішньої доставки.
|
||||
- Коли `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` не задано, тест використовує вбудований реєстр агентів embedded `acpx` plugin для вибраного агента ACP harness.
|
||||
- Створення bound-session cron MCP за замовчуванням виконується best-effort, оскільки зовнішні ACP harnesses можуть скасувати MCP-виклики після того, як bind/image proof уже пройшов; задайте `OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1`, щоб зробити цей post-bind cron probe суворим.
|
||||
- Ця лінія використовує поверхню Gateway `chat.send` з адміністративними полями синтетичного вихідного маршруту, щоб тести могли приєднувати контекст каналу повідомлень без удавання зовнішньої доставки.
|
||||
- Коли `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` не задано, тест використовує вбудований реєстр агентів вбудованого Plugin `acpx` для вибраного агента ACP harness.
|
||||
- Створення Cron MCP для прив’язаної сесії типово виконується за принципом best-effort, бо зовнішні ACP harness можуть скасовувати виклики MCP після проходження перевірки прив’язування/зображення; задайте `OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1`, щоб зробити цю перевірку Cron після прив’язування суворою.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -270,39 +270,38 @@ pnpm test:docker:live-acp-bind:opencode
|
||||
|
||||
Примітки Docker:
|
||||
|
||||
- Docker runner розташований у `scripts/test-live-acp-bind-docker.sh`.
|
||||
- За замовчуванням він послідовно запускає ACP bind smoke проти агрегованих live CLI-агентів: `claude`, `codex`, потім `gemini`.
|
||||
- Runner Docker розташований у `scripts/test-live-acp-bind-docker.sh`.
|
||||
- Типово він послідовно запускає smoke ACP bind для сукупних живих агентів CLI: `claude`, `codex`, потім `gemini`.
|
||||
- Використовуйте `OPENCLAW_LIVE_ACP_BIND_AGENTS=claude`, `OPENCLAW_LIVE_ACP_BIND_AGENTS=codex`, `OPENCLAW_LIVE_ACP_BIND_AGENTS=droid`, `OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini` або `OPENCLAW_LIVE_ACP_BIND_AGENTS=opencode`, щоб звузити матрицю.
|
||||
- Він завантажує `~/.profile`, підготовлює відповідні матеріали CLI auth у контейнері, а потім встановлює запитаний live CLI (`@anthropic-ai/claude-code`, `@openai/codex`, Factory Droid через `https://app.factory.ai/cli`, `@google/gemini-cli` або `opencode-ai`), якщо його бракує. Сам ACP-бекенд — це bundled embedded пакет `acpx/runtime` з plugin `acpx`.
|
||||
- Варіант Droid Docker підготовлює `~/.factory` для налаштувань, передає `FACTORY_API_KEY` і потребує цей API-ключ, оскільки локальна Factory OAuth/keyring auth не є переносимою в контейнер. Він використовує вбудований запис реєстру ACPX `droid exec --output-format acp`.
|
||||
- Варіант OpenCode Docker — це сувора single-agent regression lane. Він записує тимчасову модель за замовчуванням `OPENCODE_CONFIG_CONTENT` з `OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL` (за замовчуванням `opencode/kimi-k2.6`) після завантаження `~/.profile`, а `pnpm test:docker:live-acp-bind:opencode` вимагає transcript прив’язаного assistant замість прийняття загального post-bind skip.
|
||||
- Прямі виклики `acpx` CLI — лише ручний/обхідний шлях для порівняння поведінки поза Gateway. Docker ACP bind smoke перевіряє embedded `acpx` runtime backend OpenClaw.
|
||||
- Він підключає `~/.profile`, розміщує відповідні матеріали автентифікації CLI в контейнері, а потім, якщо бракує, встановлює запитаний живий CLI (`@anthropic-ai/claude-code`, `@openai/codex`, Factory Droid через `https://app.factory.ai/cli`, `@google/gemini-cli` або `opencode-ai`). Сам бекенд ACP є вбудованим пакетом `acpx/runtime` із Plugin `acpx`.
|
||||
- Варіант Docker для Droid розміщує `~/.factory` для налаштувань, передає `FACTORY_API_KEY` і вимагає цей API-ключ, бо локальна автентифікація Factory через OAuth/keyring не переноситься в контейнер. Він використовує вбудований запис реєстру ACPX `droid exec --output-format acp`.
|
||||
- Варіант Docker для OpenCode є суворою регресійною лінією з одним агентом. Він записує тимчасову типову модель `OPENCODE_CONFIG_CONTENT` з `OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL` (типово `opencode/kimi-k2.6`) після підключення `~/.profile`, а `pnpm test:docker:live-acp-bind:opencode` вимагає прив’язаний транскрипт асистента замість прийняття загального пропуску після прив’язування.
|
||||
- Прямі виклики CLI `acpx` є лише ручним/обхідним шляхом для порівняння поведінки поза Gateway. Docker smoke ACP bind перевіряє вбудований бекенд runtime `acpx` OpenClaw.
|
||||
|
||||
## Live: Codex app-server harness smoke
|
||||
## Live: smoke app-server harness Codex
|
||||
|
||||
- Мета: перевірити Codex harness, що належить plugin, через звичайний gateway
|
||||
метод `agent`:
|
||||
- завантажити bundled plugin `codex`
|
||||
- Мета: перевірити Codex harness, що належить Plugin, через звичайний метод gateway
|
||||
`agent`:
|
||||
- завантажити вбудований Plugin `codex`
|
||||
- вибрати `OPENCLAW_AGENT_RUNTIME=codex`
|
||||
- надіслати перший gateway agent turn до `openai/gpt-5.5` із примусово заданим Codex harness
|
||||
- надіслати другий turn до того самого сеансу OpenClaw і перевірити, що app-server
|
||||
thread може відновитися
|
||||
- виконати `/codex status` і `/codex models` через той самий gateway command
|
||||
path
|
||||
- опційно запустити два Guardian-reviewed escalated shell probes: одну нешкідливу
|
||||
команду, яку слід схвалити, і одне фейкове завантаження секрету, яке слід
|
||||
відхилити, щоб агент перепитав
|
||||
- надіслати перший хід агента gateway до `openai/gpt-5.5` із примусово заданим Codex harness
|
||||
- надіслати другий хід до тієї самої сесії OpenClaw і перевірити, що потік app-server
|
||||
може відновитися
|
||||
- виконати `/codex status` і `/codex models` через той самий шлях команди gateway
|
||||
- необов’язково виконати дві перевірені Guardian підвищені shell-перевірки: одну нешкідливу
|
||||
команду, яку має бути схвалено, і одне фальшиве завантаження секрету, яке має бути
|
||||
відхилено, щоб агент поставив запитання у відповідь
|
||||
- Тест: `src/gateway/gateway-codex-harness.live.test.ts`
|
||||
- Увімкнення: `OPENCLAW_LIVE_CODEX_HARNESS=1`
|
||||
- Модель за замовчуванням: `openai/gpt-5.5`
|
||||
- Опційний image probe: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1`
|
||||
- Опційний MCP/tool probe: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1`
|
||||
- Опційний Guardian probe: `OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1`
|
||||
- Smoke задає `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, щоб зламаний Codex
|
||||
harness не міг пройти, тихо повернувшись до PI.
|
||||
- Auth: Codex app-server auth з локального входу Codex subscription. Docker
|
||||
smokes також можуть надавати `OPENAI_API_KEY` для non-Codex probes, коли застосовно,
|
||||
плюс опційно скопійовані `~/.codex/auth.json` і `~/.codex/config.toml`.
|
||||
- Типова модель: `openai/gpt-5.5`
|
||||
- Необов’язкова перевірка зображення: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1`
|
||||
- Необов’язкова перевірка MCP/інструмента: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1`
|
||||
- Необов’язкова перевірка Guardian: `OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1`
|
||||
- Smoke задає `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, щоб несправний Codex
|
||||
harness не міг пройти через мовчазний fallback до PI.
|
||||
- Автентифікація: автентифікація app-server Codex з локального входу в підписку Codex. Docker
|
||||
smokes також можуть надавати `OPENAI_API_KEY` для перевірок не-Codex, коли застосовно,
|
||||
плюс необов’язково скопійовані `~/.codex/auth.json` і `~/.codex/config.toml`.
|
||||
|
||||
Локальний рецепт:
|
||||
|
||||
@ -325,22 +324,21 @@ pnpm test:docker:live-codex-harness
|
||||
|
||||
Примітки Docker:
|
||||
|
||||
- Docker runner розташований у `scripts/test-live-codex-harness-docker.sh`.
|
||||
- Він завантажує змонтований `~/.profile`, передає `OPENAI_API_KEY`, копіює файли Codex CLI
|
||||
auth, якщо вони наявні, встановлює `@openai/codex` у доступний для запису змонтований npm
|
||||
prefix, підготовлює дерево вихідного коду, а потім запускає лише live-тест Codex-harness.
|
||||
- Docker за замовчуванням вмикає image, MCP/tool і Guardian probes. Задайте
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0` або
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0` або
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0`, коли потрібен вужчий debug
|
||||
run.
|
||||
- Docker також експортує `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, відповідно до live
|
||||
test config, щоб legacy aliases або PI fallback не могли приховати регресію
|
||||
Codex harness.
|
||||
- Runner Docker розташований у `scripts/test-live-codex-harness-docker.sh`.
|
||||
- Він підключає змонтований `~/.profile`, передає `OPENAI_API_KEY`, копіює файли автентифікації Codex CLI
|
||||
за наявності, встановлює `@openai/codex` у доступний для запису змонтований префікс npm,
|
||||
розміщує дерево вихідного коду, а потім запускає лише живий тест Codex-harness.
|
||||
- Docker типово вмикає перевірки зображення, MCP/інструмента та Guardian. Задайте
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0`, або
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0`, або
|
||||
`OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0`, коли потрібен вужчий налагоджувальний
|
||||
запуск.
|
||||
- Docker також експортує `OPENCLAW_AGENT_HARNESS_FALLBACK=none`, відповідно до конфігурації живого
|
||||
тесту, щоб застарілі псевдоніми або fallback PI не могли приховати регресію Codex harness.
|
||||
|
||||
### Рекомендовані live recipes
|
||||
### Рекомендовані живі рецепти
|
||||
|
||||
Вузькі, явні allowlists — найшвидші й найменш flaky:
|
||||
Вузькі, явні списки дозволеного найшвидші й найменш нестабільні:
|
||||
|
||||
- Одна модель, напряму (без gateway):
|
||||
- `OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts`
|
||||
@ -348,36 +346,36 @@ pnpm test:docker:live-codex-harness
|
||||
- Одна модель, gateway smoke:
|
||||
- `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
|
||||
- Tool calling у кількох providers:
|
||||
- Виклики інструментів у кількох провайдерів:
|
||||
- `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
|
||||
- Фокус на Google (Gemini API key + Antigravity):
|
||||
- Gemini (API key): `OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
- Фокус Google (API-ключ Gemini + Antigravity):
|
||||
- Gemini (API-ключ): `OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
- Antigravity (OAuth): `OPENCLAW_LIVE_GATEWAY_MODELS="google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-pro-high" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
|
||||
- Google adaptive thinking smoke:
|
||||
- Якщо локальні ключі зберігаються в shell profile: `source ~/.profile`
|
||||
- Gemini 3 dynamic default: `pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-3.1-pro-preview --alt-model google/gemini-3.1-pro-preview --message '/think adaptive Reply exactly: GEMINI_ADAPTIVE_OK' --timeout-ms 180000`
|
||||
- Gemini 2.5 dynamic budget: `pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-2.5-flash --alt-model google/gemini-2.5-flash --message '/think adaptive Reply exactly: GEMINI25_ADAPTIVE_OK' --timeout-ms 180000`
|
||||
- Якщо локальні ключі зберігаються в профілі shell: `source ~/.profile`
|
||||
- Динамічне типове значення Gemini 3: `pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-3.1-pro-preview --alt-model google/gemini-3.1-pro-preview --message '/think adaptive Reply exactly: GEMINI_ADAPTIVE_OK' --timeout-ms 180000`
|
||||
- Динамічний бюджет Gemini 2.5: `pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-2.5-flash --alt-model google/gemini-2.5-flash --message '/think adaptive Reply exactly: GEMINI25_ADAPTIVE_OK' --timeout-ms 180000`
|
||||
|
||||
Примітки:
|
||||
|
||||
- `google/...` використовує Gemini API (API key).
|
||||
- `google-antigravity/...` використовує Antigravity OAuth bridge (endpoint агента у стилі Cloud Code Assist).
|
||||
- `google-gemini-cli/...` використовує локальний Gemini CLI на вашій машині (окрема auth + особливості tooling).
|
||||
- Gemini API vs Gemini CLI:
|
||||
- API: OpenClaw викликає розміщений Google Gemini API через HTTP (API key / profile auth); це те, що більшість користувачів мають на увазі під “Gemini”.
|
||||
- CLI: OpenClaw запускає локальний бінарник `gemini`; він має власну auth і може поводитися інакше (streaming/tool support/version skew).
|
||||
- `google/...` використовує Gemini API (API-ключ).
|
||||
- `google-antigravity/...` використовує міст Antigravity OAuth (endpoint агента в стилі Cloud Code Assist).
|
||||
- `google-gemini-cli/...` використовує локальний Gemini CLI на вашій машині (окрема автентифікація + особливості інструментів).
|
||||
- Gemini API проти Gemini CLI:
|
||||
- API: OpenClaw викликає розміщений Google Gemini API через HTTP (API-ключ / автентифікація профілю); саме це більшість користувачів має на увазі під “Gemini”.
|
||||
- CLI: OpenClaw запускає локальний бінарний файл `gemini` через shell; він має власну автентифікацію й може поводитися інакше (streaming/підтримка інструментів/розбіжність версій).
|
||||
|
||||
## Live: model matrix (що ми покриваємо)
|
||||
## Live: матриця моделей (що ми покриваємо)
|
||||
|
||||
Немає фіксованого “CI model list” (live є opt-in), але це **рекомендовані** моделі для регулярного покриття на dev-машині з ключами.
|
||||
Фіксованого “списку моделей CI” немає (live вмикається явно), але це **рекомендовані** моделі для регулярного покриття на машині розробника з ключами.
|
||||
|
||||
### Сучасний smoke set (tool calling + image)
|
||||
### Сучасний smoke-набір (виклик інструментів + зображення)
|
||||
|
||||
Це запуск “common models”, який ми очікуємо підтримувати робочим:
|
||||
Це запуск “поширених моделей”, який ми очікуємо підтримувати в робочому стані:
|
||||
|
||||
- OpenAI (non-Codex): `openai/gpt-5.5`
|
||||
- OpenAI (не-Codex): `openai/gpt-5.5`
|
||||
- OpenAI Codex OAuth: `openai-codex/gpt-5.5`
|
||||
- Anthropic: `anthropic/claude-opus-4-6` (або `anthropic/claude-sonnet-4-6`)
|
||||
- Google (Gemini API): `google/gemini-3.1-pro-preview` і `google/gemini-3-flash-preview` (уникайте старіших моделей Gemini 2.x)
|
||||
@ -386,12 +384,12 @@ pnpm test:docker:live-codex-harness
|
||||
- Z.AI (GLM): `zai/glm-5.1`
|
||||
- MiniMax: `minimax/MiniMax-M2.7`
|
||||
|
||||
Запустіть gateway smoke з tools + image:
|
||||
Запустіть gateway smoke з інструментами + зображенням:
|
||||
`OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts`
|
||||
|
||||
### Базовий рівень: tool calling (Read + опційний Exec)
|
||||
### Базовий рівень: виклик інструментів (Read + необов’язковий Exec)
|
||||
|
||||
Виберіть щонайменше одну на provider family:
|
||||
Виберіть принаймні одну модель для кожної родини провайдерів:
|
||||
|
||||
- OpenAI: `openai/gpt-5.5`
|
||||
- Anthropic: `anthropic/claude-opus-4-6` (або `anthropic/claude-sonnet-4-6`)
|
||||
@ -400,46 +398,46 @@ pnpm test:docker:live-codex-harness
|
||||
- Z.AI (GLM): `zai/glm-5.1`
|
||||
- MiniMax: `minimax/MiniMax-M2.7`
|
||||
|
||||
Опційне додаткове покриття (добре мати):
|
||||
Необов’язкове додаткове покриття (бажано мати):
|
||||
|
||||
- xAI: `xai/grok-4` (або найновіша доступна)
|
||||
- Mistral: `mistral/`… (виберіть одну модель із підтримкою “tools”, яку ви маєте ввімкненою)
|
||||
- xAI: `xai/grok-4.3` (або остання доступна)
|
||||
- Mistral: `mistral/`… (виберіть одну модель із підтримкою “tools”, яку у вас увімкнено)
|
||||
- Cerebras: `cerebras/`… (якщо маєте доступ)
|
||||
- LM Studio: `lmstudio/`… (локально; tool calling залежить від API mode)
|
||||
- LM Studio: `lmstudio/`… (локально; виклик інструментів залежить від режиму API)
|
||||
|
||||
### Vision: image send (attachment → multimodal message)
|
||||
### Vision: надсилання зображення (вкладення → мультимодальне повідомлення)
|
||||
|
||||
Додайте щонайменше одну image-capable model до `OPENCLAW_LIVE_GATEWAY_MODELS` (Claude/Gemini/OpenAI vision-capable variants тощо), щоб перевірити image probe.
|
||||
Додайте принаймні одну модель із підтримкою зображень до `OPENCLAW_LIVE_GATEWAY_MODELS` (варіанти Claude/Gemini/OpenAI з підтримкою vision тощо), щоб виконати перевірку зображення.
|
||||
|
||||
### Aggregators / alternate gateways
|
||||
### Агрегатори / альтернативні gateway
|
||||
|
||||
Якщо у вас увімкнені ключі, ми також підтримуємо тестування через:
|
||||
Якщо у вас увімкнено ключі, ми також підтримуємо тестування через:
|
||||
|
||||
- OpenRouter: `openrouter/...` (сотні моделей; використовуйте `openclaw models scan`, щоб знайти кандидатів із підтримкою tool+image)
|
||||
- OpenCode: `opencode/...` для Zen і `opencode-go/...` для Go (auth через `OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY`)
|
||||
- OpenRouter: `openrouter/...` (сотні моделей; використовуйте `openclaw models scan`, щоб знайти кандидатів із підтримкою інструментів+зображень)
|
||||
- OpenCode: `opencode/...` для Zen і `opencode-go/...` для Go (автентифікація через `OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY`)
|
||||
|
||||
Інші providers, які можна включити до live matrix (якщо маєте creds/config):
|
||||
Додаткові провайдери, яких можна включити в live-матрицю (якщо маєте облікові дані/конфігурацію):
|
||||
|
||||
- Built-in: `openai`, `openai-codex`, `anthropic`, `google`, `google-vertex`, `google-antigravity`, `google-gemini-cli`, `zai`, `openrouter`, `opencode`, `opencode-go`, `xai`, `groq`, `cerebras`, `mistral`, `github-copilot`
|
||||
- Через `models.providers` (custom endpoints): `minimax` (cloud/API), плюс будь-який OpenAI/Anthropic-compatible proxy (LM Studio, vLLM, LiteLLM тощо)
|
||||
- Вбудовані: `openai`, `openai-codex`, `anthropic`, `google`, `google-vertex`, `google-antigravity`, `google-gemini-cli`, `zai`, `openrouter`, `opencode`, `opencode-go`, `xai`, `groq`, `cerebras`, `mistral`, `github-copilot`
|
||||
- Через `models.providers` (власні endpoints): `minimax` (хмара/API), плюс будь-який проксі, сумісний з OpenAI/Anthropic (LM Studio, vLLM, LiteLLM тощо)
|
||||
|
||||
<Tip>
|
||||
Не hardcode "all models" у docs. Авторитетний список — це те, що `discoverModels(...)` повертає на вашій машині, плюс доступні ключі.
|
||||
Не хардкодьте "all models" у документації. Авторитетний список — це те, що `discoverModels(...)` повертає на вашій машині, плюс доступні ключі.
|
||||
</Tip>
|
||||
|
||||
## Облікові дані (ніколи не commit)
|
||||
## Облікові дані (ніколи не комітьте)
|
||||
|
||||
Live tests знаходять облікові дані так само, як це робить CLI. Практичні наслідки:
|
||||
Живі тести знаходять облікові дані так само, як це робить CLI. Практичні наслідки:
|
||||
|
||||
- Якщо CLI працює, live-тести мають знаходити ті самі ключі.
|
||||
- Якщо live-тест повідомляє «no creds», налагоджуйте це так само, як налагоджували б `openclaw models list` / вибір моделі.
|
||||
- Якщо live-тест повідомляє «no creds», налагоджуйте так само, як налагоджували б `openclaw models list` / вибір моделі.
|
||||
|
||||
- Профілі автентифікації для окремих агентів: `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` (саме це означає “profile keys” у live-тестах)
|
||||
- Профілі автентифікації для кожного агента: `~/.openclaw/agents/<agentId>/agent/auth-profiles.json` (саме це означає “profile keys” у live-тестах)
|
||||
- Конфігурація: `~/.openclaw/openclaw.json` (або `OPENCLAW_CONFIG_PATH`)
|
||||
- Каталог застарілого стану: `~/.openclaw/credentials/` (копіюється у підготовлений live-домашній каталог, коли наявний, але не є основним сховищем ключів профілів)
|
||||
- Локальні live-запуски типово копіюють активну конфігурацію, файли `auth-profiles.json` для окремих агентів, застарілий каталог `credentials/` і підтримувані каталоги автентифікації зовнішніх CLI у тимчасовий тестовий домашній каталог; підготовлені live-домашні каталоги пропускають `workspace/` і `sandboxes/`, а перевизначення шляхів `agents.*.workspace` / `agentDir` вилучаються, щоб проби не зверталися до вашого реального робочого простору на хості.
|
||||
- Каталог застарілого стану: `~/.openclaw/credentials/` (копіюється до проміжного live-домашнього каталогу, якщо присутній, але не є основним сховищем profile-key)
|
||||
- Локальні live-запуски за замовчуванням копіюють активну конфігурацію, файли `auth-profiles.json` для кожного агента, застарілий каталог `credentials/` і підтримувані зовнішні каталоги автентифікації CLI до тимчасового тестового домашнього каталогу; проміжні live-домашні каталоги пропускають `workspace/` і `sandboxes/`, а перевизначення шляхів `agents.*.workspace` / `agentDir` вилучаються, щоб зондування не потрапляли у ваш реальний робочий простір хоста.
|
||||
|
||||
Якщо ви хочете покладатися на ключі середовища (наприклад, експортовані у вашому `~/.profile`), запускайте локальні тести після `source ~/.profile` або використовуйте наведені нижче Docker-запускачі (вони можуть монтувати `~/.profile` у контейнер).
|
||||
Якщо ви хочете покладатися на env-ключі (наприклад, експортовані у вашому `~/.profile`), запускайте локальні тести після `source ~/.profile` або використовуйте Docker-ранери нижче (вони можуть монтувати `~/.profile` у контейнер).
|
||||
|
||||
## Deepgram live (транскрибування аудіо)
|
||||
|
||||
@ -459,19 +457,19 @@ Live tests знаходять облікові дані так само, як ц
|
||||
- Обсяг:
|
||||
- Перевіряє вбудовані шляхи comfy для зображень, відео та `music_generate`
|
||||
- Пропускає кожну можливість, якщо `plugins.entries.comfy.config.<capability>` не налаштовано
|
||||
- Корисно після змін у надсиланні workflow comfy, опитуванні, завантаженнях або реєстрації plugin
|
||||
- Корисно після зміни надсилання workflow comfy, polling, завантажень або реєстрації plugin
|
||||
|
||||
## Image generation live
|
||||
|
||||
- Тест: `test/image-generation.runtime.live.test.ts`
|
||||
- Команда: `pnpm test:live test/image-generation.runtime.live.test.ts`
|
||||
- Обв’язка: `pnpm test:live:media image`
|
||||
- Harness: `pnpm test:live:media image`
|
||||
- Обсяг:
|
||||
- Перелічує кожен зареєстрований provider plugin для генерації зображень
|
||||
- Завантажує відсутні змінні середовища провайдера з вашого login shell (`~/.profile`) перед пробою
|
||||
- Типово використовує live/API-ключі із середовища перед збереженими профілями автентифікації, тому застарілі тестові ключі в `auth-profiles.json` не маскують реальні облікові дані shell
|
||||
- Перелічує кожен зареєстрований plugin провайдера генерації зображень
|
||||
- Завантажує відсутні env-змінні провайдера з вашої login shell (`~/.profile`) перед зондуванням
|
||||
- За замовчуванням використовує live/env API-ключі перед збереженими профілями автентифікації, щоб застарілі тестові ключі в `auth-profiles.json` не маскували реальні облікові дані shell
|
||||
- Пропускає провайдерів без придатної автентифікації/профілю/моделі
|
||||
- Запускає кожного налаштованого провайдера через спільний runtime генерації зображень:
|
||||
- Проганяє кожного налаштованого провайдера через спільний runtime генерації зображень:
|
||||
- `<provider>:generate`
|
||||
- `<provider>:edit`, коли провайдер заявляє підтримку редагування
|
||||
- Поточні охоплені вбудовані провайдери:
|
||||
@ -489,7 +487,7 @@ Live tests знаходять облікові дані так само, як ц
|
||||
- `OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-preview,openrouter/google/gemini-3.1-flash-image-preview,xai/grok-imagine-image"`
|
||||
- `OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit,openrouter:generate,xai:default-generate,xai:default-edit"`
|
||||
- Необов’язкова поведінка автентифікації:
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише із середовища
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише через env
|
||||
|
||||
Для поставленого CLI-шляху додайте smoke `infer` після успішного проходження live-тесту провайдера/runtime:
|
||||
|
||||
@ -503,23 +501,23 @@ openclaw infer image generate \
|
||||
--json
|
||||
```
|
||||
|
||||
Це охоплює розбір аргументів CLI, визначення конфігурації/типового агента, активацію вбудованих plugin, спільний runtime генерації зображень і live-запит до провайдера. Очікується, що залежності plugin будуть наявні перед завантаженням runtime.
|
||||
Це охоплює розбір аргументів CLI, визначення конфігурації/default-agent, активацію вбудованого plugin, спільний runtime генерації зображень і live-запит до провайдера. Очікується, що залежності Plugin будуть наявні до завантаження runtime.
|
||||
|
||||
## Music generation live
|
||||
|
||||
- Тест: `extensions/music-generation-providers.live.test.ts`
|
||||
- Увімкнення: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts`
|
||||
- Обв’язка: `pnpm test:live:media music`
|
||||
- Harness: `pnpm test:live:media music`
|
||||
- Обсяг:
|
||||
- Перевіряє спільний шлях вбудованого провайдера генерації музики
|
||||
- Перевіряє спільний вбудований шлях провайдера генерації музики
|
||||
- Наразі охоплює Google і MiniMax
|
||||
- Завантажує змінні середовища провайдера з вашого login shell (`~/.profile`) перед пробою
|
||||
- Типово використовує live/API-ключі із середовища перед збереженими профілями автентифікації, тому застарілі тестові ключі в `auth-profiles.json` не маскують реальні облікові дані shell
|
||||
- Завантажує env-змінні провайдера з вашої login shell (`~/.profile`) перед зондуванням
|
||||
- За замовчуванням використовує live/env API-ключі перед збереженими профілями автентифікації, щоб застарілі тестові ключі в `auth-profiles.json` не маскували реальні облікові дані shell
|
||||
- Пропускає провайдерів без придатної автентифікації/профілю/моделі
|
||||
- Запускає обидва заявлені режими runtime, коли вони доступні:
|
||||
- Запускає обидва заявлені режими runtime, коли доступні:
|
||||
- `generate` із введенням лише prompt
|
||||
- `edit`, коли провайдер заявляє `capabilities.edit.enabled`
|
||||
- Поточне покриття спільної lane:
|
||||
- Поточне охоплення shared-lane:
|
||||
- `google`: `generate`, `edit`
|
||||
- `minimax`: `generate`
|
||||
- `comfy`: окремий Comfy live-файл, не цей спільний sweep
|
||||
@ -527,51 +525,51 @@ openclaw infer image generate \
|
||||
- `OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"`
|
||||
- `OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"`
|
||||
- Необов’язкова поведінка автентифікації:
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише із середовища
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише через env
|
||||
|
||||
## Video generation live
|
||||
|
||||
- Тест: `extensions/video-generation-providers.live.test.ts`
|
||||
- Увімкнення: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts`
|
||||
- Обв’язка: `pnpm test:live:media video`
|
||||
- Harness: `pnpm test:live:media video`
|
||||
- Обсяг:
|
||||
- Перевіряє спільний шлях вбудованого провайдера генерації відео
|
||||
- Типово використовує release-safe smoke-шлях: не-FAL провайдери, один запит text-to-video на провайдера, односекундний prompt з омаром і обмеження операції для кожного провайдера з `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` (`180000` типово)
|
||||
- Типово пропускає FAL, бо затримка черги на боці провайдера може домінувати час релізу; передайте `--video-providers fal` або `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"`, щоб запустити його явно
|
||||
- Завантажує змінні середовища провайдера з вашого login shell (`~/.profile`) перед пробою
|
||||
- Типово використовує live/API-ключі із середовища перед збереженими профілями автентифікації, тому застарілі тестові ключі в `auth-profiles.json` не маскують реальні облікові дані shell
|
||||
- Перевіряє спільний вбудований шлях провайдера генерації відео
|
||||
- За замовчуванням використовує release-safe smoke-шлях: провайдери не FAL, один text-to-video-запит на провайдера, односекундний lobster prompt і ліміт операцій на провайдера з `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` (`180000` за замовчуванням)
|
||||
- За замовчуванням пропускає FAL, бо затримка черги на боці провайдера може домінувати в часі релізу; передайте `--video-providers fal` або `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"`, щоб запустити його явно
|
||||
- Завантажує env-змінні провайдера з вашої login shell (`~/.profile`) перед зондуванням
|
||||
- За замовчуванням використовує live/env API-ключі перед збереженими профілями автентифікації, щоб застарілі тестові ключі в `auth-profiles.json` не маскували реальні облікові дані shell
|
||||
- Пропускає провайдерів без придатної автентифікації/профілю/моделі
|
||||
- Типово запускає лише `generate`
|
||||
- Встановіть `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1`, щоб також запускати заявлені режими transform, коли вони доступні:
|
||||
- `imageToVideo`, коли провайдер заявляє `capabilities.imageToVideo.enabled`, а вибраний провайдер/модель приймає локальне зображення з buffer-backed input у спільному sweep
|
||||
- `videoToVideo`, коли провайдер заявляє `capabilities.videoToVideo.enabled`, а вибраний провайдер/модель приймає локальне відео з buffer-backed input у спільному sweep
|
||||
- За замовчуванням запускає лише `generate`
|
||||
- Установіть `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1`, щоб також запускати заявлені режими transform, коли доступні:
|
||||
- `imageToVideo`, коли провайдер заявляє `capabilities.imageToVideo.enabled` і вибраний провайдер/модель приймає buffer-backed локальне зображення у спільному sweep
|
||||
- `videoToVideo`, коли провайдер заявляє `capabilities.videoToVideo.enabled` і вибраний провайдер/модель приймає buffer-backed локальне відео у спільному sweep
|
||||
- Поточні заявлені, але пропущені провайдери `imageToVideo` у спільному sweep:
|
||||
- `vydra`, бо вбудований `veo3` є лише text-only, а вбудований `kling` потребує віддаленого URL зображення
|
||||
- Покриття Vydra, специфічне для провайдера:
|
||||
- `vydra`, бо вбудований `veo3` підтримує лише text-only, а вбудований `kling` потребує віддаленого URL зображення
|
||||
- Специфічне для провайдера охоплення Vydra:
|
||||
- `OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts`
|
||||
- цей файл запускає `veo3` text-to-video плюс lane `kling`, яка типово використовує fixture із віддаленим URL зображення
|
||||
- Поточне live-покриття `videoToVideo`:
|
||||
- цей файл запускає `veo3` text-to-video плюс lane `kling`, який за замовчуванням використовує fixture віддаленого URL зображення
|
||||
- Поточне live-охоплення `videoToVideo`:
|
||||
- лише `runway`, коли вибрана модель — `runway/gen4_aleph`
|
||||
- Поточні заявлені, але пропущені провайдери `videoToVideo` у спільному sweep:
|
||||
- `alibaba`, `qwen`, `xai`, бо ці шляхи наразі потребують віддалених `http(s)` / MP4 reference URL
|
||||
- `google`, бо поточна спільна lane Gemini/Veo використовує локальне buffer-backed input, і цей шлях не приймається у спільному sweep
|
||||
- `openai`, бо поточній спільній lane бракує гарантій доступу до video inpaint/remix, специфічних для org
|
||||
- `google`, бо поточний спільний lane Gemini/Veo використовує локальне buffer-backed введення, і цей шлях не приймається у спільному sweep
|
||||
- `openai`, бо поточний спільний lane не має гарантій доступу до org-specific video inpaint/remix
|
||||
- Необов’язкове звуження:
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="deepinfra,google,openai,runway"`
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"`
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""`, щоб включити кожного провайдера в типовий sweep, зокрема FAL
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000`, щоб зменшити обмеження кожної операції провайдера для агресивного smoke-запуску
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""`, щоб включити кожного провайдера в default sweep, включно з FAL
|
||||
- `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000`, щоб зменшити ліміт операції кожного провайдера для агресивного smoke-запуску
|
||||
- Необов’язкова поведінка автентифікації:
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише із середовища
|
||||
- `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1`, щоб примусово використовувати автентифікацію зі сховища профілів та ігнорувати перевизначення лише через env
|
||||
|
||||
## Media live harness
|
||||
|
||||
- Команда: `pnpm test:live:media`
|
||||
- Призначення:
|
||||
- Запускає спільні live-набори для зображень, музики та відео через одну repo-native entrypoint
|
||||
- Автоматично завантажує відсутні змінні середовища провайдера з `~/.profile`
|
||||
- Типово автоматично звужує кожен набір до провайдерів, які наразі мають придатну автентифікацію
|
||||
- Повторно використовує `scripts/test-live.mjs`, тому поведінка Heartbeat і quiet-mode лишається узгодженою
|
||||
- Запускає спільні image, music і video live-набори через одну repo-native точку входу
|
||||
- Автоматично завантажує відсутні env-змінні провайдера з `~/.profile`
|
||||
- За замовчуванням автоматично звужує кожен набір до провайдерів, які наразі мають придатну автентифікацію
|
||||
- Повторно використовує `scripts/test-live.mjs`, тож поведінка Heartbeat і quiet-mode лишається узгодженою
|
||||
- Приклади:
|
||||
- `pnpm test:live:media`
|
||||
- `pnpm test:live:media image video --providers openai,google,minimax`
|
||||
@ -580,4 +578,4 @@ openclaw infer image generate \
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Тестування](/uk/help/testing) — unit-, інтеграційні, QA- та Docker-набори
|
||||
- [Тестування](/uk/help/testing) — unit, integration, QA та Docker-набори
|
||||
|
||||
@ -5,34 +5,34 @@ read_when:
|
||||
summary: Використовуйте моделі xAI Grok в OpenClaw
|
||||
title: xAI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T17:33:41Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-05-02T01:45:06Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 420f60d5e80964b926e50cf74cf414d11de1c30d3a4aa8917f1861e0d56ef5b9
|
||||
source_hash: 9366d6a053fb515d843bbb984ee0fce2eb342a022a6d9aa60df983fc0f8d5745
|
||||
source_path: providers/xai.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw постачається з вбудованим Plugin провайдера `xai` для моделей Grok.
|
||||
OpenClaw постачається з вбудованим плагіном провайдера `xai` для моделей Grok.
|
||||
|
||||
## Початок роботи
|
||||
|
||||
<Steps>
|
||||
<Step title="Створіть ключ API">
|
||||
Створіть ключ API у [консолі xAI](https://console.x.ai/).
|
||||
<Step title="Create an API key">
|
||||
Створіть API-ключ у [консолі xAI](https://console.x.ai/).
|
||||
</Step>
|
||||
<Step title="Установіть ключ API">
|
||||
Установіть `XAI_API_KEY` або виконайте:
|
||||
<Step title="Set your API key">
|
||||
Задайте `XAI_API_KEY` або виконайте:
|
||||
|
||||
```bash
|
||||
openclaw onboard --auth-choice xai-api-key
|
||||
```
|
||||
|
||||
</Step>
|
||||
<Step title="Виберіть модель">
|
||||
<Step title="Pick a model">
|
||||
```json5
|
||||
{
|
||||
agents: { defaults: { model: { primary: "xai/grok-4" } } },
|
||||
agents: { defaults: { model: { primary: "xai/grok-4.3" } } },
|
||||
}
|
||||
```
|
||||
</Step>
|
||||
@ -40,92 +40,93 @@ OpenClaw постачається з вбудованим Plugin провайд
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує xAI Responses API як вбудований транспорт xAI. Той самий
|
||||
`XAI_API_KEY` також може використовуватися для Grok-backed `web_search`, first-class `x_search`
|
||||
та віддаленого `code_execution`.
|
||||
Якщо ви зберігаєте ключ xAI в `plugins.entries.xai.config.webSearch.apiKey`,
|
||||
вбудований провайдер моделей xAI також повторно використовує цей ключ як резервний варіант.
|
||||
Налаштування `code_execution` розміщується в `plugins.entries.xai.config.codeExecution`.
|
||||
`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`.
|
||||
</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` |
|
||||
| Grok 4 | `grok-4`, `grok-4-0709` |
|
||||
| Grok 4 Fast | `grok-4-fast`, `grok-4-fast-non-reasoning` |
|
||||
| Grok 4.1 Fast | `grok-4-1-fast`, `grok-4-1-fast-non-reasoning` |
|
||||
| Grok 4.20 Beta | `grok-4.20-beta-latest-reasoning`, `grok-4.20-beta-latest-non-reasoning` |
|
||||
| Grok Code | `grok-code-fast-1` |
|
||||
|
||||
Plugin також виконує forward-resolve новіших ідентифікаторів `grok-4*` і `grok-code-fast*`, коли
|
||||
вони дотримуються тієї самої форми API.
|
||||
Плагін також перенаправляє новіші ідентифікатори `grok-4*` і `grok-code-fast*`,
|
||||
коли вони мають таку саму форму API.
|
||||
|
||||
<Tip>
|
||||
`grok-4-fast`, `grok-4-1-fast` і варіанти `grok-4.20-beta-*` — це
|
||||
поточні посилання Grok із підтримкою зображень у вбудованому каталозі.
|
||||
`grok-4.3`, `grok-4-fast`, `grok-4-1-fast` і варіанти `grok-4.20-beta-*`
|
||||
є поточними посиланнями Grok із підтримкою зображень у вбудованому каталозі.
|
||||
</Tip>
|
||||
|
||||
## Покриття можливостей OpenClaw
|
||||
## Покриття функцій OpenClaw
|
||||
|
||||
Вбудований Plugin зіставляє поточну публічну поверхню API xAI зі спільними
|
||||
контрактами провайдера та інструментів OpenClaw. Можливості, які не вписуються у спільний контракт
|
||||
(наприклад, потоковий TTS і voice у реальному часі), не відкриваються — див. таблицю
|
||||
нижче.
|
||||
Вбудований плагін відображає поточну публічну поверхню API xAI на спільні
|
||||
контракти провайдерів та інструментів OpenClaw. Можливості, які не вписуються
|
||||
у спільний контракт (наприклад, потоковий TTS і голос у реальному часі), не
|
||||
експонуються — див. таблицю нижче.
|
||||
|
||||
| Можливість xAI | Поверхня OpenClaw | Статус |
|
||||
| -------------------------- | ---------------------------------------- | ------------------------------------------------------------------- |
|
||||
| Чат / Responses | провайдер моделей `xai/<model>` | Так |
|
||||
| Вебпошук на стороні сервера| провайдер `web_search` `grok` | Так |
|
||||
| Пошук X на стороні сервера | інструмент `x_search` | Так |
|
||||
| Виконання коду на стороні сервера | інструмент `code_execution` | Так |
|
||||
| Зображення | `image_generate` | Так |
|
||||
| Відео | `video_generate` | Так |
|
||||
| Пакетне перетворення тексту на мовлення | `messages.tts.provider: "xai"` / `tts` | Так |
|
||||
| Потоковий TTS | — | Не відкрито; контракт TTS OpenClaw повертає завершені аудіобуфери |
|
||||
| Пакетне перетворення мовлення на текст | `tools.media.audio` / розуміння медіа | Так |
|
||||
| Потокове перетворення мовлення на текст | Voice Call `streaming.provider: "xai"` | Так |
|
||||
| Мовлення в реальному часі | — | Ще не відкрито; інший контракт сеансу/WebSocket |
|
||||
| Файли / пакети | Лише сумісність із Generic model API | Не є first-class інструментом OpenClaw |
|
||||
| Можливість xAI | Поверхня OpenClaw | Стан |
|
||||
| -------------------------- | ----------------------------------------- | ------------------------------------------------------------------- |
|
||||
| Chat / Responses | провайдер моделей `xai/<model>` | Так |
|
||||
| Серверний вебпошук | провайдер `web_search` `grok` | Так |
|
||||
| Серверний пошук X | інструмент `x_search` | Так |
|
||||
| Серверне виконання коду | інструмент `code_execution` | Так |
|
||||
| Зображення | `image_generate` | Так |
|
||||
| Відео | `video_generate` | Так |
|
||||
| Пакетний text-to-speech | `messages.tts.provider: "xai"` / `tts` | Так |
|
||||
| Потоковий TTS | — | Не експонується; контракт TTS OpenClaw повертає повні аудіобуфери |
|
||||
| Пакетний speech-to-text | `tools.media.audio` / розуміння медіа | Так |
|
||||
| Потоковий speech-to-text | Voice Call `streaming.provider: "xai"` | Так |
|
||||
| Голос у реальному часі | — | Ще не експонується; інший контракт сеансу/WebSocket |
|
||||
| Файли / пакети | Лише сумісність із загальним API моделей | Не першокласний інструмент OpenClaw |
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує REST API xAI для зображень/відео/TTS/STT для генерації медіа,
|
||||
мовлення та пакетної транскрипції, потоковий WebSocket STT xAI для живої
|
||||
транскрипції голосових дзвінків, а також Responses API для моделей, пошуку та
|
||||
інструментів виконання коду. Можливості, яким потрібні інші контракти OpenClaw, такі як
|
||||
сеанси Realtime voice, документуються тут як можливості upstream, а не як
|
||||
прихована поведінка Plugin.
|
||||
OpenClaw використовує REST API xAI для зображень/відео/TTS/STT для генерації
|
||||
медіа, мовлення та пакетної транскрипції, потоковий WebSocket STT xAI для живої
|
||||
транскрипції голосових викликів і Responses API для моделей, пошуку та
|
||||
інструментів виконання коду. Функції, яким потрібні інші контракти OpenClaw,
|
||||
як-от сеанси голосу в реальному часі, задокументовано тут як можливості upstream,
|
||||
а не як приховану поведінку плагіна.
|
||||
</Note>
|
||||
|
||||
### Зіставлення швидкого режиму
|
||||
### Зіставлення Fast-режиму
|
||||
|
||||
`/fast on` або `agents.defaults.models["xai/<model>"].params.fastMode: true`
|
||||
перезаписує нативні запити xAI так:
|
||||
переписує нативні запити xAI так:
|
||||
|
||||
| Вихідна модель | Ціль швидкого режиму |
|
||||
| -------------- | -------------------- |
|
||||
| `grok-3` | `grok-3-fast` |
|
||||
| `grok-3-mini` | `grok-3-mini-fast` |
|
||||
| `grok-4` | `grok-4-fast` |
|
||||
| `grok-4-0709` | `grok-4-fast` |
|
||||
| Початкова модель | Ціль 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` |
|
||||
|
||||
## Можливості
|
||||
## Функції
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Вебпошук">
|
||||
<Accordion title="Web search">
|
||||
Вбудований провайдер вебпошуку `grok` також використовує `XAI_API_KEY`:
|
||||
|
||||
```bash
|
||||
@ -134,27 +135,28 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Генерація відео">
|
||||
Вбудований Plugin `xai` реєструє генерацію відео через спільний
|
||||
<Accordion title="Video generation">
|
||||
Вбудований плагін `xai` реєструє генерацію відео через спільний
|
||||
інструмент `video_generate`.
|
||||
|
||||
- Типова модель відео: `xai/grok-imagine-video`
|
||||
- Стандартна модель відео: `xai/grok-imagine-video`
|
||||
- Режими: text-to-video, image-to-video, генерація reference-image, віддалене
|
||||
редагування відео та віддалене розширення відео
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`
|
||||
- Роздільні здатності: `480P`, `720P`
|
||||
- Тривалість: 1-15 секунд для generation/image-to-video, 1-10 секунд при
|
||||
використанні ролей `reference_image`, 2-10 секунд для розширення
|
||||
- Генерація reference-image: установіть `imageRoles` у `reference_image` для
|
||||
- Тривалість: 1-15 секунд для генерації/image-to-video, 1-10 секунд під час
|
||||
використання ролей `reference_image`, 2-10 секунд для розширення
|
||||
- Генерація reference-image: задайте `imageRoles` як `reference_image` для
|
||||
кожного наданого зображення; xAI приймає до 7 таких зображень
|
||||
|
||||
<Warning>
|
||||
Локальні відеобуфери не приймаються. Використовуйте віддалені URL `http(s)` для
|
||||
входів редагування/розширення відео. image-to-video приймає локальні буфери зображень, оскільки
|
||||
OpenClaw може кодувати їх як URL даних для xAI.
|
||||
Локальні відеобуфери не приймаються. Використовуйте віддалені URL `http(s)`
|
||||
для вхідних даних редагування/розширення відео. Image-to-video приймає
|
||||
локальні буфери зображень, оскільки OpenClaw може закодувати їх як data URL
|
||||
для xAI.
|
||||
</Warning>
|
||||
|
||||
Щоб використовувати xAI як типового провайдера відео:
|
||||
Щоб використовувати xAI як стандартного постачальника відео:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -169,30 +171,30 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
```
|
||||
|
||||
<Note>
|
||||
Див. [Генерація відео](/uk/tools/video-generation), щоб дізнатися про спільні параметри інструмента,
|
||||
вибір провайдера та поведінку резервного перемикання.
|
||||
Див. [Генерація відео](/uk/tools/video-generation) щодо спільних параметрів інструмента,
|
||||
вибору постачальника та поведінки перемикання в разі відмови.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Генерація зображень">
|
||||
Вбудований Plugin `xai` реєструє генерацію зображень через спільний
|
||||
Вбудований `xai` plugin реєструє генерацію зображень через спільний
|
||||
інструмент `image_generate`.
|
||||
|
||||
- Типова модель зображень: `xai/grok-imagine-image`
|
||||
- Стандартна модель зображень: `xai/grok-imagine-image`
|
||||
- Додаткова модель: `xai/grok-imagine-image-pro`
|
||||
- Режими: text-to-image і редагування reference-image
|
||||
- Вхідні reference: одне `image` або до п’яти `images`
|
||||
- Режими: текст-у-зображення та редагування за референсним зображенням
|
||||
- Референсні вхідні дані: одне `image` або до п’яти `images`
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2:3`, `3:2`
|
||||
- Роздільні здатності: `1K`, `2K`
|
||||
- Роздільності: `1K`, `2K`
|
||||
- Кількість: до 4 зображень
|
||||
|
||||
OpenClaw запитує в xAI відповіді зображень `b64_json`, щоб згенеровані медіа могли
|
||||
зберігатися та доставлятися через звичайний шлях вкладень каналу. Локальні
|
||||
reference-зображення перетворюються на URL даних; віддалені reference `http(s)`
|
||||
OpenClaw запитує в xAI відповіді зображень у форматі `b64_json`, щоб згенеровані медіа можна було
|
||||
зберігати й доставляти через звичайний шлях вкладень каналу. Локальні
|
||||
референсні зображення перетворюються на data URLs; віддалені посилання `http(s)`
|
||||
передаються без змін.
|
||||
|
||||
Щоб використовувати xAI як типового провайдера зображень:
|
||||
Щоб використовувати xAI як стандартного постачальника зображень:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -207,26 +209,26 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
```
|
||||
|
||||
<Note>
|
||||
xAI також документує `quality`, `mask`, `user` і додаткові нативні співвідношення
|
||||
сторін, такі як `1:2`, `2:1`, `9:20` і `20:9`. OpenClaw сьогодні передає лише
|
||||
спільні міжпровайдерні елементи керування зображеннями; непідтримувані нативні параметри
|
||||
навмисно не відкриваються через `image_generate`.
|
||||
xAI також документує `quality`, `mask`, `user` і додаткові нативні співвідношення,
|
||||
такі як `1:2`, `2:1`, `9:20` і `20:9`. Наразі OpenClaw передає лише
|
||||
спільні міжпостачальницькі елементи керування зображеннями; непідтримувані параметри,
|
||||
притаманні лише нативному інтерфейсу, навмисно не експонуються через `image_generate`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Перетворення тексту на мовлення">
|
||||
Вбудований Plugin `xai` реєструє перетворення тексту на мовлення через спільну
|
||||
поверхню провайдера `tts`.
|
||||
<Accordion title="Текст-у-мовлення">
|
||||
Вбудований `xai` plugin реєструє текст-у-мовлення через спільну поверхню
|
||||
постачальника `tts`.
|
||||
|
||||
- Голоси: `eve`, `ara`, `rex`, `sal`, `leo`, `una`
|
||||
- Типовий голос: `eve`
|
||||
- Стандартний голос: `eve`
|
||||
- Формати: `mp3`, `wav`, `pcm`, `mulaw`, `alaw`
|
||||
- Мова: код BCP-47 або `auto`
|
||||
- Швидкість: нативне перевизначення швидкості провайдера
|
||||
- Швидкість: нативне перевизначення швидкості постачальника
|
||||
- Нативний формат голосових нотаток Opus не підтримується
|
||||
|
||||
Щоб використовувати xAI як типового провайдера TTS:
|
||||
Щоб використовувати xAI як стандартного постачальника TTS:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -244,25 +246,25 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
```
|
||||
|
||||
<Note>
|
||||
OpenClaw використовує пакетний ендпоінт xAI `/v1/tts`. xAI також пропонує потоковий TTS
|
||||
через WebSocket, але контракт провайдера мовлення OpenClaw наразі очікує
|
||||
OpenClaw використовує пакетний endpoint xAI `/v1/tts`. xAI також пропонує потоковий TTS
|
||||
через WebSocket, але контракт постачальника мовлення OpenClaw наразі очікує
|
||||
повний аудіобуфер перед доставленням відповіді.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Перетворення мовлення на текст">
|
||||
Вбудований Plugin `xai` реєструє пакетне перетворення мовлення на текст через
|
||||
поверхню транскрипції для розуміння медіа в OpenClaw.
|
||||
<Accordion title="Мовлення-у-текст">
|
||||
Вбудований `xai` plugin реєструє пакетне мовлення-у-текст через поверхню
|
||||
транскрибування для розуміння медіа OpenClaw.
|
||||
|
||||
- Типова модель: `grok-stt`
|
||||
- Ендпоінт: xAI REST `/v1/stt`
|
||||
- Шлях введення: multipart-завантаження аудіофайлу
|
||||
- Підтримується в OpenClaw всюди, де транскрипція вхідного аудіо використовує
|
||||
`tools.media.audio`, включно з сегментами голосових каналів Discord і
|
||||
- Стандартна модель: `grok-stt`
|
||||
- Endpoint: xAI REST `/v1/stt`
|
||||
- Шлях введення: завантаження аудіофайлу multipart
|
||||
- Підтримується OpenClaw усюди, де транскрибування вхідного аудіо використовує
|
||||
`tools.media.audio`, включно із сегментами голосових каналів Discord і
|
||||
аудіовкладеннями каналів
|
||||
|
||||
Щоб примусово використовувати xAI для транскрипції вхідного аудіо:
|
||||
Щоб примусово використовувати xAI для транскрибування вхідного аудіо:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -282,25 +284,25 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
}
|
||||
```
|
||||
|
||||
Мову можна передавати через спільну конфігурацію аудіомедіа або в запиті
|
||||
транскрипції для окремого виклику. Підказки prompt приймаються спільною поверхнею OpenClaw,
|
||||
але інтеграція xAI REST STT передає лише файл, модель і
|
||||
мову, оскільки саме вони чисто зіставляються з поточним публічним ендпоінтом xAI.
|
||||
Мову можна надати через спільну конфігурацію аудіомедіа або через запит
|
||||
транскрибування для окремого виклику. Підказки prompt приймаються спільною поверхнею
|
||||
OpenClaw, але інтеграція xAI REST STT передає лише файл, модель і
|
||||
мову, оскільки вони чітко відповідають поточному публічному endpoint xAI.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Потокове перетворення мовлення на текст">
|
||||
Вбудований Plugin `xai` також реєструє провайдера транскрипції в реальному часі
|
||||
для аудіо живих voice call.
|
||||
<Accordion title="Потокове мовлення-у-текст">
|
||||
Вбудований `xai` plugin також реєструє постачальника транскрибування в реальному часі
|
||||
для аудіо живих голосових викликів.
|
||||
|
||||
- Ендпоінт: xAI WebSocket `wss://api.x.ai/v1/stt`
|
||||
- Типове кодування: `mulaw`
|
||||
- Типова частота дискретизації: `8000`
|
||||
- Типове визначення кінця фрази: `800ms`
|
||||
- Проміжні транскрипти: увімкнено типово
|
||||
- Endpoint: xAI WebSocket `wss://api.x.ai/v1/stt`
|
||||
- Стандартне кодування: `mulaw`
|
||||
- Стандартна частота дискретизації: `8000`
|
||||
- Стандартне визначення завершення: `800ms`
|
||||
- Проміжні транскрипти: увімкнено за замовчуванням
|
||||
|
||||
Медіапотік Twilio у Voice Call надсилає аудіокадри G.711 µ-law, тому
|
||||
провайдер xAI може пересилати ці кадри напряму без транскодування:
|
||||
постачальник xAI може передавати ці кадри напряму без перекодування:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -326,29 +328,29 @@ 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 наразі записують короткі сегменти й замість цього використовують пакетний
|
||||
Цей потоковий провайдер призначений для шляху транскрипції в реальному часі Voice Call.
|
||||
Голос Discord наразі записує короткі сегменти й натомість використовує пакетний
|
||||
шлях транскрипції `tools.media.audio`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування x_search">
|
||||
Вбудований Plugin xAI надає `x_search` як інструмент OpenClaw для пошуку
|
||||
контенту в X (раніше Twitter) через Grok.
|
||||
<Accordion title="Конфігурація x_search">
|
||||
Вбудований xAI Plugin надає `x_search` як інструмент OpenClaw для пошуку
|
||||
вмісту X (раніше Twitter) через Grok.
|
||||
|
||||
Шлях конфігурації: `plugins.entries.xai.config.xSearch`
|
||||
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ------------------ | ------- | ------------------ | ------------------------------------ |
|
||||
| `enabled` | boolean | — | Увімкнути або вимкнути x_search |
|
||||
| `model` | string | `grok-4-1-fast` | Модель для запитів x_search |
|
||||
| `model` | string | `grok-4-1-fast` | Модель, що використовується для запитів x_search |
|
||||
| `inlineCitations` | boolean | — | Додавати вбудовані цитати в результати |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
@ -374,21 +376,21 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування виконання коду">
|
||||
Вбудований Plugin xAI надає `code_execution` як інструмент OpenClaw для
|
||||
віддаленого виконання коду в середовищі sandbox xAI.
|
||||
<Accordion title="Конфігурація виконання коду">
|
||||
Вбудований xAI Plugin надає `code_execution` як інструмент OpenClaw для
|
||||
віддаленого виконання коду в пісочниці xAI.
|
||||
|
||||
Шлях конфігурації: `plugins.entries.xai.config.codeExecution`
|
||||
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ----------------- | ------- | ------------------------- | ---------------------------------------- |
|
||||
| Ключ | Тип | Типове значення | Опис |
|
||||
| ----------------- | ------- | ------------------------- | --------------------------------- |
|
||||
| `enabled` | boolean | `true` (якщо ключ доступний) | Увімкнути або вимкнути виконання коду |
|
||||
| `model` | string | `grok-4-1-fast` | Модель для запитів виконання коду |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
| `model` | string | `grok-4-1-fast` | Модель, що використовується для запитів виконання коду |
|
||||
| `maxTurns` | number | — | Максимальна кількість ходів розмови |
|
||||
| `timeoutSeconds` | number | — | Тайм-аут запиту в секундах |
|
||||
|
||||
<Note>
|
||||
Це віддалене виконання в sandbox xAI, а не локальний [`exec`](/uk/tools/exec).
|
||||
Це віддалене виконання в пісочниці xAI, а не локальний [`exec`](/uk/tools/exec).
|
||||
</Note>
|
||||
|
||||
```json5
|
||||
@ -411,39 +413,41 @@ OpenClaw використовує REST API xAI для зображень/від
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Відомі обмеження">
|
||||
- Наразі автентифікація підтримує лише API-ключі. У OpenClaw поки що немає xAI OAuth або device-code flow.
|
||||
- Сьогодні автентифікація доступна лише за API-ключем. В OpenClaw ще немає
|
||||
потоку xAI OAuth або device-code.
|
||||
- `grok-4.20-multi-agent-experimental-beta-0304` не підтримується на
|
||||
звичайному шляху провайдера xAI, оскільки вимагає іншої поверхні upstream API, ніж стандартний транспорт xAI в OpenClaw.
|
||||
- Realtime voice xAI ще не зареєстровано як провайдер OpenClaw. Для нього
|
||||
потрібен інший двонапрямний контракт голосового сеансу, ніж для пакетного STT або
|
||||
звичайному шляху провайдера xAI, оскільки він потребує іншої поверхні
|
||||
upstream API, ніж стандартний транспорт xAI в OpenClaw.
|
||||
- Голос xAI Realtime ще не зареєстрований як провайдер OpenClaw. Для нього
|
||||
потрібен інший контракт двонапрямної голосової сесії, ніж для пакетного STT або
|
||||
потокової транскрипції.
|
||||
- `quality`, `mask` і додаткові нативні співвідношення сторін для зображень xAI
|
||||
не відкриваються, доки спільний інструмент `image_generate` не отримає відповідні
|
||||
міжпровайдерні елементи керування.
|
||||
- `quality` зображення xAI, `mask` зображення та додаткові власні співвідношення сторін
|
||||
не надаються, доки спільний інструмент `image_generate` не матиме відповідних
|
||||
міжпровайдерних елементів керування.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Розширені примітки">
|
||||
- OpenClaw автоматично застосовує специфічні для xAI виправлення сумісності
|
||||
схем інструментів і викликів інструментів на спільному шляху виконавця.
|
||||
- Нативні запити xAI типово використовують `tool_stream: true`. Установіть
|
||||
`agents.defaults.models["xai/<model>"].params.tool_stream` у `false`, щоб
|
||||
схем інструментів і викликів інструментів на спільному шляху runner.
|
||||
- Власні запити xAI типово використовують `tool_stream: true`. Установіть
|
||||
`agents.defaults.models["xai/<model>"].params.tool_stream` на `false`, щоб
|
||||
вимкнути це.
|
||||
- Вбудована обгортка xAI прибирає непідтримувані прапорці strict tool-schema і
|
||||
ключі payload reasoning перед надсиланням нативних запитів xAI.
|
||||
- Вбудована обгортка xAI вилучає непідтримувані суворі прапорці схем інструментів і
|
||||
ключі payload reasoning перед надсиланням власних запитів xAI.
|
||||
- `web_search`, `x_search` і `code_execution` надаються як інструменти OpenClaw.
|
||||
OpenClaw вмикає конкретний вбудований інструмент xAI, який потрібен, усередині кожного запиту
|
||||
інструмента замість того, щоб додавати всі нативні інструменти до кожного ходу чату.
|
||||
- `x_search` і `code_execution` належать вбудованому Plugin xAI, а не
|
||||
жорстко закодовані в основне runtime моделей.
|
||||
- `code_execution` — це віддалене виконання в sandbox xAI, а не локальний
|
||||
OpenClaw вмикає конкретний вбудований інструмент xAI, потрібний у кожному запиті
|
||||
інструмента, замість прикріплення всіх власних інструментів до кожного ходу чату.
|
||||
- `x_search` і `code_execution` належать вбудованому xAI Plugin, а не жорстко
|
||||
закодовані в базовому runtime моделі.
|
||||
- `code_execution` — це віддалене виконання в пісочниці xAI, а не локальний
|
||||
[`exec`](/uk/tools/exec).
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Живе тестування
|
||||
## Live testing
|
||||
|
||||
Шляхи медіа xAI покриваються модульними тестами та opt-in живими наборами. Живі
|
||||
команди завантажують секрети з вашої login shell, включно з `~/.profile`, перед
|
||||
Медійні шляхи xAI покриті модульними тестами та opt-in live-наборами. Live
|
||||
команди завантажують секрети з вашої login shell, зокрема `~/.profile`, перед
|
||||
перевіркою `XAI_API_KEY`.
|
||||
|
||||
```bash
|
||||
@ -452,25 +456,25 @@ 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 через
|
||||
realtime STT xAI, генерує результат text-to-image і редагує reference-image. Спільний
|
||||
live-файл для зображень перевіряє того самого провайдера xAI через
|
||||
вибір під час виконання в OpenClaw, резервне перемикання, нормалізацію та шлях вкладення медіа.
|
||||
Специфічний для провайдера live-файл синтезує звичайний TTS, дружній до телефонії PCM
|
||||
TTS, транскрибує аудіо через пакетний STT xAI, передає той самий PCM потоком через
|
||||
xAI realtime STT, генерує результат text-to-image і редагує еталонне зображення. Спільний
|
||||
live-файл зображень перевіряє той самий провайдер xAI через шлях вибору runtime,
|
||||
fallback, нормалізації та медійних вкладень OpenClaw.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Вибір моделі" href="/uk/concepts/model-providers" icon="layers">
|
||||
Вибір провайдерів, посилань на моделі та поведінки резервного перемикання.
|
||||
Вибір провайдерів, посилань на моделі та поведінки failover.
|
||||
</Card>
|
||||
<Card title="Генерація відео" href="/uk/tools/video-generation" icon="video">
|
||||
Спільні параметри інструмента відео та вибір провайдера.
|
||||
Спільні параметри відеоінструмента та вибір провайдера.
|
||||
</Card>
|
||||
<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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user