From 1c55acad4c560cdd73d2f7ec8409d8bd67440c4a Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sat, 18 Apr 2026 03:40:27 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/concepts/agent-workspace.md | 154 +- docs/uk/concepts/context.md | 107 +- docs/uk/concepts/system-prompt.md | 197 +-- docs/uk/gateway/configuration-reference.md | 1468 ++++++++++---------- 4 files changed, 966 insertions(+), 960 deletions(-) diff --git a/docs/uk/concepts/agent-workspace.md b/docs/uk/concepts/agent-workspace.md index 8b78f90e7..117ab6cf0 100644 --- a/docs/uk/concepts/agent-workspace.md +++ b/docs/uk/concepts/agent-workspace.md @@ -5,33 +5,33 @@ read_when: summary: 'Робочий простір агента: розташування, структура та стратегія резервного копіювання' title: Робочий простір агента x-i18n: - generated_at: "2026-04-05T18:00:35Z" + generated_at: "2026-04-18T03:31:57Z" model: gpt-5.4 provider: openai - source_hash: 3735633f1098c733415369f9836fdbbc0bf869636a24ed42e95e6784610d964a + source_hash: dd2e74614d8d45df04b1bbda48e2224e778b621803d774d38e4b544195eb234e source_path: concepts/agent-workspace.md workflow: 15 --- # Робочий простір агента -Робочий простір — це дім агента. Це єдиний робочий каталог, що використовується -для файлових інструментів і для контексту робочого простору. Тримайте його приватним і ставтеся до нього як до пам’яті. +Робочий простір — це домівка агента. Це єдиний робочий каталог, який використовується для +інструментів роботи з файлами та для контексту робочого простору. Зберігайте його приватним і ставтеся до нього як до пам’яті. -Він відокремлений від `~/.openclaw/`, де зберігаються конфігурація, облікові дані та +Це окремо від `~/.openclaw/`, де зберігаються конфігурація, облікові дані та сесії. -**Важливо:** робочий простір є **типовим cwd**, а не жорсткою пісочницею. Інструменти -розв’язують відносні шляхи відносно робочого простору, але абсолютні шляхи все ще можуть вести +**Важливо:** робочий простір — це **cwd за замовчуванням**, а не жорстка пісочниця. Інструменти +розв’язують відносні шляхи відносно робочого простору, але абсолютні шляхи все одно можуть вести в інші місця на хості, якщо пісочницю не ввімкнено. Якщо вам потрібна ізоляція, використовуйте -[`agents.defaults.sandbox`](/gateway/sandboxing) (та/або конфігурацію пісочниці для окремого агента). +[`agents.defaults.sandbox`](/uk/gateway/sandboxing) (і/або конфігурацію пісочниці для окремого агента). Коли пісочницю ввімкнено і `workspaceAccess` не дорівнює `"rw"`, інструменти працюють усередині робочого простору пісочниці в `~/.openclaw/sandboxes`, а не у вашому робочому просторі хоста. -## Типове розташування +## Розташування за замовчуванням -- Типово: `~/.openclaw/workspace` -- Якщо задано `OPENCLAW_PROFILE` і він не дорівнює `"default"`, типове значення стає +- За замовчуванням: `~/.openclaw/workspace` +- Якщо встановлено `OPENCLAW_PROFILE` і його значення не `"default"`, розташування за замовчуванням стає `~/.openclaw/workspace-`. - Перевизначення в `~/.openclaw/openclaw.json`: @@ -44,12 +44,11 @@ x-i18n: ``` `openclaw onboard`, `openclaw configure` або `openclaw setup` створять -робочий простір і додадуть початкові bootstrap-файли, якщо їх немає. -Копії початкових даних пісочниці приймають лише звичайні файли всередині робочого простору; псевдоніми symlink/hardlink, -що розв’язуються за межі вихідного робочого простору, ігноруються. +робочий простір і заповнять його початковими файлами bootstrap, якщо їх немає. +Початкове копіювання для пісочниці приймає лише звичайні файли в межах робочого простору; псевдоніми symlink/hardlink, +які вказують за межі вихідного робочого простору, ігноруються. -Якщо ви вже самі керуєте файлами робочого простору, можете вимкнути створення -bootstrap-файлів: +Якщо ви вже самі керуєте файлами робочого простору, можна вимкнути створення bootstrap-файлів: ```json5 { agent: { skipBootstrap: true } } @@ -57,11 +56,12 @@ bootstrap-файлів: ## Додаткові папки робочого простору -У старих установленнях могла бути створена `~/openclaw`. Зберігання кількох каталогів -робочого простору може спричинити плутанину з автентифікацією або розходженням стану, оскільки одночасно активним є лише один робочий простір. +Старі інсталяції могли створювати `~/openclaw`. Наявність кількох каталогів +робочого простору може спричиняти плутанину з автентифікацією або розсинхронізацію стану, оскільки +одночасно активний лише один робочий простір. -**Рекомендація:** залишайте один активний робочий простір. Якщо ви більше не використовуєте -додаткові папки, заархівуйте їх або перемістіть до кошика (наприклад `trash ~/openclaw`). +**Рекомендація:** тримайте один активний робочий простір. Якщо ви більше не використовуєте +додаткові папки, архівуйте їх або перемістіть до кошика (наприклад, `trash ~/openclaw`). Якщо ви навмисно зберігаєте кілька робочих просторів, переконайтеся, що `agents.defaults.workspace` вказує на активний. @@ -69,24 +69,24 @@ bootstrap-файлів: ## Карта файлів робочого простору (що означає кожен файл) -Це стандартні файли, які OpenClaw очікує всередині робочого простору: +Ось стандартні файли, які OpenClaw очікує всередині робочого простору: - `AGENTS.md` - - Операційні інструкції для агента і те, як він має використовувати пам’ять. + - Операційні інструкції для агента та правила використання пам’яті. - Завантажується на початку кожної сесії. - - Гарне місце для правил, пріоритетів і деталей «як поводитися». + - Добре підходить для правил, пріоритетів і деталей «як поводитися». - `SOUL.md` - Персона, тон і межі. - Завантажується в кожній сесії. - - Посібник: [Посібник з особистості SOUL.md](/concepts/soul) + - Посібник: [Посібник з особистості SOUL.md](/uk/concepts/soul) - `USER.md` - - Хто є користувачем і як до нього звертатися. + - Хто такий користувач і як до нього звертатися. - Завантажується в кожній сесії. - `IDENTITY.md` - - Ім’я агента, вайб і emoji. + - Ім’я агента, вайб і емодзі. - Створюється/оновлюється під час bootstrap-ритуалу. - `TOOLS.md` @@ -94,12 +94,12 @@ bootstrap-файлів: - Не керує доступністю інструментів; це лише рекомендації. - `HEARTBEAT.md` - - Необов’язковий маленький контрольний список для запусків heartbeat. - - Тримайте його коротким, щоб не спалювати токени. + - Необов’язковий короткий чекліст для запусків Heartbeat. + - Тримайте його коротким, щоб не витрачати токени. - `BOOT.md` - - Необов’язковий стартовий контрольний список, що виконується під час перезапуску gateway, коли ввімкнено внутрішні хуки. - - Тримайте його коротким; для вихідних надсилань використовуйте інструмент message. + - Необов’язковий стартовий чекліст, який виконується під час перезапуску Gateway, коли ввімкнено внутрішні хуки. + - Тримайте його коротким; для вихідних надсилань використовуйте інструмент повідомлень. - `BOOTSTRAP.md` - Одноразовий ритуал першого запуску. @@ -108,53 +108,53 @@ bootstrap-файлів: - `memory/YYYY-MM-DD.md` - Щоденний журнал пам’яті (один файл на день). - - Рекомендовано читати сьогоднішній + вчорашній на початку сесії. + - Рекомендовано читати файл за сьогодні + вчора на початку сесії. - `MEMORY.md` (необов’язково) - - Відібрана довгострокова пам’ять. - - Завантажується лише в основній приватній сесії (не в спільних/групових контекстах). + - Кураторська довгострокова пам’ять. + - Завантажуйте лише в основній приватній сесії (не в спільних/групових контекстах). -Див. [Пам’ять](/concepts/memory) щодо процесу й автоматичного скидання пам’яті. +Див. [Пам’ять](/uk/concepts/memory) щодо робочого процесу та автоматичного скидання пам’яті. - `skills/` (необов’язково) - Skills, специфічні для цього робочого простору. - - Розташування skills із найвищим пріоритетом для цього робочого простору. - - Має перевагу над skills агента проєкту, персональними skills агента, керованими skills, вбудованими skills і `skills.load.extraDirs`, якщо назви збігаються. + - Розташування Skills з найвищим пріоритетом для цього робочого простору. + - Має пріоритет над skills агента проєкту, персональними skills агента, керованими skills, вбудованими skills і `skills.load.extraDirs`, якщо назви збігаються. - `canvas/` (необов’язково) - - Файли Canvas UI для відображення вузлів (наприклад `canvas/index.html`). + - Файли інтерфейсу Canvas для відображення Node (наприклад, `canvas/index.html`). -Якщо будь-який bootstrap-файл відсутній, OpenClaw вставляє маркер «відсутній файл» у -сесію та продовжує. Великі bootstrap-файли обрізаються під час вставлення; -ліміти можна налаштувати через `agents.defaults.bootstrapMaxChars` (типово: 20000) і -`agents.defaults.bootstrapTotalMaxChars` (типово: 150000). -`openclaw setup` може відновити відсутні типові файли, не перезаписуючи -наявні. +Якщо будь-який bootstrap-файл відсутній, OpenClaw вставляє в сесію маркер «відсутній файл» +і продовжує роботу. Великі bootstrap-файли обрізаються під час вставлення; +ліміти можна налаштувати через `agents.defaults.bootstrapMaxChars` (типово: 12000) і +`agents.defaults.bootstrapTotalMaxChars` (типово: 60000). +`openclaw setup` може відновити відсутні типові файли без перезапису наявних +файлів. -## ЩО НЕ входить до робочого простору +## ЩО НЕ знаходиться в робочому просторі -Це розташовано в `~/.openclaw/` і НЕ повинно потрапляти до репозиторію робочого простору: +Ось що зберігається в `~/.openclaw/` і **НЕ** повинно комітитися до репозиторію робочого простору: - `~/.openclaw/openclaw.json` (конфігурація) -- `~/.openclaw/agents//agent/auth-profiles.json` (профілі автентифікації моделей: OAuth + API keys) -- `~/.openclaw/credentials/` (стан каналу/провайдера плюс застарілі дані імпорту OAuth) +- `~/.openclaw/agents//agent/auth-profiles.json` (профілі автентифікації моделей: OAuth + API-ключі) +- `~/.openclaw/credentials/` (стан каналів/провайдерів плюс застарілі дані імпорту OAuth) - `~/.openclaw/agents//sessions/` (транскрипти сесій + метадані) -- `~/.openclaw/skills/` (керовані skills) +- `~/.openclaw/skills/` (керовані Skills) -Якщо вам потрібно перенести сесії або конфігурацію, копіюйте їх окремо й не включайте -до системи контролю версій. +Якщо вам потрібно перенести сесії або конфігурацію, копіюйте їх окремо й не +додавайте до системи контролю версій. -## Резервне копіювання через Git (рекомендовано, приватне) +## Резервне копіювання через Git (рекомендовано, приватно) -Ставтеся до робочого простору як до приватної пам’яті. Помістіть його в **приватний** git-репозиторій, щоб мати -резервну копію й можливість відновлення. +Ставтеся до робочого простору як до приватної пам’яті. Помістіть його в **приватний** git-репозиторій, щоб +мати резервну копію та можливість відновлення. -Виконуйте ці кроки на машині, де працює Gateway (саме там розташований -робочий простір). +Виконуйте ці кроки на машині, де працює Gateway (саме там +розташований робочий простір). ### 1) Ініціалізуйте репозиторій -Якщо git установлено, абсолютно нові робочі простори ініціалізуються автоматично. Якщо цей +Якщо git встановлено, абсолютно нові робочі простори ініціалізуються автоматично. Якщо цей робочий простір ще не є репозиторієм, виконайте: ```bash @@ -164,12 +164,12 @@ git add AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md memory/ git commit -m "Add agent workspace" ``` -### 2) Додайте приватний remote (варіанти для початківців) +### 2) Додайте приватний remote (зручні варіанти для початківців) -Варіант A: GitHub web UI +Варіант A: веб-інтерфейс GitHub 1. Створіть новий **приватний** репозиторій на GitHub. -2. Не ініціалізуйте його з README (це дозволить уникнути конфліктів злиття). +2. Не ініціалізуйте його README (це допоможе уникнути конфліктів злиття). 3. Скопіюйте HTTPS URL remote. 4. Додайте remote і виконайте push: @@ -186,10 +186,10 @@ gh auth login gh repo create openclaw-workspace --private --source . --remote origin --push ``` -Варіант C: GitLab web UI +Варіант C: веб-інтерфейс GitLab 1. Створіть новий **приватний** репозиторій на GitLab. -2. Не ініціалізуйте його з README (це дозволить уникнути конфліктів злиття). +2. Не ініціалізуйте його README (це допоможе уникнути конфліктів злиття). 3. Скопіюйте HTTPS URL remote. 4. Додайте remote і виконайте push: @@ -212,14 +212,14 @@ git push Навіть у приватному репозиторії уникайте зберігання секретів у робочому просторі: -- API keys, OAuth tokens, паролі або приватні облікові дані. -- Усе, що знаходиться в `~/.openclaw/`. -- Сирі дампи чатів або чутливі вкладення. +- API-ключів, OAuth-токенів, паролів або приватних облікових даних. +- Будь-чого з `~/.openclaw/`. +- Сирих дампів чатів або чутливих вкладень. -Якщо вам обов’язково потрібно зберігати чутливі посилання, використовуйте заповнювачі й тримайте справжній -секрет в іншому місці (менеджер паролів, змінні середовища або `~/.openclaw/`). +Якщо вам все ж потрібно зберігати чутливі посилання, використовуйте заповнювачі, а справжній +секрет зберігайте деінде (у менеджері паролів, змінних середовища або `~/.openclaw/`). -Рекомендований початковий `.gitignore`: +Рекомендований початковий варіант `.gitignore`: ```gitignore .DS_Store @@ -232,21 +232,21 @@ git push ## Перенесення робочого простору на нову машину 1. Клонуйте репозиторій у потрібний шлях (типово `~/.openclaw/workspace`). -2. Установіть `agents.defaults.workspace` на цей шлях у `~/.openclaw/openclaw.json`. -3. Запустіть `openclaw setup --workspace `, щоб додати всі відсутні файли. +2. Встановіть `agents.defaults.workspace` на цей шлях у `~/.openclaw/openclaw.json`. +3. Виконайте `openclaw setup --workspace `, щоб створити відсутні файли. 4. Якщо вам потрібні сесії, окремо скопіюйте `~/.openclaw/agents//sessions/` зі старої машини. ## Додаткові примітки -- Маршрутизація кількох агентів може використовувати різні робочі простори для різних агентів. Див. - [Маршрутизація каналів](/channels/channel-routing) щодо конфігурації маршрутизації. +- Багатоагентна маршрутизація може використовувати різні робочі простори для різних агентів. Див. + [Маршрутизація каналів](/uk/channels/channel-routing) щодо конфігурації маршрутизації. - Якщо ввімкнено `agents.defaults.sandbox`, неосновні сесії можуть використовувати робочі простори - пісочниці для окремих сесій у `agents.defaults.sandbox.workspaceRoot`. + пісочниці для кожної сесії в `agents.defaults.sandbox.workspaceRoot`. -## Пов’язане +## Пов’язані матеріали -- [Standing Orders](/automation/standing-orders) — постійні інструкції у файлах робочого простору -- [Heartbeat](/gateway/heartbeat) — файл робочого простору HEARTBEAT.md -- [Session](/concepts/session) — шляхи зберігання сесій -- [Sandboxing](/gateway/sandboxing) — доступ до робочого простору в середовищах із пісочницею +- [Standing Orders](/uk/automation/standing-orders) — постійні інструкції у файлах робочого простору +- [Heartbeat](/uk/gateway/heartbeat) — файл робочого простору HEARTBEAT.md +- [Session](/uk/concepts/session) — шляхи зберігання сесій +- [Sandboxing](/uk/gateway/sandboxing) — доступ до робочого простору в середовищах із пісочницею diff --git a/docs/uk/concepts/context.md b/docs/uk/concepts/context.md index d347d33d6..f9fb51ea4 100644 --- a/docs/uk/concepts/context.md +++ b/docs/uk/concepts/context.md @@ -2,50 +2,50 @@ read_when: - Ви хочете зрозуміти, що означає «контекст» в OpenClaw - Ви налагоджуєте, чому модель «знає» щось (або забула це) - - Ви хочете зменшити накладні витрати контексту (/context, /status, /compact) + - Ви хочете зменшити накладні витрати контексту (`/context`, `/status`, `/compact`) summary: 'Контекст: що бачить модель, як її побудовано та як її перевірити' title: Контекст x-i18n: - generated_at: "2026-04-12T18:22:02Z" + generated_at: "2026-04-18T03:32:03Z" model: gpt-5.4 provider: openai - source_hash: 3620db1a8c1956d91a01328966df491388d3a32c4003dc4447197eb34316c77d + source_hash: 477ccb1d9654968d0e904b6846b32b8c14db6b6c0d3d2ec2b7409639175629f9 source_path: concepts/context.md workflow: 15 --- # Контекст -«Контекст» — це **все, що OpenClaw надсилає моделі для одного запуску**. Його обмежує **вікно контексту** моделі (ліміт токенів). +«Контекст» — це **все, що OpenClaw надсилає моделі для запуску**. Його обмежує **вікно контексту** моделі (ліміт токенів). Ментальна модель для початківців: -- **Системний промпт** (побудований OpenClaw): правила, інструменти, список Skills, час/середовище виконання та впроваджені файли робочого простору. -- **Історія розмови**: ваші повідомлення + повідомлення помічника в цій сесії. +- **Системний промпт** (побудований OpenClaw): правила, інструменти, список Skills, час/середовище виконання та вбудовані файли робочого простору. +- **Історія розмови**: ваші повідомлення + повідомлення асистента для цієї сесії. - **Виклики/результати інструментів + вкладення**: вивід команд, читання файлів, зображення/аудіо тощо. -Контекст _не є тим самим_, що й «пам’ять»: пам’ять може зберігатися на диску та повторно завантажуватися пізніше; контекст — це те, що знаходиться всередині поточного вікна моделі. +Контекст _не те саме_, що й «пам’ять»: пам’ять може зберігатися на диску та перезавантажуватися пізніше; контекст — це те, що знаходиться в поточному вікні моделі. ## Швидкий старт (перевірка контексту) - `/status` → швидкий перегляд «наскільки заповнене моє вікно?» + налаштування сесії. -- `/context list` → що впроваджується + приблизні розміри (для кожного файлу + підсумки). -- `/context detail` → глибший розбір: розміри для кожного файлу, для кожної схеми інструмента, для кожного запису Skills і розмір системного промпту. -- `/usage tokens` → додає виноску з використанням токенів до звичайних відповідей. +- `/context list` → що вбудовано + приблизні розміри (для кожного файлу + загалом). +- `/context detail` → глибший розбір: для кожного файлу, розміри схем інструментів, розміри записів Skills і розмір системного промпту. +- `/usage tokens` → додає нижній колонтитул із використанням до звичайних відповідей. - `/compact` → підсумовує старішу історію в компактний запис, щоб звільнити місце у вікні. -Див. також: [Косі команди](/uk/tools/slash-commands), [Використання токенів і вартість](/uk/reference/token-use), [Compaction](/uk/concepts/compaction). +Див. також: [Слеш-команди](/uk/tools/slash-commands), [Використання токенів і витрати](/uk/reference/token-use), [Compaction](/uk/concepts/compaction). ## Приклад виводу -Значення відрізняються залежно від моделі, провайдера, політики інструментів і того, що є у вашому робочому просторі. +Значення залежать від моделі, провайдера, політики інструментів і того, що є у вашому робочому просторі. ### `/context list` ``` -🧠 Розбір контексту +🧠 Context breakdown Workspace: -Bootstrap max/file: 20,000 chars +Bootstrap max/file: 12,000 chars Sandbox: mode=non-main sandboxed=false System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok)) @@ -70,7 +70,7 @@ Session tokens (cached): 14,250 total / ctx=32,000 ### `/context detail` ``` -🧠 Детальний розбір контексту +🧠 Context breakdown (detailed) … Top skills (prompt entry size): - frontend-design: 412 chars (~103 tok) @@ -83,33 +83,33 @@ Top tools (schema size): … (+N more tools) ``` -## Що зараховується до вікна контексту +## Що враховується у вікні контексту -Зараховується все, що отримує модель, зокрема: +Усе, що отримує модель, зараховується, зокрема: - Системний промпт (усі розділи). - Історія розмови. - Виклики інструментів + результати інструментів. - Вкладення/транскрипти (зображення/аудіо/файли). - Підсумки Compaction і артефакти обрізання. -- «Обгортки» провайдера або приховані заголовки (не видно, але все одно зараховуються). +- «Обгортки» провайдера або приховані заголовки (не видимі, але все одно враховуються). ## Як OpenClaw будує системний промпт -Системний промпт **належить OpenClaw** і перебудовується для кожного запуску. Він містить: +Системний промпт **належить OpenClaw** і перебудовується для кожного запуску. Він включає: - Список інструментів + короткі описи. - Список Skills (лише метадані; див. нижче). - Розташування робочого простору. - Час (UTC + перетворений час користувача, якщо налаштовано). - Метадані середовища виконання (хост/ОС/модель/мислення). -- Впроваджені файли bootstrap робочого простору в розділі **Project Context**. +- Вбудовані bootstrap-файли робочого простору в розділі **Project Context**. -Повний розбір: [Системний промпт](/uk/concepts/system-prompt). +Повний розбір: [System Prompt](/uk/concepts/system-prompt). -## Впроваджені файли робочого простору (Project Context) +## Вбудовані файли робочого простору (Project Context) -Типово OpenClaw впроваджує фіксований набір файлів робочого простору (якщо вони є): +За замовчуванням OpenClaw вбудовує фіксований набір файлів робочого простору (якщо вони присутні): - `AGENTS.md` - `SOUL.md` @@ -119,68 +119,67 @@ Top tools (schema size): - `HEARTBEAT.md` - `BOOTSTRAP.md` (лише під час першого запуску) -Великі файли обрізаються для кожного файлу окремо за допомогою `agents.defaults.bootstrapMaxChars` (типово `20000` символів). OpenClaw також застосовує загальне обмеження на сумарний обсяг впровадження bootstrap для всіх файлів через `agents.defaults.bootstrapTotalMaxChars` (типово `150000` символів). `/context` показує розміри **raw vs injected** і те, чи відбулося обрізання. +Великі файли обрізаються для кожного файлу окремо за допомогою `agents.defaults.bootstrapMaxChars` (типово `12000` символів). OpenClaw також застосовує загальний ліміт вбудовування bootstrap для всіх файлів через `agents.defaults.bootstrapTotalMaxChars` (типово `60000` символів). `/context` показує розміри **raw vs injected** і те, чи відбулося обрізання. -Коли відбувається обрізання, середовище виконання може впровадити попереджувальний блок прямо в промпт у розділі Project Context. Налаштуйте це через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово `once`). +Коли відбувається обрізання, середовище виконання може вбудувати в промпт блок попередження в розділі Project Context. Це налаштовується через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово `once`). -## Skills: впроваджуються чи завантажуються на вимогу +## Skills: вбудовані чи завантажувані на вимогу -Системний промпт містить компактний **список Skills** (назва + опис + розташування). Цей список має реальні накладні витрати. +Системний промпт містить компактний **список Skills** (назва + опис + розташування). Цей список створює реальні накладні витрати. -Інструкції Skills _типово не включаються_. Очікується, що модель викличе `read` для `SKILL.md` цього Skills **лише за потреби**. +Інструкції Skills _не_ включаються за замовчуванням. Очікується, що модель викличе `read` для `SKILL.md` потрібного Skill **лише за потреби**. ## Інструменти: є дві складові вартості Інструменти впливають на контекст двома способами: 1. **Текст списку інструментів** у системному промпті (те, що ви бачите як «Tooling»). -2. **Схеми інструментів** (JSON). Вони надсилаються моделі, щоб вона могла викликати інструменти. Вони зараховуються до контексту, навіть якщо ви не бачите їх як звичайний текст. +2. **Схеми інструментів** (JSON). Вони надсилаються моделі, щоб вона могла викликати інструменти. Вони враховуються в контексті, хоча ви не бачите їх як звичайний текст. `/context detail` розбиває найбільші схеми інструментів, щоб ви могли побачити, що домінує. -## Команди, директиви та "вбудовані скорочення" +## Команди, директиви та «вбудовані скорочення» -Косі команди обробляє Gateway. Є кілька різних варіантів поведінки: +Слеш-команди обробляються Gateway. Є кілька різних варіантів поведінки: - **Окремі команди**: повідомлення, яке складається лише з `/...`, виконується як команда. -- **Директиви**: `/think`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/model`, `/queue` видаляються до того, як модель побачить повідомлення. +- **Директиви**: `/think`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/model`, `/queue` вилучаються до того, як модель побачить повідомлення. - Повідомлення, що містять лише директиви, зберігають налаштування сесії. - - Вбудовані директиви у звичайному повідомленні діють як підказки лише для цього повідомлення. -- **Вбудовані скорочення** (лише для відправників із allowlist): певні токени `/...` усередині звичайного повідомлення можуть виконуватися негайно (наприклад: “hey /status”), і видаляються до того, як модель побачить решту тексту. + - Вбудовані директиви у звичайному повідомленні працюють як підказки для конкретного повідомлення. +- **Вбудовані скорочення** (лише для відправників із allowlist): певні токени `/...` усередині звичайного повідомлення можуть виконуватися негайно (приклад: «hey /status»), і вилучаються до того, як модель побачить решту тексту. -Докладніше: [Косі команди](/uk/tools/slash-commands). +Докладніше: [Слеш-команди](/uk/tools/slash-commands). -## Сесії, Compaction та обрізання (що зберігається) +## Сесії, Compaction і pruning (що зберігається) -Що зберігається між повідомленнями, залежить від механізму: +Те, що зберігається між повідомленнями, залежить від механізму: -- **Звичайна історія** зберігається в транскрипті сесії, доки не буде стиснена/обрізана згідно з політикою. -- **Compaction** зберігає підсумок у транскрипті й залишає недавні повідомлення недоторканими. -- **Pruning** видаляє старі результати інструментів із _внутрішньопам’ятного_ промпту для запуску, але не переписує транскрипт. +- **Звичайна історія** зберігається в транскрипті сесії, доки не буде стиснена/обрізана політикою. +- **Compaction** зберігає підсумок у транскрипті та залишає недавні повідомлення недоторканими. +- **Pruning** видаляє старі результати інструментів із _контексту в пам’яті_ для запуску, але не переписує транскрипт. -Документація: [Сесія](/uk/concepts/session), [Compaction](/uk/concepts/compaction), [Обрізання сесії](/uk/concepts/session-pruning). +Документація: [Session](/uk/concepts/session), [Compaction](/uk/concepts/compaction), [Session pruning](/uk/concepts/session-pruning). -Типово OpenClaw використовує вбудований рушій контексту `legacy` для збирання -та compaction. Якщо ви встановите Plugin, який надає `kind: "context-engine"` і -виберете його через `plugins.slots.contextEngine`, OpenClaw натомість делегує -збирання контексту, `/compact` і пов’язані хуки життєвого циклу контексту -субагента цьому рушію. `ownsCompaction: false` не викликає автоматичного -повернення до рушія legacy; активний рушій усе одно має правильно реалізовувати `compact()`. Див. +За замовчуванням OpenClaw використовує вбудований рушій контексту `legacy` для збирання +та compaction. Якщо ви встановите Plugin, який надає `kind: "context-engine"`, і +виберете його через `plugins.slots.contextEngine`, OpenClaw натомість делегує збирання контексту, `/compact` і пов’язані хуки життєвого циклу контексту субагента цьому +рушію. `ownsCompaction: false` не вмикає автоматичний fallback до рушія legacy; +активний рушій усе одно має коректно реалізовувати `compact()`. Див. [Context Engine](/uk/concepts/context-engine), щоб ознайомитися з повним підключуваним інтерфейсом, хуками життєвого циклу та конфігурацією. ## Що насправді показує `/context` -`/context` надає перевагу найновішому звіту про системний промпт, **побудованому під час запуску**, якщо він доступний: +`/context` за можливості використовує найновіший звіт про системний промпт, **побудований під час запуску**: -- `System prompt (run)` = захоплено з останнього вбудованого запуску (з підтримкою інструментів) і збережено в сховищі сесії. -- `System prompt (estimate)` = обчислено на льоту, коли звіт про запуск відсутній (або під час запуску через бекенд CLI, який не генерує цей звіт). +- `System prompt (run)` = захоплено з останнього вбудованого запуску (зі здатністю виклику інструментів) і збережено в сховищі сесії. +- `System prompt (estimate)` = обчислено на льоту, коли звіт запуску відсутній (або під час роботи через бекенд CLI, який не створює звіт). -У будь-якому разі він повідомляє про розміри та найбільших учасників; він **не** виводить повний системний промпт або схеми інструментів. +У будь-якому разі він показує розміри та найбільші складові; він **не** виводить повний системний промпт або схеми інструментів. ## Пов’язане -- [Context Engine](/uk/concepts/context-engine) — власне впровадження контексту через plugins +- [Context Engine](/uk/concepts/context-engine) — власне вбудовування контексту через plugins - [Compaction](/uk/concepts/compaction) — підсумовування довгих розмов -- [Системний промпт](/uk/concepts/system-prompt) — як будується системний промпт -- [Цикл агента](/uk/concepts/agent-loop) — повний цикл виконання агента +- [System Prompt](/uk/concepts/system-prompt) — як будується системний промпт +- [Agent Loop](/uk/concepts/agent-loop) — повний цикл виконання агента diff --git a/docs/uk/concepts/system-prompt.md b/docs/uk/concepts/system-prompt.md index 6aeb9e39b..282090dd3 100644 --- a/docs/uk/concepts/system-prompt.md +++ b/docs/uk/concepts/system-prompt.md @@ -1,14 +1,14 @@ --- read_when: - Редагування тексту системного промпту, списку інструментів або розділів часу/Heartbeat - - Зміна поведінки початкового налаштування робочого простору або ін’єкції Skills + - Зміна поведінки початкового налаштування робочого простору або впровадження Skills summary: Що містить системний промпт OpenClaw і як він збирається title: Системний промпт x-i18n: - generated_at: "2026-04-15T18:07:35Z" + generated_at: "2026-04-18T03:32:01Z" model: gpt-5.4 provider: openai - source_hash: c740e4646bc4980567338237bfb55126af0df72499ca00a48e4848d9a3608ab4 + source_hash: e60705994cebdd9768926168cb1c6d17ab717d7ff02353a5d5e7478ba8191cab source_path: concepts/system-prompt.md workflow: 15 --- @@ -19,81 +19,86 @@ OpenClaw створює власний системний промпт для к Промпт збирається OpenClaw і впроваджується в кожен запуск агента. -Плагіни провайдерів можуть додавати cache-aware настанови для промпту, не замінюючи весь промпт, що належить OpenClaw. Середовище виконання провайдера може: +Плагіни провайдерів можуть додавати cache-aware вказівки до промпту, не замінюючи +повний промпт, що належить OpenClaw. Середовище виконання провайдера може: -- замінювати невеликий набір іменованих базових розділів (`interaction_style`, +- замінювати невеликий набір іменованих основних секцій (`interaction_style`, `tool_call_style`, `execution_bias`) -- впроваджувати **стабільний префікс** над межею кешу промпту -- впроваджувати **динамічний суфікс** під межею кешу промпту +- впроваджувати **stable prefix** над межею кешу промпту +- впроваджувати **dynamic suffix** під межею кешу промпту -Використовуйте внески, що належать провайдеру, для налаштування під конкретне сімейство моделей. Зберігайте застарілу мутацію промпту `before_prompt_build` для сумісності або справді глобальних змін промпту, а не для звичайної поведінки провайдера. +Використовуйте внески, що належать провайдеру, для налаштування під конкретне сімейство моделей. Зберігайте застарілу +мутацію промпту `before_prompt_build` для сумісності або справді глобальних змін промпту, а не для звичайної поведінки провайдера. ## Структура -Промпт навмисно компактний і використовує фіксовані розділи: +Промпт навмисно компактний і використовує фіксовані секції: -- **Інструменти**: нагадування про джерело істини для структурованих інструментів і настанови щодо використання інструментів під час виконання. -- **Безпека**: коротке нагадування про запобіжні обмеження, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду. -- **Skills** (коли доступні): пояснює моделі, як завантажувати інструкції Skills за потреби. -- **Самооновлення OpenClaw**: як безпечно перевіряти конфігурацію за допомогою - `config.schema.lookup`, вносити зміни до конфігурації через `config.patch`, замінювати повну - конфігурацію через `config.apply` і запускати `update.run` лише за явним запитом - користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати - `tools.exec.ask` / `tools.exec.security`, зокрема застарілі - псевдоніми `tools.bash.*`, які нормалізуються до цих захищених шляхів exec. -- **Робочий простір**: робочий каталог (`agents.defaults.workspace`). -- **Документація**: локальний шлях до документації OpenClaw (репозиторій або npm package) і коли її слід читати. -- **Файли робочого простору (впроваджено)**: вказує, що файли bootstrap включено нижче. -- **Пісочниця** (коли ввімкнено): вказує на ізольоване середовище виконання, шляхи пісочниці й те, чи доступний exec з підвищеними правами. -- **Поточна дата й час**: локальний час користувача, часовий пояс і формат часу. -- **Теги відповіді**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів. -- **Heartbeat**: промпт Heartbeat і поведінка підтвердження, коли Heartbeat увімкнено для стандартного агента. -- **Середовище виконання**: хост, ОС, node, модель, корінь репозиторію (коли виявлено), рівень thinking (один рядок). -- **Міркування**: поточний рівень видимості + підказка для перемикання `/reasoning`. +- **Tooling**: нагадування про джерело істини для structured-tool плюс вказівки щодо використання інструментів під час виконання. +- **Safety**: коротке нагадування про захисні обмеження, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду. +- **Skills** (коли доступно): пояснює моделі, як за потреби завантажувати інструкції Skills. +- **OpenClaw Self-Update**: як безпечно перевіряти конфігурацію за допомогою + `config.schema.lookup`, змінювати конфігурацію через `config.patch`, замінювати всю + конфігурацію через `config.apply` і запускати `update.run` лише за явним + запитом користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати + `tools.exec.ask` / `tools.exec.security`, включно із застарілими + псевдонімами `tools.bash.*`, які нормалізуються до цих захищених шляхів exec. +- **Workspace**: робочий каталог (`agents.defaults.workspace`). +- **Documentation**: локальний шлях до документації OpenClaw (репозиторій або npm package) і коли її слід читати. +- **Workspace Files (injected)**: вказує, що нижче включено bootstrap-файли. +- **Sandbox** (коли ввімкнено): вказує на ізольоване середовище виконання, шляхи sandbox і чи доступний підвищений exec. +- **Current Date & Time**: локальний час користувача, часовий пояс і формат часу. +- **Reply Tags**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів. +- **Heartbeats**: промпт Heartbeat і поведінка підтвердження, коли Heartbeat увімкнено для агента за замовчуванням. +- **Runtime**: хост, ОС, node, корінь репозиторію (коли виявлено), рівень thinking (один рядок). +- **Reasoning**: поточний рівень видимості + підказка про перемикання /reasoning. -Розділ «Інструменти» також містить настанови для тривалої роботи під час виконання: +Секція Tooling також містить вказівки під час виконання для тривалої роботи: -- використовуйте Cron для майбутніх повторних дій (`check back later`, нагадування, періодична робота), - а не цикли сну через `exec`, трюки із затримкою `yieldMs` або повторне опитування `process` +- використовуйте cron для майбутнього повторного звернення (`check back later`, нагадування, повторювана робота) + замість циклів sleep через `exec`, хитрощів із затримкою `yieldMs` або повторного + опитування `process` - використовуйте `exec` / `process` лише для команд, які запускаються зараз і продовжують працювати у фоновому режимі - коли ввімкнено автоматичне пробудження після завершення, запускайте команду один раз і покладайтеся на - push-based механізм пробудження, коли вона виводить результат або завершується помилкою -- використовуйте `process` для журналів, стану, введення або втручання, коли потрібно - перевірити виконувану команду -- якщо завдання більше, віддавайте перевагу `sessions_spawn`; завершення субагента відбувається через - push-based механізм і автоматично повідомляється назад запитувачу + push-based шлях пробудження, коли вона виведе результат або завершиться з помилкою +- використовуйте `process` для журналів, статусу, введення або втручання, коли вам потрібно + перевірити команду, що виконується +- якщо завдання більше, віддавайте перевагу `sessions_spawn`; завершення субагента є + push-based і автоматично анонсується назад запитувачу - не опитуйте `subagents list` / `sessions_list` у циклі лише для очікування завершення -Коли ввімкнено експериментальний інструмент `update_plan`, розділ «Інструменти» також повідомляє -моделі використовувати його лише для нетривіальної багатокрокової роботи, підтримувати рівно один крок -`in_progress` і не повторювати весь план після кожного оновлення. +Коли ввімкнено експериментальний інструмент `update_plan`, Tooling також повідомляє +моделі використовувати його лише для нетривіальної багатоетапної роботи, підтримувати рівно один +крок `in_progress` і не повторювати весь план після кожного оновлення. -Запобіжні обмеження безпеки в системному промпті мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують примусове виконання політики. Для жорсткого забезпечення використовуйте політику інструментів, погодження exec, пісочницю та allowlists каналів; оператори можуть вимкнути це за задумом. +Захисні обмеження безпеки в системному промпті є рекомендаційними. Вони спрямовують поведінку моделі, але не забезпечують політику примусово. Для жорсткого забезпечення використовуйте політику інструментів, схвалення exec, sandboxing і allowlist каналів; оператори можуть вимкнути це за задумом. -У каналах із вбудованими картками/кнопками погодження промпт середовища виконання тепер повідомляє -агенту спочатку покладатися на цей вбудований інтерфейс погодження. Він має включати ручну -команду `/approve` лише тоді, коли результат інструмента повідомляє, що погодження в чаті недоступні або -ручне погодження — єдиний шлях. +У каналах із нативними картками/кнопками схвалення runtime-промпт тепер повідомляє +агенту спочатку покладатися на цей нативний UI схвалення. Він має включати ручну +команду `/approve`, лише коли результат інструмента повідомляє, що схвалення в чаті недоступні або +ручне схвалення є єдиним шляхом. ## Режими промпту -OpenClaw може формувати менші системні промпти для субагентів. Середовище виконання встановлює -`promptMode` для кожного запуску (це не користувацьке налаштування): +OpenClaw може рендерити менші системні промпти для субагентів. Середовище виконання задає +`promptMode` для кожного запуску (це не користувацький параметр конфігурації): -- `full` (типово): включає всі розділи вище. -- `minimal`: використовується для субагентів; пропускає **Skills**, **Виклик пам’яті**, **Самооновлення OpenClaw**, **Псевдоніми моделей**, **Ідентичність користувача**, **Теги відповіді**, - **Обмін повідомленнями**, **Тихі відповіді** і **Heartbeat**. Розділи «Інструменти», **Безпека**, - «Робочий простір», «Пісочниця», «Поточна дата й час» (коли відомо), «Середовище виконання» та впроваджений +- `full` (типово): включає всі секції вище. +- `minimal`: використовується для субагентів; пропускає **Skills**, **Memory Recall**, **OpenClaw + Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**, + **Messaging**, **Silent Replies** і **Heartbeats**. Tooling, **Safety**, + Workspace, Sandbox, Current Date & Time (коли відомо), Runtime і впроваджений контекст залишаються доступними. - `none`: повертає лише базовий рядок ідентичності. -Коли `promptMode=minimal`, додаткові впроваджені промпти позначаються як **Контекст субагента**, а не **Контекст групового чату**. +Коли `promptMode=minimal`, додаткові впроваджені промпти позначаються як **Subagent +Context** замість **Group Chat Context**. ## Впровадження bootstrap робочого простору -Файли bootstrap обрізаються й додаються в розділ **Контекст проєкту**, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні: +Bootstrap-файли обрізаються й додаються в **Project Context**, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні: - `AGENTS.md` - `SOUL.md` @@ -101,66 +106,68 @@ OpenClaw може формувати менші системні промпти - `IDENTITY.md` - `USER.md` - `HEARTBEAT.md` -- `BOOTSTRAP.md` (лише у зовсім нових робочих просторах) -- `MEMORY.md`, якщо наявний, інакше `memory.md` як резервний варіант у нижньому регістрі +- `BOOTSTRAP.md` (лише в абсолютно нових робочих просторах) +- `MEMORY.md`, якщо присутній, інакше `memory.md` як резервний варіант у нижньому регістрі -Усі ці файли **впроваджуються у вікно контексту** на кожному ході, якщо не застосовується окремий файловий бар’єр. `HEARTBEAT.md` пропускається під час звичайних запусків, коли Heartbeat вимкнено для стандартного агента або -`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Зберігайте впроваджені -файли стислими — особливо `MEMORY.md`, який з часом може зростати й призводити до -неочікувано високого використання контексту та частішого Compaction. +Усі ці файли **впроваджуються у вікно контексту** на кожному ході, якщо +не застосовується обмеження для конкретного файла. `HEARTBEAT.md` пропускається в звичайних запусках, коли +Heartbeat вимкнено для агента за замовчуванням або +`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Тримайте впроваджені +файли лаконічними — особливо `MEMORY.md`, який може зростати з часом і призводити до +неочікувано високого використання контексту та частішої Compaction. -> **Примітка:** щоденні файли `memory/*.md` **не** входять до звичайного bootstrap -> Контексту проєкту. Під час звичайних ходів доступ до них відбувається за потреби через -> інструменти `memory_search` і `memory_get`, тому вони не займають -> вікно контексту, доки модель явно їх не прочитає. Винятком є прості ходи `/new` і -> `/reset`: середовище виконання може додавати недавню щоденну пам’ять як одноразовий блок -> стартового контексту для цього першого ходу. +> **Примітка:** щоденні файли `memory/*.md` **не** є частиною звичайного bootstrap +> Project Context. Під час звичайних ходів до них звертаються за потреби через +> інструменти `memory_search` і `memory_get`, тому вони не враховуються у +> вікні контексту, якщо модель явно їх не читає. Виняток — прості ходи `/new` і +> `/reset`: середовище виконання може додати нещодавню щоденну пам’ять +> як одноразовий блок стартового контексту для цього першого ходу. -Великі файли обрізаються з маркером. Максимальний розмір на файл контролюється через -`agents.defaults.bootstrapMaxChars` (типово: 20000). Загальний обсяг упровадженого bootstrap-вмісту +Великі файли обрізаються з маркером. Максимальний розмір одного файла контролюється через +`agents.defaults.bootstrapMaxChars` (типово: 12000). Загальний обсяг впровадженого bootstrap-контенту для всіх файлів обмежується `agents.defaults.bootstrapTotalMaxChars` -(типово: 150000). Для відсутніх файлів упроваджується короткий маркер відсутнього файла. Коли відбувається обрізання, -OpenClaw може впровадити блок попередження в Контекст проєкту; це контролюється через +(типово: 60000). Відсутні файли впроваджують короткий маркер відсутнього файла. Коли відбувається обрізання, +OpenClaw може впровадити блок попередження в Project Context; це контролюється через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово: `once`). -Сеанси субагентів упроваджують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли +Сеанси субагентів впроваджують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли відфільтровуються, щоб контекст субагента залишався малим). -Внутрішні hooks можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати -впроваджені bootstrap-файли (наприклад, замінювати `SOUL.md` на альтернативну персону). +Внутрішні хуки можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати +впроваджені bootstrap-файли (наприклад, підміняти `SOUL.md` альтернативною персоною). -Якщо ви хочете, щоб агент звучав менш узагальнено, почніть із -[Посібника з особистості SOUL.md](/uk/concepts/soul). +Якщо ви хочете, щоб агент звучав менш шаблонно, почніть із +[SOUL.md Personality Guide](/uk/concepts/soul). -Щоб перевірити, який внесок робить кожен впроваджений файл (сирий та впроваджений розмір, обрізання, а також накладні витрати схеми інструментів), використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context). +Щоб перевірити, який внесок робить кожен впроваджений файл (сирий проти впровадженого, обрізання, а також накладні витрати схеми інструментів), використовуйте `/context list` або `/context detail`. Див. [Context](/uk/concepts/context). ## Обробка часу -Системний промпт містить окремий розділ **Поточна дата й час**, коли відомий -часовий пояс користувача. Щоб зберегти стабільність кешу промпту, тепер він містить лише +Системний промпт містить окрему секцію **Current Date & Time**, коли +відомий часовий пояс користувача. Щоб зберігати стабільність кешу промпту, тепер він включає лише **часовий пояс** (без динамічного годинника чи формату часу). -Використовуйте `session_status`, коли агенту потрібен поточний час; картка стану -містить рядок із часовою позначкою. Той самий інструмент також може за потреби встановити перевизначення моделі для сеансу -(`model=default` очищає його). +Використовуйте `session_status`, коли агенту потрібен поточний час; картка статусу +містить рядок із часовою міткою. Той самий інструмент також може за бажанням встановити +перевизначення моделі для сеансу (`model=default` очищує його). Налаштовується через: - `agents.defaults.userTimezone` - `agents.defaults.timeFormat` (`auto` | `12` | `24`) -Деталі повної поведінки див. у [Дата й час](/uk/date-time). +Див. [Date & Time](/uk/date-time) для повних подробиць поведінки. ## Skills -Коли існують відповідні Skills, OpenClaw впроваджує компактний **список доступних Skills** -(`formatSkillsForPrompt`), який включає **шлях до файла** для кожного skill. Промпт -інструктує модель використовувати `read` для завантаження SKILL.md за вказаним -розташуванням (робочий простір, кероване або вбудоване). Якщо відповідних Skills немає, -розділ Skills пропускається. +Коли існують Skills, що відповідають умовам, OpenClaw впроваджує компактний **available skills list** +(`formatSkillsForPrompt`), який містить **шлях до файла** для кожного Skill. Промпт +інструктує модель використовувати `read`, щоб завантажити SKILL.md у вказаному +розташуванні (робочий простір, кероване або вбудоване). Якщо придатних Skills немає, +секція Skills пропускається. -Відповідність включає перевірки метаданих skill, перевірки середовища виконання/конфігурації +Відповідність умовам включає обмеження метаданих Skill, перевірки середовища виконання/конфігурації та ефективний allowlist Skills агента, коли налаштовано `agents.defaults.skills` або `agents.list[].skills`. @@ -174,26 +181,26 @@ OpenClaw може впровадити блок попередження в Ко ``` -Це зберігає базовий промпт малим, водночас усе ще даючи змогу цілеспрямовано використовувати skills. +Це зберігає базовий промпт малим, водночас дозволяючи цілеспрямоване використання Skills. Бюджет списку Skills належить підсистемі Skills: - Глобальне типове значення: `skills.limits.maxSkillsPromptChars` -- Перевизначення для окремого агента: `agents.list[].skillsLimits.maxSkillsPromptChars` +- Перевизначення для агента: `agents.list[].skillsLimits.maxSkillsPromptChars` -Загальні обмежені витяги середовища виконання використовують іншу поверхню: +Узагальнені обмежені витяги під час виконання використовують іншу поверхню: - `agents.defaults.contextLimits.*` - `agents.list[].contextLimits.*` -Такий поділ зберігає окреме керування розміром Skills і розміром читання/впровадження під час виконання, як-от -`memory_get`, живі результати інструментів і оновлення AGENTS.md після Compaction. +Такий поділ зберігає розмір Skills окремо від розмірів читання/впровадження під час виконання, таких +як `memory_get`, результати live-інструментів і оновлення AGENTS.md після Compaction. -## Документація +## Documentation -Коли доступно, системний промпт містить розділ **Документація**, який указує на -локальний каталог документації OpenClaw (або `docs/` у робочому просторі репозиторію, або документацію у вбудованому npm +Коли доступно, системний промпт містить секцію **Documentation**, яка вказує на +локальний каталог документації OpenClaw (або `docs/` у робочому просторі репозиторію, або документацію з вбудованого npm package), а також згадує публічне дзеркало, вихідний репозиторій, спільноту Discord і ClawHub ([https://clawhub.ai](https://clawhub.ai)) для пошуку Skills. Промпт інструктує модель спочатку звертатися до локальної документації -щодо поведінки OpenClaw, команд, конфігурації чи архітектури, а також -самостійно запускати `openclaw status`, коли це можливо (звертаючись до користувача лише тоді, коли доступу немає). +щодо поведінки OpenClaw, команд, конфігурації чи архітектури, а також самостійно запускати +`openclaw status`, коли це можливо (звертаючись до користувача лише тоді, коли вона не має доступу). diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md index b763506f1..39fb18768 100644 --- a/docs/uk/gateway/configuration-reference.md +++ b/docs/uk/gateway/configuration-reference.md @@ -1,43 +1,43 @@ --- read_when: - Вам потрібні точні семантики полів конфігурації або значення за замовчуванням - - Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента -summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем -title: Довідник з конфігурації + - Ви перевіряєте блоки конфігурації каналів, моделей, Gateway або інструментів +summary: Довідник із конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем +title: Довідник із конфігурації x-i18n: - generated_at: "2026-04-15T18:07:35Z" + generated_at: "2026-04-18T03:32:03Z" model: gpt-5.4 provider: openai - source_hash: 2bdb0f3e56e4a4d767fb4d6150526ae9b3926ef5b213b458001f41d02762436d + source_hash: 4b504c9c6b47d7a327a0acf6934561c9b2606c01cc8ebe5526ccde73033d759f source_path: gateway/configuration-reference.md workflow: 15 --- -# Довідник з конфігурації +# Довідник із конфігурації -Основний довідник з конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration). +Основний довідник із конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration). -Ця сторінка охоплює основні поверхні конфігурації OpenClaw і містить посилання назовні, коли підсистема має власний поглиблений довідник. Вона **не** намагається вбудувати на одну сторінку кожен каталог команд, що належить каналу/Plugin, або кожен глибокий параметр пам’яті/QMD. +Ця сторінка охоплює основні поверхні конфігурації OpenClaw і надає посилання назовні, коли підсистема має власний докладніший довідник. Вона **не** намагається вбудувати на одну сторінку кожен каталог команд, що належить каналу/Plugin, або кожен глибокий параметр пам’яті/QMD. Джерело істини в коді: -- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими bundled/plugin/channel, коли вони доступні -- `config.schema.lookup` повертає один вузол схеми з областю дії шляху для інструментів деталізованого перегляду -- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють хеш базового рівня документації конфігурації відносно поточної поверхні схеми +- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, із вбудованими метаданими plugin/каналів, об’єднаними за наявності +- `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` -- [Слеш-команди](/uk/tools/slash-commands) для поточного каталогу вбудованих + bundled команд -- сторінки відповідних каналів/Plugin для поверхонь команд, специфічних для каналів +- [Довідник із конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації Dreaming у `plugins.entries.memory-core.config.dreaming` +- [Slash Commands](/uk/tools/slash-commands) для поточного вбудованого + вбудованого каталогу команд +- сторінки відповідних каналів/plugin для поверхонь команд, специфічних для каналу -Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено. +Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано. --- ## Канали -Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`). +Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не встановлено `enabled: false`). ### Доступ до DM і груп @@ -45,26 +45,26 @@ x-i18n: | Політика DM | Поведінка | | ------------------- | -------------------------------------------------------------- | -| `pairing` (типово) | Невідомі відправники отримують одноразовий код pairing; власник має схвалити | -| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів paired) | +| `pairing` (типово) | Невідомі відправники отримують одноразовий код прив’язки; власник має схвалити | +| `allowlist` | Лише відправники з `allowFrom` (або сховища дозволів прив’язки) | | `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | | `disabled` | Ігнорувати всі вхідні DM | -| Політика групи | Поведінка | +| Політика груп | Поведінка | | --------------------- | ----------------------------------------------------- | -| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist | -| `open` | Обійти allowlist груп (gating за згадками все ще застосовується) | +| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволів | +| `open` | Обійти списки дозволів груп (обмеження за згадками все одно застосовується) | | `disabled` | Блокувати всі повідомлення груп/кімнат | -`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` постачальника не встановлено. -Коди pairing закінчують дію через 1 годину. Кількість очікуваних запитів pairing DM обмежена **3 на канал**. -Якщо блок постачальника повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. +`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` провайдера не встановлено. +Коди прив’язки спливають через 1 годину. Кількість очікувальних запитів на прив’язку DM обмежена **3 на канал**. +Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика групи під час виконання повертається до `allowlist` (fail-closed) з попередженням під час запуску. -### Перевизначення моделей для каналів +### Перевизначення моделі для каналу -Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Прив’язка каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, установленого через `/model`). +Використовуйте `channels.modelByChannel`, щоб прив’язати конкретні ID каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, установленого через `/model`). ```json5 { @@ -87,7 +87,7 @@ x-i18n: ### Значення каналів за замовчуванням і Heartbeat -Використовуйте `channels.defaults` для спільної політики груп і поведінки Heartbeat у різних постачальниках: +Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat у різних провайдерів: ```json5 { @@ -105,15 +105,15 @@ x-i18n: } ``` -- `channels.defaults.groupPolicy`: резервна політика групи, коли `groupPolicy` на рівні постачальника не встановлено. -- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/тредів/історії), `allowlist` (включати контекст лише від відправників з allowlist), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. +- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не встановлено. +- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/потоків/історії), `allowlist` (включати контекст лише від відправників зі списку дозволів), `allowlist_quote` (те саме, що й allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels..contextVisibility`. - `channels.defaults.heartbeat.showOk`: включати стани справних каналів у вивід Heartbeat. -- `channels.defaults.heartbeat.showAlerts`: включати деградовані стани/стани помилок у вивід Heartbeat. +- `channels.defaults.heartbeat.showAlerts`: включати стани деградації/помилок у вивід Heartbeat. - `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора. ### WhatsApp -WhatsApp працює через web-канал Gateway (Baileys Web). Він запускається автоматично, коли існує прив’язана сесія. +WhatsApp працює через web-канал gateway (Baileys Web). Він запускається автоматично, коли існує пов’язана сесія. ```json5 { @@ -124,7 +124,7 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з textChunkLimit: 4000, chunkMode: "length", // length | newline mediaMaxMb: 50, - sendReadReceipts: true, // blue ticks (false in self-chat mode) + sendReadReceipts: true, // сині галочки (false у режимі чату із самим собою) groups: { "*": { requireMention: true }, }, @@ -164,10 +164,10 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з } ``` -- Вихідні команди типово використовують обліковий запис `default`, якщо він присутній; інакше — перший налаштований ID облікового запису (відсортований). -- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. -- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується `openclaw doctor` до `whatsapp/default`. -- Перевизначення для кожного облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Вихідні команди типово використовують обліковий запис `default`, якщо він є; інакше — перший налаштований ID облікового запису (відсортовано). +- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. +- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`. +- Перевизначення для окремого облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -202,7 +202,7 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, - streaming: "partial", // off | partial | block | progress (default: off; opt in explicitly to avoid preview-edit rate limits) + streaming: "partial", // off | partial | block | progress (типово: off; явно ввімкніть, щоб уникнути обмежень частоти для редагування попереднього перегляду) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, @@ -226,11 +226,11 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з ``` - Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису. -- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. -- У конфігураціях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо це відсутнє або недійсне. -- `configWrites: false` блокує ініційовані через Telegram записи конфігурації (міграції ID супергруп, `/config set|unset`). -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- Попередній перегляд потокового виводу Telegram використовує `sendMessage` + `editMessageText` (працює в приватних і групових чатах). +- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. +- У конфігураціях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього немає або значення недійсне. +- `configWrites: false` блокує ініційовані з Telegram записи конфігурації (міграції ID супергруп, `/config set|unset`). +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів є спільною в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- Попередній перегляд потоків Telegram використовує `sendMessage` + `editMessageText` (працює в особистих і групових чатах). - Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry). ### Discord @@ -286,7 +286,7 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з historyLimit: 20, textChunkLimit: 2000, chunkMode: "length", // length | newline - streaming: "off", // off | partial | block | progress (progress maps to partial on Discord) + streaming: "off", // off | partial | block | progress (progress відображається як partial у Discord) maxLinesPerMessage: 17, ui: { components: { @@ -297,7 +297,7 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з enabled: true, idleHours: 24, maxAgeHours: 0, - spawnSubagentSessions: false, // opt-in for sessions_spawn({ thread: true }) + spawnSubagentSessions: false, // опціонально для sessions_spawn({ thread: true }) }, voice: { enabled: true, @@ -334,35 +334,35 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з ``` - Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для типового облікового запису. -- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. -- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. -- Використовуйте `user:` (DM) або `channel:` (канал guild) як цілі доставки; прості числові ID відхиляються. -- Slug guild має нижній регістр, а пробіли замінюються на `-`; ключі каналів використовують slug-ім’я (без `#`). Надавайте перевагу ID guild. +- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. +- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. +- Використовуйте `user:` (DM) або `channel:` (канал guild) для цілей доставки; окремі числові ID відхиляються. +- Slug-и guild мають нижній регістр, а пробіли замінюються на `-`; ключі каналів використовують назву у форматі slug (без `#`). Надавайте перевагу ID guild. - Повідомлення, створені ботом, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). - `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналу) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here). -- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення, навіть якщо вони коротші за 2000 символів. -- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до тредів Discord: - - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) +- `maxLinesPerMessage` (типово 17) розбиває довгі за висотою повідомлення, навіть якщо вони коротші за 2000 символів. +- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до потоків Discord: + - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає) - `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає) - - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки тредів `sessions_spawn({ thread: true })` -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і тредів (використовуйте id каналу/треду в `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2. -- `channels.discord.voice` вмикає розмови у голосових каналах Discord і необов’язкові перевизначення auto-join + TTS. + - `spawnSubagentSessions`: опціональний перемикач для автоматичного створення/прив’язки потоку `sessions_spawn({ thread: true })` +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і потоків (використовуйте id каналу/потоку в `match.peer.id`). Семантика полів є спільною в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів Discord components v2. +- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + TTS. - `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (типово `true` і `24`). -- OpenClaw також додатково намагається відновити отримання голосу, виходячи та повторно приєднуючись до голосової сесії після повторних збоїв розшифрування. -- `channels.discord.streaming` — це канонічний ключ режиму потокового виводу. Застарілі значення `streamMode` і булеві значення `streaming` мігруються автоматично. -- `channels.discord.autoPresence` зіставляє доступність runtime зі статусом присутності бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. -- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваним ім’ям/тегом (режим сумісності break-glass). -- `channels.discord.execApprovals`: доставка схвалень exec у стилі Discord і авторизація користувачів, які можуть схвалювати. - - `enabled`: `true`, `false` або `"auto"` (типово). В auto mode схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовується резервний варіант `commands.ownerAllowFrom`. - - `agentFilter`: необов’язковий allowlist ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів. - - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (типово) надсилає в DM схвалювачів, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені схвалювачі. - - `cleanupAfterResolve`: коли `true`, видаляє DM схвалень після схвалення, відхилення або тайм-ауту. +- OpenClaw додатково намагається відновити прийом голосу, виходячи з голосової сесії та повторно підключаючись до неї після повторних збоїв дешифрування. +- `channels.discord.streaming` — канонічний ключ режиму потоку. Застарілі значення `streamMode` і булеві значення `streaming` мігруються автоматично. +- `channels.discord.autoPresence` відображає доступність runtime у присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. +- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним ім’ям/тегом (режим сумісності break-glass). +- `channels.discord.execApprovals`: нативна для Discord доставка погоджень exec і авторизація тих, хто погоджує. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі погодження exec активуються, коли тих, хто погоджує, можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Discord, яким дозволено погоджувати exec-запити. Якщо не вказано, використовується `commands.ownerAllowFrom`. + - `agentFilter`: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати погодження для всіх агентів. + - `sessionFilter`: необов’язкові шаблони ключів сесії (підрядок або regex). + - `target`: куди надсилати запити на погодження. `"dm"` (типово) надсилає в DM тих, хто погоджує, `"channel"` — у вихідний канал, `"both"` — в обидва. Коли target містить `"channel"`, кнопки можуть використовувати лише визначені учасники, які погоджують. + - `cleanupAfterResolve`: коли `true`, видаляє DM-повідомлення про погодження після погодження, відхилення або тайм-ауту. -**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (із `guilds..users` для всіх повідомлень). +**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (від `guilds..users` для всіх повідомлень). ### Google Chat @@ -393,11 +393,11 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з } ``` -- JSON облікового запису сервісу: inline (`serviceAccount`) або через файл (`serviceAccountFile`). -- Також підтримується SecretRef облікового запису сервісу (`serviceAccountRef`). -- Резервні варіанти з env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Використовуйте `spaces/` або `users/` як цілі доставки. -- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваним email principal (режим сумісності break-glass). +- JSON service account: вбудований (`serviceAccount`) або з файлу (`serviceAccountFile`). +- Також підтримується SecretRef для service account (`serviceAccountRef`). +- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- Використовуйте `spaces/` або `users/` для цілей доставки. +- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним email principal (режим сумісності break-glass). ### Slack @@ -464,35 +464,35 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з } ``` -- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного варіанта env типового облікового запису). -- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для кожного облікового запису). +- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного варіанта змінних середовища типового облікового запису). +- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для окремого облікового запису). - `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті рядки або об’єкти SecretRef. -- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового даного, такі як - `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, в HTTP mode, +- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового запису, такі як + `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у HTTP mode, `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис - налаштований через SecretRef, але поточний шлях команди/runtime не зміг + налаштовано через SecretRef, але поточний шлях команди/runtime не зміг визначити значення секрету. -- `configWrites: false` блокує записи конфігурації, ініційовані через Slack. -- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. -- `channels.slack.streaming.mode` — канонічний ключ режиму потокового виводу Slack. `channels.slack.streaming.nativeTransport` керує нативним транспортом потокового виводу Slack. Застарілі значення `streamMode`, булеві значення `streaming` і `nativeStreaming` мігруються автоматично. -- Використовуйте `user:` (DM) або `channel:` як цілі доставки. +- `configWrites: false` блокує записи конфігурації, ініційовані зі Slack. +- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. +- `channels.slack.streaming.mode` — канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним транспортом потоків Slack. Застарілі значення `streamMode`, булеві значення `streaming` і `nativeStreaming` мігруються автоматично. +- Використовуйте `user:` (DM) або `channel:` для цілей доставки. **Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). -**Ізоляція сесій тредів:** `thread.historyScope` є окремим для треду (типово) або спільним для каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові треди. +**Ізоляція сесії потоку:** `thread.historyScope` є для окремого потоку (типово) або спільним для каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові потоки. -- Нативний потоковий вивід Slack плюс статус треду Slack у стилі помічника "is typing..." потребують цільового треду відповіді. DM верхнього рівня типово залишаються поза тредом, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду у стилі треду. +- Нативний потік Slack разом зі статусом потоку Slack у стилі асистента "is typing..." вимагають цілі відповіді в потоці. DM верхнього рівня типово залишаються поза потоком, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі потоку. - `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`. -- `channels.slack.execApprovals`: доставка схвалень exec у стилі Slack і авторизація користувачів, які можуть схвалювати. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). +- `channels.slack.execApprovals`: нативна для Slack доставка погоджень exec і авторизація тих, хто погоджує. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). -| Група дій | Типово увімкнено | Примітки | -| ----------- | ---------------- | ------------------------ | -| reactions | увімкнено | Реакції + список реакцій | -| messages | увімкнено | Читання/надсилання/редагування/видалення | -| pins | увімкнено | Закріпити/відкріпити/список | -| memberInfo | увімкнено | Інформація про учасника | -| emojiList | увімкнено | Список користувацьких emoji | +| Група дій | Типово | Примітки | +| ------------ | -------- | ------------------------- | +| reactions | увімкнено | Реакції + список реакцій | +| messages | увімкнено | Читання/надсилання/редагування/видалення | +| pins | увімкнено | Закріплення/відкріплення/список | +| memberInfo | увімкнено | Інформація про учасника | +| emojiList | увімкнено | Список користувацьких emoji | ### Mattermost @@ -526,23 +526,23 @@ Mattermost постачається як Plugin: `openclaw plugins install @open } ``` -Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера). +Режими чату: `oncall` (відповідати на згадку @, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера). -Коли нативні команди Mattermost увімкнено: +Коли нативні команди Mattermost увімкнені: -- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою. +- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повним URL. - `commands.callbackUrl` має вказувати на endpoint Gateway OpenClaw і бути доступним із сервера Mattermost. -- Нативні callback слеш-команд автентифікуються токенами для кожної команди, які - Mattermost повертає під час реєстрації слеш-команд. Якщо реєстрація не вдається або жодна - команда не активована, OpenClaw відхиляє callback із повідомленням +- Нативні зворотні виклики slash-команд автентифікуються токенами для кожної команди, які + Mattermost повертає під час реєстрації slash-команди. Якщо реєстрація не вдається або жодну + команду не активовано, OpenClaw відхиляє зворотні виклики з повідомленням `Unauthorized: invalid command token.` -- Для приватних/tailnet/internal хостів callback Mattermost може вимагати, щоб - `ServiceSettings.AllowedUntrustedInternalConnections` включав хост/домен callback. - Використовуйте значення хоста/домену, а не повні URL-адреси. -- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані через Mattermost. +- Для приватних/tailnet/internal хостів зворотних викликів Mattermost може вимагати, щоб + `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен зворотного виклику. + Використовуйте значення хоста/домену, а не повні URL. +- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з Mattermost. - `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах. -- `channels.mattermost.groups..requireMention`: перевизначення gating за згадками для кожного каналу (`"*"` для типового). -- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. +- `channels.mattermost.groups..requireMention`: перевизначення обмеження за згадкою для окремого каналу (`"*"` для типового значення). +- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. ### Signal @@ -565,13 +565,13 @@ Mattermost постачається як Plugin: `openclaw plugins install @open **Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). -- `channels.signal.account`: закріпити запуск каналу за конкретною ідентичністю облікового запису Signal. -- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані через Signal. -- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. +- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal. +- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з Signal. +- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. ### BlueBubbles -BlueBubbles — це рекомендований шлях для iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`). +BlueBubbles — рекомендований шлях для iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`). ```json5 { @@ -586,10 +586,10 @@ BlueBubbles — це рекомендований шлях для iMessage (на } ``` -- Основні шляхи ключів, що тут охоплюються: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. +- Основні шляхи ключів, які тут охоплюються: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. - Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних ACP-сесій. Використовуйте BlueBubbles handle або рядок цілі (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles). +- Повну конфігурацію каналу BlueBubbles описано в [BlueBubbles](/uk/channels/bluebubbles). ### iMessage @@ -617,14 +617,14 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а } ``` -- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. +- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. -- Потрібен Full Disk Access до бази даних Messages. +- Потрібен Full Disk Access до БД Messages. - Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів. - `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. - `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`). -- SCP використовує строгу перевірку ключа хоста, тому переконайтеся, що ключ хоста relay уже є в `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані через iMessage. +- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ хоста relay вже існує в `~/.ssh/known_hosts`. +- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з iMessage. - Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних ACP-сесій. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). @@ -670,19 +670,19 @@ Matrix працює через extension і налаштовується в `cha - Автентифікація за токеном використовує `accessToken`; автентифікація за паролем використовує `userId` + `password`. - `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S)-proxy. Іменовані облікові записи можуть перевизначити це через `channels.matrix.accounts..proxy`. -- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і цей мережевий opt-in є незалежними механізмами керування. +- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і цей opt-in для мережі є незалежними елементами керування. - `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами. -- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. -- `channels.matrix.execApprovals`: доставка схвалень exec у стилі Matrix і авторизація користувачів, які можуть схвалювати. - - `enabled`: `true`, `false` або `"auto"` (типово). В auto mode схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec. - - `agentFilter`: необов’язковий allowlist ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів. - - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`. - - Перевизначення для кожного облікового запису: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сесії: `per-user` (типово) спільно використовує за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. -- Перевірки статусу Matrix і живі пошуки в каталозі використовують ту саму політику proxy, що й трафік runtime. -- Повну конфігурацію Matrix, правила визначення цілей і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). +- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` із `autoJoinAllowlist` або `autoJoin: "always"`. +- `channels.matrix.execApprovals`: нативна для Matrix доставка погоджень exec і авторизація тих, хто погоджує. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі погодження exec активуються, коли тих, хто погоджує, можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено погоджувати exec-запити. + - `agentFilter`: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати погодження для всіх агентів. + - `sessionFilter`: необов’язкові шаблони ключів сесії (підрядок або regex). + - `target`: куди надсилати запити на погодження. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`. + - Перевизначення для окремого облікового запису: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` керує тим, як DM у Matrix групуються в сесії: `per-user` (типово) спільно використовує за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. +- Перевірки стану Matrix і пошук live directory використовують ту саму політику proxy, що й runtime-трафік. +- Повну конфігурацію Matrix, правила націлювання та приклади налаштування описано в [Matrix](/uk/channels/matrix). ### Microsoft Teams @@ -701,8 +701,8 @@ Microsoft Teams працює через extension і налаштовуєтьс } ``` -- Основні шляхи ключів, що тут охоплюються: `channels.msteams`, `channels.msteams.configWrites`. -- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для кожної команди/каналу) задокументовано в [Microsoft Teams](/uk/channels/msteams). +- Основні шляхи ключів, які тут охоплюються: `channels.msteams`, `channels.msteams.configWrites`. +- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для окремих team/channel) описано в [Microsoft Teams](/uk/channels/msteams). ### IRC @@ -727,13 +727,13 @@ IRC працює через extension і налаштовується в `channe } ``` -- Основні шляхи ключів, що тут охоплюються: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису. -- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/gating за згадками) задокументовано в [IRC](/uk/channels/irc). +- Основні шляхи ключів, які тут охоплюються: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає ID налаштованого облікового запису. +- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/обмеження за згадками) описано в [IRC](/uk/channels/irc). -### Багатообліковість (усі канали) +### Кілька облікових записів (усі канали) -Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`): +Запускайте кілька облікових записів для кожного каналу (кожен зі своїм `accountId`): ```json5 { @@ -754,28 +754,28 @@ IRC працює через extension і налаштовується в `channe } ``` -- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація). -- Токени env застосовуються лише до облікового запису **default**. -- Базові налаштування каналу застосовуються до всіх облікових записів, якщо не перевизначені для окремого облікового запису. +- `default` використовується, коли `accountId` не вказано (CLI + маршрутизація). +- Токени середовища застосовуються лише до облікового запису **default**. +- Базові налаштування каналу застосовуються до всіх облікових записів, якщо вони не перевизначені для окремого облікового запису. - Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента. -- Якщо ви додаєте не-типовий обліковий запис через `openclaw channels add` (або через онбординг каналу), залишаючись у конфігурації каналу верхнього рівня для одного облікового запису, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис і далі працював. Для більшості каналів вони переміщуються в `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. -- Наявні прив’язки лише каналу (без `accountId`) і далі відповідають типовому обліковому запису; прив’язки з областю облікового запису залишаються необов’язковими. +- Якщо ви додаєте не-типовий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись у конфігурації каналу верхнього рівня для одного облікового запису, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у карту облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переносять їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Наявні прив’язки лише для каналу (без `accountId`) і далі відповідають типовому обліковому запису; прив’язки з областю дії облікового запису залишаються необов’язковими. - `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. ### Інші extension-канали -Багато extension-каналів налаштовуються як `channels.` і задокументовані на їхніх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). -Див. повний індекс каналів: [Канали](/uk/channels). +Багато extension-каналів налаштовуються як `channels.` і описані на окремих сторінках своїх каналів (наприклад, Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). +Див. повний покажчик каналів: [Канали](/uk/channels). -### Gating згадками в групових чатах +### Обмеження за згадками в групових чатах -Для групових повідомлень типово **потрібна згадка** (згадка в метаданих або безпечні regex-патерни). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. +Для повідомлень у групах типово **потрібна згадка** (метадані згадки або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. **Типи згадок:** -- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp. -- **Текстові патерни**: безпечні regex-патерни в `agents.list[].groupChat.mentionPatterns`. Недійсні патерни та небезпечне вкладене повторення ігноруються. -- Gating згадками застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один патерн). +- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі самочату WhatsApp. +- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Неприпустимі шаблони й небезпечне вкладене повторення ігноруються. +- Обмеження за згадками застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон). ```json5 { @@ -805,13 +805,13 @@ IRC працює через extension і налаштовується в `channe } ``` -Порядок визначення: перевизначення для конкретного DM → типове значення постачальника → без обмеження (зберігається все). +Визначення: перевизначення для окремого DM → типове значення провайдера → без обмеження (зберігається все). -Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. +Підтримуються: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. -#### Режим self-chat +#### Режим самочату -Додайте власний номер у `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові патерни): +Додайте власний номер до `allowFrom`, щоб увімкнути режим самочату (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): ```json5 { @@ -859,32 +859,32 @@ IRC працює через extension і налаштовується в `channe } ``` - + -- Цей блок налаштовує поверхні команд. Для поточного каталогу вбудованих + bundled команд див. [Слеш-команди](/uk/tools/slash-commands). -- Ця сторінка — це **довідник за ключами конфігурації**, а не повний каталог команд. Команди, що належать каналу/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовані на сторінках відповідних каналів/Plugin, а також у [Слеш-командах](/uk/tools/slash-commands). +- Цей блок налаштовує поверхні команд. Для поточного каталогу вбудованих + вбудованих команд див. [Slash Commands](/uk/tools/slash-commands). +- Ця сторінка — **довідник за ключами конфігурації**, а не повний каталог команд. Команди, що належать каналам/plugin, такі як QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, описано на сторінках відповідних каналів/plugin, а також у [Slash Commands](/uk/tools/slash-commands). - Текстові команди мають бути **окремими** повідомленнями з початковим `/`. -- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим. -- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим. -- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди. -- Перевизначайте реєстрацію нативних команд Skills для каналу через `channels..commands.nativeSkills`. +- `native: "auto"` вмикає нативні команди для Discord/Telegram, але залишає Slack вимкненим. +- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, але залишає Slack вимкненим. +- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди. +- Перевизначайте реєстрацію нативних команд Skills для окремого каналу за допомогою `channels..commands.nativeSkills`. - `channels.telegram.customCommands` додає додаткові записи меню бота Telegram. -- `bash: true` вмикає `! ` для host shell. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`. -- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним для звичайних операторських клієнтів з областю запису. -- `mcp: true` вмикає `/mcp` для конфігурації MCP-серверів, якими керує OpenClaw, у `mcp.servers`. -- `plugins: true` вмикає `/plugins` для виявлення Plugin, встановлення та керування ввімкненням/вимкненням. -- `channels..configWrites` керує мутаціями конфігурації для кожного каналу (типово: true). -- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також керує записами, що спрямовані на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`). +- `bash: true` вмикає `! ` для shell хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`. +- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також вимагають `operator.admin`; режим лише для читання `/config show` залишається доступним для звичайних клієнтів оператора з правом запису. +- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, яким керує OpenClaw, у `mcp.servers`. +- `plugins: true` вмикає `/plugins` для виявлення Plugin, встановлення та елементів керування ввімкненням/вимкненням. +- `channels..configWrites` керує мутаціями конфігурації для окремого каналу (типово: true). +- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також керує записами, націленими на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). - `restart: false` вимикає `/restart` і дії інструмента перезапуску gateway. Типове значення: `true`. -- `ownerAllowFrom` — це явний allowlist власника для команд/інструментів лише для власника. Він відокремлений від `allowFrom`. -- `ownerDisplay: "hash"` хешує ID власника в system prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням. -- `allowFrom` є окремим для кожного постачальника. Якщо його встановлено, це **єдине** джерело авторизації (allowlist/pairing каналу та `useAccessGroups` ігноруються). -- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено. -- Карта документації команд: - - каталог вбудованих + bundled: [Слеш-команди](/uk/tools/slash-commands) +- `ownerAllowFrom` — це явний список дозволів власника для команд/інструментів, доступних лише власнику. Він відокремлений від `allowFrom`. +- `ownerDisplay: "hash"` хешує ID власника в системному запиті. Установіть `ownerDisplaySecret`, щоб керувати хешуванням. +- `allowFrom` є окремим для кожного provider. Якщо встановлено, це **єдине** джерело авторизації (списки дозволів/прив’язка каналу та `useAccessGroups` ігноруються). +- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не встановлено. +- Відповідність документації команд: + - каталог вбудованих + вбудованих команд: [Slash Commands](/uk/tools/slash-commands) - поверхні команд, специфічні для каналів: [Канали](/uk/channels) - команди QQ Bot: [QQ Bot](/uk/channels/qqbot) - - команди pairing: [Pairing](/uk/channels/pairing) + - команди прив’язки: [Pairing](/uk/channels/pairing) - команда картки LINE: [LINE](/uk/channels/line) - memory dreaming: [Dreaming](/uk/concepts/dreaming) @@ -892,7 +892,7 @@ IRC працює через extension і налаштовується в `channe --- -## Типові значення агента +## Типові значення агентів ### `agents.defaults.workspace` @@ -906,7 +906,7 @@ IRC працює через extension і налаштовується в `channe ### `agents.defaults.repoRoot` -Необов’язковий корінь репозиторію, який показується в рядку Runtime system prompt. Якщо не встановлено, OpenClaw автоматично визначає його, піднімаючись угору від workspace. +Необов’язковий корінь репозиторію, який відображається в рядку Runtime системного запиту. Якщо не встановлено, OpenClaw визначає його автоматично, піднімаючись угору від workspace. ```json5 { @@ -916,7 +916,7 @@ IRC працює через extension і налаштовується в `channe ### `agents.defaults.skills` -Необов’язковий типовий allowlist Skills для агентів, які не задають +Необов’язковий типовий список дозволів Skills для агентів, які не задають `agents.list[].skills`. ```json5 @@ -932,9 +932,9 @@ IRC працює через extension і налаштовується в `channe } ``` -- Не вказуйте `agents.defaults.skills`, щоб Skills типово були без обмежень. +- Не вказуйте `agents.defaults.skills`, щоб типово дозволити необмежені Skills. - Не вказуйте `agents.list[].skills`, щоб успадкувати типові значення. -- Установіть `agents.list[].skills: []`, щоб не було Skills. +- Установіть `agents.list[].skills: []`, щоб не використовувати Skills. - Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він не об’єднується з типовими значеннями. @@ -950,9 +950,9 @@ IRC працює через extension і налаштовується в `channe ### `agents.defaults.contextInjection` -Керує тим, коли bootstrap-файли workspace вбудовуються в system prompt. Типове значення: `"always"`. +Керує тим, коли bootstrap-файли workspace вбудовуються в системний запит. Типове значення: `"always"`. -- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді помічника) пропускають повторне вбудовування bootstrap workspace, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст. +- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне вбудовування bootstrap workspace, зменшуючи розмір запиту. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст. ```json5 { @@ -962,21 +962,21 @@ IRC працює через extension і налаштовується в `channe ### `agents.defaults.bootstrapMaxChars` -Максимальна кількість символів у кожному bootstrap-файлі workspace до обрізання. Типове значення: `20000`. +Максимальна кількість символів для одного bootstrap-файлу workspace до обрізання. Типове значення: `12000`. ```json5 { - agents: { defaults: { bootstrapMaxChars: 20000 } }, + agents: { defaults: { bootstrapMaxChars: 12000 } }, } ``` ### `agents.defaults.bootstrapTotalMaxChars` -Максимальна загальна кількість символів, що вбудовуються в усі bootstrap-файли workspace. Типове значення: `150000`. +Максимальна загальна кількість символів, що вбудовуються в усі bootstrap-файли workspace. Типове значення: `60000`. ```json5 { - agents: { defaults: { bootstrapTotalMaxChars: 150000 } }, + agents: { defaults: { bootstrapTotalMaxChars: 60000 } }, } ``` @@ -985,7 +985,7 @@ IRC працює через extension і налаштовується в `channe Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається. Типове значення: `"once"`. -- `"off"`: ніколи не вбудовувати текст попередження в system prompt. +- `"off"`: ніколи не вбудовувати текст попередження в системний запит. - `"once"`: вбудовувати попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано). - `"always"`: вбудовувати попередження під час кожного запуску, коли є обрізання. @@ -995,26 +995,26 @@ IRC працює через extension і налаштовується в `channe } ``` -### Карта володіння бюджетом контексту +### Карта відповідальності за бюджет контексту -OpenClaw має кілька великих бюджетів prompt/контексту, і вони -навмисно розділені за підсистемами, а не проходять через один загальний -параметр. +OpenClaw має кілька великих бюджетів запиту/контексту, і вони +навмисно розділені за підсистемами замість того, щоб проходити через один +загальний параметр. - `agents.defaults.bootstrapMaxChars` / `agents.defaults.bootstrapTotalMaxChars`: звичайне вбудовування bootstrap workspace. - `agents.defaults.startupContext.*`: - одноразовий стартовий прелюд для `/new` і `/reset`, зокрема нещодавні щоденні - файли `memory/*.md`. + одноразова стартова преамбула для `/new` і `/reset`, включно з недавніми + файлами `memory/*.md` за день. - `skills.limits.*`: - компактний список Skills, вбудований у system prompt. + компактний список Skills, вбудований у системний запит. - `agents.defaults.contextLimits.*`: - обмежені runtime-уривки та вбудовані блоки, що належать runtime. + обмежені фрагменти runtime і вбудовані блоки, що належать runtime. - `memory.qmd.limits.*`: - розмір фрагментів індексованого пошуку пам’яті та їх вбудовування. + розмір фрагментів індексованого пошуку в пам’яті та вбудовування. -Використовуйте відповідне перевизначення для агента лише тоді, коли одному агенту потрібен інший +Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший бюджет: - `agents.list[].skillsLimits.maxSkillsPromptChars` @@ -1022,7 +1022,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `agents.defaults.startupContext` -Керує стартовим прелюдом першого ходу, що вбудовується під час простих запусків `/new` і `/reset`. +Керує стартовою преамбулою першого ходу, яка вбудовується в порожні запуски `/new` і `/reset`. ```json5 { @@ -1043,7 +1043,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `agents.defaults.contextLimits` -Спільні типові значення для обмежених поверхонь runtime-контексту. +Спільні типові значення для обмежених поверхонь контексту runtime. ```json5 { @@ -1060,17 +1060,17 @@ OpenClaw має кілька великих бюджетів prompt/контек } ``` -- `memoryGetMaxChars`: типове обмеження уривка `memory_get` до того, як буде додано - метадані обрізання та повідомлення про продовження. +- `memoryGetMaxChars`: типове обмеження фрагмента `memory_get` до додавання + метаданих обрізання та повідомлення про продовження. - `memoryGetDefaultLines`: типове вікно рядків `memory_get`, коли `lines` - пропущено. -- `toolResultMaxChars`: активне обмеження результату інструмента, що використовується для збережених результатів і + не вказано. +- `toolResultMaxChars`: обмеження результату live-інструмента, яке використовується для збережених результатів і відновлення після переповнення. -- `postCompactionMaxChars`: обмеження уривка AGENTS.md, що використовується під час оновлювального вбудовування після Compaction. +- `postCompactionMaxChars`: обмеження фрагмента AGENTS.md, яке використовується під час оновлення вбудовування після Compaction. #### `agents.list[].contextLimits` -Перевизначення для агента для спільних параметрів `contextLimits`. Пропущені поля успадковуються +Перевизначення для окремого агента для спільних параметрів `contextLimits`. Невказані поля успадковуються з `agents.defaults.contextLimits`. ```json5 @@ -1097,7 +1097,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `skills.limits.maxSkillsPromptChars` -Глобальне обмеження для компактного списку Skills, вбудованого в system prompt. Це +Глобальне обмеження для компактного списку Skills, вбудованого в системний запит. Це не впливає на читання файлів `SKILL.md` на вимогу. ```json5 @@ -1112,7 +1112,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `agents.list[].skillsLimits.maxSkillsPromptChars` -Перевизначення бюджету prompt для Skills для конкретного агента. +Перевизначення для окремого агента для бюджету запиту Skills. ```json5 { @@ -1131,10 +1131,10 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.imageMaxDimensionPx` -Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень transcript/tool перед викликами постачальника. +Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень transcript/tool перед викликами provider. Типове значення: `1200`. -Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload запиту під час запусків із великою кількістю скриншотів. +Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю знімків екрана. Вищі значення зберігають більше візуальних деталей. ```json5 @@ -1145,7 +1145,7 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.userTimezone` -Часовий пояс для контексту system prompt (не для часових позначок повідомлень). Якщо не задано, використовується часовий пояс хоста. +Часовий пояс для контексту системного запиту (не для часових міток повідомлень). Якщо не встановлено, використовується часовий пояс хоста. ```json5 { @@ -1155,7 +1155,7 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.timeFormat` -Формат часу в system prompt. Типове значення: `auto` (параметри ОС). +Формат часу в системному запиті. Типове значення: `auto` (налаштування ОС). ```json5 { @@ -1214,47 +1214,47 @@ OpenClaw має кілька великих бюджетів prompt/контек - `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Форма рядка задає лише основну модель. - - Форма об’єкта задає основну модель плюс впорядковані резервні моделі failover. + - Форма об’єкта задає основну модель плюс впорядковані failover-моделі. - `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується шляхом інструмента `image` як конфігурація його vision-моделі. + - Використовується шляхом інструмента `image` як його конфігурація vision-моделі. - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення. - `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/Plugin, що генерує зображення. + - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/Plugin, що генерує зображення. - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal або `openai/gpt-image-1` для OpenAI Images. - - Якщо ви напряму вибираєте provider/model, також налаштуйте відповідну автентифікацію постачальника/API key (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`). - - Якщо значення пропущене, `image_generate` усе одно може визначити типове значення постачальника з автентифікацією. Спочатку він пробує поточного типового постачальника, а потім — решту зареєстрованих постачальників генерації зображень у порядку provider-id. + - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію provider/API key (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`). + - Якщо не вказано, `image_generate` усе одно може визначити типове значення provider з автентифікацією. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації зображень у порядку provider-id. - `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`. - Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.5+`. - - Якщо значення пропущене, `music_generate` усе одно може визначити типове значення постачальника з автентифікацією. Спочатку він пробує поточного типового постачальника, а потім — решту зареєстрованих постачальників генерації музики в порядку provider-id. - - Якщо ви напряму вибираєте provider/model, також налаштуйте відповідну автентифікацію постачальника/API key. + - Якщо не вказано, `music_generate` усе одно може визначити типове значення provider з автентифікацією. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації музики в порядку provider-id. + - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію provider/API key. - `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-id. - - Якщо ви напряму вибираєте provider/model, також налаштуйте відповідну автентифікацію постачальника/API key. - - Bundled-постачальник генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня постачальника `size`, `aspectRatio`, `resolution`, `audio` і `watermark`. + - Якщо не вказано, `video_generate` усе одно може визначити типове значення provider з автентифікацією. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації відео в порядку provider-id. + - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію provider/API key. + - Вбудований provider генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня provider `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"`. -- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`. -- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропускаєте постачальника, OpenClaw спочатку пробує псевдонім, потім — унікальний збіг налаштованого постачальника для цього точного ID моделі, і лише потім повертається до налаштованого типового постачальника (застаріла сумісна поведінка, тому надавайте перевагу явному `provider/model`). Якщо цей постачальник більше не надає налаштовану типову модель, OpenClaw повертається до першого налаштованого provider/model замість того, щоб показувати застаріле типове значення видаленого постачальника. -- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для постачальника, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`). -- `params`: глобальні типові параметри постачальника, що застосовуються до всіх моделей. Встановлюються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`). -- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), а потім `agents.list[].params` (для відповідного ID агента) перевизначає за ключем. Докладніше див. [Кешування prompt](/uk/reference/prompt-caching). -- `embeddedHarness`: типова політика низькорівневого runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим harness Plugin перехоплювати підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований ID harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід до PI. -- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди add/remove для резервних моделей), зберігають канонічну форму об’єкта та, коли можливо, зберігають наявні списки резервних моделей. + - Якщо не вказано, інструмент PDF використовує як резервний варіант `imageModel`, а потім визначену модель сесії/типову модель. +- `pdfMaxBytesMb`: типове обмеження розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. +- `pdfMaxPages`: типова максимальна кількість сторінок, що враховуються в режимі резервного вилучення інструмента `pdf`. +- `verboseDefault`: типовий рівень докладності для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`. +- `elevatedDefault`: типовий рівень elevated-виводу для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`. +- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4`). Якщо не вказати provider, OpenClaw спочатку пробує alias, потім унікальний збіг exact model id серед налаштованих provider, і лише потім використовує налаштований типовий provider (застаріла сумісна поведінка, тому краще явно вказувати `provider/model`). Якщо цей provider більше не надає налаштовану типову модель, OpenClaw переходить до першого налаштованого provider/model замість показу застарілого типового значення видаленого provider. +- `models`: налаштований каталог моделей і список дозволених значень для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для provider, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`). +- `params`: глобальні типові параметри provider, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`). +- Пріоритет об’єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для окремої моделі), а потім `agents.list[].params` (відповідний agent id) перевизначає за ключем. Докладніше див. у [Prompt Caching](/uk/reference/prompt-caching). +- `embeddedHarness`: типова низькорівнева політика runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб зареєстровані harness Plugin могли захоплювати підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований id harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI. +- Засоби запису конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта та за можливості зберігають наявні списки fallback. - `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно серіалізується). Типове значення: 4. ### `agents.defaults.embeddedHarness` `embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента. -У більшості розгортань варто залишати типове значення `{ runtime: "auto", fallback: "pi" }`. -Використовуйте його, коли довірений Plugin надає нативний harness, наприклад bundled -harness app-server Codex. +Більшість розгортань мають залишати типове значення `{ runtime: "auto", fallback: "pi" }`. +Використовуйте це, коли довірений Plugin надає нативний harness, наприклад вбудований +harness сервера застосунку Codex. ```json5 { @@ -1270,13 +1270,13 @@ harness app-server Codex. } ``` -- `runtime`: `"auto"`, `"pi"` або ID зареєстрованого harness Plugin. Bundled Plugin Codex реєструє `codex`. -- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як сумісний резервний варіант. `"none"` призводить до помилки, якщо вибір harness Plugin відсутній або не підтримується, замість тихого використання PI. -- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний перехід до PI для цього процесу. +- `runtime`: `"auto"`, `"pi"` або id зареєстрованого harness Plugin. Вбудований Plugin Codex реєструє `codex`. +- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як сумісний резервний варіант. `"none"` призводить до помилки за відсутності або непідтримуваності вибраного harness Plugin замість тихого використання PI. +- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний перехід на PI для цього процесу. - Для розгортань лише з Codex установіть `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`. -- Це керує лише вбудованим harness чату. Генерація медіа, vision, PDF, музика, відео й TTS і далі використовують свої налаштування provider/model. +- Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музика, відео і TTS усе одно використовують свої налаштування provider/model. -**Вбудовані скорочення alias** (застосовуються лише коли модель є в `agents.defaults.models`): +**Вбудовані скорочення alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): | Alias | Модель | | ------------------- | -------------------------------------- | @@ -1291,13 +1291,13 @@ harness app-server Codex. Ваші налаштовані alias завжди мають пріоритет над типовими. -Моделі Z.AI GLM-4.x автоматично вмикають режим thinking, якщо ви не встановите `--thinking off` або самі не визначите `agents.defaults.models["zai/"].params.thinking`. -Моделі Z.AI типово вмикають `tool_stream` для потокового виводу викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це. -Для моделей Anthropic Claude 4.6 типовим є thinking `adaptive`, якщо явний рівень thinking не встановлено. +Моделі Z.AI GLM-4.x автоматично вмикають режим thinking, якщо ви не встановите `--thinking off` або самостійно не визначите `agents.defaults.models["zai/"].params.thinking`. +Моделі Z.AI типово вмикають `tool_stream` для потокової передачі викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це. +Для моделей Anthropic Claude 4.6 за замовчуванням використовується `adaptive` thinking, коли явний рівень thinking не встановлено. ### `agents.defaults.cliBackends` -Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API-постачальники дають збій. +Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API provider недоступні. ```json5 { @@ -1327,11 +1327,11 @@ harness app-server Codex. - CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені. - Сесії підтримуються, коли встановлено `sessionArg`. -- Передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів. +- Пряма передача зображень підтримується, коли `imageArg` приймає шляхи до файлів. ### `agents.defaults.systemPromptOverride` -Замінює весь system prompt, зібраний OpenClaw, фіксованим рядком. Установлюється на типовому рівні (`agents.defaults.systemPromptOverride`) або для конкретного агента (`agents.list[].systemPromptOverride`). Значення для агента має пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із prompt. +Замінює весь системний запит, зібраний OpenClaw, фіксованим рядком. Установлюється на типовому рівні (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із запитами. ```json5 { @@ -1372,15 +1372,15 @@ harness app-server Codex. } ``` -- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація через API key) або `1h` (автентифікація через OAuth). Установіть `0m`, щоб вимкнути. -- `includeSystemPromptSection`: коли `false`, опускає розділ Heartbeat із system prompt і пропускає вбудовування `HEARTBEAT.md` у bootstrap-контекст. Типове значення: `true`. -- `suppressToolErrorWarnings`: коли `true`, пригнічує payload попереджень про помилки інструментів під час запусків Heartbeat. -- `timeoutSeconds`: максимальний дозволений час у секундах для ходу агента Heartbeat до його переривання. Якщо не вказано, використовується `agents.defaults.timeoutSeconds`. -- `directPolicy`: політика прямої доставки/доставки в DM. `allow` (типово) дозволяє доставку напряму до цілі. `block` пригнічує пряму доставку до цілі та видає `reason=dm-blocked`. -- `lightContext`: коли `true`, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace. -- `isolatedSession`: коли `true`, кожен запуск Heartbeat виконується в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує вартість токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів. -- Для агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, запуски Heartbeat виконуються **лише для цих агентів**. -- Heartbeat виконує повні ходи агента — коротші інтервали спалюють більше токенів. +- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація API key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути. +- `includeSystemPromptSection`: коли false, прибирає секцію Heartbeat із системного запиту та пропускає вбудовування `HEARTBEAT.md` у bootstrap-контекст. Типове значення: `true`. +- `suppressToolErrorWarnings`: коли true, пригнічує payload попереджень про помилки інструментів під час запусків Heartbeat. +- `timeoutSeconds`: максимальний час у секундах, дозволений для ходу агента Heartbeat перед примусовим завершенням. Залиште невстановленим, щоб використовувати `agents.defaults.timeoutSeconds`. +- `directPolicy`: політика прямої доставки/DM. `allow` (типово) дозволяє доставку до прямої цілі. `block` пригнічує доставку до прямої цілі та створює `reason=dm-blocked`. +- `lightContext`: коли true, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace. +- `isolatedSession`: коли true, кожен запуск Heartbeat виконується в новій сесії без попередньої історії розмов. Та сама схема ізоляції, що й у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів. +- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускаються **лише для цих агентів**. +- Heartbeat запускають повні ходи агентів — коротші інтервали спалюють більше токенів. ### `agents.defaults.compaction` @@ -1410,19 +1410,19 @@ harness app-server Codex. } ``` -- `mode`: `default` або `safeguard` (підсумовування довгих історій частинами). Див. [Compaction](/uk/concepts/compaction). -- `provider`: id зареєстрованого Plugin постачальника Compaction. Якщо вказано, замість вбудованого підсумовування LLM викликається `summarize()` цього постачальника. У разі збою виконується резервний перехід до вбудованого механізму. Установлення постачальника примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). -- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, перш ніж OpenClaw її перерве. Типове значення: `900`. +- `mode`: `default` або `safeguard` (підсумовування шматками для довгої історії). Див. [Compaction](/uk/concepts/compaction). +- `provider`: id зареєстрованого compaction provider plugin. Якщо встановлено, замість вбудованого підсумовування LLM викликається `summarize()` provider. У разі збою використовується вбудований варіант. Встановлення provider примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). +- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, перш ніж OpenClaw перерве її. Типове значення: `900`. - `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction. -- `identifierInstructions`: необов’язковий користувацький текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. -- `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 залишався безшумним. -- `memoryFlush`: безшумний агентний хід перед автоматичним Compaction для збереження тривалої пам’яті. Пропускається, якщо workspace доступний лише для читання. +- `identifierInstructions`: необов’язковий власний текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. +- `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 залишався безшумним. +- `memoryFlush`: безшумний агентний хід перед авто-Compaction для збереження довготривалої пам’яті. Пропускається, якщо workspace доступний лише для читання. ### `agents.defaults.contextPruning` -Обрізає **старі результати інструментів** з in-memory контексту перед надсиланням до LLM. **Не** змінює історію сесії на диску. +Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сесії на диску. ```json5 { @@ -1447,24 +1447,24 @@ harness app-server Codex. - `mode: "cache-ttl"` вмикає проходи обрізання. -- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього торкання кешу). +- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього дотику до кешу). - Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, за потреби, повністю очищає старіші результати інструментів. -**Soft-trim** зберігає початок + кінець і вставляє посередині `...`. +**М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині. -**Hard-clear** замінює весь результат інструмента плейсхолдером. +**Повне очищення** замінює весь результат інструмента на заповнювач. Примітки: - Блоки зображень ніколи не обрізаються й не очищаються. -- Співвідношення базуються на символах (приблизно), а не на точних підрахунках токенів. -- Якщо повідомлень помічника менше, ніж `keepLastAssistants`, обрізання пропускається. +- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів. +- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається. -Докладніше про поведінку див. у [Обрізання сесій](/uk/concepts/session-pruning). +Докладніше про поведінку див. у [Session Pruning](/uk/concepts/session-pruning). -### Блоковий потоковий вивід +### Блокове потокове передавання ```json5 { @@ -1480,13 +1480,13 @@ harness app-server Codex. } ``` -- Канали, крім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді. -- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типово `minChars: 1500`. -- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для агента: `agents.list[].humanDelay`. +- Канали, крім Telegram, вимагають явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді. +- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типове значення `minChars: 1500`. +- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для окремого агента: `agents.list[].humanDelay`. -Докладніше про поведінку й розбиття на частини див. у [Streaming](/uk/concepts/streaming). +Докладніше про поведінку й нарізання блоків див. у [Streaming](/uk/concepts/streaming). -### Індикатори набору +### Індикатори набору тексту ```json5 { @@ -1502,13 +1502,13 @@ harness app-server Codex. - Типові значення: `instant` для прямих чатів/згадок, `message` для групових чатів без згадки. - Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`. -Див. [Індикатори набору](/uk/concepts/typing-indicators). +Див. [Typing Indicators](/uk/concepts/typing-indicators). ### `agents.defaults.sandbox` -Необов’язкове sandbox-ізолювання для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing). +Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing). ```json5 { @@ -1603,7 +1603,7 @@ harness app-server Codex. } ``` - + **Backend:** @@ -1611,16 +1611,16 @@ harness app-server Codex. - `ssh`: загальний віддалений runtime на основі SSH - `openshell`: runtime OpenShell -Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переміщуються в +Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться до `plugins.entries.openshell.config`. -**Конфігурація SSH backend:** +**Конфігурація backend SSH:** -- `target`: SSH-ціль у форматі `user@host[:port]` -- `command`: команда SSH-клієнта (типово: `ssh`) -- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace у межах окремої області -- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються в OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: inline-вміст або SecretRef, які OpenClaw матеріалізує в тимчасові файли під час runtime +- `target`: ціль SSH у форматі `user@host[:port]` +- `command`: команда клієнта SSH (типово: `ssh`) +- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace у межах області +- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані в OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час runtime - `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH **Пріоритет автентифікації SSH:** @@ -1628,15 +1628,15 @@ harness app-server Codex. - `identityData` має пріоритет над `identityFile` - `certificateData` має пріоритет над `certificateFile` - `knownHostsData` має пріоритет над `knownHostsFile` -- Значення `*Data` на основі SecretRef визначаються з активного знімка runtime секретів до початку sandbox-сесії +- Значення `*Data` на основі SecretRef визначаються з активного знімка runtime секретів перед початком сесії sandbox -**Поведінка SSH backend:** +**Поведінка backend SSH:** -- один раз ініціалізує віддалений workspace після створення або повторного створення -- потім зберігає віддалений SSH workspace як канонічний +- один раз заповнює віддалений workspace після створення або повторного створення +- потім зберігає віддалений workspace як канонічний - маршрутизує `exec`, файлові інструменти та шляхи медіа через SSH - не синхронізує віддалені зміни назад на хост автоматично -- не підтримує browser-контейнери sandbox +- не підтримує браузерні контейнери sandbox **Доступ до workspace:** @@ -1644,11 +1644,11 @@ harness app-server Codex. - `ro`: workspace sandbox у `/workspace`, workspace агента монтується лише для читання в `/agent` - `rw`: workspace агента монтується для читання/запису в `/workspace` -**Область:** +**Область дії:** - `session`: окремий контейнер + workspace для кожної сесії -- `agent`: один контейнер + workspace на агента (типово) -- `shared`: спільний контейнер і workspace (без ізоляції між сесіями) +- `agent`: один контейнер + workspace для кожного агента (типово) +- `shared`: спільний контейнер і workspace (без міжсесійної ізоляції) **Конфігурація Plugin OpenShell:** @@ -1678,30 +1678,30 @@ harness app-server Codex. **Режим OpenShell:** -- `mirror`: ініціалізує віддалений стан із локального перед exec, синхронізує назад після exec; локальний workspace залишається канонічним -- `remote`: один раз ініціалізує віддалений стан, коли sandbox створюється, а потім зберігає віддалений workspace як канонічний +- `mirror`: перед `exec` заповнює віддалений workspace з локального, після `exec` синхронізує назад; локальний workspace залишається канонічним +- `remote`: один раз заповнює віддалений workspace під час створення sandbox, після чого віддалений workspace залишається канонічним -У режимі `remote` зміни на локальному хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку ініціалізації. -Транспортом є SSH до sandbox OpenShell, але Plugin володіє життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією. +У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після етапу початкового заповнення. +Транспорт — SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією. -**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує вихідного доступу до мережі, кореневої файлової системи з можливістю запису та користувача root. +**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, записуваного кореня, користувача root. -**Для контейнерів типово встановлено `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ. +**Для контейнерів типово використовується `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихід назовні. `"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не встановите `sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (режим break-glass). -**Вхідні вкладення** розміщуються в `media/inbound/*` активного workspace. +**Вхідні вкладення** розміщуються в `media/inbound/*` в активному workspace. -**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремого агента об’єднуються. +**`docker.binds`** монтує додаткові каталоги хоста; глобальні монтування та монтування для окремого агента об’єднуються. -**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в system prompt. Не потребує `browser.enabled` у `openclaw.json`. -Доступ спостерігача noVNC типово використовує VNC-автентифікацію, а OpenClaw видає короткоживучий token URL (замість того, щоб розкривати пароль у спільному URL). +**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний запит. Не потребує `browser.enabled` в `openclaw.json`. +Доступ спостерігача через 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 browser. Якщо встановлено (включно з `[]`), це замінює `docker.binds` для контейнера browser. -- Типові параметри запуску визначені в `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=` - `--user-data-dir=${HOME}/.chrome` @@ -1720,20 +1720,20 @@ harness app-server 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_EXTENSIONS=0` знову вмикає extensions, якщо ваш робочий процес - від них залежить. + типово ввімкнені й можуть бути вимкнені через + `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо для використання WebGL/3D це потрібно. + - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо ваш робочий процес + залежить від них. - `--renderer-process-limit=2` можна змінити через `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати типове обмеження процесів Chromium. - - плюс `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`. - - Типові значення є базовими для образу контейнера; щоб змінити типові параметри контейнера, - використовуйте власний browser image із власним entrypoint. + - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`. + - Типові значення є базовими для образу контейнера; щоб змінити типові значення контейнера, використовуйте + власний образ браузера з власним entrypoint. -Sandboxing браузера і `sandbox.docker.binds` підтримуються лише для Docker. +Ізоляція браузера та `sandbox.docker.binds` підтримуються лише для Docker. Збірка образів: @@ -1791,25 +1791,25 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `id`: стабільний ID агента (обов’язково). -- `default`: якщо встановлено для кількох агентів, перемагає перший (записується попередження). Якщо не встановлено для жодного, типовим є перший елемент списку. -- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні резервні моделі). Cron-завдання, які перевизначають лише `primary`, усе ще успадковують типові резервні моделі, якщо не встановити `fallbacks: []`. -- `params`: параметри потоку для окремого агента, що зливаються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень для конкретного агента, як-от `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей. -- `skills`: необов’язковий allowlist Skills для окремого агента. Якщо пропущено, агент успадковує `agents.defaults.skills`, якщо його задано; явний список замінює типові значення, а не зливається з ними, і `[]` означає відсутність Skills. -- `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не встановлено перевизначення для повідомлення або сесії. -- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не встановлено перевизначення reasoning для повідомлення або сесії. -- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не встановлено перевизначення fast mode для повідомлення або сесії. -- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб один агент працював лише через Codex, тоді як інші агенти зберігатимуть типовий резервний PI. -- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати ACP harness-сесії. +- `id`: стабільний id агента (обов’язково). +- `default`: якщо встановлено кілька значень, використовується перше (записується попередження). Якщо не встановлено жодного, типовим є перший запис у списку. +- `model`: рядкова форма перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron-завдання, які перевизначають лише `primary`, все одно успадковують типові fallback, якщо ви не встановите `fallbacks: []`. +- `params`: параметри потоку для окремого агента, об’єднані поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних для агента перевизначень, як-от `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей. +- `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо не вказано, агент успадковує `agents.defaults.skills`, якщо його встановлено; явний список замінює типові значення, а не об’єднується з ними, а `[]` означає відсутність Skills. +- `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не встановлено перевизначення для окремого повідомлення або сесії. +- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, якщо не встановлено перевизначення reasoning для окремого повідомлення або сесії. +- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, якщо не встановлено перевизначення fast-mode для окремого повідомлення або сесії. +- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний варіант PI. +- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати ACP harness sessions. - `identity.avatar`: шлях відносно workspace, URL `http(s)` або URI `data:`. -- `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`. -- `subagents.allowAgents`: allowlist ID агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент). -- Захист успадкування sandbox: якщо сесія запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox. -- `subagents.requireAgentId`: коли `true`, блокує виклики `sessions_spawn`, які не вказують `agentId` (примушує до явного вибору профілю; типово: false). +- `identity` виводить типові значення: `ackReaction` із `emoji`, `mentionPatterns` із `name`/`emoji`. +- `subagents.allowAgents`: список дозволених id агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент). +- Захист успадкування sandbox: якщо сесія запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які працювали б без sandbox. +- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких не вказано `agentId` (примушує до явного вибору профілю; типово: false). --- -## Маршрутизація між кількома агентами +## Маршрутизація кількох агентів Запускайте кілька ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent). @@ -1830,7 +1830,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ### Поля відповідності прив’язки -- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип не вказано, типово використовується route), `acp` для постійних ACP-прив’язок розмов. +- `type` (необов’язково): `route` для звичайної маршрутизації (якщо type відсутній, типово використовується route), `acp` для постійних ACP-прив’язок розмов. - `match.channel` (обов’язково) - `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо пропущено = типовий обліковий запис) - `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`) @@ -1843,14 +1843,14 @@ scripts/sandbox-browser-setup.sh # optional browser image 2. `match.guildId` 3. `match.teamId` 4. `match.accountId` (точний збіг, без peer/guild/team) -5. `match.accountId: "*"` (на рівні каналу) +5. `match.accountId: "*"` (для всього каналу) 6. Типовий агент У межах кожного рівня перемагає перший відповідний запис `bindings`. -Для записів `type: "acp"` OpenClaw виконує визначення за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язки route. +Для записів `type: "acp"` OpenClaw виконує зіставлення за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує порядок рівнів route-binding вище. -### Профілі доступу для окремого агента +### Профілі доступу для окремих агентів @@ -1870,7 +1870,7 @@ scripts/sandbox-browser-setup.sh # optional browser image - + ```json5 { @@ -1945,7 +1945,7 @@ scripts/sandbox-browser-setup.sh # optional browser image -Докладніше про пріоритети див. у [Sandbox і інструменти Multi-Agent](/uk/tools/multi-agent-sandbox-tools). +Докладніше про пріоритети див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools). --- @@ -1996,37 +1996,37 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` - + - **`scope`**: базова стратегія групування сесій для контекстів групового чату. - `per-sender` (типово): кожен відправник отримує ізольовану сесію в межах контексту каналу. - - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли спільний контекст дійсно задуманий). + - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли потрібен спільний контекст). - **`dmScope`**: як групуються DM. - - `main`: усі DM використовують спільну основну сесію. - - `per-peer`: ізоляція за ID відправника між каналами. - - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для багатокористувацьких inbox). - - `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для багатообліковості). -- **`identityLinks`**: зіставлення канонічних ID з peer, префіксованими постачальником, для спільного використання сесій між каналами. -- **`reset`**: основна політика скидання. `daily` виконує скидання о `atHour` за місцевим часом; `idle` виконує скидання після `idleMinutes`. Якщо налаштовано обидва, перемагає той варіант, що спливає раніше. -- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як псевдонім для `direct`. -- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківської сесії, дозволене під час створення розгалуженої тред-сесії (типово `100000`). - - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw запускає нову тред-сесію замість успадкування історії стенограми батьківської сесії. + - `main`: усі DM спільно використовують основну сесію. + - `per-peer`: ізоляція за id відправника між каналами. + - `per-channel-peer`: ізоляція для кожної пари канал + відправник (рекомендовано для скриньок із кількома користувачами). + - `per-account-channel-peer`: ізоляція для кожної комбінації обліковий запис + канал + відправник (рекомендовано для кількох облікових записів). +- **`identityLinks`**: зіставлення канонічних id із peer із префіксом provider для спільного використання сесії між каналами. +- **`reset`**: основна політика скидання. `daily` скидає в локальний час `atHour`; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва параметри, використовується той, який спливає раніше. +- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застаріле `dm` приймається як alias для `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`. Перший deny має пріоритет. -- **`maintenance`**: очищення сховища сесій + контроль утримання. - - `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення. - - `pruneAfter`: віковий поріг для застарілих записів (типово `30d`). +- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного бакета прямого чату. +- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів відповіді назад між агентами під час обміну агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong-ланцюжок. +- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет. +- **`maintenance`**: очищення сховища сесій + елементи керування зберіганням. + - `mode`: `warn` лише видає попередження; `enforce` застосовує очищення. + - `pruneAfter`: поріг віку для застарілих записів (типово `30d`). - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`). - - `rotateBytes`: ротація `sessions.json`, коли він перевищує цей розмір (типово `10mb`). - - `resetArchiveRetention`: термін зберігання архівів стенограм `*.reset.`. Типово відповідає `pruneAfter`; установіть `false`, щоб вимкнути. - - `maxDiskBytes`: необов’язковий жорсткий бюджет дискового простору для каталогу сесій. У режимі `warn` записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. - - `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово `80%` від `maxDiskBytes`. -- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до тредів. - - `enabled`: головний типовий перемикач (постачальники можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) - - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; постачальники можуть перевизначати) - - `maxAgeHours`: типове жорстке обмеження максимального віку в годинах (`0` вимикає; постачальники можуть перевизначати) + - `rotateBytes`: ротує `sessions.json`, коли він перевищує цей розмір (типово `10mb`). + - `resetArchiveRetention`: строк зберігання архівів стенограм `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. + - `maxDiskBytes`: необов’язковий жорсткий бюджет каталогу сесій на диску. У режимі `warn` записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. + - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово `80%` від `maxDiskBytes`. +- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до потоків. + - `enabled`: головний типовий перемикач (provider можуть перевизначити; Discord використовує `channels.discord.threadBindings.enabled`) + - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; provider можуть перевизначити) + - `maxAgeHours`: типове жорстке максимальне значення віку в годинах (`0` вимикає; provider можуть перевизначити) @@ -2064,36 +2064,36 @@ scripts/sandbox-browser-setup.sh # optional browser image ### Префікс відповіді -Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`. +Перевизначення для окремого каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`. -Порядок визначення (найспецифічніше перемагає): обліковий запис → канал → глобально. `""` вимикає і зупиняє каскад. `"auto"` виводить `[{identity.name}]`. +Визначення (перемагає найконкретніше): обліковий запис → канал → глобальне значення. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`. -**Шаблонні змінні:** +**Змінні шаблону:** -| Змінна | Опис | Приклад | -| ----------------- | ------------------------ | --------------------------- | -| `{model}` | Коротка назва моделі | `claude-opus-4-6` | -| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | -| `{provider}` | Назва постачальника | `anthropic` | +| Змінна | Опис | Приклад | +| ---------------- | ------------------------ | --------------------------- | +| `{model}` | Коротка назва моделі | `claude-opus-4-6` | +| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | +| `{provider}` | Назва provider | `anthropic` | | `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` | -| `{identity.name}` | Назва identity агента | (те саме, що `"auto"`) | +| `{identity.name}` | Назва identity агента | (те саме, що й `"auto"`) | -Змінні не чутливі до регістру. `{think}` є псевдонімом для `{thinkingLevel}`. +Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`. -### Реакція-підтвердження +### Реакція підтвердження -- Типово береться `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. -- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервно з identity. +- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. +- Перевизначення для окремого каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. +- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення identity. - Область: `group-mentions` (типово), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: видаляє ack після відповіді у Slack, Discord і Telegram. -- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу у Slack, Discord і Telegram. - У Slack і Discord, якщо значення не встановлено, реакції статусу залишаються ввімкненими, коли активні ack-реакції. - У Telegram явно встановіть `true`, щоб увімкнути реакції статусу життєвого циклу. +- `removeAckAfterReply`: видаляє реакцію підтвердження після відповіді в Slack, Discord і Telegram. +- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram. + У Slack і Discord відсутнє значення зберігає реакції статусу увімкненими, коли активні реакції підтвердження. + У Telegram установіть його явно в `true`, щоб увімкнути реакції статусу життєвого циклу. ### Inbound debounce -Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce. +Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керівні команди обходять debounce. ### TTS (text-to-speech) @@ -2136,12 +2136,12 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `auto` керує типовим режимом автоматичного TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні налаштування, а `/tts status` показує фактичний стан. -- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного зведення. +- `auto` керує типовим режимом auto-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні налаштування, а `/tts status` показує фактичний стан. +- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку. - `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово має значення `false` (opt-in). -- API key резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` та `OPENAI_API_KEY`. -- `openai.baseUrl` перевизначає endpoint TTS OpenAI. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. -- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw трактує його як OpenAI-compatible TTS server і послаблює валідацію model/voice. +- API key використовують резервні значення `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. +- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. +- Коли `openai.baseUrl` вказує на endpoint, відмінний від OpenAI, OpenClaw розглядає його як OpenAI-сумісний TTS-сервер і послаблює перевірку моделі/голосу. --- @@ -2171,13 +2171,13 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька постачальників Talk. -- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) підтримуються лише для сумісності й автоматично мігруються до `talk.providers.`. -- Voice ID резервно беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. +- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька provider Talk. +- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності й автоматично мігруються до `talk.providers.`. +- Для Voice ID використовуються резервні значення `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. - `providers.*.apiKey` приймає відкриті рядки або об’єкти SecretRef. -- Резервний варіант `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано API key для Talk. +- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли ключ API Talk не налаштовано. - `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви. -- `silenceTimeoutMs` керує тим, скільки Talk mode чекає після тиші користувача, перш ніж надіслати транскрипт. Якщо значення не встановлено, зберігається типове вікно паузи платформи (`700 ms` на macOS і Android, `900 ms` на iOS). +- `silenceTimeoutMs` керує тим, скільки режим Talk чекає після тиші користувача, перш ніж надіслати стенограму. Якщо не встановлено, зберігається типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`). --- @@ -2185,37 +2185,37 @@ scripts/sandbox-browser-setup.sh # optional browser image ### Профілі інструментів -`tools.profile` задає базовий allowlist перед `tools.allow`/`tools.deny`: +`tools.profile` задає базовий список дозволених значень перед `tools.allow`/`tools.deny`: -Локальний онбординг типово встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються). +Локальний onboarding за замовчуванням встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються). -| Профіль | Містить | -| ---------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `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` | Без обмежень (те саме, що й без значення) | +| Профіль | Містить | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `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` | Без обмежень (так само, як без значення) | ### Групи інструментів -| Група | Інструменти | -| ------------------ | --------------------------------------------------------------------------------------------------------------------- | -| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) | -| `group:fs` | `read`, `write`, `edit`, `apply_patch` | +| Група | Інструменти | +| ------------------ | ---------------------------------------------------------------------------------------------------------------------- | +| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як alias для `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` | Усі вбудовані інструменти (крім Plugin постачальників) | +| `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` | Усі вбудовані інструменти (без provider Plugin) | ### `tools.allow` / `tools.deny` -Глобальна політика дозволу/заборони інструментів (deny має пріоритет). Без урахування регістру, підтримує шаблони `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено. +Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Нечутлива до регістру, підтримує шаблони `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено. ```json5 { @@ -2225,7 +2225,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ### `tools.byProvider` -Додатково обмежує інструменти для конкретних постачальників або моделей. Порядок: базовий профіль → профіль постачальника → allow/deny. +Додатково обмежує інструменти для конкретних provider або моделей. Порядок: базовий профіль → профіль provider → allow/deny. ```json5 { @@ -2241,7 +2241,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ### `tools.elevated` -Керує підвищеним доступом exec поза sandbox: +Керує elevated-доступом до exec поза sandbox: ```json5 { @@ -2257,9 +2257,9 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- Перевизначення для агента (`agents.list[].tools.elevated`) може лише додатково обмежувати. +- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише додатково обмежувати. - `/elevated on|off|ask|full` зберігає стан для кожної сесії; inline-директиви застосовуються до одного повідомлення. -- Підвищений `exec` обходить sandboxing і використовує налаштований шлях виходу (`gateway` типово або `node`, коли ціллю exec є `node`). +- Elevated `exec` обходить sandboxing і використовує налаштований шлях виходу (`gateway` типово, або `node`, коли ціль exec — `node`). ### `tools.exec` @@ -2283,8 +2283,8 @@ scripts/sandbox-browser-setup.sh # optional browser image ### `tools.loopDetection` -Перевірки безпеки циклів інструментів **типово вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення. -Параметри можна задавати глобально в `tools.loopDetection` і перевизначати для агента в `agents.list[].tools.loopDetection`. +Перевірки безпеки циклів інструментів **типово вимкнені**. Установіть `enabled: true`, щоб активувати виявлення. +Налаштування можна визначити глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`. ```json5 { @@ -2308,11 +2308,11 @@ scripts/sandbox-browser-setup.sh # optional browser image - `historySize`: максимальна історія викликів інструментів, що зберігається для аналізу циклів. - `warningThreshold`: поріг повторюваного шаблону без прогресу для попереджень. - `criticalThreshold`: вищий поріг повторення для блокування критичних циклів. -- `globalCircuitBreakerThreshold`: поріг жорсткої зупинки для будь-якого запуску без прогресу. +- `globalCircuitBreakerThreshold`: поріг жорсткої зупинки для будь-якого виконання без прогресу. - `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами. -- `detectors.knownPollNoProgress`: попереджати/блокувати відомі polling-інструменти (`process.poll`, `command_status` тощо). -- `detectors.pingPong`: попереджати/блокувати шаблони чергування пар без прогресу. -- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, валідація не проходить. +- `detectors.knownPollNoProgress`: попереджати/блокувати відомі інструменти polling (`process.poll`, `command_status` тощо). +- `detectors.pingPong`: попереджати/блокувати чергувальні парні шаблони без прогресу. +- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, валідація завершується помилкою. ### `tools.web` @@ -2380,30 +2380,30 @@ scripts/sandbox-browser-setup.sh # optional browser image -**Запис постачальника** (`type: "provider"` або пропущено): +**Запис provider** (`type: "provider"` або пропущено): -- `provider`: ID API-постачальника (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо) -- `model`: перевизначення ID моделі +- `provider`: id API provider (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо) +- `model`: перевизначення id моделі - `profile` / `preferredProfile`: вибір профілю `auth-profiles.json` **Запис CLI** (`type: "cli"`): - `command`: виконуваний файл для запуску -- `args`: шаблонізовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо) +- `args`: параметризовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо) **Спільні поля:** - `capabilities`: необов’язковий список (`image`, `audio`, `video`). Типові значення: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. - `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису. -- У разі збоїв використовується наступний запис. +- У разі помилок використовується наступний запис як резервний варіант. -Автентифікація постачальника дотримується стандартного порядку: `auth-profiles.json` → env vars → `models.providers.*.apiKey`. +Автентифікація provider використовує стандартний порядок: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`. -**Поля async completion:** +**Поля асинхронного завершення:** - `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate` - і `video_generate` спочатку намагаються доставлятися безпосередньо в канал. Типове значення: `false` - (застарілий шлях пробудження requester-session / доставки моделлю). + і `video_generate` спочатку намагаються доставити результат безпосередньо в канал. Типове значення: `false` + (застарілий шлях пробудження сесії запитувача/доставки моделі). @@ -2422,7 +2422,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ### `tools.sessions` -Керує тим, які сесії можуть бути ціллю для інструментів сесії (`sessions_list`, `sessions_history`, `sessions_send`). +Керує тим, на які сесії можуть націлюватися інструменти сесій (`sessions_list`, `sessions_history`, `sessions_send`). Типове значення: `tree` (поточна сесія + сесії, породжені нею, наприклад субагенти). @@ -2439,11 +2439,11 @@ scripts/sandbox-browser-setup.sh # optional browser image Примітки: -- `self`: лише поточний ключ сесії. +- `self`: лише ключ поточної сесії. - `tree`: поточна сесія + сесії, породжені поточною сесією (субагенти). -- `agent`: будь-яка сесія, що належить поточному ID агента (може включати інших користувачів, якщо ви запускаєте сесії per-sender під тим самим ID агента). -- `all`: будь-яка сесія. Націлювання між агентами все одно потребує `tools.agentToAgent`. -- Обмеження sandbox: коли поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`. +- `agent`: будь-яка сесія, що належить поточному id агента (може включати інших користувачів, якщо ви запускаєте сесії per-sender під тим самим id агента). +- `all`: будь-яка сесія. Націлювання між агентами все одно вимагає `tools.agentToAgent`. +- Обмеження sandbox: коли поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється на `tree`, навіть якщо `tools.sessions.visibility="all"`. ### `tools.sessions_spawn` @@ -2467,16 +2467,16 @@ scripts/sandbox-browser-setup.sh # optional browser image Примітки: -- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє. -- Файли матеріалізуються в дочірньому workspace у `.openclaw/attachments//` з `.manifest.json`. -- Вміст вкладень автоматично редагується під час збереження стенограми. -- Входи Base64 перевіряються за допомогою суворих перевірок алфавіту/відступів і захисту розміру до декодування. -- Дозволи на файли: `0700` для каталогів і `0600` для файлів. -- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`. +- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP відхиляє їх. +- Файли матеріалізуються в дочірньому workspace за шляхом `.openclaw/attachments//` разом із `.manifest.json`. +- Вміст вкладень автоматично редагується під час збереження transcript. +- Входи base64 перевіряються за суворими правилами алфавіту/відступів і з попередньою перевіркою розміру до декодування. +- Права доступу до файлів: `0700` для каталогів і `0600` для файлів. +- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише тоді, коли `retainOnSessionKeep: true`. ### `tools.experimental` -Експериментальні прапорці вбудованих інструментів. Типово вимкнені, якщо не застосовується правило автоувімкнення strict-agentic GPT-5. +Прапори експериментальних вбудованих інструментів. Типово вимкнені, якщо не застосовується правило автоматичного ввімкнення strict-agentic GPT-5. ```json5 { @@ -2490,9 +2490,9 @@ scripts/sandbox-browser-setup.sh # optional browser image Примітки: -- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатоетапної роботи. -- Типове значення: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5. -- Коли ввімкнено, system prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи та тримала не більше одного кроку `in_progress`. +- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи. +- Типове значення: `false`, якщо лише `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5. +- Коли інструмент увімкнено, системний запит також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більше одного кроку у стані `in_progress`. ### `agents.defaults.subagents` @@ -2512,16 +2512,16 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `model`: типова модель для породжених субагентів. Якщо не вказано, субагенти успадковують модель викликача. -- `allowAgents`: типовий allowlist ID цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент). -- `runTimeoutSeconds`: типовий timeout (секунди) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає відсутність timeout. -- Політика інструментів для субагентів: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. +- `model`: типова модель для створених субагентів. Якщо не вказано, субагенти успадковують модель викликача. +- `allowAgents`: типовий список дозволених id цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власне `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент). +- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли у виклику інструмента не вказано `runTimeoutSeconds`. `0` означає відсутність тайм-ауту. +- Політика інструментів для субагента: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. --- -## Користувацькі постачальники й base URL +## Власні provider і base URL -OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких постачальників через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`. +OpenClaw використовує вбудований каталог моделей. Додавайте власні provider через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`. ```json5 { @@ -2551,49 +2551,49 @@ OpenClaw використовує вбудований каталог модел ``` - Використовуйте `authHeader: true` + `headers` для власних потреб автентифікації. -- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища). -- Пріоритет злиття для однакових ID постачальників: - - Непорожні значення `baseUrl` з `models.json` агента мають пріоритет. - - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей постачальник не керується через SecretRef у поточному контексті config/auth-profile. - - Значення `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` зберігає явне runtime-обмеження, якщо воно присутнє; використовуйте це, щоб обмежити ефективний контекст без зміни нативних метаданих моделі. +- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий alias змінної середовища). +- Пріоритет об’єднання для provider з однаковими ID: + - Непорожні значення `baseUrl` в `models.json` агента мають пріоритет. + - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей provider не керується через SecretRef у поточному контексті config/auth-profile. + - Значення `apiKey` provider, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env-посилань, `secretref-managed` для file/exec-посилань) замість збереження визначених секретів. + - Значення заголовків provider, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env-посилань, `secretref-managed` для file/exec-посилань). + - Порожні або відсутні значення `apiKey`/`baseUrl` агента використовують резервні значення з `models.providers` у конфігурації. + - Для однакових моделей `contextWindow`/`maxTokens` використовують вище значення між явною конфігурацією та неявними значеннями каталогу. + - Для однакових моделей `contextTokens` зберігає явне обмеження runtime, коли воно задане; використовуйте це, щоб обмежити ефективний контекст без зміни нативних метаданих моделі. - Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписала `models.json`. - - Збереження маркерів є авторитетним на рівні джерела: маркери записуються з активного знімка конфігурації джерела (до визначення), а не з визначених секретних значень runtime. + - Збереження маркерів є авторитетним щодо джерела: маркери записуються з активного знімка конфігурації джерела (до визначення), а не з визначених значень секретів runtime. -### Деталі полів постачальника +### Подробиці полів provider -- `models.mode`: поведінка каталогу постачальників (`merge` або `replace`). -- `models.providers`: мапа користувацьких постачальників, ключована за ID постачальника. +- `models.mode`: поведінка каталогу provider (`merge` або `replace`). +- `models.providers`: карта власних provider, ключем якої є id provider. - `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо). -- `models.providers.*.apiKey`: облікові дані постачальника (надавайте перевагу SecretRef/env-підстановці). +- `models.providers.*.apiKey`: облікові дані provider (краще використовувати підстановку SecretRef/env). - `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`). - `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вбудовує `options.num_ctx` у запити (типово: `true`). -- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно. +- `models.providers.*.authHeader`: примусово передає облікові дані в заголовку `Authorization`, коли це потрібно. - `models.providers.*.baseUrl`: базовий URL upstream API. - `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації proxy/tenant. - `models.providers.*.request`: перевизначення транспорту для HTTP-запитів model-provider. - - `request.headers`: додаткові заголовки (зливаються з типовими значеннями постачальника). Значення підтримують SecretRef. - - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію постачальника), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`). + - `request.headers`: додаткові заголовки (об’єднуються з типовими значеннями provider). Значення приймають SecretRef. + - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію provider), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`). - `request.proxy`: перевизначення HTTP proxy. Режими: `"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 постачальника (operator opt-in для довірених self-hosted endpoint OpenAI-compatible). WebSocket використовує той самий `request` для заголовків/TLS, але не цей fetch SSRF gate. Типове значення `false`. -- `models.providers.*.models`: явні записи каталогу моделей постачальника. + - `request.tls`: перевизначення TLS для прямих з’єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`. + - `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS визначається в приватні, CGNAT або подібні діапазони, через захист HTTP fetch provider (opt-in оператора для довірених власних OpenAI-сумісних endpoint). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-запобіжник fetch. Типове значення `false`. +- `models.providers.*.models`: явні записи каталогу моделей provider. - `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі. -- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження runtime-контексту. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж нативний `contextWindow` моделі. -- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (host не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI. -- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-compatible chat endpoint, які підтримують лише рядки. Коли `true`, OpenClaw сплощує масиви чисто текстового `messages[].content` у звичайні рядки перед надсиланням запиту. +- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту runtime. Використовуйте це, якщо хочете мати менший ефективний бюджет контексту, ніж нативне `contextWindow` моделі. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI. +- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-сумісних chat-endpoint, що приймають лише рядки. Коли `true`, OpenClaw перетворює масиви `messages[].content`, що містять лише текст, на звичайні рядки перед надсиланням запиту. - `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань auto-discovery Bedrock. -- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне виявлення. +- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути або вимкнути неявне виявлення. - `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для виявлення. - `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового виявлення. - `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення виявлення. - `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для виявлених моделей. - `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей. -### Приклади постачальників +### Приклади provider @@ -2646,7 +2646,7 @@ OpenClaw використовує вбудований каталог модел } ``` -Установіть `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або `opencode-go/...` для каталогу Go. Скорочення: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`. +Установіть `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або `opencode-go/...` для каталогу Go. Скорочений варіант: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`. @@ -2663,11 +2663,11 @@ OpenClaw використовує вбудований каталог модел } ``` -Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як псевдоніми. Скорочення: `openclaw onboard --auth-choice zai-api-key`. +Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` є прийнятними alias. Скорочений варіант: `openclaw onboard --auth-choice zai-api-key`. - Загальний endpoint: `https://api.z.ai/api/paas/v4` - Endpoint для кодування (типовий): `https://api.z.ai/api/coding/paas/v4` -- Для загального endpoint визначте користувацького постачальника з перевизначенням base URL. +- Для загального endpoint визначте власний provider із перевизначенням base URL. @@ -2708,9 +2708,9 @@ OpenClaw використовує вбудований каталог модел Для endpoint у Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`. -Нативні endpoint Moonshot декларують сумісність потокового використання на спільному -транспорті `openai-completions`, і OpenClaw прив’язує це до можливостей endpoint, -а не лише до вбудованого ID постачальника. +Нативні endpoint Moonshot оголошують сумісність використання потокового передавання через спільний +транспорт `openai-completions`, і OpenClaw визначає це за можливостями endpoint, +а не лише за id вбудованого provider. @@ -2728,11 +2728,11 @@ OpenClaw використовує вбудований каталог модел } ``` -Сумісний з Anthropic, вбудований постачальник. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`. +Anthropic-сумісний, вбудований provider. Скорочений варіант: `openclaw onboard --auth-choice kimi-code-api-key`. - + ```json5 { @@ -2767,7 +2767,7 @@ OpenClaw використовує вбудований каталог модел } ``` -Base URL має не містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`. +Base URL має не містити `/v1` (клієнт Anthropic додає його). Скорочений варіант: `openclaw onboard --auth-choice synthetic-api-key`. @@ -2807,11 +2807,11 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й } ``` -Установіть `MINIMAX_API_KEY`. Скорочення: +Установіть `MINIMAX_API_KEY`. Скорочені варіанти: `openclaw onboard --auth-choice minimax-global-api` або `openclaw onboard --auth-choice minimax-cn-api`. Каталог моделей типово містить лише M2.7. -На Anthropic-compatible шляху потокового виводу OpenClaw типово вимикає thinking MiniMax, +На Anthropic-сумісному шляху потокового передавання OpenClaw типово вимикає thinking MiniMax, якщо ви явно не задасте `thinking` самостійно. `/fast on` або `params.fastMode: true` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`. @@ -2820,7 +2820,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й -Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; зберігайте merged хостингові моделі як резервний варіант. +Див. [Локальні моделі](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; зберігайте розміщені моделі в merged-стані як резервний варіант. @@ -2851,14 +2851,14 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й } ``` -- `allowBundled`: необов’язковий allowlist лише для bundled skills (керовані/workspace skills не зачіпаються). -- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет). -- `install.preferBrew`: коли true, надає перевагу інсталяторам Homebrew, якщо `brew` - доступний, перед резервним переходом до інших типів інсталяторів. -- `install.nodeManager`: пріоритет node-інсталятора для специфікацій `metadata.openclaw.install` +- `allowBundled`: необов’язковий список дозволів лише для вбудованих Skills (керовані/workspace Skills не зачіпаються). +- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет). +- `install.preferBrew`: коли true, віддає перевагу інсталяторам Homebrew, якщо `brew` + доступний, перш ніж переходити до інших типів інсталяторів. +- `install.nodeManager`: перевага node-інсталятора для специфікацій `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` вимикає skill, навіть якщо він bundled/встановлений. -- `entries..apiKey`: зручний параметр для skills, що оголошують основну env-змінну (відкритий рядок або об’єкт SecretRef). +- `entries..enabled: false` вимикає Skill, навіть якщо він вбудований/встановлений. +- `entries..apiKey`: зручний параметр для Skills, які оголошують основну env-змінну (відкритий рядок або об’єкт SecretRef). --- @@ -2886,41 +2886,41 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й } ``` -- Завантажується з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`. -- Виявлення приймає нативні Plugin OpenClaw, а також сумісні бандли Codex і Claude, включно з безманіфестними бандлами Claude у типовому компонуванні. +- Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions`, а також `plugins.load.paths`. +- Виявлення приймає нативні Plugin OpenClaw, а також сумісні bundles Codex і bundles Claude, включно з bundles Claude стандартного компонування без маніфесту. - **Зміни конфігурації потребують перезапуску gateway.** -- `allow`: необов’язковий allowlist (завантажуються лише перелічені Plugin). `deny` має пріоритет. +- `allow`: необов’язковий список дозволів (завантажуються лише перелічені Plugin). `deny` має пріоритет. - `plugins.entries..apiKey`: зручне поле API key на рівні Plugin (коли Plugin це підтримує). -- `plugins.entries..env`: мапа env-змінних у межах Plugin. -- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля, що змінюють prompt, із застарілого `before_agent_start`, зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до нативних hook Plugin і підтримуваних каталогів hook, наданих бандлами. -- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для кожного запуску фонових субагентів. -- `plugins.entries..subagent.allowedModels`: необов’язковий allowlist канонічних цілей `provider/model` для довірених перевизначень субагентів. Використовуйте `"*"`, лише коли свідомо хочете дозволити будь-яку модель. -- `plugins.entries..config`: визначений Plugin об’єкт конфігурації (перевіряється за схемою нативного Plugin OpenClaw, коли вона доступна). -- `plugins.entries.firecrawl.config.webFetch`: налаштування постачальника web-fetch Firecrawl. - - `apiKey`: API key Firecrawl (приймає SecretRef). Резервно використовує `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілий `tools.web.fetch.firecrawl.apiKey` або env-змінну `FIRECRAWL_API_KEY`. +- `plugins.entries..env`: карта env-змінних у межах Plugin. +- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля legacy `before_agent_start`, що змінюють prompt, зберігаючи legacy `modelOverride` і `providerOverride`. Застосовується до нативних hooks Plugin і підтримуваних каталогів hooks, наданих bundle. +- `plugins.entries..subagent.allowModelOverride`: явно довіряє цьому Plugin запитувати перевизначення `provider` і `model` для окремих запусків фонових субагентів. +- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених перевизначень субагента. Використовуйте `"*"`, лише якщо ви свідомо хочете дозволити будь-яку модель. +- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (валідується за схемою нативного Plugin OpenClaw, якщо вона доступна). +- `plugins.entries.firecrawl.config.webFetch`: налаштування provider веб-отримання Firecrawl. + - `apiKey`: API key Firecrawl (приймає SecretRef). Використовує резервне значення з `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`. - `baseUrl`: базовий URL API Firecrawl (типово: `https://api.firecrawl.dev`). - - `onlyMainContent`: вилучати зі сторінок лише основний вміст (типово: `true`). + - `onlyMainContent`: витягувати лише основний вміст зі сторінок (типово: `true`). - `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні). - - `timeoutSeconds`: timeout запиту scrape у секундах (типово: `60`). + - `timeoutSeconds`: тайм-аут запиту scrape у секундах (типово: `60`). - `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (веб-пошук Grok). - - `enabled`: увімкнути постачальника X Search. - - `model`: модель Grok для пошуку (наприклад `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів. + - `enabled`: увімкнути provider X Search. + - `model`: модель Grok для пошуку (наприклад, `"grok-4-1-fast"`). +- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) для фаз і порогів. - `enabled`: головний перемикач dreaming (типово `false`). - - `frequency`: Cron-ритм для кожного повного проходу dreaming (типово `"0 3 * * *"`). - - політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації). -- Повна конфігурація пам’яті міститься в [Довіднику з конфігурації пам’яті](/uk/reference/memory-config): + - `frequency`: частота Cron для кожного повного циклу dreaming (типово `"0 3 * * *"`). + - політика фаз і пороги є деталями реалізації (не ключами конфігурації для користувача). +- Повна конфігурація пам’яті знаходиться в [Довіднику з конфігурації пам’яті](/uk/reference/memory-config): - `agents.defaults.memorySearch.*` - `memory.backend` - `memory.citations` - `memory.qmd.*` - `plugins.entries.memory-core.config.dreaming` -- Увімкнені Plugin-бандли Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw. -- `plugins.slots.memory`: вибрати ID активного memory 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 замість ручного редагування. +- Увімкнені bundles 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](/uk/tools/plugin). @@ -2963,28 +2963,28 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й ``` - `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`. -- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не встановлено, тому навігація браузера типово залишається суворою. -- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли свідомо довіряєте навігації браузера в приватній мережі. -- У суворому режимі endpoint віддалених профілів CDP (`profiles.*.cdpUrl`) під час перевірок доступності/виявлення підпадають під те саме блокування приватної мережі. -- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім. +- Якщо `ssrfPolicy.dangerouslyAllowPrivateNetwork` не встановлено, воно вимкнене, тому навігація браузера типово залишається суворою. +- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли свідомо довіряєте браузерній навігації в приватній мережі. +- У суворому режимі endpoint віддалених профілів CDP (`profiles.*.cdpUrl`) підлягають тому самому блокуванню приватної мережі під час перевірок доступності/виявлення. +- `ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як legacy alias. - У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків. -- Віддалені профілі працюють лише в режимі приєднання (start/stop/reset вимкнено). +- Віддалені профілі — лише для підключення (запуск/зупинка/скидання вимкнено). - `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`. Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив `/json/version`; використовуйте WS(S), - коли ваш постачальник надає прямий URL DevTools WebSocket. -- Профілі `existing-session` працюють лише на хості та використовують Chrome MCP замість CDP. + коли provider надає прямий URL DevTools WebSocket. +- Профілі `existing-session` працюють лише на хості й використовують Chrome MCP замість CDP. - Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний профіль браузера на основі Chromium, наприклад Brave або Edge. - Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP: - дії на основі snapshot/ref замість націлювання CSS-селекторами, hook завантаження - одного файла, без перевизначень timeout для діалогів, без `wait --load networkidle`, а також без + дії на основі snapshot/ref замість націлювання за CSS-селекторами, хуки завантаження + одного файла, без перевизначення тайм-аутів діалогів, без `wait --load networkidle` і без `responsebody`, експорту PDF, перехоплення завантажень або пакетних дій. - Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно задавайте `cdpUrl` лише для віддаленого CDP. - Порядок автовиявлення: типовий браузер, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. -- Control service: лише loopback (порт визначається з `gateway.port`, типово `18791`). -- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад - `--disable-gpu`, розмір вікна або debug-прапорці). +- Служба керування: лише loopback (порт визначається з `gateway.port`, типово `18791`). +- `extraArgs` додає додаткові прапори запуску до локального запуску Chromium (наприклад + `--disable-gpu`, розмір вікна або прапори налагодження). --- @@ -3002,8 +3002,8 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й } ``` -- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо). -- `assistant`: перевизначення identity для Control UI. Резервно використовує identity активного агента. +- `seamColor`: колір акценту для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо). +- `assistant`: перевизначення identity для Control UI. Використовує identity активного агента як резервне значення. --- @@ -3070,66 +3070,66 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й } ``` - + -- `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**: використовуйте значення режиму 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` усередині контейнера. За bridge-мережі Docker (`-p 18789:18789`) трафік надходить через `eth0`, тому gateway недосяжний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах. -- **Auth**: типово обов’язкова. Bind не-loopback вимагає автентифікації gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням identity з `gateway.auth.mode: "trusted-proxy"`. Майстер онбордингу типово генерує token. -- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно задайте `gateway.auth.mode` як `token` або `password`. Потоки запуску та встановлення/відновлення service завершуються помилкою, якщо налаштовано обидва значення, а mode не встановлено. -- `gateway.auth.mode: "none"`: явний режим без автентифікації. Використовуйте лише для довірених локальних конфігурацій local loopback; цей варіант навмисно не пропонується в підказках онбордингу. -- `gateway.auth.mode: "trusted-proxy"`: делегувати автентифікацію reverse proxy з урахуванням identity і довіряти заголовкам identity від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **джерело proxy не-loopback**; same-host reverse proxy на loopback не задовольняють автентифікацію trusted-proxy. -- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольняти автентифікацію Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint HTTP API **не** використовують цю автентифікацію через заголовки Tailscale; натомість вони дотримуються звичайного HTTP auth mode gateway. Цей безтокенний потік припускає, що хост gateway є довіреним. Типове значення `true`, коли `tailscale.mode = "serve"`. -- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб автентифікації. Застосовується для кожного IP клієнта і для кожної області автентифікації (shared-secret і device-token відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`. +- **Застарілі alias для bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не alias хостів (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). +- **Примітка щодо 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**: типово обов’язкова. Не-loopback bind вимагають auth gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням identity з `gateway.auth.mode: "trusted-proxy"`. Майстер onboarding типово генерує token. +- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно встановіть `gateway.auth.mode` у `token` або `password`. Під час запуску та потоків встановлення/відновлення сервісу виникає помилка, якщо налаштовано обидва поля, а mode не задано. +- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних конфігурацій loopback; цей варіант навмисно не пропонується в запитах onboarding. +- `gateway.auth.mode: "trusted-proxy"`: делегує auth reverse proxy з урахуванням identity та довіряє заголовкам identity від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому самому хості не задовольняють auth trusted-proxy. +- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольнити auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint HTTP API **не** використовують цю auth через заголовки Tailscale; вони дотримуються звичайного режиму HTTP auth gateway. Цей потік без token припускає, що хост 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 limiting (для тестових конфігурацій або суворих розгортань proxy). -- Спроби WS-автентифікації з джерел browser-origin завжди обмежуються без винятку для loopback (захист у глибину від браузерного brute force на localhost). -- На loopback ці блокування для browser-origin ізольовані за нормалізованим значенням `Origin`, + - `gateway.auth.rateLimit.exemptLoopback` типово дорівнює `true`; установіть `false`, коли свідомо хочете також обмежувати localhost-трафік (для тестових конфігурацій або суворих розгортань proxy). +- Спроби auth WS з походження браузера завжди обмежуються без винятку для loopback (додатковий захист від brute force localhost із браузера). +- На loopback ці блокування з походження браузера ізолюються за нормалізованим значенням `Origin`, тому повторні збої з одного localhost-origin не призводять автоматично до блокування іншого origin. -- `tailscale.mode`: `serve` (лише tailnet, loopback bind) або `funnel` (публічно, потребує auth). -- `controlUi.allowedOrigins`: явний allowlist browser-origin для підключень Gateway WebSocket. Обов’язковий, коли браузерні клієнти очікуються з не-loopback origin. -- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервне визначення origin за заголовком Host для розгортань, які навмисно покладаються на політику origin за заголовком Host. +- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічний доступ, вимагає auth). +- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язковий, коли очікуються клієнти браузера з не-loopback origin. +- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервний варіант origin на основі заголовка Host для розгортань, які свідомо покладаються на політику origin заголовка Host. - `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`. -- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське перевизначення break-glass, яке дозволяє відкритий `ws://` до довірених IP приватної мережі; типово відкритий текст і далі дозволено лише для loopback. -- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують автентифікацію gateway. -- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього APNs relay, який використовують офіційні/TestFlight збірки iOS після того, як публікують до gateway реєстрації на основі relay. Цей URL має збігатися з URL relay, скомпільованим у збірку iOS. -- `gateway.push.apns.relay.timeoutMs`: timeout надсилання від gateway до relay у мілісекундах. Типове значення `10000`. -- Реєстрації на основі relay делегуються конкретній identity gateway. Під’єднаний застосунок iOS викликає `gateway.identity.get`, включає цю identity до реєстрації relay і пересилає gateway grant на надсилання в межах цієї реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію. +- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійне клієнтське перевизначення, яке дозволяє відкритий `ws://` до довірених IP приватної мережі; типово відкритий текст, як і раніше, дозволено лише для loopback. +- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway. +- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього APNs relay, який використовують офіційні/TestFlight iOS-збірки після публікації relay-backed registrations у gateway. Цей URL має збігатися з URL relay, скомпільованим в iOS-збірку. +- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від gateway до relay у мілісекундах. Типове значення `10000`. +- Relay-backed registrations делегуються конкретній identity gateway. Прив’язаний застосунок iOS викликає `gateway.identity.get`, включає цю identity в relay registration і пересилає до gateway дозвіл надсилання в межах registration. Інший gateway не може повторно використати це збережене registration. - `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові перевизначення через env для наведеної вище конфігурації relay. -- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки, аварійний варіант для loopback HTTP relay URL. У production URL relay мають залишатися на HTTPS. -- `gateway.channelHealthCheckMinutes`: інтервал моніторингу здоров’я каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски health-monitor. Типове значення: `5`. -- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого socket у хвилинах. Зберігайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`. -- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків health-monitor на канал/обліковий запис у ковзну годину. Типове значення: `10`. -- `channels..healthMonitor.enabled`: відмова від перезапусків health-monitor для окремого каналу зі збереженням глобального монітора. -- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису в багатооблікових каналах. Якщо встановлено, має пріоритет над перевизначенням на рівні каналу. -- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не встановлено. -- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і вони не визначені, визначення завершується fail-closed (без маскування резервним переходом до remote). -- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Перелічуйте лише proxy, якими ви керуєте. Записи loopback усе ще дійсні для same-host proxy/локального визначення (наприклад Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`. +- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний варіант лише для розробки для loopback HTTP relay URL. У production URL relay мають залишатися на HTTPS. +- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски health-monitor. Типове значення: `5`. +- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого socket у хвилинах. Має бути більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`. +- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків health-monitor для кожного каналу/облікового запису за ковзну годину. Типове значення: `10`. +- `channels..healthMonitor.enabled`: відмова від перезапусків health-monitor для окремого каналу за збереження глобального монітора увімкненим. +- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису для каналів із кількома обліковими записами. Якщо встановлено, має пріоритет над перевизначенням на рівні каналу. +- Шляхи виклику локального gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не встановлено. +- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не визначено, визначення завершується із закритою відмовою (без маскування резервним remote-варіантом). +- `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.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список deny). -- `gateway.tools.allow`: прибрати назви інструментів із типового HTTP deny list. +- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборон). +- `gateway.tools.allow`: прибирає назви інструментів із типового списку заборон HTTP. -### Endpoint OpenAI-compatible +### OpenAI-сумісні endpoint - Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`. - Responses API: `gateway.http.endpoints.responses.enabled`. -- Загартування URL-входу Responses: +- Посилення захисту URL-входів Responses: - `gateway.http.endpoints.responses.maxUrlParts` - `gateway.http.endpoints.responses.files.urlAllowlist` - `gateway.http.endpoints.responses.images.urlAllowlist` - Порожні allowlist трактуються як не встановлені; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` + Порожні allowlist вважаються невстановленими; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL. -- Необов’язковий заголовок загартування відповіді: +- Необов’язковий заголовок посилення захисту відповіді: - `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS-origin, якими ви керуєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts)) ### Ізоляція кількох екземплярів -Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану: +Запускайте кілька gateway на одному хості з унікальними портами та каталогами стану: ```bash OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \ @@ -3137,7 +3137,7 @@ OPENCLAW_STATE_DIR=~/.openclaw-a \ openclaw gateway --port 19001 ``` -Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile ` (використовує `~/.openclaw-`). +Зручні прапори: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile ` (використовує `~/.openclaw-`). Див. [Кілька Gateway](/uk/gateway/multiple-gateways). @@ -3157,11 +3157,11 @@ openclaw gateway --port 19001 } ``` -- `enabled`: вмикає термінацію TLS на слухачі gateway (HTTPS/WSS) (типово: `false`). -- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовані; лише для локального/dev використання. -- `certPath`: шлях файлової системи до файла сертифіката TLS. -- `keyPath`: шлях файлової системи до файла приватного ключа TLS; зберігайте з обмеженими дозволами. -- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнта або користувацьких ланцюгів довіри. +- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`). +- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для локального використання/розробки. +- `certPath`: шлях у файловій системі до файла TLS-сертифіката. +- `keyPath`: шлях у файловій системі до приватного ключа TLS; тримайте його з обмеженими правами доступу. +- `caPath`: необов’язковий шлях до комплекту CA для перевірки клієнта або власних ланцюжків довіри. ### `gateway.reload` @@ -3177,13 +3177,13 @@ openclaw gateway --port 19001 } ``` -- `mode`: керує тим, як редагування конфігурації застосовуються під час runtime. - - `"off"`: ігнорувати живі зміни; зміни потребують явного перезапуску. - - `"restart"`: завжди перезапускати процес gateway при зміні конфігурації. - - `"hot"`: застосовувати зміни в процесі без перезапуску. - - `"hybrid"` (типово): спочатку пробувати hot reload; за потреби резервно переходити до перезапуску. +- `mode`: керує тим, як зміни конфігурації застосовуються під час runtime. + - `"off"`: ігнорує live-редагування; зміни вимагають явного перезапуску. + - `"restart"`: завжди перезапускає процес gateway при зміні конфігурації. + - `"hot"`: застосовує зміни в межах процесу без перезапуску. + - `"hybrid"` (типово): спочатку пробує hot reload; за потреби переходить до перезапуску. - `debounceMs`: вікно debounce в мс перед застосуванням змін конфігурації (невід’ємне ціле число). -- `deferralTimeoutMs`: максимальний час у мс для очікування завершення in-flight операцій перед примусовим перезапуском (типово: `300000` = 5 хвилин). +- `deferralTimeoutMs`: максимальний час у мс, протягом якого очікується завершення операцій у процесі перед примусовим перезапуском (типово: `300000` = 5 хвилин). --- @@ -3220,37 +3220,37 @@ openclaw gateway --port 19001 } ``` -Автентифікація: `Authorization: Bearer ` або `x-openclaw-token: `. -Hook token у рядку запиту відхиляються. +Auth: `Authorization: Bearer ` або `x-openclaw-token: `. +Токени hooks у рядку запиту відхиляються. Примітки щодо валідації та безпеки: -- `hooks.enabled=true` потребує непорожній `hooks.token`. -- `hooks.token` має бути **відмінним** від `gateway.auth.token`; повторне використання токена Gateway відхиляється. +- `hooks.enabled=true` вимагає непорожнього `hooks.token`. +- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання токена Gateway відхиляється. - `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`. -- Якщо `hooks.allowRequestSessionKey=true`, обмежуйте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`). +- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`). **Endpoint:** - `POST /hooks/wake` → `{ text, mode?: "now"|"next-heartbeat" }` - `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }` - - `sessionKey` з payload запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`). + - `sessionKey` із payload запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`). - `POST /hooks/` → визначається через `hooks.mappings` - + -- `match.path` відповідає підшляху після `/hooks` (наприклад `/hooks/gmail` → `gmail`). +- `match.path` відповідає підшляху після `/hooks` (наприклад, `/hooks/gmail` → `gmail`). - `match.source` відповідає полю payload для загальних шляхів. -- Шаблони на кшталт `{{messages[0].subject}}` зчитуються з payload. -- `transform` може вказувати на модуль JS/TS, що повертає дію hook. - - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються). -- `agentId` маршрутизує до конкретного агента; невідомі ID резервно переходять до типового. +- Шаблони на кшталт `{{messages[0].subject}}` читають значення з payload. +- `transform` може вказувати на модуль JS/TS, який повертає дію hook. + - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та вихід за межі каталогу відхиляються). +- `agentId` маршрутизує до конкретного агента; невідомі ID використовують типового агента як резервний варіант. - `allowedAgentIds`: обмежує явну маршрутизацію (`*` або відсутність = дозволити всі, `[]` = заборонити всі). -- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook agent без явного `sessionKey`. -- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` задавати `sessionKey` (типово: `false`). -- `allowedSessionKeyPrefixes`: необов’язковий allowlist префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. +- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook-агента без явного `sessionKey`. +- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` задавати `sessionKey` (типово: `false`). +- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. - `deliver: true` надсилає фінальну відповідь у канал; `channel` типово дорівнює `last`. -- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо каталог моделей налаштовано). +- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо задано каталог моделей). @@ -3294,18 +3294,18 @@ Hook token у рядку запиту відхиляються. } ``` -- Обслуговує HTML/CSS/JS, які агент може редагувати, і A2UI через HTTP на порту Gateway: +- Обслуговує HTML/CSS/JS та A2UI, які може редагувати агент, через HTTP на порту Gateway: - `http://:/__openclaw__/canvas/` - `http://:/__openclaw__/a2ui/` - Лише локально: зберігайте `gateway.bind: "loopback"` (типово). -- Для bind не-loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), як і інші HTTP-поверхні Gateway. -- Node WebView зазвичай не надсилають заголовки auth; після того як Node з’єднано в пару й підключено, Gateway повідомляє URL можливостей у межах Node для доступу до canvas/A2UI. -- URL можливостей прив’язані до активної WS-сесії Node і швидко закінчують дію. Резервний варіант на основі IP не використовується. -- Вбудовує клієнт live-reload в HTML, що обслуговується. -- Автоматично створює стартовий `index.html`, якщо каталог порожній. +- Для не-loopback bind: маршрути canvas вимагають auth Gateway (token/password/trusted-proxy), як і інші HTTP-поверхні Gateway. +- Node WebViews зазвичай не надсилають заголовки auth; після прив’язки та підключення node Gateway рекламує URL можливостей у межах node для доступу до canvas/A2UI. +- URL можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується. +- Вбудовує клієнт live-reload в обслуговуваний HTML. +- Автоматично створює початковий `index.html`, коли каталог порожній. - Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`. - Зміни потребують перезапуску gateway. -- Вимкніть live reload для великих каталогів або за помилок `EMFILE`. +- Вимкніть live reload для великих каталогів або у разі помилок `EMFILE`. --- @@ -3323,9 +3323,9 @@ Hook token у рядку запиту відхиляються. } ``` -- `minimal` (типово): не включає `cliPath` + `sshPort` у TXT-записи. +- `minimal` (типово): не включає `cliPath` + `sshPort` до TXT-записів. - `full`: включає `cliPath` + `sshPort`. -- Назва хоста типово `openclaw`. Перевизначається через `OPENCLAW_MDNS_HOSTNAME`. +- Ім’я хоста типово `openclaw`. Перевизначайте через `OPENCLAW_MDNS_HOSTNAME`. ### Wide-area (DNS-SD) @@ -3337,7 +3337,7 @@ Hook token у рядку запиту відхиляються. } ``` -Записує unicast DNS-SD zone у `~/.openclaw/dns/`. Для виявлення між мережами поєднайте з DNS-сервером (рекомендовано CoreDNS) + split DNS Tailscale. +Записує зону unicast DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + split DNS Tailscale. Налаштування: `openclaw dns setup --apply`. @@ -3345,7 +3345,7 @@ Hook token у рядку запиту відхиляються. ## Середовище -### `env` (inline env vars) +### `env` (вбудовані env-змінні) ```json5 { @@ -3362,14 +3362,14 @@ Hook token у рядку запиту відхиляються. } ``` -- Inline env vars застосовуються лише тоді, коли в середовищі процесу відсутній відповідний ключ. -- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден не перевизначає наявні змінні). +- Вбудовані env-змінні застосовуються лише тоді, коли в середовищі процесу бракує цього ключа. +- Файли `.env`: `.env` у поточному робочому каталозі + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні). - `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell. -- Повний порядок пріоритетів див. у [Середовище](/uk/help/environment). +- Повний порядок пріоритету див. у [Environment](/uk/help/environment). -### Підстановка env var +### Підстановка env-змінних -Посилайтеся на env vars у будь-якому рядку конфігурації через `${VAR_NAME}`: +Посилайтеся на env-змінні в будь-якому рядку конфігурації через `${VAR_NAME}`: ```json5 { @@ -3379,9 +3379,9 @@ Hook token у рядку запиту відхиляються. } ``` -- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`. +- Відповідають лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`. - Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації. -- Екрануйте через `$${VAR}`, щоб отримати буквальний `${VAR}`. +- Екрануйте через `$${VAR}` для буквального `${VAR}`. - Працює з `$include`. --- @@ -3392,7 +3392,7 @@ Hook token у рядку запиту відхиляються. ### `SecretRef` -Використовуйте одну форму об’єкта: +Використовуйте один об’єкт такої форми: ```json5 { source: "env" | "file" | "exec", provider: "default", id: "..." } @@ -3401,18 +3401,18 @@ Hook token у рядку запиту відхиляються. Валідація: - шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$` -- шаблон `id` для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$` -- `source: "file"` `id`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`) -- шаблон `id` для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$` -- `source: "exec"` `id` не повинні містити сегменти шляху `.` або `..`, розділені слешами (наприклад `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) -- `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`. -- Посилання `auth-profiles.json` включаються у визначення runtime та покриття аудиту. +- `secrets apply` націлюється на підтримувані шляхи облікових даних `openclaw.json`. +- Посилання `auth-profiles.json` включено до визначення runtime і охоплення аудиту. -### Конфігурація постачальників секретів +### Конфігурація provider секретів ```json5 { @@ -3442,13 +3442,13 @@ Hook token у рядку запиту відхиляються. Примітки: -- Постачальник `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`). -- Постачальник `exec` потребує абсолютного шляху `command` і використовує протокольні payload через stdin/stdout. -- Типово шляхи команд-символьних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання з перевіркою шляху до визначеної цілі. -- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до шляху визначеної цілі. -- Середовище дочірнього процесу `exec` типово мінімальне; передавайте потрібні змінні явно через `passEnv`. -- Посилання на секрети визначаються під час активації в in-memory snapshot, після чого шляхи запитів читають лише цей snapshot. -- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на ввімкнених поверхнях спричиняють помилку запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою. +- Provider `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`). +- Provider `exec` вимагає абсолютний шлях `command` і використовує payload протоколу через stdin/stdout. +- Типово шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання з перевіркою шляху визначеної цілі. +- Якщо налаштовано `trustedDirs`, перевірка довірених каталогів застосовується до шляху визначеної цілі. +- Середовище дочірнього процесу `exec` типово мінімальне; явно передавайте потрібні змінні через `passEnv`. +- Посилання на секрети визначаються під час активації в знімок у пам’яті, після чого шляхи запитів читають лише цей знімок. +- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на ввімкнених поверхнях призводять до збою запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою. --- @@ -3471,12 +3471,12 @@ Hook token у рядку запиту відхиляються. ``` - Профілі для окремого агента зберігаються в `/auth-profiles.json`. -- `auth-profiles.json` підтримує посилання на рівні значення (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних. -- Профілі в режимі OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef. -- Статичні runtime-облікові дані беруться з визначених in-memory snapshot; застарілі статичні записи `auth.json` очищаються під час виявлення. -- Застарілий імпорт OAuth із `~/.openclaw/credentials/oauth.json`. +- `auth-profiles.json` підтримує посилання на рівні значення (`keyRef` для `api_key`, `tokenRef` для `token`) для режимів статичних облікових даних. +- Профілі в режимі OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані профілю auth на основі SecretRef. +- Статичні облікові дані runtime надходять із визначених знімків у пам’яті; legacy-записи статичного `auth.json` очищаються після виявлення. +- Застарілі імпорти OAuth з `~/.openclaw/credentials/oauth.json`. - Див. [OAuth](/uk/concepts/oauth). -- Поведінка runtime для секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets). +- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets). ### `auth.cooldowns` @@ -3499,19 +3499,19 @@ Hook token у рядку запиту відхиляються. ``` - `billingBackoffHours`: базовий backoff у годинах, коли профіль завершується помилкою через справжні - billing/insufficient-credit помилки (типово: `5`). Явний текст про billing - усе ще може потрапити сюди навіть для відповідей `401`/`403`, але matcher-и - тексту, специфічні для постачальника, залишаються обмеженими постачальником, якому вони належать (наприклад OpenRouter - `Key limit exceeded`). Retryable-повідомлення HTTP `402` про usage-window або - обмеження витрат organization/workspace натомість залишаються в шляху `rate_limit`. -- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для кожного постачальника. + помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст білінгу все одно може + потрапити сюди навіть за відповідей `401`/`403`, але text matcher для окремих provider + залишаються в межах provider, якому вони належать (наприклад, OpenRouter + `Key limit exceeded`). Повторювані повідомлення `402` про вікно використання або + ліміти витрат organization/workspace натомість залишаються в шляху `rate_limit`. +- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для окремих provider. - `billingMaxHours`: обмеження в годинах для експоненційного зростання billing backoff (типово: `24`). -- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високовпевнених збоїв `auth_permanent` (типово: `10`). +- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для збоїв `auth_permanent` із високою впевненістю (типово: `10`). - `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`). -- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (типово: `24`). -- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile в межах одного постачальника для помилок перевантаження перед переходом до резервної моделі (типово: `1`). Сюди потрапляють форми provider-busy, як-от `ModelNotReadyException`. -- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого постачальника/профілю (типово: `0`). -- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile в межах одного постачальника для помилок обмеження швидкості перед переходом до резервної моделі (типово: `1`). До цього кошика rate-limit входить текст, специфічний для постачальника, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`. +- `failureWindowHours`: ковзне вікно в годинах, яке використовується для лічильників backoff (типово: `24`). +- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого provider для помилок перевантаження перед переходом до резервної моделі (типово: `1`). Такі стани зайнятості provider, як `ModelNotReadyException`, потрапляють сюди. +- `overloadedBackoffMs`: фіксована затримка перед повторною спробою перевантаженого provider/ротації профілю (типово: `0`). +- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого provider для помилок rate-limit перед переходом до резервної моделі (типово: `1`). До цього кошика rate-limit входить текст, характерний для provider, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`. --- @@ -3531,9 +3531,9 @@ Hook token у рядку запиту відхиляються. ``` - Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`. -- Установіть `logging.file` для стабільного шляху. -- `consoleLevel` підвищується до `debug` при `--verbose`. -- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого запис пригнічується (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів. +- Установіть `logging.file`, щоб використовувати стабільний шлях. +- `consoleLevel` підвищується до `debug`, коли використовується `--verbose`. +- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого записи припиняються (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів. --- @@ -3570,20 +3570,20 @@ Hook token у рядку запиту відхиляються. } ``` -- `enabled`: головний перемикач для виводу instrumentation (типово: `true`). -- `flags`: масив рядків-прапорців, що вмикають цільовий вивід журналів (підтримує wildcard-шаблони на кшталт `"telegram.*"` або `"*"`). -- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про застряглу сесію, поки сесія залишається в стані обробки. -- `otel.enabled`: вмикає pipeline експорту OpenTelemetry (типово: `false`). -- `otel.endpoint`: URL collector для експорту OTel. +- `enabled`: головний перемикач для виводу інструментування (типово: `true`). +- `flags`: масив рядків-прапорів, що вмикають цільовий вивід журналу (підтримує шаблони з `*`, як-от `"telegram.*"` або `"*"`). +- `stuckSessionWarnMs`: поріг віку в мс для виводу попереджень про завислі сесії, поки сесія залишається в стані обробки. +- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`). +- `otel.endpoint`: URL колектора для експорту OTel. - `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`. -- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються разом із запитами експорту OTel. -- `otel.serviceName`: назва service для атрибутів resource. -- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт trace, metrics або logs. -- `otel.sampleRate`: частота семплювання trace `0`–`1`. -- `otel.flushIntervalMs`: інтервал періодичного flush телеметрії в мс. -- `cacheTrace.enabled`: журналювати знімки cache trace для вбудованих запусків (типово: `false`). -- `cacheTrace.filePath`: шлях виводу для JSONL cache trace (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`). -- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається до виводу cache trace (усі типово: `true`). +- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel. +- `otel.serviceName`: назва сервісу для атрибутів ресурсу. +- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнення експорту трасувань, метрик або журналів. +- `otel.sampleRate`: коефіцієнт вибірки трасувань `0`–`1`. +- `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в мс. +- `cacheTrace.enabled`: журналює знімки трасування кешу для вбудованих запусків (типово: `false`). +- `cacheTrace.filePath`: шлях виводу для JSONL трасування кешу (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`). +- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід трасування кешу (усі типово: `true`). --- @@ -3605,12 +3605,12 @@ Hook token у рядку запиту відхиляються. } ``` -- `channel`: канал релізів для npm/git-встановлень — `"stable"`, `"beta"` або `"dev"`. +- `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`). +- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням у каналі stable (типово: `6`; максимум: `168`). +- `auto.stableJitterHours`: додаткове вікно розподілу розгортання для каналу stable в годинах (типово: `12`; максимум: `168`). +- `auto.betaCheckIntervalHours`: як часто виконуються перевірки каналу beta в годинах (типово: `1`; максимум: `24`). --- @@ -3643,22 +3643,22 @@ Hook token у рядку запиту відхиляються. } ``` -- `enabled`: глобальний feature gate для ACP (типово: `false`). -- `dispatch.enabled`: незалежний gate для dispatch ходів сесій ACP (типово: `true`). Установіть `false`, щоб залишити ACP-команди доступними, але заблокувати виконання. -- `backend`: ID типового backend runtime ACP (має відповідати зареєстрованому Plugin runtime ACP). -- `defaultAgent`: резервний ID цільового агента ACP, коли spawn не задає явну ціль. -- `allowedAgents`: allowlist ID агентів, дозволених для runtime-сесій ACP; порожнє значення означає відсутність додаткових обмежень. -- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP. +- `enabled`: глобальний feature gate ACP (типово: `false`). +- `dispatch.enabled`: незалежний gate для диспетчеризації ходів ACP-сесій (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання. +- `backend`: id типового backend runtime ACP (має відповідати зареєстрованому ACP runtime Plugin). +- `defaultAgent`: резервний цільовий id агента ACP, коли створення сесій не задає явної цілі. +- `allowedAgents`: список дозволених id агентів для ACP runtime sessions; порожнє значення означає відсутність додаткових обмежень. +- `maxConcurrentSessions`: максимальна кількість одночасно активних ACP-сесій. - `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту. - `stream.maxChunkChars`: максимальний розмір фрагмента перед розбиттям проєкції потокового блока. -- `stream.repeatSuppression`: пригнічувати повторювані рядки status/tool у межах ходу (типово: `true`). -- `stream.deliveryMode`: `"live"` передає потік інкрементально; `"final_only"` буферизує до terminal event ходу. -- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих tool event (типово: `"paragraph"`). -- `stream.maxOutputChars`: максимальна кількість символів виводу помічника, що проєктується за один хід ACP. +- `stream.repeatSuppression`: пригнічує повторювані рядки статусу/інструментів у межах одного ходу (типово: `true`). +- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до термінальних подій ходу. +- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`). +- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується за один хід ACP. - `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP. -- `stream.tagVisibility`: запис назв тегів до булевих перевизначень видимості для потокових event. -- `runtime.ttlMinutes`: idle TTL у хвилинах для worker сесій ACP до моменту, коли вони можуть бути очищені. -- `runtime.installCommand`: необов’язкова команда встановлення, яку слід виконати під час bootstrap середовища runtime ACP. +- `stream.tagVisibility`: запис назв тегів у логічні перевизначення видимості для потокових подій. +- `runtime.ttlMinutes`: idle TTL у хвилинах для воркерів ACP-сесій перед можливим очищенням. +- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час bootstrap середовища runtime ACP. --- @@ -3674,17 +3674,17 @@ Hook token у рядку запиту відхиляються. } ``` -- `cli.banner.taglineMode` керує стилем слогана banner: +- `cli.banner.taglineMode` керує стилем слогана банера: - `"random"` (типово): ротаційні кумедні/сезонні слогани. - `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`). - - `"off"`: без тексту слогана (назва/версія banner усе одно показуються). -- Щоб приховати весь banner (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`. + - `"off"`: без тексту слогана (назва/версія банера все одно показуються). +- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`. --- ## Wizard -Метадані, записані потоками керованого налаштування CLI (`onboard`, `configure`, `doctor`): +Метадані, які записують потоки покрокового налаштування CLI (`onboard`, `configure`, `doctor`): ```json5 { @@ -3702,13 +3702,13 @@ Hook token у рядку запиту відхиляються. ## Identity -Див. поля identity у `agents.list` у розділі [Типові значення агента](#agent-defaults). +Див. поля identity в `agents.list` у розділі [Типові значення агентів](#agent-defaults). --- -## Bridge (застарілий, вилучений) +## Bridge (legacy, removed) -Поточні збірки більше не містять TCP bridge. Node підключаються через Gateway WebSocket. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі). +Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі). @@ -3748,11 +3748,11 @@ Hook token у рядку запиту відхиляються. } ``` -- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків cron перед очищенням із `sessions.json`. Також керує очищенням архівованих видалених стенограм cron. Типове значення: `24h`; установіть `false`, щоб вимкнути. -- `runLog.maxBytes`: максимальний розмір файла журналу для одного запуску (`cron/runs/.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`. Також керує очищенням архівованих видалених стенограм Cron. Типове значення: `24h`; установіть `false`, щоб вимкнути. +- `runLog.maxBytes`: максимальний розмір одного файла журналу запуску (`cron/runs/.jsonl`) перед очищенням. Типове значення: `2_000_000` байтів. +- `runLog.keepLines`: кількість найновіших рядків, що зберігаються, коли запускається очищення журналу запуску. Типове значення: `2000`. +- `webhookToken`: bearer token, який використовується для доставки POST до webhook Cron (`delivery.mode = "webhook"`); якщо не вказано, заголовок auth не надсилається. +- `webhook`: застарілий legacy fallback URL webhook (http/https), який використовується лише для збережених завдань, що все ще мають `notify: true`. ### `cron.retry` @@ -3770,9 +3770,9 @@ Hook token у рядку запиту відхиляються. - `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань у разі тимчасових помилок (типово: `3`; діапазон: `0`–`10`). - `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів). -- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Якщо пропущено, повторюються всі тимчасові типи. +- `retryOn`: типи помилок, які запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не вказуйте, щоб повторювати для всіх тимчасових типів. -Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку помилок. +Застосовується лише до одноразових завдань Cron. Повторювані завдання використовують окрему обробку збоїв. ### `cron.failureAlert` @@ -3790,11 +3790,11 @@ Hook token у рядку запиту відхиляються. } ``` -- `enabled`: увімкнути сповіщення про збої для cron-завдань (типово: `false`). -- `after`: кількість послідовних збоїв перед спрацьовуванням сповіщення (додатне ціле число, мінімум: `1`). -- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число). -- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` виконує POST на налаштований webhook. -- `accountId`: необов’язковий ID облікового запису або каналу для обмеження доставки сповіщень. +- `enabled`: увімкнути сповіщення про збої для завдань Cron (типово: `false`). +- `after`: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мінімум: `1`). +- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для одного й того самого завдання (невід’ємне ціле число). +- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` виконує POST до налаштованого webhook. +- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщень. ### `cron.failureDestination` @@ -3811,51 +3811,51 @@ Hook token у рядку запиту відхиляються. } ``` -- Типова ціль для сповіщень про збої cron у всіх завданнях. -- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних про ціль. +- Типова ціль для сповіщень про збої Cron для всіх завдань. +- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли доступно достатньо даних цілі. - `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки. - `to`: явна ціль announce або URL webhook. Обов’язково для режиму webhook. - `accountId`: необов’язкове перевизначення облікового запису для доставки. - `delivery.failureDestination` для окремого завдання перевизначає це глобальне типове значення. -- Коли не встановлено ані глобальну, ані для окремого завдання ціль збоїв, завдання, які вже доставляють через `announce`, у разі збою резервно використовують цю основну ціль announce. -- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо основний `delivery.mode` завдання не дорівнює `"webhook"`. +- Коли не встановлено ні глобальну, ні окрему ціль збоїв, завдання, які вже доставляють через `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 відстежуються як [фонові завдання](/uk/automation/tasks). --- ## Змінні шаблону моделі медіа -Плейсхолдери шаблону, що розгортаються в `tools.media.models[].args`: +Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`: -| Змінна | Опис | -| ----------------- | ------------------------------------------------- | -| `{{Body}}` | Повне тіло вхідного повідомлення | -| `{{RawBody}}` | Сире тіло (без обгорток історії/відправника) | -| `{{BodyStripped}}`| Тіло зі stripped груповими згадками | -| `{{From}}` | Ідентифікатор відправника | -| `{{To}}` | Ідентифікатор призначення | -| `{{MessageSid}}` | ID повідомлення каналу | -| `{{SessionId}}` | UUID поточної сесії | -| `{{IsNewSession}}`| `"true"`, коли створено нову сесію | -| `{{MediaUrl}}` | Псевдо-URL вхідного медіа | -| `{{MediaPath}}` | Локальний шлях до медіа | -| `{{MediaType}}` | Тип медіа (image/audio/document/…) | -| `{{Transcript}}` | Транскрипт аудіо | -| `{{Prompt}}` | Визначений media prompt для записів CLI | -| `{{MaxChars}}` | Визначена максимальна кількість вихідних символів для записів CLI | -| `{{ChatType}}` | `"direct"` або `"group"` | -| `{{GroupSubject}}`| Тема групи (best effort) | -| `{{GroupMembers}}`| Попередній перегляд учасників групи (best effort) | -| `{{SenderName}}` | Відображуване ім’я відправника (best effort) | -| `{{SenderE164}}` | Номер телефону відправника (best effort) | -| `{{Provider}}` | Підказка постачальника (whatsapp, telegram, discord тощо) | +| Змінна | Опис | +| ----------------- | ----------------------------------------------- | +| `{{Body}}` | Повне тіло вхідного повідомлення | +| `{{RawBody}}` | Сире тіло (без обгорток історії/відправника) | +| `{{BodyStripped}}`| Тіло з вилученими згадками в групі | +| `{{From}}` | Ідентифікатор відправника | +| `{{To}}` | Ідентифікатор призначення | +| `{{MessageSid}}` | ID повідомлення каналу | +| `{{SessionId}}` | UUID поточної сесії | +| `{{IsNewSession}}`| `"true"`, коли створено нову сесію | +| `{{MediaUrl}}` | Псевдо-URL вхідного медіа | +| `{{MediaPath}}` | Локальний шлях до медіа | +| `{{MediaType}}` | Тип медіа (image/audio/document/…) | +| `{{Transcript}}` | Аудіостенограма | +| `{{Prompt}}` | Визначений prompt медіа для записів CLI | +| `{{MaxChars}}` | Визначена максимальна кількість символів виводу для записів CLI | +| `{{ChatType}}` | `"direct"` або `"group"` | +| `{{GroupSubject}}`| Тема групи (за можливості) | +| `{{GroupMembers}}`| Попередній список учасників групи (за можливості) | +| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) | +| `{{SenderE164}}` | Номер телефону відправника (за можливості) | +| `{{Provider}}` | Підказка provider (`whatsapp`, `telegram`, `discord` тощо) | --- -## Include конфігурації (`$include`) +## Включення конфігурації (`$include`) -Розділіть конфігурацію на кілька файлів: +Розділяйте конфігурацію на кілька файлів: ```json5 // ~/.openclaw/openclaw.json @@ -3868,14 +3868,14 @@ Hook token у рядку запиту відхиляються. } ``` -**Поведінка злиття:** +**Поведінка об’єднання:** -- Один файл: замінює об’єкт, у якому міститься. -- Масив файлів: deep-merge у порядку переліку (пізніші перевизначають ранніші). -- Сусідні ключі: зливаються після include (перевизначають включені значення). -- Вкладені include: до 10 рівнів глибини. -- Шляхи: визначаються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/форми з `../` дозволені лише тоді, коли вони все одно визначаються в межах цієї межі. -- Помилки: зрозумілі повідомлення про відсутні файли, помилки парсингу та циклічні include. +- Один файл: замінює об’єкт-контейнер. +- Масив файлів: глибоко об’єднується за порядком (пізніші перевизначають ранніші). +- Сусідні ключі: об’єднуються після включень (перевизначають включені значення). +- Вкладені включення: до 10 рівнів глибини. +- Шляхи: визначаються відносно файла, що включає, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` від `openclaw.json`). Абсолютні форми/форми `../` дозволені лише тоді, коли вони все одно визначаються в межах цієї границі. +- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних включень. ---