chore(i18n): refresh uk translations
This commit is contained in:
parent
d856fbf3d8
commit
136db3b63f
@ -1,15 +1,15 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування типових параметрів агента (моделі, thinking, робочий простір, Heartbeat, медіа, Skills)
|
||||
- Налаштування маршрутизації між кількома агентами та прив’язок
|
||||
- Налаштування сеансу, доставки повідомлень і поведінки режиму talk
|
||||
summary: Типові параметри агента, маршрутизація між кількома агентами, сеанс, повідомлення та конфігурація talk
|
||||
- Налаштування стандартних параметрів агента (моделі, мислення, робочий простір, Heartbeat, медіа, Skills)
|
||||
- Налаштування маршрутизації та прив’язок між кількома агентами
|
||||
- Налаштування сесії, доставки повідомлень і поведінки режиму розмови
|
||||
summary: Стандартні налаштування агента, маршрутизація між кількома агентами, сесія, повідомлення та конфігурація розмови
|
||||
title: Конфігурація — агенти
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T06:22:38Z"
|
||||
generated_at: "2026-04-25T07:53:40Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: a3a67914120f567c1d0e4740a320cd285c21ddeb05cbffbec1b9c6ea1e950a6e
|
||||
source_hash: ec43da7bb26dc2b0e99e972d0373b9b3f4dd443cc4ed95fc9807bc4d04483e45
|
||||
source_path: gateway/config-agents.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -18,7 +18,7 @@ x-i18n:
|
||||
`messages.*` і `talk.*`. Для каналів, інструментів, середовища виконання Gateway та інших
|
||||
ключів верхнього рівня див. [Довідник із конфігурації](/uk/gateway/configuration-reference).
|
||||
|
||||
## Типові параметри агента
|
||||
## Стандартні параметри агента
|
||||
|
||||
### `agents.defaults.workspace`
|
||||
|
||||
@ -32,7 +32,7 @@ x-i18n:
|
||||
|
||||
### `agents.defaults.repoRoot`
|
||||
|
||||
Необов’язковий корінь репозиторію, який показується в рядку Runtime системного запиту. Якщо не задано, OpenClaw автоматично визначає його, піднімаючись вгору від робочого простору.
|
||||
Необов’язковий корінь репозиторію, що показується в рядку Runtime системного запиту. Якщо не задано, OpenClaw автоматично визначає його, піднімаючись угору від робочого простору.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -58,7 +58,7 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
- Не вказуйте `agents.defaults.skills`, якщо типово потрібні необмежені Skills.
|
||||
- Не вказуйте `agents.defaults.skills`, щоб Skills типово не були обмежені.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати типові значення.
|
||||
- Установіть `agents.list[].skills: []`, щоб вимкнути всі Skills.
|
||||
- Непорожній список `agents.list[].skills` є остаточним набором для цього агента;
|
||||
@ -78,8 +78,8 @@ x-i18n:
|
||||
|
||||
Керує тим, коли bootstrap-файли робочого простору додаються до системного запиту. Типове значення: `"always"`.
|
||||
|
||||
- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне додавання bootstrap-контексту робочого простору, що зменшує розмір запиту. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст.
|
||||
- `"never"`: вимикає додавання bootstrap-файлів робочого простору та файлів контексту на кожному ході. Використовуйте це лише для агентів, які повністю керують життєвим циклом свого запиту (власні рушії контексту, нативні середовища виконання, що самі будують контекст, або спеціалізовані робочі процеси без bootstrap). Ходи Heartbeat і відновлення після compaction також пропускають додавання.
|
||||
- `"continuation-skip"`: для безпечних ходів продовження (після завершеної відповіді асистента) повторне додавання bootstrap-контексту робочого простору пропускається, що зменшує розмір запиту. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст.
|
||||
- `"never"`: вимикає додавання bootstrap-файлів робочого простору та файлів контексту на кожному ході. Використовуйте це лише для агентів, які повністю керують власним життєвим циклом запиту (власні рушії контексту, нативні середовища виконання, що самі будують контекст, або спеціалізовані робочі процеси без bootstrap). Ходи Heartbeat і відновлення після Compaction також пропускають додавання.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -89,7 +89,7 @@ x-i18n:
|
||||
|
||||
### `agents.defaults.bootstrapMaxChars`
|
||||
|
||||
Максимальна кількість символів на bootstrap-файл робочого простору до обрізання. Типове значення: `12000`.
|
||||
Максимальна кількість символів у кожному bootstrap-файлі робочого простору до обрізання. Типове значення: `12000`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -112,9 +112,9 @@ x-i18n:
|
||||
Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізано.
|
||||
Типове значення: `"once"`.
|
||||
|
||||
- `"off"`: ніколи не додає текст попередження до системного запиту.
|
||||
- `"once"`: додає попередження один раз для кожного унікального сигнатурного випадку обрізання (рекомендовано).
|
||||
- `"always"`: додає попередження під час кожного запуску, якщо є обрізання.
|
||||
- `"off"`: ніколи не додавати текст попередження до системного запиту.
|
||||
- `"once"`: додавати попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано).
|
||||
- `"always"`: додавати попередження під час кожного запуску, якщо є обрізання.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -124,32 +124,33 @@ x-i18n:
|
||||
|
||||
### Карта відповідальності за бюджет контексту
|
||||
|
||||
OpenClaw має кілька високонавантажених бюджетів запиту/контексту, і вони
|
||||
навмисно розділені за підсистемами, замість того щоб проходити через один
|
||||
універсальний параметр.
|
||||
OpenClaw має кілька великих бюджетів запиту/контексту, і вони
|
||||
навмисно розділені між підсистемами, а не проходять через одну загальну
|
||||
ручку налаштування.
|
||||
|
||||
- `agents.defaults.bootstrapMaxChars` /
|
||||
`agents.defaults.bootstrapTotalMaxChars`:
|
||||
звичайне додавання bootstrap-контексту робочого простору.
|
||||
звичайне додавання bootstrap робочого простору.
|
||||
- `agents.defaults.startupContext.*`:
|
||||
одноразова вступна частина запуску `/new` і `/reset`, включно з нещодавніми
|
||||
щоденними файлами `memory/*.md`.
|
||||
одноразова стартова преамбула для `/new` і `/reset`, включно з нещодавніми
|
||||
файлами `memory/*.md` за день.
|
||||
- `skills.limits.*`:
|
||||
компактний список Skills, що додається до системного запиту.
|
||||
компактний список Skills, доданий до системного запиту.
|
||||
- `agents.defaults.contextLimits.*`:
|
||||
обмежені витяги середовища виконання та додані блоки, якими володіє середовище виконання.
|
||||
обмежені уривки середовища виконання та додані блоки, що належать середовищу виконання.
|
||||
- `memory.qmd.limits.*`:
|
||||
фрагмент індексованого пошуку пам’яті та розмір додавання.
|
||||
розмір фрагментів і додавання для індексованого пошуку в пам’яті.
|
||||
|
||||
Використовуйте відповідне перевизначення для конкретного агента лише тоді, коли
|
||||
одному агенту потрібен інший бюджет:
|
||||
одному агенту потрібен інший
|
||||
бюджет:
|
||||
|
||||
- `agents.list[].skillsLimits.maxSkillsPromptChars`
|
||||
- `agents.list[].contextLimits.*`
|
||||
|
||||
#### `agents.defaults.startupContext`
|
||||
|
||||
Керує вступною частиною першого ходу, яка додається під час простих запусків `/new` і `/reset`.
|
||||
Керує стартовою преамбулою першого ходу, що додається під час базових запусків `/new` і `/reset`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -187,18 +188,17 @@ OpenClaw має кілька високонавантажених бюджеті
|
||||
}
|
||||
```
|
||||
|
||||
- `memoryGetMaxChars`: типовий ліміт витягу `memory_get` до додавання метаданих
|
||||
обрізання та повідомлення про продовження.
|
||||
- `memoryGetDefaultLines`: типове вікно рядків для `memory_get`, якщо `lines`
|
||||
- `memoryGetMaxChars`: типове обмеження уривка `memory_get` до того, як буде додано
|
||||
метадані обрізання та повідомлення про продовження.
|
||||
- `memoryGetDefaultLines`: типове вікно рядків для `memory_get`, коли `lines`
|
||||
не вказано.
|
||||
- `toolResultMaxChars`: ліміт результату інструмента в реальному часі, який використовується для збережених результатів і
|
||||
- `toolResultMaxChars`: обмеження результату інструмента в реальному часі, що використовується для збережених результатів і
|
||||
відновлення після переповнення.
|
||||
- `postCompactionMaxChars`: ліміт витягу AGENTS.md, що використовується під час додавання
|
||||
оновлення після Compaction.
|
||||
- `postCompactionMaxChars`: обмеження уривка `AGENTS.md`, що використовується під час додавання оновлення після Compaction.
|
||||
|
||||
#### `agents.list[].contextLimits`
|
||||
|
||||
Перевизначення для конкретного агента для спільних параметрів `contextLimits`. Не вказані поля успадковуються
|
||||
Перевизначення для конкретного агента для спільних параметрів `contextLimits`. Поля, які не вказано, успадковуються
|
||||
з `agents.defaults.contextLimits`.
|
||||
|
||||
```json5
|
||||
@ -225,7 +225,7 @@ OpenClaw має кілька високонавантажених бюджеті
|
||||
|
||||
#### `skills.limits.maxSkillsPromptChars`
|
||||
|
||||
Глобальний ліміт для компактного списку Skills, що додається до системного запиту. Це
|
||||
Глобальне обмеження для компактного списку Skills, що додається до системного запиту. Це
|
||||
не впливає на читання файлів `SKILL.md` на вимогу.
|
||||
|
||||
```json5
|
||||
@ -259,11 +259,11 @@ OpenClaw має кілька високонавантажених бюджеті
|
||||
|
||||
### `agents.defaults.imageMaxDimensionPx`
|
||||
|
||||
Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень транскрипту/інструментів перед викликами провайдера.
|
||||
Максимальний розмір у пікселях для довшого боку зображення в блоках зображень транскрипту/інструментів перед викликами провайдера.
|
||||
Типове значення: `1200`.
|
||||
|
||||
Менші значення зазвичай зменшують використання vision-токенів і розмір корисного навантаження запиту для сценаріїв із великою кількістю знімків екрана.
|
||||
Більші значення зберігають більше візуальних деталей.
|
||||
Нижчі значення зазвичай зменшують використання візуальних токенів і розмір корисного навантаження запиту для сценаріїв із великою кількістю знімків екрана.
|
||||
Вищі значення зберігають більше візуальних деталей.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -323,7 +323,7 @@ OpenClaw має кілька високонавантажених бюджеті
|
||||
},
|
||||
params: { cacheRetention: "long" }, // глобальні типові параметри провайдера
|
||||
embeddedHarness: {
|
||||
runtime: "pi", // pi | auto | ідентифікатор зареєстрованого harness, наприклад codex
|
||||
runtime: "pi", // pi | auto | registered harness id, e.g. codex
|
||||
fallback: "pi", // pi | none
|
||||
},
|
||||
pdfMaxBytesMb: 10,
|
||||
@ -342,50 +342,50 @@ OpenClaw має кілька високонавантажених бюджеті
|
||||
|
||||
- `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Форма рядка задає лише основну модель.
|
||||
- Форма об’єкта задає основну модель і впорядкований список резервних моделей.
|
||||
- Форма об’єкта задає основну модель і впорядкований список моделей для відмовостійкого перемикання.
|
||||
- `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Використовується шляхом інструмента `image` як конфігурація його vision-моделі.
|
||||
- Також використовується як маршрут резервного вибору, коли вибрана/типова модель не може приймати вхідні зображення.
|
||||
- Використовується шляхом інструмента `image` як його конфігурація моделі візуального аналізу.
|
||||
- Також використовується для резервної маршрутизації, коли вибрана/типова модель не може приймати вхідні зображення.
|
||||
- `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/Plugin, що генерує зображення.
|
||||
- Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal або `openai/gpt-image-2` для OpenAI Images.
|
||||
- Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2`, `FAL_KEY` для `fal/*`).
|
||||
- Якщо не вказано, `image_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів.
|
||||
- Якщо ви безпосередньо вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2`, `FAL_KEY` для `fal/*`).
|
||||
- Якщо не вказано, `image_generate` усе одно може визначити типовий провайдер на основі автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів.
|
||||
- `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`.
|
||||
- Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.5+`.
|
||||
- Якщо не вказано, `music_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики в порядку ідентифікаторів провайдерів.
|
||||
- Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/API-ключ провайдера.
|
||||
- Якщо не вказано, `music_generate` усе одно може визначити типовий провайдер на основі автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики в порядку ідентифікаторів провайдерів.
|
||||
- Якщо ви безпосередньо вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера/API-ключ.
|
||||
- `videoGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Використовується спільною можливістю генерації відео та вбудованим інструментом `video_generate`.
|
||||
- Типові значення: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` або `qwen/wan2.7-r2v`.
|
||||
- Якщо не вказано, `video_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео в порядку ідентифікаторів провайдерів.
|
||||
- Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/API-ключ провайдера.
|
||||
- Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд, а також параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` і `watermark`.
|
||||
- Якщо не вказано, `video_generate` усе одно може визначити типовий провайдер на основі автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео в порядку ідентифікаторів провайдерів.
|
||||
- Якщо ви безпосередньо вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера/API-ключ.
|
||||
- Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
|
||||
- `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
|
||||
- Використовується інструментом `pdf` для маршрутизації моделі.
|
||||
- Якщо не вказано, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сеансу/типової моделі.
|
||||
- `pdfMaxBytesMb`: типовий ліміт розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику.
|
||||
- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує резервний режим витягування в інструменті `pdf`.
|
||||
- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`.
|
||||
- Використовується інструментом `pdf` для маршрутизації моделей.
|
||||
- Якщо не вказано, інструмент PDF використовує `imageModel`, а потім визначену модель сесії/типову модель.
|
||||
- `pdfMaxBytesMb`: типове обмеження розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику.
|
||||
- `pdfMaxPages`: типова максимальна кількість сторінок, що враховуються режимом резервного вилучення в інструменті `pdf`.
|
||||
- `verboseDefault`: типовий рівень докладності для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`.
|
||||
- `elevatedDefault`: типовий рівень розширеного виводу для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`.
|
||||
- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо опустити провайдера, OpenClaw спочатку пробує псевдонім, потім унікальний збіг налаштованого провайдера для цього точного ідентифікатора моделі, і лише після цього повертається до налаштованого типового провайдера (застаріла поведінка сумісності, тому краще явно вказувати `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw повертається до першого налаштованого провайдера/моделі замість показу застарілого типового значення видаленого провайдера.
|
||||
- `models`: налаштований каталог моделей і список дозволених значень для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`, `extra_body`/`extraBody`).
|
||||
- Безпечне редагування: використовуйте `openclaw config set agents.defaults.models '<json>' --strict-json --merge`, щоб додавати записи. `config set` відмовляється від замін, які видалили б наявні записи списку дозволених значень, якщо не передати `--replace`.
|
||||
- Потоки configure/onboarding з областю дії провайдера об’єднують вибрані моделі провайдера в цю мапу й зберігають уже налаштованих не пов’язаних провайдерів.
|
||||
- Для прямих моделей OpenAI Responses автоматично вмикається серверний Compaction. Використовуйте `params.responsesServerCompaction: false`, щоб припинити додавання `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [Серверний Compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api).
|
||||
- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо ви не вкажете провайдера, OpenClaw спочатку спробує псевдонім, потім унікальний збіг серед налаштованих провайдерів для цього точного ідентифікатора моделі, і лише потім повернеться до налаштованого типового провайдера (застаріла сумісна поведінка, тому краще вказувати явний `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переключиться на першу налаштовану пару провайдер/модель замість показу застарілої типової моделі вилученого провайдера.
|
||||
- `models`: налаштований каталог моделей і список дозволів для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`, `extra_body`/`extraBody`).
|
||||
- Безпечні зміни: використовуйте `openclaw config set agents.defaults.models '<json>' --strict-json --merge`, щоб додавати записи. `config set` відхиляє заміни, які видалили б наявні записи зі списку дозволів, якщо не передати `--replace`.
|
||||
- Потоки налаштування/онбордингу в межах провайдера об’єднують вибрані моделі провайдера в цю мапу та зберігають уже налаштованих, не пов’язаних із цим провайдерів.
|
||||
- Для безпосередніх моделей OpenAI Responses ущільнення на стороні сервера вмикається автоматично. Використовуйте `params.responsesServerCompaction: false`, щоб припинити додавати `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [Server-side Compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api).
|
||||
- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`).
|
||||
- Пріоритет об’єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), потім `agents.list[].params` (відповідний `id` агента) перевизначає за ключем. Подробиці див. у [Кешування запитів](/uk/reference/prompt-caching).
|
||||
- `params.extra_body`/`params.extraBody`: розширений JSON прямої передачі, що об’єднується з тілами запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, додаткове тіло має пріоритет; після цього не нативні маршрути completions усе одно прибирають специфічний для OpenAI параметр `store`.
|
||||
- `embeddedHarness`: типова політика низькорівневого середовища виконання вбудованого агента. Якщо `runtime` не вказано, типовим є OpenClaw Pi. Використовуйте `runtime: "pi"`, щоб примусово вибрати вбудований harness PI, `runtime: "auto"`, щоб дозволити зареєстрованим Plugin harness перехоплювати підтримувані моделі, або зареєстрований ідентифікатор harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI. Явні середовища виконання Plugin, як-от `codex`, типово завершуються із забороною, якщо в тій самій області перевизначення не встановити `fallback: "pi"`. Використовуйте канонічний формат посилань на моделі `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші бекенди виконання через конфігурацію середовища виконання, а не через застарілі префікси провайдерів середовища виконання. Див. [Середовища виконання агента](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору провайдера/моделі.
|
||||
- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення резервних значень), зберігають канонічну форму об’єкта й за можливості зберігають наявні списки резервних значень.
|
||||
- `maxConcurrent`: максимальна кількість паралельних запусків агентів у межах сеансів (кожен сеанс усе одно серіалізовано). Типове значення: 4.
|
||||
- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається через `agents.defaults.models["provider/model"].params` (для конкретної моделі), а потім `agents.list[].params` (для відповідного ідентифікатора агента) перевизначає за ключем. Докладніше див. у [Кешування запитів](/uk/reference/prompt-caching).
|
||||
- `params.extra_body`/`params.extraBody`: розширений JSON для прямої передачі, який об’єднується з тілами запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, додаткове тіло має пріоритет; маршрути завершення, що не є нативними, усе одно потім видаляють специфічний для OpenAI параметр `store`.
|
||||
- `embeddedHarness`: типова політика низькорівневого середовища виконання вбудованого агента. Якщо `runtime` не вказано, типово використовується OpenClaw Pi. Використовуйте `runtime: "pi"`, щоб примусово застосовувати вбудований harness PI, `runtime: "auto"`, щоб дозволити зареєстрованим harness із Plugin перехоплювати підтримувані моделі, або зареєстрований ідентифікатор harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI. Явні середовища виконання Plugin, такі як `codex`, типово працюють у режимі fail closed, якщо в тій самій області перевизначення не встановити `fallback: "pi"`. Зберігайте посилання на моделі в канонічному форматі `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші бекенди виконання через конфігурацію середовища виконання, а не через застарілі префікси провайдерів середовища виконання. Див. [Середовища виконання агента](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору провайдера/моделі.
|
||||
- Засоби запису конфігурації, що змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення резервних варіантів), зберігають канонічну форму об’єкта та, за можливості, зберігають наявні списки резервних варіантів.
|
||||
- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно послідовна). Типове значення: 4.
|
||||
|
||||
### `agents.defaults.embeddedHarness`
|
||||
|
||||
`embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента.
|
||||
Більшість розгортань мають залишати типове середовище виконання OpenClaw Pi.
|
||||
Використовуйте це, коли довірений Plugin надає нативний harness, наприклад вбудований
|
||||
У більшості розгортань варто залишити типове середовище виконання OpenClaw Pi.
|
||||
Використовуйте його, коли довірений Plugin надає нативний harness, наприклад вбудований
|
||||
harness сервера застосунку Codex. Для розуміння моделі див.
|
||||
[Середовища виконання агента](/uk/concepts/agent-runtimes).
|
||||
|
||||
@ -403,14 +403,14 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
}
|
||||
```
|
||||
|
||||
- `runtime`: `"auto"`, `"pi"` або ідентифікатор зареєстрованого Plugin harness. Вбудований Plugin Codex реєструє `codex`.
|
||||
- `fallback`: `"pi"` або `"none"`. У режимі `runtime: "auto"` пропущене резервне значення типово дорівнює `"pi"`, щоб старі конфігурації могли й далі використовувати PI, коли жоден Plugin harness не перехоплює запуск. У режимі явного середовища виконання Plugin, наприклад `runtime: "codex"`, пропущене резервне значення типово дорівнює `"none"`, щоб відсутній harness призводив до помилки замість тихого використання PI. Перевизначення середовища виконання не успадковують `fallback` із ширшої області; задайте `fallback: "pi"` разом з явним `runtime`, коли навмисно хочете таку сумісність. Помилки вибраного Plugin harness завжди показуються напряму.
|
||||
- `runtime`: `"auto"`, `"pi"` або зареєстрований ідентифікатор harness Plugin. Вбудований Plugin Codex реєструє `codex`.
|
||||
- `fallback`: `"pi"` або `"none"`. У режимі `runtime: "auto"` не вказаний `fallback` типово дорівнює `"pi"`, щоб старі конфігурації могли й далі використовувати PI, коли жоден harness Plugin не перехоплює запуск. У режимі явного середовища виконання Plugin, наприклад `runtime: "codex"`, не вказаний `fallback` типово дорівнює `"none"`, щоб відсутній harness завершувався помилкою замість мовчазного переходу на PI. Перевизначення середовища виконання не успадковують `fallback` із ширшої області; установіть `fallback: "pi"` поруч із явним `runtime`, якщо ви свідомо хочете таку сумісність. Помилки вибраного harness Plugin завжди показуються безпосередньо.
|
||||
- Перевизначення через змінні середовища: `OPENCLAW_AGENT_RUNTIME=<id|auto|pi>` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=pi|none` перевизначає `fallback` для цього процесу.
|
||||
- Для розгортань лише з Codex установіть `model: "openai/gpt-5.5"` і `embeddedHarness.runtime: "codex"`. Ви також можете явно встановити `embeddedHarness.fallback: "none"` для читабельності; це типове значення для явних середовищ виконання Plugin.
|
||||
- Вибір harness фіксується для кожного `session id` після першого вбудованого запуску. Зміни конфігурації/змінних середовища впливають на нові або скинуті сеанси, але не на наявний транскрипт. Застарілі сеанси з історією транскрипту, але без записаної фіксації, вважаються прив’язаними до PI. `/status` показує фактичне середовище виконання, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`.
|
||||
- Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музика, відео та TTS і далі використовують свої налаштування провайдера/моделі.
|
||||
- Для розгортань лише з Codex установіть `model: "openai/gpt-5.5"` і `embeddedHarness.runtime: "codex"`. Для наочності також можна явно встановити `embeddedHarness.fallback: "none"`; це типове значення для явних середовищ виконання Plugin.
|
||||
- Вибір harness фіксується для кожного ідентифікатора сесії після першого вбудованого запуску. Зміни конфігурації/змінних середовища впливають на нові або скинуті сесії, але не на наявну транскрипцію. Застарілі сесії з історією транскрипту, але без зафіксованого вибору, вважаються прив’язаними до PI. `/status` повідомляє про фактичне середовище виконання, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`.
|
||||
- Це керує лише harness вбудованого чату. Генерація медіа, візуальний аналіз, PDF, музика, відео й TTS усе одно використовують свої параметри провайдера/моделі.
|
||||
|
||||
**Вбудовані скорочення-псевдоніми** (застосовуються лише коли модель є в `agents.defaults.models`):
|
||||
**Вбудовані скорочені псевдоніми** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
|
||||
|
||||
| Псевдонім | Модель |
|
||||
| ------------------- | -------------------------------------------------- |
|
||||
@ -423,11 +423,11 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
| `gemini-flash` | `google/gemini-3-flash-preview` |
|
||||
| `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` |
|
||||
|
||||
Ваші налаштовані псевдоніми завжди мають пріоритет над типовими.
|
||||
Налаштовані вами псевдоніми завжди мають пріоритет над типовими.
|
||||
|
||||
Для моделей Z.AI GLM-4.x автоматично вмикається режим thinking, якщо ви не встановите `--thinking off` або самі не визначите `agents.defaults.models["zai/<model>"].params.thinking`.
|
||||
Для моделей Z.AI за замовчуванням увімкнено `tool_stream` для потокової передачі викликів інструментів. Установіть `agents.defaults.models["zai/<model>"].params.tool_stream` у `false`, щоб вимкнути його.
|
||||
Для моделей Anthropic Claude 4.6 типово використовується thinking `adaptive`, якщо не задано явний рівень thinking.
|
||||
Для моделей Z.AI GLM-4.x режим мислення вмикається автоматично, якщо ви не встановите `--thinking off` або самостійно не визначите `agents.defaults.models["zai/<model>"].params.thinking`.
|
||||
Для моделей Z.AI типово вмикається `tool_stream` для потокової передачі викликів інструментів. Установіть `agents.defaults.models["zai/<model>"].params.tool_stream` в `false`, щоб вимкнути це.
|
||||
Для моделей Anthropic Claude 4.6 типово використовується режим мислення `adaptive`, якщо явний рівень мислення не задано.
|
||||
|
||||
### `agents.defaults.cliBackends`
|
||||
|
||||
@ -460,8 +460,8 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
```
|
||||
|
||||
- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені.
|
||||
- Сеанси підтримуються, якщо задано `sessionArg`.
|
||||
- Передача зображень підтримується, якщо `imageArg` приймає шляхи до файлів.
|
||||
- Сесії підтримуються, якщо задано `sessionArg`.
|
||||
- Пряма передача зображень підтримується, коли `imageArg` приймає шляхи до файлів.
|
||||
|
||||
### `agents.defaults.systemPromptOverride`
|
||||
|
||||
@ -479,7 +479,7 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
|
||||
### `agents.defaults.promptOverlays`
|
||||
|
||||
Незалежні від провайдера накладки запитів, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний контракт поведінки між провайдерами; `personality` керує лише шаром дружнього стилю взаємодії.
|
||||
Незалежні від провайдера накладки запиту, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний контракт поведінки між провайдерами; `personality` керує лише шаром дружнього стилю взаємодії.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -496,7 +496,7 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
```
|
||||
|
||||
- `"friendly"` (типове значення) і `"on"` вмикають шар дружнього стилю взаємодії.
|
||||
- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 залишається увімкненим.
|
||||
- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 залишається ввімкненим.
|
||||
- Застаріле `plugins.entries.openai.config.personality` усе ще зчитується, якщо цей спільний параметр не задано.
|
||||
|
||||
### `agents.defaults.heartbeat`
|
||||
@ -511,12 +511,12 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
every: "30m", // 0m вимикає
|
||||
model: "openai/gpt-5.4-mini",
|
||||
includeReasoning: false,
|
||||
includeSystemPromptSection: true, // типове значення: true; false прибирає розділ Heartbeat із системного запиту
|
||||
lightContext: false, // типове значення: false; true залишає лише HEARTBEAT.md з bootstrap-файлів робочого простору
|
||||
isolatedSession: false, // типове значення: false; true запускає кожен heartbeat у новому сеансі (без історії розмови)
|
||||
includeSystemPromptSection: true, // типове значення: true; false не додає розділ Heartbeat до системного запиту
|
||||
lightContext: false, // типове значення: false; true залишає лише HEARTBEAT.md із bootstrap-файлів робочого простору
|
||||
isolatedSession: false, // типове значення: false; true запускає кожен Heartbeat у новій сесії (без історії розмови)
|
||||
session: "main",
|
||||
to: "+15555550123",
|
||||
directPolicy: "allow", // allow (типово) | block
|
||||
directPolicy: "allow", // allow (типове значення) | block
|
||||
target: "none", // типове значення: none | варіанти: last | whatsapp | telegram | discord | ...
|
||||
prompt: "Read HEARTBEAT.md if it exists...",
|
||||
ackMaxChars: 300,
|
||||
@ -528,15 +528,15 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
}
|
||||
```
|
||||
|
||||
- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація API-ключем) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути.
|
||||
- `includeSystemPromptSection`: якщо `false`, прибирає розділ Heartbeat із системного запиту та пропускає додавання `HEARTBEAT.md` до bootstrap-контексту. Типове значення: `true`.
|
||||
- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація API-ключем) або `1h` (OAuth-автентифікація). Установіть `0m`, щоб вимкнути.
|
||||
- `includeSystemPromptSection`: якщо `false`, не додає розділ Heartbeat до системного запиту й пропускає додавання `HEARTBEAT.md` до bootstrap-контексту. Типове значення: `true`.
|
||||
- `suppressToolErrorWarnings`: якщо `true`, пригнічує корисні навантаження попереджень про помилки інструментів під час запусків Heartbeat.
|
||||
- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat, після чого його буде перервано. Якщо не задано, використовується `agents.defaults.timeoutSeconds`.
|
||||
- `directPolicy`: політика доставки напряму/в DM. `allow` (типово) дозволяє доставку безпосередньо цілі. `block` пригнічує доставку безпосередньо цілі та видає `reason=dm-blocked`.
|
||||
- `lightContext`: якщо `true`, запуски Heartbeat використовують полегшений bootstrap-контекст і залишають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору.
|
||||
- `isolatedSession`: якщо `true`, кожен Heartbeat запускається в новому сеансі без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує вартість токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів.
|
||||
- Для конкретного агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, **запуски Heartbeat виконуються лише для цих агентів**.
|
||||
- Heartbeat виконує повні ходи агента — коротші інтервали спалюють більше токенів.
|
||||
- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat перед примусовим завершенням. Якщо не вказано, використовується `agents.defaults.timeoutSeconds`.
|
||||
- `directPolicy`: політика прямої доставки/DM. `allow` (типове значення) дозволяє доставку до прямої цілі. `block` пригнічує доставку до прямої цілі й видає `reason=dm-blocked`.
|
||||
- `lightContext`: якщо `true`, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору.
|
||||
- `isolatedSession`: якщо `true`, кожен Heartbeat запускається в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів.
|
||||
- Для конкретного агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускається **лише для цих агентів**.
|
||||
- Heartbeat запускає повноцінні ходи агента — коротші інтервали спалюють більше токенів.
|
||||
|
||||
### `agents.defaults.compaction`
|
||||
|
||||
@ -546,7 +546,7 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
defaults: {
|
||||
compaction: {
|
||||
mode: "safeguard", // default | safeguard
|
||||
provider: "my-provider", // id зареєстрованого Plugin провайдера compaction (необов’язково)
|
||||
provider: "my-provider", // id зареєстрованого Plugin провайдера Compaction (необов’язково)
|
||||
timeoutSeconds: 900,
|
||||
reserveTokensFloor: 24000,
|
||||
keepRecentTokens: 50000,
|
||||
@ -554,8 +554,8 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // використовується, коли identifierPolicy=custom
|
||||
qualityGuard: { enabled: true, maxRetries: 1 },
|
||||
postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне додавання
|
||||
model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для compaction
|
||||
notifyUser: true, // надсилати короткі сповіщення користувачу, коли compaction починається й завершується (типове значення: false)
|
||||
model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для Compaction
|
||||
notifyUser: true, // надсилати короткі повідомлення на початку й після завершення Compaction (типове значення: false)
|
||||
memoryFlush: {
|
||||
enabled: true,
|
||||
softThresholdTokens: 6000,
|
||||
@ -568,21 +568,21 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
}
|
||||
```
|
||||
|
||||
- `mode`: `default` або `safeguard` (підсумовування довгих історій частинами). Див. [Compaction](/uk/concepts/compaction).
|
||||
- `provider`: `id` зареєстрованого Plugin провайдера compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` провайдера. У разі помилки повертається до вбудованого варіанта. Установлення провайдера примусово вмикає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
|
||||
- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції compaction, після чого OpenClaw її перериває. Типове значення: `900`.
|
||||
- `keepRecentTokens`: бюджет точки зрізу Pi для буквального збереження найновішого хвоста транскрипту. Ручний `/compact` враховує це, коли значення явно задано; інакше ручний compaction є жорсткою контрольною точкою.
|
||||
- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування compaction.
|
||||
- `identifierInstructions`: необов’язковий власний текст для збереження ідентифікаторів, що використовується, коли `identifierPolicy=custom`.
|
||||
- `qualityGuard`: перевірки з повторною спробою при некоректному виводі для підсумків safeguard. Типово ввімкнено в режимі safeguard; установіть `enabled: false`, щоб пропустити аудит.
|
||||
- `postCompactionSections`: необов’язкові назви розділів AGENTS.md рівня H2/H3 для повторного додавання після compaction. Типове значення: `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне додавання. Якщо параметр не задано або явно встановлено цю типову пару, старіші заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант.
|
||||
- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування compaction. Використовуйте це, коли основний сеанс має залишатися на одній моделі, а підсумки compaction мають працювати на іншій; якщо не задано, compaction використовує основну модель сеансу.
|
||||
- `notifyUser`: якщо `true`, надсилає користувачу короткі сповіщення, коли compaction починається і коли він завершується (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб compaction залишався безшумним.
|
||||
- `memoryFlush`: тихий агентний хід перед автоматичним compaction для збереження довготривалих спогадів. Пропускається, якщо робочий простір доступний лише для читання.
|
||||
- `mode`: `default` або `safeguard` (підсумовування частинами для довгих історій). Див. [Compaction](/uk/concepts/compaction).
|
||||
- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` цього провайдера. У разі помилки повертається до вбудованого варіанта. Установлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
|
||||
- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, після чого OpenClaw її перериває. Типове значення: `900`.
|
||||
- `keepRecentTokens`: бюджет точки відсікання Pi для дослівного збереження найновішого хвоста транскрипту. Ручний `/compact` враховує це, якщо значення явно задано; інакше ручна Compaction є жорсткою контрольною точкою.
|
||||
- `identifierPolicy`: `strict` (типове значення), `off` або `custom`. `strict` додає вбудовані інструкції щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction.
|
||||
- `identifierInstructions`: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
|
||||
- `qualityGuard`: перевірки повторної спроби в разі неправильного формату виводу для підсумків safeguard. Типово ввімкнено в режимі safeguard; установіть `enabled: false`, щоб пропустити перевірку.
|
||||
- `postCompactionSections`: необов’язкові назви розділів H2/H3 у `AGENTS.md`, які повторно додаються після Compaction. Типове значення — `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне додавання. Якщо не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як резервний варіант для застарілих конфігурацій.
|
||||
- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction повинні виконуватися на іншій; якщо не задано, Compaction використовує основну модель сесії.
|
||||
- `notifyUser`: якщо `true`, надсилає користувачеві короткі повідомлення, коли Compaction починається й коли завершується (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб Compaction виконувалася безшумно.
|
||||
- `memoryFlush`: безшумний агентний хід перед автоматичною Compaction для збереження довготривалих спогадів. Пропускається, якщо робочий простір доступний лише для читання.
|
||||
|
||||
### `agents.defaults.contextPruning`
|
||||
|
||||
Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сеансу на диску.
|
||||
Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сесії на диску.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -607,24 +607,24 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
<Accordion title="Поведінка режиму cache-ttl">
|
||||
|
||||
- `mode: "cache-ttl"` вмикає проходи обрізання.
|
||||
- `ttl` визначає, як часто обрізання можна запускати знову (після останнього торкання кешу).
|
||||
- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім за потреби повністю очищає старіші результати інструментів.
|
||||
- `ttl` керує тим, як часто обрізання може виконуватися знову (після останнього звернення до кешу).
|
||||
- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, за потреби, повністю очищає старіші результати інструментів.
|
||||
|
||||
**М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині.
|
||||
|
||||
**Повне очищення** замінює весь результат інструмента на заповнювач.
|
||||
**Повне очищення** замінює весь результат інструмента заповнювачем.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Блоки зображень ніколи не обрізаються і не очищаються.
|
||||
- Співвідношення обчислюються за символами (приблизно), а не за точною кількістю токенів.
|
||||
- Якщо повідомлень асистента менше, ніж `keepLastAssistants`, обрізання пропускається.
|
||||
- Блоки зображень ніколи не обрізаються й не очищаються.
|
||||
- Співвідношення базуються на кількості символів (приблизно), а не на точній кількості токенів.
|
||||
- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається.
|
||||
|
||||
</Accordion>
|
||||
|
||||
Подробиці поведінки див. у [Обрізання сеансів](/uk/concepts/session-pruning).
|
||||
Докладніше про поведінку див. у [Обрізання сесії](/uk/concepts/session-pruning).
|
||||
|
||||
### Потокова передача блоками
|
||||
### Блокове потокове передавання
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -640,11 +640,11 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
}
|
||||
```
|
||||
|
||||
- Для каналів, відмінних від Telegram, щоб увімкнути блокові відповіді, потрібно явно вказати `*.blockStreaming: true`.
|
||||
- Перевизначення для каналів: `channels.<channel>.blockStreamingCoalesce` (і варіанти для конкретного облікового запису). Для Signal/Slack/Discord/Google Chat типове значення `minChars: 1500`.
|
||||
- Для каналів, відмінних від Telegram, потрібно явно вказати `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
|
||||
- Перевизначення для каналів: `channels.<channel>.blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типовим є `minChars: 1500`.
|
||||
- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для конкретного агента: `agents.list[].humanDelay`.
|
||||
|
||||
Подробиці поведінки й розбиття на частини див. у [Потокова передача](/uk/concepts/streaming).
|
||||
Докладніше про поведінку та розбиття на частини див. у [Потокове передавання](/uk/concepts/streaming).
|
||||
|
||||
### Індикатори набору тексту
|
||||
|
||||
@ -660,7 +660,7 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
```
|
||||
|
||||
- Типові значення: `instant` для прямих чатів/згадок, `message` для групових чатів без згадки.
|
||||
- Перевизначення для конкретного сеансу: `session.typingMode`, `session.typingIntervalSeconds`.
|
||||
- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`.
|
||||
|
||||
Див. [Індикатори набору тексту](/uk/concepts/typing-indicators).
|
||||
|
||||
@ -668,7 +668,7 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
|
||||
### `agents.defaults.sandbox`
|
||||
|
||||
Необов’язкова ізоляція sandbox для вбудованого агента. Повний посібник див. у [Ізоляція sandbox](/uk/gateway/sandboxing).
|
||||
Необов’язкова пісочниця для вбудованого агента. Повний посібник див. у [Пісочниця](/uk/gateway/sandboxing).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -763,52 +763,52 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Деталі sandbox">
|
||||
<Accordion title="Деталі пісочниці">
|
||||
|
||||
**Бекенд:**
|
||||
|
||||
- `docker`: локальне середовище виконання Docker (типово)
|
||||
- `ssh`: універсальне віддалене середовище виконання на основі SSH
|
||||
- `docker`: локальне середовище виконання Docker (типове)
|
||||
- `ssh`: загальне віддалене середовище виконання на базі SSH
|
||||
- `openshell`: середовище виконання OpenShell
|
||||
|
||||
Коли вибрано `backend: "openshell"`, налаштування, специфічні для середовища виконання, переносяться до
|
||||
Коли вибрано `backend: "openshell"`, параметри, специфічні для середовища виконання, переміщуються до
|
||||
`plugins.entries.openshell.config`.
|
||||
|
||||
**Конфігурація SSH-бекенда:**
|
||||
|
||||
- `target`: ціль SSH у форматі `user@host[:port]`
|
||||
- `command`: команда клієнта SSH (типове значення: `ssh`)
|
||||
- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів за областю дії
|
||||
- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, які передаються в OpenSSH
|
||||
- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує у тимчасові файли під час виконання
|
||||
- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хостів OpenSSH
|
||||
- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів у межах області
|
||||
- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються до OpenSSH
|
||||
- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує в тимчасові файли під час виконання
|
||||
- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH
|
||||
|
||||
**Пріоритет SSH-автентифікації:**
|
||||
**Пріоритет автентифікації SSH:**
|
||||
|
||||
- `identityData` має пріоритет над `identityFile`
|
||||
- `certificateData` має пріоритет над `certificateFile`
|
||||
- `knownHostsData` має пріоритет над `knownHostsFile`
|
||||
- Значення `*Data`, що спираються на SecretRef, визначаються з активного знімка середовища виконання секретів до початку сеансу sandbox
|
||||
- Значення `*Data`, прив’язані до SecretRef, розв’язуються з активного знімка середовища виконання секретів до початку сесії sandbox
|
||||
|
||||
**Поведінка SSH-бекенда:**
|
||||
|
||||
- один раз ініціалізує віддалений робочий простір після створення або повторного створення
|
||||
- потім зберігає віддалений робочий простір SSH як канонічний
|
||||
- маршрутизує `exec`, файлові інструменти та шляхи до медіа через SSH
|
||||
- не синхронізує автоматично віддалені зміни назад на хост
|
||||
- потім підтримує віддалений робочий простір SSH як канонічний
|
||||
- маршрутизує `exec`, файлові інструменти та шляхи медіа через SSH
|
||||
- не синхронізує віддалені зміни назад на хост автоматично
|
||||
- не підтримує браузерні контейнери sandbox
|
||||
|
||||
**Доступ до робочого простору:**
|
||||
|
||||
- `none`: робочий простір sandbox за областю дії в `~/.openclaw/sandboxes`
|
||||
- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента монтується лише для читання в `/agent`
|
||||
- `rw`: робочий простір агента монтується для читання й запису в `/workspace`
|
||||
- `none`: робочий простір sandbox у межах області під `~/.openclaw/sandboxes`
|
||||
- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента змонтовано лише для читання в `/agent`
|
||||
- `rw`: робочий простір агента змонтовано для читання/запису в `/workspace`
|
||||
|
||||
**Область дії:**
|
||||
**Область:**
|
||||
|
||||
- `session`: окремий контейнер і робочий простір для кожного сеансу
|
||||
- `agent`: один контейнер і робочий простір для кожного агента (типово)
|
||||
- `shared`: спільний контейнер і робочий простір (без ізоляції між сеансами)
|
||||
- `session`: окремий контейнер + робочий простір для кожної сесії
|
||||
- `agent`: один контейнер + робочий простір на агента (типове значення)
|
||||
- `shared`: спільний контейнер і робочий простір (без ізоляції між сесіями)
|
||||
|
||||
**Конфігурація Plugin OpenShell:**
|
||||
|
||||
@ -839,29 +839,29 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
**Режим OpenShell:**
|
||||
|
||||
- `mirror`: перед `exec` ініціалізує віддалене середовище з локального, після `exec` синхронізує назад; локальний робочий простір залишається канонічним
|
||||
- `remote`: один раз ініціалізує віддалене середовище, коли створюється sandbox, а потім зберігає віддалений робочий простір як канонічний
|
||||
- `remote`: один раз ініціалізує віддалене середовище під час створення sandbox, а потім підтримує віддалений робочий простір як канонічний
|
||||
|
||||
У режимі `remote` зміни на локальному хості, зроблені поза OpenClaw, не синхронізуються автоматично до sandbox після кроку ініціалізації.
|
||||
У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку ініціалізації.
|
||||
Транспортом є SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою синхронізацією mirror.
|
||||
|
||||
**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, записуваного кореня та користувача root.
|
||||
**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує вихідного доступу до мережі, кореневої файлової системи з можливістю запису та користувача root.
|
||||
|
||||
**Для контейнерів типово використовується `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ.
|
||||
**Для контейнерів типово задано `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ.
|
||||
`"host"` заблоковано. `"container:<id>"` типово заблоковано, якщо ви явно не встановите
|
||||
`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний обхід).
|
||||
`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний режим).
|
||||
|
||||
**Вхідні вкладення** розміщуються в `media/inbound/*` в активному робочому просторі.
|
||||
|
||||
**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для конкретного агента об’єднуються.
|
||||
|
||||
**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC додається до системного запиту. Не потребує `browser.enabled` у `openclaw.json`.
|
||||
Доступ спостерігача noVNC типово використовує автентифікацію VNC, і OpenClaw видає URL із короткоживучим токеном (замість розкриття пароля у спільному URL).
|
||||
Доступ спостерігача noVNC типово використовує автентифікацію VNC, а OpenClaw видає URL із короткоживучим токеном (замість того щоб розкривати пароль у спільному URL).
|
||||
|
||||
- `allowHostControl: false` (типово) блокує для сеансів у sandbox націлювання на браузер хоста.
|
||||
- `network` типово дорівнює `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge`, лише якщо вам явно потрібна глобальна зв’язність bridge.
|
||||
- `cdpSourceRange` за потреби обмежує вхідний доступ CDP на межі контейнера до діапазону CIDR (наприклад `172.21.0.1/32`).
|
||||
- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), воно замінює `docker.binds` для контейнера браузера.
|
||||
- Типові параметри запуску визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для хостів контейнерів:
|
||||
- `allowHostControl: false` (типове значення) блокує спрямування сесій у sandbox до браузера хоста.
|
||||
- `network` типово дорівнює `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge.
|
||||
- `cdpSourceRange` за потреби обмежує вхідний доступ CDP на межі контейнера до діапазону CIDR (наприклад, `172.21.0.1/32`).
|
||||
- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), замінює `docker.binds` для контейнера браузера.
|
||||
- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для хостів контейнерів:
|
||||
- `--remote-debugging-address=127.0.0.1`
|
||||
- `--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>`
|
||||
- `--user-data-dir=${HOME}/.chrome`
|
||||
@ -880,16 +880,16 @@ harness сервера застосунку Codex. Для розуміння м
|
||||
- `--metrics-recording-only`
|
||||
- `--disable-extensions` (типово ввімкнено)
|
||||
- `--disable-3d-apis`, `--disable-software-rasterizer` і `--disable-gpu`
|
||||
типово ввімкнені, і їх можна вимкнути через
|
||||
`OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо для використання WebGL/3D це потрібно.
|
||||
типово ввімкнені й можуть бути вимкнені через
|
||||
`OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо цього вимагає використання WebGL/3D.
|
||||
- `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо ваш робочий процес
|
||||
залежить від них.
|
||||
- `--renderer-process-limit=2` можна змінити через
|
||||
`OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>`; установіть `0`, щоб використовувати
|
||||
типове обмеження кількості процесів Chromium.
|
||||
типове обмеження процесів Chromium.
|
||||
- а також `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`.
|
||||
- Типові значення — це базова конфігурація образу контейнера; використовуйте власний образ браузера з власною
|
||||
entrypoint, щоб змінити типові параметри контейнера.
|
||||
- Типові значення є базовими для образу контейнера; щоб змінити типові параметри контейнера, використовуйте власний браузерний образ із власною
|
||||
точкою входу.
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -915,11 +915,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
workspace: "~/.openclaw/workspace",
|
||||
agentDir: "~/.openclaw/agents/main/agent",
|
||||
model: "anthropic/claude-opus-4-6", // або { primary, fallbacks }
|
||||
thinkingDefault: "high", // перевизначення рівня thinking для конкретного агента
|
||||
thinkingDefault: "high", // перевизначення рівня мислення для конкретного агента
|
||||
reasoningDefault: "on", // перевизначення видимості reasoning для конкретного агента
|
||||
fastModeDefault: false, // перевизначення fast mode для конкретного агента
|
||||
fastModeDefault: false, // перевизначення швидкого режиму для конкретного агента
|
||||
embeddedHarness: { runtime: "auto", fallback: "pi" },
|
||||
params: { cacheRetention: "none" }, // перевизначає за ключем відповідні params у defaults.models
|
||||
params: { cacheRetention: "none" }, // перевизначає ключі у matching defaults.models params
|
||||
skills: ["docs-search"], // замінює agents.defaults.skills, якщо задано
|
||||
identity: {
|
||||
name: "Samantha",
|
||||
@ -952,20 +952,20 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
```
|
||||
|
||||
- `id`: стабільний ідентифікатор агента (обов’язково).
|
||||
- `default`: якщо задано для кількох агентів, перемагає перший (записується попередження). Якщо не задано ні для кого, типовим стає перший запис у списку.
|
||||
- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні резервні значення). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові `fallbacks`, якщо не встановити `fallbacks: []`.
|
||||
- `params`: параметри потоку для конкретного агента, об’єднані поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних для агента перевизначень, як-от `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей.
|
||||
- `skills`: необов’язковий список дозволених Skills для конкретного агента. Якщо не задано, агент успадковує `agents.defaults.skills`, коли його задано; явний список замінює типові значення замість об’єднання, а `[]` означає відсутність Skills.
|
||||
- `thinkingDefault`: необов’язковий типовий рівень thinking для конкретного агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не встановлено перевизначення для конкретного повідомлення або сеансу. Вибраний профіль провайдера/моделі визначає, які значення припустимі; для Google Gemini `adaptive` зберігає динамічний thinking, яким керує провайдер (`thinkingLevel` не передається в Gemini 3/3.1, `thinkingBudget: -1` у Gemini 2.5).
|
||||
- `reasoningDefault`: необов’язкове типове значення видимості reasoning для конкретного агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для конкретного повідомлення або сеансу.
|
||||
- `fastModeDefault`: необов’язкове типове значення fast mode для конкретного агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для конкретного повідомлення або сеансу.
|
||||
- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для конкретного агента. Використовуйте `{ runtime: "codex" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний PI у режимі `auto`.
|
||||
- `runtime`: необов’язковий дескриптор середовища виконання для конкретного агента. Використовуйте `type: "acp"` разом із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово працювати в сеансах ACP harness.
|
||||
- `default`: якщо задано для кількох агентів, перший має пріоритет (записується попередження). Якщо не задано ні для кого, типовим стає перший запис у списку.
|
||||
- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні резервні варіанти). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові `fallbacks`, якщо не встановити `fallbacks: []`.
|
||||
- `params`: параметри потоку для конкретного агента, що об’єднуються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних перевизначень агента, як-от `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей.
|
||||
- `skills`: необов’язковий список дозволених Skills для конкретного агента. Якщо не задано, агент успадковує `agents.defaults.skills`, коли його вказано; явний список замінює типові значення замість об’єднання, а `[]` означає відсутність Skills.
|
||||
- `thinkingDefault`: необов’язковий типовий рівень мислення для конкретного агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сесії. Вибраний профіль провайдера/моделі керує тим, які значення допустимі; для Google Gemini значення `adaptive` зберігає динамічне мислення, яким керує провайдер (`thinkingLevel` пропущено в Gemini 3/3.1, `thinkingBudget: -1` у Gemini 2.5).
|
||||
- `reasoningDefault`: необов’язкове типове значення видимості reasoning для конкретного агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для повідомлення або сесії.
|
||||
- `fastModeDefault`: необов’язкове типове значення швидкого режиму для конкретного агента (`true | false`). Застосовується, коли не задано перевизначення швидкого режиму для повідомлення або сесії.
|
||||
- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для конкретного агента. Використовуйте `{ runtime: "codex" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний перехід на PI в режимі `auto`.
|
||||
- `runtime`: необов’язковий дескриптор середовища виконання для конкретного агента. Використовуйте `type: "acp"` разом із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії harness ACP.
|
||||
- `identity.avatar`: шлях відносно робочого простору, URL `http(s)` або URI `data:`.
|
||||
- `identity` виводить типові значення: `ackReaction` із `emoji`, `mentionPatterns` із `name`/`emoji`.
|
||||
- `subagents.allowAgents`: список дозволених ідентифікаторів агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент).
|
||||
- Захист успадкування sandbox: якщо сеанс-ініціатор працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox.
|
||||
- `subagents.requireAgentId`: якщо `true`, блокує виклики `sessions_spawn`, де не вказано `agentId` (примушує до явного вибору профілю; типове значення: `false`).
|
||||
- Для `identity` виводяться типові значення: `ackReaction` із `emoji`, `mentionPatterns` із `name`/`emoji`.
|
||||
- `subagents.allowAgents`: список дозволених ідентифікаторів агентів для `sessions_spawn` (`["*"]` = будь-який; типове значення: лише той самий агент).
|
||||
- Захист успадкування sandbox: якщо сесія ініціатора працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox.
|
||||
- `subagents.requireAgentId`: якщо `true`, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (примушує до явного вибору профілю; типове значення: false).
|
||||
|
||||
---
|
||||
|
||||
@ -988,27 +988,27 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
}
|
||||
```
|
||||
|
||||
### Поля відповідності прив’язок
|
||||
### Поля збігу прив’язки
|
||||
|
||||
- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип відсутній, типовим є `route`), `acp` для постійних прив’язок розмов ACP.
|
||||
- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип пропущено, типово використовується route), `acp` для постійних прив’язок розмов ACP.
|
||||
- `match.channel` (обов’язково)
|
||||
- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо пропущено = типовий обліковий запис)
|
||||
- `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`)
|
||||
- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу)
|
||||
- `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }`
|
||||
- `match.guildId` / `match.teamId` (необов’язково; залежить від каналу)
|
||||
- `acp` (необов’язково; лише для записів `type: "acp"`): `{ mode, label, cwd, backend }`
|
||||
|
||||
**Детермінований порядок відповідності:**
|
||||
**Детермінований порядок збігу:**
|
||||
|
||||
1. `match.peer`
|
||||
2. `match.guildId`
|
||||
3. `match.teamId`
|
||||
4. `match.accountId` (точний збіг, без peer/guild/team)
|
||||
5. `match.accountId: "*"` (на рівні каналу)
|
||||
5. `match.accountId: "*"` (на рівні всього каналу)
|
||||
6. Типовий агент
|
||||
|
||||
У межах кожного рівня перемагає перший відповідний запис у `bindings`.
|
||||
У межах кожного рівня перший відповідний запис у `bindings` має пріоритет.
|
||||
|
||||
Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язки маршруту.
|
||||
Для записів `type: "acp"` OpenClaw виконує зіставлення за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язки route.
|
||||
|
||||
### Профілі доступу для конкретного агента
|
||||
|
||||
@ -1105,11 +1105,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
|
||||
</Accordion>
|
||||
|
||||
Подробиці пріоритетів див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
|
||||
Докладніше про пріоритети див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
|
||||
|
||||
---
|
||||
|
||||
## Сеанс
|
||||
## Сесія
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1131,7 +1131,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
},
|
||||
resetTriggers: ["/new", "/reset"],
|
||||
store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
|
||||
parentForkMaxTokens: 100000, // пропускати відгалуження від батьківського потоку вище за цю кількість токенів (0 вимикає)
|
||||
parentForkMaxTokens: 100000, // пропускати розгалуження від батьківського потоку вище цього ліміту токенів (0 вимикає)
|
||||
maintenance: {
|
||||
mode: "warn", // warn | enforce
|
||||
pruneAfter: "30d",
|
||||
@ -1143,8 +1143,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
},
|
||||
threadBindings: {
|
||||
enabled: true,
|
||||
idleHours: 24, // типове автоматичне зняття фокуса після бездіяльності в годинах (`0` вимикає)
|
||||
maxAgeHours: 0, // типове жорстке максимальне обмеження віку в годинах (`0` вимикає)
|
||||
idleHours: 24, // типове автозняття фокуса через неактивність у годинах (`0` вимикає)
|
||||
maxAgeHours: 0, // типовий жорсткий максимальний вік у годинах (`0` вимикає)
|
||||
},
|
||||
mainKey: "main", // застаріле (runtime завжди використовує "main")
|
||||
agentToAgent: { maxPingPongTurns: 5 },
|
||||
@ -1156,37 +1156,37 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Докладно про поля сеансу">
|
||||
<Accordion title="Докладно про поля сесії">
|
||||
|
||||
- **`scope`**: базова стратегія групування сеансів для контекстів групових чатів.
|
||||
- `per-sender` (типово): кожен відправник отримує ізольований сеанс у межах контексту каналу.
|
||||
- `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли потрібен спільний контекст).
|
||||
- **`dmScope`**: як групуються DM.
|
||||
- `main`: усі DM використовують спільний основний сеанс.
|
||||
- **`scope`**: базова стратегія групування сесій для контекстів групового чату.
|
||||
- `per-sender` (типове значення): кожен відправник отримує ізольовану сесію в межах контексту каналу.
|
||||
- `global`: усі учасники в контексті каналу ділять одну сесію (використовуйте лише тоді, коли спільний контекст справді потрібен).
|
||||
- **`dmScope`**: спосіб групування DM.
|
||||
- `main`: усі DM ділять основну сесію.
|
||||
- `per-peer`: ізоляція за ідентифікатором відправника між каналами.
|
||||
- `per-channel-peer`: ізоляція для кожної пари канал + відправник (рекомендовано для вхідних скриньок із кількома користувачами).
|
||||
- `per-account-channel-peer`: ізоляція для кожної пари обліковий запис + канал + відправник (рекомендовано для кількох облікових записів).
|
||||
- **`identityLinks`**: мапа канонічних ідентифікаторів на peers із префіксами провайдерів для спільного використання сеансів між каналами.
|
||||
- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, перемагає той варіант, що спливає раніше.
|
||||
- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як псевдонім для `direct`.
|
||||
- **`parentForkMaxTokens`**: максимальна кількість `totalTokens` у батьківському сеансі, дозволена під час створення відгалуженого сеансу потоку (типове значення `100000`).
|
||||
- Якщо `totalTokens` батьківського сеансу перевищує це значення, OpenClaw запускає новий сеанс потоку замість успадкування історії транскрипту батьківського сеансу.
|
||||
- Установіть `0`, щоб вимкнути цей запобіжник і завжди дозволяти відгалуження від батьківського сеансу.
|
||||
- `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для вхідних скриньок із кількома користувачами).
|
||||
- `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для кількох облікових записів).
|
||||
- **`identityLinks`**: мапа канонічних ідентифікаторів до peer із префіксом провайдера для спільного використання сесії між каналами.
|
||||
- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що завершується раніше.
|
||||
- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застаріле `dm` також приймається як псевдонім для `direct`.
|
||||
- **`parentForkMaxTokens`**: максимальна кількість `totalTokens` у батьківській сесії, дозволена під час створення розгалуженої сесії потоку (типове значення `100000`).
|
||||
- Якщо значення `totalTokens` у батьківській сесії перевищує це значення, OpenClaw починає нову сесію потоку замість успадкування історії транскрипту батьківської сесії.
|
||||
- Установіть `0`, щоб вимкнути цей захист і завжди дозволяти розгалуження від батьківської сесії.
|
||||
- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного кошика прямих чатів.
|
||||
- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів зворотної відповіді між агентами під час обміну агент-до-агента (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong.
|
||||
- **`sendPolicy`**: відповідність за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет.
|
||||
- **`maintenance`**: очищення сховища сеансів і керування зберіганням.
|
||||
- `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення.
|
||||
- `pruneAfter`: поріг віку для застарілих записів (типове значення `30d`).
|
||||
- **`agentToAgent.maxPingPongTurns`**: максимальна кількість відповідей у зворотному напрямку між агентами під час обміну агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong.
|
||||
- **`sendPolicy`**: збіг за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет.
|
||||
- **`maintenance`**: очищення сховища сесій і керування зберіганням.
|
||||
- `mode`: `warn` лише видає попередження; `enforce` застосовує очищення.
|
||||
- `pruneAfter`: поріг давності для застарілих записів (типове значення `30d`).
|
||||
- `maxEntries`: максимальна кількість записів у `sessions.json` (типове значення `500`).
|
||||
- `rotateBytes`: ротує `sessions.json`, коли його розмір перевищує це значення (типове значення `10mb`).
|
||||
- `resetArchiveRetention`: термін зберігання архівів транскриптів `*.reset.<timestamp>`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
|
||||
- `maxDiskBytes`: необов’язковий бюджет місця на диску для каталогу сеансів. У режимі `warn` лише записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сеанси.
|
||||
- `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово `80%` від `maxDiskBytes`.
|
||||
- **`threadBindings`**: глобальні типові значення для функцій сеансів, прив’язаних до потоків.
|
||||
- `rotateBytes`: ротувати `sessions.json`, коли він перевищує цей розмір (типове значення `10mb`).
|
||||
- `resetArchiveRetention`: строк зберігання архівів транскриптів `*.reset.<timestamp>`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
|
||||
- `maxDiskBytes`: необов’язковий бюджет місця на диску для каталогу сесій. У режимі `warn` записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії.
|
||||
- `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово дорівнює `80%` від `maxDiskBytes`.
|
||||
- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до потоків.
|
||||
- `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
|
||||
- `idleHours`: типове автоматичне зняття фокуса після бездіяльності в годинах (`0` вимикає; провайдери можуть перевизначати)
|
||||
- `maxAgeHours`: типове жорстке максимальне обмеження віку в годинах (`0` вимикає; провайдери можуть перевизначати)
|
||||
- `idleHours`: типове автозняття фокуса через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати)
|
||||
- `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати)
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -1226,36 +1226,36 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
|
||||
Перевизначення для каналу/облікового запису: `channels.<channel>.responsePrefix`, `channels.<channel>.accounts.<id>.responsePrefix`.
|
||||
|
||||
Визначення (перемагає найспецифічніше): обліковий запис → канал → глобальне значення. `""` вимикає і зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
|
||||
Порядок визначення (найспецифічніше має пріоритет): обліковий запис → канал → глобальний. `""` вимикає та зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
|
||||
|
||||
**Шаблонні змінні:**
|
||||
**Змінні шаблону:**
|
||||
|
||||
| Змінна | Опис | Приклад |
|
||||
| ----------------- | ---------------------------- | --------------------------- |
|
||||
| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
|
||||
| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
|
||||
| `{provider}` | Назва провайдера | `anthropic` |
|
||||
| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` |
|
||||
| `{identity.name}` | Ім’я ідентичності агента | (те саме, що й `"auto"`) |
|
||||
| Змінна | Опис | Приклад |
|
||||
| ----------------- | ------------------------ | --------------------------- |
|
||||
| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
|
||||
| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
|
||||
| `{provider}` | Назва провайдера | `anthropic` |
|
||||
| `{thinkingLevel}` | Поточний рівень мислення | `high`, `low`, `off` |
|
||||
| `{identity.name}` | Назва ідентичності агента | (те саме, що й `"auto"`) |
|
||||
|
||||
Змінні нечутливі до регістру. `{think}` — це псевдонім для `{thinkingLevel}`.
|
||||
|
||||
### Реакція підтвердження
|
||||
|
||||
- Типово дорівнює `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
|
||||
- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
|
||||
- Перевизначення для каналу: `channels.<channel>.ackReaction`, `channels.<channel>.accounts.<id>.ackReaction`.
|
||||
- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення identity.
|
||||
- Область дії: `group-mentions` (типово), `group-all`, `direct`, `all`.
|
||||
- `removeAckAfterReply`: прибирає реакцію підтвердження після відповіді в Slack, Discord і Telegram.
|
||||
- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram.
|
||||
У Slack і Discord, якщо значення не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
|
||||
У Telegram, щоб увімкнути реакції статусу життєвого циклу, явно встановіть `true`.
|
||||
- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення з ідентичності.
|
||||
- Область: `group-mentions` (типове значення), `group-all`, `direct`, `all`.
|
||||
- `removeAckAfterReply`: видаляє підтвердження після відповіді у Slack, Discord і Telegram.
|
||||
- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу у Slack, Discord і Telegram.
|
||||
У Slack і Discord, якщо не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
|
||||
У Telegram для ввімкнення реакцій статусу життєвого циклу треба явно встановити `true`.
|
||||
|
||||
### Debounce для вхідних повідомлень
|
||||
### Затримка вхідних повідомлень
|
||||
|
||||
Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Команди керування оминають debounce.
|
||||
Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керівні команди обходять цю затримку.
|
||||
|
||||
### TTS (перетворення тексту на мовлення)
|
||||
### TTS (синтез мовлення)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1304,16 +1304,16 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
```
|
||||
|
||||
- `auto` керує типовим режимом автоматичного TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні налаштування, а `/tts status` показує фактичний стан.
|
||||
- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку.
|
||||
- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово дорівнює `false` (явне ввімкнення).
|
||||
- Для API-ключів використовуються резервні значення `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
|
||||
- Вбудовані мовленнєві провайдери належать Plugin. Якщо задано `plugins.allow`, включіть кожен Plugin провайдера TTS, який хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий ідентифікатор провайдера `edge` приймається як псевдонім для `microsoft`.
|
||||
- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумовування.
|
||||
- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово дорівнює `false` (вмикається за бажанням).
|
||||
- API-ключі резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
|
||||
- Вбудовані провайдери мовлення належать Plugin. Якщо задано `plugins.allow`, включіть кожен Plugin провайдера TTS, який хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий ідентифікатор провайдера `edge` приймається як псевдонім для `microsoft`.
|
||||
- `providers.openai.baseUrl` перевизначає кінцеву точку OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`.
|
||||
- Коли `providers.openai.baseUrl` вказує на кінцеву точку, відмінну від OpenAI, OpenClaw розглядає її як OpenAI-сумісний TTS-сервер і послаблює перевірку моделі/голосу.
|
||||
- Коли `providers.openai.baseUrl` вказує на кінцеву точку, відмінну від OpenAI, OpenClaw трактує її як OpenAI-сумісний TTS-сервер і послаблює перевірку моделі/голосу.
|
||||
|
||||
---
|
||||
|
||||
## Talk
|
||||
## Розмова
|
||||
|
||||
Типові значення для режиму Talk (macOS/iOS/Android).
|
||||
|
||||
@ -1332,6 +1332,10 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
outputFormat: "mp3_44100_128",
|
||||
apiKey: "elevenlabs_api_key",
|
||||
},
|
||||
mlx: {
|
||||
modelId: "mlx-community/Soprano-80M-bf16",
|
||||
},
|
||||
system: {},
|
||||
},
|
||||
silenceTimeoutMs: 1500,
|
||||
interruptOnSpeech: true,
|
||||
@ -1339,13 +1343,15 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
|
||||
}
|
||||
```
|
||||
|
||||
- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кількох провайдерів Talk.
|
||||
- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності й автоматично мігруються в `talk.providers.<provider>`.
|
||||
- Для ідентифікаторів голосу використовуються резервні значення `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
|
||||
- `providers.*.apiKey` приймає рядки відкритого тексту або об’єкти SecretRef.
|
||||
- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли API-ключ Talk не налаштовано.
|
||||
- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви.
|
||||
- `silenceTimeoutMs` визначає, скільки часу режим Talk чекає після тиші користувача, перш ніж надіслати транскрипт. Якщо не задано, зберігається типове для платформи вікно паузи (`700 ms` на macOS і Android, `900 ms` на iOS).
|
||||
- `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька провайдерів Talk.
|
||||
- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) існують лише для сумісності й автоматично мігрують до `talk.providers.<provider>`.
|
||||
- Ідентифікатори голосів резервно беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
|
||||
- `providers.*.apiKey` приймає звичайні рядки або об’єкти SecretRef.
|
||||
- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли ключ API Talk не налаштовано.
|
||||
- `providers.*.voiceAliases` дає змогу директивам Talk використовувати зручні назви.
|
||||
- `providers.mlx.modelId` вибирає репозиторій Hugging Face, який використовує локальний помічник MLX у macOS. Якщо не задано, macOS використовує `mlx-community/Soprano-80M-bf16`.
|
||||
- Відтворення MLX у macOS виконується через вбудований помічник `openclaw-mlx-tts`, якщо він є, або через виконуваний файл у `PATH`; `OPENCLAW_MLX_TTS_BIN` перевизначає шлях до помічника для розробки.
|
||||
- `silenceTimeoutMs` керує тим, скільки часу режим Talk чекає після тиші користувача перед надсиланням транскрипту. Якщо не задано, зберігається типове вікно паузи платформи (`700 ms у macOS і Android, 900 ms в iOS`).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -1,73 +1,74 @@
|
||||
---
|
||||
read_when:
|
||||
- Вам потрібні точні семантики або значення за замовчуванням конфігурації на рівні полів
|
||||
- Вам потрібні точні семантики полів конфігурації або значення за замовчуванням
|
||||
- Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
|
||||
summary: Довідник конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
|
||||
title: Довідник конфігурації
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T07:01:56Z"
|
||||
generated_at: "2026-04-25T07:53:43Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: a0f69861c754e0f6d3e41ac357fa56612b90da69249c6f24ec9f6ade21acc1d3
|
||||
source_hash: fd4ebfce263df22d2daa8e0a01e8ab7f590f86b424c534a85d39a25cee98e053
|
||||
source_path: gateway/configuration-reference.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration).
|
||||
Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
|
||||
|
||||
Охоплює основні поверхні конфігурації OpenClaw і надає посилання назовні, коли підсистема має власний глибший довідник. Каталоги команд, що належать каналам і Plugin, а також детальні параметри пам’яті/QMD розміщені на окремих сторінках, а не тут.
|
||||
Охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний глибший довідник. Каталоги команд, що належать каналам і Plugin, а також глибокі параметри пам’яті/QMD розміщено на окремих сторінках, а не тут.
|
||||
|
||||
Джерело істини в коді:
|
||||
|
||||
- `openclaw config schema` виводить актуальну JSON Schema, яка використовується для валідації та Control UI, із об’єднаними метаданими bundled/plugin/channel, коли вони доступні
|
||||
- `config.schema.lookup` повертає один вузол схеми для вказаного шляху для інструментів детального перегляду
|
||||
- `config.schema.lookup` повертає один вузол схеми з прив’язкою до шляху для інструментів деталізованого перегляду
|
||||
- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації відносно поточної поверхні схеми
|
||||
|
||||
Окремі поглиблені довідники:
|
||||
Окремі глибокі довідники:
|
||||
|
||||
- [Довідник конфігурації пам’яті](/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 для поверхонь команд, специфічних для каналу
|
||||
- [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 для специфічних для каналу поверхонь команд
|
||||
|
||||
Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
|
||||
Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано.
|
||||
|
||||
---
|
||||
|
||||
## Канали
|
||||
|
||||
Ключі конфігурації для кожного каналу перенесено на окрему сторінку — див.
|
||||
[Конфігурація — канали](/uk/gateway/config-channels) для `channels.*`,
|
||||
[Configuration — channels](/uk/gateway/config-channels) для `channels.*`,
|
||||
зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших
|
||||
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, керування згадками).
|
||||
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, gating згадок).
|
||||
|
||||
## Значення агента за замовчуванням, multi-agent, сесії та повідомлення
|
||||
## Типові налаштування агента, мультиагентність, сесії та повідомлення
|
||||
|
||||
Перенесено на окрему сторінку — див.
|
||||
[Конфігурація — агенти](/uk/gateway/config-agents) для:
|
||||
[Configuration — agents](/uk/gateway/config-agents) для:
|
||||
|
||||
- `agents.defaults.*` (робочий простір, модель, thinking, Heartbeat, пам’ять, медіа, Skills, sandbox)
|
||||
- `multiAgent.*` (маршрутизація та прив’язки multi-agent)
|
||||
- `session.*` (життєвий цикл сесії, Compaction, очищення)
|
||||
- `agents.defaults.*` (робочий простір, модель, thinking, heartbeat, пам’ять, медіа, skills, sandbox)
|
||||
- `multiAgent.*` (маршрутизація та прив’язки мультиагентності)
|
||||
- `session.*` (життєвий цикл сесії, compaction, pruning)
|
||||
- `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`)
|
||||
|
||||
## Інструменти та користувацькі провайдери
|
||||
## Інструменти та власні провайдери
|
||||
|
||||
Політика інструментів, експериментальні перемикачі, конфігурація інструментів на базі провайдерів і налаштування користувацьких провайдерів / базових URL перенесено на окрему сторінку — див.
|
||||
[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools).
|
||||
Політика інструментів, експериментальні перемикачі, конфігурація інструментів із підтримкою провайдерів і налаштування власних
|
||||
провайдерів / base-URL перенесено на окрему сторінку — див.
|
||||
[Configuration — tools and custom providers](/uk/gateway/config-tools).
|
||||
|
||||
## MCP
|
||||
|
||||
Визначення MCP-серверів, якими керує OpenClaw, знаходяться в `mcp.servers` і
|
||||
використовуються вбудованим Pi та іншими адаптерами часу виконання. Команди `openclaw mcp list`,
|
||||
Визначення MCP-серверів, керованих OpenClaw, розміщуються в `mcp.servers` і
|
||||
використовуються вбудованим Pi та іншими адаптерами середовища виконання. Команди `openclaw mcp list`,
|
||||
`show`, `set` і `unset` керують цим блоком без підключення до
|
||||
цільового сервера під час редагування конфігурації.
|
||||
|
||||
```json5
|
||||
{
|
||||
mcp: {
|
||||
// Необов’язково. За замовчуванням: 600000 ms (10 хвилин). Установіть 0, щоб вимкнути видалення при простої.
|
||||
// Optional. Default: 600000 ms (10 minutes). Set 0 to disable idle eviction.
|
||||
sessionIdleTtlMs: 600000,
|
||||
servers: {
|
||||
docs: {
|
||||
@ -87,13 +88,16 @@ bundled каналів (автентифікація, контроль дост
|
||||
```
|
||||
|
||||
- `mcp.servers`: іменовані визначення stdio або віддалених MCP-серверів для середовищ виконання, які
|
||||
надають налаштовані інструменти MCP.
|
||||
- `mcp.sessionIdleTtlMs`: TTL простою для bundled MCP runtime з областю дії сесії.
|
||||
Одноразові вбудовані запуски запитують очищення наприкінці запуску; цей TTL є запасним механізмом для
|
||||
довготривалих сесій і майбутніх викликів.
|
||||
надають налаштовані MCP-інструменти.
|
||||
- `mcp.sessionIdleTtlMs`: idle TTL для bundled MCP runtime, прив’язаних до сесії.
|
||||
Одноразові вбудовані запуски запитують очищення після завершення запуску; цей TTL є резервним механізмом для
|
||||
довготривалих сесій і майбутніх викликачів.
|
||||
- Зміни в `mcp.*` застосовуються на льоту через знищення кешованих session MCP runtime.
|
||||
Наступне виявлення/використання інструмента створює їх заново з нової конфігурації, тож видалені
|
||||
записи `mcp.servers` прибираються негайно, а не чекають idle TTL.
|
||||
|
||||
Див. [MCP](/uk/cli/mcp#openclaw-as-an-mcp-client-registry) і
|
||||
[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) для поведінки під час виконання.
|
||||
[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо поведінки середовища виконання.
|
||||
|
||||
## Skills
|
||||
|
||||
@ -120,18 +124,18 @@ bundled каналів (автентифікація, контроль дост
|
||||
}
|
||||
```
|
||||
|
||||
- `allowBundled`: необов’язковий список дозволу лише для bundled skills (керовані/workspace skills не зачіпаються).
|
||||
- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет).
|
||||
- `install.preferBrew`: якщо `true`, надавати перевагу інсталяторам Homebrew, коли `brew`
|
||||
- `allowBundled`: необов’язковий список дозволу лише для bundled Skills (керовані/робочі Skills не зачіпаються).
|
||||
- `load.extraDirs`: додаткові спільні кореневі каталоги Skills (найнижчий пріоритет).
|
||||
- `install.preferBrew`: якщо `true`, надає перевагу інсталяторам Homebrew, коли `brew`
|
||||
доступний, перш ніж переходити до інших типів інсталяторів.
|
||||
- `install.nodeManager`: бажаний менеджер вузлів для специфікацій `metadata.openclaw.install`
|
||||
- `install.nodeManager`: пріоритет node-інсталятора для специфікацій `metadata.openclaw.install`
|
||||
(`npm` | `pnpm` | `yarn` | `bun`).
|
||||
- `entries.<skillKey>.enabled: false` вимикає skill, навіть якщо він bundled/інстальований.
|
||||
- `entries.<skillKey>.apiKey`: зручне поле для skills, які оголошують основну змінну середовища (простий текстовий рядок або об’єкт SecretRef).
|
||||
- `entries.<skillKey>.enabled: false` вимикає Skill, навіть якщо він bundled/встановлений.
|
||||
- `entries.<skillKey>.apiKey`: зручне поле для Skills, які оголошують основну env-змінну (рядок у відкритому тексті або об’єкт SecretRef).
|
||||
|
||||
---
|
||||
|
||||
## Plugins
|
||||
## Plugin
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -156,42 +160,42 @@ bundled каналів (автентифікація, контроль дост
|
||||
```
|
||||
|
||||
- Завантажуються з `~/.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.
|
||||
- Виявлення підтримує нативні Plugin OpenClaw, а також сумісні пакети Codex і Claude, зокрема пакети Claude стандартного макета без manifest.
|
||||
- **Зміни конфігурації потребують перезапуску gateway.**
|
||||
- `allow`: необов’язковий список дозволу (завантажуються лише перелічені Plugin). `deny` має пріоритет.
|
||||
- `plugins.entries.<id>.apiKey`: зручне поле API-ключа на рівні Plugin (коли Plugin це підтримує).
|
||||
- `plugins.entries.<id>.env`: карта env-змінних у межах Plugin.
|
||||
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля, що змінюють промпт, зі старого `before_agent_start`, зберігаючи при цьому застарілі `modelOverride` і `providerOverride`. Застосовується до нативних hook Plugin і підтримуваних каталогів hook, наданих пакетами.
|
||||
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені небандловані Plugin можуть читати необроблений вміст розмови з типізованих hook, як-от `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 для channel Plugin розміщуються в `channels.<id>` і мають описуватися метаданими `channelConfigs` у manifest відповідного 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`).
|
||||
- `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`: тайм-аут запиту на скрапінг у секундах (типово: `60`).
|
||||
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
|
||||
- `enabled`: увімкнути провайдер X Search.
|
||||
- `model`: модель Grok для використання в пошуку (наприклад, `"grok-4-1-fast"`).
|
||||
- `enabled`: увімкнути провайдера X Search.
|
||||
- `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 * * *"`).
|
||||
- `enabled`: головний перемикач dreaming (типово `false`).
|
||||
- `frequency`: Cron-розклад для кожного повного циклу dreaming (типово `"0 3 * * *"`).
|
||||
- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
|
||||
- Повна конфігурація пам’яті міститься в [Довіднику конфігурації пам’яті](/uk/reference/memory-config):
|
||||
- Повна конфігурація пам’яті розміщена в [Memory configuration reference](/uk/reference/memory-config):
|
||||
- `agents.defaults.memorySearch.*`
|
||||
- `memory.backend`
|
||||
- `memory.citations`
|
||||
- `memory.qmd.*`
|
||||
- `plugins.entries.memory-core.config.dreaming`
|
||||
- Увімкнені Plugins Claude bundle також можуть надавати вбудовані значення Pi за замовчуванням із `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
|
||||
- `plugins.slots.memory`: вибір id активного плагіна пам’яті або `"none"` для вимкнення плагінів пам’яті.
|
||||
- `plugins.slots.contextEngine`: вибір id активного плагіна рушія контексту; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший рушій.
|
||||
- `plugins.installs`: метадані інсталяції, керовані CLI, які використовуються `openclaw plugins update`.
|
||||
- Увімкнені Plugin-пакети Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
|
||||
- `plugins.slots.memory`: вибрати id активного Plugin пам’яті або `"none"`, щоб вимкнути Plugin пам’яті.
|
||||
- `plugins.slots.contextEngine`: вибрати id активного Plugin рушія контексту; типове значення — `"legacy"`, доки ви не встановите й не виберете інший рушій.
|
||||
- `plugins.installs`: метадані встановлення, керовані CLI та використовувані `openclaw plugins update`.
|
||||
- Містять `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
|
||||
- Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI над ручними редагуваннями.
|
||||
- Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI замість ручного редагування.
|
||||
|
||||
Див. [Plugins](/uk/tools/plugin).
|
||||
|
||||
@ -206,8 +210,8 @@ bundled каналів (автентифікація, контроль дост
|
||||
evaluateEnabled: true,
|
||||
defaultProfile: "user",
|
||||
ssrfPolicy: {
|
||||
// dangerouslyAllowPrivateNetwork: true, // вмикайте лише для довіреного доступу до приватної мережі
|
||||
// allowPrivateNetwork: true, // застарілий псевдонім
|
||||
// dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access
|
||||
// allowPrivateNetwork: true, // legacy alias
|
||||
// hostnameAllowlist: ["*.example.com", "example.com"],
|
||||
// allowedHostnames: ["localhost"],
|
||||
},
|
||||
@ -244,34 +248,34 @@ bundled каналів (автентифікація, контроль дост
|
||||
```
|
||||
|
||||
- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`.
|
||||
- `tabCleanup` звільняє відстежувані вкладки основного агента після простою або коли
|
||||
- `tabCleanup` очищає відстежувані вкладки основного агента після простою або коли
|
||||
сесія перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб
|
||||
вимкнути ці окремі режими очищення.
|
||||
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера за замовчуванням залишається суворо обмеженою.
|
||||
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тож навігація браузера типово залишається суворою.
|
||||
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації браузера в приватній мережі.
|
||||
- У суворому режимі кінцеві точки віддалених профілів CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок доступності/виявлення.
|
||||
- У суворому режимі віддалені кінцеві точки профілю CDP (`profiles.*.cdpUrl`) підпадають під те саме блокування приватної мережі під час перевірок доступності/виявлення.
|
||||
- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
|
||||
- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
|
||||
- Віддалені профілі працюють лише в режимі attach-only (запуск/зупинка/скидання вимкнені).
|
||||
- Віддалені профілі працюють лише в режимі під’єднання (start/stop/reset вимкнені).
|
||||
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
|
||||
Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
|
||||
коли ваш провайдер надає вам прямий URL WebSocket DevTools.
|
||||
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на
|
||||
вибраному хості або через підключений browser node.
|
||||
Використовуйте HTTP(S), якщо хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
|
||||
коли ваш провайдер надає прямий URL DevTools WebSocket.
|
||||
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть під’єднуватися
|
||||
на вибраному хості або через під’єднаний вузол браузера.
|
||||
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
|
||||
профіль браузера на базі Chromium, наприклад Brave або Edge.
|
||||
- Профілі `existing-session` зберігають поточні обмеження маршрутизації Chrome MCP:
|
||||
дії на основі snapshot/ref замість націлювання за CSS-селекторами, хуки завантаження
|
||||
одного файла, без перевизначення тайм-аутів діалогів, без `wait --load networkidle`, а також без
|
||||
`responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
|
||||
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
|
||||
дії на основі snapshot/ref замість націлювання за CSS-селекторами, hook завантаження
|
||||
одного файлу, без перевизначення тайм-аутів діалогів, без `wait --load networkidle`, а також без
|
||||
`responsebody`, експорту PDF, перехоплення завантажень чи пакетних дій.
|
||||
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
|
||||
задавайте `cdpUrl` лише для віддаленого CDP.
|
||||
- Локальні керовані профілі можуть задавати `executablePath`, щоб перевизначити глобальний
|
||||
`browser.executablePath` для цього профілю. Використовуйте це, щоб запускати один профіль у
|
||||
Chrome, а інший — у Brave.
|
||||
- Порядок автовиявлення: браузер за замовчуванням, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
|
||||
- Порядок автовиявлення: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
|
||||
- `browser.executablePath` приймає `~` для домашнього каталогу вашої ОС.
|
||||
- Служба керування: лише local loopback (порт визначається з `gateway.port`, за замовчуванням `18791`).
|
||||
- Служба керування: лише local loopback (порт визначається з `gateway.port`, типово `18791`).
|
||||
- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад,
|
||||
`--disable-gpu`, розмір вікна або прапорці налагодження).
|
||||
|
||||
@ -292,7 +296,7 @@ bundled каналів (автентифікація, контроль дост
|
||||
```
|
||||
|
||||
- `seamColor`: акцентний колір для chrome інтерфейсу нативного застосунку (відтінок бульбашки режиму Talk тощо).
|
||||
- `assistant`: перевизначення ідентичності для Control UI. Якщо не задано, використовується ідентичність активного агента.
|
||||
- `assistant`: перевизначення ідентичності для Control UI. Використовує ідентичність активного агента як запасний варіант.
|
||||
|
||||
---
|
||||
|
||||
@ -367,66 +371,69 @@ 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` (лише IP Tailscale) або `custom`.
|
||||
- `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`: перевизначення на рівні облікового запису для каналів з кількома обліковими записами. Якщо задано, має пріоритет над перевизначенням на рівні каналу.
|
||||
- **Примітка щодо Docker**: типовий bind `loopback` слухає на `127.0.0.1` усередині контейнера. Із bridge-мережею Docker (`-p 18789:18789`) трафік надходить через `eth0`, тому gateway недоступний. Використовуйте `--network host` або задайте `bind: "lan"` (чи `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
|
||||
- **Auth**: типово обов’язкова. Bind не на 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`. Запуск і процеси встановлення/відновлення сервісу завершуються помилкою, коли налаштовано обидва значення, а режим не задано.
|
||||
- `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-адреси клієнта і для кожної області auth окремо (shared-secret і device-token відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
|
||||
- В асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом невдачі. Тому одночасні хибні спроби від того самого клієнта можуть спровокувати обмеження вже на другому запиті, замість того щоб обидві одночасно пройти як звичайні невідповідності.
|
||||
- `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; установіть `false`, якщо свідомо хочете, щоб трафік localhost теж підлягав rate limit (для тестових налаштувань або суворих proxy-розгортань).
|
||||
- Спроби WS auth із походження браузера завжди обмежуються, і виняток для loopback вимкнено (додатковий рівень захисту від brute force localhost із браузера).
|
||||
- На loopback ці блокування для браузерних походжень ізолюються за нормалізованим значенням `Origin`,
|
||||
тож повторні невдачі з одного походження localhost не блокують автоматично
|
||||
інше походження.
|
||||
- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічно, потребує auth).
|
||||
- `controlUi.allowedOrigins`: явний список дозволених browser-origin для WebSocket-підключень до Gateway. Обов’язковий, коли очікуються браузерні клієнти з не-loopback походжень.
|
||||
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервну логіку походження через заголовок Host для розгортань, що навмисно покладаються на політику походження Host-header.
|
||||
- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
|
||||
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське аварійне перевизначення через
|
||||
змінну середовища процесу, яке дозволяє незашифрований `ws://` до довірених IP
|
||||
приватної мережі; типово незашифрований трафік і далі дозволено лише для loopback. Еквівалента в
|
||||
`openclaw.json` немає, а конфігурація приватної мережі браузера, така як
|
||||
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнтів
|
||||
WebSocket Gateway.
|
||||
- `gateway.remote.token` / `.password`: це поля облікових даних віддаленого клієнта. Вони самі собою не налаштовують auth gateway.
|
||||
- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього APNs relay, який використовується офіційними/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 дозвіл на надсилання в межах цієї реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
|
||||
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env-перевизначення для наведеної вище конфігурації 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-списку заборон.
|
||||
- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не вдається розв’язати, розв’язання завершується в режимі fail-closed (без маскування резервним віддаленим шляхом).
|
||||
- `trustedProxies`: IP-адреси reverse proxy, які завершують TLS або додають заголовки пересланого клієнта. Вказуйте лише 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`.
|
||||
- Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`.
|
||||
- Responses API: `gateway.http.endpoints.responses.enabled`.
|
||||
- Посилене захист URL-входів Responses:
|
||||
- `gateway.http.endpoints.responses.maxUrlParts`
|
||||
- `gateway.http.endpoints.responses.files.urlAllowlist`
|
||||
- `gateway.http.endpoints.responses.images.urlAllowlist`
|
||||
Порожні списки дозволу трактуються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
|
||||
та/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
|
||||
і/або `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.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-походжень, які ви контролюєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
|
||||
|
||||
### Ізоляція кількох екземплярів
|
||||
|
||||
@ -440,7 +447,7 @@ openclaw gateway --port 19001
|
||||
|
||||
Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile <name>` (використовує `~/.openclaw-<name>`).
|
||||
|
||||
Див. [Кілька Gateway](/uk/gateway/multiple-gateways).
|
||||
Див. [Multiple Gateways](/uk/gateway/multiple-gateways).
|
||||
|
||||
### `gateway.tls`
|
||||
|
||||
@ -458,11 +465,11 @@ openclaw gateway --port 19001
|
||||
}
|
||||
```
|
||||
|
||||
- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (за замовчуванням: `false`).
|
||||
- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`).
|
||||
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, якщо явні файли не налаштовано; лише для local/dev.
|
||||
- `certPath`: шлях у файловій системі до файла TLS-сертифіката.
|
||||
- `keyPath`: шлях у файловій системі до файла приватного ключа TLS; обмежуйте доступ правами.
|
||||
- `caPath`: необов’язковий шлях до bundle CA для перевірки клієнта або користувацьких ланцюжків довіри.
|
||||
- `certPath`: шлях у файловій системі до файлу TLS-сертифіката.
|
||||
- `keyPath`: шлях у файловій системі до файлу приватного TLS-ключа; обмежте дозволи доступу.
|
||||
- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнта або власних ланцюжків довіри.
|
||||
|
||||
### `gateway.reload`
|
||||
|
||||
@ -478,13 +485,13 @@ openclaw gateway --port 19001
|
||||
}
|
||||
```
|
||||
|
||||
- `mode`: керує тим, як редагування конфігурації застосовуються під час виконання.
|
||||
- `"off"`: ігнорувати живі зміни; зміни потребують явного перезапуску.
|
||||
- `"restart"`: завжди перезапускати процес gateway після зміни конфігурації.
|
||||
- `"hot"`: застосовувати зміни в межах процесу без перезапуску.
|
||||
- `"hybrid"` (за замовчуванням): спочатку пробувати hot reload; за потреби переходити до перезапуску.
|
||||
- `mode`: керує тим, як зміни конфігурації застосовуються під час виконання.
|
||||
- `"off"`: ігнорувати зміни наживо; зміни потребують явного перезапуску.
|
||||
- `"restart"`: завжди перезапускати процес gateway при зміні конфігурації.
|
||||
- `"hot"`: застосовувати зміни в процесі без перезапуску.
|
||||
- `"hybrid"` (типово): спочатку пробувати hot reload; за потреби повертатися до перезапуску.
|
||||
- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).
|
||||
- `deferralTimeoutMs`: максимальний час у мс очікування завершення поточних операцій перед примусовим перезапуском (за замовчуванням: `300000` = 5 хвилин).
|
||||
- `deferralTimeoutMs`: максимальний час очікування в мс для операцій у процесі перед примусовим перезапуском (типово: `300000` = 5 хвилин).
|
||||
|
||||
---
|
||||
|
||||
@ -522,46 +529,46 @@ openclaw gateway --port 19001
|
||||
```
|
||||
|
||||
Auth: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
|
||||
Hook-токени в query string відхиляються.
|
||||
Токени hook у рядку запиту відхиляються.
|
||||
|
||||
Примітки щодо валідації та безпеки:
|
||||
|
||||
- `hooks.enabled=true` вимагає непорожній `hooks.token`.
|
||||
- `hooks.enabled=true` потребує непорожнього `hooks.token`.
|
||||
- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання токена Gateway відхиляється.
|
||||
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
|
||||
- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
|
||||
- Якщо mapping або preset використовує шаблонний `sessionKey`, установіть `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього явного ввімкнення.
|
||||
- Якщо mapping або preset використовує шаблонізований `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping цього opt-in не потребують.
|
||||
|
||||
**Кінцеві точки:**
|
||||
|
||||
- `POST /hooks/wake` → `{ text, mode?: "now"|"next-heartbeat" }`
|
||||
- `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
|
||||
- `sessionKey` з тіла запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (за замовчуванням: `false`).
|
||||
- `sessionKey` з тіла запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`).
|
||||
- `POST /hooks/<name>` → розв’язується через `hooks.mappings`
|
||||
- Значення `sessionKey` у mapping, згенеровані шаблоном, вважаються зовнішньо наданими й також потребують `hooks.allowRequestSessionKey=true`.
|
||||
|
||||
<Accordion title="Відомості про mapping">
|
||||
<Accordion title="Докладно про mapping">
|
||||
|
||||
- `match.path` відповідає підшляху після `/hooks` (наприклад, `/hooks/gmail` → `gmail`).
|
||||
- `match.source` відповідає полю payload для загальних шляхів.
|
||||
- `match.path` зіставляється з підшляхом після `/hooks` (наприклад, `/hooks/gmail` → `gmail`).
|
||||
- `match.source` зіставляється з полем payload для загальних шляхів.
|
||||
- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload.
|
||||
- `transform` може вказувати на модуль JS/TS, який повертає дію 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 (має бути дозволено, якщо задано каталог моделей).
|
||||
- `transform` може вказувати на JS/TS-модуль, який повертає дію hook.
|
||||
- `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи й traversal відхиляються).
|
||||
- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового.
|
||||
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або не задано = дозволити всі, `[]` = заборонити всі).
|
||||
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків агента з hook без явного `sessionKey`.
|
||||
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і session key 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: true` і обмежте `hooks.allowedSessionKeyPrefixes`, щоб вони відповідали простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`.
|
||||
- Якщо вам потрібне `hooks.allowRequestSessionKey: false`, перевизначте preset статичним `sessionKey` замість типового шаблонізованого значення.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -589,7 +596,7 @@ Hook-токени в query string відхиляються.
|
||||
|
||||
---
|
||||
|
||||
## Хост canvas
|
||||
## Хост Canvas
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -601,18 +608,18 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- Обслуговує редаговані агентом 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"` (за замовчуванням).
|
||||
- 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.bind: "loopback"` (типово).
|
||||
- Bind не на loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), як і інші HTTP-поверхні Gateway.
|
||||
- Node WebView зазвичай не надсилають заголовки auth; після pairing і підключення вузла Gateway рекламує URL можливостей у межах вузла для доступу до canvas/A2UI.
|
||||
- URL можливостей прив’язані до активної WS-сесії вузла і швидко спливають. Резервний варіант на основі IP не використовується.
|
||||
- Впроваджує клієнт live-reload у HTML, що обслуговується.
|
||||
- Автоматично створює стартовий `index.html`, якщо каталог порожній.
|
||||
- Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`.
|
||||
- Зміни потребують перезапуску gateway.
|
||||
- Вимкніть live reload для великих каталогів або в разі помилок `EMFILE`.
|
||||
- Вимкніть live reload для великих каталогів або при помилках `EMFILE`.
|
||||
|
||||
---
|
||||
|
||||
@ -630,11 +637,11 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `minimal` (за замовчуванням): не включає `cliPath` + `sshPort` із TXT-записів.
|
||||
- `minimal` (типово): не включає `cliPath` + `sshPort` до TXT-записів.
|
||||
- `full`: включає `cliPath` + `sshPort`.
|
||||
- Ім’я хоста за замовчуванням — `openclaw`. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`.
|
||||
- Ім’я хоста типово `openclaw`. Перевизначається через `OPENCLAW_MDNS_HOSTNAME`.
|
||||
|
||||
### Глобальне виявлення (DNS-SD)
|
||||
### Wide-area (DNS-SD)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -644,7 +651,7 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
Записує зону unicast DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднайте це із DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
|
||||
Записує унікаст-зону DNS-SD до `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
|
||||
|
||||
Налаштування: `openclaw dns setup --apply`.
|
||||
|
||||
@ -652,7 +659,7 @@ Hook-токени в query string відхиляються.
|
||||
|
||||
## Середовище
|
||||
|
||||
### `env` (вбудовані змінні середовища)
|
||||
### `env` (вбудовані env-змінні)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -669,14 +676,14 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- Вбудовані змінні середовища застосовуються лише тоді, коли у змінних середовища процесу немає цього ключа.
|
||||
- Вбудовані env-змінні застосовуються лише тоді, коли в середовищі процесу відсутній ключ.
|
||||
- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні).
|
||||
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
|
||||
- Див. [Середовище](/uk/help/environment) для повного порядку пріоритетів.
|
||||
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої оболонки входу.
|
||||
- Повний порядок пріоритету див. у [Environment](/uk/help/environment).
|
||||
|
||||
### Підстановка змінних середовища
|
||||
### Підстановка env-змінних
|
||||
|
||||
Посилайтеся на змінні середовища в будь-якому рядку конфігурації за допомогою `${VAR_NAME}`:
|
||||
Посилайтеся на env-змінні в будь-якому рядку конфігурації через `${VAR_NAME}`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -688,18 +695,18 @@ Hook-токени в query string відхиляються.
|
||||
|
||||
- Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
|
||||
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
|
||||
- Екрануйте через `$${VAR}` для буквального `${VAR}`.
|
||||
- Екрануйте через `$${VAR}`, щоб отримати буквальний `${VAR}`.
|
||||
- Працює з `$include`.
|
||||
|
||||
---
|
||||
|
||||
## Секрети
|
||||
|
||||
Посилання на секрети є адитивними: значення у відкритому тексті теж продовжують працювати.
|
||||
Посилання на секрети є додатковими: значення у відкритому тексті й далі працюють.
|
||||
|
||||
### `SecretRef`
|
||||
|
||||
Використовуйте одну форму об’єкта:
|
||||
Використовуйте один формат об’єкта:
|
||||
|
||||
```json5
|
||||
{ source: "env" | "file" | "exec", provider: "default", id: "..." }
|
||||
@ -708,16 +715,16 @@ Hook-токени в query string відхиляються.
|
||||
Валідація:
|
||||
|
||||
- шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$`
|
||||
- шаблон `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` відхиляється)
|
||||
- шаблон 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` відхиляється)
|
||||
|
||||
### Підтримувана поверхня облікових даних
|
||||
|
||||
- Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface)
|
||||
- Канонічна матриця: [SecretRef Credential Surface](/uk/reference/secretref-credential-surface)
|
||||
- `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`.
|
||||
- Посилання в `auth-profiles.json` включаються в runtime-розв’язання та покриття аудиту.
|
||||
- Посилання в `auth-profiles.json` включено до runtime-розв’язання та покриття аудиту.
|
||||
|
||||
### Конфігурація провайдерів секретів
|
||||
|
||||
@ -750,13 +757,13 @@ Hook-токени в query string відхиляються.
|
||||
Примітки:
|
||||
|
||||
- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`).
|
||||
- Шляхи провайдерів file і exec працюють за принципом fail closed, коли перевірка ACL Windows недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
|
||||
- Провайдер `exec` вимагає абсолютний шлях `command` і використовує payload протоколу через stdin/stdout.
|
||||
- За замовчуванням шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи symlink із перевіркою розв’язаного цільового шляху.
|
||||
- Шляхи провайдерів file і exec завершуються в режимі fail-closed, коли перевірка Windows ACL недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які не можна перевірити.
|
||||
- Провайдер `exec` потребує абсолютного шляху `command` і використовує payload протоколу через stdin/stdout.
|
||||
- Типово шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання з перевіркою розв’язаного цільового шляху.
|
||||
- Якщо налаштовано `trustedDirs`, перевірка довірених каталогів застосовується до розв’язаного цільового шляху.
|
||||
- Середовище дочірнього процесу `exec` за замовчуванням мінімальне; передавайте потрібні змінні явно через `passEnv`.
|
||||
- Дочірнє середовище `exec` типово мінімальне; передавайте потрібні змінні явно через `passEnv`.
|
||||
- Посилання на секрети розв’язуються під час активації в snapshot у пам’яті, після чого шляхи запитів читають лише цей snapshot.
|
||||
- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на увімкнених поверхнях спричиняють збій запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
|
||||
- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на ввімкнених поверхнях призводять до помилки запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
|
||||
|
||||
---
|
||||
|
||||
@ -778,13 +785,13 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- Профілі для окремих агентів зберігаються в `<agentDir>/auth-profiles.json`.
|
||||
- Профілі для кожного агента зберігаються в `<agentDir>/auth-profiles.json`.
|
||||
- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
|
||||
- Профілі в режимі OAuth (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані профілів auth на основі SecretRef.
|
||||
- Профілі режиму OAuth (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef.
|
||||
- Статичні runtime-облікові дані надходять із розв’язаних snapshot у пам’яті; застарілі статичні записи `auth.json` очищуються після виявлення.
|
||||
- Застарілий імпорт OAuth відбувається з `~/.openclaw/credentials/oauth.json`.
|
||||
- Застарілі імпорти OAuth надходять із `~/.openclaw/credentials/oauth.json`.
|
||||
- Див. [OAuth](/uk/concepts/oauth).
|
||||
- Поведінка runtime для секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
|
||||
- Runtime-поведінка секретів та інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets).
|
||||
|
||||
### `auth.cooldowns`
|
||||
|
||||
@ -806,15 +813,20 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `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`.
|
||||
- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає збою через справжні помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг може
|
||||
і далі потрапляти сюди навіть у відповідях `401`/`403`, але зіставлення
|
||||
тексту, специфічні для провайдера, залишаються в межах відповідного провайдера
|
||||
(наприклад OpenRouter `Key limit exceeded`). Повторювані HTTP `402` повідомлення про usage-window або
|
||||
ліміт витрат organization/workspace залишаються в гілці `rate_limit`
|
||||
натомість.
|
||||
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff для білінгу для кожного провайдера.
|
||||
- `billingMaxHours`: обмеження в годинах для експоненційного зростання backoff білінгу (типово: `24`).
|
||||
- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для збоїв `auth_permanent` з високою впевненістю (типово: `10`).
|
||||
- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`).
|
||||
- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (типово: `24`).
|
||||
- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile в межах одного провайдера для помилок перевантаження перед перемиканням на резервну модель (типово: `1`). Форми зайнятості провайдера, такі як `ModelNotReadyException`, потрапляють сюди.
|
||||
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (типово: `0`).
|
||||
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile в межах одного провайдера для помилок rate limit перед перемиканням на резервну модель (типово: `1`). Цей кошик rate limit включає текстові форми провайдерів, такі як `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
|
||||
|
||||
---
|
||||
|
||||
@ -833,10 +845,10 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- Файл журналу за замовчуванням: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
|
||||
- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
|
||||
- Установіть `logging.file` для стабільного шляху.
|
||||
- `consoleLevel` підвищується до `debug`, коли використовується `--verbose`.
|
||||
- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого записи пригнічуються (додатне ціле число; за замовчуванням: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
|
||||
- `consoleLevel` підвищується до `debug` із `--verbose`.
|
||||
- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого записи пригнічуються (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
|
||||
|
||||
---
|
||||
|
||||
@ -881,22 +893,22 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `enabled`: головний перемикач для виводу інструментування (за замовчуванням: `true`).
|
||||
- `flags`: масив рядків-прапорців, які вмикають цільовий вивід журналу (підтримує шаблони з символами узагальнення, як-от `"telegram.*"` або `"*"`).
|
||||
- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислу сесію, поки сесія залишається у стані обробки.
|
||||
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (за замовчуванням: `false`).
|
||||
- `enabled`: головний перемикач для виводу інструментування (типово: `true`).
|
||||
- `flags`: масив рядків-прапорців, що вмикають цільовий вивід журналу (підтримує wildcard, як-от `"telegram.*"` або `"*"`).
|
||||
- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислі сесії, доки сесія залишається у стані обробки.
|
||||
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`).
|
||||
- `otel.endpoint`: URL колектора для експорту OTel.
|
||||
- `otel.protocol`: `"http/protobuf"` (за замовчуванням) або `"grpc"`.
|
||||
- `otel.headers`: додаткові метадані-заголовки HTTP/gRPC, що надсилаються із запитами експорту 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.traces` / `otel.metrics` / `otel.logs`: вмикають експорт trace, metrics або log.
|
||||
- `otel.sampleRate`: частота семплування trace `0`–`1`.
|
||||
- `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`).
|
||||
- `otel.captureContent`: opt-in захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Булеве значення `true` захоплює вміст повідомлень/інструментів, окрім system; форма об’єкта дозволяє явно ввімкнути `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`).
|
||||
|
||||
---
|
||||
|
||||
@ -919,11 +931,11 @@ Hook-токени в query string відхиляються.
|
||||
```
|
||||
|
||||
- `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`).
|
||||
|
||||
---
|
||||
|
||||
@ -956,21 +968,21 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `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; порожній список означає відсутність додаткових обмежень.
|
||||
- `enabled`: глобальний feature gate ACP (типово: `false`).
|
||||
- `dispatch.enabled`: незалежний gate для dispatch ходів сесії ACP (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
|
||||
- `backend`: id типового backend runtime ACP (має збігатися із зареєстрованим runtime Plugin ACP).
|
||||
- `defaultAgent`: резервний id цільового агента ACP, коли spawn не задає явну ціль.
|
||||
- `allowedAgents`: список дозволу id агентів, дозволених для runtime-сесій ACP; порожнє значення означає відсутність додаткових обмежень.
|
||||
- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій 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 до моменту, коли їх можна очищати.
|
||||
- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
|
||||
- `stream.maxChunkChars`: максимальний розмір чанка перед розбиттям проєкції потокового блока.
|
||||
- `stream.repeatSuppression`: пригнічує повторювані рядки статусу/інструментів на кожному ході (типово: `true`).
|
||||
- `stream.deliveryMode`: `"live"` інкрементально транслює; `"final_only"` буферизує до термінальних подій ходу.
|
||||
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`).
|
||||
- `stream.maxOutputChars`: максимальна кількість символів виводу помічника, проєктованих на один хід ACP.
|
||||
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлень ACP.
|
||||
- `stream.tagVisibility`: запис назв тегів у булеві перевизначення видимості для потокових подій.
|
||||
- `runtime.ttlMinutes`: idle TTL у хвилинах для воркерів сесій ACP до можливого очищення.
|
||||
- `runtime.installCommand`: необов’язкова команда встановлення, яку слід виконати під час bootstrap середовища runtime ACP.
|
||||
|
||||
---
|
||||
@ -987,11 +999,11 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `cli.banner.taglineMode` керує стилем слогана банера:
|
||||
- `"random"` (за замовчуванням): ротаційні кумедні/сезонні слогани.
|
||||
- `"default"`: фіксований нейтральний слоган (`Усі ваші чати, один OpenClaw.`).
|
||||
- `"off"`: без тексту слогана (назва/версія банера все одно показуються).
|
||||
- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`.
|
||||
- `cli.banner.taglineMode` керує стилем підрядка банера:
|
||||
- `"random"` (типово): ротаційні кумедні/сезонні підрядки.
|
||||
- `"default"`: фіксований нейтральний підрядок (`Усі ваші чати — в одному OpenClaw.`).
|
||||
- `"off"`: без тексту підрядка (назва/версія банера все одно показуються).
|
||||
- Щоб приховати весь банер (а не лише підрядки), задайте env `OPENCLAW_HIDE_BANNER=1`.
|
||||
|
||||
---
|
||||
|
||||
@ -1015,13 +1027,13 @@ Hook-токени в query string відхиляються.
|
||||
|
||||
## Ідентичність
|
||||
|
||||
Див. поля ідентичності `agents.list` у розділі [Значення агента за замовчуванням](/uk/gateway/config-agents#agent-defaults).
|
||||
Див. поля ідентичності `agents.list` у розділі [Agent defaults](/uk/gateway/config-agents#agent-defaults).
|
||||
|
||||
---
|
||||
|
||||
## Bridge (застарілий, вилучений)
|
||||
## Bridge (застарілий, видалений)
|
||||
|
||||
Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не входять до схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі).
|
||||
Поточні збірки більше не включають TCP bridge. Nodes під’єднуються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі).
|
||||
|
||||
<Accordion title="Застаріла конфігурація bridge (історична довідка)">
|
||||
|
||||
@ -1061,11 +1073,11 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `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`.
|
||||
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запуску Cron перед видаленням із `sessions.json`. Також керує очищенням архівованих видалених transcript 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`
|
||||
|
||||
@ -1081,11 +1093,11 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань за тимчасових помилок (за замовчуванням: `3`; діапазон: `0`–`10`).
|
||||
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (за замовчуванням: `[30000, 60000, 300000]`; 1–10 записів).
|
||||
- `retryOn`: типи помилок, які запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не вказуйте, щоб повторювати всі тимчасові типи.
|
||||
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типово: `3`; діапазон: `0`–`10`).
|
||||
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів).
|
||||
- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не задавайте, щоб повторювати всі тимчасові типи.
|
||||
|
||||
Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку збоїв.
|
||||
Застосовується лише до одноразових завдань Cron. Періодичні завдання використовують окрему обробку збоїв.
|
||||
|
||||
### `cron.failureAlert`
|
||||
|
||||
@ -1103,11 +1115,11 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- `enabled`: увімкнути сповіщення про збої для cron-завдань (за замовчуванням: `false`).
|
||||
- `after`: кількість послідовних збоїв до спрацьовування сповіщення (додатне ціле число, мінімум: `1`).
|
||||
- `enabled`: увімкнути сповіщення про збої для завдань Cron (типово: `false`).
|
||||
- `after`: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мін.: `1`).
|
||||
- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
|
||||
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` надсилає POST на налаштований Webhook.
|
||||
- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщення.
|
||||
- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщень.
|
||||
|
||||
### `cron.failureDestination`
|
||||
|
||||
@ -1124,49 +1136,49 @@ Hook-токени в query string відхиляються.
|
||||
}
|
||||
```
|
||||
|
||||
- Цільове місце за замовчуванням для сповіщень про збої cron для всіх завдань.
|
||||
- `mode`: `"announce"` або `"webhook"`; за замовчуванням `"announce"`, коли є достатньо цільових даних.
|
||||
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
|
||||
- `to`: явна ціль announce або URL Webhook. Обов’язково для режиму webhook.
|
||||
- Типове місце призначення для сповіщень про збої Cron для всіх завдань.
|
||||
- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо цільових даних.
|
||||
- `channel`: перевизначення каналу для доставки через announce. `"last"` повторно використовує останній відомий канал доставки.
|
||||
- `to`: явна ціль announce або URL Webhook. Обов’язкове для режиму webhook.
|
||||
- `accountId`: необов’язкове перевизначення облікового запису для доставки.
|
||||
- `delivery.failureDestination` для окремого завдання перевизначає це глобальне значення за замовчуванням.
|
||||
- Якщо не задано ні глобальне, ні для окремого завдання місце призначення збоїв, завдання, які вже доставляють через `announce`, у разі збою використовують цей основний цільовий announce як резервний варіант.
|
||||
- `delivery.failureDestination` на рівні завдання перевизначає це глобальне типове значення.
|
||||
- Коли не задано ні глобальне, ні на рівні завдання місце призначення для збоїв, завдання, які вже доставляють через `announce`, при збої повертаються до цієї основної цілі announce.
|
||||
- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` завдання не дорівнює `"webhook"`.
|
||||
|
||||
Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [фонові завдання](/uk/automation/tasks).
|
||||
Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання Cron відстежуються як [background tasks](/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 |
|
||||
| Variable | Опис |
|
||||
| ------------------ | ------------------------------------------------------- |
|
||||
| `{{Body}}` | Повний текст вхідного повідомлення |
|
||||
| `{{RawBody}}` | Сирий текст повідомлення (без обгорток історії/відправника) |
|
||||
| `{{BodyStripped}}` | Текст повідомлення без згадок групи |
|
||||
| `{{From}}` | Ідентифікатор відправника |
|
||||
| `{{To}}` | Ідентифікатор призначення |
|
||||
| `{{MessageSid}}` | Ідентифікатор повідомлення каналу |
|
||||
| `{{SessionId}}` | UUID поточної сесії |
|
||||
| `{{IsNewSession}}` | `"true"`, коли створено нову сесію |
|
||||
| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
|
||||
| `{{MediaPath}}` | Локальний шлях до медіа |
|
||||
| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
|
||||
| `{{Transcript}}` | Транскрипт аудіо |
|
||||
| `{{Prompt}}` | Розв’язаний медіапромпт для записів CLI |
|
||||
| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для записів CLI |
|
||||
| `{{ChatType}}` | `"direct"` або `"group"` |
|
||||
| `{{GroupSubject}}` | Назва групи (за можливості) |
|
||||
| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) |
|
||||
| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) |
|
||||
| `{{SenderE164}}` | Номер телефону відправника (за можливості) |
|
||||
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
|
||||
| `{{ChatType}}` | `"direct"` або `"group"` |
|
||||
| `{{GroupSubject}}` | Назва групи (за можливості) |
|
||||
| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) |
|
||||
| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) |
|
||||
| `{{SenderE164}}` | Номер телефону відправника (за можливості) |
|
||||
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
|
||||
|
||||
---
|
||||
|
||||
## Включення конфігурації (`$include`)
|
||||
## Include конфігурації (`$include`)
|
||||
|
||||
Розділіть конфігурацію на кілька файлів:
|
||||
|
||||
@ -1184,19 +1196,19 @@ Hook-токени в query string відхиляються.
|
||||
**Поведінка злиття:**
|
||||
|
||||
- Один файл: замінює об’єкт-контейнер.
|
||||
- Масив файлів: глибоко зливається за порядком (пізніші перевизначають попередні).
|
||||
- Сусідні ключі: зливаються після включень (перевизначають включені значення).
|
||||
- Вкладені включення: до 10 рівнів глибини.
|
||||
- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/форми з `../` дозволені лише тоді, коли вони все одно розв’язуються в межах цієї межі.
|
||||
- Записи OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений включенням одного файла, записуються безпосередньо до цього включеного файла. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
|
||||
- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями доступні лише для читання для записів, що виконуються OpenClaw; такі записи завершуються за принципом fail closed замість сплощення конфігурації.
|
||||
- Помилки: чіткі повідомлення для відсутніх файлів, помилок розбору та циклічних включень.
|
||||
- Масив файлів: глибоко зливається в заданому порядку (пізніші перевизначають попередні).
|
||||
- Сусідні ключі: зливаються після include (перевизначають включені значення).
|
||||
- Вкладені include: до 10 рівнів глибини.
|
||||
- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми й форми `../` дозволені лише тоді, коли після розв’язання вони все одно залишаються в цих межах.
|
||||
- Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підтриманий include одного файла, записуються безпосередньо в цей включений файл. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
|
||||
- Кореневі include, масиви include та include із сусідніми перевизначеннями є лише для читання для записів, керованих OpenClaw; такі записи завершуються в режимі fail-closed замість сплощення конфігурації.
|
||||
- Помилки: чіткі повідомлення для відсутніх файлів, помилок розбору та циклічних include.
|
||||
|
||||
---
|
||||
|
||||
_Пов’язано: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
|
||||
_Пов’язане: [Configuration](/uk/gateway/configuration) · [Configuration Examples](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Конфігурація](/uk/gateway/configuration)
|
||||
- [Приклади конфігурації](/uk/gateway/configuration-examples)
|
||||
- [Configuration](/uk/gateway/configuration)
|
||||
- [Configuration examples](/uk/gateway/configuration-examples)
|
||||
|
||||
@ -1,35 +1,35 @@
|
||||
---
|
||||
read_when:
|
||||
- Перше налаштування OpenClaw
|
||||
- Поширені шаблони конфігурації
|
||||
- Налаштування OpenClaw уперше
|
||||
- Пошук поширених шаблонів конфігурації
|
||||
- Перехід до певних розділів конфігурації
|
||||
summary: 'Огляд конфігурації: поширені завдання, швидке налаштування та посилання на повний довідник'
|
||||
title: Конфігурація
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T03:24:46Z"
|
||||
generated_at: "2026-04-25T07:53:39Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 2749fca881115d1d1915271af2d06037cfe87d6c4caf96dc46d8bf893a0669c6
|
||||
source_hash: a8ffe1972fc7680d4cfc55a24fd6fc3869af593faf8c1137369dad0dbefde43a
|
||||
source_path: gateway/configuration.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
OpenClaw читає необов’язкову конфігурацію <Tooltip tip="JSON5 підтримує коментарі та кінцеві коми">**JSON5**</Tooltip> з `~/.openclaw/openclaw.json`.
|
||||
Активний шлях конфігурації має бути звичайним файлом. Компонування
|
||||
`openclaw.json` через символьні посилання не підтримуються для записів, якими керує OpenClaw; атомарний запис може замінити
|
||||
шлях замість збереження символьного посилання. Якщо ви зберігаєте конфігурацію поза
|
||||
стандартним каталогом стану, вкажіть `OPENCLAW_CONFIG_PATH` безпосередньо на реальний файл.
|
||||
OpenClaw зчитує необов’язкову конфігурацію <Tooltip tip="JSON5 supports comments and trailing commas">**JSON5**</Tooltip> з `~/.openclaw/openclaw.json`.
|
||||
Активний шлях конфігурації має бути звичайним файлом. Компонування `openclaw.json`
|
||||
із символьними посиланнями не підтримується для записів, якими керує OpenClaw; атомарний запис може замінити
|
||||
цей шлях замість збереження символьного посилання. Якщо ви зберігаєте конфігурацію поза
|
||||
каталогом стану за замовчуванням, вкажіть `OPENCLAW_CONFIG_PATH` безпосередньо на реальний файл.
|
||||
|
||||
Якщо файл відсутній, OpenClaw використовує безпечні типові значення. Поширені причини додати конфігурацію:
|
||||
Якщо файл відсутній, OpenClaw використовує безпечні значення за замовчуванням. Поширені причини додати конфігурацію:
|
||||
|
||||
- Підключити канали та керувати тим, хто може надсилати повідомлення боту
|
||||
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, hooks)
|
||||
- Налаштувати сесії, медіа, мережу або UI
|
||||
|
||||
Перегляньте [повний довідник](/uk/gateway/configuration-reference) для всіх доступних полів.
|
||||
Дивіться [повний довідник](/uk/gateway/configuration-reference) для всіх доступних полів.
|
||||
|
||||
<Tip>
|
||||
**Ви вперше налаштовуєте конфігурацію?** Почніть з `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/uk/gateway/configuration-examples) для готових конфігурацій, які можна повністю скопіювати й вставити.
|
||||
**Ви вперше працюєте з конфігурацією?** Почніть з `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/uk/gateway/configuration-examples) для повних конфігурацій, які можна просто скопіювати й вставити.
|
||||
</Tip>
|
||||
|
||||
## Мінімальна конфігурація
|
||||
@ -45,13 +45,13 @@ OpenClaw читає необов’язкову конфігурацію <Toolti
|
||||
## Редагування конфігурації
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Інтерактивний майстер">
|
||||
<Tab title="Interactive wizard">
|
||||
```bash
|
||||
openclaw onboard # повний процес початкового налаштування
|
||||
openclaw configure # майстер конфігурації
|
||||
openclaw onboard # full onboarding flow
|
||||
openclaw configure # config wizard
|
||||
```
|
||||
</Tab>
|
||||
<Tab title="CLI (однорядкові команди)">
|
||||
<Tab title="CLI (one-liners)">
|
||||
```bash
|
||||
openclaw config get agents.defaults.workspace
|
||||
openclaw config set agents.defaults.heartbeat.every "2h"
|
||||
@ -60,14 +60,14 @@ OpenClaw читає необов’язкову конфігурацію <Toolti
|
||||
</Tab>
|
||||
<Tab title="Control UI">
|
||||
Відкрийте [http://127.0.0.1:18789](http://127.0.0.1:18789) і використайте вкладку **Config**.
|
||||
Control UI відображає форму на основі схеми поточної конфігурації, зокрема метадані документації полів
|
||||
`title` / `description`, а також схеми Plugin і каналів, коли вони
|
||||
доступні, із редактором **Raw JSON** як запасним варіантом. Для
|
||||
деталізованих UI та інших інструментів gateway також надає `config.schema.lookup`, щоб
|
||||
отримати один вузол схеми з прив’язкою до шляху та зведення для безпосередніх дочірніх елементів.
|
||||
Control UI відображає форму з живої схеми конфігурації, включно з метаданими документації полів
|
||||
`title` / `description`, а також схемами Plugin і каналів, коли вони
|
||||
доступні, з редактором **Raw JSON** як запасним варіантом. Для деталізованих
|
||||
UI та інших інструментів gateway також надає `config.schema.lookup`, щоб
|
||||
отримати один вузол схеми, обмежений шляхом, а також зведення безпосередніх дочірніх елементів.
|
||||
</Tab>
|
||||
<Tab title="Пряме редагування">
|
||||
Відредагуйте `~/.openclaw/openclaw.json` безпосередньо. Gateway стежить за файлом і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)).
|
||||
<Tab title="Direct edit">
|
||||
Відредагуйте `~/.openclaw/openclaw.json` безпосередньо. Gateway відстежує файл і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)).
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@ -78,35 +78,35 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
</Warning>
|
||||
|
||||
`openclaw config schema` виводить канонічну JSON Schema, яку використовують Control UI
|
||||
і валідація. `config.schema.lookup` отримує один вузол, прив’язаний до шляху, а також
|
||||
зведення дочірніх елементів для інструментів із деталізацією. Метадані документації полів `title`/`description`
|
||||
передаються через вкладені об’єкти, wildcard (`*`), елементи масивів (`[]`) і гілки `anyOf`/
|
||||
`oneOf`/`allOf`. Під час виконання також об’єднуються схеми Plugin і каналів, коли
|
||||
завантажено реєстр маніфестів.
|
||||
і валідація. `config.schema.lookup` отримує один вузол, обмежений шляхом, а також
|
||||
зведення дочірніх елементів для інструментів деталізації. Метадані документації полів `title`/`description`
|
||||
передаються через вкладені об’єкти, гілки wildcard (`*`), елементів масиву (`[]`) і `anyOf`/
|
||||
`oneOf`/`allOf`. Під час завантаження реєстру маніфестів також об’єднуються схеми Plugin і каналів, доступні під час виконання.
|
||||
|
||||
Коли валідація не проходить:
|
||||
|
||||
- Gateway не запускається
|
||||
- Працюють лише діагностичні команди (`openclaw doctor`, `openclaw logs`, `openclaw health`, `openclaw status`)
|
||||
- Виконайте `openclaw doctor`, щоб побачити точні проблеми
|
||||
- Виконайте `openclaw doctor --fix` (або `--yes`), щоб застосувати виправлення
|
||||
- Запустіть `openclaw doctor`, щоб побачити точні проблеми
|
||||
- Запустіть `openclaw doctor --fix` (або `--yes`), щоб застосувати виправлення
|
||||
|
||||
Після кожного успішного запуску Gateway зберігає довірену останню відому справну копію.
|
||||
Якщо `openclaw.json` пізніше не проходить валідацію (або втрачає `gateway.mode`, різко
|
||||
Після кожного успішного запуску Gateway зберігає довірену останню справну копію.
|
||||
Якщо `openclaw.json` згодом не проходить валідацію (або втрачає `gateway.mode`, різко
|
||||
зменшується, або на початку з’являється сторонній рядок журналу), OpenClaw зберігає зламаний файл
|
||||
як `.clobbered.*`, відновлює останню відому справну копію та записує причину
|
||||
відновлення в журнал. На наступному ході агента також надсилається попередження про системну подію, щоб основний
|
||||
агент не переписав відновлену конфігурацію навмання. Просування до стану останньої відомої справної копії
|
||||
пропускається, якщо кандидат містить замасковані заповнювачі секретів, такі як `***`.
|
||||
Коли кожна проблема валідації обмежена `plugins.entries.<id>...`, OpenClaw
|
||||
не виконує відновлення всього файлу. Поточна конфігурація лишається активною, а
|
||||
локальна помилка Plugin показується окремо, щоб невідповідність схеми Plugin або версії хоста не відкочувала не пов’язані налаштування користувача.
|
||||
як `.clobbered.*`, відновлює останню справну копію та записує причину
|
||||
відновлення в журнал. Наступний хід агента також отримує попередження про системну подію, щоб основний
|
||||
агент не переписав відновлену конфігурацію навмання. Просування до статусу останньої справної копії
|
||||
пропускається, якщо кандидат містить приховані заповнювачі секретів, наприклад `***`.
|
||||
Коли всі проблеми валідації обмежені `plugins.entries.<id>...`, OpenClaw
|
||||
не виконує відновлення всього файлу. Він залишає активною поточну конфігурацію та
|
||||
показує локальну для Plugin помилку, щоб невідповідність схеми Plugin або версії хоста
|
||||
не відкотила інші налаштування користувача.
|
||||
|
||||
## Поширені завдання
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Налаштувати канал (WhatsApp, Telegram, Discord тощо)">
|
||||
Кожен канал має власний розділ конфігурації в `channels.<provider>`. Перегляньте окрему сторінку каналу для кроків налаштування:
|
||||
Кожен канал має власний розділ конфігурації в `channels.<provider>`. Дивіться окрему сторінку каналу для кроків налаштування:
|
||||
|
||||
- [WhatsApp](/uk/channels/whatsapp) — `channels.whatsapp`
|
||||
- [Telegram](/uk/channels/telegram) — `channels.telegram`
|
||||
@ -137,7 +137,7 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вибрати й налаштувати моделі">
|
||||
Налаштуйте основну модель і необов’язкові резервні варіанти:
|
||||
Установіть основну модель і необов’язкові резервні варіанти:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -156,31 +156,31 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `agents.defaults.models` визначає каталог моделей і слугує allowlist для `/model`.
|
||||
- Використовуйте `openclaw config set agents.defaults.models '<json>' --strict-json --merge`, щоб додати записи до allowlist без видалення наявних моделей. Звичайні повні заміни, які видалили б записи, відхиляються, якщо не передати `--replace`.
|
||||
- `agents.defaults.models` визначає каталог моделей і працює як allowlist для `/model`.
|
||||
- Використовуйте `openclaw config set agents.defaults.models '<json>' --strict-json --merge`, щоб додавати записи в allowlist без видалення наявних моделей. Звичайні заміни, які видалили б записи, відхиляються, якщо не передати `--replace`.
|
||||
- Посилання на моделі використовують формат `provider/model` (наприклад, `anthropic/claude-opus-4-6`).
|
||||
- `agents.defaults.imageMaxDimensionPx` керує зменшенням розміру зображень у транскрипті/інструментах (типове значення `1200`); менші значення зазвичай зменшують використання vision-токенів у запусках із великою кількістю знімків екрана.
|
||||
- Перегляньте [Models CLI](/uk/concepts/models) для перемикання моделей у чаті та [Model Failover](/uk/concepts/model-failover) для ротації автентифікації та поведінки резервних варіантів.
|
||||
- Для користувацьких/self-hosted провайдерів див. [Custom providers](/uk/gateway/config-tools#custom-providers-and-base-urls) у довіднику.
|
||||
- `agents.defaults.imageMaxDimensionPx` керує зменшенням розміру зображень у транскрипті/інструментах (типове значення `1200`); менші значення зазвичай зменшують використання vision-token у запусках із великою кількістю знімків екрана.
|
||||
- Дивіться [Models CLI](/uk/concepts/models) для перемикання моделей у чаті та [Model Failover](/uk/concepts/model-failover) для ротації автентифікації та поведінки резервного перемикання.
|
||||
- Для користувацьких/самостійно розміщених провайдерів дивіться [Custom providers](/uk/gateway/config-tools#custom-providers-and-base-urls) у довіднику.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Керувати тим, хто може надсилати повідомлення боту">
|
||||
Доступ до DM контролюється для кожного каналу через `dmPolicy`:
|
||||
Доступ до DM керується окремо для кожного каналу через `dmPolicy`:
|
||||
|
||||
- `"pairing"` (типово): невідомі відправники отримують одноразовий код pairing для підтвердження
|
||||
- `"allowlist"`: лише відправники з `allowFrom` (або зі сховища paired allow)
|
||||
- `"pairing"` (типово): невідомі відправники отримують одноразовий код сполучення для схвалення
|
||||
- `"allowlist"`: лише відправники з `allowFrom` (або зі сховища дозволених сполучених контактів)
|
||||
- `"open"`: дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`)
|
||||
- `"disabled"`: ігнорувати всі DM
|
||||
|
||||
Для груп використовуйте `groupPolicy` + `groupAllowFrom` або allowlist, специфічні для каналу.
|
||||
|
||||
Перегляньте [повний довідник](/uk/gateway/config-channels#dm-and-group-access) для деталей по кожному каналу.
|
||||
Дивіться [повний довідник](/uk/gateway/config-channels#dm-and-group-access) для деталей по кожному каналу.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати фільтрацію згадок у груповому чаті">
|
||||
Для групових повідомлень типовим значенням є **вимагати згадку**. Налаштуйте шаблони для кожного агента:
|
||||
<Accordion title="Налаштувати згадування для доступу в груповому чаті">
|
||||
Для групових повідомлень типово **потрібна згадка**. Налаштуйте шаблони для кожного агента:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -203,14 +203,14 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
```
|
||||
|
||||
- **Згадки в метаданих**: нативні @-згадки (WhatsApp tap-to-mention, Telegram @bot тощо)
|
||||
- **Текстові шаблони**: безпечні regex-шаблони в `mentionPatterns`
|
||||
- Перегляньте [повний довідник](/uk/gateway/config-channels#group-chat-mention-gating) для перевизначень по каналах і режиму self-chat.
|
||||
- **Текстові шаблони**: безпечні шаблони regex у `mentionPatterns`
|
||||
- Дивіться [повний довідник](/uk/gateway/config-channels#group-chat-mention-gating) для перевизначень по каналах і режиму чату із самим собою.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Обмежити Skills для кожного агента">
|
||||
Використовуйте `agents.defaults.skills` для спільного базового набору, а потім перевизначайте
|
||||
окремих агентів через `agents.list[].skills`:
|
||||
<Accordion title="Обмежити Skills для окремого агента">
|
||||
Використовуйте `agents.defaults.skills` для спільної базової конфігурації, а потім перевизначайте конкретних
|
||||
агентів через `agents.list[].skills`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -227,15 +227,15 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- Не вказуйте `agents.defaults.skills`, якщо за замовчуванням Skills не мають бути обмежені.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати типові значення.
|
||||
- Установіть `agents.list[].skills: []`, щоб не використовувати жодних Skills.
|
||||
- Перегляньте [Skills](/uk/tools/skills), [конфігурацію Skills](/uk/tools/skills-config) і
|
||||
[довідник з конфігурації](/uk/gateway/config-agents#agents-defaults-skills).
|
||||
- Не вказуйте `agents.defaults.skills`, якщо за замовчуванням Skills не повинні бути обмежені.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати значення за замовчуванням.
|
||||
- Установіть `agents.list[].skills: []`, якщо Skills не потрібні.
|
||||
- Дивіться [Skills](/uk/tools/skills), [Конфігурація Skills](/uk/tools/skills-config) і
|
||||
[Довідник з конфігурації](/uk/gateway/config-agents#agents-defaults-skills).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати моніторинг стану каналів gateway">
|
||||
<Accordion title="Налаштувати моніторинг здоров’я каналів gateway">
|
||||
Керуйте тим, наскільки агресивно gateway перезапускає канали, які виглядають застарілими:
|
||||
|
||||
```json5
|
||||
@ -258,15 +258,15 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- Установіть `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски моніторингу стану.
|
||||
- `channelStaleEventThresholdMinutes` має бути більшим або дорівнювати інтервалу перевірки.
|
||||
- Використовуйте `channels.<provider>.healthMonitor.enabled` або `channels.<provider>.accounts.<id>.healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу чи облікового запису без вимкнення глобального монітора.
|
||||
- Перегляньте [Health Checks](/uk/gateway/health) для операційної діагностики та [повний довідник](/uk/gateway/configuration-reference#gateway) для всіх полів.
|
||||
- Установіть `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски моніторингу здоров’я.
|
||||
- `channelStaleEventThresholdMinutes` має бути більшим або рівним інтервалу перевірки.
|
||||
- Використовуйте `channels.<provider>.healthMonitor.enabled` або `channels.<provider>.accounts.<id>.healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу або облікового запису без вимкнення глобального монітора.
|
||||
- Дивіться [Health Checks](/uk/gateway/health) для операційного налагодження та [повний довідник](/uk/gateway/configuration-reference#gateway) для всіх полів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати сесії та скидання">
|
||||
Сесії керують безперервністю розмови та ізоляцією:
|
||||
Сесії керують безперервністю та ізоляцією розмов:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -286,15 +286,15 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `dmScope`: `main` (спільна) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
|
||||
- `threadBindings`: глобальні типові значення для маршрутизації сесій, прив’язаних до потоків (Discord підтримує `/focus`, `/unfocus`, `/agents`, `/session idle` і `/session max-age`).
|
||||
- Перегляньте [Керування сесіями](/uk/concepts/session) для області дії, зв’язків ідентичностей і політики надсилання.
|
||||
- Перегляньте [повний довідник](/uk/gateway/config-agents#session) для всіх полів.
|
||||
- `dmScope`: `main` (спільний) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
|
||||
- `threadBindings`: глобальні значення за замовчуванням для маршрутизації сесій, прив’язаних до гілок (Discord підтримує `/focus`, `/unfocus`, `/agents`, `/session idle` і `/session max-age`).
|
||||
- Дивіться [Керування сесіями](/uk/concepts/session) для області дії, зв’язків ідентичності та політики надсилання.
|
||||
- Дивіться [повний довідник](/uk/gateway/config-agents#session) для всіх полів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Увімкнути ізоляцію">
|
||||
Запускайте сесії агентів в ізольованих середовищах виконання sandbox:
|
||||
Запускайте сесії агентів в ізольованих середовищах ізоляції:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -311,7 +311,7 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
|
||||
Спочатку зберіть образ: `scripts/sandbox-setup.sh`
|
||||
|
||||
Перегляньте [Ізоляція](/uk/gateway/sandboxing) для повного посібника та [повний довідник](/uk/gateway/config-agents#agentsdefaultssandbox) для всіх параметрів.
|
||||
Дивіться [Ізоляція](/uk/gateway/sandboxing) для повного посібника та [повний довідник](/uk/gateway/config-agents#agentsdefaultssandbox) для всіх параметрів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -336,7 +336,7 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
Еквівалент CLI:
|
||||
Еквівалент у CLI:
|
||||
|
||||
```bash
|
||||
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.com
|
||||
@ -345,34 +345,34 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
Що це робить:
|
||||
|
||||
- Дозволяє gateway надсилати `push.test`, сигнали пробудження та сигнали повторного підключення через зовнішній relay.
|
||||
- Використовує право надсилання, прив’язане до реєстрації, яке пересилає спарений застосунок iOS. Gateway не потрібен relay-токен рівня всього розгортання.
|
||||
- Прив’язує кожну реєстрацію через relay до ідентичності gateway, з якою було спарено застосунок iOS, тому інший gateway не зможе повторно використати збережену реєстрацію.
|
||||
- Залишає локальні/ручні збірки iOS на прямому APNs. Надсилання через relay застосовується лише до офіційно розповсюджуваних збірок, які зареєструвалися через relay.
|
||||
- Має збігатися з базовим URL relay, вбудованим в офіційну/TestFlight збірку iOS, щоб трафік реєстрації та надсилання потрапляв до одного й того самого розгортання relay.
|
||||
- Використовує дозвіл на надсилання, прив’язаний до реєстрації, який пересилає сполучений застосунок iOS. Gateway не потребує relay-токена рівня всього розгортання.
|
||||
- Прив’язує кожну реєстрацію через relay до ідентичності gateway, з якою сполучився застосунок iOS, тож інший gateway не може повторно використати збережену реєстрацію.
|
||||
- Залишає локальні/ручні збірки iOS на прямому APNs. Надсилання через relay застосовується лише до офіційних розповсюджуваних збірок, які зареєструвалися через relay.
|
||||
- Має збігатися з базовою URL-адресою relay, вбудованою в офіційну/TestFlight збірку iOS, щоб трафік реєстрації та надсилання потрапляв до одного й того самого розгортання relay.
|
||||
|
||||
Наскрізний потік:
|
||||
Наскрізний процес:
|
||||
|
||||
1. Установіть офіційну/TestFlight збірку iOS, скомпільовану з тим самим базовим URL relay.
|
||||
2. Налаштуйте `gateway.push.apns.relay.baseUrl` на gateway.
|
||||
3. Спарте застосунок iOS із gateway і дочекайтеся підключення як node-, так і operator-сесій.
|
||||
4. Застосунок iOS отримує ідентичність gateway, реєструється в relay за допомогою App Attest та квитанції застосунку, а потім публікує корисне навантаження `push.apns.register` через relay до спареного gateway.
|
||||
5. Gateway зберігає relay handle і право надсилання, а потім використовує їх для `push.test`, сигналів пробудження та сигналів повторного підключення.
|
||||
1. Установіть офіційну/TestFlight збірку iOS, скомпільовану з тією самою базовою URL-адресою relay.
|
||||
2. Налаштуйте `gateway.push.apns.relay.baseUrl` у gateway.
|
||||
3. Сполучіть застосунок iOS з gateway і дозвольте підключитися як сесії Node, так і сесії оператора.
|
||||
4. Застосунок iOS отримує ідентичність gateway, реєструється в relay за допомогою App Attest разом із квитанцією застосунку, а потім публікує payload `push.apns.register` через relay до сполученого gateway.
|
||||
5. Gateway зберігає relay-ідентифікатор і дозвіл на надсилання, а потім використовує їх для `push.test`, сигналів пробудження та сигналів повторного підключення.
|
||||
|
||||
Операційні примітки:
|
||||
|
||||
- Якщо ви перемикаєте застосунок iOS на інший gateway, перепідключіть застосунок, щоб він міг опублікувати нову relay-реєстрацію, прив’язану до цього gateway.
|
||||
- Якщо ви випускаєте нову збірку iOS, яка вказує на інше розгортання relay, застосунок оновлює кешовану relay-реєстрацію замість повторного використання старого relay origin.
|
||||
- Якщо ви перемикаєте застосунок iOS на інший gateway, повторно підключіть застосунок, щоб він міг опублікувати нову реєстрацію relay, прив’язану до цього gateway.
|
||||
- Якщо ви випускаєте нову збірку iOS, яка вказує на інше розгортання relay, застосунок оновлює свою кешовану реєстрацію relay замість повторного використання старого джерела relay.
|
||||
|
||||
Примітка щодо сумісності:
|
||||
|
||||
- `OPENCLAW_APNS_RELAY_BASE_URL` і `OPENCLAW_APNS_RELAY_TIMEOUT_MS` усе ще працюють як тимчасові перевизначення через env.
|
||||
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` залишається запасним варіантом для розробки лише через loopback; не зберігайте HTTP URL relay у конфігурації.
|
||||
- `OPENCLAW_APNS_RELAY_BASE_URL` і `OPENCLAW_APNS_RELAY_TIMEOUT_MS` усе ще працюють як тимчасові перевизначення env.
|
||||
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` залишається винятком для розробки лише для loopback; не зберігайте HTTP URL-адреси relay у конфігурації.
|
||||
|
||||
Перегляньте [Застосунок iOS](/uk/platforms/ios#relay-backed-push-for-official-builds) для наскрізного потоку та [Потік автентифікації й довіри](/uk/platforms/ios#authentication-and-trust-flow) для моделі безпеки relay.
|
||||
Дивіться [Застосунок iOS](/uk/platforms/ios#relay-backed-push-for-official-builds) для наскрізного процесу та [Потік автентифікації та довіри](/uk/platforms/ios#authentication-and-trust-flow) для моделі безпеки relay.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати Heartbeat (періодичні перевірки зв’язку)">
|
||||
<Accordion title="Налаштувати Heartbeat (періодичні перевірки)">
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
@ -389,11 +389,11 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
- `every`: рядок тривалості (`30m`, `2h`). Установіть `0m`, щоб вимкнути.
|
||||
- `target`: `last` | `none` | `<channel-id>` (наприклад, `discord`, `matrix`, `telegram` або `whatsapp`)
|
||||
- `directPolicy`: `allow` (типово) або `block` для цілей Heartbeat у стилі DM
|
||||
- Перегляньте [Heartbeat](/uk/gateway/heartbeat) для повного посібника.
|
||||
- Дивіться [Heartbeat](/uk/gateway/heartbeat) для повного посібника.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати Cron jobs">
|
||||
<Accordion title="Налаштувати завдання Cron">
|
||||
```json5
|
||||
{
|
||||
cron: {
|
||||
@ -408,14 +408,14 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `sessionRetention`: видаляти завершені ізольовані сесії запуску з `sessions.json` (типово `24h`; установіть `false`, щоб вимкнути).
|
||||
- `sessionRetention`: очищати завершені ізольовані сесії запуску з `sessions.json` (типово `24h`; установіть `false`, щоб вимкнути).
|
||||
- `runLog`: очищати `cron/runs/<jobId>.jsonl` за розміром і кількістю збережених рядків.
|
||||
- Перегляньте [Cron jobs](/uk/automation/cron-jobs) для огляду функції та прикладів CLI.
|
||||
- Дивіться [Завдання Cron](/uk/automation/cron-jobs) для огляду функцій і прикладів CLI.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати Webhook-и (hooks)">
|
||||
Увімкніть HTTP-ендпойнти Webhook на Gateway:
|
||||
<Accordion title="Налаштувати Webhook (hooks)">
|
||||
Увімкніть HTTP-ендпоїнти Webhook у Gateway:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -439,20 +439,20 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
```
|
||||
|
||||
Примітка щодо безпеки:
|
||||
- Уважайте весь вміст payload hook/webhook ненадійним вхідним даним.
|
||||
- Використовуйте окремий `hooks.token`; не використовуйте повторно спільний токен Gateway.
|
||||
- Автентифікація hook виконується лише через заголовки (`Authorization: Bearer ...` або `x-openclaw-token`); токени в рядку запиту відхиляються.
|
||||
- `hooks.path` не може бути `/`; використовуйте окремий підшлях для вхідних webhook, наприклад `/hooks`.
|
||||
- Тримайте прапорці обходу небезпечного вмісту вимкненими (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), якщо не виконуєте вузькоспрямовану діагностику.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також установіть `hooks.allowedSessionKeyPrefixes`, щоб обмежити ключі сесій, які може вибирати викликальна сторона.
|
||||
- Для агентів, керованих hook, віддавайте перевагу сильним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями плюс sandbox, де це можливо).
|
||||
- Увесь вміст payload hook/webhook слід вважати недовіреним введенням.
|
||||
- Використовуйте окремий `hooks.token`; не використовуйте спільний токен Gateway повторно.
|
||||
- Автентифікація hook працює лише через заголовки (`Authorization: Bearer ...` або `x-openclaw-token`); токени в query string відхиляються.
|
||||
- `hooks.path` не може бути `/`; використовуйте для вхідних webhook окремий підшлях, наприклад `/hooks`.
|
||||
- Залишайте прапорці обходу небезпечного вмісту вимкненими (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), якщо не виконуєте вузькоспрямоване налагодження.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також задайте `hooks.allowedSessionKeyPrefixes`, щоб обмежити ключі сесій, які може вибрати викликач.
|
||||
- Для агентів, керованих hook, віддавайте перевагу потужним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями плюс ізоляція, де це можливо).
|
||||
|
||||
Перегляньте [повний довідник](/uk/gateway/configuration-reference#hooks) для всіх параметрів mappings і інтеграції Gmail.
|
||||
Дивіться [повний довідник](/uk/gateway/configuration-reference#hooks) для всіх параметрів mappings і інтеграції Gmail.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштувати маршрутизацію для кількох агентів">
|
||||
Запускайте кількох ізольованих агентів з окремими робочими просторами та сесіями:
|
||||
<Accordion title="Налаштувати маршрутизацію з кількома агентами">
|
||||
Запускайте кілька ізольованих агентів з окремими робочими просторами та сесіями:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -469,12 +469,12 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
Перегляньте [Multi-Agent](/uk/concepts/multi-agent) і [повний довідник](/uk/gateway/config-agents#multi-agent-routing) для правил bindings і профілів доступу для кожного агента.
|
||||
Дивіться [Multi-Agent](/uk/concepts/multi-agent) і [повний довідник](/uk/gateway/config-agents#multi-agent-routing) для правил bindings і профілів доступу для кожного агента.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Розділити конфігурацію на кілька файлів ($include)">
|
||||
Використовуйте `$include` для організації великих конфігурацій:
|
||||
Використовуйте `$include`, щоб упорядковувати великі конфігурації:
|
||||
|
||||
```json5
|
||||
// ~/.openclaw/openclaw.json
|
||||
@ -488,12 +488,12 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
```
|
||||
|
||||
- **Один файл**: замінює об’єкт-контейнер
|
||||
- **Масив файлів**: глибоко зливається за порядком (пізніші мають пріоритет)
|
||||
- **Сусідні ключі**: зливаються після include (перевизначають включені значення)
|
||||
- **Масив файлів**: глибоко об’єднується за порядком (пізніший має пріоритет)
|
||||
- **Сусідні ключі**: об’єднуються після include (перевизначають включені значення)
|
||||
- **Вкладені include**: підтримуються до 10 рівнів вкладеності
|
||||
- **Відносні шляхи**: обчислюються відносно файла, що включає
|
||||
- **Відносні шляхи**: визначаються відносно файлу, який включає
|
||||
- **Записи, якими керує OpenClaw**: коли запис змінює лише один розділ верхнього рівня,
|
||||
що спирається на include з одним файлом, наприклад `plugins: { $include: "./plugins.json5" }`,
|
||||
який підтримується include одного файлу, наприклад `plugins: { $include: "./plugins.json5" }`,
|
||||
OpenClaw оновлює цей включений файл і залишає `openclaw.json` без змін
|
||||
- **Непідтримуваний наскрізний запис**: кореневі include, масиви include та include
|
||||
із сусідніми перевизначеннями завершуються безпечною відмовою для записів, якими керує OpenClaw, замість
|
||||
@ -505,34 +505,34 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
|
||||
## Гаряче перезавантаження конфігурації
|
||||
|
||||
Gateway стежить за `~/.openclaw/openclaw.json` і автоматично застосовує зміни — для більшості налаштувань ручний перезапуск не потрібен.
|
||||
Gateway відстежує `~/.openclaw/openclaw.json` і автоматично застосовує зміни — для більшості налаштувань ручний перезапуск не потрібен.
|
||||
|
||||
Прямі редагування файлу вважаються ненадійними, доки не пройдуть валідацію. Спостерігач
|
||||
чекає, поки тимчасові записи/перейменування редактора стабілізуються, читає
|
||||
Прямі редагування файлу вважаються недовіреними, доки не пройдуть валідацію. Спостерігач
|
||||
чекає, поки завершиться тимчасовий запис/перейменування редактора, зчитує
|
||||
підсумковий файл і відхиляє недійсні зовнішні редагування, відновлюючи
|
||||
останню відому справну конфігурацію. Записи конфігурації, якими керує OpenClaw,
|
||||
використовують той самий бар’єр схеми перед записом; руйнівні перезаписи, такі
|
||||
як видалення `gateway.mode` або зменшення файлу більш ніж наполовину, відхиляються
|
||||
останні відомі справні налаштування. Записи конфігурації, якими керує OpenClaw,
|
||||
використовують той самий бар’єр схеми перед записом; руйнівні перезаписи, такі як
|
||||
видалення `gateway.mode` або зменшення файлу більш ніж наполовину, відхиляються
|
||||
і зберігаються як `.rejected.*` для перевірки.
|
||||
|
||||
Виняток — локальні помилки валідації Plugin: якщо всі проблеми містяться в
|
||||
`plugins.entries.<id>...`, перезавантаження зберігає поточну конфігурацію й повідомляє про проблему Plugin
|
||||
Помилки валідації, локальні для Plugin, є винятком: якщо всі проблеми знаходяться в
|
||||
`plugins.entries.<id>...`, перезавантаження зберігає поточну конфігурацію та повідомляє про проблему Plugin
|
||||
замість відновлення `.last-good`.
|
||||
|
||||
Якщо в журналах ви бачите `Config auto-restored from last-known-good` або
|
||||
`config reload restored last-known-good config`, перевірте відповідний файл
|
||||
`.clobbered.*` поруч із `openclaw.json`, виправте відхилений payload, а потім виконайте
|
||||
`openclaw config validate`. Перегляньте [усунення проблем Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config)
|
||||
Якщо ви бачите `Config auto-restored from last-known-good` або
|
||||
`config reload restored last-known-good config` у журналах, перевірте відповідний
|
||||
файл `.clobbered.*` поруч із `openclaw.json`, виправте відхилений payload, а потім запустіть
|
||||
`openclaw config validate`. Дивіться [Усунення несправностей Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config)
|
||||
для контрольного списку відновлення.
|
||||
|
||||
### Режими перезавантаження
|
||||
|
||||
| Режим | Поведінка |
|
||||
| ---------------------- | --------------------------------------------------------------------------------------- |
|
||||
| **`hybrid`** (типово) | Миттєво гаряче застосовує безпечні зміни. Автоматично перезапускається для критичних. |
|
||||
| **`hot`** | Гаряче застосовує лише безпечні зміни. Пише попередження, коли потрібен перезапуск — ви виконуєте його самі. |
|
||||
| Режим | Поведінка |
|
||||
| ---------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| **`hybrid`** (типово) | Миттєво гаряче застосовує безпечні зміни. Автоматично перезапускається для критичних. |
|
||||
| **`hot`** | Гаряче застосовує лише безпечні зміни. Логує попередження, коли потрібен перезапуск — ви виконуєте його самі. |
|
||||
| **`restart`** | Перезапускає Gateway при будь-якій зміні конфігурації, безпечній чи ні. |
|
||||
| **`off`** | Вимикає стеження за файлом. Зміни набувають чинності під час наступного ручного перезапуску. |
|
||||
| **`off`** | Вимикає відстеження файлу. Зміни набудуть чинності під час наступного ручного перезапуску. |
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -546,45 +546,46 @@ Gateway стежить за `~/.openclaw/openclaw.json` і автоматичн
|
||||
|
||||
Більшість полів застосовуються гаряче без простою. У режимі `hybrid` зміни, що потребують перезапуску, обробляються автоматично.
|
||||
|
||||
| Категорія | Поля | Потрібен перезапуск? |
|
||||
| ------------------ | ----------------------------------------------------------------- | -------------------- |
|
||||
| Канали | `channels.*`, `web` (WhatsApp) — усі вбудовані канали та канали Plugin | Ні |
|
||||
| Агенти й моделі | `agent`, `agents`, `models`, `routing` | Ні |
|
||||
| Автоматизація | `hooks`, `cron`, `agent.heartbeat` | Ні |
|
||||
| Сесії та повідомлення | `session`, `messages` | Ні |
|
||||
| Інструменти й медіа | `tools`, `browser`, `skills`, `audio`, `talk` | Ні |
|
||||
| UI та інше | `ui`, `logging`, `identity`, `bindings` | Ні |
|
||||
| Сервер Gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Так** |
|
||||
| Інфраструктура | `discovery`, `canvasHost`, `plugins` | **Так** |
|
||||
| Категорія | Поля | Потрібен перезапуск? |
|
||||
| ------------------- | ----------------------------------------------------------------- | -------------------- |
|
||||
| Канали | `channels.*`, `web` (WhatsApp) — усі вбудовані канали та канали Plugin | Ні |
|
||||
| Агент і моделі | `agent`, `agents`, `models`, `routing` | Ні |
|
||||
| Автоматизація | `hooks`, `cron`, `agent.heartbeat` | Ні |
|
||||
| Сесії та повідомлення | `session`, `messages` | Ні |
|
||||
| Інструменти й медіа | `tools`, `browser`, `skills`, `mcp`, `audio`, `talk` | Ні |
|
||||
| UI та інше | `ui`, `logging`, `identity`, `bindings` | Ні |
|
||||
| Сервер Gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Так** |
|
||||
| Інфраструктура | `discovery`, `canvasHost`, `plugins` | **Так** |
|
||||
|
||||
<Note>
|
||||
`gateway.reload` і `gateway.remote` — винятки: їх зміна **не** спричиняє перезапуск.
|
||||
`gateway.reload` і `gateway.remote` є винятками — їхня зміна **не** спричиняє перезапуск.
|
||||
</Note>
|
||||
|
||||
### Планування перезавантаження
|
||||
|
||||
Коли ви редагуєте вихідний файл, на який є посилання через `$include`, OpenClaw планує
|
||||
перезавантаження на основі компонування, створеного у вихідному файлі, а не сплощеного подання в пам’яті.
|
||||
Це робить рішення гарячого перезавантаження (гаряче застосування чи перезапуск) передбачуваними, навіть коли
|
||||
один розділ верхнього рівня живе у власному включеному файлі, наприклад
|
||||
`plugins: { $include: "./plugins.json5" }`. Якщо компонування вихідного коду неоднозначне, планування перезавантаження безпечно завершується відмовою.
|
||||
перезавантаження за компонуванням, заданим у вихідному файлі, а не за сплощеним поданням у пам’яті.
|
||||
Це робить рішення щодо гарячого перезавантаження (гаряче застосування чи перезапуск) передбачуваними, навіть якщо
|
||||
один розділ верхнього рівня знаходиться у власному включеному файлі, наприклад
|
||||
`plugins: { $include: "./plugins.json5" }`. Планування перезавантаження безпечно завершується відмовою, якщо
|
||||
структура вихідного компонування неоднозначна.
|
||||
|
||||
## RPC конфігурації (програмні оновлення)
|
||||
## Config RPC (програмні оновлення)
|
||||
|
||||
Для інструментів, які записують конфігурацію через API gateway, віддавайте перевагу такому потоку:
|
||||
Для інструментів, які записують конфігурацію через API gateway, віддавайте перевагу такому процесу:
|
||||
|
||||
- `config.schema.lookup`, щоб перевірити одне піддерево (неглибокий вузол схеми + зведення
|
||||
- `config.schema.lookup`, щоб переглянути одне піддерево (неглибокий вузол схеми + зведення
|
||||
дочірніх елементів)
|
||||
- `config.get`, щоб отримати поточний знімок разом із `hash`
|
||||
- `config.patch` для часткових оновлень (JSON merge patch: об’єкти зливаються, `null`
|
||||
- `config.patch` для часткових оновлень (JSON merge patch: об’єкти об’єднуються, `null`
|
||||
видаляє, масиви замінюються)
|
||||
- `config.apply` лише якщо ви справді збираєтеся замінити всю конфігурацію
|
||||
- `update.run` для явного самооновлення з подальшим перезапуском
|
||||
- `config.apply` лише тоді, коли ви справді маєте намір замінити всю конфігурацію
|
||||
- `update.run` для явного самооновлення з перезапуском
|
||||
|
||||
<Note>
|
||||
Записи control-plane (`config.apply`, `config.patch`, `update.run`) мають
|
||||
обмеження частоти: 3 запити за 60 секунд для кожної пари `deviceId+clientIp`. Запити
|
||||
на перезапуск об’єднуються, а потім застосовується 30-секундний cooldown між циклами перезапуску.
|
||||
обмеження частоти: 3 запити за 60 секунд на `deviceId+clientIp`. Запити на перезапуск
|
||||
об’єднуються, а потім застосовують 30-секундний cooldown між циклами перезапуску.
|
||||
</Note>
|
||||
|
||||
Приклад часткового patch:
|
||||
@ -598,17 +599,17 @@ openclaw gateway call config.patch --params '{
|
||||
```
|
||||
|
||||
І `config.apply`, і `config.patch` приймають `raw`, `baseHash`, `sessionKey`,
|
||||
`note` і `restartDelayMs`. `baseHash` є обов’язковим для обох методів, якщо
|
||||
`note` і `restartDelayMs`. `baseHash` є обов’язковим для обох методів, коли
|
||||
конфігурація вже існує.
|
||||
|
||||
## Змінні середовища
|
||||
|
||||
OpenClaw читає змінні середовища з батьківського процесу, а також із:
|
||||
OpenClaw зчитує env vars з батьківського процесу, а також з:
|
||||
|
||||
- `.env` з поточного робочого каталогу (якщо є)
|
||||
- `.env` у поточному робочому каталозі (якщо присутній)
|
||||
- `~/.openclaw/.env` (глобальний резервний варіант)
|
||||
|
||||
Жоден із цих файлів не перевизначає наявні змінні середовища. Ви також можете задавати вбудовані змінні середовища в конфігурації:
|
||||
Жоден із файлів не перевизначає наявні env vars. Ви також можете задавати вбудовані env vars у конфігурації:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -619,8 +620,8 @@ OpenClaw читає змінні середовища з батьківсько
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Імпорт змінних середовища оболонки (необов’язково)">
|
||||
Якщо це ввімкнено й очікувані ключі не задано, OpenClaw запускає вашу login shell і імпортує лише відсутні ключі:
|
||||
<Accordion title="Імпорт env із shell (необов’язково)">
|
||||
Якщо це ввімкнено й очікувані ключі не задані, OpenClaw запускає ваш login shell і імпортує лише відсутні ключі:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -630,11 +631,11 @@ OpenClaw читає змінні середовища з батьківсько
|
||||
}
|
||||
```
|
||||
|
||||
Еквівалент змінної середовища: `OPENCLAW_LOAD_SHELL_ENV=1`
|
||||
Еквівалент env var: `OPENCLAW_LOAD_SHELL_ENV=1`
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Підстановка змінних середовища у значеннях конфігурації">
|
||||
Посилайтеся на змінні середовища в будь-якому рядковому значенні конфігурації через `${VAR_NAME}`:
|
||||
<Accordion title="Підстановка env var у значеннях конфігурації">
|
||||
Посилайтеся на env vars у будь-якому рядковому значенні конфігурації через `${VAR_NAME}`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -645,16 +646,16 @@ OpenClaw читає змінні середовища з батьківсько
|
||||
|
||||
Правила:
|
||||
|
||||
- Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`
|
||||
- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`
|
||||
- Відсутні/порожні змінні спричиняють помилку під час завантаження
|
||||
- Екрануйте через `$${VAR}` для буквального виводу
|
||||
- Працює всередині файлів `$include`
|
||||
- Працює у файлах `$include`
|
||||
- Вбудована підстановка: `"${BASE}/v1"` → `"https://api.example.com/v1"`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Посилання на секрети (env, file, exec)">
|
||||
Для полів, які підтримують об’єкти SecretRef, ви можете використовувати:
|
||||
Для полів, що підтримують об’єкти SecretRef, можна використовувати:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -686,15 +687,15 @@ OpenClaw читає змінні середовища з батьківсько
|
||||
}
|
||||
```
|
||||
|
||||
Докладно про SecretRef (зокрема `secrets.providers` для `env`/`file`/`exec`) див. у [Керування секретами](/uk/gateway/secrets).
|
||||
Підтримувані шляхи облікових даних наведено в [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface).
|
||||
Подробиці про SecretRef (включно з `secrets.providers` для `env`/`file`/`exec`) наведено в [Керування секретами](/uk/gateway/secrets).
|
||||
Підтримувані шляхи облікових даних перелічено в [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface).
|
||||
</Accordion>
|
||||
|
||||
Перегляньте [Середовище](/uk/help/environment) для повного опису пріоритетів і джерел.
|
||||
Дивіться [Environment](/uk/help/environment) для повного пріоритету та джерел.
|
||||
|
||||
## Повний довідник
|
||||
|
||||
Повний довідник для кожного поля див. у **[Довідник з конфігурації](/uk/gateway/configuration-reference)**.
|
||||
Повний довідник по полях дивіться в **[Довідник з конфігурації](/uk/gateway/configuration-reference)**.
|
||||
|
||||
---
|
||||
|
||||
@ -702,6 +703,6 @@ _Пов’язане: [Приклади конфігурації](/uk/gateway/co
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [довідник з конфігурації](/uk/gateway/configuration-reference)
|
||||
- [приклади конфігурації](/uk/gateway/configuration-examples)
|
||||
- [посібник з експлуатації Gateway](/uk/gateway)
|
||||
- [Довідник з конфігурації](/uk/gateway/configuration-reference)
|
||||
- [Приклади конфігурації](/uk/gateway/configuration-examples)
|
||||
- [Runbook Gateway](/uk/gateway)
|
||||
|
||||
@ -1,36 +1,36 @@
|
||||
---
|
||||
read_when:
|
||||
- Реалізація режиму Talk на macOS/iOS/Android
|
||||
- Змінення поведінки голосу/TTS/переривання
|
||||
summary: 'Режим Talk: безперервні голосові розмови з ElevenLabs TTS'
|
||||
title: Режим Talk
|
||||
- Реалізація режиму розмови на macOS/iOS/Android
|
||||
- Зміна голосу/TTS/поведінки переривання
|
||||
summary: 'Режим розмови: безперервні голосові розмови з налаштованими TTS-провайдерами'
|
||||
title: Режим розмови
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T23:01:17Z"
|
||||
generated_at: "2026-04-25T07:53:39Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 49286cd39a104d4514eb1df75627a2f64182313b11792bb246f471178a702198
|
||||
source_hash: 84c99149c43bfe9fa4866b20271089d88d7e3d2f5abe6d16477a26915dad7829
|
||||
source_path: nodes/talk.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Режим Talk — це безперервний цикл голосової розмови:
|
||||
Режим розмови — це безперервний цикл голосової розмови:
|
||||
|
||||
1. Слухати мовлення
|
||||
2. Надіслати транскрипт моделі (основна сесія, `chat.send`)
|
||||
3. Дочекатися відповіді
|
||||
4. Озвучити її через налаштованого провайдера Talk (`talk.speak`)
|
||||
4. Озвучити її через налаштованого Talk-провайдера (`talk.speak`)
|
||||
|
||||
## Поведінка (macOS)
|
||||
|
||||
- **Завжди активний оверлей**, поки ввімкнено режим Talk.
|
||||
- Переходи між фазами **Listening → Thinking → Speaking**.
|
||||
- Після **короткої паузи** (вікно тиші) поточний транскрипт надсилається.
|
||||
- Відповіді **записуються у WebChat** (так само, як під час введення тексту).
|
||||
- **Переривання мовленням** (типово ввімкнено): якщо користувач починає говорити, поки assistant говорить, ми зупиняємо відтворення й фіксуємо часову мітку переривання для наступного prompt.
|
||||
- **Постійно активне накладання**, поки режим розмови увімкнено.
|
||||
- Переходи між фазами **Слухання → Обробка → Озвучення**.
|
||||
- Під час **короткої паузи** (вікно тиші) поточний транскрипт надсилається.
|
||||
- Відповіді **записуються у WebChat** (так само, як і під час введення тексту).
|
||||
- **Переривання мовленням** (типово ввімкнено): якщо користувач починає говорити, поки помічник озвучує відповідь, ми зупиняємо відтворення й фіксуємо часову позначку переривання для наступного запиту.
|
||||
|
||||
## Голосові директиви у відповідях
|
||||
|
||||
Assistant може додати на початку відповіді **один рядок JSON**, щоб керувати голосом:
|
||||
Помічник може додати на початок своєї відповіді **один рядок JSON**, щоб керувати голосом:
|
||||
|
||||
```json
|
||||
{ "voice": "<voice-id>", "once": true }
|
||||
@ -41,8 +41,8 @@ Assistant може додати на початку відповіді **оди
|
||||
- Лише перший непорожній рядок.
|
||||
- Невідомі ключі ігноруються.
|
||||
- `once: true` застосовується лише до поточної відповіді.
|
||||
- Без `once` голос стає новим типовим голосом для режиму Talk.
|
||||
- Рядок JSON прибирається перед відтворенням TTS.
|
||||
- Без `once` голос стає новим типовим голосом для режиму розмови.
|
||||
- Рядок JSON видаляється перед відтворенням через TTS.
|
||||
|
||||
Підтримувані ключі:
|
||||
|
||||
@ -52,15 +52,24 @@ Assistant може додати на початку відповіді **оди
|
||||
- `seed`, `normalize`, `lang`, `output_format`, `latency_tier`
|
||||
- `once`
|
||||
|
||||
## Config (`~/.openclaw/openclaw.json`)
|
||||
## Конфігурація (`~/.openclaw/openclaw.json`)
|
||||
|
||||
```json5
|
||||
{
|
||||
talk: {
|
||||
voiceId: "elevenlabs_voice_id",
|
||||
modelId: "eleven_v3",
|
||||
outputFormat: "mp3_44100_128",
|
||||
apiKey: "elevenlabs_api_key",
|
||||
provider: "elevenlabs",
|
||||
providers: {
|
||||
elevenlabs: {
|
||||
voiceId: "elevenlabs_voice_id",
|
||||
modelId: "eleven_v3",
|
||||
outputFormat: "mp3_44100_128",
|
||||
apiKey: "elevenlabs_api_key",
|
||||
},
|
||||
mlx: {
|
||||
modelId: "mlx-community/Soprano-80M-bf16",
|
||||
},
|
||||
system: {},
|
||||
},
|
||||
silenceTimeoutMs: 1500,
|
||||
interruptOnSpeech: true,
|
||||
},
|
||||
@ -70,34 +79,37 @@ Assistant може додати на початку відповіді **оди
|
||||
Типові значення:
|
||||
|
||||
- `interruptOnSpeech`: true
|
||||
- `silenceTimeoutMs`: якщо не задано, Talk зберігає типове для платформи вікно паузи перед надсиланням транскрипту (`700 ms` на macOS і Android, `900 ms` на iOS)
|
||||
- `voiceId`: як запасний варіант використовується `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` (або перший голос ElevenLabs, якщо доступний API key)
|
||||
- `modelId`: якщо не задано, типово використовується `eleven_v3`
|
||||
- `apiKey`: як запасний варіант використовується `ELEVENLABS_API_KEY` (або shell profile gateway, якщо доступний)
|
||||
- `outputFormat`: типово `pcm_44100` на macOS/iOS і `pcm_24000` на Android (встановіть `mp3_*`, щоб примусово використовувати потокове MP3)
|
||||
- `silenceTimeoutMs`: якщо не задано, Talk використовує типове для платформи вікно паузи перед надсиланням транскрипту (`700 ms` на macOS і Android, `900 ms` на iOS)
|
||||
- `provider`: вибирає активного Talk-провайдера. Використовуйте `elevenlabs`, `mlx` або `system` для локальних шляхів відтворення на macOS.
|
||||
- `providers.<provider>.voiceId`: використовує `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` як запасний варіант для ElevenLabs (або перший голос ElevenLabs, якщо доступний API-ключ).
|
||||
- `providers.elevenlabs.modelId`: якщо не задано, типово використовується `eleven_v3`.
|
||||
- `providers.mlx.modelId`: якщо не задано, типово використовується `mlx-community/Soprano-80M-bf16`.
|
||||
- `providers.elevenlabs.apiKey`: використовує `ELEVENLABS_API_KEY` як запасний варіант (або профіль shell Gateway, якщо доступно).
|
||||
- `outputFormat`: типово `pcm_44100` на macOS/iOS і `pcm_24000` на Android (встановіть `mp3_*`, щоб примусово використовувати MP3-стримінг)
|
||||
|
||||
## UI macOS
|
||||
## Інтерфейс macOS
|
||||
|
||||
- Перемикач у рядку меню: **Talk**
|
||||
- Вкладка config: група **Talk Mode** (voice id + перемикач переривання)
|
||||
- Оверлей:
|
||||
- **Listening**: хмара пульсує з рівнем мікрофона
|
||||
- Вкладка конфігурації: група **Talk Mode** (ідентифікатор голосу + перемикач переривання)
|
||||
- Накладання:
|
||||
- **Listening**: хмара пульсує відповідно до рівня мікрофона
|
||||
- **Thinking**: анімація занурення
|
||||
- **Speaking**: кільця, що розходяться
|
||||
- Натискання на хмару: зупинити озвучення
|
||||
- Натискання X: вийти з режиму Talk
|
||||
- Натисніть на хмару: зупинити озвучення
|
||||
- Натисніть X: вийти з режиму розмови
|
||||
|
||||
## Примітки
|
||||
|
||||
- Потребує дозволів Speech і Microphone.
|
||||
- Потрібні дозволи на Speech і Microphone.
|
||||
- Використовує `chat.send` для ключа сесії `main`.
|
||||
- Gateway виконує відтворення Talk через `talk.speak`, використовуючи активного провайдера Talk. Android використовує локальний системний TTS як запасний варіант лише тоді, коли цей RPC недоступний.
|
||||
- Gateway виконує озвучення Talk через `talk.speak` з використанням активного Talk-провайдера. Android переходить на локальний системний TTS лише тоді, коли цей RPC недоступний.
|
||||
- Локальне відтворення MLX на macOS використовує вбудований допоміжний інструмент `openclaw-mlx-tts`, якщо він доступний, або виконуваний файл у `PATH`. Установіть `OPENCLAW_MLX_TTS_BIN`, щоб указати на власний допоміжний бінарний файл під час розробки.
|
||||
- `stability` для `eleven_v3` перевіряється на значення `0.0`, `0.5` або `1.0`; інші моделі приймають `0..1`.
|
||||
- `latency_tier`, якщо задано, перевіряється в діапазоні `0..4`.
|
||||
- Android підтримує формати виводу `pcm_16000`, `pcm_22050`, `pcm_24000` і `pcm_44100` для низькозатримкового потокового AudioTrack.
|
||||
- `latency_tier` перевіряється в діапазоні `0..4`, якщо його задано.
|
||||
- Android підтримує формати виводу `pcm_16000`, `pcm_22050`, `pcm_24000` і `pcm_44100` для низьколатентного стримінгу через AudioTrack.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Пробудження голосом](/uk/nodes/voicewake)
|
||||
- [Голосова активація](/uk/nodes/voicewake)
|
||||
- [Аудіо та голосові нотатки](/uk/nodes/audio)
|
||||
- [Розуміння медіа](/uk/nodes/media-understanding)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,20 +1,20 @@
|
||||
---
|
||||
read_when:
|
||||
- Генерація зображень через агента
|
||||
- Генерування зображень через агента
|
||||
- Налаштування провайдерів і моделей для генерації зображень
|
||||
- Розуміння параметрів інструмента `image_generate`
|
||||
summary: Генеруйте та редагуйте зображення за допомогою налаштованих провайдерів (OpenAI, OpenAI Codex OAuth, Google Gemini, OpenRouter, fal, MiniMax, ComfyUI, Vydra, xAI)
|
||||
title: Генерація зображень
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T23:42:15Z"
|
||||
generated_at: "2026-04-25T07:53:47Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 8cfa462ba943e816d26215898bcf201fe118c96a618f2d340b0db22cc1409f56
|
||||
source_hash: 02369928fecac147729ca586cd39e1a88791219ffe26d8e94429d0ea4b1af411
|
||||
source_path: tools/image-generation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Інструмент `image_generate` дає агенту змогу створювати й редагувати зображення за допомогою ваших налаштованих провайдерів. Згенеровані зображення автоматично доставляються як медіавкладення у відповіді агента.
|
||||
Інструмент `image_generate` дає агенту змогу створювати й редагувати зображення за допомогою ваших налаштованих провайдерів. Створені зображення автоматично доставляються як медіавкладення у відповіді агента.
|
||||
|
||||
<Note>
|
||||
Інструмент з’являється лише тоді, коли доступний принаймні один провайдер генерації зображень. Якщо ви не бачите `image_generate` серед інструментів вашого агента, налаштуйте `agents.defaults.imageGenerationModel`, задайте API-ключ провайдера або увійдіть через OpenAI Codex OAuth.
|
||||
@ -37,52 +37,50 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
Codex OAuth використовує те саме посилання на модель `openai/gpt-image-2`. Коли
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw спрямовує запити на
|
||||
зображення через той самий OAuth-профіль замість того, щоб спочатку намагатися
|
||||
використати `OPENAI_API_KEY`. Явна користувацька конфігурація зображень
|
||||
`models.providers.openai`, наприклад API-ключ або користувацький/Azure base URL,
|
||||
повертає використання прямого маршруту OpenAI Images API.
|
||||
Для сумісних з OpenAI LAN-ендпоінтів, таких як LocalAI, залиште користувацький
|
||||
Codex OAuth використовує те саме посилання на модель `openai/gpt-image-2`. Коли налаштовано OAuth-профіль
|
||||
`openai-codex`, OpenClaw спрямовує запити на зображення
|
||||
через той самий OAuth-профіль замість того, щоб спочатку пробувати `OPENAI_API_KEY`.
|
||||
Явна власна конфігурація зображень `models.providers.openai`, наприклад API-ключ або
|
||||
власний/Azure base URL, знову перемикає на прямий маршрут OpenAI Images API.
|
||||
Для OpenAI-сумісних LAN-ендпойнтів, таких як LocalAI, збережіть власний
|
||||
`models.providers.openai.baseUrl` і явно ввімкніть
|
||||
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; приватні/внутрішні
|
||||
ендпоінти зображень залишаються заблокованими за замовчуванням.
|
||||
ендпойнти зображень за замовчуванням залишаються заблокованими.
|
||||
|
||||
3. Попросіть агента: _"Згенеруй зображення дружнього маскота-робота."_
|
||||
3. Попросіть агента: _"Згенеруй зображення дружнього робота-маскота."_
|
||||
|
||||
Агент автоматично викликає `image_generate`. Додавати інструмент до списку дозволених не потрібно — він увімкнений за замовчуванням, коли доступний провайдер.
|
||||
Агент автоматично викликає `image_generate`. Додавати інструмент до списку дозволених не потрібно — його ввімкнено за замовчуванням, коли доступний провайдер.
|
||||
|
||||
## Поширені маршрути
|
||||
|
||||
| Ціль | Посилання на модель | Автентифікація |
|
||||
| ---------------------------------------------------- | ------------------------------------------------- | ----------------------------------- |
|
||||
| Генерація зображень OpenAI з оплатою через API | `openai/gpt-image-2` | `OPENAI_API_KEY` |
|
||||
| Генерація зображень OpenAI з автентифікацією підписки Codex | `openai/gpt-image-2` | OpenAI Codex OAuth |
|
||||
| Генерація зображень OpenRouter | `openrouter/google/gemini-3.1-flash-image-preview` | `OPENROUTER_API_KEY` |
|
||||
| Генерація зображень OpenAI з автентифікацією за підпискою Codex | `openai/gpt-image-2` | OpenAI Codex OAuth |
|
||||
| Генерація зображень OpenRouter | `openrouter/google/gemini-3.1-flash-image-preview` | `OPENROUTER_API_KEY` |
|
||||
| Генерація зображень Google Gemini | `google/gemini-3.1-flash-image-preview` | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
|
||||
Той самий інструмент `image_generate` обробляє генерацію за текстом і
|
||||
редагування за референсними зображеннями. Використовуйте `image` для одного
|
||||
референса або `images` для кількох референсів.
|
||||
Підказки для виводу, які підтримуються провайдером, як-от `quality`,
|
||||
`outputFormat` і специфічний для OpenAI параметр `background`,
|
||||
передаються далі, коли це можливо, і позначаються як проігноровані, якщо
|
||||
провайдер їх не підтримує.
|
||||
Той самий інструмент `image_generate` обробляє як генерацію з тексту в зображення, так і
|
||||
редагування за еталонним зображенням. Використовуйте `image` для одного еталона
|
||||
або `images` для кількох еталонів.
|
||||
Підказки для виводу, які підтримує провайдер, наприклад `quality`, `outputFormat` і
|
||||
специфічний для OpenAI параметр `background`, передаються далі, коли це можливо, і
|
||||
позначаються як проігноровані, якщо провайдер їх не підтримує.
|
||||
|
||||
## Підтримувані провайдери
|
||||
|
||||
| Провайдер | Модель за замовчуванням | Підтримка редагування | Автентифікація |
|
||||
| --------- | -------------------------------------- | ---------------------------------- | ----------------------------------------------------- |
|
||||
| OpenAI | `gpt-image-2` | Так (до 4 зображень) | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| OpenRouter | `google/gemini-3.1-flash-image-preview` | Так (до 5 вхідних зображень) | `OPENROUTER_API_KEY` |
|
||||
| Google | `gemini-3.1-flash-image-preview` | Так | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
| fal | `fal-ai/flux/dev` | Так | `FAL_KEY` |
|
||||
| MiniMax | `image-01` | Так (референс об’єкта) | `MINIMAX_API_KEY` або MiniMax OAuth (`minimax-portal`) |
|
||||
| ComfyUI | `workflow` | Так (1 зображення, налаштовано у workflow) | `COMFY_API_KEY` або `COMFY_CLOUD_API_KEY` для хмари |
|
||||
| Vydra | `grok-imagine` | Ні | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-image` | Так (до 5 зображень) | `XAI_API_KEY` |
|
||||
| Провайдер | Модель за замовчуванням | Підтримка редагування | Автентифікація |
|
||||
| --------- | ------------------------------------ | ---------------------------------- | ------------------------------------------------------ |
|
||||
| OpenAI | `gpt-image-2` | Так (до 4 зображень) | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| OpenRouter | `google/gemini-3.1-flash-image-preview` | Так (до 5 вхідних зображень) | `OPENROUTER_API_KEY` |
|
||||
| Google | `gemini-3.1-flash-image-preview` | Так | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
| fal | `fal-ai/flux/dev` | Так | `FAL_KEY` |
|
||||
| MiniMax | `image-01` | Так (еталон об’єкта) | `MINIMAX_API_KEY` або MiniMax OAuth (`minimax-portal`) |
|
||||
| ComfyUI | `workflow` | Так (1 зображення, визначається workflow) | `COMFY_API_KEY` або `COMFY_CLOUD_API_KEY` для хмари |
|
||||
| Vydra | `grok-imagine` | Ні | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-image` | Так (до 5 зображень) | `XAI_API_KEY` |
|
||||
|
||||
Використовуйте `action: "list"`, щоб переглянути доступні провайдери й моделі під час виконання:
|
||||
Використовуйте `action: "list"`, щоб переглянути доступні провайдери та моделі під час виконання:
|
||||
|
||||
```
|
||||
/tool image_generate action=list
|
||||
@ -91,11 +89,11 @@ Codex OAuth використовує те саме посилання на мо
|
||||
## Параметри інструмента
|
||||
|
||||
<ParamField path="prompt" type="string" required>
|
||||
Підказка для генерації зображення. Обов’язкова для `action: "generate"`.
|
||||
Промпт для генерації зображення. Обов’язковий для `action: "generate"`.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="action" type="'generate' | 'list'" default="generate">
|
||||
Використовуйте `"list"`, щоб переглянути доступні провайдери й моделі під час виконання.
|
||||
Використовуйте `"list"`, щоб переглянути доступні провайдери та моделі під час виконання.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="model" type="string">
|
||||
@ -103,15 +101,15 @@ Codex OAuth використовує те саме посилання на мо
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="image" type="string">
|
||||
Шлях або URL одного референсного зображення для режиму редагування.
|
||||
Шлях або URL одного еталонного зображення для режиму редагування.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="images" type="string[]">
|
||||
Кілька референсних зображень для режиму редагування (до 5).
|
||||
Кілька еталонних зображень для режиму редагування (до 5).
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="size" type="string">
|
||||
Підказка розміру: `1024x1024`, `1536x1024`, `1024x1536`, `2048x2048`, `3840x2160`.
|
||||
Підказка щодо розміру: `1024x1024`, `1536x1024`, `1024x1536`, `2048x2048`, `3840x2160`.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="aspectRatio" type="string">
|
||||
@ -119,15 +117,15 @@ Codex OAuth використовує те саме посилання на мо
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="resolution" type="'1K' | '2K' | '4K'">
|
||||
Підказка роздільної здатності.
|
||||
Підказка щодо роздільної здатності.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="quality" type="'low' | 'medium' | 'high' | 'auto'">
|
||||
Підказка якості, якщо провайдер її підтримує.
|
||||
Підказка щодо якості, якщо провайдер її підтримує.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="outputFormat" type="'png' | 'jpeg' | 'webp'">
|
||||
Підказка формату виводу, якщо провайдер її підтримує.
|
||||
Підказка щодо формату виводу, якщо провайдер її підтримує.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="count" type="number">
|
||||
@ -139,25 +137,16 @@ Codex OAuth використовує те саме посилання на мо
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="filename" type="string">
|
||||
Підказка для імені вихідного файла.
|
||||
Підказка щодо імені вихідного файлу.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="openai" type="object">
|
||||
Підказки лише для OpenAI: `background`, `moderation`, `outputCompression` і `user`.
|
||||
</ParamField>
|
||||
|
||||
Не всі провайдери підтримують усі параметри. Коли резервний провайдер
|
||||
підтримує близький варіант геометрії замість точно запитаного, OpenClaw
|
||||
перетворює значення на найближчий підтримуваний розмір, співвідношення сторін
|
||||
або роздільну здатність перед надсиланням. Непідтримувані підказки для виводу,
|
||||
такі як `quality` або `outputFormat`, відкидаються для провайдерів, які не
|
||||
оголошують їхню підтримку, і відображаються в результаті інструмента.
|
||||
Не всі провайдери підтримують усі параметри. Коли резервний провайдер підтримує близький варіант геометрії замість точно запитаного, OpenClaw перед надсиланням перетворює значення на найближчий підтримуваний розмір, співвідношення сторін або роздільну здатність. Непідтримувані підказки для виводу, як-от `quality` або `outputFormat`, відкидаються для провайдерів, які не заявляють їх підтримку, і повідомляються в результаті інструмента.
|
||||
|
||||
Результати інструмента повідомляють застосовані параметри. Коли OpenClaw
|
||||
перетворює геометрію під час переходу на резервного провайдера, повернені
|
||||
значення `size`, `aspectRatio` і `resolution` відображають те, що було
|
||||
фактично надіслано, а `details.normalization` фіксує перетворення від
|
||||
запитаного до застосованого значення.
|
||||
Результати інструмента повідомляють про застосовані налаштування. Коли OpenClaw під час переходу на резервного провайдера змінює геометрію, повернуті значення `size`, `aspectRatio` і `resolution` відображають те, що було фактично надіслано, а `details.normalization` містить перетворення від запитаного до застосованого.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
@ -182,46 +171,43 @@ Codex OAuth використовує те саме посилання на мо
|
||||
|
||||
### Порядок вибору провайдера
|
||||
|
||||
Під час генерації зображення OpenClaw намагається використати провайдери в такому порядку:
|
||||
Під час генерації зображення OpenClaw пробує провайдерів у такому порядку:
|
||||
|
||||
1. Параметр **`model`** із виклику інструмента (якщо агент його задає)
|
||||
2. **`imageGenerationModel.primary`** із конфігурації
|
||||
3. **`imageGenerationModel.fallbacks`** по порядку
|
||||
4. **Автовизначення** — використовує лише значення провайдерів за замовчуванням, що мають автентифікацію:
|
||||
1. **Параметр `model`** з виклику інструмента (якщо агент його вказує)
|
||||
2. **`imageGenerationModel.primary`** з конфігурації
|
||||
3. **`imageGenerationModel.fallbacks`** у заданому порядку
|
||||
4. **Автовиявлення** — використовує лише типові значення провайдера, підкріплені автентифікацією:
|
||||
- спочатку поточний провайдер за замовчуванням
|
||||
- потім решта зареєстрованих провайдерів генерації зображень у порядку provider-id
|
||||
- далі інші зареєстровані провайдери генерації зображень у порядку provider-id
|
||||
|
||||
Якщо провайдер зазнає невдачі (помилка автентифікації, обмеження швидкості тощо), автоматично пробується наступний налаштований кандидат. Якщо всі зазнають невдачі, помилка містить подробиці кожної спроби.
|
||||
Якщо провайдер не спрацює (помилка автентифікації, ліміт швидкості тощо), автоматично буде спробовано наступного налаштованого кандидата. Якщо не спрацюють усі, помилка міститиме подробиці кожної спроби.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Перевизначення `model` для окремого виклику є точним: OpenClaw пробує лише
|
||||
цей провайдер/цю модель і не переходить до налаштованих primary/fallback або
|
||||
автодетектованих провайдерів.
|
||||
- Автовизначення враховує автентифікацію. Значення провайдера за замовчуванням
|
||||
потрапляє до списку кандидатів лише тоді, коли OpenClaw справді може
|
||||
автентифікуватися у цього провайдера.
|
||||
- Автовизначення ввімкнено за замовчуванням. Задайте
|
||||
`agents.defaults.mediaGenerationAutoProviderFallback: false`, якщо хочете, щоб
|
||||
генерація зображень використовувала лише явні записи `model`, `primary` і
|
||||
`fallbacks`.
|
||||
- Використовуйте `action: "list"`, щоб переглянути наразі зареєстрованих
|
||||
провайдерів, їхні моделі за замовчуванням і підказки щодо env vars для
|
||||
автентифікації.
|
||||
- Перевизначення `model` для окремого виклику є точним: OpenClaw пробує лише цього провайдера/цю модель
|
||||
і не переходить до налаштованих primary/fallback чи автовиявлених
|
||||
провайдерів.
|
||||
- Автовиявлення враховує автентифікацію. Значення провайдера за замовчуванням потрапляє до списку кандидатів
|
||||
лише коли OpenClaw справді може автентифікувати цього провайдера.
|
||||
- Автовиявлення ввімкнене за замовчуванням. Задайте
|
||||
`agents.defaults.mediaGenerationAutoProviderFallback: false`, якщо хочете, щоб генерація зображень
|
||||
використовувала лише явні записи `model`, `primary` і `fallbacks`.
|
||||
- Використовуйте `action: "list"`, щоб переглянути поточно зареєстрованих провайдерів, їхні
|
||||
моделі за замовчуванням і підказки щодо env vars для автентифікації.
|
||||
|
||||
### Редагування зображень
|
||||
|
||||
OpenAI, OpenRouter, Google, fal, MiniMax, ComfyUI і xAI підтримують редагування референсних зображень. Передайте шлях або URL референсного зображення:
|
||||
OpenAI, OpenRouter, Google, fal, MiniMax, ComfyUI і xAI підтримують редагування еталонних зображень. Передайте шлях або URL еталонного зображення:
|
||||
|
||||
```
|
||||
"Згенеруй акварельну версію цього фото" + image: "/path/to/photo.jpg"
|
||||
```
|
||||
|
||||
OpenAI, OpenRouter, Google і xAI підтримують до 5 референсних зображень через параметр `images`. fal, MiniMax і ComfyUI підтримують 1.
|
||||
OpenAI, OpenRouter, Google і xAI підтримують до 5 еталонних зображень через параметр `images`. fal, MiniMax і ComfyUI підтримують 1.
|
||||
|
||||
### Моделі зображень OpenRouter
|
||||
|
||||
Генерація зображень OpenRouter використовує той самий `OPENROUTER_API_KEY` і спрямовується через API зображень chat completions OpenRouter. Вибирайте моделі зображень OpenRouter за допомогою префікса `openrouter/`:
|
||||
Генерація зображень OpenRouter використовує той самий `OPENROUTER_API_KEY` і спрямовується через image API chat completions OpenRouter. Вибирайте моделі зображень OpenRouter з префіксом `openrouter/`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -235,34 +221,30 @@ OpenAI, OpenRouter, Google і xAI підтримують до 5 референс
|
||||
}
|
||||
```
|
||||
|
||||
OpenClaw передає до OpenRouter `prompt`, `count`, референсні зображення та
|
||||
сумісні з Gemini підказки `aspectRatio` / `resolution`. Поточні вбудовані
|
||||
скорочення моделей зображень OpenRouter включають
|
||||
`google/gemini-3.1-flash-image-preview`, `google/gemini-3-pro-image-preview` і
|
||||
`openai/gpt-5.4-image-2`; використовуйте `action: "list"`, щоб побачити, що
|
||||
надає ваш налаштований Plugin.
|
||||
OpenClaw передає в OpenRouter `prompt`, `count`, еталонні зображення та сумісні з Gemini підказки `aspectRatio` / `resolution`. Поточні вбудовані скорочення для моделей зображень OpenRouter включають `google/gemini-3.1-flash-image-preview`, `google/gemini-3-pro-image-preview` і `openai/gpt-5.4-image-2`; використовуйте `action: "list"`, щоб побачити, що надає ваш налаштований Plugin.
|
||||
|
||||
### OpenAI `gpt-image-2`
|
||||
|
||||
За замовчуванням OpenAI для генерації зображень використовує `openai/gpt-image-2`. Якщо
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw повторно використовує той
|
||||
самий OAuth-профіль, який застосовується моделями чату за підпискою Codex, і
|
||||
надсилає запит на зображення через бекенд Codex Responses; він не переходить
|
||||
непомітно до `OPENAI_API_KEY` для цього запиту. Щоб примусово використовувати
|
||||
прямий маршрут OpenAI Images API, явно налаштуйте `models.providers.openai`
|
||||
через API-ключ, користувацький base URL або ендпоінт Azure. Старішу модель
|
||||
`openai/gpt-image-1` усе ще можна явно вибрати, але для нових запитів OpenAI
|
||||
на генерацію й редагування зображень слід використовувати `gpt-image-2`.
|
||||
Генерація зображень OpenAI за замовчуванням використовує `openai/gpt-image-2`. Якщо налаштовано
|
||||
OAuth-профіль `openai-codex`, OpenClaw повторно використовує той самий OAuth-
|
||||
профіль, який використовується моделями чату Codex за підпискою, і надсилає запит на зображення
|
||||
через бекенд Codex Responses. Застарілі base URL Codex, такі як
|
||||
`https://chatgpt.com/backend-api`, канонізуються до
|
||||
`https://chatgpt.com/backend-api/codex` для запитів на зображення. Він не
|
||||
виконує тихого переходу на `OPENAI_API_KEY` для цього запиту. Щоб примусово використовувати прямий маршрут OpenAI
|
||||
Images API, явно налаштуйте `models.providers.openai` з API-
|
||||
ключем, власним base URL або ендпойнтом Azure. Старішу модель
|
||||
`openai/gpt-image-1` усе ще можна вибрати явно, але нові запити OpenAI
|
||||
на генерацію та редагування зображень мають використовувати `gpt-image-2`.
|
||||
|
||||
`gpt-image-2` підтримує і генерацію зображень за текстом, і редагування за
|
||||
референсними зображеннями через той самий інструмент `image_generate`.
|
||||
OpenClaw передає до OpenAI `prompt`, `count`, `size`, `quality`,
|
||||
`outputFormat` і референсні зображення.
|
||||
`gpt-image-2` підтримує як генерацію зображень із тексту, так і редагування
|
||||
за еталонним зображенням через той самий інструмент `image_generate`. OpenClaw передає `prompt`,
|
||||
`count`, `size`, `quality`, `outputFormat` і еталонні зображення до OpenAI.
|
||||
OpenAI не отримує `aspectRatio` або `resolution` безпосередньо; коли це можливо,
|
||||
OpenClaw перетворює їх на підтримуваний `size`, інакше інструмент повідомляє
|
||||
про них як про проігноровані перевизначення.
|
||||
OpenClaw перетворює їх на підтримуваний `size`, інакше інструмент повідомляє про них як про
|
||||
проігноровані перевизначення.
|
||||
|
||||
Параметри, специфічні для OpenAI, розміщено в об’єкті `openai`:
|
||||
Параметри, специфічні для OpenAI, містяться в об’єкті `openai`:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -277,49 +259,49 @@ OpenClaw перетворює їх на підтримуваний `size`, ін
|
||||
}
|
||||
```
|
||||
|
||||
`openai.background` приймає `transparent`, `opaque` або `auto`; прозорий
|
||||
`openai.background` приймає значення `transparent`, `opaque` або `auto`; прозорий
|
||||
вивід потребує `outputFormat` `png` або `webp`. `openai.outputCompression`
|
||||
застосовується до виводу JPEG/WebP.
|
||||
|
||||
Згенерувати одне пейзажне зображення 4K:
|
||||
Згенеруйте одне 4K-зображення в альбомній орієнтації:
|
||||
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="A clean editorial poster for OpenClaw image generation" size=3840x2160 count=1
|
||||
```
|
||||
|
||||
Згенерувати два квадратні зображення:
|
||||
Згенеруйте два квадратні зображення:
|
||||
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Two visual directions for a calm productivity app icon" size=1024x1024 count=2
|
||||
```
|
||||
|
||||
Відредагувати одне локальне референсне зображення:
|
||||
Відредагуйте одне локальне еталонне зображення:
|
||||
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Keep the subject, replace the background with a bright studio setup" image=/path/to/reference.png size=1024x1536
|
||||
```
|
||||
|
||||
Відредагувати з кількома референсами:
|
||||
Редагування з кількома еталонними зображеннями:
|
||||
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Combine the character identity from the first image with the color palette from the second" images='["/path/to/character.png","/path/to/palette.jpg"]' size=1536x1024
|
||||
```
|
||||
|
||||
Щоб спрямувати генерацію зображень OpenAI через розгортання Azure OpenAI замість
|
||||
`api.openai.com`, дивіться [ендпоінти Azure OpenAI](/uk/providers/openai#azure-openai-endpoints)
|
||||
`api.openai.com`, див. [ендпойнти Azure OpenAI](/uk/providers/openai#azure-openai-endpoints)
|
||||
у документації провайдера OpenAI.
|
||||
|
||||
Генерація зображень MiniMax доступна через обидва вбудовані шляхи автентифікації MiniMax:
|
||||
|
||||
- `minimax/image-01` для налаштувань з API-ключем
|
||||
- `minimax-portal/image-01` для налаштувань OAuth
|
||||
- `minimax-portal/image-01` для налаштувань з OAuth
|
||||
|
||||
## Можливості провайдерів
|
||||
|
||||
| Можливість | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra | xAI |
|
||||
| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ------- | -------------------- |
|
||||
| Генерація | Так (до 4) | Так (до 4) | Так (до 4) | Так (до 9) | Так (виводи визначаються workflow) | Так (1) | Так (до 4) |
|
||||
| Редагування/референс | Так (до 5 зображень) | Так (до 5 зображень) | Так (1 зображення) | Так (1 зображення, референс об’єкта) | Так (1 зображення, налаштовано у workflow) | Ні | Так (до 5 зображень) |
|
||||
| Генерація | Так (до 4) | Так (до 4) | Так (до 4) | Так (до 9) | Так (вивід визначається workflow) | Так (1) | Так (до 4) |
|
||||
| Редагування/еталон | Так (до 5 зображень) | Так (до 5 зображень) | Так (1 зображення) | Так (1 зображення, еталон об’єкта) | Так (1 зображення, визначається workflow) | Ні | Так (до 5 зображень) |
|
||||
| Керування розміром | Так (до 4K) | Так | Так | Ні | Ні | Ні | Ні |
|
||||
| Співвідношення сторін | Ні | Так | Так (лише генерація) | Так | Ні | Ні | Так |
|
||||
| Роздільна здатність (1K/2K/4K) | Ні | Так | Так | Ні | Ні | Ні | Так (1K/2K) |
|
||||
@ -327,28 +309,28 @@ OpenClaw перетворює їх на підтримуваний `size`, ін
|
||||
### xAI `grok-imagine-image`
|
||||
|
||||
Вбудований провайдер xAI використовує `/v1/images/generations` для запитів
|
||||
лише з `prompt` і `/v1/images/edits`, коли присутній `image` або `images`.
|
||||
лише з промптом і `/v1/images/edits`, коли присутній `image` або `images`.
|
||||
|
||||
- Моделі: `xai/grok-imagine-image`, `xai/grok-imagine-image-pro`
|
||||
- Кількість: до 4
|
||||
- Референси: один `image` або до п’яти `images`
|
||||
- Еталони: одне `image` або до п’яти `images`
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2:3`, `3:2`
|
||||
- Роздільна здатність: `1K`, `2K`
|
||||
- Вивід: повертається як вкладення зображень, якими керує OpenClaw
|
||||
- Роздільні здатності: `1K`, `2K`
|
||||
- Вивід: повертається як вкладення зображень під керуванням OpenClaw
|
||||
|
||||
OpenClaw навмисно не надає специфічні для xAI параметри `quality`, `mask`, `user` або
|
||||
додаткові нативні співвідношення сторін, доки ці елементи керування не з’являться
|
||||
у спільному міжпровайдерному контракті `image_generate`.
|
||||
OpenClaw навмисно не відкриває власні параметри xAI `quality`, `mask`, `user` або
|
||||
додаткові співвідношення сторін, доступні лише нативно, доки ці елементи керування не з’являться в спільному
|
||||
міжпровайдерному контракті `image_generate`.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Огляд інструментів](/uk/tools) — усі доступні інструменти агента
|
||||
- [fal](/uk/providers/fal) — налаштування провайдера зображень і відео fal
|
||||
- [ComfyUI](/uk/providers/comfy) — налаштування локального workflow ComfyUI і Comfy Cloud
|
||||
- [ComfyUI](/uk/providers/comfy) — налаштування локального ComfyUI і workflow Comfy Cloud
|
||||
- [Google (Gemini)](/uk/providers/google) — налаштування провайдера зображень Gemini
|
||||
- [MiniMax](/uk/providers/minimax) — налаштування провайдера зображень MiniMax
|
||||
- [OpenAI](/uk/providers/openai) — налаштування провайдера OpenAI Images
|
||||
- [Vydra](/uk/providers/vydra) — налаштування зображень, відео та мовлення Vydra
|
||||
- [xAI](/uk/providers/xai) — налаштування Grok для зображень, відео, пошуку, виконання коду та TTS
|
||||
- [xAI](/uk/providers/xai) — налаштування зображень, відео, пошуку, виконання коду та TTS Grok
|
||||
- [Довідник із конфігурації](/uk/gateway/config-agents#agent-defaults) — конфігурація `imageGenerationModel`
|
||||
- [Моделі](/uk/concepts/models) — конфігурація моделей і аварійне перемикання
|
||||
- [Моделі](/uk/concepts/models) — конфігурація моделей і перемикання при відмові
|
||||
|
||||
Loading…
Reference in New Issue
Block a user