chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-27 11:12:33 +00:00
parent b9bc11a3a2
commit b8c9ec50b1
3 changed files with 220 additions and 215 deletions

View File

@ -1,31 +1,31 @@
---
read_when:
- Ви хочете автоматизацію на основі подій для `/new`, `/reset`, `/stop` і подій життєвого циклу агента
- Вам потрібна автоматизація на основі подій для `/new`, `/reset`, `/stop` і подій життєвого циклу агента
- Ви хочете створювати, встановлювати або налагоджувати хуки
summary: 'Хуки: автоматизація на основі подій для команд і подій життєвого циклу'
title: Хуки
x-i18n:
generated_at: "2026-04-26T23:10:41Z"
generated_at: "2026-04-27T11:10:52Z"
model: gpt-5.4
provider: openai
source_hash: f1f9b1dc0c470502f782758e1542435f1e593750ff69a39f7f966c7d42e29c1e
source_hash: f5e63700c90456dfc26de8545ad4382d6d34bcfd8896966d88e008da5c690255
source_path: automation/hooks.md
workflow: 15
---
Хуки — це невеликі скрипти, які запускаються, коли щось відбувається всередині Gateway. Їх можна виявляти з директорій та переглядати за допомогою `openclaw hooks`. Gateway завантажує внутрішні хуки лише після того, як ви ввімкнете хуки або налаштуєте принаймні один запис хука, пакет хуків, застарілий обробник або додаткову директорію хуків.
Хуки — це невеликі скрипти, які запускаються, коли щось відбувається всередині Gateway. Їх можна виявляти з директорій та переглядати за допомогою `openclaw hooks`. Gateway завантажує внутрішні хуки лише після того, як ви ввімкнете хуки або налаштуєте принаймні один запис хука, пак хука, застарілий обробник або додаткову директорію хуків.
В OpenClaw є два типи хуків:
- **Внутрішні хуки** (ця сторінка): виконуються всередині Gateway, коли спрацьовують події агента, як-от `/new`, `/reset`, `/stop` або події життєвого циклу.
- **Webhooks**: зовнішні HTTP-ендпойнти, які дозволяють іншим системам запускати роботу в OpenClaw. Див. [Webhooks](/uk/automation/cron-jobs#webhooks).
- **Внутрішні хуки** (ця сторінка): запускаються всередині Gateway, коли спрацьовують події агента, як-от `/new`, `/reset`, `/stop` або події життєвого циклу.
- **Webhooks**: зовнішні HTTP-ендпоїнти, які дозволяють іншим системам запускати роботу в OpenClaw. Див. [Webhooks](/uk/automation/cron-jobs#webhooks).
Хуки також можуть постачатися всередині плагінів. `openclaw hooks list` показує як окремі хуки, так і хуки, керовані плагінами.
Хуки також можуть постачатися всередині плагінів. `openclaw hooks list` показує як окремі хуки, так і хуки, якими керують плагіни.
## Швидкий старт
```bash
# Показати доступні хуки
# Перелічити доступні хуки
openclaw hooks list
# Увімкнути хук
@ -42,18 +42,20 @@ openclaw hooks info session-memory
| Подія | Коли спрацьовує |
| ------------------------ | ----------------------------------------------- |
| `command:new` | Надіслано команду `/new` |
| `command:reset` | Надіслано команду `/reset` |
| `command:stop` | Надіслано команду `/stop` |
| `command:new` | Видано команду `/new` |
| `command:reset` | Видано команду `/reset` |
| `command:stop` | Видано команду `/stop` |
| `command` | Будь-яка подія команди (загальний слухач) |
| `session:compact:before` | Перед тим, як Compaction підсумує історію |
| `session:compact:after` | Після завершення Compaction |
| `session:patch` | Коли змінюються властивості сесії |
| `agent:bootstrap` | Перед додаванням bootstrap-файлів робочої папки |
| `session:patch` | Коли властивості сесії змінено |
| `agent:bootstrap` | Перед інʼєкцією bootstrap-файлів робочої області |
| `gateway:startup` | Після запуску каналів і завантаження хуків |
| `gateway:shutdown` | Коли починається завершення роботи gateway |
| `gateway:pre-restart` | Перед очікуваним перезапуском gateway |
| `message:received` | Вхідне повідомлення з будь-якого каналу |
| `message:transcribed` | Після завершення транскрибування аудіо |
| `message:preprocessed` | Після завершення обробки медіа та посилань |
| `message:preprocessed` | Після завершення обробки всіх медіа та посилань |
| `message:sent` | Вихідне повідомлення доставлено |
## Написання хуків
@ -80,20 +82,20 @@ metadata:
# My Hook
Тут розміщується детальна документація.
Детальна документація наведена тут.
```
**Поля метаданих** (`metadata.openclaw`):
| Поле | Опис |
| --------- | --------------------------------------------------------- |
| `emoji` | Емодзі для відображення в CLI |
| `events` | Масив подій, які потрібно відстежувати |
| `export` | Іменований експорт для використання (типово `"default"`) |
| `os` | Потрібні платформи (наприклад, `["darwin", "linux"]`) |
| `requires` | Потрібні шляхи `bins`, `anyBins`, `env` або `config` |
| `always` | Обійти перевірки відповідності (boolean) |
| `install` | Методи встановлення |
| Поле | Опис |
| ---------- | ----------------------------------------------------- |
| `emoji` | Emoji для відображення в CLI |
| `events` | Масив подій, які потрібно слухати |
| `export` | Іменований експорт для використання (типово `"default"`) |
| `os` | Обовʼязкові платформи (наприклад, `["darwin", "linux"]`) |
| `requires` | Обовʼязкові шляхи `bins`, `anyBins`, `env` або `config` |
| `always` | Обійти перевірки придатності (boolean) |
| `install` | Методи встановлення |
### Реалізація обробника
@ -113,59 +115,61 @@ const handler = async (event) => {
export default handler;
```
Кожна подія містить: `type`, `action`, `sessionKey`, `timestamp`, `messages` (додавайте сюди, щоб надіслати користувачу), і `context` (специфічні для події дані). Контексти хуків агентів і плагінів інструментів також можуть містити `trace` — лише для читання, сумісний із W3C діагностичний контекст трасування, який плагіни можуть передавати в структуровані логи для кореляції OTEL.
Кожна подія містить: `type`, `action`, `sessionKey`, `timestamp`, `messages` (додавайте через push, щоб надіслати користувачеві), і `context` (дані, специфічні для події). Контексти хуків агентів і tool plugin також можуть містити `trace`контекст діагностичного трасування лише для читання, сумісний із W3C, який плагіни можуть передавати в структуровані логи для кореляції OTEL.
### Основні моменти контексту подій
**Події команд** (`command:new`, `command:reset`): `context.sessionEntry`, `context.previousSessionEntry`, `context.commandSource`, `context.workspaceDir`, `context.cfg`.
**Події повідомлень** (`message:received`): `context.from`, `context.content`, `context.channelId`, `context.metadata` (специфічні для провайдера дані, зокрема `senderId`, `senderName`, `guildId`).
**Події повідомлень** (`message:received`): `context.from`, `context.content`, `context.channelId`, `context.metadata` (дані, специфічні для провайдера, включно з `senderId`, `senderName`, `guildId`).
**Події повідомлень** (`message:sent`): `context.to`, `context.content`, `context.success`, `context.channelId`.
**Події повідомлень** (`message:transcribed`): `context.transcript`, `context.from`, `context.channelId`, `context.mediaPath`.
**Події повідомлень** (`message:preprocessed`): `context.bodyForAgent` (остаточне збагачене тіло), `context.from`, `context.channelId`.
**Події повідомлень** (`message:preprocessed`): `context.bodyForAgent` (фінальне збагачене тіло), `context.from`, `context.channelId`.
**Події bootstrap** (`agent:bootstrap`): `context.bootstrapFiles` (змінюваний масив), `context.agentId`.
**Події patch сесії** (`session:patch`): `context.sessionEntry`, `context.patch` (лише змінені поля), `context.cfg`. Лише привілейовані клієнти можуть запускати події patch.
**Події patch сесії** (`session:patch`): `context.sessionEntry`, `context.patch` (лише змінені поля), `context.cfg`. Лише привілейовані клієнти можуть ініціювати події patch.
**Події Compaction**: `session:compact:before` містить `messageCount`, `tokenCount`. `session:compact:after` додатково містить `compactedCount`, `summaryLength`, `tokensBefore`, `tokensAfter`.
`command:stop` фіксує, коли користувач надсилає `/stop`; це життєвий цикл скасування/команди, а не бар’єр фіналізації агента. Плагіни, яким потрібно перевірити природну фінальну відповідь і попросити агента зробити ще один прохід, повинні використовувати типізований хук плагіна `before_agent_finalize`. Див. [Plugin hooks](/uk/plugins/hooks).
`command:stop` спостерігає за тим, як користувач видає `/stop`; це життєвий цикл скасування/команди, а не фінальний барʼєр завершення агента. Плагіни, яким потрібно перевірити природну фінальну відповідь і попросити агента зробити ще один прохід, мають використовувати типізований хук плагіна `before_agent_finalize`. Див. [Plugin hooks](/uk/plugins/hooks).
**Події життєвого циклу Gateway**: `gateway:shutdown` містить `reason` і `restartExpectedMs` та спрацьовує, коли починається завершення роботи gateway. `gateway:pre-restart` містить той самий контекст, але спрацьовує лише тоді, коли завершення роботи є частиною очікуваного перезапуску й передано скінченне значення `restartExpectedMs`. Під час завершення роботи очікування кожного хука життєвого циклу є best-effort і обмежується, щоб завершення роботи продовжувалося, навіть якщо обробник зависає.
## Виявлення хуків
Хуки виявляються з таких директорій у порядку зростання пріоритету перевизначення:
Хуки виявляються в таких директоріях у порядку зростання пріоритету перевизначення:
1. **Вбудовані хуки**: постачаються разом з OpenClaw
2. **Хуки плагінів**: постачаються всередині встановлених плагінів
3. **Керовані хуки**: `~/.openclaw/hooks/` (встановлені користувачем, спільні для всіх робочих папок). Додаткові директорії з `hooks.internal.load.extraDirs` мають такий самий пріоритет.
4. **Хуки робочої папки**: `<workspace>/hooks/` (для кожного агента окремо, типово вимкнені, доки їх явно не ввімкнути)
2. **Хуки плагінів**: хуки, що постачаються всередині встановлених плагінів
3. **Керовані хуки**: `~/.openclaw/hooks/` (встановлені користувачем, спільні для всіх робочих областей). Додаткові директорії з `hooks.internal.load.extraDirs` мають такий самий пріоритет.
4. **Хуки робочої області**: `<workspace>/hooks/` (для кожного агента окремо, типово вимкнені, доки їх явно не ввімкнути)
Хуки робочої папки можуть додавати нові назви хуків, але не можуть перевизначати вбудовані, керовані або надані плагінами хуки з тією самою назвою.
Хуки робочої області можуть додавати нові імена хуків, але не можуть перевизначати вбудовані, керовані або надані плагінами хуки з тією самою назвою.
Gateway пропускає виявлення внутрішніх хуків під час запуску, доки внутрішні хуки не налаштовані. Увімкніть вбудований або керований хук за допомогою `openclaw hooks enable <name>`, встановіть пакет хуків або задайте `hooks.internal.enabled=true`, щоб дозволити їх. Коли ви вмикаєте один іменований хук, Gateway завантажує лише обробник цього хука; `hooks.internal.enabled=true`, додаткові директорії хуків і застарілі обробники вмикають широке виявлення.
Gateway пропускає виявлення внутрішніх хуків під час запуску, доки внутрішні хуки не налаштовано. Увімкніть вбудований або керований хук за допомогою `openclaw hooks enable <name>`, установіть пак хука або задайте `hooks.internal.enabled=true`, щоб виконати opt-in. Коли ви вмикаєте один іменований хук, Gateway завантажує лише обробник цього хука; `hooks.internal.enabled=true`, додаткові директорії хуків і застарілі обробники виконують opt-in до широкого виявлення.
### Пакети хуків
### Паки хуків
Пакети хуків — це npm-пакети, які експортують хуки через `openclaw.hooks` у `package.json`. Встановлення:
Паки хуків — це npm-пакети, які експортують хуки через `openclaw.hooks` у `package.json`. Встановлення:
```bash
openclaw plugins install <path-or-spec>
```
Npm-специфікації підтримуються лише для реєстру (назва пакета + необов’язкова точна версія або dist-tag). Специфікації Git/URL/file і діапазони semver відхиляються.
Специфікації npm підтримують лише реєстр (назва пакета + необовʼязкова точна версія або dist-tag). Специфікації Git/URL/file і діапазони semver відхиляються.
## Вбудовані хуки
| Хук | Події | Що робить |
| -------------------- | ----------------------------- | ------------------------------------------------------ |
| session-memory | `command:new`, `command:reset` | Зберігає контекст сесії в `<workspace>/memory/` |
| bootstrap-extra-files | `agent:bootstrap` | Додає додаткові bootstrap-файли за glob-шаблонами |
| command-logger | `command` | Логує всі команди в `~/.openclaw/logs/commands.log` |
| boot-md | `gateway:startup` | Запускає `BOOT.md`, коли запускається gateway |
| Хук | Події | Що він робить |
| -------------------- | ------------------------------ | ---------------------------------------------------- |
| session-memory | `command:new`, `command:reset` | Зберігає контекст сесії в `<workspace>/memory/` |
| bootstrap-extra-files | `agent:bootstrap` | Інʼєктує додаткові bootstrap-файли з glob-шаблонів |
| command-logger | `command` | Логує всі команди в `~/.openclaw/logs/commands.log` |
| boot-md | `gateway:startup` | Запускає `BOOT.md` під час старту gateway |
Увімкнути будь-який вбудований хук:
@ -175,13 +179,13 @@ openclaw hooks enable <hook-name>
<a id="session-memory"></a>
### Деталі session-memory
### Докладніше про session-memory
Витягує останні 15 повідомлень користувача/асистента, генерує описовий slug імені файла через LLM і зберігає його в `<workspace>/memory/YYYY-MM-DD-slug.md`, використовуючи локальну дату хоста. Потрібно, щоб був налаштований `workspace.dir`.
Витягує останні 15 повідомлень користувача/асистента, генерує описовий slug імені файла через LLM і зберігає в `<workspace>/memory/YYYY-MM-DD-slug.md`, використовуючи локальну дату хоста. Потрібно, щоб було налаштовано `workspace.dir`.
<a id="bootstrap-extra-files"></a>
### Конфігурація bootstrap-extra-files
### Налаштування bootstrap-extra-files
```json
{
@ -198,28 +202,28 @@ openclaw hooks enable <hook-name>
}
```
Шляхи обчислюються відносно робочої папки. Завантажуються лише розпізнані базові назви bootstrap-файлів (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, `MEMORY.md`).
Шляхи обчислюються відносно робочої області. Завантажуються лише розпізнані базові імена bootstrap-файлів (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, `MEMORY.md`).
<a id="command-logger"></a>
### Деталі command-logger
### Докладніше про command-logger
Логує кожну slash-команду в `~/.openclaw/logs/commands.log`.
<a id="boot-md"></a>
### Деталі boot-md
### Докладніше про boot-md
Запускає `BOOT.md` з активної робочої папки під час запуску gateway.
Запускає `BOOT.md` з активної робочої області під час старту gateway.
## Хуки плагінів
Плагіни можуть реєструвати типізовані хуки через Plugin SDK для глибшої інтеграції:
перехоплення викликів інструментів, модифікації промптів, керування потоком повідомлень тощо.
перехоплення викликів інструментів, зміни промптів, керування потоком повідомлень тощо.
Використовуйте хуки плагінів, коли вам потрібні `before_tool_call`, `before_agent_reply`,
`before_install` або інші in-process хуки життєвого циклу.
Повний довідник із хуків плагінів див. у [Plugin hooks](/uk/plugins/hooks).
Повний довідник з хуків плагінів див. у [Plugin hooks](/uk/plugins/hooks).
## Конфігурація
@ -269,19 +273,19 @@ openclaw hooks enable <hook-name>
```
<Note>
Застарілий формат конфігурації масиву `hooks.internal.handlers` усе ще підтримується для зворотної сумісності, але нові хуки повинні використовувати систему на основі виявлення.
Застарілий формат конфігурації масиву `hooks.internal.handlers` усе ще підтримується для зворотної сумісності, але нові хуки мають використовувати систему на основі виявлення.
</Note>
## Довідник CLI
```bash
# Показати всі хуки (додайте --eligible, --verbose або --json)
# Перелічити всі хуки (додайте --eligible, --verbose або --json)
openclaw hooks list
# Показати детальну інформацію про хук
openclaw hooks info <hook-name>
# Показати зведення відповідності
# Показати зведення щодо придатності
openclaw hooks check
# Увімкнути/вимкнути
@ -289,27 +293,27 @@ openclaw hooks enable <hook-name>
openclaw hooks disable <hook-name>
```
## Найкращі практики
## Рекомендовані практики
- **Робіть обробники швидкими.** Хуки виконуються під час обробки команд. Запускайте важку роботу у фоновому режимі через `void processInBackground(event)`.
- **Коректно обробляйте помилки.** Обгортайте ризиковані операції в try/catch; не кидайте винятки, щоб інші обробники могли виконатися.
- **Фільтруйте події рано.** Одразу повертайтеся, якщо тип/дія події не є релевантними.
- **Використовуйте конкретні ключі подій.** Надавайте перевагу `"events": ["command:new"]` замість `"events": ["command"]`, щоб зменшити накладні витрати.
- **Робіть обробники швидкими.** Хуки виконуються під час обробки команд. Для важкої роботи використовуйте fire-and-forget через `void processInBackground(event)`.
- **Обробляйте помилки коректно.** Обгортайте ризиковані операції в try/catch; не кидайте винятки, щоб інші обробники могли виконатися.
- **Фільтруйте події на ранньому етапі.** Одразу повертайтеся, якщо тип/дія події не є релевантними.
- **Використовуйте конкретні ключі подій.** Віддавайте перевагу `"events": ["command:new"]` замість `"events": ["command"]`, щоб зменшити накладні витрати.
## Усунення проблем
## Усунення несправностей
### Хук не виявлено
### Хук не виявляється
```bash
# Перевірити структуру директорії
ls -la ~/.openclaw/hooks/my-hook/
# Має показати: HOOK.md, handler.ts
# Показати всі виявлені хуки
# Перелічити всі виявлені хуки
openclaw hooks list
```
### Хук не відповідає вимогам
### Хук непридатний
```bash
openclaw hooks info my-hook
@ -319,13 +323,13 @@ openclaw hooks info my-hook
### Хук не виконується
1. Переконайтеся, що хук увімкнений: `openclaw hooks list`
1. Переконайтеся, що хук увімкнено: `openclaw hooks list`
2. Перезапустіть процес gateway, щоб хуки перезавантажилися.
3. Перевірте логи gateway: `./scripts/clawlog.sh | grep hook`
## Повязане
## Повʼязане
- [Довідник CLI: hooks](/uk/cli/hooks)
- [CLI Reference: hooks](/uk/cli/hooks)
- [Webhooks](/uk/automation/cron-jobs#webhooks)
- [Plugin hooks](/uk/plugins/hooks) — in-process хуки життєвого циклу плагінів
- [Конфігурація](/uk/gateway/configuration-reference#hooks)
- [Configuration](/uk/gateway/configuration-reference#hooks)

View File

@ -1,59 +1,59 @@
---
read_when:
- Налаштування політики, списків дозволених елементів або експериментальних функцій `tools.*`
- Налаштування політики, списків дозволеного або експериментальних функцій для `tools.*`
- Реєстрація користувацьких провайдерів або перевизначення базових URL-адрес
- Налаштування самостійно розміщених кінцевих точок, сумісних з OpenAI
sidebarTitle: Tools and custom providers
summary: Конфігурація інструментів (політика, експериментальні перемикачі, інструменти з підтримкою провайдера) і налаштування користувацького провайдера/base-URL
summary: Конфігурація інструментів (політика, експериментальні перемикачі, інструменти на базі провайдера) та налаштування користувацького провайдера/base-URL
title: Конфігурація — інструменти та користувацькі провайдери
x-i18n:
generated_at: "2026-04-27T09:29:53Z"
generated_at: "2026-04-27T11:10:54Z"
model: gpt-5.4
provider: openai
source_hash: 1dd86212954d2f5c11b3cf376a3a18655a657814d267cea38b42ea40a33617a4
source_hash: 4cb18ee1b2d16309ba2eedb0408f63df58ae7f319dfe8c4cb3bf2a868415463a
source_path: gateway/config-tools.md
workflow: 15
---
Ключі конфігурації `tools.*` і налаштування користувацького провайдера / base-URL. Для агентів, каналів та інших ключів конфігурації верхнього рівня див. [Довідник із конфігурації](/uk/gateway/configuration-reference).
Ключі конфігурації `tools.*` та налаштування користувацького провайдера / base-URL. Для агентів, каналів та інших ключів конфігурації верхнього рівня див. [Довідник із конфігурації](/uk/gateway/configuration-reference).
## Інструменти
### Профілі інструментів
`tools.profile` задає базовий список дозволених елементів перед `tools.allow`/`tools.deny`:
`tools.profile` задає базовий список дозволеного перед `tools.allow`/`tools.deny`:
<Note>
Локальне онбординг-налаштування за замовчуванням встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явно вказані профілі зберігаються).
Локальне онбординг-налаштування за замовчуванням встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явно задані профілі зберігаються).
</Note>
| Профіль | Містить |
| Профіль | Включає |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `minimal` | лише `session_status` |
| `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` |
| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
| `full` | Без обмежень (так само, як якщо не задано) |
| `full` | Без обмежень (те саме, що й без значення) |
### Групи інструментів
| Група | Інструменти |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
| Група | Інструменти |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` |
| `group:memory` | `memory_search`, `memory_get` |
| `group:web` | `web_search`, `x_search`, `web_fetch` |
| `group:ui` | `browser`, `canvas` |
| `group:automation` | `cron`, `gateway` |
| `group:messaging` | `message` |
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
| `group:openclaw` | Усі вбудовані інструменти (не включає плагіни провайдерів) |
| `group:memory` | `memory_search`, `memory_get` |
| `group:web` | `web_search`, `x_search`, `web_fetch` |
| `group:ui` | `browser`, `canvas` |
| `group:automation` | `cron`, `gateway` |
| `group:messaging` | `message` |
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
| `group:openclaw` | Усі вбудовані інструменти (не включає плагіни провайдерів) |
### `tools.allow` / `tools.deny`
Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Нечутлива до регістру, підтримує шаблони `*`. Застосовується, навіть коли Docker sandbox вимкнено.
Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Без урахування регістру, підтримує шаблони `*`. Застосовується, навіть коли Docker sandbox вимкнено.
```json5
{
@ -79,7 +79,7 @@ x-i18n:
### `tools.elevated`
Керує розширеним доступом `exec` поза межами sandbox:
Керує підвищеним доступом `exec` поза sandbox:
```json5
{
@ -97,7 +97,7 @@ x-i18n:
- Перевизначення на рівні агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
- `/elevated on|off|ask|full` зберігає стан для кожної сесії; вбудовані директиви застосовуються до одного повідомлення.
- Розширений `exec` обходить sandbox і використовує налаштований шлях виходу (`gateway` за замовчуванням або `node`, коли ціль `exec` — це `node`).
- Підвищений `exec` обходить ізоляцію sandbox і використовує налаштований шлях виходу (`gateway` за замовчуванням або `node`, коли ціллю `exec` є `node`).
### `tools.exec`
@ -121,7 +121,7 @@ x-i18n:
### `tools.loopDetection`
Перевірки безпеки циклів інструментів **вимкнені за замовчуванням**. Щоб увімкнути виявлення, встановіть `enabled: true`. Параметри можна визначати глобально в `tools.loopDetection` і перевизначати для кожного агента в `agents.list[].tools.loopDetection`.
Перевірки безпеки циклів інструментів **вимкнені за замовчуванням**. Щоб увімкнути виявлення, встановіть `enabled: true`. Параметри можна визначати глобально в `tools.loopDetection` і перевизначати для окремих агентів у `agents.list[].tools.loopDetection`.
```json5
{
@ -143,7 +143,7 @@ x-i18n:
```
<ParamField path="historySize" type="number">
Максимальний обсяг історії викликів інструментів, що зберігається для аналізу циклів.
Максимальна історія викликів інструментів, що зберігається для аналізу циклів.
</ParamField>
<ParamField path="warningThreshold" type="number">
Поріг повторюваного шаблону без прогресу для попереджень.
@ -152,7 +152,7 @@ x-i18n:
Вищий поріг повторення для блокування критичних циклів.
</ParamField>
<ParamField path="globalCircuitBreakerThreshold" type="number">
Поріг жорсткої зупинки для будь-якої послідовності без прогресу.
Поріг жорсткої зупинки для будь-якого виконання без прогресу.
</ParamField>
<ParamField path="detectors.genericRepeat" type="boolean">
Попереджати про повторні виклики того самого інструмента з тими самими аргументами.
@ -165,7 +165,7 @@ x-i18n:
</ParamField>
<Warning>
Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка не пройде.
Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка не проходить.
</Warning>
### `tools.web`
@ -176,14 +176,14 @@ x-i18n:
web: {
search: {
enabled: true,
apiKey: "brave_api_key", // або змінна середовища BRAVE_API_KEY
apiKey: "brave_api_key", // або BRAVE_API_KEY env
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
provider: "firecrawl", // необов’язково; пропустіть для авто-визначення
provider: "firecrawl", // необов’язково; не вказуйте для авто-виявлення
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@ -208,7 +208,7 @@ x-i18n:
media: {
concurrency: 2,
asyncCompletion: {
directSend: false, // опційно: надсилати завершені асинхронні музичні/відеозавдання безпосередньо в канал
directSend: false, // опційно: надсилати завершені асинхронні завдання музики/відео безпосередньо в канал
},
audio: {
enabled: true,
@ -239,7 +239,7 @@ x-i18n:
<AccordionGroup>
<Accordion title="Поля запису медіамоделі">
**Запис провайдера** (`type: "provider"` або пропущено):
**Запис провайдера** (`type: "provider"` або не вказано):
- `provider`: ідентифікатор API-провайдера (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
- `model`: перевизначення ідентифікатора моделі
@ -248,20 +248,20 @@ x-i18n:
**CLI-запис** (`type: "cli"`):
- `command`: виконуваний файл для запуску
- `args`: шаблонізовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо)
- `args`: аргументи з шаблонами (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо; застарілий `{input}` приймається як псевдонім для `{{MediaPath}}`)
**Спільні поля:**
- `capabilities`: необов’язковий список (`image`, `audio`, `video`). Значення за замовчуванням: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису.
- `tools.media.image.timeoutSeconds` і відповідні записи `timeoutSeconds` для моделі зображень також застосовуються, коли агент викликає явний інструмент `image`.
- `tools.media.image.timeoutSeconds` і відповідні записи `timeoutSeconds` для моделей зображень також застосовуються, коли агент викликає явний інструмент `image`.
- У разі помилки використовується наступний запис.
Автентифікація провайдера дотримується стандартного порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
Автентифікація провайдера виконується у стандартному порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
**Поля асинхронного завершення:**
- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate` і `video_generate` спочатку намагаються доставити безпосередньо в канал. Значення за замовчуванням: `false` (застарілий шлях пробудження сесії запитувача/доставки моделі).
- `asyncCompletion.directSend`: коли значення `true`, завершені асинхронні завдання `music_generate` і `video_generate` спочатку намагаються доставлятися безпосередньо в канал. Значення за замовчуванням: `false` (застарілий шлях пробудження сесії запитувача/доставки моделлю).
</Accordion>
</AccordionGroup>
@ -281,9 +281,9 @@ x-i18n:
### `tools.sessions`
Керує тим, які сесії можуть бути ціллю для інструментів сесій (`sessions_list`, `sessions_history`, `sessions_send`).
Керує тим, на які сесії можуть націлюватися інструменти сесій (`sessions_list`, `sessions_history`, `sessions_send`).
За замовчуванням: `tree` (поточна сесія + сесії, породжені нею, наприклад субагенти).
Значення за замовчуванням: `tree` (поточна сесія + сесії, породжені нею, наприклад субагенти).
```json5
{
@ -301,8 +301,8 @@ x-i18n:
- `self`: лише ключ поточної сесії.
- `tree`: поточна сесія + сесії, породжені поточною сесією (субагенти).
- `agent`: будь-яка сесія, що належить поточному ідентифікатору агента (може включати інших користувачів, якщо ви запускаєте сесії для кожного відправника під тим самим ідентифікатором агента).
- `all`: будь-яка сесія. Націлювання між агентами все одно потребує `tools.agentToAgent`.
- Обмеження sandbox: коли поточна сесія ізольована в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
- `all`: будь-яка сесія. Націлювання між агентами все одно вимагає `tools.agentToAgent`.
- Обмеження sandbox: коли поточна сесія ізольована в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється на `tree`, навіть якщо `tools.sessions.visibility="all"`.
</Accordion>
</AccordionGroup>
@ -316,7 +316,7 @@ x-i18n:
sessions_spawn: {
attachments: {
enabled: false, // опційно: встановіть true, щоб дозволити вбудовані файлові вкладення
maxTotalBytes: 5242880, // 5 МБ загалом для всіх файлів
maxTotalBytes: 5242880, // загалом 5 МБ для всіх файлів
maxFiles: 50,
maxFileBytes: 1048576, // 1 МБ на файл
retainOnSessionKeep: false, // зберігати вкладення, коли cleanup="keep"
@ -327,13 +327,13 @@ x-i18n:
```
<AccordionGroup>
<Accordion title="Нотатки щодо вкладень">
- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє.
- Файли матеріалізуються в дочірньому робочому просторі за шляхом `.openclaw/attachments/<uuid>/` із `.manifest.json`.
- Вміст вкладень автоматично редагується в збереженні транскрипту.
- Входи Base64 перевіряються суворими перевірками алфавіту/заповнення та захистом від розміру до декодування.
- Права доступу до файлів: `0700` для директорій і `0600` для файлів.
- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
<Accordion title="Примітки щодо вкладень">
- Вкладення підтримуються лише для `runtime: "subagent"`. Середовище ACP їх відхиляє.
- Файли матеріалізуються в дочірньому робочому просторі в `.openclaw/attachments/<uuid>/` із `.manifest.json`.
- Вміст вкладень автоматично редагується під час збереження транскрипту.
- Входи base64 перевіряються суворими перевірками алфавіту/заповнення та захистом від розміру до декодування.
- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
- Очищення виконується згідно з політикою `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
</Accordion>
</AccordionGroup>
@ -341,7 +341,7 @@ x-i18n:
### `tools.experimental`
Експериментальні прапорці вбудованих інструментів. За замовчуванням вимкнено, якщо не застосовується правило автоувімкнення strict-agentic GPT-5.
Прапорці експериментальних вбудованих інструментів. За замовчуванням вимкнено, якщо не застосовується правило автоувімкнення strict-agentic GPT-5.
```json5
{
@ -354,8 +354,8 @@ x-i18n:
```
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
- За замовчуванням: `false`, якщо лише `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цими межами, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
- Коли ввімкнено, системний промпт також додає вказівки з використання, щоб модель застосовувала його лише для суттєвої роботи й підтримувала не більше одного кроку `in_progress`.
- За замовчуванням: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Встановіть `true`, щоб примусово ввімкнути інструмент поза цими межами, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
- Коли інструмент увімкнено, системний промпт також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й підтримувала не більше одного кроку `in_progress`.
### `agents.defaults.subagents`
@ -375,9 +375,9 @@ x-i18n:
}
```
- `model`: модель за замовчуванням для запущених субагентів. Якщо не вказано, субагенти успадковують модель викликувача.
- `allowAgents`: список дозволених цільових ідентифікаторів агентів за замовчуванням для `sessions_spawn`, якщо агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
- `runTimeoutSeconds`: час очікування за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає відсутність обмеження часу.
- `model`: модель за замовчуванням для породжених субагентів. Якщо не вказано, субагенти успадковують модель викликача.
- `allowAgents`: список дозволених ідентифікаторів цільових агентів за замовчуванням для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
- `runTimeoutSeconds`: тайм-аут за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
- Політика інструментів для окремого субагента: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
@ -414,19 +414,19 @@ OpenClaw використовує вбудований каталог модел
```
<AccordionGroup>
<Accordion title="Пріоритет автентифікації та злиття">
- Використовуйте `authHeader: true` + `headers` для особливих потреб автентифікації.
- Перевизначте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища).
- Пріоритет злиття для провайдерів з однаковими ідентифікаторами:
- Непорожні значення `baseUrl` у `models.json` агента мають пріоритет.
- Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті конфігурації/профілю автентифікації.
- Значення `apiKey` провайдера, керовані SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань file/exec) замість збереження розкритих секретів.
- Значення заголовків провайдера, керовані SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для посилань на змінні середовища, `secretref-managed` для посилань file/exec).
- Порожні або відсутні `apiKey`/`baseUrl` агента повертаються до `models.providers` у конфігурації.
- Для однакових моделей `contextWindow`/`maxTokens` використовують більше значення між явною конфігурацією та неявними значеннями каталогу.
- Для однакових моделей `contextTokens` зберігає явне обмеження часу виконання, якщо воно задане; використовуйте це, щоб обмежити ефективний контекст без зміни нативних метаданих моделі.
<Accordion title="Автентифікація та пріоритет злиття">
- Використовуйте `authHeader: true` + `headers` для нестандартних потреб автентифікації.
- Перевизначайте корінь конфігурації агента за допомогою `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілого псевдоніма змінної середовища).
- Пріоритет злиття для однакових ідентифікаторів провайдерів:
- Непорожні значення `baseUrl` в агентському `models.json` мають пріоритет.
- Непорожні значення агентського `apiKey` мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті конфігурації/профілю автентифікації.
- Значення `apiKey` для провайдерів, керованих через SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для посилань на env, `secretref-managed` для file/exec-посилань) замість збереження розкритих секретів.
- Значення заголовків для провайдерів, керованих через SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для посилань на env, `secretref-managed` для file/exec-посилань).
- Порожні або відсутні агентські `apiKey`/`baseUrl` повертаються до `models.providers` у конфігурації.
- Для однакових моделей `contextWindow`/`maxTokens` використовують вище значення між явною конфігурацією та неявними значеннями каталогу.
- Для однакових моделей `contextTokens` зберігає явне обмеження середовища виконання, якщо воно присутнє; використовуйте це, щоб обмежити ефективний контекст без зміни рідних метаданих моделі.
- Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписала `models.json`.
- Збереження маркерів є авторитетним від джерела: маркери записуються з активного знімка конфігурації джерела (до розкриття), а не з розкритих значень секретів під час виконання.
- Збереження маркерів є джерельно-авторитетним: маркери записуються з активного знімка конфігурації джерела (до розкриття), а не з розкритих значень секретів середовища виконання.
</Accordion>
</AccordionGroup>
@ -435,38 +435,38 @@ OpenClaw використовує вбудований каталог модел
<AccordionGroup>
<Accordion title="Каталог верхнього рівня">
- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
- `models.providers`: мапа користувацьких провайдерів верхнього рівня за ідентифікатором провайдера.
- Безпечне редагування: використовуйте `openclaw config set models.providers.<id> '<json>' --strict-json --merge` або `openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge` для додаткових оновлень. `config set` відмовляє в руйнівних замінах, якщо ви не передасте `--replace`.
- `models.providers`: мапа користувацьких провайдерів із ключами-ідентифікаторами провайдера.
- Безпечне редагування: використовуйте `openclaw config set models.providers.<id> '<json>' --strict-json --merge` або `openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge` для додаткових оновлень. `config set` відхиляє руйнівні заміни, якщо ви не передасте `--replace`.
</Accordion>
<Accordion title="Підключення провайдера та автентифікація">
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
- `models.providers.*.apiKey`: облікові дані провайдера (бажано через SecretRef/підстановку змінних середовища).
- `models.providers.*.apiKey`: облікові дані провайдера (переважно SecretRef/підстановка env).
- `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`).
- `models.providers.*.contextWindow`: нативне вікно контексту за замовчуванням для моделей цього провайдера, коли запис моделі не задає `contextWindow`.
- `models.providers.*.contextTokens`: ефективне обмеження контексту часу виконання за замовчуванням для моделей цього провайдера, коли запис моделі не задає `contextTokens`.
- `models.providers.*.maxTokens`: обмеження вихідних токенів за замовчуванням для моделей цього провайдера, коли запис моделі не задає `maxTokens`.
- `models.providers.*.timeoutSeconds`: необов’язковий час очікування HTTP-запиту моделі для провайдера в секундах, включно з підключенням, заголовками, тілом і загальним перериванням запиту.
- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вставляє `options.num_ctx` у запити (за замовчуванням: `true`).
- `models.providers.*.contextWindow`: рідне вікно контексту за замовчуванням для моделей цього провайдера, якщо запис моделі не задає `contextWindow`.
- `models.providers.*.contextTokens`: ефективне обмеження контексту середовища виконання за замовчуванням для моделей цього провайдера, якщо запис моделі не задає `contextTokens`.
- `models.providers.*.maxTokens`: обмеження вихідних токенів за замовчуванням для моделей цього провайдера, якщо запис моделі не задає `maxTokens`.
- `models.providers.*.timeoutSeconds`: необов’язковий тайм-аут HTTP-запиту моделі для кожного провайдера в секундах, включно з підключенням, заголовками, тілом і повним перериванням запиту.
- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` додає `options.num_ctx` у запити (за замовчуванням: `true`).
- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно.
- `models.providers.*.baseUrl`: базова URL-адреса API вищого рівня.
- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації проксі/орендаря.
- `models.providers.*.baseUrl`: базова URL-адреса API верхнього рівня.
- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації через проксі/тенант.
</Accordion>
<Accordion title="Перевизначення транспорту запитів">
`models.providers.*.request`: перевизначення транспорту для HTTP-запитів провайдера моделі.
- `request.headers`: додаткові заголовки (зливаються зі стандартними заголовками провайдера). Значення приймають SecretRef.
- `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"` (із `token`), `"header"``headerName`, `value`, необов’язковим `prefix`).
- `request.proxy`: перевизначення HTTP-проксі. Режими: `"env-proxy"` (використовувати змінні середовища `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (із `url`). Обидва режими приймають необов’язковий підоб’єкт `tls`.
- `request.tls`: перевизначення TLS для прямих підключень. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`.
- `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS розв’язується в приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (явний дозвіл оператора для довірених самостійно розміщених кінцевих точок, сумісних з OpenAI). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-запобіжник fetch. За замовчуванням `false`.
- `request.headers`: додаткові заголовки (зливаються зі стандартними для провайдера). Значення підтримують SecretRef.
- `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"` (із `token`), `"header"` (із `headerName`, `value`, необов’язковим `prefix`).
- `request.proxy`: перевизначення HTTP-проксі. Режими: `"env-proxy"` (використовувати змінні середовища `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (із `url`). Обидва режими підтримують необов’язковий підоб’єкт `tls`.
- `request.tls`: перевизначення TLS для прямих підключень. Поля: `ca`, `cert`, `key`, `passphrase` (усі підтримують SecretRef), `serverName`, `insecureSkipVerify`.
- `request.allowPrivateNetwork`: коли значення `true`, дозволяє HTTPS до `baseUrl`, якщо DNS розв’язується в приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (явне вмикання оператором для довірених самостійно розміщених кінцевих точок, сумісних з OpenAI). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-запобіжник fetch. За замовчуванням `false`.
</Accordion>
<Accordion title="Записи каталогу моделей">
- `models.providers.*.models`: явні записи каталогу моделей провайдера.
- `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі. Це перевизначає `contextWindow` на рівні провайдера для цієї моделі.
- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту часу виконання. Це перевизначає `contextTokens` на рівні провайдера; використовуйте, коли потрібен менший ефективний бюджет контексту, ніж нативний `contextWindow` моделі; `openclaw models list` показує обидва значення, коли вони відрізняються.
- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw під час виконання примусово встановлює це значення в `false`. Порожній/пропущений `baseUrl` зберігає стандартну поведінку OpenAI.
- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для чат-ендпойнтів OpenAI-compatible, що підтримують лише рядки. Коли `true`, OpenClaw згортає масиви `messages[].content`, що містять лише текст, у звичайні рядки перед надсиланням запиту.
- `models.providers.*.models.*.contextWindow`: метадані рідного вікна контексту моделі. Це перевизначає `contextWindow` рівня провайдера для цієї моделі.
- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту середовища виконання. Це перевизначає `contextTokens` рівня провайдера; використовуйте, коли потрібен менший ефективний бюджет контексту, ніж рідний `contextWindow` моделі; `openclaw models list` показує обидва значення, коли вони відрізняються.
- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` із непорожнім нерідним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час виконання. Порожній/відсутній `baseUrl` зберігає стандартну поведінку OpenAI.
- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для чат-ендпоінтів, сумісних з OpenAI і підтримують лише рядки. Коли значення `true`, OpenClaw перетворює масиви `messages[].content`, що містять лише текст, на звичайні рядки перед надсиланням запиту.
</Accordion>
<Accordion title="Виявлення Amazon Bedrock">
- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань автовиявлення Bedrock.
@ -483,7 +483,7 @@ OpenClaw використовує вбудований каталог модел
<AccordionGroup>
<Accordion title="Cerebras (GLM 4.7 / GPT OSS)">
Вбудований плагін провайдера `cerebras` можна налаштувати через `openclaw onboard --auth-choice cerebras-api-key`. Явну конфігурацію провайдера використовуйте лише тоді, коли потрібно перевизначити стандартні значення.
Вбудований плагін провайдера `cerebras` може налаштувати це через `openclaw onboard --auth-choice cerebras-api-key`. Використовуйте явну конфігурацію провайдера лише для перевизначення стандартних значень.
```json5
{
@ -517,7 +517,7 @@ OpenClaw використовує вбудований каталог модел
}
```
Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` для прямого Z.AI.
Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` для прямого Z.AI.
</Accordion>
<Accordion title="Kimi Coding">
@ -537,7 +537,7 @@ OpenClaw використовує вбудований каталог модел
</Accordion>
<Accordion title="Локальні моделі (LM Studio)">
Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на достатньо потужному обладнанні; залишайте розміщені моделі злитими для резервного використання.
Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте злиті хостовані моделі як резервний варіант.
</Accordion>
<Accordion title="MiniMax M2.7 (напряму)">
```json5
@ -574,7 +574,7 @@ OpenClaw використовує вбудований каталог модел
}
```
Установіть `MINIMAX_API_KEY`. Скорочення: `openclaw onboard --auth-choice minimax-global-api` або `openclaw onboard --auth-choice minimax-cn-api`. Каталог моделей за замовчуванням містить лише M2.7. На шляху потокової передачі, сумісному з Anthropic, OpenClaw за замовчуванням вимикає thinking MiniMax, якщо ви явно не задасте `thinking` самостійно. `/fast on` або `params.fastMode: true` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
Установіть `MINIMAX_API_KEY`. Скорочення: `openclaw onboard --auth-choice minimax-global-api` або `openclaw onboard --auth-choice minimax-cn-api`. За замовчуванням каталог моделей містить лише M2.7. На шляху потокової передачі, сумісному з Anthropic, OpenClaw за замовчуванням вимикає thinking MiniMax, якщо ви явно не встановите `thinking` самостійно. `/fast on` або `params.fastMode: true` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
</Accordion>
<Accordion title="Moonshot AI (Kimi)">
@ -611,9 +611,9 @@ OpenClaw використовує вбудований каталог модел
}
```
Для китайської кінцевої точки: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
Для кінцевої точки в Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
Нативні кінцеві точки Moonshot оголошують сумісність потокового використання на спільному транспорті `openai-completions`, і OpenClaw орієнтується на можливості кінцевої точки, а не лише на ідентифікатор вбудованого провайдера.
Власні кінцеві точки Moonshot рекламують сумісність використання потокової передачі на спільному транспорті `openai-completions`, і OpenClaw визначає це за можливостями кінцевої точки, а не лише за вбудованим ідентифікатором провайдера.
</Accordion>
<Accordion title="OpenCode">
@ -680,7 +680,7 @@ OpenClaw використовує вбудований каталог модел
}
```
Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` — прийнятні псевдоніми. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` є допустимими псевдонімами. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
- Загальна кінцева точка: `https://api.z.ai/api/paas/v4`
- Кінцева точка для кодування (за замовчуванням): `https://api.z.ai/api/coding/paas/v4`

View File

@ -1,52 +1,52 @@
---
read_when:
- Зміна транскрибування аудіо або обробки медіа
summary: Як вхідні аудіо- та голосові повідомлення завантажуються, транскрибуються та додаються до відповідей
title: Аудіо- та голосові повідомлення
summary: Як вхідні аудіоповідомлення/голосові нотатки завантажуються, транскрибуються та вставляються у відповіді
title: Аудіо та голосові нотатки
x-i18n:
generated_at: "2026-04-27T07:08:22Z"
generated_at: "2026-04-27T11:10:51Z"
model: gpt-5.4
provider: openai
source_hash: d2795f306a0095e2355b39cb600698d02076aba5a64ad5ba2a22f7752adbe5db
source_hash: bd987f4e7475b5c4e46fad9cf44385111ad229f12e4554a16b8f0fa91f7e9d8c
source_path: nodes/audio.md
workflow: 15
---
# Аудіо / голосові повідомлення (2026-01-17)
# Аудіо / голосові нотатки (2026-01-17)
## Що працює
- **Розуміння медіа (аудіо)**: якщо розуміння аудіо увімкнене (або визначається автоматично), OpenClaw:
1. Знаходить перше вкладення з аудіо (локальний шлях або URL) і за потреби завантажує його.
- **Розуміння медіа (аудіо)**: Якщо розуміння аудіо ввімкнене (або автоматично визначене), OpenClaw:
1. Знаходить перше аудіовкладення (локальний шлях або URL) і завантажує його, якщо потрібно.
2. Застосовує `maxBytes` перед надсиланням до кожного запису моделі.
3. Запускає перший відповідний запис моделі за порядком (провайдер або CLI).
4. Якщо це завершується помилкою або пропуском (розмір/тайм-аут), пробує наступний запис.
3. Запускає перший придатний запис моделі за порядком (провайдер або CLI).
4. Якщо це завершується помилкою або пропускається (розмір/тайм-аут), пробує наступний запис.
5. У разі успіху замінює `Body` блоком `[Audio]` і встановлює `{{Transcript}}`.
- **Розбір команд**: коли транскрибування успішне, `CommandBody`/`RawBody` встановлюються в транскрипт, тож slash-команди продовжують працювати.
- **Докладне логування**: у `--verbose` ми логуємо, коли запускається транскрибування і коли воно замінює тіло повідомлення.
- **Розбір команд**: Коли транскрибування успішне, `CommandBody`/`RawBody` встановлюються в текст транскрипту, щоб slash-команди й далі працювали.
- **Докладне журналювання**: У `--verbose` ми логуємо, коли запускається транскрибування і коли воно замінює тіло повідомлення.
## Автовизначення (типово)
Якщо ви **не налаштовуєте моделі** і `tools.media.audio.enabled` **не** встановлено в `false`,
OpenClaw автоматично визначає в такому порядку і зупиняється на першому робочому варіанті:
OpenClaw автоматично визначає в такому порядку й зупиняється на першому робочому варіанті:
1. **Активна модель відповіді**, якщо її провайдер підтримує розуміння аудіо.
2. **Локальні CLI** (якщо встановлені)
- `sherpa-onnx-offline` (потребує `SHERPA_ONNX_MODEL_DIR` з encoder/decoder/joiner/tokens)
- `whisper-cli` (із `whisper-cpp`; використовує `WHISPER_CPP_MODEL` або вбудовану tiny-модель)
- `whisper-cli``whisper-cpp`; використовує `WHISPER_CPP_MODEL` або вбудовану tiny-модель)
- `whisper` (Python CLI; автоматично завантажує моделі)
3. **Gemini CLI** (`gemini`) з використанням `read_many_files`
4. **Авторизація провайдера**
- Спочатку пробуються налаштовані записи `models.providers.*`, які підтримують аудіо
- Вбудований резервний порядок: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Порядок вбудованих запасних варіантів: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
Щоб вимкнути автовизначення, встановіть `tools.media.audio.enabled: false`.
Щоб налаштувати вручну, встановіть `tools.media.audio.models`.
Примітка: виявлення бінарних файлів є best-effort на macOS/Linux/Windows; переконайтеся, що CLI доступний у `PATH` (ми розгортаємо `~`), або задайте явну CLI-модель із повним шляхом до команди.
Щоб налаштувати вручну, задайте `tools.media.audio.models`.
Примітка: виявлення бінарних файлів виконується в режимі best-effort на macOS/Linux/Windows; переконайтеся, що CLI є в `PATH` (ми розгортаємо `~`), або задайте явну CLI-модель з повним шляхом до команди.
## Приклади конфігурації
### Провайдер + резервний CLI (OpenAI + Whisper CLI)
### Провайдер + запасний CLI-варіант (OpenAI + Whisper CLI)
```json5
{
@ -70,7 +70,7 @@ OpenClaw автоматично визначає в такому порядку
}
```
### Лише провайдер із обмеженням за scope
### Лише провайдер із керуванням областю дії
```json5
{
@ -134,7 +134,7 @@ OpenClaw автоматично визначає в такому порядку
}
```
### Надсилати транскрипт у чат (опціонально)
### Надсилати транскрипт назад у чат (за бажанням)
```json5
{
@ -142,7 +142,7 @@ OpenClaw автоматично визначає в такому порядку
media: {
audio: {
enabled: true,
echoTranscript: true, // типове значення — false
echoTranscript: true, // типово false
echoFormat: '📝 "{transcript}"', // необов’язково, підтримує {transcript}
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
@ -151,71 +151,72 @@ OpenClaw автоматично визначає в такому порядку
}
```
## Примітки й обмеження
## Примітки та обмеження
- Авторизація провайдера дотримується стандартного порядку авторизації моделей (профілі авторизації, змінні середовища, `models.providers.*.apiKey`).
- Деталі налаштування Groq: [Groq](/uk/providers/groq).
- Deepgram використовує `DEEPGRAM_API_KEY`, коли застосовується `provider: "deepgram"`.
- Деталі налаштування Deepgram: [Deepgram (транскрибування аудіо)](/uk/providers/deepgram).
- Деталі налаштування Mistral: [Mistral](/uk/providers/mistral).
- SenseAudio використовує `SENSEAUDIO_API_KEY`, коли застосовується `provider: "senseaudio"`.
- Деталі налаштування SenseAudio: [SenseAudio](/uk/providers/senseaudio).
- Авторизація провайдера виконується за стандартним порядком авторизації моделей (профілі авторизації, змінні середовища, `models.providers.*.apiKey`).
- Докладніше про налаштування Groq: [Groq](/uk/providers/groq).
- Deepgram підхоплює `DEEPGRAM_API_KEY`, коли використовується `provider: "deepgram"`.
- Докладніше про налаштування Deepgram: [Deepgram (транскрибування аудіо)](/uk/providers/deepgram).
- Докладніше про налаштування Mistral: [Mistral](/uk/providers/mistral).
- SenseAudio підхоплює `SENSEAUDIO_API_KEY`, коли використовується `provider: "senseaudio"`.
- Докладніше про налаштування SenseAudio: [SenseAudio](/uk/providers/senseaudio).
- Провайдери аудіо можуть перевизначати `baseUrl`, `headers` і `providerOptions` через `tools.media.audio`.
- Типове обмеження розміру — 20MB (`tools.media.audio.maxBytes`). Завелике аудіо пропускається для цієї моделі, і пробується наступний запис.
- Крихітні/порожні аудіофайли менш ніж 1024 байти пропускаються ще до транскрибування через провайдера/CLI.
- Типове значення `maxChars` для аудіо **не встановлено** (повний транскрипт). Встановіть `tools.media.audio.maxChars` або `maxChars` для окремого запису, щоб обрізати вивід.
- Типове значення OpenAI за замовчуванням — `gpt-4o-mini-transcribe`; установіть `model: "gpt-4o-transcribe"` для вищої точності.
- Використовуйте `tools.media.audio.attachments`, щоб обробляти кілька голосових повідомлень (`mode: "all"` + `maxAttachments`).
- Типове обмеження розміру — 20 МБ (`tools.media.audio.maxBytes`). Аудіо, що перевищує розмір, пропускається для цієї моделі, і пробується наступний запис.
- Дуже малі/порожні аудіофайли менше ніж 1024 байти пропускаються до транскрибування провайдером/CLI.
- Типове значення `maxChars` для аудіо **не задане** (повний транскрипт). Задайте `tools.media.audio.maxChars` або `maxChars` для окремого запису, щоб обрізати результат.
- Типове значення OpenAI `gpt-4o-mini-transcribe`; задайте `model: "gpt-4o-transcribe"` для вищої точності.
- Використовуйте `tools.media.audio.attachments` для обробки кількох голосових нотаток (`mode: "all"` + `maxAttachments`).
- Транскрипт доступний у шаблонах як `{{Transcript}}`.
- `tools.media.audio.echoTranscript` типово вимкнено; увімкніть його, щоб надсилати підтвердження транскрипту назад у вихідний чат перед обробкою агентом.
- `tools.media.audio.echoFormat` налаштовує текст такого підтвердження (placeholder: `{transcript}`).
- Вивід CLI в stdout обмежено (5MB); робіть вивід CLI лаконічним.
- `tools.media.audio.echoFormat` налаштовує текст такого відлуння (заповнювач: `{transcript}`).
- Вивід CLI в stdout обмежено (5 МБ); робіть вивід CLI лаконічним.
- `args` для CLI мають використовувати `{{MediaPath}}` для локального шляху до аудіофайлу. Застарілі заповнювачі `{input}` зі старіших конфігурацій `audio.transcription.command` приймаються як сумісний псевдонім і мігрують до `{{MediaPath}}`.
### Підтримка проксі через змінні середовища
Транскрибування аудіо через провайдера підтримує стандартні змінні середовища для вихідного проксі:
Транскрибування аудіо через провайдера враховує стандартні змінні середовища для вихідного проксі:
- `HTTPS_PROXY`
- `HTTP_PROXY`
- `https_proxy`
- `http_proxy`
Якщо змінні середовища проксі не встановлені, використовується прямий вихід. Якщо конфігурація проксі некоректна, OpenClaw логує попередження і повертається до прямого отримання.
Якщо змінні середовища проксі не задані, використовується прямий вихід у мережу. Якщо конфігурація проксі некоректна, OpenClaw логує попередження і повертається до прямого отримання.
## Виявлення згадок у групах
Коли для групового чату встановлено `requireMention: true`, OpenClaw тепер транскрибує аудіо **до** перевірки згадок. Це дає змогу обробляти голосові повідомлення, навіть якщо згадки містяться в них.
Коли для групового чату встановлено `requireMention: true`, OpenClaw тепер транскрибує аудіо **до** перевірки згадок. Це дає змогу обробляти голосові нотатки, навіть якщо вони містять згадки.
**Як це працює:**
1. Якщо голосове повідомлення не має текстового тіла, а для групи потрібні згадки, OpenClaw виконує «попереднє» транскрибування.
2. Транскрипт перевіряється на шаблони згадок (наприклад, `@BotName`, emoji-тригери).
1. Якщо голосове повідомлення не має текстового тіла і для групи потрібні згадки, OpenClaw виконує "попереднє" транскрибування.
2. Транскрипт перевіряється на шаблони згадок (наприклад, `@BotName`, тригери-емодзі).
3. Якщо згадку знайдено, повідомлення проходить через повний конвеєр відповіді.
4. Транскрипт використовується для виявлення згадок, щоб голосові повідомлення могли пройти перевірку на згадку.
4. Транскрипт використовується для виявлення згадок, щоб голосові нотатки могли пройти перевірку на згадку.
**Резервна поведінка:**
- Якщо транскрибування під час попередньої перевірки завершується помилкою (тайм-аут, помилка API тощо), повідомлення обробляється на основі виявлення згадок лише в тексті.
- Це гарантує, що змішані повідомлення (текст + аудіо) ніколи не буде помилково відкинуто.
**Опціональне вимкнення для окремої Telegram group/topic:**
**Вимкнення для окремої Telegram-групи/теми:**
- Установіть `channels.telegram.groups.<chatId>.disableAudioPreflight: true`, щоб пропустити попередню перевірку згадок у транскрипті для цієї групи.
- Установіть `channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight`, щоб перевизначити поведінку для окремої теми (`true` — пропустити, `false` — примусово увімкнути).
- Типове значення — `false` (попередня перевірка ввімкнена, коли виконуються умови перевірки згадок).
- Встановіть `channels.telegram.groups.<chatId>.disableAudioPreflight: true`, щоб пропустити перевірки згадок у попередньому транскрипті для цієї групи.
- Встановіть `channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight`, щоб перевизначати для окремої теми (`true` — пропустити, `false` — примусово ввімкнути).
- Типове значення — `false` (попереднє транскрибування ввімкнене, коли збігаються умови перевірки згадок).
**Приклад:** користувач надсилає голосове повідомлення з текстом «Hey @Claude, what's the weather?» у Telegram group з `requireMention: true`. Голосове повідомлення транскрибується, згадка виявляється, і агент відповідає.
**Приклад:** Користувач надсилає голосову нотатку зі словами "Привіт @Claude, яка погода?" у групі Telegram з `requireMention: true`. Голосову нотатку транскрибують, виявляють згадку, і агент відповідає.
## Поширені нюанси
## Підводні камені
- Правила scope використовують принцип «перший збіг перемагає». `chatType` нормалізується до `direct`, `group` або `room`.
- Переконайтеся, що ваш CLI завершується з кодом 0 і виводить звичайний текст; JSON потрібно обробити, наприклад, через `jq -r .text`.
- Для `parakeet-mlx`, якщо ви передаєте `--output-dir`, OpenClaw читає `<output-dir>/<media-basename>.txt`, коли `--output-format` має значення `txt` (або не вказано); формати виводу, відмінні від `txt`, повертаються до розбору stdout.
- Встановлюйте розумні тайм-аути (`timeoutSeconds`, типово 60 с), щоб не блокувати чергу відповідей.
- Попереднє транскрибування обробляє лише **перше** аудіовкладення для виявлення згадок. Додаткові аудіо обробляються під час основної фази розуміння медіа.
- Для правил області дії використовується принцип first-match wins. `chatType` нормалізується до `direct`, `group` або `room`.
- Переконайтеся, що ваш CLI завершується з кодом 0 і виводить звичайний текст; JSON треба обробити через `jq -r .text`.
- Для `parakeet-mlx`, якщо ви передаєте `--output-dir`, OpenClaw читає `<output-dir>/<media-basename>.txt`, коли `--output-format` має значення `txt` (або не вказано); для форматів виводу, відмінних від `txt`, використовується резервний розбір stdout.
- Тримайте тайм-аути розумними (`timeoutSeconds`, типово 60 с), щоб не блокувати чергу відповідей.
- Попереднє транскрибування обробляє лише **перше** аудіовкладення для виявлення згадок. Додаткове аудіо обробляється під час основної фази розуміння медіа.
## Пов’язане
- [Розуміння медіа](/uk/nodes/media-understanding)
- [Режим розмови](/uk/nodes/talk)
- [Активація голосом](/uk/nodes/voicewake)
- [Голосове пробудження](/uk/nodes/voicewake)