chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-25 07:05:21 +00:00
parent 62e3a7bb08
commit a05f5ea7a4
9 changed files with 1638 additions and 1346 deletions

View File

@ -2,28 +2,28 @@
read_when:
- Ви хочете підключити бота Feishu/Lark
- Ви налаштовуєте канал Feishu
summary: Огляд бота Feishu, функції та налаштування
summary: Огляд, функції та налаштування бота Feishu
title: Feishu
x-i18n:
generated_at: "2026-04-24T01:17:06Z"
generated_at: "2026-04-25T07:01:55Z"
model: gpt-5.4
provider: openai
source_hash: f68a03c457fb2be7654f298fbad759705983d9e673b7b7b950609694894bdcbc
source_hash: 01e6373cc5744973e9f18016c5d5bd6a036a03eb269cba3b5fd7f4108cad2ecb
source_path: channels/feishu.md
workflow: 15
---
# Feishu / Lark
Feishu/Lark — це універсальна платформа для співпраці, де команди спілкуються в чаті, діляться документами, керують календарями та разом виконують роботу.
Feishu/Lark — це універсальна платформа для співпраці, де команди спілкуються в чаті, обмінюються документами, керують календарями та спільно виконують роботу.
**Статус:** готово до використання у продакшені для особистих повідомлень боту та групових чатів. WebSocket — режим за замовчуванням; режим Webhook є необов’язковим.
**Статус:** готово до використання у продакшені для особистих повідомлень боту та групових чатів. Режим WebSocket є стандартним; режим Webhook — необов’язковий.
---
## Швидкий старт
> **Потрібен OpenClaw 2026.4.24 або новіший.** Виконайте `openclaw --version`, щоб перевірити. Оновіть за допомогою `openclaw update`.
> **Потрібен OpenClaw 2026.4.24 або новіший.** Щоб перевірити, виконайте `openclaw --version`. Оновіть за допомогою `openclaw update`.
<Steps>
<Step title="Запустіть майстер налаштування каналу">
@ -46,14 +46,14 @@ Feishu/Lark — це універсальна платформа для спів
### Особисті повідомлення
Налаштуйте `dmPolicy`, щоб визначити, хто може надсилати боту особисті повідомлення:
Налаштуйте `dmPolicy`, щоб керувати тим, хто може надсилати боту особисті повідомлення:
- `"pairing"` — невідомі користувачі отримують код сполучення; схвалення через CLI
- `"allowlist"` — спілкуватися можуть лише користувачі, перелічені в `allowFrom` (за замовчуванням: лише власник бота)
- `"pairing"` — невідомі користувачі отримують код сполучення; підтвердження через CLI
- `"allowlist"` — спілкуватися можуть лише користувачі, перелічені в `allowFrom` (типово: лише власник бота)
- `"open"` — дозволити всіх користувачів
- `"disabled"` — вимкнути всі особисті повідомлення
**Схвалити запит на сполучення:**
**Підтвердження запиту на сполучення:**
```bash
openclaw pairing list feishu
@ -62,19 +62,19 @@ openclaw pairing approve feishu <CODE>
### Групові чати
**Політика груп** (`channels.feishu.groupPolicy`):
**Політика для груп** (`channels.feishu.groupPolicy`):
| Value | Поведінка |
| ------------- | ------------------------------------------- |
| `"open"` | Відповідати на всі повідомлення в групах |
| `"allowlist"` | Відповідати лише групам у `groupAllowFrom` |
| `"disabled"` | Вимкнути всі повідомлення в групах |
| Значення | Поведінка |
| ------------- | ------------------------------------------ |
| `"open"` | Відповідати на всі повідомлення в групах |
| `"allowlist"` | Відповідати лише в групах із `groupAllowFrom` |
| `"disabled"` | Вимкнути всі групові повідомлення |
За замовчуванням: `allowlist`
Типове значення: `allowlist`
**Вимога згадки** (`channels.feishu.requireMention`):
- `true` — вимагати @згадку (за замовчуванням)
- `true` — вимагати @згадку (типово)
- `false` — відповідати без @згадки
- Перевизначення для окремої групи: `channels.feishu.groups.<chat_id>.requireMention`
@ -94,7 +94,7 @@ openclaw pairing approve feishu <CODE>
}
```
### Дозволити всі групи, але все одно вимагати @згадку
### Дозволити всі групи, але все ще вимагати @згадку
```json5
{
@ -107,14 +107,14 @@ openclaw pairing approve feishu <CODE>
}
```
### Дозволити лише певні групи
### Дозволити лише конкретні групи
```json5
{
channels: {
feishu: {
groupPolicy: "allowlist",
// ID груп мають вигляд: oc_xxx
// Ідентифікатори груп мають вигляд: oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
@ -148,19 +148,19 @@ openclaw pairing approve feishu <CODE>
### ID групи (`chat_id`, формат: `oc_xxx`)
Відкрийте групу у Feishu/Lark, натисніть значок меню у верхньому правому куті та перейдіть до **Settings**. ID групи (`chat_id`) указано на сторінці налаштувань.
Відкрийте групу у Feishu/Lark, натисніть значок меню у верхньому правому куті та перейдіть у **Settings**. ID групи (`chat_id`) вказано на сторінці налаштувань.
![Отримання ID групи](/images/feishu-get-group-id.png)
![Get Group ID](/images/feishu-get-group-id.png)
### ID користувача (`open_id`, формат: `ou_xxx`)
Запустіть Gateway, надішліть боту особисте повідомлення, а потім перевірте логи:
Запустіть Gateway, надішліть боту особисте повідомлення, а потім перевірте журнали:
```bash
openclaw logs --follow
```
Знайдіть `open_id` у виводі логів. Ви також можете перевірити запити на сполучення, що очікують схвалення:
Шукайте `open_id` у виводі журналу. Також можна перевірити запити на сполучення, які очікують підтвердження:
```bash
openclaw pairing list feishu
@ -170,33 +170,33 @@ openclaw pairing list feishu
## Поширені команди
| Command | Опис |
| --------- | ----------------------------- |
| `/status` | Показати статус бота |
| `/reset` | Скинути поточну сесію |
| `/model` | Показати або змінити AI-модель |
| Команда | Опис |
| --------- | --------------------------------- |
| `/status` | Показати статус бота |
| `/reset` | Скинути поточну сесію |
| `/model` | Показати або перемкнути AI-модель |
> Feishu/Lark не підтримує нативні меню slash-команд, тому надсилайте їх як звичайні текстові повідомлення.
> Feishu/Lark не підтримує вбудовані меню slash-команд, тому надсилайте ці команди як звичайні текстові повідомлення.
---
## Усунення неполадок
## Усунення несправностей
### Бот не відповідає в групових чатах
1. Переконайтеся, що бота додано до групи
2. Переконайтеся, що ви @згадуєте бота (це потрібно за замовчуванням)
2. Переконайтеся, що ви згадуєте бота через @ (типово це обов’язково)
3. Перевірте, що `groupPolicy` не має значення `"disabled"`
4. Перевірте логи: `openclaw logs --follow`
4. Перевірте журнали: `openclaw logs --follow`
### Бот не отримує повідомлення
1. Переконайтеся, що бот опублікований і схвалений у Feishu Open Platform / Lark Developer
2. Переконайтеся, що підписка на події включає `im.message.receive_v1`
1. Переконайтеся, що бота опубліковано й схвалено у Feishu Open Platform / Lark Developer
2. Переконайтеся, що підписка на події містить `im.message.receive_v1`
3. Переконайтеся, що вибрано **persistent connection** (WebSocket)
4. Переконайтеся, що надано всі потрібні дозволи
5. Переконайтеся, що Gateway запущено: `openclaw gateway status`
6. Перевірте логи: `openclaw logs --follow`
6. Перевірте журнали: `openclaw logs --follow`
### App Secret скомпрометовано
@ -237,19 +237,19 @@ openclaw pairing list feishu
### Обмеження повідомлень
- `textChunkLimit` — розмір фрагмента вихідного тексту (за замовчуванням: `2000` символів)
- `mediaMaxMb`ліміт завантаження/вивантаження медіа (за замовчуванням: `30` МБ)
- `textChunkLimit` — розмір фрагмента вихідного тексту (типово: `2000` символів)
- `mediaMaxMb`обмеження на завантаження/вивантаження медіа (типово: `30` МБ)
### Потокове передавання
### Streaming
Feishu/Lark підтримує потокові відповіді через інтерактивні картки. Коли це ввімкнено, бот оновлює картку в реальному часі під час генерації тексту.
Feishu/Lark підтримує потокові відповіді через інтерактивні картки. Якщо цю функцію ввімкнено, бот оновлює картку в реальному часі під час генерації тексту.
```json5
{
channels: {
feishu: {
streaming: true, // увімкнути виведення потокових карток (за замовчуванням: true)
blockStreaming: true, // увімкнути потокове передавання на рівні блоків (за замовчуванням: true)
streaming: true, // увімкнути потоковий вивід у картках (типово: true)
blockStreaming: true, // увімкнути потокову передачу на рівні блоків (типово: true)
},
},
}
@ -261,8 +261,8 @@ Feishu/Lark підтримує потокові відповіді через і
Зменште кількість викликів API Feishu/Lark за допомогою двох необов’язкових прапорців:
- `typingIndicator` (за замовчуванням `true`): установіть `false`, щоб пропустити виклики реакції набору тексту
- `resolveSenderNames` (за замовчуванням `true`): установіть `false`, щоб пропустити пошук профілів відправників
- `typingIndicator` (типово `true`): установіть `false`, щоб пропустити виклики реакцій друку
- `resolveSenderNames` (типово `true`): установіть `false`, щоб пропустити пошук профілів відправників
```json5
{
@ -277,9 +277,9 @@ Feishu/Lark підтримує потокові відповіді через і
### Сесії ACP
Feishu/Lark підтримує ACP для особистих повідомлень і повідомлень у гілках груп. ACP у Feishu/Lark керується текстовими командами — нативних меню slash-команд немає, тому використовуйте повідомлення `/acp ...` безпосередньо в розмові.
Feishu/Lark підтримує ACP для особистих повідомлень і повідомлень у гілках груп. ACP у Feishu/Lark керується текстовими командами — вбудованих меню slash-команд немає, тому використовуйте повідомлення `/acp ...` безпосередньо в розмові.
#### Постійна прив’язка ACP
#### Постійне прив’язування ACP
```json5
{
@ -331,7 +331,7 @@ Feishu/Lark підтримує ACP для особистих повідомле
/acp spawn codex --thread here
```
`--thread here` працює для особистих повідомлень і повідомлень у гілках Feishu/Lark. Подальші повідомлення в прив’язаній розмові маршрутизуються безпосередньо до цієї сесії ACP.
`--thread here` працює для особистих повідомлень і повідомлень у гілках Feishu/Lark. Подальші повідомлення в прив’язаній розмові будуть маршрутизуватися безпосередньо до цієї сесії ACP.
### Маршрутизація між кількома агентами
@ -368,10 +368,10 @@ Feishu/Lark підтримує ACP для особистих повідомле
Поля маршрутизації:
- `match.channel`: `"feishu"`
- `match.peer.kind`: `"direct"` (особисте повідомлення) або `"group"` (груповий чат)
- `match.peer.kind`: `"direct"` (особисті повідомлення) або `"group"` (груповий чат)
- `match.peer.id`: Open ID користувача (`ou_xxx`) або ID групи (`oc_xxx`)
Поради щодо пошуку дивіться в розділі [Отримання ID групи/користувача](#get-groupuser-ids).
Поради щодо пошуку див. у [Отримання ID групи/користувача](#get-groupuser-ids).
---
@ -379,33 +379,33 @@ Feishu/Lark підтримує ACP для особистих повідомле
Повна конфігурація: [Конфігурація Gateway](/uk/gateway/configuration)
| Setting | Опис | За замовчуванням |
| ------------------------------------------------- | ------------------------------------------- | ---------------- |
| `channels.feishu.enabled` | Увімкнути/вимкнути канал | `true` |
| `channels.feishu.domain` | Домен API (`feishu` або `lark`) | `feishu` |
| `channels.feishu.connectionMode` | Транспорт подій (`websocket` або `webhook`) | `websocket` |
| `channels.feishu.defaultAccount` | Обліковий запис за замовчуванням для вихідної маршрутизації | `default` |
| `channels.feishu.verificationToken` | Потрібно для режиму webhook | — |
| `channels.feishu.encryptKey` | Потрібно для режиму webhook | — |
| `channels.feishu.webhookPath` | Шлях маршруту Webhook | `/feishu/events` |
| `channels.feishu.webhookHost` | Хост прив’язки Webhook | `127.0.0.1` |
| `channels.feishu.webhookPort` | Порт прив’язки Webhook | `3000` |
| `channels.feishu.accounts.<id>.appId` | App ID | — |
| `channels.feishu.accounts.<id>.appSecret` | App Secret | — |
| `channels.feishu.accounts.<id>.domain` | Перевизначення домену для окремого облікового запису | `feishu` |
| `channels.feishu.dmPolicy` | Політика особистих повідомлень | `allowlist` |
| `channels.feishu.allowFrom` | Список дозволених для особистих повідомлень (список `open_id`) | [BotOwnerId] |
| `channels.feishu.groupPolicy` | Політика груп | `allowlist` |
| `channels.feishu.groupAllowFrom` | Список дозволених груп | — |
| `channels.feishu.requireMention` | Вимагати @згадку в групах | `true` |
| `channels.feishu.groups.<chat_id>.requireMention` | Перевизначення @згадки для окремої групи | inherited |
| `channels.feishu.groups.<chat_id>.enabled` | Увімкнути/вимкнути окрему групу | `true` |
| `channels.feishu.textChunkLimit` | Розмір фрагмента повідомлення | `2000` |
| `channels.feishu.mediaMaxMb` | Ліміт розміру медіа | `30` |
| `channels.feishu.streaming` | Виведення потокових карток | `true` |
| `channels.feishu.blockStreaming` | Потокове передавання на рівні блоків | `true` |
| `channels.feishu.typingIndicator` | Надсилати реакції набору тексту | `true` |
| `channels.feishu.resolveSenderNames` | Визначати відображувані імена відправників | `true` |
| Параметр | Опис | Типове значення |
| ------------------------------------------------ | -------------------------------------------- | ---------------- |
| `channels.feishu.enabled` | Увімкнути/вимкнути канал | `true` |
| `channels.feishu.domain` | Домен API (`feishu` або `lark`) | `feishu` |
| `channels.feishu.connectionMode` | Транспорт подій (`websocket` або `webhook`) | `websocket` |
| `channels.feishu.defaultAccount` | Типовий обліковий запис для вихідної маршрутизації | `default` |
| `channels.feishu.verificationToken` | Потрібний для режиму Webhook | — |
| `channels.feishu.encryptKey` | Потрібний для режиму Webhook | — |
| `channels.feishu.webhookPath` | Шлях маршруту Webhook | `/feishu/events` |
| `channels.feishu.webhookHost` | Хост прив’язки Webhook | `127.0.0.1` |
| `channels.feishu.webhookPort` | Порт прив’язки Webhook | `3000` |
| `channels.feishu.accounts.<id>.appId` | App ID | — |
| `channels.feishu.accounts.<id>.appSecret` | App Secret | — |
| `channels.feishu.accounts.<id>.domain` | Перевизначення домену для облікового запису | `feishu` |
| `channels.feishu.dmPolicy` | Політика особистих повідомлень | `allowlist` |
| `channels.feishu.allowFrom` | Список дозволених для особистих повідомлень (`open_id`) | [BotOwnerId] |
| `channels.feishu.groupPolicy` | Політика для груп | `allowlist` |
| `channels.feishu.groupAllowFrom` | Список дозволених груп | — |
| `channels.feishu.requireMention` | Вимагати @згадку в групах | `true` |
| `channels.feishu.groups.<chat_id>.requireMention` | Перевизначення @згадки для окремої групи | inherited |
| `channels.feishu.groups.<chat_id>.enabled` | Увімкнути/вимкнути конкретну групу | `true` |
| `channels.feishu.textChunkLimit` | Розмір фрагмента повідомлення | `2000` |
| `channels.feishu.mediaMaxMb` | Обмеження розміру медіа | `30` |
| `channels.feishu.streaming` | Потоковий вивід у картках | `true` |
| `channels.feishu.blockStreaming` | Потокова передача на рівні блоків | `true` |
| `channels.feishu.typingIndicator` | Надсилати реакції друку | `true` |
| `channels.feishu.resolveSenderNames` | Визначати відображувані імена відправників | `true` |
---
@ -428,21 +428,23 @@ Feishu/Lark підтримує ACP для особистих повідомле
- ✅ Файли
- ✅ Аудіо
- ✅ Відео/медіа
- ✅ Інтерактивні картки (включно з потоковими оновленнями)
- ⚠️ Форматований текст (форматування у стилі post; не підтримує всі можливості створення вмісту Feishu/Lark)
- ✅ Інтерактивні картки (зокрема з потоковими оновленнями)
- ⚠️ Форматований текст (форматування у стилі post; не підтримує всі можливості авторингу Feishu/Lark)
### Гілки та відповіді
- ✅ Вбудовані відповіді
- ✅ Відповіді у гілках
- ✅ Відповіді з медіа залишаються прив’язаними до гілки під час відповіді на повідомлення в гілці
- ✅ Відповіді в гілках
- ✅ Відповіді з медіа зберігають прив’язку до гілки під час відповіді на повідомлення в гілці
Для `groupSessionScope: "group_topic"` і `"group_topic_sender"` власні тематичні групи Feishu/Lark використовують подію `thread_id` (`omt_*`) як канонічний ключ сесії теми. Звичайні відповіді в групі, які OpenClaw перетворює на гілки, і далі використовують ID кореневого повідомлення відповіді (`om_*`), щоб перший хід і наступний хід залишалися в межах однієї сесії.
---
## Пов’язане
- [Огляд каналів](/uk/channels) — усі підтримувані канали
- [Сполучення](/uk/channels/pairing) — автентифікація особистих повідомлень і процес сполучення
- [Групи](/uk/channels/groups) — поведінка групових чатів і обмеження через згадки
- [Сполучення](/uk/channels/pairing) — автентифікація в особистих повідомленнях і процес сполучення
- [Групи](/uk/channels/groups) — поведінка групового чату та вимога згадки
- [Маршрутизація каналів](/uk/channels/channel-routing) — маршрутизація сесій для повідомлень
- [Безпека](/uk/gateway/security) — модель доступу та посилення захисту
- [Безпека](/uk/gateway/security) — модель доступу та зміцнення захисту

View File

@ -1,37 +1,35 @@
---
read_when:
- Підключення Codex, Claude Code або іншого клієнта MCP до каналів на основі OpenClaw
- Підключення Codex, Claude Code або іншого клієнта MCP до каналів на базі OpenClaw
- Запуск `openclaw mcp serve`
- Керування збереженими в OpenClaw визначеннями серверів MCP
summary: Відкривайте доступ до розмов каналів OpenClaw через MCP і керуйте збереженими визначеннями серверів MCP
summary: Відкрийте доступ до розмов каналів OpenClaw через MCP і керуйте збереженими визначеннями серверів MCP
title: MCP
x-i18n:
generated_at: "2026-04-24T03:15:24Z"
generated_at: "2026-04-25T07:01:56Z"
model: gpt-5.4
provider: openai
source_hash: b9df42ebc547f07698f84888d8cd6125340d0f0e02974a965670844589e1fbf8
source_hash: 43505ab290d01a2c3f7dd9ff39b8a074360ba4365b628da71459c6f9a9659dc5
source_path: cli/mcp.md
workflow: 15
---
`openclaw mcp` має два завдання:
`openclaw mcp` має дві задачі:
- запускати OpenClaw як MCP-сервер за допомогою `openclaw mcp serve`
- керувати визначеннями вихідних MCP-серверів, що належать OpenClaw, за допомогою `list`, `show`,
- запускати OpenClaw як сервер MCP за допомогою `openclaw mcp serve`
- керувати визначеннями вихідних серверів MCP, якими володіє OpenClaw, за допомогою `list`, `show`,
`set` і `unset`
Іншими словами:
- `serve` — це OpenClaw, що діє як MCP-сервер
- `list` / `show` / `set` / `unset` — це OpenClaw, що діє як клієнтський
реєстр для інших MCP-серверів, які його середовища виконання можуть
використовувати пізніше
- `serve` — це OpenClaw, що працює як сервер MCP
- `list` / `show` / `set` / `unset` — це OpenClaw, що працює як реєстр на боці клієнта MCP
для інших серверів MCP, які його середовища виконання можуть використати пізніше
Використовуйте [`openclaw acp`](/uk/cli/acp), коли OpenClaw має самостійно
розміщувати сесію середовища кодування та маршрутизувати це середовище
виконання через ACP.
Використовуйте [`openclaw acp`](/uk/cli/acp), коли OpenClaw має сам розміщувати
сеанс coding harness і маршрутизувати це середовище виконання через ACP.
## OpenClaw як MCP-сервер
## OpenClaw як сервер MCP
Це шлях `openclaw mcp serve`.
@ -39,19 +37,19 @@ x-i18n:
Використовуйте `openclaw mcp serve`, коли:
- Codex, Claude Code або інший клієнт MCP має безпосередньо взаємодіяти
з розмовами каналів на основі OpenClaw
- у вас уже є локальний або віддалений Gateway OpenClaw із маршрутизованими сесіями
- вам потрібен один MCP-сервер, який працює через канальні бекенди OpenClaw,
- Codex, Claude Code або інший клієнт MCP має напряму взаємодіяти з
розмовами каналів на базі OpenClaw
- у вас уже є локальний або віддалений Gateway OpenClaw із маршрутизованими сеансами
- вам потрібен один сервер MCP, який працює через серверні частини каналів OpenClaw,
замість запуску окремих мостів для кожного каналу
Натомість використовуйте [`openclaw acp`](/uk/cli/acp), коли OpenClaw має сам
розміщувати середовище виконання кодування та зберігати сесію агента всередині OpenClaw.
Натомість використовуйте [`openclaw acp`](/uk/cli/acp), коли OpenClaw має сам розміщувати
середовище виконання coding і тримати сеанс агента всередині OpenClaw.
## Як це працює
`openclaw mcp serve` запускає stdio MCP-сервер. Клієнт MCP володіє цим
процесом. Поки клієнт тримає stdio-сесію відкритою, міст підключається до
`openclaw mcp serve` запускає сервер MCP через stdio. Клієнт MCP володіє цим
процесом. Поки клієнт тримає сеанс stdio відкритим, міст підключається до
локального або віддаленого Gateway OpenClaw через WebSocket і відкриває
маршрутизовані розмови каналів через MCP.
@ -59,55 +57,55 @@ x-i18n:
1. клієнт MCP запускає `openclaw mcp serve`
2. міст підключається до Gateway
3. маршрутизовані сесії стають MCP-розмовами та інструментами стенограми/історії
3. маршрутизовані сеанси стають розмовами MCP та інструментами transcript/history
4. живі події ставляться в чергу в пам’яті, поки міст підключений
5. якщо ввімкнено режим каналу Claude, та сама сесія також може отримувати
специфічні для Claude push-сповіщення
5. якщо увімкнено режим каналу Claude, той самий сеанс також може отримувати
push-сповіщення, специфічні для Claude
Важлива поведінка:
- стан живої черги починається, коли міст підключається
- старіша історія стенограми читається через `messages_read`
- push-сповіщення Claude існують лише поки жива MCP-сесія
- коли клієнт відключається, міст завершує роботу, і жива черга зникає
- stdio MCP-сервери, запущені OpenClaw (вбудовані або налаштовані користувачем), зупиняються
- старіша історія transcript читається через `messages_read`
- push-сповіщення Claude існують лише поки активний сеанс MCP
- коли клієнт від’єднується, міст завершує роботу, і жива черга зникає
- сервери stdio MCP, запущені OpenClaw (вбудовані або налаштовані користувачем), завершуються
як дерево процесів під час вимкнення, тому дочірні підпроцеси, запущені
сервером, не зберігаються після завершення батьківського stdio-клієнта
- видалення або скидання сесії звільняє MCP-клієнти цієї сесії через
спільний шлях очищення середовища виконання, тому не залишається жодних
завислих stdio-з’єднань, пов’язаних із видаленою сесією
сервером, не виживають після завершення батьківського клієнта stdio
- видалення або скидання сеансу звільняє клієнтів MCP цього сеансу через
спільний шлях очищення середовища виконання, тож не залишається завислих
stdio-з’єднань, прив’язаних до вилученого сеансу
## Вибір режиму клієнта
Використовуйте той самий міст двома різними способами:
Той самий міст можна використовувати двома різними способами:
- Загальні клієнти MCP: лише стандартні інструменти MCP. Використовуйте `conversations_list`,
- Звичайні клієнти MCP: лише стандартні інструменти MCP. Використовуйте `conversations_list`,
`messages_read`, `events_poll`, `events_wait`, `messages_send` та
інструменти схвалення.
інструменти погодження.
- Claude Code: стандартні інструменти MCP плюс адаптер каналу, специфічний для Claude.
Увімкніть `--claude-channel-mode on` або залиште типове значення `auto`.
Увімкніть `--claude-channel-mode on` або залиште значення за замовчуванням `auto`.
Наразі `auto` поводиться так само, як `on`. Виявлення можливостей клієнта
ще не реалізовано.
ще немає.
## Що відкриває `serve`
Міст використовує наявні метадані маршруту сесії Gateway, щоб відкривати
розмови, прив’язані до каналу. Розмова з’являється, коли OpenClaw уже має
стан сесії з відомим маршрутом, таким як:
Міст використовує наявні метадані маршруту сеансу Gateway, щоб відкривати
розмови, прив’язані до каналів. Розмова з’являється, коли OpenClaw уже має стан
сеансу з відомим маршрутом, таким як:
- `channel`
- метадані одержувача або призначення
- метадані отримувача або призначення
- необов’язковий `accountId`
- необов’язковий `threadId`
Це дає клієнтам MCP одну точку, щоб:
Це дає клієнтам MCP єдине місце, де можна:
- перелічувати нещодавні маршрутизовані розмови
- читати нещодавню історію стенограми
- очікувати нові вхідні події
- переглядати список нещодавніх маршрутизованих розмов
- читати недавню історію transcript
- чекати нові вхідні події
- надсилати відповідь назад тим самим маршрутом
- бачити запити на схвалення, які надходять, поки міст підключений
- бачити запити на погодження, які надходять, поки міст підключений
## Використання
@ -118,17 +116,17 @@ openclaw mcp serve
# Віддалений Gateway
openclaw mcp serve --url wss://gateway-host:18789 --token-file ~/.openclaw/gateway.token
# Віддалений Gateway з автентифікацією паролем
# Віддалений Gateway з автентифікацією за паролем
openclaw mcp serve --url wss://gateway-host:18789 --password-file ~/.openclaw/gateway.password
# Увімкнути докладні журнали моста
# Увімкнути докладні журнали мосту
openclaw mcp serve --verbose
# Вимкнути push-сповіщення, специфічні для Claude
openclaw mcp serve --claude-channel-mode off
```
## Інструменти моста
## Інструменти мосту
Поточний міст відкриває такі інструменти MCP:
@ -144,8 +142,8 @@ openclaw mcp serve --claude-channel-mode off
### `conversations_list`
Перелічує нещодавні розмови, прив’язані до сесії, які вже мають метадані
маршруту в стані сесії Gateway.
Показує список нещодавніх розмов, прив’язаних до сеансів, які вже мають
метадані маршруту в стані сеансу Gateway.
Корисні фільтри:
@ -161,43 +159,44 @@ openclaw mcp serve --claude-channel-mode off
### `messages_read`
Читає нещодавні повідомлення стенограми для однієї розмови, прив’язаної до сесії.
Читає недавні повідомлення transcript для однієї розмови, прив’язаної до сеансу.
### `attachments_fetch`
Витягує нетекстові блоки вмісту повідомлення з одного повідомлення стенограми. Це
подання метаданих поверх вмісту стенограми, а не окреме довговічне сховище blob-вкладень.
Витягує нетекстові блоки вмісту повідомлення з одного повідомлення transcript. Це
подання метаданих поверх вмісту transcript, а не окреме стійке сховище
вкладень blob.
### `events_poll`
Читає поставлені в чергу живі події, починаючи з числового курсора.
Читає поставлені в чергу живі події від числового курсора.
### `events_wait`
Виконує long-polling, доки не надійде наступна відповідна поставлена в чергу подія
або не спливе час очікування.
Виконує long-polling, доки не надійде наступна відповідна поставлена в чергу
подія або не спливе час очікування.
Використовуйте це, коли загальному клієнту MCP потрібна доставка, близька до
реального часу, без push-протоколу, специфічного для Claude.
Використовуйте це, коли звичайному клієнту MCP потрібна доставка, близька до
реального часу, без протоколу push, специфічного для Claude.
### `messages_send`
Надсилає текст назад тим самим маршрутом, уже записаним у сесії.
Надсилає текст назад тим самим маршрутом, уже збереженим у сеансі.
Поточна поведінка:
- потребує наявного маршруту розмови
- використовує канал сесії, одержувача, id облікового запису та id треду
- використовує канал сеансу, отримувача, id облікового запису та id треду
- надсилає лише текст
### `permissions_list_open`
Перелічує очікувальні запити на схвалення exec/Plugin, які міст спостерігав
після підключення до Gateway.
Показує список очікуваних запитів на погодження exec/plugin, які міст спостерігав
від моменту підключення до Gateway.
### `permissions_respond`
Вирішує один очікувальний запит на схвалення exec/Plugin за допомогою:
Вирішує один очікуваний запит на погодження exec/plugin за допомогою:
- `allow-once`
- `allow-always`
@ -205,7 +204,7 @@ openclaw mcp serve --claude-channel-mode off
## Модель подій
Міст зберігає чергу подій у пам’яті, поки він підключений.
Міст тримає в пам’яті чергу подій, поки він підключений.
Поточні типи подій:
@ -218,22 +217,22 @@ openclaw mcp serve --claude-channel-mode off
Важливі обмеження:
- черга є лише живою; вона починається, коли запускається міст MCP
- черга лише жива; вона починається, коли запускається міст MCP
- `events_poll` і `events_wait` самі по собі не відтворюють старішу історію Gateway
- довговічне відставання слід читати через `messages_read`
- стійкий backlog слід читати через `messages_read`
## Сповіщення каналу Claude
Міст також може відкривати сповіщення каналу, специфічні для Claude. Це
еквівалент OpenClaw для адаптера каналу Claude Code: стандартні інструменти MCP
залишаються доступними, але живі вхідні повідомлення також можуть надходити як
специфічні для Claude MCP-сповіщення.
специфічні для Claude сповіщення MCP.
Прапорці:
- `--claude-channel-mode off`: лише стандартні інструменти MCP
- `--claude-channel-mode on`: увімкнути сповіщення каналу Claude
- `--claude-channel-mode auto`: поточне типове значення; така сама поведінка моста, як у `on`
- `--claude-channel-mode auto`: поточне значення за замовчуванням; така сама поведінка мосту, як у `on`
Коли режим каналу Claude увімкнено, сервер оголошує експериментальні
можливості Claude і може надсилати:
@ -241,22 +240,22 @@ openclaw mcp serve --claude-channel-mode off
- `notifications/claude/channel`
- `notifications/claude/channel/permission`
Поточна поведінка моста:
Поточна поведінка мосту:
- вхідні повідомлення стенограми `user` пересилаються як
- вхідні повідомлення transcript типу `user` пересилаються як
`notifications/claude/channel`
- запити на дозволи Claude, отримані через MCP, відстежуються в пам’яті
- якщо пов’язана розмова пізніше надсилає `yes abcde` або `no abcde`, міст
- запити на погодження Claude, отримані через MCP, відстежуються в пам’яті
- якщо пізніше пов’язана розмова надішле `yes abcde` або `no abcde`, міст
перетворює це на `notifications/claude/channel/permission`
- ці сповіщення доступні лише в живій сесії; якщо клієнт MCP відключається,
ціль для push більше не існує
- ці сповіщення доступні лише в межах живого сеансу; якщо клієнт MCP
від’єднається, цілі для push більше не буде
Це навмисно специфічно для клієнта. Загальні клієнти MCP мають покладатися на
стандартні інструменти опитування.
Це навмисно орієнтовано на конкретного клієнта. Звичайні клієнти MCP повинні
покладатися на стандартні інструменти опитування.
## Конфігурація клієнта MCP
Приклад конфігурації stdio-клієнта:
Приклад конфігурації клієнта stdio:
```json
{
@ -276,8 +275,8 @@ openclaw mcp serve --claude-channel-mode off
}
```
Для більшості загальних клієнтів MCP починайте зі стандартної поверхні
інструментів і ігноруйте режим Claude. Увімкніть режим Claude лише для
Для більшості звичайних клієнтів MCP починайте зі стандартної поверхні
інструментів та ігноруйте режим Claude. Увімкніть режим Claude лише для
клієнтів, які справді розуміють методи сповіщень, специфічні для Claude.
## Параметри
@ -295,27 +294,26 @@ openclaw mcp serve --claude-channel-mode off
За можливості віддавайте перевагу `--token-file` або `--password-file` замість
вбудованих секретів.
## Безпека та межа довіри
## Межа безпеки й довіри
Міст не вигадує маршрутизацію. Він лише відкриває розмови, які Gateway уже
вміє маршрутизувати.
Це означає:
- списки дозволених відправників, спарювання та довіра на рівні каналу як і раніше
належать базовій конфігурації каналу OpenClaw
- allowlist відправників, pairing і довіра на рівні каналу все ще належать
до базової конфігурації каналу OpenClaw
- `messages_send` може відповідати лише через наявний збережений маршрут
- стан схвалення є лише живим/у пам’яті для поточної сесії моста
- автентифікація моста має використовувати ті самі засоби контролю токена або пароля Gateway,
- стан погодження є лише живим/в пам’яті для поточного сеансу мосту
- автентифікація мосту має використовувати ті самі елементи контролю токена або пароля Gateway,
яким ви б довіряли для будь-якого іншого віддаленого клієнта Gateway
Якщо розмова відсутня в `conversations_list`, типовою причиною є не
конфігурація MCP. Це відсутні або неповні метадані маршруту в базовій
сесії Gateway.
конфігурація MCP. Це відсутні або неповні метадані маршруту в базовому сеансі Gateway.
## Тестування
OpenClaw постачає детермінований Docker smoke-тест для цього моста:
OpenClaw постачається з детермінованим Docker smoke-тестом для цього мосту:
```bash
pnpm test:docker:mcp-channels
@ -323,72 +321,75 @@ pnpm test:docker:mcp-channels
Цей smoke-тест:
- запускає контейнер Gateway із підготовленими даними
- запускає другий контейнер, який запускає `openclaw mcp serve`
- перевіряє виявлення розмов, читання стенограм, читання метаданих вкладень,
- запускає контейнер Gateway із попередньо підготовленими даними
- запускає другий контейнер, який викликає `openclaw mcp serve`
- перевіряє виявлення розмов, читання transcript, читання метаданих вкладень,
поведінку черги живих подій і маршрутизацію вихідних надсилань
- перевіряє сповіщення в стилі Claude для каналу та дозволів через реальний
stdio MCP-міст
- перевіряє сповіщення каналів і погоджень у стилі Claude через реальний
міст stdio MCP
Це найшвидший спосіб довести, що міст працює, без підключення реального
облікового запису Telegram, Discord або iMessage до тестового запуску.
Для ширшого контексту тестування див. [Testing](/uk/help/testing).
Для ширшого контексту тестування дивіться [Testing](/uk/help/testing).
## Усунення несправностей
## Усунення проблем
### Не повертаються розмови
### Не повертаються жодні розмови
Зазвичай це означає, що сесія Gateway ще не придатна для маршрутизації.
Підтвердьте, що базова сесія має збережені метадані маршруту каналу/провайдера,
одержувача та необов’язкового облікового запису/треду.
Зазвичай це означає, що сеанс Gateway ще не придатний для маршрутизації.
Підтвердьте, що базовий сеанс має збережені channel/provider, отримувача та
необов’язкові метадані маршруту account/thread.
### `events_poll` або `events_wait` пропускає старіші повідомлення
Це очікувано. Жива черга починається, коли міст підключається. Читайте старішу
історію стенограми через `messages_read`.
історію transcript через `messages_read`.
### Сповіщення Claude не з’являються
Перевірте все з наведеного:
Перевірте все з цього списку:
- клієнт тримав stdio MCP-сесію відкритою
- клієнт тримав сеанс stdio MCP відкритим
- `--claude-channel-mode` має значення `on` або `auto`
- клієнт справді розуміє методи сповіщень, специфічні для Claude
- вхідне повідомлення сталося після підключення моста
- вхідне повідомлення сталося після підключення мосту
### Відсутні схвалення
### Відсутні погодження
`permissions_list_open` показує лише запити на схвалення, спостережені під час
підключення моста. Це не API довговічної історії схвалень.
`permissions_list_open` показує лише запити на погодження, спостережені, поки
міст був підключений. Це не API стійкої історії погоджень.
## OpenClaw як реєстр MCP-клієнта
## OpenClaw як реєстр клієнтів MCP
Це шлях `openclaw mcp list`, `show`, `set` і `unset`.
Ці команди не відкривають OpenClaw через MCP. Вони керують визначеннями
MCP-серверів, що належать OpenClaw, у `mcp.servers` в конфігурації OpenClaw.
Ці команди не відкривають OpenClaw через MCP. Вони керують визначеннями серверів MCP,
якими володіє OpenClaw, у `mcp.servers` у конфігурації OpenClaw.
Ці збережені визначення призначені для середовищ виконання, які OpenClaw
запускає або налаштовує пізніше, таких як вбудований Pi та інші адаптери
середовища виконання. OpenClaw централізовано зберігає визначення, щоб цим
середовищам виконання не доводилося тримати власні дублікати списків MCP-серверів.
запускає або налаштовує пізніше, наприклад вбудований Pi та інші адаптери
середовища виконання. OpenClaw зберігає визначення централізовано, щоб цим
середовищам не потрібно було підтримувати власні дубльовані списки серверів MCP.
Важлива поведінка:
- ці команди лише читають або записують конфігурацію OpenClaw
- вони не підключаються до цільового MCP-сервера
- вони не підключаються до цільового сервера MCP
- вони не перевіряють, чи команда, URL або віддалений транспорт
доступні прямо зараз
- адаптери середовища виконання вирішують, які форми транспорту вони фактично підтримують
під час виконання
- вбудований Pi відкриває налаштовані MCP-інструменти у звичайних профілях
- адаптери середовища виконання самі вирішують, які форми транспорту вони
фактично підтримують під час виконання
- вбудований Pi відкриває налаштовані інструменти MCP у звичайних профілях
інструментів `coding` і `messaging`; `minimal` усе ще приховує їх, а
`tools.deny: ["bundle-mcp"]` явно вимикає їх
- вбудовані середовища виконання MCP, прив’язані до сеансу, прибираються після
`mcp.sessionIdleTtlMs` мілісекунд простою (типово 10 хвилин; встановіть `0`,
щоб вимкнути), а одноразові вбудовані запуски очищають їх наприкінці виконання
## Збережені визначення MCP-серверів
## Збережені визначення серверів MCP
OpenClaw також зберігає в конфігурації полегшений реєстр MCP-серверів для
OpenClaw також зберігає в конфігурації легковажний реєстр серверів MCP для
поверхонь, яким потрібні визначення MCP, керовані OpenClaw.
Команди:
@ -400,10 +401,10 @@ OpenClaw також зберігає в конфігурації полегше
Примітки:
- `list` сортує назви серверів.
- `show` без назви виводить повний налаштований об’єкт MCP-серверів.
- `set` очікує одне значення об’єкта JSON у командному рядку.
- `unset` завершується з помилкою, якщо іменований сервер не існує.
- `list` сортує імена серверів.
- `show` без імені виводить повний налаштований об’єкт сервера MCP.
- `set` очікує одне значення JSON-об’єкта в командному рядку.
- `unset` завершується помилкою, якщо сервера з вказаним іменем не існує.
Приклади:
@ -433,32 +434,32 @@ openclaw mcp unset context7
}
```
### Транспорт stdio
### Транспорт Stdio
Запускає локальний дочірній процес і взаємодіє через stdin/stdout.
Запускає локальний дочірній процес і спілкується через stdin/stdout.
| Field | Description |
| -------------------------- | --------------------------------- |
| Поле | Опис |
| -------------------------- | ----------------------------------- |
| `command` | Виконуваний файл для запуску (обов’язково) |
| `args` | Масив аргументів командного рядка |
| `env` | Додаткові змінні середовища |
| `cwd` / `workingDirectory` | Робочий каталог для процесу |
| `args` | Масив аргументів командного рядка |
| `env` | Додаткові змінні середовища |
| `cwd` / `workingDirectory` | Робочий каталог для процесу |
#### Фільтр безпеки env для stdio
#### Фільтр безпеки env для Stdio
OpenClaw відхиляє ключі env запуску інтерпретатора, які можуть змінити спосіб запуску stdio MCP-сервера до першого RPC, навіть якщо вони присутні в блоці `env` сервера. Заблоковані ключі включають `NODE_OPTIONS`, `PYTHONSTARTUP`, `PYTHONPATH`, `PERL5OPT`, `RUBYOPT`, `SHELLOPTS`, `PS4` та подібні змінні керування середовищем виконання. Запуск відхиляє їх із помилкою конфігурації, щоб вони не могли впровадити неявну преамбулу, підмінити інтерпретатор або ввімкнути налагоджувач для stdio-процесу. Звичайні облікові дані, проксі та змінні середовища, специфічні для сервера (`GITHUB_TOKEN`, `HTTP_PROXY`, користувацькі `*_API_KEY` тощо), не зачіпаються.
OpenClaw відхиляє ключі env запуску інтерпретатора, які можуть змінити спосіб запуску сервера stdio MCP до першого RPC, навіть якщо вони присутні в блоці `env` сервера. Заблоковані ключі включають `NODE_OPTIONS`, `PYTHONSTARTUP`, `PYTHONPATH`, `PERL5OPT`, `RUBYOPT`, `SHELLOPTS`, `PS4` та подібні змінні керування середовищем виконання. Запуск відхиляє їх з помилкою конфігурації, щоб вони не могли впровадити неявний пролог, підмінити інтерпретатор або ввімкнути налагоджувач для процесу stdio. Звичайні змінні середовища для облікових даних, proxy та специфічні для сервера (`GITHUB_TOKEN`, `HTTP_PROXY`, власні `*_API_KEY` тощо) не зачіпаються.
Якщо вашому MCP-серверу справді потрібна одна із заблокованих змінних, задайте її в процесі хоста Gateway, а не в `env` stdio-сервера.
Якщо вашому серверу MCP справді потрібна одна із заблокованих змінних, задайте її в процесі хоста Gateway, а не в `env` сервера stdio.
### Транспорт SSE / HTTP
Підключається до віддаленого MCP-сервера через HTTP Server-Sent Events.
Підключається до віддаленого сервера MCP через HTTP Server-Sent Events.
| Field | Description |
| Поле | Опис |
| --------------------- | ---------------------------------------------------------------- |
| `url` | URL HTTP або HTTPS віддаленого сервера (обов’язково) |
| `headers` | Необов’язкова карта ключ-значення HTTP-заголовків (наприклад, токени автентифікації) |
| `connectionTimeoutMs` | Тайм-аут підключення для окремого сервера в мс (необов’язково) |
| `headers` | Необов’язкова карта HTTP-заголовків ключ-значення (наприклад, токени автентифікації) |
| `connectionTimeoutMs` | Тайм-аут підключення для сервера в мс (необов’язково) |
Приклад:
@ -477,19 +478,19 @@ OpenClaw відхиляє ключі env запуску інтерпретато
}
```
Чутливі значення в `url` (userinfo) і `headers` маскуються в журналах і
Чутливі значення в `url` (userinfo) і `headers` маскуються в журналах та
виводі стану.
### Транспорт Streamable HTTP
`streamable-http` — це додатковий варіант транспорту поряд із `sse` і `stdio`. Він використовує HTTP-streaming для двостороннього зв’язку з віддаленими MCP-серверами.
`streamable-http` — це додатковий варіант транспорту поряд із `sse` і `stdio`. Він використовує потоковий HTTP для двостороннього зв’язку з віддаленими серверами MCP.
| Field | Description |
| --------------------- | -------------------------------------------------------------------------------------- |
| `url` | URL HTTP або HTTPS віддаленого сервера (обов’язково) |
| Поле | Опис |
| --------------------- | ------------------------------------------------------------------------------------ |
| `url` | URL HTTP або HTTPS віддаленого сервера (обов’язково) |
| `transport` | Встановіть `"streamable-http"`, щоб вибрати цей транспорт; якщо не вказано, OpenClaw використовує `sse` |
| `headers` | Необов’язкова карта ключ-значення HTTP-заголовків (наприклад, токени автентифікації) |
| `connectionTimeoutMs` | Тайм-аут підключення для окремого сервера в мс (необов’язково) |
| `headers` | Необов’язкова карта HTTP-заголовків ключ-значення (наприклад, токени автентифікації) |
| `connectionTimeoutMs` | Тайм-аут підключення для сервера в мс (необов’язково) |
Приклад:
@ -511,23 +512,23 @@ OpenClaw відхиляє ключі env запуску інтерпретато
```
Ці команди керують лише збереженою конфігурацією. Вони не запускають міст
каналу, не відкривають живу сесію MCP-клієнта і не доводять, що цільовий
каналу, не відкривають живий сеанс клієнта MCP і не доводять, що цільовий
сервер доступний.
## Поточні обмеження
Ця сторінка документує міст у тому вигляді, у якому він постачається сьогодні.
Ця сторінка документує міст у тому вигляді, в якому він постачається сьогодні.
Поточні обмеження:
- виявлення розмов залежить від наявних метаданих маршруту сесії Gateway
- виявлення розмов залежить від наявних метаданих маршруту сеансу Gateway
- немає загального push-протоколу, окрім адаптера, специфічного для Claude
- інструментів редагування повідомлень або реакцій поки немає
- поки немає інструментів редагування повідомлень або react
- транспорт HTTP/SSE/streamable-http підключається до одного віддаленого сервера; мультиплексованого upstream поки немає
- `permissions_list_open` включає лише схвалення, спостережені, поки міст
- `permissions_list_open` включає лише погодження, спостережені, поки міст був
підключений
## Пов’язане
- [Довідник CLI](/uk/cli)
- [Plugins](/uk/cli/plugins)
- [Довідка CLI](/uk/cli)
- [Плагіни](/uk/cli/plugins)

View File

@ -1,26 +1,26 @@
---
read_when:
- Ви хочете змінити типові моделі або переглянути стан автентифікації провайдера
- Ви хочете змінити моделі за замовчуванням або переглянути статус автентифікації провайдера
- Ви хочете просканувати доступні моделі/провайдерів і налагодити профілі автентифікації
summary: Довідка CLI для `openclaw models` (status/list/set/scan, псевдоніми, резервні варіанти, автентифікація)
title: Моделі
x-i18n:
generated_at: "2026-04-24T03:15:35Z"
generated_at: "2026-04-25T07:01:56Z"
model: gpt-5.4
provider: openai
source_hash: 08e04342ef240bf7a1f60c4d4e2667d17c9a97e985c1b170db8538c890dc8119
source_hash: 2755657b334b8722da06e31fa1d69a5dced3d74e5aeadd38d625039f15911d69
source_path: cli/models.md
workflow: 15
---
# `openclaw models`
Виявлення моделей, сканування та конфігурація (типова модель, резервні варіанти, профілі автентифікації).
Виявлення моделей, сканування та конфігурація (модель за замовчуванням, резервні варіанти, профілі автентифікації).
Пов’язане:
- Провайдери + моделі: [Моделі](/uk/providers/models)
- Концепції вибору моделі + слеш-команда `/models`: [Концепція моделей](/uk/concepts/models)
- Концепції вибору моделей + слеш-команда `/models`: [Концепція моделей](/uk/concepts/models)
- Налаштування автентифікації провайдера: [Початок роботи](/uk/start/getting-started)
## Поширені команди
@ -32,42 +32,46 @@ openclaw models set <model-or-alias>
openclaw models scan
```
`openclaw models status` показує визначені типові/резервні варіанти, а також огляд автентифікації.
Коли доступні знімки використання провайдера, розділ стану OAuth/API key містить
`openclaw models status` показує визначені модель за замовчуванням/резервні варіанти, а також огляд автентифікації.
Коли доступні знімки використання провайдера, розділ статусу OAuth/API-ключів містить
вікна використання провайдера та знімки квот.
Поточні провайдери з вікнами використання: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
Codex, MiniMax, Xiaomi і z.ai. Дані автентифікації використання надходять із хуків,
специфічних для провайдера, коли вони доступні; інакше OpenClaw повертається до зіставлення облікових даних
OAuth/API key з профілів автентифікації, середовища або конфігурації.
У виводі `--json` `auth.providers` — це огляд провайдерів з урахуванням env/config/store,
тоді як `auth.oauth` — це лише стан профілів сховища автентифікації.
Codex, MiniMax, Xiaomi і z.ai. Автентифікація використання надходить із хуків,
специфічних для провайдера, коли вони доступні; інакше OpenClaw використовує резервний варіант і підбирає OAuth/API-key
облікові дані з профілів автентифікації, змінних середовища або конфігурації.
У виводі `--json` `auth.providers` — це огляд провайдера з урахуванням env/config/store,
тоді як `auth.oauth` — це лише стан профілів у сховищі автентифікації.
Додайте `--probe`, щоб виконати живі перевірки автентифікації для кожного налаштованого профілю провайдера.
Перевірки є реальними запитами (можуть споживати токени та спричиняти обмеження швидкості).
Використовуйте `--agent <id>`, щоб перевірити стан моделі/автентифікації налаштованого агента. Якщо параметр не вказано,
Перевірки є реальними запитами (можуть витрачати токени та спричиняти обмеження швидкості).
Використовуйте `--agent <id>`, щоб перевірити стан моделі/автентифікації налаштованого агента. Якщо цей параметр не вказано,
команда використовує `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`, якщо вони задані, інакше —
налаштованого типового агента.
Рядки перевірки можуть походити з профілів автентифікації, облікових даних середовища або `models.json`.
налаштованого агента за замовчуванням.
Рядки перевірок можуть надходити з профілів автентифікації, облікових даних середовища або `models.json`.
Примітки:
- `models set <model-or-alias>` приймає `provider/model` або псевдонім.
- `models list` є лише для читання: вона читає конфігурацію, профілі автентифікації, наявний стан каталогу
- `models list` є лише для читання: команда читає конфігурацію, профілі автентифікації, наявний стан каталогу
та рядки каталогу, що належать провайдеру, але не перезаписує
`models.json`.
- `models list --all` включає вбудовані статичні рядки каталогу, що належать провайдеру, навіть
якщо ви ще не пройшли автентифікацію в цього провайдера. Такі рядки все одно показуються
якщо ви ще не автентифікувалися в цього провайдера. Такі рядки все одно показуються
як недоступні, доки не буде налаштовано відповідну автентифікацію.
- `models list` зберігає власні метадані моделі та обмеження середовища виконання окремо. У табличному
виводі `Ctx` показує `contextTokens/contextWindow`, коли ефективне обмеження середовища виконання
відрізняється від власного вікна контексту; рядки JSON містять `contextTokens`,
якщо провайдер надає це обмеження.
- `models list --provider <id>` фільтрує за ідентифікатором провайдера, наприклад `moonshot` або
`openai-codex`. Він не приймає відображувані мітки з інтерактивних засобів вибору провайдера,
`openai-codex`. Команда не приймає відображувані мітки з інтерактивних засобів вибору провайдера,
такі як `Moonshot AI`.
- Посилання на моделі розбираються розділенням за **першим** `/`. Якщо ідентифікатор моделі містить `/` (у стилі OpenRouter), додайте префікс провайдера (приклад: `openrouter/moonshotai/kimi-k2`).
- Якщо ви пропускаєте провайдера, OpenClaw спочатку визначає введене значення як псевдонім, потім —
як унікальний збіг налаштованого провайдера для цього точного ідентифікатора моделі, і лише після цього
повертається до налаштованого типового провайдера з попередженням про застарілість.
Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw
повертається до першого налаштованого провайдера/моделі замість показу
застарілого типового значення від видаленого провайдера.
- `models status` може показувати `marker(<value>)` у виводі автентифікації для не секретних заповнювачів (наприклад `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) замість маскування їх як секретів.
- Посилання на моделі розбираються шляхом поділу за **першим** `/`. Якщо ідентифікатор моделі містить `/` (у стилі OpenRouter), додайте префікс провайдера (приклад: `openrouter/moonshotai/kimi-k2`).
- Якщо ви не вказали провайдера, OpenClaw спочатку визначає введення як псевдонім, потім —
як унікальний збіг налаштованого провайдера для цього точного ідентифікатора моделі, і лише потім
використовує резервний варіант — налаштованого провайдера за замовчуванням — із попередженням про застарілість.
Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw
використовує резервний варіант — перший налаштований провайдер/модель — замість показу
застарілого значення за замовчуванням для видаленого провайдера.
- `models status` може показувати `marker(<value>)` у виводі автентифікації для незасекречених заповнювачів (наприклад `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) замість маскування їх як секретів.
### `models status`
@ -84,7 +88,7 @@ OAuth/API key з профілів автентифікації, середови
- `--probe-max-tokens <n>`
- `--agent <id>` (ідентифікатор налаштованого агента; перевизначає `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`)
Категорії стану перевірки:
Групи статусів перевірки:
- `ok`
- `auth`
@ -95,15 +99,15 @@ OAuth/API key з профілів автентифікації, середови
- `unknown`
- `no_model`
Випадки деталей/кодів причин перевірки, на які варто очікувати:
Варіанти detail/reason-code перевірки, яких варто очікувати:
- `excluded_by_auth_order`: збережений профіль існує, але явний
`auth.order.<provider>` його пропустив, тому перевірка повідомляє про виключення замість
спроби його використати.
- `missing_credential`, `invalid_expires`, `expired`, `unresolved_ref`:
профіль присутній, але не підходить/не може бути визначений.
- `no_model`: автентифікація провайдера існує, але OpenClaw не зміг визначити
кандидата моделі для перевірки для цього провайдера.
профіль присутній, але не є придатним/не може бути визначений.
- `no_model`: автентифікація провайдера існує, але OpenClaw не зміг визначити придатний для перевірки
кандидат моделі для цього провайдера.
## Псевдоніми + резервні варіанти
@ -123,9 +127,9 @@ openclaw models auth paste-token
`models auth add` — це інтерактивний помічник автентифікації. Він може запускати потік автентифікації провайдера
(OAuth/API key) або провести вас через ручне вставлення токена, залежно від
вибраного провайдера.
обраного провайдера.
`models auth login` запускає потік автентифікації Plugin провайдера (OAuth/API key). Використовуйте
`models auth login` запускає потік автентифікації плагіна провайдера (OAuth/API key). Використовуйте
`openclaw plugins list`, щоб побачити, які провайдери встановлено.
Приклади:
@ -136,21 +140,21 @@ openclaw models auth login --provider openai-codex --set-default
Примітки:
- `setup-token` і `paste-token` залишаються універсальними командами токенів для провайдерів,
які надають методи автентифікації токеном.
- `setup-token` вимагає інтерактивного TTY і запускає метод автентифікації токеном провайдера
- `setup-token` і `paste-token` залишаються універсальними командами для роботи з токенами для провайдерів,
які надають методи токен-автентифікації.
- `setup-token` вимагає інтерактивного TTY і запускає метод токен-автентифікації провайдера
(типово — метод `setup-token` цього провайдера, якщо він його надає).
- `paste-token` приймає рядок токена, згенерований в іншому місці або автоматизацією.
- `paste-token` вимагає `--provider`, запитує значення токена та записує
його до типового ідентифікатора профілю `<provider>:manual`, якщо ви не передасте
- `paste-token` приймає рядок токена, згенерований деінде або засобами автоматизації.
- `paste-token` вимагає `--provider`, запитує значення токена й записує
його до ідентифікатора профілю за замовчуванням `<provider>:manual`, якщо ви не передали
`--profile-id`.
- `paste-token --expires-in <duration>` зберігає абсолютний строк дії токена на основі
відносної тривалості, наприклад `365d` або `12h`.
- Примітка Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тож OpenClaw вважає повторне використання Claude CLI та використання `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- `setup-token` / `paste-token` для Anthropic залишаються доступними як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI та `claude -p`, коли це доступно.
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає повторне використання Claude CLI та використання `claude -p` санкціонованими для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- `setup-token` / `paste-token` Anthropic залишаються доступними як підтримуваний шлях роботи з токенами в OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI та `claude -p`, коли це можливо.
## Пов’язане
- [Довідка CLI](/uk/cli)
- [Вибір моделі](/uk/concepts/model-providers)
- [Перемикання моделей при відмові](/uk/concepts/model-failover)
- [Відмовостійке перемикання моделей](/uk/concepts/model-failover)

View File

@ -1,78 +1,79 @@
---
read_when:
- Вам потрібен довідник із налаштування моделей для кожного provider окремо
- Вам потрібні приклади конфігурацій або команд початкового налаштування CLI для provider-ів моделей
summary: Огляд provider-ів моделей із прикладами конфігурацій і потоками CLI
title: Provider-и моделей
- Вам потрібен довідник із налаштування моделей для кожного постачальника окремо
- Вам потрібні приклади конфігурацій або команди онбордингу CLI для постачальників моделей
summary: Огляд постачальника моделі з прикладами конфігурацій + потоками CLI
title: Постачальники моделей
x-i18n:
generated_at: "2026-04-25T05:55:45Z"
generated_at: "2026-04-25T07:01:56Z"
model: gpt-5.4
provider: openai
source_hash: bdab460823e3138377a7e2b183b31caa64bb2eef4c9e77ebd8db0aacc97493bb
source_hash: fe2871809711608b3e1d996084b834978b15f21dfeea1ac767dce4c1299be0aa
source_path: concepts/model-providers.md
workflow: 15
---
Довідник для **provider-ів LLM/моделей** (а не каналів чату, як-от WhatsApp/Telegram). Правила вибору моделей див. у [Моделі](/uk/concepts/models).
Довідник для **постачальників LLM/моделей** (а не чат-каналів на кшталт WhatsApp/Telegram). Правила вибору моделей див. у [Models](/uk/concepts/models).
## Швидкі правила
- Посилання на моделі використовують формат `provider/model` (приклад: `opencode/claude-opus-4-6`).
- `agents.defaults.models` працює як allowlist, якщо його задано.
- Helper-и CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
- `agents.defaults.models` працює як список дозволених значень, якщо його задано.
- Допоміжні команди CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
- `models.providers.*.models[].contextWindow` — це нативні метадані моделі; `contextTokens` — це фактичне обмеження під час виконання.
- Правила fallback, cooldown probes і збереження session-override: [Перемикання моделей при збоях](/uk/concepts/model-failover).
- Маршрути родини OpenAI залежать від префікса: `openai/<model>` використовує прямий provider API key OpenAI у PI, `openai-codex/<model>` використовує Codex OAuth у PI, а `openai/<model>` плюс `agents.defaults.embeddedHarness.runtime: "codex"` використовує нативний harness app-server Codex. Див. [OpenAI](/uk/providers/openai) і [Codex harness](/uk/plugins/codex-harness). Якщо поділ між provider і runtime заплутує, спершу прочитайте [Середовища виконання агентів](/uk/concepts/agent-runtimes).
- Автоувімкнення Plugin дотримується тієї самої межі: `openai-codex/<model>` належить Plugin OpenAI, тоді як Plugin Codex вмикається через `embeddedHarness.runtime: "codex"` або застарілі посилання `codex/<model>`.
- Середовища CLI використовують той самий поділ: вибирайте канонічні посилання на моделі, як-от `anthropic/claude-*`, `google/gemini-*` або `openai/gpt-*`, а потім задавайте `agents.defaults.embeddedHarness.runtime` як `claude-cli`, `google-gemini-cli` або `codex-cli`, якщо хочете локальний backend CLI. Застарілі посилання `claude-cli/*`, `google-gemini-cli/*` і `codex-cli/*` мігрують назад до канонічних посилань provider, а runtime записується окремо.
- GPT-5.5 зараз доступна через маршрути subscription/OAuth: `openai-codex/gpt-5.5` у PI або `openai/gpt-5.5` із harness app-server Codex. Прямий маршрут API key для `openai/gpt-5.5` підтримується, щойно OpenAI увімкне GPT-5.5 у публічному API; до того часу для конфігурацій `OPENAI_API_KEY` використовуйте моделі з доступним API, наприклад `openai/gpt-5.4`.
- Правила резервного перемикання, перевірки після cooldown і збереження перевизначень сесії див.: [Model failover](/uk/concepts/model-failover).
- Маршрути сімейства OpenAI залежать від префікса: `openai/<model>` використовує прямого постачальника API-ключа OpenAI у PI, `openai-codex/<model>` використовує OAuth Codex у PI, а `openai/<model>` разом із `agents.defaults.embeddedHarness.runtime: "codex"` використовує нативний app-server harness Codex. Див. [OpenAI](/uk/providers/openai) і [Codex harness](/uk/plugins/codex-harness). Якщо розділення між постачальником і runtime викликає плутанину, спочатку прочитайте [Agent runtimes](/uk/concepts/agent-runtimes).
- Автоматичне ввімкнення Plugin дотримується тієї самої межі: `openai-codex/<model>` належить Plugin OpenAI, тоді як Plugin Codex вмикається через `embeddedHarness.runtime: "codex"` або застарілі посилання `codex/<model>`.
- Runtime CLI використовують те саме розділення: вибирайте канонічні посилання на моделі, як-от `anthropic/claude-*`, `google/gemini-*` або `openai/gpt-*`, а потім задавайте `agents.defaults.embeddedHarness.runtime` як `claude-cli`, `google-gemini-cli` або `codex-cli`, якщо вам потрібен локальний бекенд CLI. Застарілі посилання `claude-cli/*`, `google-gemini-cli/*` і `codex-cli/*` мігрують назад до канонічних посилань постачальників, а runtime записується окремо.
- GPT-5.5 доступна через `openai-codex/gpt-5.5` у PI, нативний app-server harness Codex і публічний API OpenAI, якщо вбудований каталог PI надає `openai/gpt-5.5` для вашої інсталяції.
## Поведінка provider-ів, що належить Plugin
## Поведінка постачальників, якою керують Plugin
Більшість provider-специфічної логіки знаходиться в provider Plugin (`registerProvider(...)`), тоді як OpenClaw зберігає загальний цикл inference. Plugin-и відповідають за onboarding, каталоги моделей, зіставлення auth env-var, нормалізацію transport/config, очищення схем інструментів, класифікацію failover, оновлення OAuth, звітування про використання, профілі thinking/reasoning тощо.
Більшість специфічної для постачальників логіки живе в Plugin постачальників (`registerProvider(...)`), тоді як OpenClaw зберігає загальний цикл inference. Plugin відповідають за онбординг, каталоги моделей, зіставлення env var для автентифікації, нормалізацію транспорту/конфігурації, очищення схем інструментів, класифікацію failover, оновлення OAuth, звітність про використання, профілі thinking/reasoning тощо.
Повний список хуків provider-SDK і прикладів bundled Plugin наведено в [Provider plugins](/uk/plugins/sdk-provider-plugins). Provider, якому потрібен повністю власний виконавець запитів, — це окрема, глибша поверхня розширення.
Повний список хуків SDK постачальників і прикладів вбудованих Plugin наведено в [Provider plugins](/uk/plugins/sdk-provider-plugins). Постачальник, якому потрібен повністю кастомний виконавець запитів, використовує окрему, глибшу поверхню розширення.
<Note>
`capabilities` runtime provider-а — це спільні метадані runner-а (родина provider-а, особливості transcript/tooling, підказки щодо transport/cache). Це не те саме, що [публічна модель capability](/uk/plugins/architecture#public-capability-model), яка описує, що реєструє Plugin (text inference, speech тощо).
`capabilities` runtime постачальника — це спільні метадані виконавця (сімейство постачальника, особливості transcript/tooling, підказки для transport/cache). Це не те саме, що [публічна модель можливостей](/uk/plugins/architecture#public-capability-model), яка описує, що реєструє Plugin (текстовий inference, мовлення тощо).
</Note>
## Ротація API key
## Ротація API-ключів
- Підтримується загальна ротація provider-ів для вибраних provider-ів.
- Підтримується загальна ротація ключів постачальників для вибраних постачальників.
- Налаштуйте кілька ключів через:
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (один live override, найвищий пріоритет)
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (одне live-перевизначення, найвищий пріоритет)
- `<PROVIDER>_API_KEYS` (список через кому або крапку з комою)
- `<PROVIDER>_API_KEY` (основний ключ)
- `<PROVIDER>_API_KEY_*` (нумерований список, наприклад `<PROVIDER>_API_KEY_1`)
- Для provider-ів Google також використовується `GOOGLE_API_KEY` як fallback.
- Для постачальників Google `GOOGLE_API_KEY` також включається як запасний варіант.
- Порядок вибору ключів зберігає пріоритет і прибирає дублікати значень.
- Запити повторюються з наступним ключем лише у відповідях rate-limit (наприклад `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміти використання).
- Збої, не пов’язані з rate-limit, одразу завершуються помилкою; ротація ключів не виконується.
- Коли всі можливі ключі зазнають невдачі, повертається фінальна помилка з останньої спроби.
- Запити повторюються з наступним ключем лише у відповідь на rate-limit помилки (наприклад, `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` або періодичні повідомлення про ліміт використання).
- Помилки, не пов’язані з rate-limit, одразу завершуються невдачею; ротація ключів не виконується.
- Коли всі можливі ключі завершуються невдачею, повертається остання помилка з останньої спроби.
## Вбудовані provider-и (каталог pi-ai)
## Вбудовані постачальники (каталог pi-ai)
OpenClaw постачається з каталогом piai. Для цих provider-ів **не потрібна** конфігурація `models.providers`; достатньо задати auth і вибрати модель.
OpenClaw постачається з каталогом piai. Для цих постачальників **не потрібна**
конфігурація `models.providers`; просто задайте автентифікацію й виберіть модель.
### OpenAI
- Provider: `openai`
- Auth: `OPENAI_API_KEY`
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, а також `OPENCLAW_LIVE_OPENAI_KEY` (один override)
- Приклади моделей: `openai/gpt-5.4`, `openai/gpt-5.4-mini`
- Пряма підтримка GPT-5.5 через API тут буде готова в майбутньому, щойно OpenAI відкриє GPT-5.5 у API
- Перевіряйте доступність прямого API через `openclaw models list --provider openai` перед використанням `openai/gpt-5.5` без runtime app-server Codex
- Постачальник: `openai`
- Автентифікація: `OPENAI_API_KEY`
- Необов’язкова ротація: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, а також `OPENCLAW_LIVE_OPENAI_KEY` (одне перевизначення)
- Приклади моделей: `openai/gpt-5.5`, `openai/gpt-5.4`, `openai/gpt-5.4-mini`
- Підтримка прямого API для GPT-5.5 залежить від версії вбудованого каталогу PI у вашій інсталяції; перед використанням `openai/gpt-5.5` без runtime app-server Codex перевірте через `openclaw models list --provider openai`
- CLI: `openclaw onboard --auth-choice openai-api-key`
- Стандартний transport — `auto` (спочатку WebSocket, fallback на SSE)
- Перевизначення для конкретної моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- Прогрівання OpenAI Responses WebSocket за замовчуванням увімкнене через `params.openaiWsWarmup` (`true`/`false`)
- Типовий transport — `auto` (спочатку WebSocket, потім SSE)
- Перевизначення для окремої моделі через `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- Warm-up OpenAI Responses WebSocket типово ввімкнено через `params.openaiWsWarmup` (`true`/`false`)
- Пріоритетну обробку OpenAI можна ввімкнути через `agents.defaults.models["openai/<model>"].params.serviceTier`
- `/fast` і `params.fastMode` зіставляють прямі запити Responses `openai/*` з `service_tier=priority` на `api.openai.com`
- Використовуйте `params.serviceTier`, якщо вам потрібен явний tier замість спільного перемикача `/fast`
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) застосовуються лише до нативного трафіку OpenAI на `api.openai.com`, а не до загальних OpenAI-сумісних proxy
- Нативні маршрути OpenAI також зберігають `store` Responses, підказки prompt-cache і формування payload для сумісності reasoning OpenAI; proxy-маршрути цього не роблять
- `openai/gpt-5.3-codex-spark` навмисно приховано в OpenClaw, тому що live-запити OpenAI API його відхиляють, а поточний каталог Codex його не надає
- `/fast` і `params.fastMode` зіставляють прямі запити Responses `openai/*` із `service_tier=priority` на `api.openai.com`
- Використовуйте `params.serviceTier`, якщо вам потрібен явний рівень замість спільного перемикача `/fast`
- Приховані заголовки атрибуції OpenClaw (`originator`, `version`,
`User-Agent`) застосовуються лише до нативного трафіку OpenAI на `api.openai.com`, а не до загальних OpenAI-сумісних проксі
- Нативні маршрути OpenAI також зберігають `store` Responses, підказки кешу prompt і формування payload для сумісності reasoning OpenAI; проксі-маршрути — ні
- `openai/gpt-5.3-codex-spark` навмисно приховано в OpenClaw, оскільки live-запити до API OpenAI його відхиляють, а поточний каталог Codex його не показує
```json5
{
@ -82,14 +83,14 @@ OpenClaw постачається з каталогом piai. Для цих p
### Anthropic
- Provider: `anthropic`
- Auth: `ANTHROPIC_API_KEY`
- Необов’язкова ротація: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, а також `OPENCLAW_LIVE_ANTHROPIC_KEY` (один override)
- Постачальник: `anthropic`
- Автентифікація: `ANTHROPIC_API_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 key і OAuth, надісланий до `api.anthropic.com`; OpenClaw зіставляє це з Anthropic `service_tier` (`auto` проти `standard_only`)
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw розглядає повторне використання Claude CLI і `claude -p` як санкціонований варіант для цієї інтеграції, якщо Anthropic не опублікує нову політику.
- Setup-token Anthropic залишається доступним як підтримуваний шлях токена OpenClaw, але тепер OpenClaw віддає перевагу повторному використанню Claude CLI і `claude -p`, коли це можливо.
- Прямі публічні запити Anthropic підтримують спільний перемикач `/fast` і `params.fastMode`, включно з трафіком, автентифікованим через API-ключ і OAuth, який надсилається на `api.anthropic.com`; OpenClaw зіставляє це з Anthropic `service_tier` (`auto` проти `standard_only`)
- Примітка щодо Anthropic: співробітники Anthropic повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволено, тож OpenClaw вважає повторне використання Claude CLI і використання `claude -p` санкціонованими для цієї інтеграції, доки Anthropic не опублікує нову політику.
- Setup-token Anthropic залишається доступним як підтримуваний шлях токена OpenClaw, але тепер OpenClaw надає перевагу повторному використанню Claude CLI і `claude -p`, коли це можливо.
```json5
{
@ -99,22 +100,24 @@ OpenClaw постачається з каталогом piai. Для цих p
### OpenAI Codex OAuth
- Provider: `openai-codex`
- Auth: OAuth (ChatGPT)
- Постачальник: `openai-codex`
- Автентифікація: OAuth (ChatGPT)
- Посилання на модель PI: `openai-codex/gpt-5.5`
- Посилання для нативного harness app-server Codex: `openai/gpt-5.5` із `agents.defaults.embeddedHarness.runtime: "codex"`
- Документація для нативного harness app-server Codex: [Codex harness](/uk/plugins/codex-harness)
- Посилання нативного app-server harness Codex: `openai/gpt-5.5` з `agents.defaults.embeddedHarness.runtime: "codex"`
- Документація нативного app-server harness Codex: [Codex harness](/uk/plugins/codex-harness)
- Застарілі посилання на моделі: `codex/gpt-*`
- Межа Plugin: `openai-codex/*` завантажує Plugin OpenAI; нативний Plugin app-server Codex вибирається лише через runtime Codex harness або застарілі посилання `codex/*`.
- Межа Plugin: `openai-codex/*` завантажує Plugin OpenAI; нативний Plugin app-server Codex вибирається лише runtime Codex harness або застарілими посиланнями `codex/*`.
- CLI: `openclaw onboard --auth-choice openai-codex` або `openclaw models auth login --provider openai-codex`
- Стандартний transport — `auto` (спочатку WebSocket, fallback на SSE)
- Перевизначення для конкретної моделі PI через `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` або `"auto"`)
- Типовий transport — `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-сумісних proxy
- Використовує той самий спільний перемикач `/fast` і конфігурацію `params.fastMode`, що й прямий `openai/*`; OpenClaw зіставляє це з `service_tier=priority`
- `openai-codex/gpt-5.5` зберігає нативні `contextWindow = 1000000` і стандартні runtime `contextTokens = 272000`; перевизначайте обмеження runtime через `models.providers.openai-codex.models[].contextTokens`
- Примітка щодо політики: OpenAI Codex OAuth офіційно підтримується для зовнішніх інструментів/workflow, таких як OpenClaw.
- Поточний доступ до GPT-5.5 використовує цей маршрут OAuth/subscription, доки OpenAI не ввімкне GPT-5.5 у публічному 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 OAuth явно підтримується для зовнішніх інструментів/процесів на кшталт OpenClaw.
- Використовуйте `openai-codex/gpt-5.5`, якщо вам потрібен маршрут Codex OAuth/підписки; використовуйте `openai/gpt-5.5`, якщо ваше налаштування API-ключа і локальний каталог показують маршрут публічного API.
```json5
{
@ -134,17 +137,17 @@ OpenClaw постачається з каталогом piai. Для цих p
}
```
### Інші розміщені варіанти в стилі subscription
### Інші хостовані варіанти в стилі підписки
- [Qwen Cloud](/uk/providers/qwen): поверхня provider-а Qwen Cloud плюс зіставлення endpoint-ів Alibaba DashScope і Coding Plan
- [MiniMax](/uk/providers/minimax): доступ до MiniMax Coding Plan через OAuth або API key
- [GLM models](/uk/providers/glm): endpoint-и Z.AI Coding Plan або загального API
- [Qwen Cloud](/uk/providers/qwen): поверхня постачальника Qwen Cloud, а також зіставлення кінцевих точок Alibaba DashScope і Coding Plan
- [MiniMax](/uk/providers/minimax): OAuth MiniMax Coding Plan або доступ за API-ключем
- [GLM models](/uk/providers/glm): кінцеві точки Z.AI Coding Plan або загального API
### OpenCode
- Auth: `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`)
- Provider runtime Zen: `opencode`
- Provider runtime Go: `opencode-go`
- Автентифікація: `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`)
- Постачальник runtime Zen: `opencode`
- Постачальник runtime 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`
@ -154,68 +157,70 @@ OpenClaw постачається з каталогом piai. Для цих p
}
```
### Google Gemini (API key)
### Google Gemini (API-ключ)
- Provider: `google`
- Auth: `GEMINI_API_KEY`
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (один override)
- Постачальник: `google`
- Автентифікація: `GEMINI_API_KEY`
- Необов’язкова ротація: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, запасний варіант `GOOGLE_API_KEY` і `OPENCLAW_LIVE_GEMINI_KEY` (одне перевизначення)
- Приклади моделей: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
- Сумісність: застаріла конфігурація OpenClaw з `google/gemini-3.1-flash-preview` нормалізується до `google/gemini-3-flash-preview`
- CLI: `openclaw onboard --auth-choice gemini-api-key`
- Thinking: `/think adaptive` використовує динамічне thinking Google. Gemini 3/3.1 не мають фіксованого `thinkingLevel`; Gemini 2.5 надсилає `thinkingBudget: -1`.
- Прямі запуски Gemini також приймають `agents.defaults.models["google/<model>"].params.cachedContent` (або застаріле `cached_content`) для передавання нативного дескриптора provider-а `cachedContents/...`; cache hit-и Gemini відображаються як OpenClaw `cacheRead`
- Thinking: `/think adaptive` використовує динамічний thinking 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`
### Google Vertex і Gemini CLI
- Provider-и: `google-vertex`, `google-gemini-cli`
- Auth: Vertex використовує gcloud ADC; Gemini CLI використовує власний потік OAuth
- Застереження: Gemini CLI OAuth в OpenClaw — неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікового запису Google після використання сторонніх клієнтів. Перегляньте умови Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- Gemini CLI OAuth постачається як частина bundled Plugin `google`.
- Постачальники: `google-vertex`, `google-gemini-cli`
- Автентифікація: Vertex використовує gcloud ADC; Gemini CLI використовує власний OAuth-потік
- Застереження: OAuth Gemini CLI в OpenClaw — це неофіційна інтеграція. Деякі користувачі повідомляли про обмеження облікових записів Google після використання сторонніх клієнтів. Ознайомтеся з умовами Google і використовуйте некритичний обліковий запис, якщо вирішите продовжити.
- OAuth Gemini CLI постачається як частина вбудованого Plugin `google`.
- Спочатку встановіть Gemini CLI:
- `brew install gemini-cli`
- або `npm install -g @google/gemini-cli`
- Увімкніть: `openclaw plugins enable google`
- Увійдіть: `openclaw models auth login --provider google-gemini-cli --set-default`
- Стандартна модель: `google-gemini-cli/gemini-3-flash-preview`
- Примітка: вам **не потрібно** вставляти client id або secret у `openclaw.json`. Потік входу CLI зберігає токени в auth profiles на host Gateway.
- Якщо після входу запити не працюють, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на host Gateway.
- JSON-відповіді Gemini CLI розбираються з `response`; дані про використання беруться з fallback на `stats`, де `stats.cached` нормалізується до OpenClaw `cacheRead`.
- Увімкнення: `openclaw plugins enable google`
- Вхід: `openclaw models auth login --provider google-gemini-cli --set-default`
- Типова модель: `google-gemini-cli/gemini-3-flash-preview`
- Примітка: вам **не потрібно** вставляти client id або secret у `openclaw.json`. Потік входу CLI зберігає токени в профілях автентифікації на хості Gateway.
- Якщо після входу запити завершуються помилкою, задайте `GOOGLE_CLOUD_PROJECT` або `GOOGLE_CLOUD_PROJECT_ID` на хості Gateway.
- JSON-відповіді Gemini CLI розбираються з `response`; використання за замовчуванням береться з `stats`, а `stats.cached` нормалізується до OpenClaw `cacheRead`.
### Z.AI (GLM)
- Provider: `zai`
- Auth: `ZAI_API_KEY`
- Постачальник: `zai`
- Автентифікація: `ZAI_API_KEY`
- Приклад моделі: `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` примусово вибирають конкретну поверхню
- Псевдоніми: `z.ai/*` і `z-ai/*` нормалізуються до `zai/*`
- `zai-api-key` автоматично визначає відповідну кінцеву точку Z.AI; `zai-coding-global`, `zai-coding-cn`, `zai-global` і `zai-cn` примусово вибирають конкретну поверхню
### Vercel AI Gateway
- Provider: `vercel-ai-gateway`
- Auth: `AI_GATEWAY_API_KEY`
- Постачальник: `vercel-ai-gateway`
- Автентифікація: `AI_GATEWAY_API_KEY`
- Приклади моделей: `vercel-ai-gateway/anthropic/claude-opus-4.6`,
`vercel-ai-gateway/moonshotai/kimi-k2.6`
- CLI: `openclaw onboard --auth-choice ai-gateway-api-key`
### Kilo Gateway
- Provider: `kilocode`
- Auth: `KILOCODE_API_KEY`
- Постачальник: `kilocode`
- Автентифікація: `KILOCODE_API_KEY`
- Приклад моделі: `kilocode/kilo/auto`
- CLI: `openclaw onboard --auth-choice kilocode-api-key`
- Base 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,
- Базовий URL: `https://api.kilo.ai/api/gateway/`
- Статичний запасний каталог постачається з `kilocode/kilo/auto`; live-виявлення через
`https://api.kilo.ai/api/gateway/models` може додатково розширити runtime-каталог.
- Точна маршрутизація вгору за потоком для `kilocode/kilo/auto` належить Kilo Gateway,
а не жорстко закодована в OpenClaw.
Деталі налаштування див. у [/providers/kilocode](/uk/providers/kilocode).
Докладні відомості про налаштування див. у [/providers/kilocode](/uk/providers/kilocode).
### Інші bundled provider Plugin
### Інші вбудовані Plugin постачальників
| Provider | Id | Auth env | Приклад моделі |
| Постачальник | Id | Auth env | Приклад моделі |
| ----------------------- | -------------------------------- | ------------------------------------------------------------ | ---------------------------------------------- |
| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` |
| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` |
@ -241,30 +246,31 @@ OpenClaw постачається з каталогом piai. Для цих p
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` |
| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` |
Особливості, які варто знати:
Варто знати такі особливості:
- **OpenRouter** застосовує свої заголовки атрибуції застосунку й маркери Anthropic `cache_control` лише на перевірених маршрутах `openrouter.ai`. Посилання DeepSeek, Moonshot і ZAI придатні для cache-TTL у prompt caching під керуванням OpenRouter, але не отримують маркери кешу Anthropic. Як proxy-стиль OpenAI-сумісного шляху, він пропускає формування, доступне лише для нативного OpenAI (`serviceTier`, `store` у Responses, підказки prompt-cache, сумісність reasoning OpenAI). Посилання на базі Gemini зберігають лише санітизацію thought-signature для proxy-Gemini.
- **Kilo Gateway** для посилань на базі Gemini дотримується того самого шляху санітизації proxy-Gemini; `kilocode/kilo/auto` та інші посилання, що не підтримують proxy reasoning, пропускають ін’єкцію proxy reasoning.
- **MiniMax** onboarding через API key записує явні текстові визначення chat-моделей M2.7; розуміння зображень залишається в media provider `MiniMax-VL-01`, що належить Plugin.
- **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`.
- **Cerebras** моделі GLM використовують `zai-glm-4.7` / `zai-glm-4.6`; OpenAI-сумісний Base URL — `https://api.cerebras.ai/v1`.
- **OpenRouter** застосовує свої заголовки атрибуції застосунку та маркери Anthropic `cache_control` лише на перевірених маршрутах `openrouter.ai`. Посилання DeepSeek, Moonshot і ZAI підтримують TTL кешу для керованого OpenRouter кешування prompt, але не отримують маркери кешу Anthropic. Як проксі-шлях у стилі OpenAI-compatible, він пропускає формування, притаманне лише нативному OpenAI (`serviceTier`, `store` Responses, підказки кешу prompt, сумісність reasoning OpenAI). Посилання на базі Gemini зберігають лише санітизацію сигнатури думок proxy-Gemini.
- **Kilo Gateway** для посилань на базі Gemini дотримується того самого шляху санітизації proxy-Gemini; `kilocode/kilo/auto` та інші посилання, де reasoning через proxy не підтримується, пропускають ін’єкцію reasoning через proxy.
- **MiniMax** онбординг через API-ключ записує явні текстові визначення моделей чату M2.7; розпізнавання зображень залишається на медіа-постачальнику `MiniMax-VL-01`, яким керує Plugin.
- **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`.
- **Cerebras** моделі GLM використовують `zai-glm-4.7` / `zai-glm-4.6`; базовий URL у форматі OpenAI-compatible: `https://api.cerebras.ai/v1`.
## Provider-и через `models.providers` (custom/Base URL)
## Постачальники через `models.providers` (custom/base URL)
Використовуйте `models.providers` (або `models.json`), щоб додавати **custom** provider-и або OpenAI/Anthropicсумісні proxy.
Використовуйте `models.providers` (або `models.json`) для додавання **власних** постачальників або
OpenAI/Anthropiccompatible проксі.
Багато з bundled provider Plugin нижче вже публікують стандартний каталог.
Багато вбудованих нижче Plugin постачальників уже публікують типовий каталог.
Використовуйте явні записи `models.providers.<id>` лише тоді, коли хочете перевизначити
стандартний base URL, headers або список моделей.
типовий base URL, заголовки або список моделей.
### Moonshot AI (Kimi)
Moonshot постачається як bundled provider Plugin. Використовуйте вбудований provider
за замовчуванням і додавайте явний запис `models.providers.moonshot` лише тоді, коли
Moonshot постачається як вбудований Plugin постачальника. Типово використовуйте
вбудованого постачальника, а явний запис `models.providers.moonshot` додавайте лише тоді, коли
потрібно перевизначити base URL або метадані моделі:
- Provider: `moonshot`
- Auth: `MOONSHOT_API_KEY`
- Постачальник: `moonshot`
- Автентифікація: `MOONSHOT_API_KEY`
- Приклад моделі: `moonshot/kimi-k2.6`
- CLI: `openclaw onboard --auth-choice moonshot-api-key` або `openclaw onboard --auth-choice moonshot-api-key-cn`
@ -301,10 +307,10 @@ Id моделей Kimi K2:
### Kimi Coding
Kimi Coding використовує Anthropic-сумісний endpoint Moonshot AI:
Kimi Coding використовує Anthropic-compatible кінцеву точку Moonshot AI:
- Provider: `kimi`
- Auth: `KIMI_API_KEY`
- Постачальник: `kimi`
- Автентифікація: `KIMI_API_KEY`
- Приклад моделі: `kimi/kimi-code`
```json5
@ -316,14 +322,14 @@ Kimi Coding використовує Anthropic-сумісний endpoint Moonsho
}
```
Застарілий `kimi/k2p5` і далі приймається як сумісний id моделі.
Застарілий `kimi/k2p5` і далі приймається як id моделі для сумісності.
### Volcano Engine (Doubao)
Volcano Engine (火山引擎) надає доступ до Doubao та інших моделей у Китаї.
- Provider: `volcengine` (для кодування: `volcengine-plan`)
- Auth: `VOLCANO_ENGINE_API_KEY`
- Постачальник: `volcengine` (coding: `volcengine-plan`)
- Автентифікація: `VOLCANO_ENGINE_API_KEY`
- Приклад моделі: `volcengine-plan/ark-code-latest`
- CLI: `openclaw onboard --auth-choice volcengine-api-key`
@ -335,9 +341,13 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
}
```
Початкове налаштування за замовчуванням використовує поверхню кодування, але загальний каталог `volcengine/*` реєструється одночасно.
Онбординг типово використовує coding-поверхню, але загальний каталог `volcengine/*`
реєструється одночасно.
У вибирачах моделей onboarding/configure для варіанта auth Volcengine пріоритет надається рядкам `volcengine/*` і `volcengine-plan/*`. Якщо ці моделі ще не завантажені, OpenClaw повертається до нефільтрованого каталогу замість показу порожнього вибирача в межах provider-а.
У засобах вибору моделей onboarding/configure для варіанта автентифікації Volcengine пріоритет надається і рядкам
`volcengine/*`, і `volcengine-plan/*`. Якщо ці моделі ще не завантажені,
OpenClaw повертається до нефільтрованого каталогу, замість того щоб показувати порожній
picker з областю постачальника.
Доступні моделі:
@ -347,7 +357,7 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
- `volcengine/glm-4-7-251222` (GLM 4.7)
- `volcengine/deepseek-v3-2-251201` (DeepSeek V3.2 128K)
Моделі кодування (`volcengine-plan`):
Coding-моделі (`volcengine-plan`):
- `volcengine-plan/ark-code-latest`
- `volcengine-plan/doubao-seed-code`
@ -355,12 +365,12 @@ Volcano Engine (火山引擎) надає доступ до Doubao та інши
- `volcengine-plan/kimi-k2-thinking`
- `volcengine-plan/glm-4.7`
### BytePlus (міжнародний)
### BytePlus (International)
BytePlus ARK надає доступ до тих самих моделей, що й Volcano Engine, для міжнародних користувачів.
BytePlus ARK надає міжнародним користувачам доступ до тих самих моделей, що й Volcano Engine.
- Provider: `byteplus` (для кодування: `byteplus-plan`)
- Auth: `BYTEPLUS_API_KEY`
- Постачальник: `byteplus` (coding: `byteplus-plan`)
- Автентифікація: `BYTEPLUS_API_KEY`
- Приклад моделі: `byteplus-plan/ark-code-latest`
- CLI: `openclaw onboard --auth-choice byteplus-api-key`
@ -372,9 +382,13 @@ BytePlus ARK надає доступ до тих самих моделей, що
}
```
Початкове налаштування за замовчуванням використовує поверхню кодування, але загальний каталог `byteplus/*` реєструється одночасно.
Онбординг типово використовує coding-поверхню, але загальний каталог `byteplus/*`
реєструється одночасно.
У вибирачах моделей onboarding/configure для варіанта auth BytePlus пріоритет надається рядкам `byteplus/*` і `byteplus-plan/*`. Якщо ці моделі ще не завантажені, OpenClaw повертається до нефільтрованого каталогу замість показу порожнього вибирача в межах provider-а.
У засобах вибору моделей onboarding/configure для варіанта автентифікації BytePlus пріоритет надається і рядкам
`byteplus/*`, і `byteplus-plan/*`. Якщо ці моделі ще не завантажені,
OpenClaw повертається до нефільтрованого каталогу, замість того щоб показувати порожній
picker з областю постачальника.
Доступні моделі:
@ -382,7 +396,7 @@ BytePlus ARK надає доступ до тих самих моделей, що
- `byteplus/kimi-k2-5-260127` (Kimi K2.5)
- `byteplus/glm-4-7-251222` (GLM 4.7)
Моделі кодування (`byteplus-plan`):
Coding-моделі (`byteplus-plan`):
- `byteplus-plan/ark-code-latest`
- `byteplus-plan/doubao-seed-code`
@ -392,10 +406,10 @@ BytePlus ARK надає доступ до тих самих моделей, що
### Synthetic
Synthetic надає Anthropic-сумісні моделі через provider `synthetic`:
Synthetic надає Anthropic-compatible моделі через постачальника `synthetic`:
- Provider: `synthetic`
- Auth: `SYNTHETIC_API_KEY`
- Постачальник: `synthetic`
- Автентифікація: `SYNTHETIC_API_KEY`
- Приклад моделі: `synthetic/hf:MiniMaxAI/MiniMax-M2.5`
- CLI: `openclaw onboard --auth-choice synthetic-api-key`
@ -420,35 +434,37 @@ Synthetic надає Anthropic-сумісні моделі через provider `
### MiniMax
MiniMax налаштовується через `models.providers`, оскільки використовує custom endpoint-и:
MiniMax налаштовується через `models.providers`, оскільки використовує власні кінцеві точки:
- MiniMax OAuth (Global): `--auth-choice minimax-global-oauth`
- MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth`
- MiniMax API key (Global): `--auth-choice minimax-global-api`
- MiniMax API key (CN): `--auth-choice minimax-cn-api`
- Auth: `MINIMAX_API_KEY` для `minimax`; `MINIMAX_OAUTH_TOKEN` або
- Автентифікація: `MINIMAX_API_KEY` для `minimax`; `MINIMAX_OAUTH_TOKEN` або
`MINIMAX_API_KEY` для `minimax-portal`
Деталі налаштування, варіанти моделей і фрагменти конфігурації див. у [/providers/minimax](/uk/providers/minimax).
Докладні відомості про налаштування, варіанти моделей і фрагменти конфігурації див. у [/providers/minimax](/uk/providers/minimax).
На Anthropic-сумісному streaming-шляху MiniMax OpenClaw за замовчуванням вимикає thinking, якщо ви явно його не задасте, а `/fast on` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
На Anthropic-compatible шляху потокової передачі MiniMax OpenClaw типово вимикає thinking,
якщо ви не задали його явно, а `/fast on` переписує
`MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
Поділ capability, що належить Plugin:
Розділення можливостей, яким керує Plugin:
- Стандартні text/chat залишаються на `minimax/MiniMax-M2.7`
- Типові значення text/chat залишаються на `minimax/MiniMax-M2.7`
- Генерація зображень — це `minimax/image-01` або `minimax-portal/image-01`
- Розуміння зображень — це `MiniMax-VL-01`, що належить Plugin, для обох шляхів auth MiniMax
- Вебпошук залишається на id provider-а `minimax`
- Розпізнавання зображень — це `MiniMax-VL-01`, яким на обох шляхах автентифікації MiniMax керує Plugin
- Вебпошук залишається на id постачальника `minimax`
### LM Studio
LM Studio постачається як bundled provider Plugin, який використовує нативний API:
LM Studio постачається як вбудований Plugin постачальника, який використовує нативний API:
- Provider: `lmstudio`
- Auth: `LM_API_TOKEN`
- Стандартний base URL для inference: `http://localhost:1234/v1`
- Постачальник: `lmstudio`
- Автентифікація: `LM_API_TOKEN`
- Типовий базовий URL inference: `http://localhost:1234/v1`
Потім задайте модель (замініть на один з id, які повертає `http://localhost:1234/api/v1/models`):
Потім задайте модель (замініть на один з id, повернених `http://localhost:1234/api/v1/models`):
```json5
{
@ -458,20 +474,21 @@ LM Studio постачається як bundled provider Plugin, який вик
}
```
OpenClaw використовує нативні `LM Studio` `/api/v1/models` і `/api/v1/models/load` для виявлення й auto-load, а `/v1/chat/completions` — для inference за замовчуванням.
Деталі налаштування й усунення несправностей див. у [/providers/lmstudio](/uk/providers/lmstudio).
OpenClaw використовує нативні `LM Studio` `/api/v1/models` і `/api/v1/models/load`
для виявлення та авто-завантаження, а `/v1/chat/completions` — для inference за замовчуванням.
Відомості про налаштування й усунення несправностей див. у [/providers/lmstudio](/uk/providers/lmstudio).
### Ollama
Ollama постачається як bundled provider Plugin і використовує нативний API Ollama:
Ollama постачається як вбудований Plugin постачальника й використовує нативний API Ollama:
- Provider: `ollama`
- Auth: не потрібна (локальний сервер)
- Постачальник: `ollama`
- Автентифікація: не потрібна (локальний сервер)
- Приклад моделі: `ollama/llama3.3`
- Встановлення: [https://ollama.com/download](https://ollama.com/download)
```bash
# Встановіть Ollama, потім завантажте модель:
# Install Ollama, then pull a model:
ollama pull llama3.3
```
@ -483,27 +500,26 @@ ollama pull llama3.3
}
```
Ollama виявляється локально за адресою `http://127.0.0.1:11434`, коли ви явно вмикаєте це через
`OLLAMA_API_KEY`, а bundled provider Plugin додає Ollama безпосередньо до
`openclaw onboard` і вибирача моделей. Див. [/providers/ollama](/uk/providers/ollama)
для onboarding, cloud/local mode і custom-конфігурації.
Ollama локально виявляється за адресою `http://127.0.0.1:11434`, коли ви явно вмикаєте його через
`OLLAMA_API_KEY`, а вбудований Plugin постачальника додає Ollama безпосередньо до
`openclaw onboard` і picker моделей. Відомості про онбординг, хмарний/локальний режим і власну конфігурацію див. у [/providers/ollama](/uk/providers/ollama).
### vLLM
vLLM постачається як bundled provider Plugin для локальних/self-hosted OpenAI-сумісних
vLLM постачається як вбудований Plugin постачальника для локальних/self-hosted OpenAI-compatible
серверів:
- Provider: `vllm`
- Auth: необов’язкова (залежить від вашого сервера)
- Стандартний base URL: `http://127.0.0.1:8000/v1`
- Постачальник: `vllm`
- Автентифікація: необов’язкова (залежить від вашого сервера)
- Типовий базовий URL: `http://127.0.0.1:8000/v1`
Щоб увімкнути auto-discovery локально (підійде будь-яке значення, якщо ваш сервер не вимагає auth):
Щоб увімкнути авто-виявлення локально (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації):
```bash
export VLLM_API_KEY="vllm-local"
```
Потім задайте модель (замініть на один з id, які повертає `/v1/models`):
Потім задайте модель (замініть на один з id, повернених `/v1/models`):
```json5
{
@ -513,25 +529,25 @@ export VLLM_API_KEY="vllm-local"
}
```
Деталі див. у [/providers/vllm](/uk/providers/vllm).
Відомості див. у [/providers/vllm](/uk/providers/vllm).
### SGLang
SGLang постачається як bundled provider Plugin для швидких self-hosted
OpenAI-сумісних серверів:
SGLang постачається як вбудований Plugin постачальника для швидких self-hosted
OpenAI-compatible серверів:
- Provider: `sglang`
- Auth: необов’язкова (залежить від вашого сервера)
- Стандартний base URL: `http://127.0.0.1:30000/v1`
- Постачальник: `sglang`
- Автентифікація: необов’язкова (залежить від вашого сервера)
- Типовий базовий URL: `http://127.0.0.1:30000/v1`
Щоб увімкнути auto-discovery локально (підійде будь-яке значення, якщо ваш сервер не
вимагає auth):
Щоб увімкнути авто-виявлення локально (підійде будь-яке значення, якщо ваш сервер не
вимагає автентифікації):
```bash
export SGLANG_API_KEY="sglang-local"
```
Потім задайте модель (замініть на один з id, які повертає `/v1/models`):
Потім задайте модель (замініть на один з id, повернених `/v1/models`):
```json5
{
@ -541,11 +557,11 @@ export SGLANG_API_KEY="sglang-local"
}
```
Деталі див. у [/providers/sglang](/uk/providers/sglang).
Відомості див. у [/providers/sglang](/uk/providers/sglang).
### Локальні proxy (LM Studio, vLLM, LiteLLM тощо)
### Локальні проксі (LM Studio, vLLM, LiteLLM тощо)
Приклад (OpenAIсумісний):
Приклад (OpenAIcompatible):
```json5
{
@ -580,21 +596,24 @@ export SGLANG_API_KEY="sglang-local"
Примітки:
- Для custom provider-ів `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` необов’язкові.
Якщо їх не вказано, OpenClaw використовує такі значення за замовчуванням:
- Для custom постачальників `reasoning`, `input`, `cost`, `contextWindow` і `maxTokens` не є обов’язковими.
Якщо їх пропущено, OpenClaw типово використовує:
- `reasoning: false`
- `input: ["text"]`
- `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }`
- `contextWindow: 200000`
- `maxTokens: 8192`
- Рекомендовано: задавайте явні значення, що відповідають обмеженням вашого proxy/моделі.
- Для `api: "openai-completions"` на не нативних endpoint-ах (будь-який непорожній `baseUrl`, чий host не є `api.openai.com`) OpenClaw примусово встановлює `compat.supportsDeveloperRole: false`, щоб уникати помилок provider 400 для непідтримуваних ролей `developer`.
- Маршрути OpenAI-сумісного proxy-стилю також пропускають формування запитів, доступне лише для нативного OpenAI: без `service_tier`, без `store` у Responses, без `store` у Completions, без підказок prompt-cache, без формування payload для сумісності reasoning OpenAI і без прихованих заголовків атрибуції OpenClaw.
- Для OpenAI-сумісних Completions proxy, яким потрібні vendor-специфічні поля,
- Рекомендовано: задавайте явні значення, що відповідають обмеженням вашого проксі/моделі.
- Для `api: "openai-completions"` на ненативних кінцевих точках (будь-який непорожній `baseUrl`, чий хост не є `api.openai.com`) OpenClaw примусово встановлює `compat.supportsDeveloperRole: false`, щоб уникнути помилок постачальника 400 для ролей `developer`, які не підтримуються.
- Маршрути OpenAI-compatible у стилі проксі також пропускають формування запитів, притаманне лише нативному OpenAI:
без `service_tier`, без `store` Responses, без `store` Completions, без
підказок кешу prompt, без формування payload для сумісності reasoning OpenAI і без прихованих
заголовків атрибуції OpenClaw.
- Для проксі Completions у форматі OpenAI-compatible, яким потрібні поля, специфічні для постачальника,
задайте `agents.defaults.models["provider/model"].params.extra_body` (або
`extraBody`), щоб об’єднати додатковий JSON у вихідне тіло запиту.
- Якщо `baseUrl` порожній або не вказаний, OpenClaw зберігає стандартну поведінку OpenAI (яка вказує на `api.openai.com`).
- Для безпеки явне `compat.supportsDeveloperRole: true` однаково перевизначається на не нативних endpoint-ах `openai-completions`.
- Якщо `baseUrl` порожній/не заданий, OpenClaw зберігає типову поведінку OpenAI (яка вказує на `api.openai.com`).
- Для безпеки явний `compat.supportsDeveloperRole: true` усе одно перевизначається на ненативних кінцевих точках `openai-completions`.
## Приклади CLI
@ -604,11 +623,11 @@ openclaw models set opencode/claude-opus-4-6
openclaw models list
```
Див. також: [Конфігурація](/uk/gateway/configuration) для повних прикладів конфігурації.
Див. також: [Configuration](/uk/gateway/configuration) для повних прикладів конфігурації.
## Пов’язане
## Пов’язані матеріали
- [Моделі](/uk/concepts/models) — конфігурація моделей і псевдоніми
- [Model failover](/uk/concepts/model-failover) — ланцюжки fallback і поведінка повторних спроб
- [Довідник із конфігурації](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделей
- [Provider-и](/uk/providers) — окремі інструкції з налаштування для кожного provider-а
- [Models](/uk/concepts/models) — конфігурація моделей і псевдоніми
- [Model failover](/uk/concepts/model-failover) — ланцюжки резервного перемикання й поведінка повторних спроб
- [Configuration reference](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделі
- [Providers](/uk/providers) — посібники з налаштування для кожного постачальника

View File

@ -1,45 +1,45 @@
---
read_when:
- Вам потрібен надійний резервний варіант, коли API-провайдери зазнають збою
- Ви використовуєте Codex CLI або інші локальні AI CLI й хочете використовувати їх повторно
- Ви хочете зрозуміти міст MCP local loopback для доступу CLI-бекенда до інструментів
summary: 'Бекенди CLI: резервний локальний AI CLI з необов’язковим мостом інструментів MCP'
- Вам потрібен надійний резервний варіант, коли API-провайдери не працюють
- Ви використовуєте Codex CLI або інші локальні AI CLI і хочете повторно використовувати їх
- Ви хочете зрозуміти міст local loopback MCP для доступу до інструментів бекенду CLI
summary: 'Бекенди CLI: локальний резервний AI CLI з необов’язковим мостом інструментів MCP'
title: Бекенди CLI
x-i18n:
generated_at: "2026-04-24T18:10:13Z"
generated_at: "2026-04-25T07:01:57Z"
model: gpt-5.4
provider: openai
source_hash: 81d5f41ebaf16d4171379cf446b4c70b167519cd1f647c0701cccda19f0b3419
source_hash: 09e184bb99a6c354738c3d770460bc2f282a31c41d2cbce4c1e021ae828ba27c
source_path: gateway/cli-backends.md
workflow: 15
---
OpenClaw може запускати **локальні AI CLI** як **текстовий резервний варіант**, коли API-провайдери недоступні,
обмежені за rate limit або тимчасово працюють некоректно. Це навмисно консервативний підхід:
OpenClaw може запускати **локальні AI CLI** як **резервний варіант лише для тексту**, коли API-провайдери недоступні,
обмежені за частотою запитів або тимчасово працюють некоректно. Це навмисно консервативний підхід:
- **Інструменти OpenClaw не інжектуються безпосередньо**, але бекенди з `bundleMcp: true`
можуть отримувати інструменти gateway через міст MCP local loopback.
- **Потокове передавання JSONL** для CLI, які це підтримують.
- **Інструменти OpenClaw не впроваджуються безпосередньо**, але бекенди з `bundleMcp: true`
можуть отримувати інструменти gateway через міст loopback MCP.
- **Потокова передача JSONL** для CLI, які її підтримують.
- **Сесії підтримуються** (тому наступні ходи залишаються узгодженими).
- **Зображення можна передавати далі**, якщо CLI приймає шляхи до зображень.
Це задумано як **страхувальна сітка**, а не як основний шлях. Використовуйте це, коли
вам потрібні текстові відповіді в стилі «завжди працює» без залежності від зовнішніх API.
вам потрібні текстові відповіді в режимі «працює завжди» без залежності від зовнішніх API.
Якщо вам потрібне повноцінне середовище harness із керуванням сесіями ACP, фоновими завданнями,
прив’язкою до thread/conversation і постійними зовнішніми сесіями кодування, використовуйте
[ACP Agents](/uk/tools/acp-agents). CLI-бекенди — це не ACP.
прив’язкою до потоку/розмови та постійними зовнішніми сесіями кодування, використовуйте
[ACP Agents](/uk/tools/acp-agents). Бекенди CLI — це не ACP.
## Швидкий старт для початківців
Ви можете використовувати Codex CLI **без жодної конфігурації** (вбудований Plugin OpenAI
Ви можете використовувати Codex CLI **без жодної конфігурації** (вбудований плагін OpenAI
реєструє бекенд за замовчуванням):
```bash
openclaw agent --message "hi" --model codex-cli/gpt-5.5
```
Якщо ваш gateway працює під launchd/systemd і PATH мінімальний, додайте лише
Якщо ваш gateway працює через launchd/systemd і `PATH` мінімальний, додайте лише
шлях до команди:
```json5
@ -56,16 +56,16 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.5
}
```
Ось і все. Жодних ключів, жодної додаткової конфігурації автентифікації не потрібно, окрім самої CLI.
Ось і все. Жодних ключів, жодної додаткової конфігурації автентифікації, окрім самої CLI.
Якщо ви використовуєте вбудований CLI-бекенд як **основний провайдер повідомлень** на
хості gateway, OpenClaw тепер автоматично завантажує відповідний вбудований Plugin, коли ваша конфігурація
явно посилається на цей бекенд у model ref або в
Якщо ви використовуєте вбудований бекенд CLI як **основного провайдера повідомлень** на
хості gateway, OpenClaw тепер автоматично завантажує відповідний вбудований плагін, коли ваша конфігурація
явно посилається на цей бекенд у посиланні на модель або в
`agents.defaults.cliBackends`.
## Використання як резервного варіанту
Додайте CLI-бекенд до списку резервних, щоб він запускався лише тоді, коли основні моделі недоступні:
Додайте бекенд CLI до списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не працюють:
```json5
{
@ -86,20 +86,20 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.5
Примітки:
- Якщо ви використовуєте `agents.defaults.models` (allowlist), ви також маєте включити туди моделі CLI-бекенда.
- Якщо основний провайдер недоступний (автентифікація, rate limits, тайм-аути), OpenClaw
спробує CLI-бекенд наступним.
- Якщо ви використовуєте `agents.defaults.models` (список дозволених), ви також маєте включити туди моделі вашого бекенду CLI.
- Якщо основний провайдер не працює (автентифікація, ліміти частоти, тайм-аути), OpenClaw
спробує далі бекенд CLI.
## Огляд конфігурації
Усі CLI-бекенди розміщуються в:
Усі бекенди CLI знаходяться тут:
```
agents.defaults.cliBackends
```
Кожен запис має ключ у вигляді **provider id** (наприклад, `codex-cli`, `my-cli`).
Provider id стає лівою частиною вашого model ref:
Кожен запис має ключ **ідентифікатора провайдера** (наприклад, `codex-cli`, `my-cli`).
Ідентифікатор провайдера стає лівою частиною посилання на модель:
```
<provider>/<model>
@ -145,41 +145,41 @@ Provider id стає лівою частиною вашого model ref:
## Як це працює
1. **Вибирає бекенд** на основі префікса provider (`codex-cli/...`).
2. **Будує system prompt** з використанням того самого prompt OpenClaw і контексту workspace.
3. **Запускає CLI** з id сесії (якщо підтримується), щоб історія залишалася узгодженою.
Вбудований бекенд `claude-cli` підтримує процес Claude stdio живим для кожної
сесії OpenClaw і надсилає наступні ходи через stdin stream-json.
1. **Вибирає бекенд** на основі префікса провайдера (`codex-cli/...`).
2. **Формує системний prompt** з використанням того самого prompt OpenClaw і контексту робочого простору.
3. **Виконує CLI** з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
Вбудований бекенд `claude-cli` підтримує процес Claude stdio активним для кожної
сесії OpenClaw і надсилає наступні ходи через stream-json stdin.
4. **Розбирає вивід** (JSON або звичайний текст) і повертає фінальний текст.
5. **Зберігає id сесій** для кожного бекенда, щоб наступні ходи повторно використовували ту саму CLI-сесію.
5. **Зберігає ідентифікатори сесій** для кожного бекенду, щоб наступні ходи повторно використовували ту саму сесію CLI.
<Note>
Вбудований бекенд Anthropic `claude-cli` знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw вважає
використання `claude -p` санкціонованим для цієї інтеграції, якщо Anthropic не опублікує
Вбудований Anthropic-бекенд `claude-cli` знову підтримується. Співробітники Anthropic
повідомили нам, що використання Claude CLI у стилі OpenClaw знову дозволене, тому OpenClaw розглядає
використання `claude -p` як санкціоноване для цієї інтеграції, якщо Anthropic не опублікує
нову політику.
</Note>
Вбудований бекенд OpenAI `codex-cli` передає system prompt OpenClaw через
override конфігурації `model_instructions_file` у Codex (`-c
model_instructions_file="..."`). Codex не надає прапорець у стилі Claude
`--append-system-prompt`, тому OpenClaw записує зібраний prompt у тимчасовий
файл для кожної нової сесії Codex CLI.
Вбудований OpenAI-бекенд `codex-cli` передає системний prompt OpenClaw через
перевизначення конфігурації Codex `model_instructions_file` (`-c
model_instructions_file="..."`). Codex не надає прапора у стилі Claude
`--append-system-prompt`, тому OpenClaw записує зібраний prompt у
тимчасовий файл для кожної нової сесії Codex CLI.
Вбудований бекенд Anthropic `claude-cli` отримує знімок Skills OpenClaw
двома способами: компактний каталог Skills OpenClaw у доданому system prompt і
тимчасовий Plugin Claude Code, переданий через `--plugin-dir`. Plugin містить
лише дозволені Skills для цього агента/сесії, тому власний resolver Skills у Claude Code
бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би в prompt.
Перевизначення env/API key для Skills і далі застосовуються OpenClaw до середовища дочірнього процесу під час виконання.
Вбудований Anthropic-бекенд `claude-cli` отримує знімок Skills OpenClaw
двома способами: компактний каталог Skills OpenClaw у доданому системному prompt і
тимчасовий плагін Claude Code, переданий через `--plugin-dir`. Плагін містить
лише ті Skills, які підходять для цього агента/сесії, тому вбудований механізм розв’язання Skills Claude Code
бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би у prompt.
Перевизначення середовища/API-ключів для Skills усе ще застосовуються OpenClaw до середовища дочірнього процесу для цього запуску.
Claude CLI також має власний неінтерактивний режим дозволів. OpenClaw зіставляє його
з наявною policy виконання замість додавання специфічної для Claude конфігурації: коли
ефективно запитана policy виконання — YOLO (`tools.exec.security: "full"` і
з наявною політикою exec замість додавання окремої конфігурації для Claude: коли
ефективно запитана політика exec — YOLO (`tools.exec.security: "full"` і
`tools.exec.ask: "off"`), OpenClaw додає `--permission-mode bypassPermissions`.
Налаштування `agents.list[].tools.exec` для окремого агента мають пріоритет над глобальним `tools.exec` для
цього агента. Щоб примусово встановити інший режим Claude, задайте явні сирі аргументи бекенда,
наприклад `--permission-mode default` або `--permission-mode acceptEdits`, у
цього агента. Щоб примусово використати інший режим Claude, задайте явні сирі аргументи бекенду,
такі як `--permission-mode default` або `--permission-mode acceptEdits`, у
`agents.defaults.cliBackends.claude-cli.args` і відповідних `resumeArgs`.
Перш ніж OpenClaw зможе використовувати вбудований бекенд `claude-cli`, сам Claude Code
@ -192,40 +192,42 @@ openclaw models auth login --provider anthropic --method cli --set-default
```
Використовуйте `agents.defaults.cliBackends.claude-cli.command` лише тоді, коли бінарний файл `claude`
ще не доступний у `PATH`.
вже недоступний у `PATH`.
## Сесії
- Якщо CLI підтримує сесії, задайте `sessionArg` (наприклад, `--session-id`) або
`sessionArgs` (placeholder `{sessionId}`), коли ID потрібно вставити
в кілька прапорців.
- Якщо CLI використовує **підкоманду resume** з іншими прапорцями, задайте
`sessionArgs` (плейсхолдер `{sessionId}`), коли ID потрібно вставити
в кілька прапорів.
- Якщо CLI використовує **підкоманду resume** з іншими прапорами, задайте
`resumeArgs` (замінює `args` під час відновлення) і за потреби `resumeOutput`
(для відновлень не у форматі JSON).
- `sessionMode`:
- `always`: завжди надсилати id сесії (новий UUID, якщо нічого не збережено).
- `existing`: надсилати id сесії лише якщо його було збережено раніше.
- `none`: ніколи не надсилати id сесії.
- `always`: завжди надсилати ідентифікатор сесії (новий UUID, якщо нічого не збережено).
- `existing`: надсилати ідентифікатор сесії лише тоді, коли його було збережено раніше.
- `none`: ніколи не надсилати ідентифікатор сесії.
- `claude-cli` за замовчуванням використовує `liveSession: "claude-stdio"`, `output: "jsonl"`
і `input: "stdin"`, щоб наступні ходи повторно використовували живий процес Claude, поки
він активний. Теплий stdio тепер є варіантом за замовчуванням, зокрема для користувацьких конфігурацій,
у яких не вказані поля транспорту. Якщо Gateway перезапускається або неактивний процес завершується,
OpenClaw відновлюється із збереженого id сесії Claude. Збережені id сесій
перевіряються на наявність доступного для читання transcript проєкту перед
і `input: "stdin"`, щоб наступні ходи повторно використовували активний процес Claude,
поки він активний. Теплий stdio тепер є типовим режимом, зокрема для користувацьких конфігурацій,
у яких поля транспорту не задані. Якщо Gateway перезапускається або неактивний процес
завершується, OpenClaw відновлюється зі збереженого ідентифікатора сесії Claude. Збережені ідентифікатори сесій
перевіряються на наявність доступного для читання наявного транскрипту проєкту перед
відновленням, тому фантомні прив’язки очищаються з `reason=transcript-missing`,
а не тихо запускають нову сесію Claude CLI під `--resume`.
- Збережені CLI-сесії — це безперервність, якою володіє provider. Неявне щоденне
скидання сесії не розриває їх; це роблять `/reset` і явні policy `session.reset`.
а не тихо запускають нову сесію Claude CLI через `--resume`.
- Збережені сесії CLI — це безперервність, що належить провайдеру. Неявне щоденне
скидання їх не обриває; `/reset` і явні політики `session.reset` — обривають.
Примітки щодо серіалізації:
- `serialize: true` зберігає впорядкованість запусків в одній lane.
- Більшість CLI серіалізуються в одній lane provider.
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється вибрана ідентичність автентифікації,
зокрема змінений id auth profile, статичний API key, статичний токен або ідентичність OAuth-облікового запису, якщо CLI її розкриває. Ротація токенів доступу й оновлення OAuth не
розриває збережену CLI-сесію. Якщо CLI не розкриває стабільний id OAuth-облікового запису, OpenClaw дозволяє цій CLI самостійно застосовувати дозволи на resume.
- `serialize: true` зберігає впорядкованість запусків у тій самій lane.
- Більшість CLI серіалізують на одній lane провайдера.
- OpenClaw відмовляється від повторного використання збереженої сесії CLI, коли змінюється вибрана автентифікаційна ідентичність,
зокрема якщо змінюється ID профілю автентифікації, статичний API-ключ, статичний токен
або ідентичність OAuth-акаунта, якщо CLI її надає. Ротація OAuth access і refresh токенів
не обриває збережену сесію CLI. Якщо CLI не надає стабільний ID OAuth-акаунта,
OpenClaw дозволяє цій CLI самій забезпечувати дозволи на відновлення.
## Зображення (передавання далі)
## Зображення (передача наскрізь)
Якщо ваша CLI приймає шляхи до зображень, задайте `imageArg`:
@ -234,28 +236,29 @@ imageArg: "--image",
imageMode: "repeat"
```
OpenClaw записуватиме base64-зображення у тимчасові файли. Якщо задано `imageArg`, ці
шляхи передаються як аргументи CLI. Якщо `imageArg` відсутній, OpenClaw додає
шляхи до файлів у prompt (ін’єкція шляхів), чого достатньо для CLI, які автоматично
OpenClaw записуватиме base64-зображення в тимчасові файли. Якщо задано `imageArg`, ці
шляхи передаються як аргументи CLI. Якщо `imageArg` не задано, OpenClaw додає
шляхи до файлів у prompt (ін’єкція шляху), чого достатньо для CLI, які автоматично
завантажують локальні файли зі звичайних шляхів.
## Входи / виходи
- `output: "json"` (за замовчуванням) намагається розібрати JSON і витягти текст + id сесії.
- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з `response`, а
використання — з `stats`, коли `usage` відсутній або порожній.
- `output: "jsonl"` розбирає потоки JSONL (наприклад, Codex CLI `--json`) і витягує фінальне повідомлення агента плюс ідентифікатори сесії, якщо вони присутні.
- `output: "json"` (типово) намагається розібрати JSON і витягти текст + ідентифікатор сесії.
- Для JSON-виводу Gemini CLI OpenClaw зчитує текст відповіді з `response`, а
використання — зі `stats`, коли `usage` відсутній або порожній.
- `output: "jsonl"` розбирає потоки JSONL (наприклад Codex CLI `--json`) і витягує фінальне повідомлення агента разом з ідентифікаторами сесії,
якщо вони присутні.
- `output: "text"` розглядає stdout як фінальну відповідь.
Режими введення:
- `input: "arg"` (за замовчуванням) передає prompt як останній аргумент CLI.
- `input: "arg"` (типово) передає prompt як останній аргумент CLI.
- `input: "stdin"` надсилає prompt через stdin.
- Якщо prompt дуже довгий і задано `maxPromptArgChars`, використовується stdin.
## Значення за замовчуванням (керуються Plugin)
## Значення за замовчуванням (належать плагіну)
Вбудований Plugin OpenAI також реєструє значення за замовчуванням для `codex-cli`:
Вбудований плагін OpenAI також реєструє значення за замовчуванням для `codex-cli`:
- `command: "codex"`
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
@ -266,7 +269,7 @@ OpenClaw записуватиме base64-зображення у тимчасо
- `imageArg: "--image"`
- `sessionMode: "existing"`
Вбудований Plugin Google також реєструє значення за замовчуванням для `google-gemini-cli`:
Вбудований плагін Google також реєструє значення за замовчуванням для `google-gemini-cli`:
- `command: "gemini"`
- `args: ["--output-format", "json", "--prompt", "{prompt}"]`
@ -281,28 +284,28 @@ OpenClaw записуватиме base64-зображення у тимчасо
`gemini` у `PATH` (`brew install gemini-cli` або
`npm install -g @google/gemini-cli`).
Примітки щодо JSON Gemini CLI:
Примітки щодо Gemini CLI JSON:
- Текст відповіді читається з поля JSON `response`.
- Використання бере резервне значення з `stats`, коли `usage` відсутній або порожній.
- `stats.cached` нормалізується в `cacheRead` OpenClaw.
- Якщо `stats.input` відсутній, OpenClaw виводить кількість вхідних токенів із
- Текст відповіді зчитується з поля JSON `response`.
- Використання береться зі `stats`, якщо `usage` відсутній або порожній.
- `stats.cached` нормалізується до OpenClaw `cacheRead`.
- Якщо `stats.input` відсутній, OpenClaw виводить вхідні токени з
`stats.input_tokens - stats.cached`.
Перевизначайте лише за потреби (типовий випадок: абсолютний шлях `command`).
Перевизначайте лише за потреби (поширений випадок: абсолютний шлях `command`).
## Значення за замовчуванням, керовані Plugin
## Значення за замовчуванням, що належать плагіну
Значення за замовчуванням для CLI-бекендів тепер є частиною поверхні Plugin:
Значення за замовчуванням для бекендів CLI тепер є частиною поверхні плагіна:
- Plugins реєструють їх через `api.registerCliBackend(...)`.
- `id` бекенда стає префіксом provider у model refs.
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` усе ще перевизначає значення Plugin за замовчуванням.
- Очищення конфігурації, специфічне для бекенда, залишається під контролем Plugin через необов’язковий
hook `normalizeConfig`.
- Плагіни реєструють їх через `api.registerCliBackend(...)`.
- `id` бекенду стає префіксом провайдера в посиланнях на моделі.
- Користувацька конфігурація в `agents.defaults.cliBackends.<id>` як і раніше перевизначає значення плагіна за замовчуванням.
- Очищення конфігурації, специфічне для бекенду, залишається у власності плагіна через необов’язковий
хук `normalizeConfig`.
Plugins, яким потрібні невеликі шими сумісності для prompt/повідомлень, можуть оголошувати
двонапрямні текстові перетворення без заміни provider або CLI-бекенда:
Плагіни, яким потрібні невеликі шими сумісності prompt/повідомлень, можуть оголосити
двонапрямні текстові перетворення без заміни провайдера або бекенду CLI:
```typescript
api.registerTextTransforms({
@ -319,59 +322,65 @@ api.registerTextTransforms({
});
```
`input` переписує system prompt і prompt користувача, передані до CLI. `output`
`input` переписує системний prompt і користувацький prompt, передані до CLI. `output`
переписує потокові дельти помічника й розібраний фінальний текст до того, як OpenClaw обробить
власні control markers і доставку каналом.
власні керувальні маркери та доставку в channel.
Для CLI, які виводять JSONL, сумісний зі stream-json Claude Code, задайте
`jsonlDialect: "claude-stream-json"` у конфігурації цього бекенда.
Для CLI, які видають JSONL, сумісний із Claude Code stream-json, задайте
`jsonlDialect: "claude-stream-json"` у конфігурації цього бекенду.
## Оверлеї MCP для bundle
## Bundle MCP overlays
CLI-бекенди **не** отримують виклики інструментів OpenClaw безпосередньо, але бекенд може
ввімкнути генерацію оверлею конфігурації MCP за допомогою `bundleMcp: true`.
Бекенди CLI **не** отримують виклики інструментів OpenClaw безпосередньо, але бекенд може
увімкнути згенерований оверлей конфігурації MCP через `bundleMcp: true`.
Поточна вбудована поведінка:
- `claude-cli`: згенерований суворий файл конфігурації MCP
- `codex-cli`: inline override конфігурації для `mcp_servers`; згенерований
loopback-сервер OpenClaw позначається режимом схвалення інструментів для окремого сервера в Codex,
щоб виклики MCP не зависали через локальні запити на схвалення
- `claude-cli`: згенерований строгий файл конфігурації MCP
- `codex-cli`: вбудовані перевизначення конфігурації для `mcp_servers`; згенерований
loopback-сервер OpenClaw позначається режимом погодження інструментів на рівні сервера Codex,
щоб виклики MCP не зависали на локальних запитах підтвердження
- `google-gemini-cli`: згенерований файл системних налаштувань Gemini
Коли bundle MCP увімкнено, OpenClaw:
- запускає loopback HTTP MCP-сервер, який надає інструменти gateway процесу CLI
- автентифікує міст за допомогою токена для кожної сесії (`OPENCLAW_MCP_TOKEN`)
- обмежує доступ до інструментів поточною сесією, обліковим записом і контекстом каналу
- завантажує увімкнені сервери bundle-MCP для поточного workspace
- об’єднує їх із будь-якою наявною формою конфігурації/налаштувань MCP бекенда
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду, із відповідного extension
- автентифікує міст токеном на рівні сесії (`OPENCLAW_MCP_TOKEN`)
- обмежує доступ до інструментів поточною сесією, акаунтом і контекстом channel
- завантажує увімкнені bundle-MCP сервери для поточного робочого простору
- об’єднує їх із будь-якою наявною формою конфігурації/налаштувань MCP бекенду
- переписує конфігурацію запуску з використанням режиму інтеграції, що належить бекенду з відповідного extension
Якщо жоден MCP-сервер не увімкнено, OpenClaw все одно інжектує сувору конфігурацію, коли
бекенд використовує bundle MCP, щоб фонові запуски залишалися ізольованими.
Якщо жоден MCP-сервер не увімкнено, OpenClaw все одно впроваджує строгу конфігурацію, коли
бекенд увімкнув bundle MCP, щоб фонові запуски залишалися ізольованими.
Вбудовані MCP-рантайми з областю дії сесії кешуються для повторного використання в межах сесії, а потім
очищаються після `mcp.sessionIdleTtlMs` мілісекунд простою (типово 10
хвилин; встановіть `0`, щоб вимкнути). Одноразові вбудовані запуски, як-от перевірки auth,
генерація slug і очищення запитів recall Active Memory, виконують очищення наприкінці запуску, щоб дочірні
stdio-процеси й потоки Streamable HTTP/SSE не жили довше за сам запуск.
## Обмеження
- **Без прямих викликів інструментів OpenClaw.** OpenClaw не інжектує виклики інструментів у
протокол CLI-бекенда. Бекенди бачать інструменти gateway лише тоді, коли використовують
- **Без прямих викликів інструментів OpenClaw.** OpenClaw не впроваджує виклики інструментів у
протокол бекенду CLI. Бекенди бачать інструменти gateway лише тоді, коли вони увімкнули
`bundleMcp: true`.
- **Streaming залежить від бекенда.** Деякі бекенди передають JSONL потоком; інші буферизують
- **Потокова передача залежить від бекенду.** Деякі бекенди передають JSONL потоком; інші буферизують
до завершення.
- **Структуровані виходи** залежать від JSON-формату CLI.
- **Сесії Codex CLI** відновлюються через текстовий вивід (без JSONL), що менш
структуровано, ніж початковий запуск `--json`. Сесії OpenClaw і далі працюють
структуровано, ніж початковий запуск `--json`. Сесії OpenClaw при цьому все одно працюють
нормально.
## Усунення несправностей
## Усунення проблем
- **CLI не знайдено**: задайте `command` як повний шлях.
- **Неправильна назва моделі**: використовуйте `modelAliases`, щоб зіставити `provider/model` → модель CLI.
- **Немає безперервності сесії**: переконайтеся, що задано `sessionArg` і що `sessionMode` не є
- **Немає безперервності сесії**: переконайтеся, що задано `sessionArg`, а `sessionMode` не дорівнює
`none` (Codex CLI наразі не може відновлюватися з JSON-виводом).
- **Зображення ігноруються**: задайте `imageArg` (і переконайтеся, що CLI підтримує шляхи до файлів).
- **Зображення ігноруються**: задайте `imageArg` (і перевірте, що CLI підтримує шляхи до файлів).
## Пов’язане
## Пов’язані матеріали
- [Gateway runbook](/uk/gateway)
- [Local models](/uk/gateway/local-models)
- [Runbook Gateway](/uk/gateway)
- [Локальні моделі](/uk/gateway/local-models)

View File

@ -1,20 +1,20 @@
---
read_when:
- Налаштування політики, списків дозволеного або експериментальних можливостей для `tools.*`
- Реєстрація користувацьких провайдерів або перевизначення базових URL-адрес
- Налаштування політики, списків дозволених елементів або експериментальних функцій `tools.*`
- Реєстрація власних провайдерів або перевизначення base URL
- Налаштування самостійно розміщених кінцевих точок, сумісних з OpenAI
summary: Конфігурація інструментів (політика, експериментальні перемикачі, інструменти на основі провайдерів) і налаштування користувацького провайдера/base-URL
title: Конфігурація — інструменти та користувацькі провайдери
summary: Конфігурація інструментів (політика, експериментальні перемикачі, інструменти з підтримкою провайдера) і налаштування власного провайдера/base-URL
title: Конфігурація — інструменти та власні провайдери
x-i18n:
generated_at: "2026-04-25T00:30:50Z"
generated_at: "2026-04-25T07:01:57Z"
model: gpt-5.4
provider: openai
source_hash: a3a9ab07a5536196f3ba6c64111eb97206c3b4ff12e497564fe09684193e5c8a
source_hash: d63b080550a6c95d714d3bb42c2b079368040aa09378d88c2e498ccd5ec113c1
source_path: gateway/config-tools.md
workflow: 15
---
Ключі конфігурації `tools.*` і налаштування користувацького провайдера / base-URL. Для агентів,
Ключі конфігурації `tools.*` і налаштування власного провайдера / base URL. Для агентів,
каналів та інших ключів конфігурації верхнього рівня див.
[Довідник із конфігурації](/uk/gateway/configuration-reference).
@ -22,7 +22,7 @@ x-i18n:
### Профілі інструментів
`tools.profile` задає базовий список дозволеного перед `tools.allow`/`tools.deny`:
`tools.profile` задає базовий список дозволених елементів перед `tools.allow`/`tools.deny`:
Локальне онбординг-налаштування за замовчуванням встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явно вказані профілі зберігаються).
@ -35,24 +35,24 @@ x-i18n:
### Групи інструментів
| Група | Інструменти |
| ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
| Група | Інструменти |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` |
| `group:memory` | `memory_search`, `memory_get` |
| `group:web` | `web_search`, `x_search`, `web_fetch` |
| `group:ui` | `browser`, `canvas` |
| `group:automation` | `cron`, `gateway` |
| `group:messaging` | `message` |
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
| `group:openclaw` | Усі вбудовані інструменти (не включає плагіни провайдерів) |
| `group:memory` | `memory_search`, `memory_get` |
| `group:web` | `web_search`, `x_search`, `web_fetch` |
| `group:ui` | `browser`, `canvas` |
| `group:automation` | `cron`, `gateway` |
| `group:messaging` | `message` |
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
| `group:openclaw` | Усі вбудовані інструменти (за винятком плагінів провайдерів) |
### `tools.allow` / `tools.deny`
Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Без урахування регістру, підтримує шаблони `*`. Застосовується навіть коли пісочницю Docker вимкнено.
Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Без урахування регістру, підтримує шаблони `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
```json5
{
@ -78,7 +78,7 @@ x-i18n:
### `tools.elevated`
Керує розширеним доступом `exec` поза пісочницею:
Керує розширеним доступом `exec` поза sandbox:
```json5
{
@ -96,7 +96,7 @@ x-i18n:
- Перевизначення на рівні агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
- `/elevated on|off|ask|full` зберігає стан для кожної сесії; вбудовані директиви застосовуються до одного повідомлення.
- Розширений `exec` обходить пісочницю та використовує налаштований шлях виходу (`gateway` за замовчуванням або `node`, коли ціль `exec``node`).
- Розширений `exec` обходить sandbox і використовує налаштований шлях виходу (`gateway` за замовчуванням або `node`, якщо ціль `exec``node`).
### `tools.exec`
@ -120,8 +120,8 @@ x-i18n:
### `tools.loopDetection`
Перевірки безпеки на цикли інструментів **вимкнені за замовчуванням**. Установіть `enabled: true`, щоб увімкнути виявлення.
Параметри можна задати глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`.
Перевірки безпеки циклів інструментів **вимкнені за замовчуванням**. Установіть `enabled: true`, щоб увімкнути виявлення.
Параметри можна визначити глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`.
```json5
{
@ -166,7 +166,7 @@ x-i18n:
},
fetch: {
enabled: true,
provider: "firecrawl", // необов’язково; пропустіть для автовизначення
provider: "firecrawl", // необов’язково; не вказуйте для автовизначення
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@ -191,7 +191,7 @@ x-i18n:
media: {
concurrency: 2,
asyncCompletion: {
directSend: false, // опціонально: надсилати завершені асинхронні музичні/відео результати безпосередньо в канал
directSend: false, // опціонально: надсилати завершену асинхронну музику/відео безпосередньо в канал
},
audio: {
enabled: true,
@ -217,7 +217,7 @@ x-i18n:
<Accordion title="Поля запису моделі медіа">
**Запис провайдера** (`type: "provider"` або пропущено):
**Запис провайдера** (`type: "provider"` або не вказано):
- `provider`: ідентифікатор API-провайдера (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
- `model`: перевизначення ідентифікатора моделі
@ -226,21 +226,21 @@ x-i18n:
**CLI-запис** (`type: "cli"`):
- `command`: виконуваний файл для запуску
- `args`: шаблонізовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо)
- `args`: параметризовані аргументи (підтримуються `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо)
**Спільні поля:**
**Загальні поля:**
- `capabilities`: необов’язковий список (`image`, `audio`, `video`). Значення за замовчуванням: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису.
- У разі помилки використовується наступний запис.
- У разі помилки виконується перехід до наступного запису.
Автентифікація провайдера виконується у стандартному порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
Автентифікація провайдера відбувається у стандартному порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
**Поля асинхронного завершення:**
- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate`
і `video_generate` спочатку намагаються доставити результат безпосередньо в канал. За замовчуванням: `false`
(застарілий шлях пробудження сесії запитувача/доставки моделлю).
- `asyncCompletion.directSend`: якщо `true`, завершені асинхронні завдання `music_generate`
і `video_generate` спочатку намагаються доставлятися безпосередньо в канал. Значення за замовчуванням: `false`
(застарілий шлях пробудження сесії запитувача/доставки через модель).
</Accordion>
@ -259,9 +259,9 @@ x-i18n:
### `tools.sessions`
Керує тим, які сесії можуть бути ціллю для інструментів сесій (`sessions_list`, `sessions_history`, `sessions_send`).
Керує тим, на які сесії можуть бути націлені інструменти сесій (`sessions_list`, `sessions_history`, `sessions_send`).
За замовчуванням: `tree` (поточна сесія + сесії, породжені нею, наприклад субагенти).
Значення за замовчуванням: `tree` (поточна сесія + сесії, породжені нею, наприклад субагенти).
```json5
{
@ -279,8 +279,8 @@ x-i18n:
- `self`: лише ключ поточної сесії.
- `tree`: поточна сесія + сесії, породжені поточною сесією (субагенти).
- `agent`: будь-яка сесія, що належить поточному ідентифікатору агента (може включати інших користувачів, якщо ви запускаєте сесії для кожного відправника під тим самим ідентифікатором агента).
- `all`: будь-яка сесія. Націлювання між агентами все одно вимагає `tools.agentToAgent`.
- Обмеження пісочниці: коли поточна сесія працює в пісочниці і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
- `all`: будь-яка сесія. Націлення між агентами все одно потребує `tools.agentToAgent`.
- Обмеження sandbox: якщо поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
@ -291,10 +291,10 @@ x-i18n:
tools: {
sessions_spawn: {
attachments: {
enabled: false, // опціонально: установіть true, щоб дозволити вбудовані файлові вкладення
maxTotalBytes: 5242880, // загалом 5 МБ для всіх файлів
enabled: false, // опціонально: встановіть true, щоб дозволити вбудовані файлові вкладення
maxTotalBytes: 5242880, // 5 MB сумарно для всіх файлів
maxFiles: 50,
maxFileBytes: 1048576, // 1 МБ на файл
maxFileBytes: 1048576, // 1 MB на файл
retainOnSessionKeep: false, // зберігати вкладення, коли cleanup="keep"
},
},
@ -306,16 +306,16 @@ x-i18n:
- Вкладення підтримуються лише для `runtime: "subagent"`. Середовище ACP їх відхиляє.
- Файли матеріалізуються в робочому просторі дочірньої сесії в `.openclaw/attachments/<uuid>/` разом із `.manifest.json`.
- Вміст вкладень автоматично редагується під час збереження транскрипту.
- Входи base64 перевіряються суворою перевіркою алфавіту/доповнення та захистом розміру до декодування.
- Вміст вкладень автоматично редагується в збереженні транскриптів.
- Входи Base64 перевіряються суворою перевіркою алфавіту/доповнення та захистом розміру до декодування.
- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
- Очищення виконується згідно з політикою `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
- Очищення виконується відповідно до політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
<a id="toolsexperimental"></a>
### `tools.experimental`
Прапорці експериментальних вбудованих інструментів. За замовчуванням вимкнено, якщо не застосовується правило автоувімкнення strict-agentic GPT-5.
Експериментальні прапорці вбудованих інструментів. За замовчуванням вимкнено, якщо не застосовується правило автоувімкнення strict-agentic GPT-5.
```json5
{
@ -330,8 +330,8 @@ x-i18n:
Примітки:
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
- За замовчуванням: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
- Коли інструмент увімкнено, системний промпт також додає вказівки з використання, щоб модель застосовувала його лише для суттєвої роботи та підтримувала не більше одного кроку `in_progress`.
- Значення за замовчуванням: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
- Коли інструмент увімкнено, системний промпт також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й підтримувала не більш ніж один крок у стані `in_progress`.
### `agents.defaults.subagents`
@ -352,15 +352,15 @@ x-i18n:
```
- `model`: модель за замовчуванням для породжених субагентів. Якщо не вказано, субагенти успадковують модель викликача.
- `allowAgents`: список дозволених ідентифікаторів цільових агентів за замовчуванням для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
- `runTimeoutSeconds`: тайм-аут за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
- Політика інструментів для кожного субагента: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
- `allowAgents`: список дозволених цільових ідентифікаторів агентів за замовчуванням для `sessions_spawn`, якщо агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
- `runTimeoutSeconds`: тайм-аут за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає без тайм-ауту.
- Політика інструментів для субагентів: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
## Користувацькі провайдери та base URL
## Власні провайдери та base URL
OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents/<agentId>/agent/models.json`.
OpenClaw використовує вбудований каталог моделей. Додавайте власних провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents/<agentId>/agent/models.json`.
```json5
{
@ -389,49 +389,49 @@ OpenClaw використовує вбудований каталог модел
}
```
- Використовуйте `authHeader: true` + `headers` для нестандартних потреб автентифікації.
- Використовуйте `authHeader: true` + `headers` для власних потреб автентифікації.
- Перевизначайте кореневий каталог конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища).
- Пріоритет злиття для однакових ідентифікаторів провайдерів:
- Пріоритет злиття для провайдерів із однаковими ідентифікаторами:
- Непорожні значення `baseUrl` з агентського `models.json` мають пріоритет.
- Непорожні значення `apiKey` з агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті конфігурації/профілю автентифікації.
- Значення `apiKey` для провайдерів, керованих SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань file/exec) замість збереження розкритих секретів.
- Значення заголовків провайдера, керованих SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань file/exec).
- Порожні або відсутні `apiKey`/`baseUrl` в агенті беруться з `models.providers` у конфігурації.
- Для однакових моделей `contextWindow`/`maxTokens` використовують вище значення між явною конфігурацією та неявними значеннями каталогу.
- Для однакових моделей `contextTokens` зберігає явне обмеження середовища виконання, якщо воно задане; використовуйте це, щоб обмежити ефективний контекст без зміни власних метаданих моделі.
- Значення `apiKey` для провайдера, яким керує SecretRef, оновлюються з вихідних маркерів (`ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань на файл/exec) замість збереження розкритих секретів.
- Значення заголовків провайдера, якими керує SecretRef, оновлюються з вихідних маркерів (`secretref-env:ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань на файл/exec).
- Порожні або відсутні агентські `apiKey`/`baseUrl` беруться з `models.providers` у конфігурації.
- Для однакових моделей `contextWindow`/`maxTokens` використовують більше значення між явною конфігурацією та неявними значеннями каталогу.
- Для однакових моделей `contextTokens` зберігає явне обмеження середовища виконання, якщо воно задане; використовуйте це, щоб обмежити ефективний контекст без зміни рідних метаданих моделі.
- Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписала `models.json`.
- Збереження маркерів є авторитетним щодо джерела: маркери записуються з активного знімка вихідної конфігурації (до розкриття), а не з розкритих значень секретів середовища виконання.
- Збереження маркерів визначається джерелом: маркери записуються з активного знімка конфігурації джерела (до розкриття), а не з розкритих секретних значень середовища виконання.
### Докладно про поля провайдера
- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
- `models.providers`: мапа користувацьких провайдерів, ключована ідентифікатором провайдера.
- Безпечне редагування: використовуйте `openclaw config set models.providers.<id> '<json>' --strict-json --merge` або `openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge` для додаткових оновлень. `config set` відмовляється від руйнівних замін, якщо не передати `--replace`.
- `models.mode`: поведінка каталогу провайдера (`merge` або `replace`).
- `models.providers`: мапа власних провайдерів, ключована за ідентифікатором провайдера.
- Безпечне редагування: використовуйте `openclaw config set models.providers.<id> '<json>' --strict-json --merge` або `openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge` для додаткових оновлень. `config set` відхиляє руйнівні заміни, якщо не передано `--replace`.
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
- `models.providers.*.apiKey`: облікові дані провайдера (бажано SecretRef/підстановка змінних середовища).
- `models.providers.*.apiKey`: облікові дані провайдера (бажано через підстановку SecretRef/env).
- `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`).
- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` додавати `options.num_ctx` у запити (за замовчуванням: `true`).
- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно.
- `models.providers.*.baseUrl`: базова URL-адреса висхідного API.
- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації через проксі/орендаря.
- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів до провайдера моделі.
- `request.headers`: додаткові заголовки (об’єднуються зі значеннями провайдера за замовчуванням). Значення підтримують SecretRef.
- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вставляє `options.num_ctx` у запити (за замовчуванням: `true`).
- `models.providers.*.authHeader`: примусово передає облікові дані в заголовку `Authorization`, коли це потрібно.
- `models.providers.*.baseUrl`: базовий URL API вище за течією.
- `models.providers.*.headers`: додаткові статичні заголовки для проксі/маршрутизації орендарів.
- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів провайдера моделей.
- `request.headers`: додаткові заголовки (зливаються зі значеннями провайдера за замовчуванням). Значення підтримують SecretRef.
- `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"``token`), `"header"``headerName`, `value`, необов’язковим `prefix`).
- `request.proxy`: перевизначення HTTP-проксі. Режими: `"env-proxy"` (використовувати змінні середовища `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"``url`). Обидва режими підтримують необов’язковий підоб’єкт `tls`.
- `request.tls`: перевизначення TLS для прямих з’єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі підтримують SecretRef), `serverName`, `insecureSkipVerify`.
- `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS розв’язується у приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (явне ввімкнення оператором для довірених самостійно розміщених OpenAI-сумісних кінцевих точок). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-запобіжник fetch. За замовчуванням `false`.
- `request.allowPrivateNetwork`: якщо `true`, дозволяє HTTPS до `baseUrl`, коли DNS резолвиться в приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (явне рішення оператора для довірених самостійно розміщених OpenAI-сумісних кінцевих точок). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-захист fetch. За замовчуванням `false`.
- `models.providers.*.models`: явні записи каталогу моделей провайдера.
- `models.providers.*.models.*.contextWindow`: метадані власного вікна контексту моделі.
- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту середовища виконання. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж власний `contextWindow` моделі.
- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` із непорожнім не-власним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час виконання. Порожній/відсутній `baseUrl` зберігає стандартну поведінку OpenAI.
- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-сумісних chat-кінцевих точок, що приймають лише рядки. Коли `true`, OpenClaw сплющує масиви `messages[].content`, які містять лише текст, у звичайні рядки перед надсиланням запиту.
- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань авто-виявлення Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне виявлення.
- `models.providers.*.models.*.contextWindow`: метадані рідного вікна контексту моделі.
- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту середовища виконання. Використовуйте це, якщо хочете менший ефективний бюджет контексту, ніж рідний `contextWindow` моделі; `openclaw models list` показує обидва значення, коли вони відрізняються.
- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` із непорожнім нерідним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час виконання. Порожній/відсутній `baseUrl` зберігає стандартну поведінку OpenAI.
- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-сумісних чат-ендпоінтів, що підтримують лише рядки. Якщо `true`, OpenClaw перетворює суто текстові масиви `messages[].content` на звичайні рядки перед надсиланням запиту.
- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань автовиявлення Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнення/вимкнення неявного виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр ідентифікатора провайдера для цільового виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для виявлених моделей.
- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість токенів виводу для виявлених моделей.
- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервне максимальне число вихідних токенів для виявлених моделей.
### Приклади провайдерів
@ -486,7 +486,7 @@ OpenClaw використовує вбудований каталог модел
}
```
Установіть `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або посилання `opencode-go/...` для каталогу Go. Скорочений варіант: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`.
Установіть `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або `opencode-go/...` для каталогу Go. Скорочений варіант: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`.
</Accordion>
@ -507,7 +507,7 @@ OpenClaw використовує вбудований каталог модел
- Загальна кінцева точка: `https://api.z.ai/api/paas/v4`
- Кінцева точка для кодування (за замовчуванням): `https://api.z.ai/api/coding/paas/v4`
- Для загальної кінцевої точки визначте користувацького провайдера з перевизначенням base URL.
- Для загальної кінцевої точки визначте власного провайдера з перевизначенням base URL.
</Accordion>
@ -546,9 +546,9 @@ OpenClaw використовує вбудований каталог модел
}
```
Для кінцевої точки в Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
Для китайської кінцевої точки: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
Власні кінцеві точки Moonshot оголошують сумісність потокового використання на спільному
Рідні кінцеві точки Moonshot оголошують сумісність використання потокової передачі на спільному
транспорті `openai-completions`, і OpenClaw визначає це за можливостями кінцевої точки,
а не лише за ідентифікатором вбудованого провайдера.
@ -607,7 +607,7 @@ OpenClaw використовує вбудований каталог модел
}
```
Base URL має не містити `/v1` (клієнт Anthropic додає його сам). Скорочений варіант: `openclaw onboard --auth-choice synthetic-api-key`.
Base URL має не містити `/v1` (клієнт Anthropic додає його). Скорочений варіант: `openclaw onboard --auth-choice synthetic-api-key`.
</Accordion>
@ -652,15 +652,15 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
`openclaw onboard --auth-choice minimax-cn-api`.
Каталог моделей за замовчуванням містить лише M2.7.
На Anthropic-сумісному шляху потокової передачі OpenClaw вимикає thinking
за замовчуванням, якщо ви явно не задасте `thinking` самостійно. `/fast on` або
для MiniMax за замовчуванням, якщо ви явно не задасте `thinking` самостійно. `/fast on` або
`params.fastMode: true` переписує `MiniMax-M2.7` на
`MiniMax-M2.7-highspeed`.
</Accordion>
<Accordion title="Локальні моделі">
<Accordion title="Локальні моделі (LM Studio)">
Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на достатньо потужному обладнанні; залишайте розміщені моделі об’єднаними для резервного використання.
Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на достатньо потужному обладнанні; залишайте об’єднаними розміщені моделі як резервний варіант.
</Accordion>

View File

@ -1,61 +1,99 @@
---
read_when:
- Вам потрібні точні семантики полів конфігурації або значення за замовчуванням
- Ви перевіряєте блоки конфігурації каналів, моделей, Gateway або інструментів
summary: Довідка з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
title: Довідка з конфігурації
- Вам потрібні точні семантики або значення за замовчуванням конфігурації на рівні полів
- Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
summary: Довідник конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
title: Довідник конфігурації
x-i18n:
generated_at: "2026-04-25T05:55:51Z"
generated_at: "2026-04-25T07:01:56Z"
model: gpt-5.4
provider: openai
source_hash: 6fc32c7387a8ece01020342186b52202d954a44c6db3fa827a5ed4302e995af7
source_hash: a0f69861c754e0f6d3e41ac357fa56612b90da69249c6f24ec9f6ade21acc1d3
source_path: gateway/configuration-reference.md
workflow: 15
---
Основна довідка з конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration).
Охоплює основні поверхні конфігурації OpenClaw і містить посилання назовні, коли підсистема має власну глибшу довідку. Каталоги команд, що належать каналам і Plugin, а також глибокі параметри пам’яті/QMD розміщено на окремих сторінках, а не тут.
Охоплює основні поверхні конфігурації OpenClaw і надає посилання назовні, коли підсистема має власний глибший довідник. Каталоги команд, що належать каналам і Plugin, а також детальні параметри пам’яті/QMD розміщені на окремих сторінках, а не тут.
Джерело істини в коді:
- `openclaw config schema` виводить актуальну JSON Schema, яка використовується для валідації та Control UI, із вбудованими метаданими Plugin/каналів, об’єднаними за наявності
- `config.schema.lookup` повертає один вузол схеми для певного шляху для інструментів детального перегляду
- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють baseline hash документації конфігурації щодо поточної поверхні схеми
- `openclaw config schema` виводить актуальну JSON Schema, яка використовується для валідації та Control UI, із об’єднаними метаданими bundled/plugin/channel, коли вони доступні
- `config.schema.lookup` повертає один вузол схеми для вказаного шляху для інструментів детального перегляду
- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації відносно поточної поверхні схеми
Окремі глибокі довідники:
Окремі поглиблені довідники:
- [Memory configuration reference](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming`
- [Slash commands](/uk/tools/slash-commands) для поточного каталогу вбудованих + bundled команд
- сторінки каналів/Plugin-власників для поверхонь команд, специфічних для каналу
- [Довідник конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming`
- [Slash-команди](/uk/tools/slash-commands) для поточного вбудованого + bundled каталогу команд
- сторінки відповідного каналу/Plugin для поверхонь команд, специфічних для каналу
Формат конфігурації — **JSON5** (дозволено коментарі та завершаючі коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не задано.
Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
---
## Канали
Ключі конфігурації для окремих каналів перенесено на окрему сторінку — див.
[Configuration — channels](/uk/gateway/config-channels) для `channels.*`,
включно зі Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та іншими
bundled каналами (автентифікація, контроль доступу, кілька облікових записів, обмеження за згадками).
Ключі конфігурації для кожного каналу перенесено на окрему сторінку — див.
[Конфігурація — канали](/uk/gateway/config-channels) для `channels.*`,
зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, керування згадками).
## Типові значення агента, мультиагентність, сесії та повідомлення
## Значення агента за замовчуванням, multi-agent, сесії та повідомлення
Перенесено на окрему сторінку — див.
[Configuration — agents](/uk/gateway/config-agents) для:
[Конфігурація — агенти](/uk/gateway/config-agents) для:
- `agents.defaults.*` (робочий простір, модель, thinking, heartbeat, пам’ять, медіа, Skills, sandbox)
- `multiAgent.*` (маршрутизація та прив’язки мультиагентності)
- `session.*` (життєвий цикл сесії, compaction, prунінг)
- `agents.defaults.*` (робочий простір, модель, thinking, Heartbeat, пам’ять, медіа, Skills, sandbox)
- `multiAgent.*` (маршрутизація та прив’язки multi-agent)
- `session.*` (життєвий цикл сесії, Compaction, очищення)
- `messages.*` (доставка повідомлень, TTS, рендеринг markdown)
- `talk.*` (режим Talk)
- `talk.silenceTimeoutMs`: якщо не задано, Talk зберігає типове для платформи вікно паузи перед надсиланням транскрипту (`700 ms на macOS та Android, 900 ms на iOS`)
- `talk.silenceTimeoutMs`: якщо не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms на macOS та Android, 900 ms на iOS`)
## Інструменти та власні провайдери
## Інструменти та користувацькі провайдери
Політика інструментів, експериментальні перемикачі, конфігурація інструментів із підтримкою провайдерів і налаштування власних провайдерів / base-URL перенесені на окрему сторінку — див.
[Configuration — tools and custom providers](/uk/gateway/config-tools).
Політика інструментів, експериментальні перемикачі, конфігурація інструментів на базі провайдерів і налаштування користувацьких провайдерів / базових URL перенесено на окрему сторінку — див.
[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools).
## MCP
Визначення MCP-серверів, якими керує OpenClaw, знаходяться в `mcp.servers` і
використовуються вбудованим Pi та іншими адаптерами часу виконання. Команди `openclaw mcp list`,
`show`, `set` і `unset` керують цим блоком без підключення до
цільового сервера під час редагування конфігурації.
```json5
{
mcp: {
// Необов’язково. За замовчуванням: 600000 ms (10 хвилин). Установіть 0, щоб вимкнути видалення при простої.
sessionIdleTtlMs: 600000,
servers: {
docs: {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-fetch"],
},
remote: {
url: "https://example.com/mcp",
transport: "streamable-http", // streamable-http | sse
headers: {
Authorization: "Bearer ${MCP_REMOTE_TOKEN}",
},
},
},
},
}
```
- `mcp.servers`: іменовані визначення stdio або віддалених MCP-серверів для середовищ виконання, які
надають налаштовані інструменти MCP.
- `mcp.sessionIdleTtlMs`: TTL простою для bundled MCP runtime з областю дії сесії.
Одноразові вбудовані запуски запитують очищення наприкінці запуску; цей TTL є запасним механізмом для
довготривалих сесій і майбутніх викликів.
Див. [MCP](/uk/cli/mcp#openclaw-as-an-mcp-client-registry) і
[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) для поведінки під час виконання.
## Skills
@ -82,14 +120,14 @@ bundled каналами (автентифікація, контроль дос
}
```
- `allowBundled`: необов’язковий allowlist лише для bundled Skills (керовані/робочі Skills не зачіпаються).
- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет).
- `install.preferBrew`: якщо true, віддавати перевагу інсталяторам Homebrew, коли `brew`
доступний, перед переходом до інших типів інсталяторів.
- `install.nodeManager`: пріоритет менеджера Node для специфікацій `metadata.openclaw.install`
- `allowBundled`: необов’язковий список дозволу лише для bundled skills (керовані/workspace skills не зачіпаються).
- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет).
- `install.preferBrew`: якщо `true`, надавати перевагу інсталяторам Homebrew, коли `brew`
доступний, перш ніж переходити до інших типів інсталяторів.
- `install.nodeManager`: бажаний менеджер вузлів для специфікацій `metadata.openclaw.install`
(`npm` | `pnpm` | `yarn` | `bun`).
- `entries.<skillKey>.enabled: false` вимикає Skill, навіть якщо він bundled/installed.
- `entries.<skillKey>.apiKey`: спрощене поле для Skills, які оголошують основну env-змінну (рядок відкритого тексту або об’єкт SecretRef).
- `entries.<skillKey>.enabled: false` вимикає skill, навіть якщо він bundled/інстальований.
- `entries.<skillKey>.apiKey`: зручне поле для skills, які оголошують основну змінну середовища (простий текстовий рядок або об’єкт SecretRef).
---
@ -117,43 +155,43 @@ bundled каналами (автентифікація, контроль дос
}
```
- Завантажуються з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions` і `plugins.load.paths`.
- Виявлення приймає нативні Plugin OpenClaw, а також сумісні bundles Codex і Claude, включно з bundles Claude зі стандартним макетом без manifest.
- **Зміни конфігурації потребують перезапуску gateway.**
- `allow`: необов’язковий allowlist (завантажуються лише перелічені Plugin). `deny` має пріоритет.
- `plugins.entries.<id>.apiKey`: спрощене поле API-ключа на рівні Plugin (коли підтримується Plugin).
- `plugins.entries.<id>.env`: мапа env-змінних у межах Plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` і ігнорує поля, що змінюють prompt, із застарілого `before_agent_start`, зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до нативних hooks Plugin і підтримуваних директорій hooks, наданих bundle.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені неbundled Plugin можуть читати сирий вміст розмови з типізованих hooks, таких як `llm_input`, `llm_output` і `agent_end`.
- `plugins.entries.<id>.subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для окремого запуску фонових subagent.
- `plugins.entries.<id>.subagent.allowedModels`: необов’язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"`, лише якщо свідомо хочете дозволити будь-яку модель.
- `plugins.entries.<id>.config`: об’єкт конфігурації, визначений Plugin (валідується схемою нативного Plugin OpenClaw, якщо доступна).
- Налаштування облікового запису/runtime для Plugin-каналів розміщуються в `channels.<id>` і мають описуватися метаданими `channelConfigs` у manifest Plugin-власника, а не центральним реєстром параметрів OpenClaw.
- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера Firecrawl web-fetch.
- `apiKey`: API-ключ Firecrawl (приймає SecretRef). Використовує резервне значення з `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілого `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (типово: `https://api.firecrawl.dev`).
- `onlyMainContent`: витягувати лише основний вміст сторінок (типово: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні).
- `timeoutSeconds`: тайм-аут scrape-запиту в секундах (типово: `60`).
- Завантажуються з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, а також `plugins.load.paths`.
- Виявлення підтримує нативні Plugins OpenClaw, а також сумісні пакети Codex і Claude, включно з пакетами Claude стандартного макета без маніфесту.
- **Зміни конфігурації потребують перезапуску Gateway.**
- `allow`: необов’язковий список дозволу (завантажуються лише перелічені Plugins). `deny` має пріоритет.
- `plugins.entries.<id>.apiKey`: зручне поле API-ключа на рівні Plugin (коли підтримується Plugin).
- `plugins.entries.<id>.env`: карта змінних середовища в межах Plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля зміни prompt із застарілого `before_agent_start`, зберігаючи при цьому застарілі `modelOverride` і `providerOverride`. Застосовується до нативних хуків Plugin і підтримуваних каталогів хуків, наданих пакетами.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені небандловані Plugins можуть читати сирий вміст розмови з типізованих хуків, таких як `llm_input`, `llm_output` і `agent_end`.
- `plugins.entries.<id>.subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для кожного запуску фонових підзапусків subagent.
- `plugins.entries.<id>.subagent.allowedModels`: необов’язковий список дозволу канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли ви свідомо хочете дозволити будь-яку модель.
- `plugins.entries.<id>.config`: об’єкт конфігурації, визначений Plugin (перевіряється схемою нативного Plugin OpenClaw, якщо доступна).
- Налаштування облікових записів/runtime для плагінів каналів містяться в `channels.<id>` і мають описуватися метаданими `channelConfigs` у маніфесті відповідного Plugin, а не центральним реєстром опцій OpenClaw.
- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера web-fetch Firecrawl.
- `apiKey`: API-ключ Firecrawl (підтримує SecretRef). Використовує як резервне джерело `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілий `tools.web.fetch.firecrawl.apiKey` або змінну середовища `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (за замовчуванням: `https://api.firecrawl.dev`).
- `onlyMainContent`: витягувати лише основний вміст сторінок (за замовчуванням: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (за замовчуванням: `172800000` / 2 дні).
- `timeoutSeconds`: тайм-аут запиту на скрапінг у секундах (за замовчуванням: `60`).
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
- `enabled`: увімкнути провайдер X Search.
- `model`: модель Grok, яку використовувати для пошуку (наприклад, `"grok-4-1-fast"`).
- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів.
- `enabled`: головний перемикач dreaming (типово `false`).
- `frequency`: Cron-каденція для кожного повного циклу dreaming (типово `"0 3 * * *"`).
- `model`: модель Grok для використання в пошуку (наприклад, `"grok-4-1-fast"`).
- `plugins.entries.memory-core.config.dreaming`: налаштування dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів.
- `enabled`: головний перемикач dreaming (за замовчуванням `false`).
- `frequency`: частота Cron для кожного повного циклу dreaming (за замовчуванням `"0 3 * * *"`).
- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
- Повна конфігурація пам’яті міститься в [Memory configuration reference](/uk/reference/memory-config):
- Повна конфігурація пам’яті міститься в [Довіднику конфігурації пам’яті](/uk/reference/memory-config):
- `agents.defaults.memorySearch.*`
- `memory.backend`
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
- Увімкнені Plugin-бандли Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
- `plugins.slots.memory`: вибрати id активного Plugin пам’яті або `"none"`, щоб вимкнути Plugin пам’яті.
- `plugins.slots.contextEngine`: вибрати id активного Plugin engine контексту; типово `"legacy"`, якщо ви не встановили й не вибрали інший engine.
- `plugins.installs`: керовані CLI метадані встановлення, які використовує `openclaw plugins update`.
- Містить `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
- Сприймайте `plugins.installs.*` як керований стан; віддавайте перевагу командам CLI замість ручного редагування.
- Увімкнені Plugins Claude bundle також можуть надавати вбудовані значення Pi за замовчуванням із `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
- `plugins.slots.memory`: вибір id активного плагіна пам’яті або `"none"` для вимкнення плагінів пам’яті.
- `plugins.slots.contextEngine`: вибір id активного плагіна рушія контексту; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший рушій.
- `plugins.installs`: метадані інсталяції, керовані CLI, які використовуються `openclaw plugins update`.
- Містять `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
- Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI над ручними редагуваннями.
Див. [Plugins](/uk/tools/plugin).
@ -168,8 +206,8 @@ bundled каналами (автентифікація, контроль дос
evaluateEnabled: true,
defaultProfile: "user",
ssrfPolicy: {
// dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access
// allowPrivateNetwork: true, // legacy alias
// dangerouslyAllowPrivateNetwork: true, // вмикайте лише для довіреного доступу до приватної мережі
// allowPrivateNetwork: true, // застарілий псевдонім
// hostnameAllowlist: ["*.example.com", "example.com"],
// allowedHostnames: ["localhost"],
},
@ -209,31 +247,31 @@ bundled каналами (автентифікація, контроль дос
- `tabCleanup` звільняє відстежувані вкладки основного агента після простою або коли
сесія перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб
вимкнути ці окремі режими очищення.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера за замовчуванням лишається суворою.
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true`, лише якщо ви свідомо довіряєте навігації браузера в приватній мережі.
- У суворому режимі віддалені кінцеві точки профілів CDP (`profiles.*.cdpUrl`) підпадають під ті самі обмеження приватної мережі під час перевірок доступності/виявлення.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера за замовчуванням залишається суворо обмеженою.
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації браузера в приватній мережі.
- У суворому режимі кінцеві точки віддалених профілів CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок доступності/виявлення.
- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
- Віддалені профілі є лише attach-only (start/stop/reset недоступні).
- Віддалені профілі працюють лише в режимі attach-only (запуск/зупинка/скидання вимкнені).
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
Використовуйте HTTP(S), якщо хочете, щоб OpenClaw виявив `/json/version`; використовуйте WS(S),
коли ваш провайдер надає прямий URL WebSocket DevTools.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися
на вибраному хості або через підключений browser Node.
- Профілі `existing-session` можуть встановлювати `userDataDir`, щоб націлитися на конкретний
профіль браузера на базі Chromium, такий як Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
дії на основі snapshot/ref замість націлювання на CSS-selector, hooks завантаження одного файлу,
відсутність перевизначення тайм-ауту діалогів, відсутність `wait --load networkidle`, а також
`responsebody`, експорту PDF, перехоплення завантажень чи пакетних дій.
Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
коли ваш провайдер надає вам прямий URL WebSocket DevTools.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на
вибраному хості або через підключений browser node.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
профіль браузера на базі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршрутизації Chrome MCP:
дії на основі snapshot/ref замість націлювання за CSS-селекторами, хуки завантаження
одного файла, без перевизначення тайм-аутів діалогів, без `wait --load networkidle`, а також без
`responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
задавайте `cdpUrl` лише для віддаленого CDP.
- Локальні керовані профілі можуть встановлювати `executablePath`, щоб перевизначити глобальний
- Локальні керовані профілі можуть задавати `executablePath`, щоб перевизначити глобальний
`browser.executablePath` для цього профілю. Використовуйте це, щоб запускати один профіль у
Chrome, а інший — у Brave.
- Порядок автодетекції: браузер за замовчуванням, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- `browser.executablePath` приймає `~` для домашньої директорії вашої ОС.
- Сервіс керування: лише loopback (порт похідний від `gateway.port`, типово `18791`).
- Порядок автовиявлення: браузер за замовчуванням, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- `browser.executablePath` приймає `~` для домашнього каталогу вашої ОС.
- Служба керування: лише local loopback (порт визначається з `gateway.port`, за замовчуванням `18791`).
- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад,
`--disable-gpu`, розмір вікна або прапорці налагодження).
@ -253,8 +291,8 @@ bundled каналами (автентифікація, контроль дос
}
```
- `seamColor`: колір акценту для chrome інтерфейсу нативного застосунку (відтінок бульбашки Talk Mode тощо).
- `assistant`: перевизначення ідентичності в Control UI. Використовує резервне значення з ідентичності активного агента.
- `seamColor`: акцентний колір для chrome інтерфейсу нативного застосунку (відтінок бульбашки режиму Talk тощо).
- `assistant`: перевизначення ідентичності для Control UI. Якщо не задано, використовується ідентичність активного агента.
---
@ -329,71 +367,70 @@ bundled каналами (автентифікація, контроль дос
}
```
<Accordion title="Докладно про поля Gateway">
<Accordion title="Відомості про поля Gateway">
- `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо не `local`.
- `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо не вказано `local`.
- `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише Tailscale IP) або `custom`.
- **Застарілі псевдоніми bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми host (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: типове значення bind `loopback` слухає `127.0.0.1` всередині контейнера. За мережі Docker bridge (`-p 18789:18789`) трафік надходить через `eth0`, тому gateway недосяжний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
- **Auth**: обов’язкова за замовчуванням. Прив’язки не до loopback вимагають auth gateway. На практиці це означає спільний token/password або reverse proxy з контролем ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер onboarding типово генерує token.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно встановіть `gateway.auth.mode` у `token` або `password`. Під час запуску та в потоках встановлення/відновлення сервісу виникає помилка, якщо налаштовано обидва, а mode не задано.
- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних налаштувань local loopback; цей варіант навмисно не пропонується в підказках onboarding.
- `gateway.auth.mode: "trusted-proxy"`: делегувати auth reverse proxy з контролем ідентичності та довіряти заголовкам ідентичності від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy на тому самому хості через loopback не задовольняють auth trusted-proxy.
- `gateway.auth.allowTailscale`: коли `true`, заголовки ідентичності Tailscale Serve можуть задовольняти auth Control UI/WebSocket (перевіряється через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю auth через заголовки Tailscale; для них застосовується звичайний режим HTTP auth gateway. Цей безтокенний потік припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
- `gateway.auth.rateLimit`: необов’язковий лімітатор невдалих auth-спроб. Застосовується окремо для кожного IP клієнта та для кожного scope auth (спільний секрет і token пристрою відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
- На асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом невдачі. Тому одночасні помилкові спроби від того самого клієнта можуть спровокувати лімітатор на другому запиті замість того, щоб обидві просто завершилися звичайною невідповідністю.
- `gateway.auth.rateLimit.exemptLoopback` типово дорівнює `true`; встановіть `false`, якщо свідомо хочете також обмежувати трафік localhost (для тестових налаштувань або строгих proxy-розгортань).
- Спроби WS auth із browser-origin завжди обмежуються з вимкненим винятком loopback (додатковий захист від brute force localhost через браузер).
- На loopback ці блокування для browser-origin ізольовані за нормалізованим значенням `Origin`,
тому повторні збої з одного origin localhost не блокують автоматично інший origin.
- `tailscale.mode`: `serve` (лише tailnet, bind до loopback) або `funnel` (публічний, потребує auth).
- `controlUi.allowedOrigins`: явний allowlist browser-origin для підключень WebSocket до Gateway. Обов’язковий, коли очікуються клієнти браузера з не-loopback origin.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає fallback origin за заголовком Host для розгортань, які навмисно покладаються на політику origin за заголовком Host.
- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійний client-side override
у середовищі процесу, який дозволяє незашифрований `ws://` до довірених IP
приватної мережі; за замовчуванням незашифрований трафік як і раніше дозволено лише для loopback. Еквівалента в `openclaw.json` немає, а конфігурація приватної мережі браузера, така як
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнти
WebSocket Gateway.
- `gateway.remote.token` / `.password`: поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway.
- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього relay APNs, який використовується офіційними/TestFlight збірками iOS після публікації relay-backed реєстрацій у gateway. Цей URL має збігатися з URL relay, зібраним у збірку iOS.
- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від gateway до relay у мілісекундах. Типово `10000`.
- Реєстрації з relay-backed прив’язуються до конкретної ідентичності gateway. Сполучений застосунок iOS викликає `gateway.identity.get`, включає цю ідентичність до реєстрації relay і пересилає до gateway send grant на рівні реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env-перевизначення для наведеної вище конфігурації relay.
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки — аварійний дозвіл на loopback HTTP relay URL. У production URL relay мають залишатися на HTTPS.
- `gateway.channelHealthCheckMinutes`: інтервал моніторингу здоров’я каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски health-monitor. Типово: `5`.
- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типово: `30`.
- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків health-monitor на канал/обліковий запис за ковзну годину. Типово: `10`.
- `channels.<provider>.healthMonitor.enabled`: відмова від перезапусків health-monitor на рівні каналу зі збереженням увімкненого глобального монітора.
- `channels.<provider>.accounts.<accountId>.healthMonitor.enabled`: перевизначення на рівні облікового запису для каналів із кількома обліковими записами. Якщо задано, має пріоритет над перевизначенням на рівні каналу.
- Локальні шляхи викликів gateway можуть використовувати `gateway.remote.*` як fallback лише тоді, коли `gateway.auth.*` не задано.
- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і їх не вдається розв’язати, розв’язання завершується fail-closed (без маскування через fallback на remote).
- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Додавайте лише ті proxy, які ви контролюєте. Записи loopback усе ще валідні для налаштувань proxy/local-detection на тому самому хості (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для fail-closed поведінки.
- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий allowlist CIDR/IP для автоматичного підтвердження першого сполучення пристрою вузла без запитаних scope. Якщо не задано, вимкнено. Це не підтверджує автоматично сполучення operator/browser/Control UI/WebChat і не підтверджує автоматично оновлення role, scope, metadata чи public-key.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування allow/deny для оголошених команд вузлів після сполучення та перевірки allowlist.
- `gateway.tools.deny`: додаткові імена інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий deny list).
- `gateway.tools.allow`: прибрати імена інструментів із типового HTTP deny list.
- `bind`: `auto`, `loopback` (за замовчуванням), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`.
- **Застарілі псевдоніми bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хостів (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: стандартне значення bind `loopback` слухає `127.0.0.1` усередині контейнера. За мережевої конфігурації Docker bridge (`-p 18789:18789`) трафік надходить через `eth0`, тому gateway недоступний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
- **Auth**: за замовчуванням обов’язкова. Прив’язки не до loopback вимагають auth gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер початкового налаштування за замовчуванням генерує token.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно встановіть `gateway.auth.mode` у `token` або `password`. Запуск і потоки встановлення/відновлення сервісу завершуються помилкою, якщо налаштовано обидва, а режим не задано.
- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних налаштувань local loopback; цей варіант навмисно не пропонується в запитах початкового налаштування.
- `gateway.auth.mode: "trusted-proxy"`: делегувати auth reverse proxy з урахуванням ідентичності та довіряти заголовкам ідентичності від `gateway.trustedProxies` (див. [Auth через Trusted Proxy](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому ж хості не задовольняють auth trusted-proxy.
- `gateway.auth.allowTailscale`: коли `true`, заголовки ідентичності Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю auth через заголовки Tailscale; вони натомість дотримуються звичайного режиму HTTP auth gateway. Цей безтокеновий потік передбачає, що хост gateway є довіреним. За замовчуванням `true`, коли `tailscale.mode = "serve"`.
- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб auth. Застосовується окремо до IP клієнта і до області auth (спільний секрет і токен пристрою відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
- В асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом збою. Тому одночасні хибні спроби від того самого клієнта можуть активувати ліміт уже на другому запиті, замість того щоб обидві пройшли як звичайні невідповідності.
- `gateway.auth.rateLimit.exemptLoopback` за замовчуванням має значення `true`; установіть `false`, якщо ви навмисно хочете також застосовувати rate limit до localhost-трафіку (для тестових середовищ або суворих proxy-розгортань).
- Спроби WS auth з походження browser завжди обмежуються без винятку для loopback (додатковий захист від brute force localhost через browser).
- У loopback ці блокування для походження browser ізольовані за нормалізованим значенням `Origin`,
тож повторні збої з одного localhost-origin не блокують автоматично
інше origin.
- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічний доступ, потребує auth).
- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язково, якщо очікуються browser-клієнти з origin не-loopback.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення origin через заголовок Host для розгортань, що навмисно покладаються на політику origin за заголовком Host.
- `remote.transport`: `ssh` (за замовчуванням) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійний client-side override через змінну середовища процесу,
що дозволяє відкритий `ws://` до довірених IP приватної мережі; за замовчуванням відкритий текст лишається дозволеним лише для loopback. Еквівалента в `openclaw.json` немає, а конфігурація приватної мережі browser, така як
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на WebSocket-клієнти Gateway.
- `gateway.remote.token` / `.password`: поля облікових даних віддаленого клієнта. Самі по собі вони не налаштовують auth gateway.
- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього relay APNs, який використовують офіційні/TestFlight збірки iOS після публікації в gateway реєстрацій на основі relay. Цей URL має збігатися з URL relay, скомпільованим у збірку iOS.
- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від gateway до relay у мілісекундах. За замовчуванням `10000`.
- Реєстрації на основі relay делегуються конкретній ідентичності gateway. Зв’язаний застосунок iOS отримує `gateway.identity.get`, включає цю ідентичність у реєстрацію relay і пересилає в gateway право надсилання в межах реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env override для конфігурації relay вище.
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний виняток лише для розробки для loopback HTTP URL relay. У production URL relay мають залишатися на HTTPS.
- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналів у хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітором стану. За замовчуванням: `5`.
- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого socket у хвилинах. Зберігайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. За замовчуванням: `30`.
- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітором стану на канал/обліковий запис за ковзну годину. За замовчуванням: `10`.
- `channels.<provider>.healthMonitor.enabled`: відмова від перезапусків монітором стану для окремого каналу, зберігаючи глобальний монітор увімкненим.
- `channels.<provider>.accounts.<accountId>.healthMonitor.enabled`: перевизначення на рівні облікового запису для каналів з кількома обліковими записами. Якщо задано, має пріоритет над перевизначенням на рівні каналу.
- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано.
- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не розв’язано, розв’язання завершується за принципом fail closed (без маскування резервним віддаленим варіантом).
- `trustedProxies`: IP reverse proxy, які завершують TLS або додають заголовки forwarded-client. Додавайте лише proxy, які ви контролюєте. Записи loopback усе ще коректні для налаштувань proxy/локального виявлення на тому самому хості (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. За замовчуванням `false` для поведінки fail closed.
- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий список дозволу CIDR/IP для автоматичного схвалення першого pairing пристроїв node без запитаних областей доступу. Якщо не задано, вимкнено. Це не схвалює автоматично pairing operator/browser/Control UI/WebChat, а також не схвалює автоматично оновлення ролей, областей доступу, метаданих або публічних ключів.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування дозволу/заборони для оголошених команд node після pairing та оцінки списку дозволу.
- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює стандартний список заборон).
- `gateway.tools.allow`: прибрати назви інструментів зі стандартного HTTP-списку заборон.
</Accordion>
### OpenAI-сумісні кінцеві точки
### Кінцеві точки, сумісні з OpenAI
- Chat Completions: вимкнено за замовчуванням. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`.
- Responses API: `gateway.http.endpoints.responses.enabled`.
- Посилення захисту URL-входів Responses:
- Посилене захист URL-входів Responses:
- `gateway.http.endpoints.responses.maxUrlParts`
- `gateway.http.endpoints.responses.files.urlAllowlist`
- `gateway.http.endpoints.responses.images.urlAllowlist`
Порожні allowlist трактуються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
- Необов’язковий заголовок посилення захисту відповіді:
- `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS origin, які ви контролюєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
Порожні списки дозволу трактуються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
та/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
- Необов’язковий заголовок посиленого захисту відповіді:
- `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS-origin, які ви контролюєте; див. [Auth через Trusted Proxy](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
### Ізоляція кількох екземплярів
Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану:
Запускайте кілька gateway на одному хості з унікальними портами та каталогами стану:
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
@ -403,7 +440,7 @@ openclaw gateway --port 19001
Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile <name>` (використовує `~/.openclaw-<name>`).
Див. [Multiple Gateways](/uk/gateway/multiple-gateways).
Див. [Кілька Gateway](/uk/gateway/multiple-gateways).
### `gateway.tls`
@ -421,11 +458,11 @@ openclaw gateway --port 19001
}
```
- `enabled`: вмикає завершення TLS на listener gateway (HTTPS/WSS) (типово: `false`).
- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для local/dev.
- `certPath`: шлях у файловій системі до файлу сертифіката TLS.
- `keyPath`: шлях у файловій системі до приватного ключа TLS; обмежте права доступу.
- `caPath`: необов’язковий шлях до пакета CA для верифікації клієнта або власних ланцюгів довіри.
- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (за замовчуванням: `false`).
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, якщо явні файли не налаштовано; лише для local/dev.
- `certPath`: шлях у файловій системі до файла TLS-сертифіката.
- `keyPath`: шлях у файловій системі до файла приватного ключа TLS; обмежуйте доступ правами.
- `caPath`: необов’язковий шлях до bundle CA для перевірки клієнта або користувацьких ланцюжків довіри.
### `gateway.reload`
@ -441,13 +478,13 @@ openclaw gateway --port 19001
}
```
- `mode`: керує тим, як зміни конфігурації застосовуються під час runtime.
- `"off"`: ігнорувати live-зміни; для змін потрібен явний перезапуск.
- `mode`: керує тим, як редагування конфігурації застосовуються під час виконання.
- `"off"`: ігнорувати живі зміни; зміни потребують явного перезапуску.
- `"restart"`: завжди перезапускати процес gateway після зміни конфігурації.
- `"hot"`: застосовувати зміни в процесі без перезапуску.
- `"hybrid"` (типово): спочатку спробувати hot reload; за потреби перейти до перезапуску.
- `"hot"`: застосовувати зміни в межах процесу без перезапуску.
- `"hybrid"` (за замовчуванням): спочатку пробувати hot reload; за потреби переходити до перезапуску.
- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).
- `deferralTimeoutMs`: максимальний час у мс очікування завершення операцій у процесі перед примусовим перезапуском (типово: `300000` = 5 хвилин).
- `deferralTimeoutMs`: максимальний час у мс очікування завершення поточних операцій перед примусовим перезапуском (за замовчуванням: `300000` = 5 хвилин).
---
@ -485,46 +522,46 @@ openclaw gateway --port 19001
```
Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
Токени hook у query string відхиляються.
Hook-токени в query string відхиляються.
Примітки щодо валідації та безпеки:
- `hooks.enabled=true` вимагає непорожній `hooks.token`.
- `hooks.token` має бути **відмінним** від `gateway.auth.token`; повторне використання token Gateway відхиляється.
- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання токена Gateway відхиляється.
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
- Якщо mapping або preset використовує шаблонний `sessionKey`, установіть `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього opt-in.
- Якщо mapping або preset використовує шаблонний `sessionKey`, установіть `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього явного ввімкнення.
**Кінцеві точки:**
- `POST /hooks/wake``{ text, mode?: "now"|"next-heartbeat" }`
- `POST /hooks/agent``{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- `sessionKey` із payload запиту приймається лише коли `hooks.allowRequestSessionKey=true` (типово: `false`).
- `sessionKey` з тіла запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (за замовчуванням: `false`).
- `POST /hooks/<name>` → розв’язується через `hooks.mappings`
- Значення `sessionKey` у mapping, згенеровані шаблоном, розглядаються як зовнішньо передані й також потребують `hooks.allowRequestSessionKey=true`.
- Значення `sessionKey` у mapping, згенеровані шаблоном, вважаються зовнішньо наданими й також потребують `hooks.allowRequestSessionKey=true`.
<Accordion title="Докладно про mapping">
<Accordion title="Відомості про mapping">
- `match.path` відповідає підшляху після `/hooks` (наприклад `/hooks/gmail``gmail`).
- `match.path` відповідає підшляху після `/hooks` (наприклад, `/hooks/gmail``gmail`).
- `match.source` відповідає полю payload для загальних шляхів.
- Шаблони на кшталт `{{messages[0].subject}}` читають значення з payload.
- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload.
- `transform` може вказувати на модуль JS/TS, який повертає дію hook.
- `transform.module` має бути відносним шляхом і лишатися в межах `hooks.transformsDir` (абсолютні шляхи й traversal відхиляються).
- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового значення.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або не задано = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків агента через hook без явного `sessionKey`.
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і ключам сесій mapping, керованим шаблонами, задавати `sessionKey` (типово: `false`).
- `allowedSessionKeyPrefixes`: необов’язковий allowlist префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`. Стає обов’язковим, коли будь-який mapping або preset використовує шаблонний `sessionKey`.
- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово `last`.
- `model` перевизначає LLM для цього запуску hook (має бути дозволена, якщо задано каталог моделей).
- `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються).
- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до значення за замовчуванням.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або без значення = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook agent без явного `sessionKey`.
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і ключам сесії в mapping, керованим шаблонами, задавати `sessionKey` (за замовчуванням: `false`).
- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`. Він стає обов’язковим, коли будь-який mapping або preset використовує шаблонний `sessionKey`.
- `deliver: true` надсилає фінальну відповідь у канал; `channel` за замовчуванням — `last`.
- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо задано каталог моделей).
</Accordion>
### Інтеграція Gmail
### Інтеграція з Gmail
- Вбудований preset Gmail використовує `sessionKey: "hook:gmail:{{messages[0].id}}"`.
- Якщо ви зберігаєте цю маршрутизацію для кожного повідомлення, установіть `hooks.allowRequestSessionKey: true` і обмежте `hooks.allowedSessionKeyPrefixes`, щоб вони відповідали простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`.
- Якщо вам потрібно `hooks.allowRequestSessionKey: false`, перевизначте preset статичним `sessionKey` замість шаблонного типового значення.
- Якщо вам потрібен `hooks.allowRequestSessionKey: false`, перевизначте preset статичним `sessionKey` замість шаблонного значення за замовчуванням.
```json5
{
@ -564,18 +601,18 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Обслуговує HTML/CSS/JS, які агент може редагувати, і A2UI через HTTP на порту Gateway:
- Обслуговує редаговані агентом HTML/CSS/JS і A2UI через HTTP на порту Gateway:
- `http://<gateway-host>:<gateway.port>/__openclaw__/canvas/`
- `http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/`
- Лише локально: зберігайте `gateway.bind: "loopback"` (типово).
- Прив’язки не до loopback: маршрути canvas вимагають auth Gateway (token/password/trusted-proxy), як і інші HTTP-поверхні Gateway.
- Node WebView зазвичай не надсилають заголовки auth; після сполучення й підключення вузла Gateway рекламує URL можливостей із scope вузла для доступу до canvas/A2UI.
- URL можливостей прив’язані до активної WS-сесії вузла та швидко спливають. Fallback на основі IP не використовується.
- Впроваджує клієнт live-reload у HTML, що обслуговується.
- Автоматично створює стартовий `index.html`, якщо каталог порожній.
- Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`.
- Лише локально: використовуйте `gateway.bind: "loopback"` (за замовчуванням).
- Bind не до loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), як і інші HTTP-поверхні Gateway.
- Node WebView зазвичай не надсилають заголовки auth; після pairing і підключення node Gateway рекламує URL можливостей з областю дії node для доступу до canvas/A2UI.
- URL можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується.
- Впроваджує клієнт live reload у HTML, що обслуговується.
- Автоматично створює початковий `index.html`, якщо каталог порожній.
- Також обслуговує A2UI на `/__openclaw__/a2ui/`.
- Зміни потребують перезапуску gateway.
- Вимкніть live reload для великих каталогів або помилок `EMFILE`.
- Вимкніть live reload для великих каталогів або в разі помилок `EMFILE`.
---
@ -593,11 +630,11 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `minimal` (типово): не включає `cliPath` + `sshPort` до TXT-записів.
- `minimal` (за замовчуванням): не включає `cliPath` + `sshPort` із TXT-записів.
- `full`: включає `cliPath` + `sshPort`.
- Ім’я хоста типово `openclaw`. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`.
- Ім’я хоста за замовчуванням — `openclaw`. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`.
### Wide-area (DNS-SD)
### Глобальне виявлення (DNS-SD)
```json5
{
@ -607,7 +644,7 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
Записує зону unicast DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
Записує зону unicast DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднайте це із DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
Налаштування: `openclaw dns setup --apply`.
@ -615,7 +652,7 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
## Середовище
### `env` (вбудовані env-змінні)
### `env` (вбудовані змінні середовища)
```json5
{
@ -632,14 +669,14 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Вбудовані env-змінні застосовуються лише якщо в середовищі процесу відсутній цей ключ.
- Вбудовані змінні середовища застосовуються лише тоді, коли у змінних середовища процесу немає цього ключа.
- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні).
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
- Повний пріоритет див. у [Environment](/uk/help/environment).
- Див. [Середовище](/uk/help/environment) для повного порядку пріоритетів.
### Підстановка env-змінних
### Підстановка змінних середовища
Посилайтеся на env-змінні в будь-якому рядку конфігурації через `${VAR_NAME}`:
Посилайтеся на змінні середовища в будь-якому рядку конфігурації за допомогою `${VAR_NAME}`:
```json5
{
@ -649,7 +686,7 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте через `$${VAR}` для буквального `${VAR}`.
- Працює з `$include`.
@ -658,7 +695,7 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
## Секрети
Посилання на секрети є адитивними: значення відкритим текстом також працюють.
Посилання на секрети є адитивними: значення у відкритому тексті теж продовжують працювати.
### `SecretRef`
@ -671,16 +708,16 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
Валідація:
- шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$`
- шаблон id для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- `source: "file"` id: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`)
- шаблон id для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
- id для `source: "exec"` не мають містити сегменти шляху `.` або `..`, розділені слешами (наприклад `a/../b` відхиляється)
- шаблон `id` для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- `id` для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`)
- шаблон `id` для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
- `id` для `source: "exec"` не повинні містити сегменти шляху `.` або `..`, розділені слешами (наприклад, `a/../b` відхиляється)
### Підтримувана поверхня облікових даних
- Канонічна матриця: [SecretRef Credential Surface](/uk/reference/secretref-credential-surface)
- Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface)
- `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`.
- Посилання в `auth-profiles.json` включено до runtime-розв’язання та покриття аудиту.
- Посилання в `auth-profiles.json` включаються в runtime-розв’язання та покриття аудиту.
### Конфігурація провайдерів секретів
@ -713,13 +750,13 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
Примітки:
- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`).
- Шляхи провайдера file та exec завершуються fail-closed, якщо перевірка Windows ACL недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Провайдер `exec` вимагає абсолютний шлях `command` і використовує payload протоколу через stdin/stdout.
- За замовчуванням шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання, водночас перевіряючи шлях до розв’язаного цільового файлу.
- Якщо налаштовано `trustedDirs`, перевірка довірених каталогів застосовується до шляху розв’язаного цільового файлу.
- Дочірнє середовище `exec` за замовчуванням мінімальне; явно передайте потрібні змінні через `passEnv`.
- Посилання на секрети розв’язуються під час активації в знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на ввімкнених поверхнях призводять до помилки запуску/reload, а неактивні поверхні пропускаються з діагностикою.
- Шляхи провайдерів file і exec працюють за принципом fail closed, коли перевірка ACL Windows недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Провайдер `exec` вимагає абсолютний шлях `command` і використовує payload протоколу через stdin/stdout.
- За замовчуванням шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи symlink із перевіркою розв’язаного цільового шляху.
- Якщо налаштовано `trustedDirs`, перевірка довірених каталогів застосовується до розв’язаного цільового шляху.
- Середовище дочірнього процесу `exec` за замовчуванням мінімальне; передавайте потрібні змінні явно через `passEnv`.
- Посилання на секрети розв’язуються під час активації в snapshot у пам’яті, після чого шляхи запитів читають лише цей snapshot.
- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на увімкнених поверхнях спричиняють збій запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
---
@ -741,13 +778,13 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Профілі для кожного агента зберігаються в `<agentDir>/auth-profiles.json`.
- Профілі для окремих агентів зберігаються в `<agentDir>/auth-profiles.json`.
- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
- Профілі режиму OAuth (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані профілів auth на основі SecretRef.
- Статичні runtime-облікові дані надходять із розв’язаних знімків у пам’яті; застарілі статичні записи `auth.json` очищаються, коли їх виявлено.
- Застарілий імпорт OAuth із `~/.openclaw/credentials/oauth.json`.
- Профілі в режимі OAuth (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані профілів auth на основі SecretRef.
- Статичні runtime-облікові дані надходять із розв’язаних snapshot у пам’яті; застарілі статичні записи `auth.json` очищуються після виявлення.
- Застарілий імпорт OAuth відбувається з `~/.openclaw/credentials/oauth.json`.
- Див. [OAuth](/uk/concepts/oauth).
- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets).
- Поведінка runtime для секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
### `auth.cooldowns`
@ -769,20 +806,15 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `billingBackoffHours`: базова затримка в годинах, коли профіль завершується помилкою через справжні помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг
усе ще може потрапляти сюди навіть для відповідей `401`/`403`, але
провайдер-специфічні текстові зіставлення лишаються обмеженими тим провайдером,
якому вони належать (наприклад, OpenRouter
`Key limit exceeded`). Повторювані повідомлення HTTP `402` про usage-window або
ліміти витрат organization/workspace натомість лишаються в гілці `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин затримки білінгу для кожного провайдера.
- `billingMaxHours`: межа в годинах для експоненційного зростання затримки білінгу (типово: `24`).
- `authPermanentBackoffMinutes`: базова затримка в хвилинах для high-confidence збоїв `auth_permanent` (типово: `10`).
- `authPermanentMaxMinutes`: межа в хвилинах для зростання затримки `auth_permanent` (типово: `60`).
- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників затримок (типово: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілю в межах того самого провайдера для помилок перевантаження перед переходом до fallback моделі (типово: `1`). Сюди потрапляють форми зайнятості провайдера, як-от `ModelNotReadyException`.
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (типово: `0`).
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілю в межах того самого провайдера для помилок rate-limit перед переходом до fallback моделі (типово: `1`). Цей bucket rate-limit включає характерний для провайдерів текст, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає збою через справжні помилки billing/недостатнього кредиту (за замовчуванням: `5`). Явний текст billing усе ще може потрапити сюди навіть для відповідей `401`/`403`, але зіставлювачі тексту, специфічні для провайдера, залишаються обмеженими провайдером, якому вони належать (наприклад, OpenRouter `Key limit exceeded`). Повторно придатні помилки використання `402` у вікні usage-window або повідомлення про ліміт витрат organization/workspace натомість залишаються в шляху `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff billing для кожного провайдера.
- `billingMaxHours`: межа в годинах для експоненційного зростання backoff billing (за замовчуванням: `24`).
- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для збоїв `auth_permanent` з високою впевненістю (за замовчуванням: `10`).
- `authPermanentMaxMinutes`: межа в хвилинах для зростання backoff `auth_permanent` (за замовчуванням: `60`).
- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (за замовчуванням: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілю в межах одного провайдера для помилок перевантаження перед перемиканням на резервну модель (за замовчуванням: `1`). Сюди потрапляють форми «провайдер зайнятий», як-от `ModelNotReadyException`.
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (за замовчуванням: `0`).
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілю в межах одного провайдера для помилок rate limit перед перемиканням на резервну модель (за замовчуванням: `1`). Цей кошик rate limit включає текст у формі провайдера, наприклад `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
---
@ -801,10 +833,10 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Установіть `logging.file` для сталого шляху.
- `consoleLevel` підвищується до `debug`, коли використано `--verbose`.
- `maxFileBytes`: максимальний розмір файлу журналу в байтах, після якого записи пригнічуються (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
- Файл журналу за замовчуванням: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Установіть `logging.file` для стабільного шляху.
- `consoleLevel` підвищується до `debug`, коли використовується `--verbose`.
- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого записи пригнічуються (додатне ціле число; за замовчуванням: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
---
@ -849,21 +881,22 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `enabled`: головний перемикач для виводу інструментування (типово: `true`).
- `flags`: масив рядків-прапорців, які вмикають цільовий вивід журналу (підтримуються wildcard, як-от `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислі сесії, поки сесія лишається в стані обробки.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`).
- `otel.endpoint`: URL collector для експорту OTel.
- `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`.
- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються з запитами експорту OTel.
- `otel.serviceName`: ім’я сервісу для атрибутів resource.
- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнення експорту trace, metrics або logs.
- `enabled`: головний перемикач для виводу інструментування (за замовчуванням: `true`).
- `flags`: масив рядків-прапорців, які вмикають цільовий вивід журналу (підтримує шаблони з символами узагальнення, як-от `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислу сесію, поки сесія залишається у стані обробки.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (за замовчуванням: `false`).
- `otel.endpoint`: URL колектора для експорту OTel.
- `otel.protocol`: `"http/protobuf"` (за замовчуванням) або `"grpc"`.
- `otel.headers`: додаткові метадані-заголовки HTTP/gRPC, що надсилаються із запитами експорту OTel.
- `otel.serviceName`: назва сервісу для атрибутів ресурсу.
- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт trace, metrics або logs.
- `otel.sampleRate`: частота семплювання trace `0``1`.
- `otel.flushIntervalMs`: періодичний інтервал flush телеметрії в мс.
- `otel.captureContent`: opt-in захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Булеве значення `true` захоплює вміст повідомлень/інструментів, крім system; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`.
- `cacheTrace.enabled`: журналювати знімки cache trace для embedded-запусків (типово: `false`).
- `cacheTrace.filePath`: шлях виводу для JSONL cache trace (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається до виводу cache trace (усі типово: `true`).
- `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в мс.
- `otel.captureContent`: явне ввімкнення захоплення сирого вмісту для атрибутів span OTEL. За замовчуванням вимкнено. Булеве значення `true` захоплює вміст повідомлень/інструментів, що не є системними; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`.
- `OPENCLAW_OTEL_PRELOADED=1`: перемикач середовища для хостів, які вже зареєстрували глобальний SDK OpenTelemetry. Тоді OpenClaw пропускає запуск/завершення SDK, що належить Plugin, але зберігає активними діагностичні прослуховувачі.
- `cacheTrace.enabled`: журналювати snapshot cache trace для вбудованих запусків (за замовчуванням: `false`).
- `cacheTrace.filePath`: вихідний шлях для JSONL cache trace (за замовчуванням: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід cache trace (усі за замовчуванням: `true`).
---
@ -886,11 +919,11 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
```
- `channel`: канал релізів для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (типово: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автозастосуванням stable-каналу (типово: `6`; максимум: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (типово: `12`; максимум: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу в годинах (типово: `1`; максимум: `24`).
- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (за замовчуванням: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (за замовчуванням: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автозастосуванням stable-каналу (за замовчуванням: `6`; максимум: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (за замовчуванням: `12`; максимум: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу, у годинах (за замовчуванням: `1`; максимум: `24`).
---
@ -923,22 +956,22 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `enabled`: глобальний feature gate для ACP (типово: `false`).
- `dispatch.enabled`: незалежний gate для dispatch ходів сесії ACP (типово: `true`). Установіть `false`, щоб команди ACP лишалися доступними, але виконання блокувалося.
- `backend`: id типового runtime backend ACP (має відповідати зареєстрованому runtime plugin ACP).
- `defaultAgent`: fallback id цільового агента ACP, коли спавни не вказують явну ціль.
- `allowedAgents`: allowlist id агентів, дозволених для runtime-сесій ACP; порожнє значення означає відсутність додаткових обмежень.
- `enabled`: глобальний feature gate ACP (за замовчуванням: `false`).
- `dispatch.enabled`: незалежний gate для диспетчеризації ходів сесії ACP (за замовчуванням: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
- `backend`: id runtime backend ACP за замовчуванням (має відповідати зареєстрованому ACP runtime Plugin).
- `defaultAgent`: резервний id цільового агента ACP, коли spawn не вказує явну ціль.
- `allowedAgents`: список дозволу id агентів, дозволених для runtime-сесій ACP; порожній список означає відсутність додаткових обмежень.
- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP.
- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір chunk перед розбиттям проєкції потокового блока.
- `stream.repeatSuppression`: пригнічувати повторювані рядки status/tool на хід (типово: `true`).
- `stream.deliveryMode`: `"live"` передає потік інкрементально; `"final_only"` буферизує до термінальних подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій tool (типово: `"paragraph"`).
- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, проєктованих за один хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків status/update ACP.
- `stream.tagVisibility`: запис назв тегів у логічні перевизначення видимості для потокових подій.
- `runtime.ttlMinutes`: idle TTL у хвилинах для воркерів сесій ACP до моменту можливого очищення.
- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час bootstrap середовища runtime ACP.
- `stream.coalesceIdleMs`: вікно скидання простою в мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір чанка перед розбиттям проєкції потокового блоку.
- `stream.repeatSuppression`: пригнічувати повторювані рядки стану/інструментів у межах одного ходу (за замовчуванням: `true`).
- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до кінцевих подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (за замовчуванням: `"paragraph"`).
- `stream.maxOutputChars`: максимальна кількість символів виводу помічника, що проєктується за один хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків стану/оновлення ACP.
- `stream.tagVisibility`: запис назв тегів із булевими перевизначеннями видимості для потокових подій.
- `runtime.ttlMinutes`: TTL простою в хвилинах для worker сесій ACP до моменту, коли їх можна очищати.
- `runtime.installCommand`: необов’язкова команда встановлення, яку слід виконати під час bootstrap середовища runtime ACP.
---
@ -954,17 +987,17 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `cli.banner.taglineMode` керує стилем tagline банера:
- `"random"` (типово): змінні кумедні/сезонні tagline.
- `"default"`: фіксований нейтральний tagline (`Усі ваші чати, один OpenClaw.`).
- `"off"`: без тексту tagline (назва/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише tagline), установіть env `OPENCLAW_HIDE_BANNER=1`.
- `cli.banner.taglineMode` керує стилем слогана банера:
- `"random"` (за замовчуванням): ротаційні кумедні/сезонні слогани.
- `"default"`: фіксований нейтральний слоган (`Усі ваші чати, один OpenClaw.`).
- `"off"`: без тексту слогана (назва/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`.
---
## Wizard
Метадані, які записуються потоками покрокового налаштування CLI (`onboard`, `configure`, `doctor`):
Метадані, які записуються керованими CLI потоками налаштування (`onboard`, `configure`, `doctor`):
```json5
{
@ -982,13 +1015,13 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
## Ідентичність
Див. поля ідентичності `agents.list` у розділі [Agent defaults](/uk/gateway/config-agents#agent-defaults).
Див. поля ідентичності `agents.list` у розділі [Значення агента за замовчуванням](/uk/gateway/config-agents#agent-defaults).
---
## Bridge (застарілий, видалено)
## Bridge (застарілий, вилучений)
Поточні збірки більше не містять TCP bridge. Вузли підключаються через WebSocket Gateway. Ключі `bridge.*` більше не входять до схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі).
Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не входять до схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі).
<Accordion title="Застаріла конфігурація bridge (історична довідка)">
@ -1028,11 +1061,11 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запуску cron перед pruning із `sessions.json`. Також керує очищенням архівованих видалених транскриптів cron. Типово: `24h`; установіть `false`, щоб вимкнути.
- `runLog.maxBytes`: максимальний розмір файлу журналу одного запуску (`cron/runs/<jobId>.jsonl`) перед pruning. Типово: `2_000_000` байтів.
- `runLog.keepLines`: найновіші рядки, що зберігаються, коли запускається pruning журналу запуску. Типово: `2000`.
- `webhookToken`: bearer token, що використовується для POST-доставки webhook cron (`delivery.mode = "webhook"`); якщо не задано, заголовок auth не надсилається.
- `webhook`: застарілий legacy fallback URL webhook (http/https), який використовується лише для збережених завдань, що все ще мають `notify: true`.
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків cron перед очищенням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів cron. За замовчуванням: `24h`; установіть `false`, щоб вимкнути.
- `runLog.maxBytes`: максимальний розмір файла журналу на один запуск (`cron/runs/<jobId>.jsonl`) перед очищенням. За замовчуванням: `2_000_000` байтів.
- `runLog.keepLines`: кількість найновіших рядків, що зберігаються після спрацьовування очищення журналу запусків. За замовчуванням: `2000`.
- `webhookToken`: bearer token, який використовується для POST-доставки Webhook cron (`delivery.mode = "webhook"`); якщо не задано, заголовок auth не надсилається.
- `webhook`: застарілий резервний URL Webhook (http/https), який використовується лише для збережених завдань, у яких і далі встановлено `notify: true`.
### `cron.retry`
@ -1048,11 +1081,11 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типово: `3`; діапазон: `0``10`).
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 110 елементів).
- `retryOn`: типи помилок, які спричиняють повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не вказуйте, щоб повторювати всі тимчасові типи.
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань за тимчасових помилок (за замовчуванням: `3`; діапазон: `0``10`).
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (за замовчуванням: `[30000, 60000, 300000]`; 110 записів).
- `retryOn`: типи помилок, які запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не вказуйте, щоб повторювати всі тимчасові типи.
Застосовується лише до одноразових cron-завдань. Для повторюваних завдань використовується окрема обробка помилок.
Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку збоїв.
### `cron.failureAlert`
@ -1070,11 +1103,11 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- `enabled`: увімкнути сповіщення про збої для cron-завдань (типово: `false`).
- `after`: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мінімум: `1`).
- `enabled`: увімкнути сповіщення про збої для cron-завдань (за замовчуванням: `false`).
- `after`: кількість послідовних збоїв до спрацьовування сповіщення (додатне ціле число, мінімум: `1`).
- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` виконує POST на налаштований webhook.
- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщень.
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` надсилає POST на налаштований Webhook.
- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщення.
### `cron.failureDestination`
@ -1091,51 +1124,51 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
}
```
- Типове призначення для сповіщень про збої cron для всіх завдань.
- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних цілі.
- Цільове місце за замовчуванням для сповіщень про збої cron для всіх завдань.
- `mode`: `"announce"` або `"webhook"`; за замовчуванням `"announce"`, коли є достатньо цільових даних.
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
- `to`: явна ціль announce або URL webhook. Обов’язкове для режиму webhook.
- `to`: явна ціль announce або URL Webhook. Обов’язково для режиму webhook.
- `accountId`: необов’язкове перевизначення облікового запису для доставки.
- `delivery.failureDestination` на рівні завдання перевизначає це глобальне типове значення.
- Коли не задано ні глобальне, ні рівень завдання failure destination, завдання, які вже доставляють через `announce`, у разі збою використовують як fallback цю основну announce-ціль.
- `delivery.failureDestination` для окремого завдання перевизначає це глобальне значення за замовчуванням.
- Якщо не задано ні глобальне, ні для окремого завдання місце призначення збоїв, завдання, які вже доставляють через `announce`, у разі збою використовують цей основний цільовий announce як резервний варіант.
- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` завдання не дорівнює `"webhook"`.
Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [background tasks](/uk/automation/tasks).
Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [фонові завдання](/uk/automation/tasks).
---
## Змінні шаблону моделі медіа
## Змінні шаблонів моделі медіа
Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`:
Заповнювачі шаблонів, які розгортаються в `tools.media.models[].args`:
| Змінна | Опис |
| ----------------- | ------------------------------------------------- |
| `{{Body}}` | Повний текст вхідного повідомлення |
| `{{RawBody}}` | Сирий текст (без обгорток історії/відправника) |
| `{{BodyStripped}}`| Текст без групових згадок |
| `{{From}}` | Ідентифікатор відправника |
| `{{To}}` | Ідентифікатор призначення |
| `{{MessageSid}}` | id повідомлення каналу |
| `{{SessionId}}` | UUID поточної сесії |
| `{{IsNewSession}}`| `"true"`, коли створено нову сесію |
| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
| `{{MediaPath}}` | Локальний шлях до медіа |
| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
| `{{Transcript}}` | Транскрипт аудіо |
| `{{Prompt}}` | Розв’язаний prompt медіа для записів CLI |
| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для записів CLI |
| `{{ChatType}}` | `"direct"` або `"group"` |
| `{{GroupSubject}}`| Тема групи (best effort) |
| `{{GroupMembers}}`| Попередній список учасників групи (best effort) |
| `{{SenderName}}` | Відображуване ім’я відправника (best effort) |
| `{{SenderE164}}` | Номер телефону відправника (best effort) |
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
| Змінна | Опис |
| ------------------ | ------------------------------------------------- |
| `{{Body}}` | Повний текст вхідного повідомлення |
| `{{RawBody}}` | Сирий текст (без обгорток історії/відправника) |
| `{{BodyStripped}}` | Текст без згадок у групі |
| `{{From}}` | Ідентифікатор відправника |
| `{{To}}` | Ідентифікатор призначення |
| `{{MessageSid}}` | ID повідомлення каналу |
| `{{SessionId}}` | UUID поточної сесії |
| `{{IsNewSession}}` | `"true"`, якщо створено нову сесію |
| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
| `{{MediaPath}}` | Локальний шлях до медіа |
| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
| `{{Transcript}}` | Аудіотранскрипт |
| `{{Prompt}}` | Розв’язаний медіа-prompt для записів CLI |
| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для записів CLI |
| `{{ChatType}}` | `"direct"` або `"group"` |
| `{{GroupSubject}}` | Назва групи (за можливості) |
| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) |
| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) |
| `{{SenderE164}}` | Номер телефону відправника (за можливості) |
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
---
## Включення конфігурації (`$include`)
Розбийте конфігурацію на кілька файлів:
Розділіть конфігурацію на кілька файлів:
```json5
// ~/.openclaw/openclaw.json
@ -1151,19 +1184,19 @@ Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
**Поведінка злиття:**
- Один файл: замінює об’єкт-контейнер.
- Масив файлів: deep-merge у заданому порядку (пізніші перевизначають попередні).
- Сусідні ключі: зливаються після includes (перевизначають включені значення).
- Вкладені includes: до 10 рівнів углиб.
- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли після розв’язання вони все одно лишаються в межах цієї границі.
- Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений include одного файла, записуються безпосередньо в цей включений файл. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
- Root includes, масиви include і includes із сусідніми перевизначеннями є read-only для записів, керованих OpenClaw; такі записи завершуються fail-closed замість сплощення конфігурації.
- Помилки: чіткі повідомлення для відсутніх файлів, помилок парсингу та циклічних includes.
- Масив файлів: глибоко зливається за порядком (пізніші перевизначають попередні).
- Сусідні ключі: зливаються після включень (перевизначають включені значення).
- Вкладені включення: до 10 рівнів глибини.
- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/форми з `../` дозволені лише тоді, коли вони все одно розв’язуються в межах цієї межі.
- Записи OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений включенням одного файла, записуються безпосередньо до цього включеного файла. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями доступні лише для читання для записів, що виконуються OpenClaw; такі записи завершуються за принципом fail closed замість сплощення конфігурації.
- Помилки: чіткі повідомлення для відсутніх файлів, помилок розбору та циклічних включень.
---
овязане: [Configuration](/uk/gateway/configuration) · [Configuration Examples](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
овязано: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
## Пов’язане
- [Configuration](/uk/gateway/configuration)
- [Configuration examples](/uk/gateway/configuration-examples)
- [Конфігурація](/uk/gateway/configuration)
- [Приклади конфігурації](/uk/gateway/configuration-examples)

View File

@ -3,13 +3,13 @@ read_when:
- Вам потрібен дружній до початківців огляд журналювання
- Ви хочете налаштувати рівні журналювання або формати
- Ви усуваєте несправності й хочете швидко знайти журнали
summary: 'Огляд журналювання: журнали у файлах, вивід у консолі, відстеження в CLI та інтерфейс керування'
summary: 'Огляд журналювання: журнали файлів, вивід у консоль, відстеження в CLI та інтерфейс керування'
title: Огляд журналювання
x-i18n:
generated_at: "2026-04-24T23:44:42Z"
generated_at: "2026-04-25T07:01:56Z"
model: gpt-5.4
provider: openai
source_hash: 8e179c883d98caa7fd8d3ece8962d0b628562d35568ebf452c34bededba22e2c
source_hash: 7f9593b117ef2ba76dbe91d5b38e3f463b358631961c9d44beed3aee6152f9a2
source_path: logging.md
workflow: 15
---
@ -18,20 +18,20 @@ x-i18n:
OpenClaw має дві основні поверхні журналювання:
- **Журнали у файлах** (рядки JSON), які записує Gateway.
- **Вивід у консолі**, що показується в терміналах і в інтерфейсі налагодження Gateway.
- **Журнали файлів** (рядки JSON), які записує Gateway.
- **Вивід у консоль**, що показується в терміналах і в інтерфейсі Gateway Debug UI.
Вкладка **Logs** в інтерфейсі керування відстежує журнал файлу gateway. На цій сторінці пояснюється, де зберігаються журнали, як їх читати та як налаштовувати рівні й формати журналювання.
Вкладка **Logs** в інтерфейсі керування відстежує файл журналу gateway. На цій сторінці пояснюється, де зберігаються журнали, як їх читати та як налаштовувати рівні й формати журналювання.
## Де зберігаються журнали
За замовчуванням Gateway записує ротаційний файл журналу за шляхом:
За замовчуванням Gateway записує ротаційний файл журналу в:
`/tmp/openclaw/openclaw-YYYY-MM-DD.log`
Дата використовує локальний часовий пояс хоста gateway.
Ви можете змінити це в `~/.openclaw/openclaw.json`:
Ви можете перевизначити це в `~/.openclaw/openclaw.json`:
```json
{
@ -55,26 +55,26 @@ openclaw logs --follow
- `--local-time`: відображати часові мітки у вашому локальному часовому поясі
- `--url <url>` / `--token <token>` / `--timeout <ms>`: стандартні прапорці Gateway RPC
- `--expect-final`: прапорець очікування фінальної відповіді для RPC на основі агентів (тут приймається через спільний клієнтський шар)
- `--expect-final`: прапорець очікування фінальної відповіді для RPC на основі агентів (приймається тут через спільний клієнтський шар)
Режими виводу:
- **Сеанси TTY**: гарні, кольорові, структуровані рядки журналу.
- **Сеанси без TTY**: звичайний текст.
- `--json`: JSON з розділенням по рядках (одна подія журналу на рядок).
- `--plain`: примусово використовувати звичайний текст у сеансах TTY.
- `--no-color`: вимкнути кольори ANSI.
- **TTY-сеанси**: гарні, кольорові, структуровані рядки журналу.
- **Не-TTY-сеанси**: звичайний текст.
- `--json`: JSON із розділенням по рядках (одна подія журналу на рядок).
- `--plain`: примусово використовувати звичайний текст у TTY-сеансах.
- `--no-color`: вимкнути ANSI-кольори.
Коли ви передаєте явний `--url`, CLI не застосовує автоматично облікові дані з конфігурації або середовища; вкажіть `--token` самостійно, якщо цільовий Gateway вимагає автентифікації.
Коли ви передаєте явний `--url`, CLI не застосовує автоматично облікові дані з конфігурації або середовища; самостійно додайте `--token`, якщо цільовий Gateway вимагає автентифікацію.
У режимі JSON CLI виводить об’єкти з тегом `type`:
- `meta`: метадані потоку (файл, курсор, розмір)
- `log`: розібраний запис журналу
- `notice`: підказки щодо обрізання / ротації
- `notice`: підказки про обрізання / ротацію
- `raw`: нерозібраний рядок журналу
Якщо Gateway на local loopback просить виконати pairing, `openclaw logs` автоматично переходить до налаштованого локального файла журналу. Явні цілі `--url` не використовують цей резервний варіант.
Якщо локальний loopback Gateway запитує pair-налаштування, `openclaw logs` автоматично перемикається на налаштований локальний файл журналу. Явні цілі `--url` не використовують цей резервний режим.
Якщо Gateway недоступний, CLI виводить коротку підказку виконати:
@ -97,27 +97,27 @@ openclaw channels logs --channel whatsapp
## Формати журналів
### Журнали у файлах (JSONL)
### Журнали файлів (JSONL)
Кожен рядок у файлі журналу є об’єктом JSON. CLI та інтерфейс керування розбирають ці записи, щоб відображати структурований вивід (час, рівень, підсистема, повідомлення).
### Вивід у консолі
### Вивід у консоль
Журнали консолі **враховують TTY** і форматуються для зручності читання:
- Префікси підсистем (наприклад, `gateway/channels/whatsapp`)
- Кольори рівнів (info/warn/error)
- Необов’язковий компактний або JSON-режим
- Кольорове позначення рівнів (info/warn/error)
- Необов’язковий компактний режим або режим JSON
Форматування консолі керується через `logging.consoleStyle`.
### Журнали Gateway WebSocket
### Журнали WebSocket Gateway
`openclaw gateway` також має журналювання протоколу WebSocket для RPC-трафіку:
- звичайний режим: лише цікаві результати (помилки, помилки розбору, повільні виклики)
- звичайний режим: лише важливі результати (помилки, помилки розбору, повільні виклики)
- `--verbose`: увесь трафік запитів/відповідей
- `--ws-log auto|compact|full`: вибір стилю детального відображення
- `--ws-log auto|compact|full`: вибір стилю розширеного відображення
- `--compact`: псевдонім для `--ws-log compact`
Приклади:
@ -130,7 +130,7 @@ openclaw gateway --verbose --ws-log full
## Налаштування журналювання
Усі параметри журналювання містяться в `logging` у `~/.openclaw/openclaw.json`.
Уся конфігурація журналювання знаходиться в розділі `logging` у `~/.openclaw/openclaw.json`.
```json
{
@ -147,18 +147,18 @@ openclaw gateway --verbose --ws-log full
### Рівні журналювання
- `logging.level`: рівень **журналів у файлах** (JSONL).
- `logging.level`: рівень **журналів файлів** (JSONL).
- `logging.consoleLevel`: рівень деталізації **консолі**.
Ви можете перевизначити обидва через змінну середовища **`OPENCLAW_LOG_LEVEL`** (наприклад, `OPENCLAW_LOG_LEVEL=debug`). Змінна середовища має вищий пріоритет за файл конфігурації, тому ви можете підвищити деталізацію для одного запуску без редагування `openclaw.json`. Ви також можете передати глобальний параметр CLI **`--log-level <level>`** (наприклад, `openclaw --log-level debug gateway run`), який перевизначає змінну середовища для цієї команди.
Ви можете перевизначити обидва через змінну середовища **`OPENCLAW_LOG_LEVEL`** (наприклад, `OPENCLAW_LOG_LEVEL=debug`). Змінна середовища має вищий пріоритет, ніж файл конфігурації, тому ви можете підвищити деталізацію для одного запуску без редагування `openclaw.json`. Ви також можете передати глобальний параметр CLI **`--log-level <level>`** (наприклад, `openclaw --log-level debug gateway run`), який перевизначає змінну середовища для цієї команди.
`--verbose` впливає лише на вивід у консоль і деталізацію журналів WS; він не змінює рівні журналів у файлах.
`--verbose` впливає лише на вивід у консоль і деталізацію журналів WS; він не змінює рівні журналів файлів.
### Стилі консолі
`logging.consoleStyle`:
- `pretty`: зручний для людини, кольоровий, із часовими мітками.
- `pretty`: зручний для людей, кольоровий, із часовими мітками.
- `compact`: щільніший вивід (найкраще для довгих сеансів).
- `json`: JSON у кожному рядку (для обробників журналів).
@ -169,56 +169,56 @@ openclaw gateway --verbose --ws-log full
- `logging.redactSensitive`: `off` | `tools` (типово: `tools`)
- `logging.redactPatterns`: список рядків regex для перевизначення типового набору
Редагування впливає **лише на вивід у консоль** і не змінює журнали у файлах.
Редагування впливає **лише на вивід у консоль** і не змінює журнали файлів.
## Діагностика + OpenTelemetry
Діагностика — це структуровані, машинозчитувані події для запусків моделей **і**
телеметрії потоку повідомлень (webhooks, постановка в чергу, стан сеансу). Вони **не**
замінюють журнали; вони існують для передавання метрик, трасувань та інших експортерів.
Діагностика — це структуровані, машиночитні події для запусків моделей **і**
телеметрії потоку повідомлень (webhook, постановка в чергу, стан сеансу). Вони **не**
замінюють журнали; вони існують для подачі метрик, трасувань та інших експортерів.
Події діагностики генеруються в процесі, але експортери підключаються лише тоді, коли
Події діагностики створюються в процесі, але експортери підключаються лише тоді, коли
увімкнено діагностику + Plugin експортера.
### OpenTelemetry проти OTLP
### OpenTelemetry і OTLP
- **OpenTelemetry (OTel)**: модель даних + SDK для трасувань, метрик і журналів.
- **OTLP**: мережевий протокол, який використовується для експорту даних OTel до колектора/бекенда.
- **OTLP**: дротовий протокол, який використовується для експорту даних OTel до збирача/бекенда.
- Сьогодні OpenClaw експортує через **OTLP/HTTP (protobuf)**.
### Експортовані сигнали
- **Метрики**: лічильники + гістограми (використання токенів, потік повідомлень, постановка в чергу).
- **Трасування**: span-и для використання моделей + обробки webhook/повідомлень.
- **Журнали**: експортуються через OTLP, коли ввімкнено `diagnostics.otel.logs`. Обсяг журналів
може бути високим; враховуйте `logging.level` і фільтри експортера.
- **Metrics**: лічильники + гістограми (використання токенів, потік повідомлень, черги).
- **Traces**: span-и для використання моделей + обробки webhook/повідомлень.
- **Logs**: експортуються через OTLP, коли ввімкнено `diagnostics.otel.logs`. Обсяг журналів
може бути великим; пам’ятайте про `logging.level` і фільтри експортера.
### Каталог подій діагностики
Використання моделей:
Використання моделі:
- `model.usage`: токени, вартість, тривалість, контекст, провайдер/модель/канал, ідентифікатори сеансів.
- `model.usage`: токени, вартість, тривалість, контекст, provider/model/channel, ідентифікатори сеансів.
Потік повідомлень:
- `webhook.received`: вхід webhook для кожного каналу.
- `webhook.processed`: webhook оброблено + тривалість.
- `webhook.received`: вхідний webhook для кожного каналу.
- `webhook.processed`: оброблений webhook + тривалість.
- `webhook.error`: помилки обробника webhook.
- `message.queued`: повідомлення поставлено в чергу на обробку.
- `message.processed`: результат + тривалість + необов’язкова помилка.
Черга + сеанс:
- `queue.lane.enqueue`: постановка в lane черги команд + глибина.
- `queue.lane.dequeue`: зняття з lane черги команд + час очікування.
- `queue.lane.enqueue`: додавання в lane черги команд + глибина.
- `queue.lane.dequeue`: виймання з lane черги команд + час очікування.
- `session.state`: перехід стану сеансу + причина.
- `session.stuck`: попередження про завислий сеанс + вік.
- `run.attempt`: метадані повторної спроби/спроби запуску.
- `diagnostic.heartbeat`: агреговані лічильники (webhooks/черга/сеанс).
- `run.attempt`: метадані повтору/спроби запуску.
- `diagnostic.heartbeat`: агреговані лічильники (webhook/черга/сеанс).
### Увімкнення діагностики (без експортера)
Використовуйте це, якщо хочете, щоб події діагностики були доступні для плагінів або власних приймачів:
Використовуйте це, якщо хочете, щоб події діагностики були доступні для Plugin-ів або користувацьких приймачів:
```json
{
@ -231,7 +231,7 @@ openclaw gateway --verbose --ws-log full
### Прапорці діагностики (цільові журнали)
Використовуйте прапорці, щоб увімкнути додаткові, цільові журнали налагодження без підвищення `logging.level`.
Прапорці нечутливі до регістру та підтримують шаблони з wildcard (наприклад, `telegram.*` або `*`).
Прапорці нечутливі до регістру та підтримують шаблони (наприклад, `telegram.*` або `*`).
```json
{
@ -241,7 +241,7 @@ openclaw gateway --verbose --ws-log full
}
```
Перевизначення через змінну середовища (для разового запуску):
Перевизначення через змінну середовища (разово):
```
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
@ -249,14 +249,14 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
Примітки:
- Журнали за прапорцями записуються у стандартний файл журналу (той самий, що й `logging.file`).
- Журнали за прапорцями записуються до стандартного файлу журналу (того самого, що й `logging.file`).
- Вивід усе одно редагується відповідно до `logging.redactSensitive`.
- Повний посібник: [/diagnostics/flags](/uk/diagnostics/flags).
### Експорт до OpenTelemetry
Діагностику можна експортувати через Plugin `diagnostics-otel` (OTLP/HTTP). Це
працює з будь-яким колектором/бекендом OpenTelemetry, який приймає OTLP/HTTP.
працює з будь-яким збирачем/бекендом OpenTelemetry, який приймає OTLP/HTTP.
```json
{
@ -295,58 +295,62 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
Примітки:
- Ви також можете ввімкнути Plugin за допомогою `openclaw plugins enable diagnostics-otel`.
- Ви також можете ввімкнути Plugin командою `openclaw plugins enable diagnostics-otel`.
- `protocol` наразі підтримує лише `http/protobuf`. `grpc` ігнорується.
- Метрики включають використання токенів, вартість, розмір контексту, тривалість запуску та
лічильники/гістограми потоку повідомлень (webhooks, постановка в чергу, стан сеансу, глибина/очікування черги).
- Трасування/метрики можна перемикати через `traces` / `metrics` (типово: увімкнено). Трасування
включають span-и використання моделей, а також span-и обробки webhook/повідомлень, коли це ввімкнено.
- Вміст сирих моделей/інструментів типово не експортується. Використовуйте
`diagnostics.otel.captureContent` лише тоді, коли ваш колектор і політика зберігання
схвалені для тексту підказок, відповідей, інструментів або системних підказок.
- Установіть `headers`, якщо ваш колектор вимагає автентифікації.
- Metrics включають використання токенів, вартість, розмір контексту, тривалість запуску та
лічильники/гістограми потоку повідомлень (webhook, черги, стан сеансу, глибина/очікування черги).
- Traces/metrics можна вмикати або вимикати через `traces` / `metrics` (типово: увімкнено). Traces
включають span-и використання моделей, а також span-и обробки webhook/повідомлень, якщо це ввімкнено.
- Сирий вміст моделі/інструментів типово не експортується. Використовуйте
`diagnostics.otel.captureContent` лише тоді, коли ваш збирач і політика зберігання
схвалені для тексту prompt, відповіді, інструментів або системного prompt.
- Установіть `headers`, якщо ваш збирач вимагає автентифікацію.
- Підтримувані змінні середовища: `OTEL_EXPORTER_OTLP_ENDPOINT`,
`OTEL_SERVICE_NAME`, `OTEL_EXPORTER_OTLP_PROTOCOL`.
- Установіть `OPENCLAW_OTEL_PRELOADED=1`, якщо інший preload або хост-процес уже
зареєстрував глобальний OpenTelemetry SDK. У цьому режимі Plugin не запускає
і не завершує власний SDK, але все одно підключає слухачі діагностики OpenClaw і
враховує `diagnostics.otel.traces`, `metrics` і `logs`.
### Експортовані метрики (назви + типи)
### Експортовані metrics (назви + типи)
Використання моделей:
Використання моделі:
- `openclaw.tokens` (лічильник, атрибути: `openclaw.token`, `openclaw.channel`,
- `openclaw.tokens` (counter, атрибути: `openclaw.token`, `openclaw.channel`,
`openclaw.provider`, `openclaw.model`)
- `openclaw.cost.usd` (лічильник, атрибути: `openclaw.channel`, `openclaw.provider`,
- `openclaw.cost.usd` (counter, атрибути: `openclaw.channel`, `openclaw.provider`,
`openclaw.model`)
- `openclaw.run.duration_ms` (гістограма, атрибути: `openclaw.channel`,
- `openclaw.run.duration_ms` (histogram, атрибути: `openclaw.channel`,
`openclaw.provider`, `openclaw.model`)
- `openclaw.context.tokens` (гістограма, атрибути: `openclaw.context`,
- `openclaw.context.tokens` (histogram, атрибути: `openclaw.context`,
`openclaw.channel`, `openclaw.provider`, `openclaw.model`)
Потік повідомлень:
- `openclaw.webhook.received` (лічильник, атрибути: `openclaw.channel`,
- `openclaw.webhook.received` (counter, атрибути: `openclaw.channel`,
`openclaw.webhook`)
- `openclaw.webhook.error` (лічильник, атрибути: `openclaw.channel`,
- `openclaw.webhook.error` (counter, атрибути: `openclaw.channel`,
`openclaw.webhook`)
- `openclaw.webhook.duration_ms` (гістограма, атрибути: `openclaw.channel`,
- `openclaw.webhook.duration_ms` (histogram, атрибути: `openclaw.channel`,
`openclaw.webhook`)
- `openclaw.message.queued` (лічильник, атрибути: `openclaw.channel`,
- `openclaw.message.queued` (counter, атрибути: `openclaw.channel`,
`openclaw.source`)
- `openclaw.message.processed` (лічильник, атрибути: `openclaw.channel`,
- `openclaw.message.processed` (counter, атрибути: `openclaw.channel`,
`openclaw.outcome`)
- `openclaw.message.duration_ms` (гістограма, атрибути: `openclaw.channel`,
- `openclaw.message.duration_ms` (histogram, атрибути: `openclaw.channel`,
`openclaw.outcome`)
Черги + сеанси:
- `openclaw.queue.lane.enqueue` (лічильник, атрибути: `openclaw.lane`)
- `openclaw.queue.lane.dequeue` (лічильник, атрибути: `openclaw.lane`)
- `openclaw.queue.depth` (гістограма, атрибути: `openclaw.lane` або
- `openclaw.queue.lane.enqueue` (counter, атрибути: `openclaw.lane`)
- `openclaw.queue.lane.dequeue` (counter, атрибути: `openclaw.lane`)
- `openclaw.queue.depth` (histogram, атрибути: `openclaw.lane` або
`openclaw.channel=heartbeat`)
- `openclaw.queue.wait_ms` (гістограма, атрибути: `openclaw.lane`)
- `openclaw.session.state` (лічильник, атрибути: `openclaw.state`, `openclaw.reason`)
- `openclaw.session.stuck` (лічильник, атрибути: `openclaw.state`)
- `openclaw.session.stuck_age_ms` (гістограма, атрибути: `openclaw.state`)
- `openclaw.run.attempt` (лічильник, атрибути: `openclaw.attempt`)
- `openclaw.queue.wait_ms` (histogram, атрибути: `openclaw.lane`)
- `openclaw.session.state` (counter, атрибути: `openclaw.state`, `openclaw.reason`)
- `openclaw.session.stuck` (counter, атрибути: `openclaw.state`)
- `openclaw.session.stuck_age_ms` (histogram, атрибути: `openclaw.state`)
- `openclaw.run.attempt` (counter, атрибути: `openclaw.attempt`)
### Експортовані span-и (назви + ключові атрибути)
@ -374,14 +378,14 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
- `openclaw.session.stuck`
- `openclaw.state`, `openclaw.ageMs`, `openclaw.queueDepth`
Коли захоплення вмісту явно ввімкнено, span-и моделі/інструментів також можуть містити
Коли захоплення вмісту явно ввімкнено, span-и моделей/інструментів також можуть містити
обмежені, відредаговані атрибути `openclaw.content.*` для конкретних класів вмісту,
які ви дозволили.
які ви явно дозволили.
### Вибірка + скидання
### Вибірка + скидання буфера
- Вибірка трасувань: `diagnostics.otel.sampleRate` (0.01.0, лише кореневі span-и).
- Інтервал експорту метрик: `diagnostics.otel.flushIntervalMs` (мінімум 1000 мс).
- Вибірка traces: `diagnostics.otel.sampleRate` (0.01.0, лише кореневі span-и).
- Інтервал експорту metrics: `diagnostics.otel.flushIntervalMs` (мінімум 1000ms).
### Примітки щодо протоколу
@ -389,23 +393,25 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
`OTEL_EXPORTER_OTLP_ENDPOINT`.
- Якщо кінцева точка вже містить `/v1/traces` або `/v1/metrics`, вона використовується як є.
- Якщо кінцева точка вже містить `/v1/logs`, вона використовується як є для журналів.
- `diagnostics.otel.logs` вмикає експорт журналів OTLP для основного виводу журналювача.
- `OPENCLAW_OTEL_PRELOADED=1` повторно використовує зовнішньо зареєстрований OpenTelemetry SDK
для traces/metrics замість запуску NodeSDK, яким володіє Plugin.
- `diagnostics.otel.logs` вмикає експорт журналів OTLP для основного виводу logger.
### Поведінка експорту журналів
- Журнали OTLP використовують ті самі структуровані записи, що записуються до `logging.file`.
- Враховується `logging.level` (рівень журналів у файлах). Редагування консолі **не** застосовується
- Дотримуються `logging.level` (рівень журналів файлів). Редагування консолі **не** застосовується
до журналів OTLP.
- Для інсталяцій із великим обсягом даних варто віддавати перевагу вибірці/фільтрації в колекторі OTLP.
- Для інсталяцій із великим обсягом даних краще використовувати вибірку/фільтрацію на рівні OTLP collector.
## Поради з усунення несправностей
- **Gateway недоступний?** Спочатку виконайте `openclaw doctor`.
- **Журнали порожні?** Перевірте, що Gateway запущений і записує у шлях файлу,
- **Журнали порожні?** Перевірте, що Gateway запущено і він записує у шлях файлу,
вказаний у `logging.file`.
- **Потрібно більше деталей?** Установіть `logging.level` на `debug` або `trace` і повторіть спробу.
- **Потрібно більше деталей?** Установіть `logging.level` у `debug` або `trace` і повторіть спробу.
## Пов’язане
- [Внутрішня будова журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і захоплення консолі
- [Внутрішня реалізація журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і захоплення консолі
- [Діагностика](/uk/gateway/configuration-reference#diagnostics) — експорт OpenTelemetry і конфігурація трасування кешу

File diff suppressed because it is too large Load Diff