diff --git a/docs/uk/concepts/agent.md b/docs/uk/concepts/agent.md index f4ded547e..bc1ff471d 100644 --- a/docs/uk/concepts/agent.md +++ b/docs/uk/concepts/agent.md @@ -1,50 +1,54 @@ --- read_when: - - Зміна середовища виконання агента, ініціалізації робочого простору або поведінки сесії -summary: Середовище виконання агента, контракт робочого простору та ініціалізація сесії + - Зміна середовища виконання агента, ініціалізації робочого простору або поведінки сеансу +summary: Середовище виконання агента, контракт робочого простору та початкове завантаження сеансу title: Середовище виконання агента x-i18n: - generated_at: "2026-04-24T19:51:02Z" - model: gpt-5.4 + generated_at: "2026-04-30T00:29:36Z" + model: gpt-5.5 provider: openai - source_hash: 37483fdb62d41a8f888bd362db93078dc8ecb8bb3fd19270b0234689aa82f309 + source_hash: f4d65ee96cece296251d7d3a0512f12d2dfa900db0e5ffc0f37dcddae7ea55ad source_path: concepts/agent.md - workflow: 15 + workflow: 16 --- -OpenClaw запускає **єдине вбудоване середовище виконання агента** — один процес агента на Gateway, із власним робочим простором, bootstrap-файлами та сховищем сесій. Ця сторінка описує контракт цього середовища виконання: що має містити робочий простір, які файли інжектуються та як відносно нього ініціалізуються сесії. +OpenClaw запускає **єдине вбудоване середовище виконання агента** — один процес агента на +Gateway, із власною робочою областю, файлами початкового завантаження та сховищем сесій. На цій сторінці +описано контракт цього середовища виконання: що має містити робоча область, які файли +інжектуються і як сесії виконують початкове завантаження відносно неї. -## Робочий простір (обов’язково) +## Робоча область (обов’язково) -OpenClaw використовує єдиний каталог робочого простору агента (`agents.defaults.workspace`) як **єдиний** робочий каталог (`cwd`) агента для інструментів і контексту. +OpenClaw використовує єдиний каталог робочої області агента (`agents.defaults.workspace`) як **єдиний** робочий каталог агента (`cwd`) для інструментів і контексту. -Рекомендовано: використовуйте `openclaw setup`, щоб створити `~/.openclaw/openclaw.json`, якщо його немає, та ініціалізувати файли робочого простору. +Рекомендовано: використовуйте `openclaw setup`, щоб створити `~/.openclaw/openclaw.json`, якщо його немає, та ініціалізувати файли робочої області. -Повна структура робочого простору + інструкція з резервного копіювання: [Робочий простір агента](/uk/concepts/agent-workspace) +Повний макет робочої області + посібник із резервного копіювання: [Робоча область агента](/uk/concepts/agent-workspace) -Якщо ввімкнено `agents.defaults.sandbox`, сесії не в `main` можуть перевизначати це за допомогою робочих просторів для кожної сесії в `agents.defaults.sandbox.workspaceRoot` (див. +Якщо `agents.defaults.sandbox` увімкнено, неосновні сесії можуть перевизначити це +робочими областями на рівні сесії в `agents.defaults.sandbox.workspaceRoot` (див. [Конфігурація Gateway](/uk/gateway/configuration)). -## Bootstrap-файли (інжектуються) +## Файли початкового завантаження (інжектуються) -Усередині `agents.defaults.workspace` OpenClaw очікує такі редаговані користувачем файли: +Усередині `agents.defaults.workspace` OpenClaw очікує ці редаговані користувачем файли: -- `AGENTS.md` — інструкції з роботи + «пам’ять» +- `AGENTS.md` — робочі інструкції + “пам’ять” - `SOUL.md` — персона, межі, тон -- `TOOLS.md` — підтримувані користувачем примітки про інструменти (наприклад, `imsg`, `sag`, домовленості) +- `TOOLS.md` — нотатки про інструменти, які підтримує користувач (наприклад, `imsg`, `sag`, домовленості) - `BOOTSTRAP.md` — одноразовий ритуал першого запуску (видаляється після завершення) -- `IDENTITY.md` — ім’я агента/вайб/емодзі -- `USER.md` — профіль користувача + бажане звертання +- `IDENTITY.md` — ім’я/настрій/емодзі агента +- `USER.md` — профіль користувача + бажана форма звертання На першому ході нової сесії OpenClaw інжектує вміст цих файлів безпосередньо в контекст агента. -Порожні файли пропускаються. Великі файли обрізаються й усікаються з маркером, щоб промпти залишалися компактними (прочитайте файл, щоб побачити повний вміст). +Порожні файли пропускаються. Великі файли обрізаються й усікаються з маркером, щоб підказки залишалися компактними (прочитайте файл, щоб побачити повний вміст). -Якщо файл відсутній, OpenClaw інжектує один рядок-маркер «відсутній файл» (а `openclaw setup` створить безпечний типовий шаблон). +Якщо файл відсутній, OpenClaw інжектує один рядок-маркер “відсутній файл” (а `openclaw setup` створить безпечний стандартний шаблон). -`BOOTSTRAP.md` створюється лише для **абсолютно нового робочого простору** (коли немає інших bootstrap-файлів). Якщо ви видалите його після завершення ритуалу, він не повинен створюватися повторно під час наступних перезапусків. +`BOOTSTRAP.md` створюється лише для **цілком нової робочої області** (коли немає інших файлів початкового завантаження). Якщо ви видалите його після завершення ритуалу, він не повинен створюватися повторно під час наступних перезапусків. -Щоб повністю вимкнути створення bootstrap-файлів (для попередньо підготовлених робочих просторів), установіть: +Щоб повністю вимкнути створення файлів початкового завантаження (для попередньо наповнених робочих областей), задайте: ```json5 { agents: { defaults: { skipBootstrap: true } } } @@ -52,81 +56,83 @@ OpenClaw використовує єдиний каталог робочого ## Вбудовані інструменти -Основні інструменти (read/exec/edit/write та пов’язані системні інструменти) завжди доступні, -залежно від політики інструментів. `apply_patch` є необов’язковим і керується через -`tools.exec.applyPatch`. `TOOLS.md` **не** визначає, які інструменти існують; це -настанови щодо того, як _ви_ хочете, щоб вони використовувалися. +Основні інструменти (read/exec/edit/write і пов’язані системні інструменти) доступні завжди, +з урахуванням політики інструментів. `apply_patch` є необов’язковим і керується +`tools.exec.applyPatch`. `TOOLS.md` **не** контролює, які інструменти існують; це +інструкції щодо того, як _ви_ хочете їх використовувати. ## Skills -OpenClaw завантажує Skills із таких розташувань (від найвищого пріоритету до найнижчого): +OpenClaw завантажує Skills із цих розташувань (від найвищого пріоритету): -- Робочий простір: `/skills` -- Skills агентів проєкту: `/.agents/skills` -- Особисті Skills агентів: `~/.agents/skills` +- Робоча область: `/skills` +- Skills агента проєкту: `/.agents/skills` +- Особисті Skills агента: `~/.agents/skills` - Керовані/локальні: `~/.openclaw/skills` -- Вбудовані (постачаються разом з установленням) -- Додаткові теки Skills: `skills.load.extraDirs` +- Вбудовані (постачаються з інсталяцією) +- Додаткові каталоги Skills: `skills.load.extraDirs` Skills можуть керуватися конфігурацією/env (див. `skills` у [Конфігурація Gateway](/uk/gateway/configuration)). ## Межі середовища виконання Вбудоване середовище виконання агента побудоване на ядрі агента Pi (моделі, інструменти та -конвеєр промптів). Керування сесіями, виявлення, підключення інструментів і доставка через канали -— це шари, якими поверх цього ядра володіє OpenClaw. +конвеєр підказок). Керування сесіями, виявлення, підключення інструментів і доставка +в канали — це шари, якими володіє OpenClaw поверх цього ядра. ## Сесії -Транскрипти сесій зберігаються у форматі JSONL за адресою: +Транскрипти сесій зберігаються як JSONL за адресою: - `~/.openclaw/agents//sessions/.jsonl` -ID сесії є стабільним і вибирається OpenClaw. -Застарілі теки сесій з інших інструментів не читаються. +ID сесії стабільний і вибирається OpenClaw. +Застарілі каталоги сесій з інших інструментів не читаються. -## Керування під час потокової передачі +## Скерування під час потокової передачі Коли режим черги — `steer`, вхідні повідомлення інжектуються в поточний запуск. -Поставлене в чергу керування доставляється **після завершення поточним ходом асистента -виконання своїх викликів інструментів**, перед наступним викликом LLM. Керування більше не пропускає -решту викликів інструментів із поточного повідомлення асистента; натомість воно інжектує поставлене в чергу -повідомлення на наступній межі моделі. +Скерування в черзі доставляється **після того, як поточний хід асистента завершить +виконання своїх викликів інструментів**, перед наступним викликом LLM. Pi разом обробляє всі очікувані +повідомлення скерування для `steer`; застарілий `queue` обробляє одне повідомлення на +межу моделі. Скерування більше не пропускає решту викликів інструментів із поточного +повідомлення асистента. -Коли режим черги — `followup` або `collect`, вхідні повідомлення утримуються, доки -поточний хід не завершиться, після чого починається новий хід агента з поставленими в чергу корисними навантаженнями. Див. -[Черга](/uk/concepts/queue), щоб дізнатися про поведінку режимів + debounce/cap. +Коли режим черги — `followup` або `collect`, вхідні повідомлення утримуються до +завершення поточного ходу, а потім новий хід агента починається з поставленими в чергу корисними навантаженнями. Див. +[Черга](/uk/concepts/queue) і [Черга скерування](/uk/concepts/queue-steering), щоб дізнатися про режими +та поведінку на межах. -Потокова передача блоками надсилає завершені блоки асистента щойно вони завершуються; вона +Блокова потокова передача надсилає завершені блоки асистента щойно вони завершуються; вона **вимкнена за замовчуванням** (`agents.defaults.blockStreamingDefault: "off"`). -Налаштовуйте межу через `agents.defaults.blockStreamingBreak` (`text_end` чи `message_end`; типово — text_end). -Керуйте м’яким розбиттям блоків на фрагменти через `agents.defaults.blockStreamingChunk` (типово — -800–1200 символів; перевага надається розривам абзаців, потім новим рядкам; речення — в останню чергу). +Налаштуйте межу через `agents.defaults.blockStreamingBreak` (`text_end` проти `message_end`; за замовчуванням text_end). +Керуйте м’яким розбиттям блоків на фрагменти за допомогою `agents.defaults.blockStreamingChunk` (за замовчуванням +800–1200 символів; віддає перевагу розривам абзаців, потім новим рядкам; речення — останні). Об’єднуйте потокові фрагменти через `agents.defaults.blockStreamingCoalesce`, щоб зменшити -спам з одного рядка (об’єднання перед надсиланням на основі простою). Канали, крім Telegram, вимагають -явного `*.blockStreaming: true`, щоб увімкнути відповіді блоками. -Розгорнуті підсумки інструментів надсилаються на початку роботи інструмента (без debounce); Control UI -передає вивід інструментів потоком через події агента, коли це доступно. +спам окремими рядками (об’єднання перед надсиланням на основі простою). Канали, відмінні від Telegram, потребують +явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді. +Докладні підсумки інструментів виводяться під час запуску інструмента (без debounce); Control UI +транслює вивід інструментів через події агента, коли вони доступні. Докладніше: [Потокова передача + розбиття на фрагменти](/uk/concepts/streaming). ## Посилання на моделі -Посилання на моделі в конфігурації (наприклад, `agents.defaults.model` і `agents.defaults.models`) аналізуються розділенням за **першим** `/`. +Посилання на моделі в конфігурації (наприклад, `agents.defaults.model` і `agents.defaults.models`) розбираються поділом за **першим** `/`. - Використовуйте `provider/model` під час налаштування моделей. - Якщо сам ID моделі містить `/` (у стилі OpenRouter), додайте префікс провайдера (приклад: `openrouter/moonshotai/kimi-k2`). -- Якщо ви не вкажете провайдера, OpenClaw спочатку спробує псевдонім, потім — унікальний - збіг налаштованого провайдера для цього точного id моделі, і лише після цього повернеться до - налаштованого провайдера за замовчуванням. Якщо цей провайдер більше не надає - налаштовану модель за замовчуванням, OpenClaw повернеться до першої налаштованої - пари provider/model замість того, щоб показувати застаріле значення типового провайдера, який уже видалено. +- Якщо ви опустите провайдера, OpenClaw спершу спробує псевдонім, потім унікальний + збіг серед налаштованих провайдерів для саме цього ID моделі, і лише після цього повернеться + до налаштованого стандартного провайдера. Якщо цей провайдер більше не надає + налаштовану стандартну модель, OpenClaw повернеться до першого налаштованого + провайдера/моделі замість показу застарілого стандартного значення видаленого провайдера. ## Конфігурація (мінімальна) -Щонайменше налаштуйте: +Як мінімум, задайте: - `agents.defaults.workspace` -- `channels.whatsapp.allowFrom` (наполегливо рекомендовано) +- `channels.whatsapp.allowFrom` (настійно рекомендовано) --- @@ -134,6 +140,6 @@ _Далі: [Групові чати](/uk/channels/group-messages)_ 🦞 ## Пов’язане -- [Робочий простір агента](/uk/concepts/agent-workspace) -- [Маршрутизація кількох агентів](/uk/concepts/multi-agent) +- [Робоча область агента](/uk/concepts/agent-workspace) +- [Маршрутизація між кількома агентами](/uk/concepts/multi-agent) - [Керування сесіями](/uk/concepts/session) diff --git a/docs/uk/concepts/messages.md b/docs/uk/concepts/messages.md index c57b1fd0d..87bc9fa58 100644 --- a/docs/uk/concepts/messages.md +++ b/docs/uk/concepts/messages.md @@ -2,21 +2,21 @@ read_when: - Пояснення, як вхідні повідомлення перетворюються на відповіді - Уточнення сеансів, режимів постановки в чергу або поведінки потокового передавання - - Документування видимості міркування та наслідків використання -summary: Потік повідомлень, сесії, постановка в чергу та видимість міркувань + - Документування видимості міркувань і наслідків використання +summary: Потік повідомлень, сеанси, постановка в чергу та видимість міркувань title: Повідомлення x-i18n: - generated_at: "2026-04-29T21:53:13Z" + generated_at: "2026-04-30T00:29:52Z" model: gpt-5.5 provider: openai - source_hash: 32e11bec46190e37fa6ce13ff876fe7c04299ae16a3690e5bbfac1d308071660 + source_hash: dcfcc995995516b627993755b255a779c681b4976d2d724c0c11e87875e37b1e source_path: concepts/messages.md workflow: 16 --- -OpenClaw обробляє вхідні повідомлення через конвеєр визначення сеансу, постановки в чергу, стримінгу, виконання інструментів і видимості міркувань. Ця сторінка показує шлях від вхідного повідомлення до відповіді. +OpenClaw обробляє вхідні повідомлення через конвеєр визначення сесії, постановки в чергу, потокового передавання, виконання інструментів і видимості міркувань. Ця сторінка показує шлях від вхідного повідомлення до відповіді. -## Потік повідомлень (загальний рівень) +## Потік повідомлень (на високому рівні) ``` Inbound message @@ -26,23 +26,23 @@ Inbound message -> outbound replies (channel limits + chunking) ``` -Ключові параметри містяться в конфігурації: +Основні параметри розміщені в конфігурації: -- `messages.*` для префіксів, чергування та поведінки груп. -- `agents.defaults.*` для стандартних налаштувань блокового стримінгу та поділу на фрагменти. -- Перевизначення каналів (`channels.whatsapp.*`, `channels.telegram.*` тощо) для обмежень і перемикачів стримінгу. +- `messages.*` для префіксів, постановки в чергу та поведінки груп. +- `agents.defaults.*` для типових значень блокового потокового передавання та поділу на фрагменти. +- Перевизначення каналів (`channels.whatsapp.*`, `channels.telegram.*` тощо) для обмежень і перемикачів потокового передавання. Повну схему див. у [Конфігурації](/uk/gateway/configuration). ## Дедуплікація вхідних повідомлень -Канали можуть повторно доставити те саме повідомлення після перепідключення. OpenClaw зберігає короткочасний кеш за ключем канал/акаунт/учасник/сеанс/id повідомлення, щоб дублікати доставлення не запускали ще один прогін агента. +Канали можуть повторно доставити те саме повідомлення після повторного підключення. OpenClaw зберігає короткочасний кеш із ключем за каналом/обліковим записом/учасником/сесією/ідентифікатором повідомлення, щоб дубльовані доставки не запускали агента ще раз. -## Debouncing вхідних повідомлень +## Усунення брязкоту вхідних повідомлень -Швидкі послідовні повідомлення від **того самого відправника** можна об’єднувати в один хід агента через `messages.inbound`. Debouncing обмежений парою канал + розмова й використовує найновіше повідомлення для тредингу відповідей/ID. +Швидкі послідовні повідомлення від **того самого відправника** можна об’єднати в один хід агента через `messages.inbound`. Усунення брязкоту обмежується каналом + розмовою та використовує найновіше повідомлення для ланцюжків відповідей/ідентифікаторів. -Конфігурація (глобальне значення за замовчуванням + перевизначення для каналів): +Конфігурація (глобальне типове значення + перевизначення для окремих каналів): ```json5 { @@ -61,36 +61,36 @@ Inbound message Примітки: -- Debounce застосовується до повідомлень **лише з текстом**; медіа/вкладення надсилаються негайно. -- Керівні команди обходять debouncing, щоб залишатися самостійними — **крім** випадків, коли канал явно вмикає об’єднання DM від того самого відправника (наприклад, [BlueBubbles `coalesceSameSenderDms`](/uk/channels/bluebubbles#coalescing-split-send-dms-command--url-in-one-composition)), де команди DM очікують у межах вікна debounce, щоб payload із розділеного надсилання міг приєднатися до того самого ходу агента. +- Усунення брязкоту застосовується до повідомлень **лише з текстом**; медіа/вкладення надсилаються негайно. +- Керівні команди обходять усунення брязкоту, щоб залишатися окремими — **крім** випадків, коли канал явно вмикає об’єднання приватних повідомлень від того самого відправника (наприклад, [BlueBubbles `coalesceSameSenderDms`](/uk/channels/bluebubbles#coalescing-split-send-dms-command--url-in-one-composition)), де команди в приватних повідомленнях очікують у межах вікна усунення брязкоту, щоб розділене під час надсилання корисне навантаження могло долучитися до того самого ходу агента. -## Сеанси та пристрої +## Сесії та пристрої -Сеансами володіє Gateway, а не клієнти. +Сесіями володіє Gateway, а не клієнти. -- Прямі чати згортаються в ключ основного сеансу агента. -- Групи/канали отримують власні ключі сеансів. -- Сховище сеансів і транскрипти розташовані на хості Gateway. +- Прямі чати згортаються в ключ основної сесії агента. +- Групи/канали отримують власні ключі сесій. +- Сховище сесій і транскрипти розміщені на хості Gateway. -Кілька пристроїв/каналів можуть відповідати одному сеансу, але історія не повністю синхронізується назад до кожного клієнта. Рекомендація: використовуйте один основний пристрій для довгих розмов, щоб уникати розходження контексту. Control UI і TUI завжди показують транскрипт сеансу з Gateway, тому вони є джерелом істини. +Кілька пристроїв/каналів можуть відповідати тій самій сесії, але історія не повністю синхронізується назад до кожного клієнта. Рекомендація: використовуйте один основний пристрій для довгих розмов, щоб уникнути розбіжності контексту. Control UI та TUI завжди показують транскрипт сесії, підтримуваний Gateway, тож саме вони є джерелом істини. -Докладніше: [Керування сеансами](/uk/concepts/session). +Докладніше: [Керування сесіями](/uk/concepts/session). ## Метадані результатів інструментів -`content` результату інструмента — це видимий для моделі результат. `details` результату інструмента — це runtime-метадані для відображення в UI, діагностики, доставлення медіа та plugins. +`content` результату інструмента — це результат, видимий моделі. `details` результату інструмента — це runtime-метадані для відтворення в UI, діагностики, доставки медіа та плагінів. -OpenClaw явно підтримує цю межу: +OpenClaw явно зберігає цю межу: -- `toolResult.details` вилучається перед повторним відтворенням провайдером і вхідними даними Compaction. -- Збережені транскрипти сеансів утримують лише обмежені `details`; надмірно великі метадані замінюються компактним підсумком із позначкою `persistedDetailsTruncated: true`. -- Plugins та інструменти мають класти текст, який модель повинна прочитати, у `content`, а не лише в `details`. +- `toolResult.details` вилучається перед повторним відтворенням у провайдера та вхідними даними Compaction. +- Збережені транскрипти сесій зберігають лише обмежені `details`; завеликі метадані замінюються компактним підсумком із позначкою `persistedDetailsTruncated: true`. +- Плагіни та інструменти мають розміщувати текст, який модель повинна прочитати, у `content`, а не лише в `details`. ## Тіла вхідних повідомлень і контекст історії OpenClaw розділяє **тіло промпта** та **тіло команди**: -- `Body`: текст промпта, надісланий агенту. Він може містити оболонки каналу та необов’язкові обгортки історії. +- `Body`: текст промпта, надісланий агенту. Він може містити оболонки каналу й необов’язкові обгортки історії. - `CommandBody`: сирий текст користувача для розбору директив/команд. - `RawBody`: застарілий псевдонім для `CommandBody` (збережено для сумісності). @@ -99,40 +99,40 @@ OpenClaw розділяє **тіло промпта** та **тіло коман - `[Chat messages since your last reply - for context]` - `[Current message - respond to this]` -Для **непрямих чатів** (груп/каналів/кімнат) **тіло поточного повідомлення** має префікс із міткою відправника (у тому самому стилі, що використовується для записів історії). Це робить повідомлення в реальному часі та повідомлення з черги/історії узгодженими в промпті агента. +Для **непрямих чатів** (груп/каналів/кімнат) **тіло поточного повідомлення** має префікс із міткою відправника (у тому самому стилі, що й записи історії). Це забезпечує узгодженість повідомлень у реальному часі та повідомлень у черзі/історії в промпті агента. -Буфери історії є **лише pending**: вони містять групові повідомлення, які _не_ запускали прогін (наприклад, повідомлення, обмежені згадкою), і **виключають** повідомлення, які вже є в транскрипті сеансу. +Буфери історії є **лише очікуваними**: вони містять групові повідомлення, які _не_ запускали виконання (наприклад, повідомлення, що потребували згадки), і **не містять** повідомлень, які вже є в транскрипті сесії. -Вилучення директив застосовується лише до розділу **поточного повідомлення**, тому історія залишається неушкодженою. Канали, які обгортають історію, мають задавати `CommandBody` (або `RawBody`) як оригінальний текст повідомлення та залишати `Body` як об’єднаний промпт. Буфери історії налаштовуються через `messages.groupChat.historyLimit` (глобальне значення за замовчуванням) і перевизначення для каналів, як-от `channels.slack.historyLimit` або `channels.telegram.accounts..historyLimit` (встановіть `0`, щоб вимкнути). +Вилучення директив застосовується лише до розділу **поточного повідомлення**, тож історія залишається незмінною. Канали, які обгортають історію, мають встановлювати `CommandBody` (або `RawBody`) на початковий текст повідомлення й залишати `Body` як об’єднаний промпт. Буфери історії налаштовуються через `messages.groupChat.historyLimit` (глобальне типове значення) і перевизначення для окремих каналів, як-от `channels.slack.historyLimit` або `channels.telegram.accounts..historyLimit` (установіть `0`, щоб вимкнути). -## Чергування та followup-повідомлення +## Черга та подальші ходи -Якщо прогін уже активний, вхідні повідомлення можна поставити в чергу, спрямувати в поточний прогін або зібрати для наступного ходу followup. +Якщо виконання вже активне, вхідні повідомлення можна поставити в чергу, спрямувати в поточне виконання або зібрати для подальшого ходу. - Налаштовується через `messages.queue` (і `messages.queue.byChannel`). -- Режим за замовчуванням — `steer`, із 500 мс followup debounce, коли steering повертається до доставлення followup із черги. -- Режими: `steer`, `followup`, `collect`, `steer-backlog`, `interrupt` і застарілий псевдонім `queue`. +- Типовий режим — `steer`, із 500 мс усуненням брязкоту для подальшого ходу, коли спрямування повертається до доставки подальшого ходу з черги. +- Режими: `steer`, `followup`, `collect`, `steer-backlog`, `interrupt` і застарілий режим `queue` по одному за раз. -Докладніше: [Черга команд](/uk/concepts/queue). +Докладніше: [Черга команд](/uk/concepts/queue) і [Черга спрямування](/uk/concepts/queue-steering). -## Володіння прогоном каналу +## Володіння виконанням каналу -Channel plugins можуть зберігати порядок, застосовувати debounce до введення та транспортний backpressure перед тим, як повідомлення потрапить у чергу сеансу. Вони не повинні накладати окремий таймаут навколо самого ходу агента. Щойно повідомлення маршрутизовано до сеансу, довготривалу роботу контролюють життєві цикли сеансу, інструмента та runtime, щоб усі канали послідовно повідомляли про повільні ходи й відновлювалися після них. +Плагіни каналів можуть зберігати порядок, усувати брязкіт введення та застосовувати зворотний тиск транспорту до того, як повідомлення потрапить у чергу сесії. Вони не мають накладати окремий тайм-аут навколо самого ходу агента. Щойно повідомлення спрямовано до сесії, довготривала робота керується життєвими циклами сесії, інструмента та runtime, щоб усі канали послідовно повідомляли про повільні ходи й відновлювалися після них. -## Стримінг, поділ на фрагменти та пакетування +## Потокове передавання, поділ на фрагменти та пакетування -Блоковий стримінг надсилає часткові відповіді, коли модель створює текстові блоки. Поділ на фрагменти враховує текстові обмеження каналу та не розбиває fenced code. +Блокове потокове передавання надсилає часткові відповіді, коли модель створює текстові блоки. Поділ на фрагменти враховує текстові обмеження каналу та уникає розділення огородженого коду. -Ключові налаштування: +Основні налаштування: -- `agents.defaults.blockStreamingDefault` (`on|off`, за замовчуванням off) +- `agents.defaults.blockStreamingDefault` (`on|off`, типово вимкнено) - `agents.defaults.blockStreamingBreak` (`text_end|message_end`) - `agents.defaults.blockStreamingChunk` (`minChars|maxChars|breakPreference`) -- `agents.defaults.blockStreamingCoalesce` (пакетування на основі idle) +- `agents.defaults.blockStreamingCoalesce` (пакетування на основі простою) - `agents.defaults.humanDelay` (людиноподібна пауза між блоками відповідей) -- Перевизначення каналів: `*.blockStreaming` і `*.blockStreamingCoalesce` (канали, окрім Telegram, потребують явного `*.blockStreaming: true`) +- Перевизначення каналів: `*.blockStreaming` і `*.blockStreamingCoalesce` (канали, відмінні від Telegram, потребують явного `*.blockStreaming: true`) -Докладніше: [Стримінг + поділ на фрагменти](/uk/concepts/streaming). +Докладніше: [Потокове передавання + поділ на фрагменти](/uk/concepts/streaming). ## Видимість міркувань і токени @@ -140,38 +140,38 @@ OpenClaw може показувати або приховувати мірку - `/reasoning on|off|stream` керує видимістю. - Вміст міркувань усе одно враховується у використанні токенів, коли його створює модель. -- Telegram підтримує стрим міркувань у draft bubble. +- Telegram підтримує потік міркувань у бульбашку чернетки. -Докладніше: [Директиви thinking + reasoning](/uk/tools/thinking) і [Використання токенів](/uk/reference/token-use). +Докладніше: [Директиви мислення + міркувань](/uk/tools/thinking) і [Використання токенів](/uk/reference/token-use). -## Префікси, трединг і відповіді +## Префікси, ланцюжки та відповіді Форматування вихідних повідомлень централізовано в `messages`: - `messages.responsePrefix`, `channels..responsePrefix` і `channels..accounts..responsePrefix` (каскад вихідних префіксів), а також `channels.whatsapp.messagePrefix` (вхідний префікс WhatsApp) -- Трединг відповідей через `replyToMode` і стандартні значення для каналів +- Ланцюжки відповідей через `replyToMode` і типові значення для окремих каналів Докладніше: [Конфігурація](/uk/gateway/config-agents#messages) і документація каналів. ## Тихі відповіді Точний тихий токен `NO_REPLY` / `no_reply` означає “не доставляти видиму для користувача відповідь”. -Коли хід також має pending-медіа інструмента, як-от згенероване TTS-аудіо, OpenClaw вилучає тихий текст, але все одно доставляє медіавкладення. +Коли хід також має очікуване медіа інструмента, як-от згенероване TTS-аудіо, OpenClaw вилучає тихий текст, але все одно доставляє медіавкладення. OpenClaw визначає цю поведінку за типом розмови: -- Прямі розмови за замовчуванням забороняють тишу й переписують голу тиху відповідь у короткий видимий fallback. -- Групи/канали за замовчуванням дозволяють тишу. -- Внутрішня оркестрація за замовчуванням дозволяє тишу. +- Прямі розмови типово забороняють тишу й переписують голу тиху відповідь на короткий видимий резервний варіант. +- Групи/канали типово дозволяють тишу. +- Внутрішня оркестрація типово дозволяє тишу. -OpenClaw також використовує тихі відповіді для внутрішніх помилок runner, що трапляються до будь-якої відповіді асистента в непрямих чатах, щоб групи/канали не бачили шаблонний текст помилки Gateway. Прямі чати за замовчуванням показують компактний текст помилки; сирі деталі runner показуються лише коли `/verbose` має значення `on` або `full`. +OpenClaw також використовує тихі відповіді для внутрішніх збоїв runner, які трапляються до будь-якої відповіді асистента в непрямих чатах, щоб групи/канали не бачили шаблонний текст помилки Gateway. Прямі чати типово показують стислий текст збою; сирі деталі runner показуються лише коли `/verbose` має значення `on` або `full`. -Стандартні значення містяться в `agents.defaults.silentReply` і `agents.defaults.silentReplyRewrite`; `surfaces..silentReply` і `surfaces..silentReplyRewrite` можуть перевизначати їх для кожної поверхні. +Типові значення розміщені в `agents.defaults.silentReply` і `agents.defaults.silentReplyRewrite`; `surfaces..silentReply` і `surfaces..silentReplyRewrite` можуть перевизначати їх для окремої поверхні. -Коли батьківський сеанс має один або кілька pending запусків породжених subagent, голі тихі відповіді відкидаються на всіх поверхнях замість переписування, тож батьківський сеанс мовчить, доки подія завершення дочірнього процесу не доставить справжню відповідь. +Коли батьківська сесія має один або більше очікуваних породжених виконань підагентів, голі тихі відповіді відкидаються на всіх поверхнях замість переписування, тож батьківська сесія залишається тихою, доки подія завершення дочірнього виконання не доставить справжню відповідь. ## Пов’язане -- [Стримінг](/uk/concepts/streaming) — доставлення повідомлень у реальному часі -- [Повторна спроба](/uk/concepts/retry) — поведінка повторних спроб доставлення повідомлень +- [Потокове передавання](/uk/concepts/streaming) — доставка повідомлень у реальному часі +- [Повторна спроба](/uk/concepts/retry) — поведінка повторних спроб доставки повідомлень - [Черга](/uk/concepts/queue) — черга обробки повідомлень - [Канали](/uk/channels) — інтеграції з платформами обміну повідомленнями diff --git a/docs/uk/concepts/queue-steering.md b/docs/uk/concepts/queue-steering.md new file mode 100644 index 000000000..c463d357f --- /dev/null +++ b/docs/uk/concepts/queue-steering.md @@ -0,0 +1,96 @@ +--- +read_when: + - Пояснення того, як працює керування, коли агент використовує інструменти + - Зміна поведінки черги активного запуску або інтеграції керування під час виконання + - Порівняння режимів керування, черги, збирання та подальших дій +summary: Як керування активним запуском ставить повідомлення в чергу на межах середовища виконання +title: Черга керування +x-i18n: + generated_at: "2026-04-30T00:29:59Z" + model: gpt-5.5 + provider: openai + source_hash: 560390c8c26bcce95e0137f4336ad6e62bc3e2344cb15fd12ca3cfe4a85a8acc + source_path: concepts/queue-steering.md + workflow: 16 +--- + +Коли повідомлення надходить, поки запуск сеансу вже транслюється, OpenClaw може +надіслати це повідомлення в активне середовище виконання замість запуску ще одного +запуску для того самого сеансу. Публічні режими нейтральні до середовища виконання; Pi і нативний каркас сервера застосунку Codex +реалізують деталі доставки по-різному. + +## Межа середовища виконання + +Скерування не перериває виклик інструмента, який уже виконується. Pi перевіряє +наявність поставлених у чергу повідомлень скерування на межах моделі: + +1. Асистент запитує виклики інструментів. +2. Pi виконує пакет викликів інструментів поточного повідомлення асистента. +3. Pi генерує подію завершення ходу. +4. Pi вичерпує поставлені в чергу повідомлення скерування. +5. Pi додає ці повідомлення як повідомлення користувача перед наступним викликом LLM. + +Це зберігає результати інструментів у парі з повідомленням асистента, яке їх запитало, +а потім дає наступному виклику моделі побачити найновіший ввід користувача. + +Нативний каркас сервера застосунку Codex надає `turn/steer` замість +внутрішньої черги скерування Pi. OpenClaw адаптує там ті самі режими: + +- `steer` групує поставлені в чергу повідомлення протягом налаштованого тихого вікна, а потім надсилає + один запит `turn/steer` з усім зібраним вводом користувача в порядку надходження. +- `queue` зберігає застарілу серіалізовану форму, надсилаючи окремі запити `turn/steer`. +- `followup`, `collect`, `steer-backlog` і `interrupt` залишаються поведінкою черги, якою володіє OpenClaw, + навколо активного ходу Codex. + +Ходи перегляду Codex і ручної Compaction відхиляють скерування в межах того самого ходу. Коли +середовище виконання не може прийняти скерування, OpenClaw повертається до черги подальших дій там, де +цей режим це дозволяє. + +## Режими + +| Режим | Поведінка під час активного запуску | Поведінка подальшої дії пізніше | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `steer` | Вставляє всі поставлені в чергу повідомлення скерування разом на наступній межі середовища виконання. Це стандартний режим. | Повертається до подальшої дії лише тоді, коли скерування недоступне. | +| `queue` | Застаріле почергове скерування. Pi вставляє по одному поставленому в чергу повідомленню на межу моделі; Codex надсилає окремі запити `turn/steer`. | Повертається до подальшої дії лише тоді, коли скерування недоступне. | +| `steer-backlog` | Та сама поведінка скерування активного запуску, що й у `steer`. | Також зберігає те саме повідомлення для пізнішого ходу подальшої дії. | +| `followup` | Не скеровує поточний запуск. | Запускає поставлені в чергу повідомлення пізніше. | +| `collect` | Не скеровує поточний запуск. | Об'єднує сумісні поставлені в чергу повідомлення в один пізніший хід після вікна debounce. | +| `interrupt` | Перериває активний запуск, а потім запускає найновіше повідомлення. | Немає. | + +## Приклад сплеску + +Якщо четверо користувачів надсилають повідомлення, поки агент виконує виклик інструмента: + +- `steer`: активне середовище виконання отримує всі чотири повідомлення в порядку надходження перед + своїм наступним рішенням моделі. Pi вичерпує їх на наступній межі моделі; Codex + отримує їх як один пакетний `turn/steer`. +- `queue`: застаріле серіалізоване скерування. Pi вставляє по одному поставленому в чергу повідомленню за раз; + Codex отримує окремі запити `turn/steer`. +- `collect`: OpenClaw чекає, доки активний запуск завершиться, а потім створює хід подальшої дії + із сумісними поставленими в чергу повідомленнями після вікна debounce. + +## Область дії + +Скерування завжди націлене на поточний активний запуск сеансу. Воно не створює новий +сеанс, не змінює політику інструментів активного запуску й не розділяє повідомлення за відправником. У +багатокористувацьких каналах вхідні промпти вже містять контекст відправника й маршруту, тож +наступний виклик моделі може бачити, хто надіслав кожне повідомлення. + +Використовуйте `collect`, коли потрібно, щоб OpenClaw побудував пізніший хід подальшої дії, який може +об'єднувати сумісні повідомлення та зберігати політику відкидання черги подальших дій. Використовуйте +`queue` лише тоді, коли вам потрібна старіша поведінка почергового скерування. + +## Debounce + +`messages.queue.debounceMs` застосовується до доставки подальших дій, включно з `collect`, +`followup`, `steer-backlog` і резервним варіантом `steer`, коли скерування активного запуску +недоступне. Для Pi активний `steer` сам не використовує таймер debounce, тому що +Pi природно групує повідомлення до наступної межі моделі. Для нативного +каркаса Codex OpenClaw використовує те саме значення debounce як тихе вікно перед +надсиланням пакетного `turn/steer`. + +## Пов'язане + +- [Черга команд](/uk/concepts/queue) +- [Повідомлення](/uk/concepts/messages) +- [Цикл агента](/uk/concepts/agent-loop) diff --git a/docs/uk/concepts/queue.md b/docs/uk/concepts/queue.md index b4088b367..d113827e8 100644 --- a/docs/uk/concepts/queue.md +++ b/docs/uk/concepts/queue.md @@ -1,34 +1,34 @@ --- read_when: - - Зміна виконання автовідповіді або паралельності + - Зміна виконання автовідповідей або паралельності - Пояснення режимів /queue або поведінки спрямування повідомлень -summary: Режими черги автовідповідей, значення за замовчуванням і перевизначення для окремих сеансів +summary: Режими черги автовідповідей, типові значення та перевизначення для окремих сеансів title: Черга команд x-i18n: - generated_at: "2026-04-29T21:53:05Z" + generated_at: "2026-04-30T00:29:46Z" model: gpt-5.5 provider: openai - source_hash: 59d14a2b8e1b8d5bc1433c0f052869efed42912c9b85cdd79e518633d9919729 + source_hash: 2ac0c0ded9558b080714fa4b8be0d552f985911bf19b427020f9654ae4955b2d source_path: concepts/queue.md workflow: 16 --- -Ми серіалізуємо вхідні запуски автовідповідей (усі канали) через невелику внутрішньопроцесну чергу, щоб запобігти зіткненню кількох запусків агента, водночас зберігаючи безпечний паралелізм між сесіями. +Ми серіалізуємо вхідні автозапуски відповідей (усі канали) через невелику внутрішньопроцесну чергу, щоб кілька запусків агента не конфліктували між собою, водночас зберігаючи безпечний паралелізм між сесіями. -## Чому +## Навіщо -- Запуски автовідповідей можуть бути дорогими (виклики LLM) і можуть конфліктувати, коли кілька вхідних повідомлень надходять майже одночасно. -- Серіалізація дає змогу уникнути конкуренції за спільні ресурси (файли сесій, журнали, CLI stdin) і зменшує ймовірність лімітів швидкості з боку upstream. +- Автозапуски відповідей можуть бути витратними (виклики LLM) і можуть конфліктувати, коли кілька вхідних повідомлень надходять майже одночасно. +- Серіалізація запобігає конкуренції за спільні ресурси (файли сесій, журнали, CLI stdin) і зменшує ймовірність обмежень частоти на боці вищого рівня. ## Як це працює -- Черга FIFO з урахуванням lane обробляє кожен lane з налаштовуваним обмеженням паралельності (за замовчуванням 1 для неналаштованих lane; main за замовчуванням має 4, subagent — 8). -- `runEmbeddedPiAgent` додає до черги за **ключем сесії** (lane `session:`), щоб гарантувати лише один активний запуск на сесію. -- Потім кожен запуск сесії ставиться в **глобальний lane** (`main` за замовчуванням), щоб загальний паралелізм обмежувався `agents.defaults.maxConcurrent`. -- Коли ввімкнено докладне журналювання, запуски в черзі виводять коротке повідомлення, якщо чекали понад ~2 с перед стартом. -- Індикатори набору тексту все одно спрацьовують одразу під час додавання до черги (коли канал це підтримує), тому користувацький досвід не змінюється, поки ми чекаємо своєї черги. +- Черга FIFO з урахуванням смуг обробляє кожну смугу з налаштовуваним лімітом конкурентності (типово 1 для неналаштованих смуг; `main` типово 4, `subagent` — 8). +- `runEmbeddedPiAgent` ставить у чергу за **ключем сесії** (смуга `session:`), щоб гарантувати лише один активний запуск на сесію. +- Потім кожен запуск сесії ставиться у **глобальну смугу** (`main` типово), щоб загальний паралелізм обмежувався `agents.defaults.maxConcurrent`. +- Коли ввімкнено докладне журналювання, запуски в черзі видають коротке повідомлення, якщо чекали понад ~2 с перед стартом. +- Індикатори набору все одно спрацьовують одразу під час додавання в чергу (якщо канал це підтримує), тому користувацький досвід не змінюється, поки ми чекаємо своєї черги. -## Значення за замовчуванням +## Типові значення Якщо не задано, усі поверхні вхідних каналів використовують: @@ -37,25 +37,29 @@ x-i18n: - `cap: 20` - `drop: "summarize"` -`steer` є стандартним, бо він зберігає активний хід моделі чутливим до змін без -запуску другої сесії. Якщо поточний запуск не може прийняти steering, -OpenClaw повертається до запису в черзі followup. +`steer` є типовим, бо він зберігає активний хід моделі чутливим без +запуску другої сесії. Він обробляє всі керівні повідомлення, що надійшли +до наступної межі моделі. Якщо поточний запуск не може приймати керування, +OpenClaw повертається до запису черги подальшого ходу. ## Режими черги -Вхідні повідомлення можуть steer поточний запуск, чекати на followup-хід або робити і те, і те: +Вхідні повідомлення можуть керувати поточним запуском, чекати подальшого ходу або робити і те, і те: -- `steer`: додає steering-повідомлення до активного запуску Pi. Pi доставляє його **після завершення виконання викликів інструментів у поточному ході асистента**, перед наступним викликом LLM. Якщо запуск не виконує активний streaming або steering недоступний, OpenClaw повертається до запису в черзі followup. -- `followup`: додає кожне повідомлення до черги для пізнішого ходу агента після завершення поточного запуску. -- `collect`: об’єднує повідомлення в черзі в **один** followup-хід після тихого вікна. Якщо повідомлення спрямовані до різних каналів/тредів, вони обробляються окремо, щоб зберегти маршрутизацію. -- `steer-backlog` (також `steer+backlog`): steer зараз **і** зберігає те саме повідомлення для followup-ходу. -- `interrupt` (застарілий): перериває активний запуск для цієї сесії, а потім запускає найновіше повідомлення. -- `queue` (застарілий псевдонім): те саме, що `steer`. +- `steer`: поставити керівні повідомлення в чергу активного середовища виконання. Pi доставляє всі очікувані керівні повідомлення **після того, як поточний хід асистента завершить виконання викликів інструментів**, перед наступним викликом LLM; Codex app-server отримує один пакетний `turn/steer`. Якщо запуск не транслюється активно або керування недоступне, OpenClaw повертається до запису черги подальшого ходу. +- `queue` (застарілий): старе керування по одному повідомленню за раз. Pi доставляє одне керівне повідомлення з черги на кожній межі моделі; Codex app-server отримує окремі запити `turn/steer`. Віддавайте перевагу `steer`, якщо вам не потрібна попередня серіалізована поведінка. +- `followup`: поставити кожне повідомлення в чергу для пізнішого ходу агента після завершення поточного запуску. +- `collect`: об’єднати повідомлення в черзі в **один** подальший хід після вікна тиші. Якщо повідомлення адресовані різним каналам/темам, вони обробляються окремо, щоб зберегти маршрутизацію. +- `steer-backlog` (також `steer+backlog`): керувати зараз **і** зберегти те саме повідомлення для подальшого ходу. +- `interrupt` (застарілий): перервати активний запуск для цієї сесії, а потім запустити найновіше повідомлення. -Steer-backlog означає, що ви можете отримати followup-відповідь після steered-запуску, тому -поверхні streaming можуть виглядати як дублікати. Віддавайте перевагу `collect`/`steer`, якщо хочете +Steer-backlog означає, що ви можете отримати подальшу відповідь після керованого запуску, тому +поверхні потокового передавання можуть виглядати як дублікати. Віддавайте перевагу `collect`/`steer`, якщо хочете одну відповідь на кожне вхідне повідомлення. +Щодо часової поведінки й залежностей, специфічних для середовища виконання, див. +[Черга керування](/uk/concepts/queue-steering). + Налаштуйте глобально або для кожного каналу через `messages.queue`: ```json5 @@ -74,51 +78,52 @@ Steer-backlog означає, що ви можете отримати followup- ## Параметри черги -Параметри застосовуються до `followup`, `collect` і `steer-backlog` (а також до `steer`, коли він повертається до followup): +Параметри застосовуються до `followup`, `collect` і `steer-backlog` (а також до `steer` або застарілого `queue`, коли керування повертається до подальшого ходу): -- `debounceMs`: тихе вікно перед обробкою followup у черзі. Голі числа означають мілісекунди; одиниці `ms`, `s`, `m`, `h` і `d` приймаються параметрами `/queue`. +- `debounceMs`: вікно тиші перед обробкою подальших ходів із черги. Числа без одиниць — це мілісекунди; одиниці `ms`, `s`, `m`, `h` і `d` приймаються параметрами `/queue`. - `cap`: максимальна кількість повідомлень у черзі на сесію. Значення нижче `1` ігноруються. -- `drop: "summarize"`: стандартне значення. За потреби відкидає найстаріші записи в черзі, зберігає компактні підсумки та вставляє їх як синтетичний followup prompt. -- `drop: "old"`: за потреби відкидає найстаріші записи в черзі без збереження підсумків. -- `drop: "new"`: відхиляє найновіше повідомлення, коли черга вже заповнена. +- `drop: "summarize"`: типово. За потреби відкидати найстаріші записи черги, зберігати компактні підсумки та вставляти їх як синтетичний запит подальшого ходу. +- `drop: "old"`: за потреби відкидати найстаріші записи черги без збереження підсумків. +- `drop: "new"`: відхиляти найновіше повідомлення, коли черга вже заповнена. -Стандартні значення: `debounceMs: 500`, `cap: 20`, `drop: summarize`. +Типові значення: `debounceMs: 500`, `cap: 20`, `drop: summarize`. -## Пріоритетність +## Пріоритет Для вибору режиму OpenClaw визначає: -1. Inline або збережене для сесії перевизначення `/queue`. +1. Вбудоване або збережене перевизначення `/queue` для сесії. 2. `messages.queue.byChannel.`. 3. `messages.queue.mode`. -4. Стандартний `steer`. +4. Типовий `steer`. -Для параметрів inline або збережені параметри `/queue` мають пріоритет над конфігурацією. Потім -застосовуються debounce для конкретного каналу (`messages.queue.debounceMsByChannel`), стандартні значення debounce Plugin, -глобальні параметри `messages.queue` і вбудовані стандартні значення. `cap` і `drop` є глобальними/сесійними параметрами, а не конфігураційними -ключами для конкретного каналу. +Для параметрів вбудовані або збережені параметри `/queue` мають перевагу над конфігурацією. Потім +застосовуються затримка для конкретного каналу (`messages.queue.debounceMsByChannel`), типові значення затримки +Plugin, глобальні параметри `messages.queue` і вбудовані типові значення. +`cap` і `drop` — це глобальні/сесійні параметри, а не ключі конфігурації для кожного каналу. ## Перевизначення для сесії - Надішліть `/queue ` як окрему команду, щоб зберегти режим для поточної сесії. -- Параметри можна комбінувати: `/queue collect debounce:0.5s cap:25 drop:summarize` +- Параметри можна поєднувати: `/queue collect debounce:0.5s cap:25 drop:summarize` - `/queue default` або `/queue reset` очищає перевизначення сесії. -## Область дії та гарантії +## Обсяг і гарантії -- Застосовується до запусків агентів автовідповідей у всіх вхідних каналах, які використовують конвеєр відповідей gateway (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat тощо). -- Стандартний lane (`main`) є спільним для процесу для вхідних повідомлень + основних heartbeat; задайте `agents.defaults.maxConcurrent`, щоб дозволити кілька сесій паралельно. -- Можуть існувати додаткові lane (наприклад, `cron`, `cron-nested`, `nested`, `subagent`), щоб фонові завдання могли виконуватися паралельно, не блокуючи вхідні відповіді. Ізольовані cron-ходи агента утримують слот `cron`, тоді як їхнє внутрішнє виконання агента використовує `cron-nested`; обидва використовують `cron.maxConcurrentRuns`. Спільні не-cron потоки `nested` зберігають власну поведінку lane. Ці відокремлені запуски відстежуються як [фонові завдання](/uk/automation/tasks). -- Lane для сесії гарантують, що лише один запуск агента одночасно працює з конкретною сесією. -- Без зовнішніх залежностей або фонових worker-потоків; чистий TypeScript + promises. +- Застосовується до запусків агентів авто-відповідей у всіх вхідних каналах, що використовують конвеєр відповідей Gateway (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat тощо). +- Типова смуга (`main`) є загальною для процесу для вхідних повідомлень і основних Heartbeat; задайте `agents.defaults.maxConcurrent`, щоб дозволити кілька сесій паралельно. +- Можуть існувати додаткові смуги (наприклад, `cron`, `cron-nested`, `nested`, `subagent`), щоб фонові завдання могли виконуватися паралельно, не блокуючи вхідні відповіді. Ізольовані ходи агента cron утримують слот `cron`, поки їхнє внутрішнє виконання агента використовує `cron-nested`; обидва використовують `cron.maxConcurrentRuns`. Спільні не-cron потоки `nested` зберігають власну поведінку смуги. Ці відокремлені запуски відстежуються як [фонові завдання](/uk/automation/tasks). +- Смуги для сесій гарантують, що лише один запуск агента торкається певної сесії одночасно. +- Без зовнішніх залежностей або фонових робочих потоків; чистий TypeScript + проміси. ## Усунення несправностей -- Якщо здається, що команди зависли, увімкніть докладні журнали та шукайте рядки “queued for …ms”, щоб підтвердити, що черга обробляється. -- Якщо вам потрібна глибина черги, увімкніть докладні журнали та стежте за рядками часу черги. -- Коли діагностику ввімкнено, сесії, що залишаються в `processing` довше за `diagnostics.stuckSessionWarnMs`, записують попередження про завислу сесію. Активні embedded-запуски, активні операції відповідей і активні завдання lane за замовчуванням залишаються лише попередженнями; застарілий startup-облік без активної роботи сесії може звільнити відповідний lane сесії, щоб робота в черзі оброблялася. +- Якщо здається, що команди застрягли, увімкніть докладні журнали й шукайте рядки “queued for …ms”, щоб підтвердити, що черга обробляється. +- Якщо вам потрібна глибина черги, увімкніть докладні журнали й стежте за рядками часу черги. +- Коли діагностику ввімкнено, сесії, що залишаються в `processing` довше за `diagnostics.stuckSessionWarnMs`, записують попередження про застряглу сесію. Активні вбудовані запуски, активні операції відповіді та активні завдання смуги типово залишаються лише попередженнями; застарілий облік запуску без активної роботи сесії може звільнити відповідну смугу сесії, щоб робота з черги оброблялася. ## Пов’язане - [Керування сесіями](/uk/concepts/session) +- [Черга керування](/uk/concepts/queue-steering) - [Політика повторних спроб](/uk/concepts/retry) diff --git a/docs/uk/gateway/config-agents.md b/docs/uk/gateway/config-agents.md index 885c63d67..ae0d9724c 100644 --- a/docs/uk/gateway/config-agents.md +++ b/docs/uk/gateway/config-agents.md @@ -1,28 +1,28 @@ --- read_when: - - Налаштування типових параметрів агента (моделі, мислення, робоча область, Heartbeat, медіа, Skills) - - Налаштування багатоагентної маршрутизації та прив’язок + - Налаштування стандартних параметрів агента (моделі, мислення, робочий простір, Heartbeat, медіа, Skills) + - Налаштування мультиагентної маршрутизації та прив’язок - Налаштування поведінки сеансу, доставки повідомлень і режиму розмови -summary: Типові налаштування агента, багатоагентна маршрутизація, сеанс, повідомлення та конфігурація спілкування +summary: Типові налаштування агента, багатоагентна маршрутизація, сесія, повідомлення та конфігурація talk title: Конфігурація — агенти x-i18n: - generated_at: "2026-04-29T21:53:11Z" + generated_at: "2026-04-30T00:30:00Z" model: gpt-5.5 provider: openai - source_hash: 71ffa1a7315a9f12b9685ca4aeef1414a5da994105f4466718fea56f3c53fbc2 + source_hash: 61f2d33ae1d3f4ce07636ae4584b9e344fd14e8e08a2612bb1f39ed71c99c25a source_path: gateway/config-agents.md workflow: 16 --- -Ключі конфігурації на рівні агента під `agents.*`, `multiAgent.*`, `session.*`, -`messages.*` і `talk.*`. Для каналів, інструментів, середовища виконання Gateway та інших +Ключі конфігурації в межах агента під `agents.*`, `multiAgent.*`, `session.*`, +`messages.*` і `talk.*`. Для каналів, інструментів, runtime Gateway та інших ключів верхнього рівня див. [Довідник конфігурації](/uk/gateway/configuration-reference). -## Типові значення агента +## Типові налаштування агента ### `agents.defaults.workspace` -За замовчуванням: `~/.openclaw/workspace`. +Типово: `~/.openclaw/workspace`. ```json5 { @@ -32,7 +32,7 @@ x-i18n: ### `agents.defaults.repoRoot` -Необов’язковий корінь репозиторію, показаний у рядку Runtime системного промпта. Якщо не задано, OpenClaw автоматично визначає його, рухаючись угору від робочої області. +Необов'язковий корінь репозиторію, що показується в рядку Runtime системного промпта. Якщо не задано, OpenClaw автоматично визначає його, рухаючись угору від робочого простору. ```json5 { @@ -42,7 +42,7 @@ x-i18n: ### `agents.defaults.skills` -Необов’язковий типовий список дозволених skill для агентів, які не задають +Необов'язковий типовий список дозволених Skills для агентів, які не задають `agents.list[].skills`. ```json5 @@ -58,15 +58,15 @@ x-i18n: } ``` -- Не вказуйте `agents.defaults.skills`, щоб за замовчуванням skills були без обмежень. -- Не вказуйте `agents.list[].skills`, щоб успадкувати типові значення. -- Задайте `agents.list[].skills: []`, щоб skills не було. +- Опустіть `agents.defaults.skills`, щоб типово дозволити необмежені Skills. +- Опустіть `agents.list[].skills`, щоб успадкувати типові значення. +- Задайте `agents.list[].skills: []`, щоб не використовувати Skills. - Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він - не об’єднується з типовими значеннями. + не об'єднується з типовими значеннями. ### `agents.defaults.skipBootstrap` -Вимикає автоматичне створення bootstrap-файлів робочої області (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`). +Вимикає автоматичне створення файлів початкового налаштування робочого простору (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`). ```json5 { @@ -76,10 +76,10 @@ x-i18n: ### `agents.defaults.contextInjection` -Керує тим, коли bootstrap-файли робочої області вставляються в системний промпт. За замовчуванням: `"always"`. +Керує тим, коли файли початкового налаштування робочого простору вставляються в системний промпт. Типово: `"always"`. -- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторну вставку bootstrap робочої області, зменшуючи розмір промпта. Запуски Heartbeat і повтори після Compaction усе ще перебудовують контекст. -- `"never"`: вимикає bootstrap робочої області та вставку контекстних файлів на кожному ході. Використовуйте це лише для агентів, які повністю керують життєвим циклом власного промпта (власні рушії контексту, нативні середовища виконання, що будують власний контекст, або спеціалізовані робочі процеси без bootstrap). Ходи Heartbeat і відновлення після Compaction також пропускають вставку. +- `"continuation-skip"`: безпечні кроки продовження (після завершеної відповіді асистента) пропускають повторне вставлення початкового налаштування робочого простору, зменшуючи розмір промпта. Запуски Heartbeat і повтори після Compaction все одно перебудовують контекст. +- `"never"`: вимикає початкове налаштування робочого простору та вставлення контекстних файлів на кожному кроці. Використовуйте це лише для агентів, які повністю керують життєвим циклом свого промпта (власні контекстні рушії, нативні runtime, що будують власний контекст, або спеціалізовані робочі процеси без початкового налаштування). Кроки Heartbeat і відновлення після Compaction також пропускають вставлення. ```json5 { @@ -89,7 +89,7 @@ x-i18n: ### `agents.defaults.bootstrapMaxChars` -Максимальна кількість символів на bootstrap-файл робочої області перед обрізанням. За замовчуванням: `12000`. +Максимальна кількість символів на файл початкового налаштування робочого простору перед обрізанням. Типово: `12000`. ```json5 { @@ -99,7 +99,7 @@ x-i18n: ### `agents.defaults.bootstrapTotalMaxChars` -Максимальна загальна кількість символів, вставлених з усіх bootstrap-файлів робочої області. За замовчуванням: `60000`. +Максимальна загальна кількість символів, що вставляються з усіх файлів початкового налаштування робочого простору. Типово: `60000`. ```json5 { @@ -109,12 +109,12 @@ x-i18n: ### `agents.defaults.bootstrapPromptTruncationWarning` -Керує текстом попередження, видимим для агента, коли bootstrap-контекст обрізано. -За замовчуванням: `"once"`. +Керує текстом попередження, видимим агенту, коли контекст початкового налаштування обрізано. +Типово: `"once"`. - `"off"`: ніколи не вставляти текст попередження в системний промпт. -- `"once"`: вставляти попередження один раз для кожної унікальної сигнатури обрізання (рекомендовано). -- `"always"`: вставляти попередження під час кожного запуску, коли є обрізання. +- `"once"`: вставляти попередження один раз для кожного унікального підпису обрізання (рекомендовано). +- `"always"`: вставляти попередження під час кожного запуску, коли існує обрізання. ```json5 { @@ -122,27 +122,27 @@ x-i18n: } ``` -### Мапа володіння бюджетом контексту +### Мапа власності бюджету контексту -OpenClaw має кілька великих бюджетів промпта/контексту, і вони навмисно -розділені за підсистемами, а не проходять усі через один універсальний -перемикач. +OpenClaw має кілька великих бюджетів промпта/контексту, і вони +навмисно розділені за підсистемами, а не всі проходять через один загальний +регулятор. - `agents.defaults.bootstrapMaxChars` / `agents.defaults.bootstrapTotalMaxChars`: - звичайна вставка bootstrap робочої області. + звичайне вставлення початкового налаштування робочого простору. - `agents.defaults.startupContext.*`: - одноразова преамбула запуску моделі після reset/startup, включно з нещодавніми щоденними - файлами `memory/*.md`. Команди звичайного чату `/new` і `/reset` + одноразова преамбула модельного запуску під час скидання/старту, включно з нещодавніми щоденними + файлами `memory/*.md`. Прості чат-команди `/new` і `/reset` підтверджуються без виклику моделі. - `skills.limits.*`: - компактний список skills, вставлений у системний промпт. + компактний список Skills, вставлений у системний промпт. - `agents.defaults.contextLimits.*`: - обмежені уривки середовища виконання та вставлені блоки, якими володіє середовище виконання. + обмежені runtime-уривки та вставлені блоки, якими володіє runtime. - `memory.qmd.limits.*`: - розмір індексованого фрагмента пошуку в пам’яті та вставки. + розмір індексованого фрагмента пошуку пам'яті та вставлення. -Використовуйте відповідне перевизначення на рівні агента лише тоді, коли одному агенту потрібен інший +Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший бюджет: - `agents.list[].skillsLimits.maxSkillsPromptChars` @@ -150,8 +150,8 @@ OpenClaw має кілька великих бюджетів промпта/ко #### `agents.defaults.startupContext` -Керує преамбулою першого ходу, що вставляється під час запусків моделі reset/startup. -Команди звичайного чату `/new` і `/reset` підтверджують скидання без виклику +Керує стартовою преамбулою першого кроку, що вставляється під час модельних запусків скидання/старту. +Прості чат-команди `/new` і `/reset` підтверджують скидання без виклику моделі, тому вони не завантажують цю преамбулу. ```json5 @@ -173,7 +173,7 @@ OpenClaw має кілька великих бюджетів промпта/ко #### `agents.defaults.contextLimits` -Спільні типові значення для обмежених поверхонь контексту середовища виконання. +Спільні типові значення для обмежених поверхонь runtime-контексту. ```json5 { @@ -190,18 +190,18 @@ OpenClaw має кілька великих бюджетів промпта/ко } ``` -- `memoryGetMaxChars`: типове обмеження уривка `memory_get` перед додаванням +- `memoryGetMaxChars`: типова межа уривка `memory_get` до додавання метаданих обрізання та повідомлення про продовження. - `memoryGetDefaultLines`: типове вікно рядків `memory_get`, коли `lines` - не вказано. -- `toolResultMaxChars`: обмеження результатів live-інструментів, що використовується для збережених результатів і + опущено. +- `toolResultMaxChars`: межа результату live-інструмента, що використовується для збережених результатів і відновлення після переповнення. -- `postCompactionMaxChars`: обмеження уривка AGENTS.md, що використовується під час вставки +- `postCompactionMaxChars`: межа уривка AGENTS.md, що використовується під час вставлення оновлення після Compaction. #### `agents.list[].contextLimits` -Перевизначення для окремого агента для спільних перемикачів `contextLimits`. Пропущені поля успадковуються +Перевизначення для окремого агента для спільних регуляторів `contextLimits`. Опущені поля успадковуються з `agents.defaults.contextLimits`. ```json5 @@ -228,7 +228,7 @@ OpenClaw має кілька великих бюджетів промпта/ко #### `skills.limits.maxSkillsPromptChars` -Глобальне обмеження для компактного списку skills, що вставляється в системний промпт. Це +Глобальна межа для компактного списку Skills, вставленого в системний промпт. Це не впливає на читання файлів `SKILL.md` за потреби. ```json5 @@ -243,7 +243,7 @@ OpenClaw має кілька великих бюджетів промпта/ко #### `agents.list[].skillsLimits.maxSkillsPromptChars` -Перевизначення бюджету промпта skills для окремого агента. +Перевизначення бюджету промпта Skills для окремого агента. ```json5 { @@ -262,8 +262,8 @@ OpenClaw має кілька великих бюджетів промпта/ко ### `agents.defaults.imageMaxDimensionPx` -Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень transcript/tool перед викликами провайдера. -За замовчуванням: `1200`. +Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень транскрипта/інструмента перед викликами провайдера. +Типово: `1200`. Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload запиту для запусків із великою кількістю скриншотів. Вищі значення зберігають більше візуальних деталей. @@ -276,7 +276,7 @@ OpenClaw має кілька великих бюджетів промпта/ко ### `agents.defaults.userTimezone` -Часовий пояс для контексту системного промпта (не для часових міток повідомлень). Використовує часовий пояс хоста як fallback. +Часовий пояс для контексту системного промпта (не для часових позначок повідомлень). Повертається до часового поясу хоста. ```json5 { @@ -286,7 +286,7 @@ OpenClaw має кілька великих бюджетів промпта/ко ### `agents.defaults.timeFormat` -Формат часу в системному промпті. За замовчуванням: `auto` (налаштування ОС). +Формат часу в системному промпті. Типово: `auto` (налаштування ОС). ```json5 { @@ -346,57 +346,57 @@ OpenClaw має кілька великих бюджетів промпта/ко - `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Рядкова форма задає лише основну модель. - - Об’єктна форма задає основну модель плюс упорядковані резервні моделі для аварійного перемикання. + - Об’єктна форма задає основну модель плюс упорядковані моделі для відмовостійкого перемикання. - `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується шляхом інструмента `image` як його конфігурація vision-моделі. - - Також використовується як резервна маршрутизація, коли вибрана/стандартна модель не може приймати зображення на вході. - - Надавайте перевагу явним посиланням `provider/model`. Голі ідентифікатори приймаються для сумісності; якщо голий ідентифікатор однозначно відповідає налаштованому запису з підтримкою зображень у `models.providers.*.models`, OpenClaw доповнює його цим провайдером. Неоднозначні налаштовані збіги вимагають явного префікса провайдера. + - Використовується шляхом інструмента `image` як його конфігурація моделі бачення. + - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення. + - Надавайте перевагу явним посиланням `provider/model`. Голі ID приймаються для сумісності; якщо голий ID однозначно відповідає налаштованому запису з підтримкою зображень у `models.providers.*.models`, OpenClaw прив’язує його до цього провайдера. Неоднозначні налаштовані збіги потребують явного префікса провайдера. - `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструментів/plugin, що генерує зображення. + - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/Plugin, що генерує зображення. - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal, `openai/gpt-image-2` для OpenAI Images або `openai/gpt-image-1.5` для виводу OpenAI PNG/WebP із прозорим тлом. - - Якщо вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2` / `openai/gpt-image-1.5`, `FAL_KEY` для `fal/*`). - - Якщо пропущено, `image_generate` усе ще може вивести стандартного провайдера з наявною автентифікацією. Спершу він пробує поточного стандартного провайдера, потім решту зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів. + - Якщо ви вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2` / `openai/gpt-image-1.5`, `FAL_KEY` для `fal/*`). + - Якщо пропущено, `image_generate` все одно може вивести типового провайдера з автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів. - `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`. - Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.6`. - - Якщо пропущено, `music_generate` усе ще може вивести стандартного провайдера з наявною автентифікацією. Спершу він пробує поточного стандартного провайдера, потім решту зареєстрованих провайдерів генерації музики в порядку ідентифікаторів провайдерів. - - Якщо вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера. + - Якщо пропущено, `music_generate` все одно може вивести типового провайдера з автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації музики в порядку ідентифікаторів провайдерів. + - Якщо ви вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера. - `videoGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації відео та вбудованим інструментом `video_generate`. - Типові значення: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` або `qwen/wan2.7-r2v`. - - Якщо пропущено, `video_generate` усе ще може вивести стандартного провайдера з наявною автентифікацією. Спершу він пробує поточного стандартного провайдера, потім решту зареєстрованих провайдерів генерації відео в порядку ідентифікаторів провайдерів. - - Якщо вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера. - - Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`. + - Якщо пропущено, `video_generate` все одно може вивести типового провайдера з автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації відео в порядку ідентифікаторів провайдерів. + - Якщо ви вибираєте провайдера/модель напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера. + - Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд, а також параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` і `watermark`. - `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується інструментом `pdf` для маршрутизації моделі. - - Якщо пропущено, інструмент PDF повертається до `imageModel`, а потім до розв’язаної моделі сеансу/стандартної моделі. -- `pdfMaxBytesMb`: стандартний ліміт розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. -- `pdfMaxPages`: стандартна максимальна кількість сторінок, які враховує режим резервного видобування в інструменті `pdf`. -- `verboseDefault`: стандартний рівень докладності для агентів. Значення: `"off"`, `"on"`, `"full"`. Стандартно: `"off"`. -- `reasoningDefault`: стандартна видимість reasoning для агентів. Значення: `"off"`, `"on"`, `"stream"`. `agents.list[].reasoningDefault` для окремого агента перевизначає це стандартне значення. Налаштовані стандартні значення reasoning застосовуються лише для власників, авторизованих відправників або контекстів Gateway адміністратора-оператора, коли не задано перевизначення reasoning для повідомлення або сеансу. -- `elevatedDefault`: стандартний рівень підвищеного виводу для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Стандартно: `"on"`. -- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.5` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо пропустити провайдера, OpenClaw спершу пробує псевдонім, потім унікальний збіг налаштованого провайдера для цього точного ідентифікатора моделі, і лише потім повертається до налаштованого стандартного провайдера (застаріла поведінка сумісності, тому надавайте перевагу явному `provider/model`). Якщо цей провайдер більше не надає налаштовану стандартну модель, OpenClaw повертається до першої налаштованої пари провайдер/модель замість показу застарілого стандартного значення видаленого провайдера. -- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`, `chat_template_kwargs`, `extra_body`/`extraBody`). - - Безпечні зміни: використовуйте `openclaw config set agents.defaults.models '' --strict-json --merge`, щоб додати записи. `config set` відхиляє заміни, які видалили б наявні записи allowlist, якщо не передати `--replace`. - - Потоки налаштування/онбордингу в межах провайдера зливають вибрані моделі провайдера в цю мапу й зберігають уже налаштованих непов’язаних провайдерів. - - Для прямих моделей OpenAI Responses серверна Compaction вмикається автоматично. Використовуйте `params.responsesServerCompaction: false`, щоб припинити ін’єкцію `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [серверну Compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api). -- `params`: глобальні стандартні параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`). -- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), потім `agents.list[].params` (відповідний ідентифікатор агента) перевизначає за ключем. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching). -- `params.extra_body`/`params.extraBody`: розширений наскрізний JSON, що зливається в тіла запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, додаткове тіло має перевагу; ненативні маршрути completions після цього все одно видаляють OpenAI-специфічний `store`. -- `params.chat_template_kwargs`: аргументи chat-template, сумісні з vLLM/OpenAI, що зливаються в тіла запитів верхнього рівня `api: "openai-completions"`. Для `vllm/nemotron-3-*` з вимкненим thinking вбудований vLLM Plugin автоматично надсилає `enable_thinking: false` і `force_nonempty_content: true`; явні `chat_template_kwargs` перевизначають згенеровані стандартні значення, а `extra_body.chat_template_kwargs` усе ще має остаточний пріоритет. Для елементів керування thinking Qwen задайте `params.qwenThinkingFormat` як `"chat-template"` або `"top-level"` у цьому записі моделі. -- `compat.supportedReasoningEfforts`: список зусиль reasoning для кожної OpenAI-сумісної моделі. Додайте `"xhigh"` для користувацьких endpoint, які справді його приймають; тоді OpenClaw показує `/think xhigh` у меню команд, рядках сеансів Gateway, перевірці patch сеансу, перевірці CLI агента та перевірці `llm-task` для цієї налаштованої пари провайдер/модель. Використовуйте `compat.reasoningEffortMap`, коли backend очікує специфічне для провайдера значення для канонічного рівня. -- `params.preserveThinking`: opt-in лише для Z.AI для збереженого thinking. Коли ввімкнено й thinking увімкнений, OpenClaw надсилає `thinking.clear_thinking: false` і повторно відтворює попередній `reasoning_content`; див. [thinking Z.AI і збережений thinking](/uk/providers/zai#thinking-and-preserved-thinking). -- `agentRuntime`: стандартна низькорівнева політика runtime агента. Пропущений ідентифікатор стандартно означає OpenClaw Pi. Використовуйте `id: "pi"`, щоб примусово задіяти вбудований PI harness, `id: "auto"`, щоб дозволити зареєстрованим plugin harnesses забирати підтримувані моделі, зареєстрований ідентифікатор harness, як-от `id: "codex"`, або підтримуваний псевдонім CLI backend, як-от `id: "claude-cli"`. Задайте `fallback: "none"`, щоб вимкнути автоматичний fallback до PI. Явні plugin runtimes, як-от `codex`, за замовчуванням fail closed, якщо в тій самій області перевизначення не задано `fallback: "pi"`. Зберігайте посилання на моделі канонічними як `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші execution backends через runtime config замість застарілих префіксів runtime provider. Див. [runtime агентів](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору провайдера/моделі. -- Записувачі конфігурації, що змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну об’єктну форму й за можливості зберігають наявні списки fallback. -- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе ще серіалізований). Стандартно: 4. + - Використовується інструментом `pdf` для маршрутизації моделей. + - Якщо пропущено, інструмент PDF повертається до `imageModel`, а потім до розв’язаної моделі сеансу/типової моделі. +- `pdfMaxBytesMb`: типовий ліміт розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. +- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує резервний режим витягання в інструменті `pdf`. +- `verboseDefault`: типовий рівень докладності для агентів. Значення: `"off"`, `"on"`, `"full"`. Типово: `"off"`. +- `reasoningDefault`: типова видимість міркувань для агентів. Значення: `"off"`, `"on"`, `"stream"`. `agents.list[].reasoningDefault` для окремого агента перевизначає це типове значення. Налаштовані типові значення міркувань застосовуються лише для власників, авторизованих відправників або контекстів gateway operator-admin, коли не встановлено перевизначення міркувань для повідомлення чи сеансу. +- `elevatedDefault`: типовий рівень підвищеного виводу для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типово: `"on"`. +- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.5` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо ви пропускаєте провайдера, OpenClaw спершу пробує псевдонім, потім унікальний збіг налаштованого провайдера для цього точного ID моделі й лише після цього повертається до налаштованого типового провайдера (застаріла поведінка сумісності, тому надавайте перевагу явному `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw повертається до першої налаштованої пари провайдер/модель замість того, щоб показувати застаріле типове значення видаленого провайдера. +- `models`: налаштований каталог моделей і список дозволених моделей для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`, `chat_template_kwargs`, `extra_body`/`extraBody`). + - Безпечні зміни: використовуйте `openclaw config set agents.defaults.models '' --strict-json --merge`, щоб додати записи. `config set` відмовляє в замінах, які видалили б наявні записи списку дозволених, якщо ви не передасте `--replace`. + - Потоки налаштування/онбордингу в межах провайдера об’єднують вибрані моделі провайдера в цю мапу й зберігають уже налаштованих непов’язаних провайдерів. + - Для прямих моделей OpenAI Responses серверне Compaction увімкнено автоматично. Використовуйте `params.responsesServerCompaction: false`, щоб припинити вставлення `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [серверне Compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api). +- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`). +- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), потім `agents.list[].params` (відповідний ID агента) перевизначає за ключем. Докладніше див. [Кешування промптів](/uk/reference/prompt-caching). +- `params.extra_body`/`params.extraBody`: розширений JSON наскрізної передачі, що об’єднується в тіла запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, перемагає додаткове тіло; ненативні маршрути completions після цього все одно вилучають OpenAI-only `store`. +- `params.chat_template_kwargs`: OpenAI-сумісні аргументи шаблону чату vLLM, що об’єднуються в тіла запитів верхнього рівня `api: "openai-completions"`. Для `vllm/nemotron-3-*` із вимкненим thinking вбудований Plugin vLLM автоматично надсилає `enable_thinking: false` і `force_nonempty_content: true`; явні `chat_template_kwargs` перевизначають згенеровані типові значення, а `extra_body.chat_template_kwargs` усе ще має остаточний пріоритет. Для керування thinking Qwen vLLM задайте `params.qwenThinkingFormat` як `"chat-template"` або `"top-level"` у цьому записі моделі. +- `compat.supportedReasoningEfforts`: список зусиль reasoning для OpenAI-сумісної моделі. Додайте `"xhigh"` для користувацьких endpoint, які справді його приймають; тоді OpenClaw показує `/think xhigh` у меню команд, рядках сеансів Gateway, валідації патчів сеансу, валідації CLI агента та валідації `llm-task` для цього налаштованого провайдера/моделі. Використовуйте `compat.reasoningEffortMap`, коли backend потребує специфічного для провайдера значення для канонічного рівня. +- `params.preserveThinking`: Z.AI-only увімкнення збереженого thinking. Коли увімкнено і thinking активний, OpenClaw надсилає `thinking.clear_thinking: false` і відтворює попередній `reasoning_content`; див. [thinking Z.AI та збережений thinking](/uk/providers/zai#thinking-and-preserved-thinking). +- `agentRuntime`: типова низькорівнева політика runtime агента. Пропущений ID типово означає OpenClaw Pi. Використовуйте `id: "pi"`, щоб примусово застосувати вбудований PI harness, `id: "auto"`, щоб дозволити зареєстрованим plugin harnesses заявляти підтримувані моделі, зареєстрований ID harness, як-от `id: "codex"`, або підтримуваний alias backend CLI, як-от `id: "claude-cli"`. Задайте `fallback: "none"`, щоб вимкнути автоматичний fallback PI. Явні plugin runtimes, як-от `codex`, типово fail closed, якщо ви не задасте `fallback: "pi"` у тій самій області перевизначення. Зберігайте посилання на моделі канонічними як `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші execution backends через runtime config замість застарілих префіксів runtime provider. Див. [Runtimes агентів](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору провайдера/моделі. +- Записувачі конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну об’єктну форму й за можливості зберігають наявні списки fallback. +- `maxConcurrent`: максимальна кількість паралельних запусків агентів у межах сеансів (кожен сеанс усе одно серіалізований). Типово: 4. ### `agents.defaults.agentRuntime` -`agentRuntime` керує тим, який низькорівневий executor виконує ходи агента. Більшість -розгортань мають зберігати стандартний runtime OpenClaw Pi. Використовуйте його, коли довірений +`agentRuntime` керує тим, який низькорівневий виконавець запускає ходи агента. Більшості +розгортань варто залишити типовий runtime OpenClaw Pi. Використовуйте його, коли довірений Plugin надає нативний harness, як-от вбудований harness app-server Codex, -або коли потрібен підтримуваний CLI backend, як-от Claude CLI. Для ментальної -моделі див. [runtime агентів](/uk/concepts/agent-runtimes). +або коли вам потрібен підтримуваний backend CLI, як-от Claude CLI. Для ментальної +моделі див. [Runtimes агентів](/uk/concepts/agent-runtimes). ```json5 { @@ -412,16 +412,16 @@ Plugin надає нативний harness, як-от вбудований harne } ``` -- `id`: `"auto"`, `"pi"`, зареєстрований ідентифікатор plugin harness або підтримуваний псевдонім CLI backend. Вбудований Codex Plugin реєструє `codex`; вбудований Anthropic Plugin надає CLI backend `claude-cli`. -- `fallback`: `"pi"` або `"none"`. В `id: "auto"` пропущений fallback стандартно дорівнює `"pi"`, щоб старі конфігурації могли й надалі використовувати PI, коли жоден plugin harness не забирає запуск. У режимі явного plugin runtime, як-от `id: "codex"`, пропущений fallback стандартно дорівнює `"none"`, тож відсутній harness завершується помилкою замість тихого використання PI. Runtime overrides не успадковують fallback із ширшої області; задайте `fallback: "pi"` поруч із явним runtime, коли навмисно потрібен цей compatibility fallback. Збої вибраного plugin harness завжди показуються напряму. +- `id`: `"auto"`, `"pi"`, зареєстрований ID plugin harness або підтримуваний alias backend CLI. Вбудований Plugin Codex реєструє `codex`; вбудований Plugin Anthropic надає backend CLI `claude-cli`. +- `fallback`: `"pi"` або `"none"`. У `id: "auto"` пропущений fallback типово дорівнює `"pi"`, щоб старі конфігурації могли й далі використовувати PI, коли жоден plugin harness не заявляє запуск. У режимі явного runtime Plugin, як-от `id: "codex"`, пропущений fallback типово дорівнює `"none"`, щоб відсутній harness завершувався помилкою замість тихого використання PI. Перевизначення runtime не успадковують fallback із ширшої області; задайте `fallback: "pi"` поряд із явним runtime, коли навмисно хочете цей fallback сумісності. Збої вибраного plugin harness завжди показуються напряму. - Перевизначення середовища: `OPENCLAW_AGENT_RUNTIME=` перевизначає `id`; `OPENCLAW_AGENT_HARNESS_FALLBACK=pi|none` перевизначає fallback для цього процесу. -- Для розгортань лише з Codex задайте `model: "openai/gpt-5.5"` і `agentRuntime.id: "codex"`. Також можете явно задати `agentRuntime.fallback: "none"` для читабельності; це стандарт для явних plugin runtimes. +- Для розгортань лише з Codex задайте `model: "openai/gpt-5.5"` і `agentRuntime.id: "codex"`. Також можна явно задати `agentRuntime.fallback: "none"` для читабельності; це типове значення для явних plugin runtimes. - Для розгортань Claude CLI надавайте перевагу `model: "anthropic/claude-opus-4-7"` плюс `agentRuntime.id: "claude-cli"`. Застарілі посилання на моделі `claude-cli/claude-opus-4-7` усе ще працюють для сумісності, але нова конфігурація має зберігати вибір провайдера/моделі канонічним і розміщувати execution backend у `agentRuntime.id`. -- Старі ключі runtime-policy переписуються в `agentRuntime` командою `openclaw doctor --fix`. -- Вибір harness фіксується для кожного ідентифікатора сеансу після першого вбудованого запуску. Зміни конфігурації/середовища впливають на нові або скинуті сеанси, а не на наявний transcript. Застарілі сеанси з історією transcript, але без записаного pin, вважаються прив’язаними до PI. `/status` повідомляє ефективний runtime, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`. -- Це керує лише виконанням текстових ходів агента. Генерація медіа, vision, PDF, музика, відео та TTS усе ще використовують свої налаштування провайдера/моделі. +- Старі ключі політики runtime переписуються в `agentRuntime` командою `openclaw doctor --fix`. +- Вибір harness закріплюється за ID сеансу після першого вбудованого запуску. Зміни конфігурації/середовища впливають на нові або скинуті сеанси, а не на наявний transcript. Застарілі сеанси з історією transcript, але без записаного закріплення, вважаються закріпленими за PI. `/status` повідомляє ефективний runtime, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`. +- Це керує лише виконанням текстових ходів агента. Генерація медіа, бачення, PDF, музика, відео й TTS усе ще використовують свої налаштування провайдера/моделі. -**Вбудовані скорочення псевдонімів** (застосовуються лише коли модель є в `agents.defaults.models`): +**Вбудовані скорочення псевдонімів** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): | Псевдонім | Модель | | ------------------- | ------------------------------------------ | @@ -434,15 +434,15 @@ Plugin надає нативний harness, як-от вбудований harne | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Налаштовані вами псевдоніми завжди мають пріоритет над типовими. +Ваші налаштовані псевдоніми завжди мають перевагу над типовими значеннями. -Моделі Z.AI GLM-4.x автоматично вмикають режим мислення, якщо ви не встановите `--thinking off` або самостійно не визначите `agents.defaults.models["zai/"].params.thinking`. +Моделі Z.AI GLM-4.x автоматично вмикають режим мислення, якщо ви не встановите `--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, якщо явний рівень мислення не задано. +Моделі Anthropic Claude 4.6 типово використовують мислення `adaptive`, якщо явний рівень мислення не задано. ### `agents.defaults.cliBackends` -Необов’язкові бекенди CLI для резервних запусків лише з текстом (без викликів інструментів). Корисно як резервний варіант, коли API-провайдери не працюють. +Необов’язкові CLI бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як резервний варіант, коли API-провайдери дають збій. ```json5 { @@ -471,13 +471,13 @@ Plugin надає нативний harness, як-от вбудований harne } ``` -- Бекенди CLI насамперед текстові; інструменти завжди вимкнені. +- CLI бекенди насамперед текстові; інструменти завжди вимкнені. - Сеанси підтримуються, коли задано `sessionArg`. - Наскрізне передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів. ### `agents.defaults.systemPromptOverride` -Замініть весь системний промпт, зібраний OpenClaw, фіксованим рядком. Задається на рівні типових значень (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробільних символів ігнорується. Корисно для контрольованих експериментів із промптами. +Замінює весь системний промпт, зібраний OpenClaw, фіксованим рядком. Задається на рівні типових значень (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають перевагу; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із промптами. ```json5 { @@ -491,7 +491,7 @@ Plugin надає нативний harness, як-от вбудований harne ### `agents.defaults.promptOverlays` -Незалежні від провайдера накладки промптів, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний контракт поведінки для всіх провайдерів; `personality` керує лише дружнім шаром стилю взаємодії. +Незалежні від провайдера накладки промптів, застосовані за родиною моделей. Ідентифікатори моделей родини GPT-5 отримують спільний контракт поведінки для всіх провайдерів; `personality` керує лише дружнім шаром стилю взаємодії. ```json5 { @@ -508,8 +508,8 @@ Plugin надає нативний harness, як-от вбудований harne ``` - `"friendly"` (типово) і `"on"` вмикають дружній шар стилю взаємодії. -- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 залишається ввімкненим. -- Застарілий `plugins.entries.openai.config.personality` усе ще зчитується, коли це спільне налаштування не задано. +- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 лишається ввімкненим. +- Застарілий `plugins.entries.openai.config.personality` досі читається, коли це спільне налаштування не задано. ### `agents.defaults.heartbeat` @@ -541,14 +541,14 @@ Plugin надає нативний harness, як-от вбудований harne } ``` -- `every`: рядок тривалості (ms/s/m/h). Типово: `30m` (автентифікація за API-ключем) або `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-файлів робочої області. -- `isolatedSession`: коли `true`, кожен Heartbeat запускається в новому сеансі без попередньої історії розмови. Такий самий шаблон ізоляції, як у cron `sessionTarget: "isolated"`. Зменшує вартість токенів на Heartbeat приблизно зі 100 тис. до 2-5 тис. токенів. -- `skipWhenBusy`: коли `true`, запуски Heartbeat відкладаються на додаткових зайнятих лініях: робота субагента або вкладеної команди. Лінії Cron завжди відкладають Heartbeat, навіть без цього прапорця. +- `every`: рядок тривалості (ms/s/m/h). Типово: `30m` (автентифікація API-ключем) або `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 робочого простору. +- `isolatedSession`: коли `true`, кожен Heartbeat запускається в новому сеансі без попередньої історії розмови. Такий самий шаблон ізоляції, як у cron `sessionTarget: "isolated"`. Зменшує вартість токенів на Heartbeat із ~100K до ~2-5K токенів. +- `skipWhenBusy`: коли `true`, запуски Heartbeat відкладаються за наявності додаткових зайнятих ліній: роботи субагента або вкладеної команди. Лінії Cron завжди відкладають Heartbeat, навіть без цього прапорця. - Для окремого агента: задайте `agents.list[].heartbeat`. Коли будь-який агент визначає `heartbeat`, Heartbeat запускають **лише ці агенти**. - Heartbeat виконують повні ходи агента — коротші інтервали витрачають більше токенів. @@ -586,17 +586,17 @@ Plugin надає нативний harness, як-от вбудований harne ``` - `mode`: `default` або `safeguard` (фрагментоване узагальнення для довгих історій). Див. [Compaction](/uk/concepts/compaction). -- `provider`: id зареєстрованого compaction-провайдера Plugin. Коли задано, замість вбудованого LLM-узагальнення викликається `summarize()` провайдера. У разі збою виконується fallback до вбудованого механізму. Задання провайдера примусово встановлює `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). -- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції compaction, перш ніж OpenClaw її перерве. Типово: `900`. -- `keepRecentTokens`: бюджет точки відсікання Pi для збереження найновішого хвоста транскрипту дослівно. Ручний `/compact` дотримується цього, коли значення явно задано; інакше ручна compaction є жорсткою контрольною точкою. -- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає на початок вбудовані настанови щодо збереження непрозорих ідентифікаторів під час compaction-узагальнення. -- `identifierInstructions`: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. -- `qualityGuard`: перевірки з повторною спробою для некоректно сформованого виводу в safeguard-узагальненнях. Типово ввімкнено в режимі safeguard; установіть `enabled: false`, щоб пропустити аудит. -- `postCompactionSections`: необов’язкові назви H2/H3-розділів AGENTS.md для повторної ін’єкції після compaction. Типово `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторну ін’єкцію. Коли не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий fallback. -- `model`: необов’язкове перевизначення `provider/model-id` лише для compaction-узагальнення. Використовуйте це, коли основний сеанс має зберігати одну модель, а compaction-узагальнення мають виконуватися на іншій; коли не задано, compaction використовує основну модель сеансу. -- `maxActiveTranscriptBytes`: необов’язковий поріг у байтах (`number` або рядки на кшталт `"20mb"`), який запускає звичайну локальну compaction перед запуском, коли активний JSONL перевищує поріг. Потребує `truncateAfterCompaction`, щоб успішна compaction могла повернутися до меншого наступного транскрипту. Вимкнено, коли не задано або дорівнює `0`. -- `notifyUser`: коли `true`, надсилає користувачу короткі сповіщення, коли compaction починається і коли завершується (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб compaction залишалася беззвучною. -- `memoryFlush`: беззвучний агентний хід перед автоматичною compaction для збереження довготривалих спогадів. Установіть `model` на точний provider/model, як-от `ollama/qwen3:8b`, коли цей службовий хід має залишатися на локальній моделі; перевизначення не успадковує fallback-ланцюжок активного сеансу. Пропускається, коли робоча область доступна лише для читання. +- `provider`: ідентифікатор зареєстрованого plugin провайдера compaction. Коли задано, замість вбудованого LLM-узагальнення викликається `summarize()` провайдера. У разі збою відбувається повернення до вбудованого варіанта. Задання провайдера примусово встановлює `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). +- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції compaction до того, як OpenClaw перерве її. Типово: `900`. +- `keepRecentTokens`: бюджет точки відсікання Pi для дослівного збереження найсвіжішого хвоста транскрипту. Ручний `/compact` дотримується цього, коли значення явно задано; інакше ручна compaction є жорсткою контрольною точкою. +- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає на початок вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час узагальнення compaction. +- `identifierInstructions`: необов’язковий користувацький текст збереження ідентифікаторів, що використовується, коли `identifierPolicy=custom`. +- `qualityGuard`: перевірки повторної спроби у разі некоректно сформованого виводу для зведень safeguard. Типово ввімкнено в режимі safeguard; установіть `enabled: false`, щоб пропустити аудит. +- `postCompactionSections`: необов’язкові назви розділів H2/H3 з AGENTS.md для повторного вставлення після compaction. Типово `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вставлення. Коли не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант. +- `model`: необов’язкове перевизначення `provider/model-id` лише для узагальнення compaction. Використовуйте це, коли основний сеанс має зберігати одну модель, а зведення compaction мають виконуватися на іншій; коли не задано, compaction використовує основну модель сеансу. +- `maxActiveTranscriptBytes`: необов’язковий поріг у байтах (`number` або рядки на кшталт `"20mb"`), який запускає звичайну локальну compaction перед запуском, коли активний JSONL перевищує поріг. Потребує `truncateAfterCompaction`, щоб успішна compaction могла переключитися на менший наступний транскрипт. Вимкнено, коли не задано або дорівнює `0`. +- `notifyUser`: коли `true`, надсилає користувачу короткі сповіщення, коли compaction починається та коли завершується (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб compaction була тихою. +- `memoryFlush`: тихий агентний хід перед автоматичною compaction для збереження тривалих спогадів. Установіть `model` на точний provider/model, наприклад `ollama/qwen3:8b`, коли цей службовий хід має лишатися на локальній моделі; перевизначення не успадковує резервний ланцюжок активного сеансу. Пропускається, коли робочий простір доступний лише для читання. ### `agents.defaults.contextPruning` @@ -625,24 +625,24 @@ Plugin надає нативний harness, як-от вбудований harne - `mode: "cache-ttl"` вмикає проходи обрізання. -- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього звернення до кешу). -- Обрізання спершу м’яко скорочує надмірні результати інструментів, а потім, за потреби, жорстко очищає старіші результати інструментів. +- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього торкання кешу). +- Обрізання спершу м’яко скорочує завеликі результати інструментів, а потім, за потреби, повністю очищає старіші результати інструментів. **М’яке скорочення** зберігає початок + кінець і вставляє `...` посередині. -**Жорстке очищення** замінює весь результат інструмента placeholder-ом. +**Повне очищення** замінює весь результат інструмента заповнювачем. Примітки: -- Блоки зображень ніколи не скорочуються й не очищаються. -- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів. +- Блоки зображень ніколи не скорочуються й не очищуються. +- Співвідношення базуються на символах (наближено), а не на точній кількості токенів. - Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається. Див. [Обрізання сеансу](/uk/concepts/session-pruning), щоб дізнатися подробиці поведінки. -### Потокове передавання блоків +### Блокове потокове передавання ```json5 { @@ -659,10 +659,10 @@ Plugin надає нативний harness, як-от вбудований harne ``` - Канали, відмінні від Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді. -- Перевизначення каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Signal/Slack/Discord/Google Chat типово мають `minChars: 1500`. +- Перевизначення каналів: `channels..blockStreamingCoalesce` (і варіанти для окремого облікового запису). Signal/Slack/Discord/Google Chat типово використовують `minChars: 1500`. - `humanDelay`: рандомізована пауза між блоковими відповідями. `natural` = 800–2500ms. Перевизначення для окремого агента: `agents.list[].humanDelay`. -Див. [Потокове передавання](/uk/concepts/streaming), щоб дізнатися подробиці поведінки й фрагментації. +Див. [Потокове передавання](/uk/concepts/streaming), щоб дізнатися подробиці поведінки й розбиття на фрагменти. ### Індикатори набору @@ -677,8 +677,8 @@ Plugin надає нативний harness, як-от вбудований harne } ``` -- За замовчуванням: `instant` для прямих чатів/згадок, `message` для групових чатів без згадки. -- Перевизначення для окремого сеансу: `session.typingMode`, `session.typingIntervalSeconds`. +- Типові значення: `instant` для прямих чатів/згадок, `message` для групових чатів без згадки. +- Перевизначення для окремих сесій: `session.typingMode`, `session.typingIntervalSeconds`. Див. [Індикатори набору](/uk/concepts/typing-indicators). @@ -686,7 +686,7 @@ Plugin надає нативний harness, як-от вбудований harne ### `agents.defaults.sandbox` -Необов’язкова ізоляція в пісочниці для вбудованого агента. Повний посібник див. у [Ізоляція в пісочниці](/uk/gateway/sandboxing). +Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Ізоляція](/uk/gateway/sandboxing). ```json5 { @@ -732,7 +732,7 @@ Plugin надає нативний harness, як-от вбудований harne identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", - // SecretRefs / вбудований вміст також підтримуються: + // SecretRefs / inline contents also supported: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, @@ -781,52 +781,52 @@ Plugin надає нативний harness, як-от вбудований harne } ``` - + **Бекенд:** -- `docker`: локальне середовище виконання Docker (за замовчуванням) +- `docker`: локальне середовище виконання Docker (типово) - `ssh`: універсальне віддалене середовище виконання на базі SSH - `openshell`: середовище виконання OpenShell -Коли вибрано `backend: "openshell"`, специфічні для середовища виконання налаштування переміщуються до +Коли вибрано `backend: "openshell"`, налаштування, специфічні для середовища виконання, переносяться до `plugins.entries.openshell.config`. -**Конфігурація SSH-бекенда:** +**Конфігурація бекенда SSH:** -- `target`: SSH-ціль у форматі `user@host[:port]` -- `command`: команда SSH-клієнта (за замовчуванням: `ssh`) -- `workspaceRoot`: абсолютний віддалений корінь, який використовується для робочих просторів за областю -- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються до OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує в тимчасові файли під час виконання -- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH +- `target`: ціль SSH у формі `user@host[:port]` +- `command`: команда клієнта SSH (типово: `ssh`) +- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів кожної області +- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані до OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує у тимчасові файли під час виконання +- `strictHostKeyChecking` / `updateHostKeys`: перемикачі політики ключів хоста OpenSSH **Пріоритет автентифікації SSH:** - `identityData` має пріоритет над `identityFile` - `certificateData` має пріоритет над `certificateFile` - `knownHostsData` має пріоритет над `knownHostsFile` -- Значення `*Data` на базі SecretRef розв’язуються з активного знімка середовища виконання секретів до запуску сеансу пісочниці +- Значення `*Data` на базі SecretRef розв’язуються з активного знімка середовища виконання секретів до запуску ізольованої сесії -**Поведінка SSH-бекенда:** +**Поведінка бекенда SSH:** -- один раз засіває віддалений робочий простір після створення або повторного створення -- потім залишає віддалений SSH-робочий простір канонічним +- одноразово заповнює віддалений робочий простір після створення або повторного створення +- потім підтримує віддалений робочий простір SSH канонічним - маршрутизує `exec`, файлові інструменти та медіашляхи через SSH - не синхронізує віддалені зміни назад на хост автоматично -- не підтримує браузерні контейнери пісочниці +- не підтримує контейнери ізольованого браузера **Доступ до робочого простору:** -- `none`: робочий простір пісочниці для кожної області під `~/.openclaw/sandboxes` -- `ro`: робочий простір пісочниці в `/workspace`, робочий простір агента змонтовано лише для читання в `/agent` +- `none`: робочий простір ізоляції для кожної області в `~/.openclaw/sandboxes` +- `ro`: робочий простір ізоляції в `/workspace`, робочий простір агента змонтовано лише для читання в `/agent` - `rw`: робочий простір агента змонтовано для читання/запису в `/workspace` **Область:** -- `session`: контейнер + робочий простір для кожного сеансу -- `agent`: один контейнер + робочий простір на агента (за замовчуванням) -- `shared`: спільний контейнер і робочий простір (без ізоляції між сеансами) +- `session`: контейнер і робочий простір для кожної сесії +- `agent`: один контейнер і робочий простір на агента (типово) +- `shared`: спільний контейнер і робочий простір (без ізоляції між сесіями) **Конфігурація Plugin OpenShell:** @@ -856,30 +856,30 @@ Plugin надає нативний harness, як-от вбудований harne **Режим OpenShell:** -- `mirror`: засіяти віддалене середовище з локального перед exec, синхронізувати назад після exec; локальний робочий простір залишається канонічним -- `remote`: засіяти віддалене середовище один раз під час створення пісочниці, потім залишати віддалений робочий простір канонічним +- `mirror`: заповнює віддалене середовище з локального перед exec, синхронізує назад після exec; локальний робочий простір залишається канонічним +- `remote`: одноразово заповнює віддалене середовище під час створення ізоляції, потім підтримує віддалений робочий простір канонічним -У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються в пісочницю автоматично після кроку засівання. -Транспортом є SSH у пісочницю OpenShell, але Plugin відповідає за життєвий цикл пісочниці та необов’язкову дзеркальну синхронізацію. +У режимі `remote` локальні для хоста зміни, внесені поза OpenClaw, не синхронізуються в ізоляцію автоматично після етапу початкового заповнення. +Транспортом є SSH в ізоляцію OpenShell, але Plugin відповідає за життєвий цикл ізоляції та необов’язкову дзеркальну синхронізацію. -**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, кореня з можливістю запису, користувача root. +**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, кореневої файлової системи з правом запису, користувача root. -**За замовчуванням контейнери використовують `network: "none"`** — установіть `"bridge"` (або власну мостову мережу), якщо агенту потрібен вихідний доступ. -`"host"` заблоковано. `"container:"` заблоковано за замовчуванням, якщо ви явно не встановите +**Контейнери типово використовують `network: "none"`** — установіть `"bridge"` (або власну мостову мережу), якщо агенту потрібен вихідний доступ. +`"host"` заблоковано. `"container:"` типово заблоковано, якщо явно не встановити `sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний виняток). **Вхідні вкладення** розміщуються в `media/inbound/*` в активному робочому просторі. -**`docker.binds`** монтує додаткові директорії хоста; глобальні прив’язки та прив’язки для окремих агентів об’єднуються. +**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремих агентів об’єднуються. **Ізольований браузер** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вставляється в системний промпт. Не потребує `browser.enabled` в `openclaw.json`. -Доступ спостерігача noVNC за замовчуванням використовує автентифікацію VNC, а OpenClaw видає короткочасний URL із токеном (замість розкриття пароля у спільному URL). +Доступ спостерігача noVNC типово використовує автентифікацію VNC, а OpenClaw видає короткочасний URL із токеном (замість розкриття пароля в спільному URL). -- `allowHostControl: false` (за замовчуванням) блокує ізольованим сеансам націлювання на браузер хоста. -- `network` за замовчуванням дорівнює `openclaw-sandbox-browser` (виділена мостова мережа). Установлюйте `bridge` лише коли явно потрібне глобальне мостове підключення. -- `cdpSourceRange` необов’язково обмежує вхід CDP на межі контейнера до діапазону CIDR (наприклад `172.21.0.1/32`). -- `sandbox.browser.binds` монтує додаткові директорії хоста лише в контейнер браузера пісочниці. Коли встановлено (зокрема `[]`), замінює `docker.binds` для контейнера браузера. -- Стандартні параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для контейнерних хостів: +- `allowHostControl: false` (типово) блокує ізольованим сесіям доступ до браузера хоста. +- `network` типово має значення `openclaw-sandbox-browser` (виділена мостова мережа). Установлюйте `bridge` лише тоді, коли явно потрібна глобальна мостова зв’язність. +- `cdpSourceRange` необов’язково обмежує вхідний CDP-трафік на межі контейнера до діапазону CIDR (наприклад, `172.21.0.1/32`). +- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер ізольованого браузера. Коли задано (включно з `[]`), це замінює `docker.binds` для контейнера браузера. +- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для контейнерних хостів: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -896,24 +896,24 @@ Plugin надає нативний harness, як-от вбудований harne - `--renderer-process-limit=2` - `--no-zygote` - `--metrics-recording-only` - - `--disable-extensions` (увімкнено за замовчуванням) + - `--disable-extensions` (типово ввімкнено) - `--disable-3d-apis`, `--disable-software-rasterizer` і `--disable-gpu` - увімкнено за замовчуванням; їх можна вимкнути за допомогою - `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо цього потребує використання WebGL/3D. + типово ввімкнені, і їх можна вимкнути за допомогою + `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо це потрібно для використання WebGL/3D. - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` повторно вмикає розширення, якщо ваш робочий процес залежить від них. - `--renderer-process-limit=2` можна змінити за допомогою `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати - стандартний ліміт процесів Chromium. + типове обмеження процесів Chromium. - плюс `--no-sandbox`, коли ввімкнено `noSandbox`. - - Значення за замовчуванням є базовими для образу контейнера; використовуйте власний образ браузера з власною - точкою входу, щоб змінити стандартні параметри контейнера. + - Типові значення є базовим рівнем образу контейнера; використовуйте власний образ браузера з власною + точкою входу, щоб змінити типові значення контейнера. -Ізоляція браузера в пісочниці та `sandbox.docker.binds` доступні лише для Docker. +Ізоляція браузера та `sandbox.docker.binds` працюють лише з Docker. -Збирання образів: +Збірка образів: ```bash scripts/sandbox-setup.sh # main sandbox image @@ -923,11 +923,11 @@ scripts/sandbox-browser-setup.sh # optional browser image ### `agents.list` (перевизначення для окремих агентів) Використовуйте `agents.list[].tts`, щоб надати агенту власного постачальника TTS, голос, модель, -стиль або режим автоматичного TTS. Блок агента глибоко об’єднується поверх глобального -`messages.tts`, тож спільні облікові дані можуть залишатися в одному місці, а окремі +стиль або автоматичний режим TTS. Блок агента глибоко об’єднується поверх глобального +`messages.tts`, тому спільні облікові дані можуть залишатися в одному місці, а окремі агенти перевизначають лише потрібні їм поля голосу або постачальника. Перевизначення активного агента застосовується до автоматичних озвучених відповідей, `/tts audio`, `/tts status` і -інструмента агента `tts`. Приклади постачальників і порядок пріоритету див. у [Перетворення тексту на мовлення](/uk/tools/tts#per-agent-voice-overrides). +інструмента агента `tts`. Приклади постачальників і пріоритет див. у [перетворенні тексту на мовлення](/uk/tools/tts#per-agent-voice-overrides). ```json5 { @@ -981,28 +981,28 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `id`: стабільний id агента (обов’язково). -- `default`: коли задано кілька, перший має пріоритет (записується попередження). Якщо не задано жодного, типовим буде перший запис списку. -- `model`: рядкова форма задає суворий основний режим для окремого агента без запасної моделі; об’єктна форма `{ primary }` також сувора, якщо ви не додасте `fallbacks`. Використовуйте `{ primary, fallbacks: [...] }`, щоб увімкнути запасні моделі для цього агента, або `{ primary, fallbacks: [] }`, щоб явно задати сувору поведінку. Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові запасні моделі, якщо не задати `fallbacks: []`. -- `params`: параметри потоку для окремого агента, об’єднані поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних для агента перевизначень на кшталт `cacheRetention`, `temperature` або `maxTokens` без дублювання всього каталогу моделей. -- `tts`: необов’язкові перевизначення перетворення тексту на мовлення для окремого агента. Блок глибоко об’єднується поверх `messages.tts`, тому зберігайте спільні облікові дані провайдера й політику запасного варіанта в `messages.tts`, а тут задавайте лише специфічні для персони значення, як-от провайдер, голос, модель, стиль або автоматичний режим. +- `id`: стабільний ідентифікатор агента (обов’язково). +- `default`: коли задано кілька, перший має пріоритет (записується попередження). Якщо не задано жодного, типовим буде перший елемент списку. +- `model`: рядкова форма задає сувору основну модель для окремого агента без резервної моделі; об’єктна форма `{ primary }` також сувора, якщо ви не додасте `fallbacks`. Використовуйте `{ primary, fallbacks: [...] }`, щоб увімкнути резервні варіанти для цього агента, або `{ primary, fallbacks: [] }`, щоб явно вказати сувору поведінку. Завдання Cron, які перевизначають лише `primary`, все одно успадковують типові резервні варіанти, якщо ви не задасте `fallbacks: []`. +- `params`: потокові параметри для окремого агента, об’єднані поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для агент-специфічних перевизначень, як-от `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей. +- `tts`: необов’язкові перевизначення синтезу мовлення для окремого агента. Блок глибоко об’єднується з `messages.tts`, тому тримайте спільні облікові дані провайдера й політику резервування в `messages.tts`, а тут задавайте лише значення, специфічні для персони, як-от провайдер, голос, модель, стиль або автоматичний режим. - `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо пропущено, агент успадковує `agents.defaults.skills`, коли це задано; явний список замінює типові значення замість об’єднання, а `[]` означає відсутність Skills. -- `thinkingDefault`: необов’язковий типовий рівень мислення для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сеансу. Вибраний профіль провайдера/моделі визначає, які значення є допустимими; для Google Gemini `adaptive` зберігає динамічне мислення, кероване провайдером (`thinkingLevel` пропущено в Gemini 3/3.1, `thinkingBudget: -1` у Gemini 2.5). -- `reasoningDefault`: необов’язкова типова видимість міркування для окремого агента (`on | off | stream`). Перевизначає `agents.defaults.reasoningDefault` для цього агента, коли не задано перевизначення міркування для повідомлення або сеансу. -- `fastModeDefault`: необов’язкове типове значення швидкого режиму для окремого агента (`true | false`). Застосовується, коли не задано перевизначення швидкого режиму для повідомлення або сеансу. -- `agentRuntime`: необов’язкове низькорівневе перевизначення політики виконання для окремого агента. Використовуйте `{ id: "codex" }`, щоб зробити одного агента лише Codex, тоді як інші агенти зберігають типовий запасний варіант PI у режимі `auto`. -- `runtime`: необов’язковий дескриптор середовища виконання для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сеанси обгортки ACP. +- `thinkingDefault`: необов’язковий типовий рівень мислення для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для окремого повідомлення або сеансу. Вибраний профіль провайдера/моделі визначає, які значення є допустимими; для Google Gemini `adaptive` зберігає динамічне мислення, кероване провайдером (`thinkingLevel` пропущено в Gemini 3/3.1, `thinkingBudget: -1` у Gemini 2.5). +- `reasoningDefault`: необов’язкова типова видимість міркування для окремого агента (`on | off | stream`). Перевизначає `agents.defaults.reasoningDefault` для цього агента, коли не задано перевизначення міркування для окремого повідомлення або сеансу. +- `fastModeDefault`: необов’язкове типове значення швидкого режиму для окремого агента (`true | false`). Застосовується, коли не задано перевизначення швидкого режиму для окремого повідомлення або сеансу. +- `agentRuntime`: необов’язкове низькорівневе перевизначення політики виконання для окремого агента. Використовуйте `{ id: "codex" }`, щоб зробити одного агента доступним лише для Codex, тоді як інші агенти зберігають типовий резервний варіант PI у режимі `auto`. +- `runtime`: необов’язковий дескриптор середовища виконання для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сеанси ACP harness. - `identity.avatar`: шлях відносно робочого простору, URL `http(s)` або URI `data:`. - `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`. -- `subagents.allowAgents`: список дозволених id агентів для явних цілей `sessions_spawn.agentId` (`["*"]` = будь-який; типово: лише той самий агент). Додайте id ініціатора, коли мають бути дозволені самоспрямовані виклики `agentId`. -- Запобіжник успадкування пісочниці: якщо сеанс ініціатора ізольований у пісочниці, `sessions_spawn` відхиляє цілі, які запускалися б без пісочниці. -- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, які пропускають `agentId` (примушує явний вибір профілю; типово: false). +- `subagents.allowAgents`: список дозволених ідентифікаторів агентів для явних цілей `sessions_spawn.agentId` (`["*"]` = будь-який; типово: лише той самий агент). Додайте ідентифікатор запитувача, коли мають бути дозволені самонацілені виклики `agentId`. +- Захист успадкування пісочниці: якщо сеанс запитувача перебуває в пісочниці, `sessions_spawn` відхиляє цілі, які запускалися б без пісочниці. +- `subagents.requireAgentId`: коли `true`, блокує виклики `sessions_spawn`, що пропускають `agentId` (примушує явний вибір профілю; типово: false). --- -## Маршрутизація кількох агентів +## Багатоагентна маршрутизація -Запускайте кілька ізольованих агентів в одному Gateway. Див. [Кілька агентів](/uk/concepts/multi-agent). +Запускайте кілька ізольованих агентів в одному Gateway. Див. [багатоагентний режим](/uk/concepts/multi-agent). ```json5 { @@ -1021,7 +1021,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ### Поля зіставлення прив’язки -- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній тип типово означає route), `acp` для постійних прив’язок розмов ACP. +- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній тип за замовчуванням означає маршрут), `acp` для сталих прив’язок розмов ACP. - `match.channel` (обов’язково) - `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = типовий обліковий запис) - `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`) @@ -1033,13 +1033,13 @@ scripts/sandbox-browser-setup.sh # optional browser image 1. `match.peer` 2. `match.guildId` 3. `match.teamId` -4. `match.accountId` (точний, без peer/guild/team) +4. `match.accountId` (точний збіг, без peer/guild/team) 5. `match.accountId: "*"` (для всього каналу) 6. Типовий агент У межах кожного рівня перший відповідний запис `bindings` має пріоритет. -Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язки маршруту. +Для записів `type: "acp"` OpenClaw розв’язує за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує порядок рівнів прив’язки маршруту вище. ### Профілі доступу для окремих агентів @@ -1136,7 +1136,7 @@ scripts/sandbox-browser-setup.sh # optional browser image -Див. [Пісочниця й інструменти для кількох агентів](/uk/tools/multi-agent-sandbox-tools), щоб дізнатися про деталі пріоритету. +Див. [пісочниця й інструменти для багатоагентного режиму](/uk/tools/multi-agent-sandbox-tools), щоб дізнатися про подробиці пріоритетності. --- @@ -1188,34 +1188,34 @@ scripts/sandbox-browser-setup.sh # optional browser image -- **`scope`**: базова стратегія групування сеансів для контекстів групового чату. - - `per-sender` (типово): кожен відправник отримує ізольований сеанс у контексті каналу. +- **`scope`**: базова стратегія групування сеансів для контекстів групових чатів. + - `per-sender` (типово): кожен відправник отримує ізольований сеанс у межах контексту каналу. - `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли потрібен спільний контекст). -- **`dmScope`**: як групуються особисті повідомлення. +- **`dmScope`**: спосіб групування особистих повідомлень. - `main`: усі особисті повідомлення спільно використовують основний сеанс. - - `per-peer`: ізолювати за id відправника між каналами. - - `per-channel-peer`: ізолювати за каналом + відправником (рекомендовано для багатокористувацьких вхідних). + - `per-peer`: ізолювати за ідентифікатором відправника між каналами. + - `per-channel-peer`: ізолювати за каналом + відправником (рекомендовано для багатокористувацьких вхідних скриньок). - `per-account-channel-peer`: ізолювати за обліковим записом + каналом + відправником (рекомендовано для кількох облікових записів). -- **`identityLinks`**: зіставляє канонічні id з учасниками з префіксом провайдера для спільного використання сеансів між каналами. Команди стикування, як-от `/dock_discord`, використовують ту саму мапу, щоб перемкнути маршрут відповіді активного сеансу на іншого пов’язаного учасника каналу; див. [Стикування каналів](/uk/concepts/channel-docking). -- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Коли налаштовано обидва, пріоритет має той, строк якого спливає першим. Актуальність щоденного скидання використовує `sessionStartedAt` рядка сеансу; актуальність скидання через бездіяльність використовує `lastInteractionAt`. Фонові/системні записи подій, як-от heartbeat, пробудження cron, сповіщення exec і службові записи gateway, можуть оновлювати `updatedAt`, але вони не підтримують актуальність щоденних/неактивних сеансів. +- **`identityLinks`**: зіставляє канонічні ідентифікатори з peer-адресатами з префіксом провайдера для спільного використання сеансів між каналами. Команди стикування, як-от `/dock_discord`, використовують ту саму мапу, щоб перемкнути маршрут відповіді активного сеансу на інший пов’язаний peer каналу; див. [стикування каналів](/uk/concepts/channel-docking). +- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Коли налаштовано обидва, спрацьовує той, чий строк настає першим. Свіжість щоденного скидання використовує `sessionStartedAt` рядка сеансу; свіжість скидання через бездіяльність використовує `lastInteractionAt`. Фонові/системні записи подій, як-от Heartbeat, пробудження Cron, сповіщення exec і службові записи Gateway, можуть оновлювати `updatedAt`, але вони не підтримують свіжість щоденних/неактивних сеансів. - **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застаріле `dm` приймається як псевдонім для `direct`. -- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківського сеансу, дозволене під час створення розгалуженого сеансу гілки (типово `100000`). - - Якщо батьківське `totalTokens` перевищує це значення, OpenClaw запускає новий сеанс гілки замість успадкування історії транскрипту батьківського сеансу. - - Задайте `0`, щоб вимкнути цей запобіжник і завжди дозволяти розгалуження від батьківського сеансу. -- **`mainKey`**: застаріле поле. Середовище виконання завжди використовує `"main"` для основного контейнера прямого чату. -- **`agentToAgent.maxPingPongTurns`**: максимальна кількість взаємних ходів відповіді між агентами під час обмінів агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong. -- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет. -- **`maintenance`**: очищення сховища сеансів + елементи керування збереженням. +- **`parentForkMaxTokens`**: максимальна кількість `totalTokens` батьківського сеансу, дозволена під час створення відгалуженого сеансу потоку (типово `100000`). + - Якщо `totalTokens` батьківського сеансу перевищує це значення, OpenClaw запускає свіжий сеанс потоку замість успадкування історії стенограми батьківського сеансу. + - Задайте `0`, щоб вимкнути цей захист і завжди дозволяти відгалуження від батьківського сеансу. +- **`mainKey`**: застаріле поле. Середовище виконання завжди використовує `"main"` для основного кошика прямого чату. +- **`agentToAgent.maxPingPongTurns`**: максимальна кількість циклів відповідей між агентами під час обмінів агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong. +- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, зі застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет. +- **`maintenance`**: очищення сховища сеансів + керування утриманням. - `mode`: `warn` лише видає попередження; `enforce` застосовує очищення. - - `pruneAfter`: вікова межа для застарілих записів (типово `30d`). - - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`). Середовище виконання записує пакетне очищення з невеликим буфером верхньої межі для лімітів виробничого розміру; `openclaw sessions cleanup --enforce` застосовує ліміт негайно. + - `pruneAfter`: віковий поріг для застарілих записів (типово `30d`). + - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`). Середовище виконання записує пакетне очищення з невеликим high-water буфером для лімітів виробничого розміру; `openclaw sessions cleanup --enforce` застосовує ліміт негайно. - `rotateBytes`: застаріле й ігнорується; `openclaw doctor --fix` видаляє його зі старіших конфігурацій. - - `resetArchiveRetention`: збереження архівів транскриптів `*.reset.`. Типово дорівнює `pruneAfter`; задайте `false`, щоб вимкнути. - - `maxDiskBytes`: необов’язковий дисковий бюджет каталогу сеансів. У режимі `warn` записує попередження; у режимі `enforce` спершу видаляє найстаріші артефакти/сеанси. - - `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово дорівнює `80%` від `maxDiskBytes`. -- **`threadBindings`**: глобальні типові значення для функцій сеансів, прив’язаних до гілок. + - `resetArchiveRetention`: утримання архівів стенограм `*.reset.`. Типово дорівнює `pruneAfter`; задайте `false`, щоб вимкнути. + - `maxDiskBytes`: необов’язковий дисковий бюджет каталогу сеансів. У режимі `warn` записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сеанси. + - `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово `80%` від `maxDiskBytes`. +- **`threadBindings`**: глобальні типові значення для функцій сеансів, прив’язаних до потоків. - `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) - - `idleHours`: типове автоматичне зняття фокуса через бездіяльність у годинах (`0` вимикає; провайдери можуть перевизначати) + - `idleHours`: типове автоусунення фокусу через бездіяльність у годинах (`0` вимикає; провайдери можуть перевизначати) - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати) @@ -1232,7 +1232,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all removeAckAfterReply: false, queue: { - mode: "steer", // steer | followup | collect | steer-backlog | steer+backlog | queue | interrupt + mode: "steer", // steer | queue (legacy one-at-a-time) | followup | collect | steer-backlog | steer+backlog | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize @@ -1254,36 +1254,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` | -| `{thinkingLevel}` | Поточний рівень мислення | `high`, `low`, `off` | -| `{identity.name}` | Назва ідентичності агента | (те саме, що `"auto"`) | +| Змінна | Опис | Приклад | +| ----------------- | ---------------------------- | --------------------------- | +| `{model}` | Коротка назва моделі | `claude-opus-4-6` | +| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | +| `{provider}` | Назва постачальника | `anthropic` | +| `{thinkingLevel}` | Поточний рівень мислення | `high`, `low`, `off` | +| `{identity.name}` | Назва ідентичності агента | (те саме, що й `"auto"`) | -Змінні нечутливі до регістру. `{think}` є псевдонімом для `{thinkingLevel}`. +Змінні не чутливі до регістру. `{think}` є псевдонімом для `{thinkingLevel}`. ### Реакція підтвердження - За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. - Перевизначення для окремих каналів: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Порядок визначення значення: обліковий запис → канал → `messages.ackReaction` → резервне значення ідентичності. +- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення з ідентичності. - Область дії: `group-mentions` (за замовчуванням), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: видаляє підтвердження після відповіді в каналах, що підтримують реакції, як-от Slack, Discord, Telegram, WhatsApp і BlueBubbles. -- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram. - У Slack і Discord не задане значення залишає реакції статусу ввімкненими, коли активні реакції підтвердження. - У Telegram установіть його явно в `true`, щоб увімкнути реакції статусу життєвого циклу. +- `removeAckAfterReply`: прибирає підтвердження після відповіді в каналах, що підтримують реакції, як-от Slack, Discord, Telegram, WhatsApp і BlueBubbles. +- `messages.statusReactions.enabled`: вмикає реакції стану життєвого циклу в Slack, Discord і Telegram. + У Slack і Discord невстановлене значення залишає реакції стану ввімкненими, коли активні реакції підтвердження. + У Telegram установіть це явно в `true`, щоб увімкнути реакції стану життєвого циклу. -### Вхідне усунення брязкоту +### Дебаунс вхідних повідомлень -Об’єднує швидкі текстові повідомлення без медіа від того самого відправника в один хід агента. Медіа/вкладення надсилаються негайно. Керівні команди обходять усунення брязкоту. +Об’єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Медіа/вкладення скидають буфер негайно. Команди керування обходять дебаунс. ### TTS (перетворення тексту на мовлення) @@ -1333,19 +1333,19 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `auto` керує стандартним режимом автоматичного TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначати локальні налаштування, а `/tts status` показує фактичний стан. -- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного зведення. -- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням має значення `false` (потрібне явне ввімкнення). -- API-ключі резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. -- Вбудовані провайдери мовлення належать Plugin. Якщо задано `plugins.allow`, додайте кожен Plugin провайдера TTS, який хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий ідентифікатор провайдера `edge` приймається як псевдонім для `microsoft`. -- `providers.openai.baseUrl` перевизначає кінцеву точку OpenAI TTS. Порядок визначення значення: спочатку конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. -- Коли `providers.openai.baseUrl` указує на кінцеву точку, що не належить OpenAI, OpenClaw трактує її як TTS-сервер, сумісний з OpenAI, і послаблює перевірку моделі/голосу. +- `auto` керує типовим режимом автоматичного TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначати локальні налаштування, а `/tts status` показує фактичний стан. +- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку. +- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням має значення `false` (явне ввімкнення). +- Ключі API використовують резервні `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. +- Вбудовані постачальники мовлення належать Plugin. Якщо встановлено `plugins.allow`, додайте кожен Plugin постачальника TTS, який хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий ідентифікатор постачальника `edge` приймається як псевдонім для `microsoft`. +- `providers.openai.baseUrl` перевизначає кінцеву точку OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. +- Коли `providers.openai.baseUrl` вказує на кінцеву точку не OpenAI, OpenClaw розглядає її як сумісний з OpenAI сервер TTS і послаблює перевірку моделі/голосу. --- ## Розмова -Стандартні значення для режиму розмови (macOS/iOS/Android). +Типові значення для режиму розмови (macOS/iOS/Android). ```json5 { @@ -1374,16 +1374,16 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька провайдерів розмови. -- Застарілі пласкі ключі розмови (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності й автоматично мігруються в `talk.providers.`. -- Ідентифікатори голосів резервно беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. +- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кількох постачальників режиму розмови. +- Застарілі пласкі ключі режиму розмови (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності й автоматично мігруються в `talk.providers.`. +- Ідентифікатори голосів використовують резервні `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. - `providers.*.apiKey` приймає рядки відкритого тексту або об’єкти SecretRef. -- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано API-ключ розмови. -- `providers.*.voiceAliases` дає директивам розмови змогу використовувати зручні назви. -- `providers.mlx.modelId` вибирає репозиторій Hugging Face, який використовує локальний допоміжний засіб MLX у macOS. Якщо пропущено, macOS використовує `mlx-community/Soprano-80M-bf16`. -- Відтворення MLX у macOS виконується через вбудований допоміжний засіб `openclaw-mlx-tts`, коли він доступний, або виконуваний файл у `PATH`; `OPENCLAW_MLX_TTS_BIN` перевизначає шлях до допоміжного засобу для розробки. -- `speechLocale` задає ідентифікатор локалі BCP 47, який використовується розпізнаванням мовлення розмови в iOS/macOS. Залиште незаданим, щоб використовувати стандартне значення пристрою. -- `silenceTimeoutMs` керує тим, як довго режим розмови чекає після тиші користувача, перш ніж надіслати транскрипт. Незадане значення зберігає стандартне для платформи вікно паузи (`700 ms on macOS and Android, 900 ms on iOS`). +- Резервний `ELEVENLABS_API_KEY` застосовується лише тоді, коли ключ API для режиму розмови не налаштовано. +- `providers.*.voiceAliases` дає змогу директивам режиму розмови використовувати зрозумілі назви. +- `providers.mlx.modelId` вибирає репозиторій Hugging Face, який використовує локальний помічник MLX для macOS. Якщо пропущено, macOS використовує `mlx-community/Soprano-80M-bf16`. +- Відтворення MLX у macOS виконується через вбудований помічник `openclaw-mlx-tts`, якщо він доступний, або через виконуваний файл у `PATH`; `OPENCLAW_MLX_TTS_BIN` перевизначає шлях до помічника для розробки. +- `speechLocale` задає ідентифікатор локалі BCP 47, який використовується розпізнаванням мовлення режиму розмови в iOS/macOS. Залиште невстановленим, щоб використовувати типове значення пристрою. +- `silenceTimeoutMs` керує тим, як довго режим розмови чекає після тиші користувача, перш ніж надіслати транскрипт. Невстановлене значення зберігає типове вікно паузи платформи (`700 ms on macOS and Android, 900 ms on iOS`). --- diff --git a/docs/uk/help/faq.md b/docs/uk/help/faq.md index 973529b3f..b135f4c3a 100644 --- a/docs/uk/help/faq.md +++ b/docs/uk/help/faq.md @@ -1,19 +1,19 @@ --- read_when: - - Відповіді на поширені запитання щодо налаштування, встановлення, онбордингу або підтримки під час роботи - - Тріаж повідомлених користувачами проблем перед глибшим налагодженням -summary: Поширені запитання про встановлення, конфігурацію та використання OpenClaw + - Відповіді на поширені запитання щодо налаштування, встановлення, онбордингу або підтримки під час виконання + - Тріаж проблем, про які повідомили користувачі, перед глибшим налагодженням +summary: Поширені запитання про налаштування, конфігурацію та використання OpenClaw title: Поширені запитання x-i18n: - generated_at: "2026-04-29T21:53:03Z" + generated_at: "2026-04-30T00:29:43Z" model: gpt-5.5 provider: openai - source_hash: e6f6a8b549962a57b98760ba40ba4579dad319c9ccd411560c030ee80799d11b + source_hash: c09be6571e048b71e4e02288b22b51e70102872675dfc7bef133b955a06f6ac9 source_path: help/faq.md workflow: 16 --- -Швидкі відповіді та глибше усунення несправностей для реальних налаштувань (локальна розробка, VPS, кілька агентів, OAuth/API-ключі, резервне перемикання моделей). Для діагностики під час виконання див. [Усунення несправностей](/uk/gateway/troubleshooting). Повний довідник конфігурації див. у [Конфігурація](/uk/gateway/configuration). +Швидкі відповіді та глибше усунення несправностей для реальних налаштувань (локальна розробка, VPS, кілька агентів, OAuth/API-ключі, відновлення після збоїв моделей). Для діагностики виконання див. [Усунення несправностей](/uk/gateway/troubleshooting). Повний довідник конфігурації див. у [Конфігурація](/uk/gateway/configuration). ## Перші 60 секунд, якщо щось зламалося @@ -23,15 +23,15 @@ x-i18n: openclaw status ``` - Швидкий локальний підсумок: ОС + оновлення, доступність gateway/сервісу, агенти/сеанси, конфігурація провайдера + проблеми виконання (коли gateway доступний). + Швидке локальне зведення: ОС + оновлення, доступність gateway/сервісу, агенти/сесії, конфігурація провайдера + проблеми виконання (коли gateway доступний). -2. **Звіт для вставлення (безпечно поширювати)** +2. **Звіт для вставлення (безпечний для поширення)** ```bash openclaw status --all ``` - Діагностика лише для читання з кінцем журналу (токени відредаговано). + Діагностика лише для читання з хвостом журналу (токени відредаговано). 3. **Стан демона + порту** @@ -39,7 +39,7 @@ x-i18n: openclaw gateway status ``` - Показує виконання супервізора порівняно з доступністю RPC, цільову URL-адресу проби та яку конфігурацію сервіс, імовірно, використав. + Показує середовище виконання супервізора порівняно з доступністю RPC, цільову URL-адресу проби та яку конфігурацію, ймовірно, використав сервіс. 4. **Глибокі проби** @@ -47,30 +47,30 @@ x-i18n: openclaw status --deep ``` - Виконує живу перевірку справності Gateway, зокрема проби каналів, коли це підтримується - (потрібен доступний gateway). Див. [Справність](/uk/gateway/health). + Запускає live-перевірку стану gateway, включно з пробами каналів, коли вони підтримуються + (потрібен доступний gateway). Див. [Стан](/uk/gateway/health). -5. **Переглянути кінець останнього журналу** +5. **Переглянути хвіст останнього журналу** ```bash openclaw logs --follow ``` - Якщо RPC не працює, поверніться до: + Якщо RPC недоступний, використайте запасний варіант: ```bash tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" ``` - Файлові журнали відокремлені від журналів сервісу; див. [Журналювання](/uk/logging) та [Усунення несправностей](/uk/gateway/troubleshooting). + Файлові журнали відокремлені від сервісних журналів; див. [Журналювання](/uk/logging) і [Усунення несправностей](/uk/gateway/troubleshooting). -6. **Запустіть doctor (виправлення)** +6. **Запустіть doctor (ремонти)** ```bash openclaw doctor ``` - Виправляє/мігрує конфігурацію/стан + виконує перевірки справності. Див. [Doctor](/uk/gateway/doctor). + Виправляє/мігрує конфігурацію/стан + запускає перевірки стану. Див. [Doctor](/uk/gateway/doctor). 7. **Знімок Gateway** @@ -79,74 +79,74 @@ x-i18n: openclaw health --verbose # shows the target URL + config path on errors ``` - Запитує в запущеного gateway повний знімок (лише WS). Див. [Справність](/uk/gateway/health). + Запитує в запущеного gateway повний знімок (лише WS). Див. [Стан](/uk/gateway/health). -## Швидкий старт і початкове налаштування +## Швидкий старт і перше налаштування -Питання й відповіді для першого запуску — встановлення, онбординг, маршрути автентифікації, підписки, початкові збої — -містяться в [FAQ першого запуску](/uk/help/faq-first-run). +Q&A для першого запуску — встановлення, onboarding, маршрути автентифікації, підписки, початкові збої — +міститься у [FAQ першого запуску](/uk/help/faq-first-run). ## Що таке OpenClaw? - - OpenClaw — це персональний AI-асистент, який ви запускаєте на власних пристроях. Він відповідає в тих середовищах обміну повідомленнями, якими ви вже користуєтеся (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat і вбудовані Plugin каналів, як-от QQ Bot), а також може працювати з голосом + живим Canvas на підтримуваних платформах. **Gateway** — це постійно активна площина керування; асистент — це продукт. + + OpenClaw — це персональний AI-асистент, який ви запускаєте на власних пристроях. Він відповідає в месенджерах і каналах, якими ви вже користуєтеся (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat і вбудовані Plugin-и каналів, як-от QQ Bot), а також може працювати з голосом + live Canvas на підтримуваних платформах. **Gateway** — це постійно ввімкнена площина керування; асистент — це продукт. - OpenClaw — це не "просто обгортка Claude." Це **локальна насамперед площина керування**, яка дає змогу запускати - здібного асистента на **вашому власному обладнанні**, доступного з чат-застосунків, якими ви вже користуєтеся, зі - станом сеансів, пам’яттю та інструментами - без передавання контролю над вашими робочими процесами розміщеному + OpenClaw — це не "просто обгортка Claude." Це **локальна за задумом площина керування**, яка дає змогу запускати + потужного асистента на **вашому власному обладнанні**, доступного з чат-застосунків, якими ви вже користуєтеся, зі + сесіями зі станом, пам’яттю та інструментами — без передавання контролю над вашими робочими процесами хостинговому SaaS. Основне: - - **Ваші пристрої, ваші дані:** запускайте Gateway там, де хочете (Mac, Linux, VPS), і зберігайте - робочий простір + історію сеансів локально. - - **Справжні канали, не веб-пісочниця:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage/тощо, + - **Ваші пристрої, ваші дані:** запускайте Gateway де завгодно (Mac, Linux, VPS) і тримайте + робочу область + історію сесій локально. + - **Справжні канали, а не веб-пісочниця:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage/тощо, а також мобільний голос і Canvas на підтримуваних платформах. - - **Незалежність від моделей:** використовуйте Anthropic, OpenAI, MiniMax, OpenRouter тощо, з маршрутизацією - для кожного агента та резервним перемиканням. - - **Варіант лише локально:** запускайте локальні моделі, щоб **усі дані могли залишатися на вашому пристрої**, якщо ви цього хочете. - - **Маршрутизація між кількома агентами:** окремі агенти для кожного каналу, облікового запису або завдання, кожен зі своїм - робочим простором і типовими параметрами. - - **Відкритий код і можливість змінювати:** перевіряйте, розширюйте та самостійно розміщуйте без прив’язки до постачальника. + - **Незалежність від моделі:** використовуйте Anthropic, OpenAI, MiniMax, OpenRouter тощо з маршрутизацією + за агентами та failover. + - **Опція лише локально:** запускайте локальні моделі, щоб **усі дані могли залишатися на вашому пристрої**, якщо хочете. + - **Маршрутизація кількох агентів:** окремі агенти для кожного каналу, акаунта або завдання, кожен зі своєю + робочою областю та типовими параметрами. + - **Відкритий код і можливість налаштування:** переглядайте, розширюйте та self-host без прив’язки до постачальника. Документація: [Gateway](/uk/gateway), [Канали](/uk/channels), [Кілька агентів](/uk/concepts/multi-agent), [Пам’ять](/uk/concepts/memory). - + Хороші перші проєкти: - Створити вебсайт (WordPress, Shopify або простий статичний сайт). - - Прототипувати мобільний застосунок (план, екрани, план API). - - Упорядкувати файли й папки (очищення, іменування, тегування). - - Підключити Gmail і автоматизувати підсумки або подальші дії. + - Прототипувати мобільний застосунок (структура, екрани, план API). + - Упорядкувати файли та папки (очищення, іменування, тегування). + - Під’єднати Gmail і автоматизувати підсумки або подальші дії. - Він може виконувати великі завдання, але найкраще працює, коли ви ділите їх на етапи та + Він може виконувати великі завдання, але працює найкраще, коли ви ділите їх на фази та використовуєте субагентів для паралельної роботи. - - Повсякденна користь зазвичай виглядає так: + + Повсякденні переваги зазвичай виглядають так: - - **Особисті брифінги:** підсумки вхідних, календаря та новин, які вас цікавлять. - - **Дослідження та чернетки:** швидке дослідження, підсумки та перші чернетки для електронних листів або документів. - - **Нагадування та подальші дії:** підказки й контрольні списки, керовані Cron або Heartbeat. - - **Автоматизація браузера:** заповнення форм, збирання даних і повторення вебзавдань. - - **Координація між пристроями:** надішліть завдання з телефона, дайте Gateway виконати його на сервері та отримайте результат назад у чаті. + - **Персональні брифінги:** підсумки вхідних, календаря та новин, які вас цікавлять. + - **Дослідження та чернетки:** швидкі дослідження, підсумки та перші чернетки для електронних листів або документів. + - **Нагадування та подальші дії:** підказки й контрольні списки, керовані cron або heartbeat. + - **Автоматизація браузера:** заповнення форм, збирання даних і повторення веб-завдань. + - **Координація між пристроями:** надішліть завдання з телефона, дозвольте Gateway виконати його на сервері й отримайте результат назад у чаті. - - Так, для **дослідження, кваліфікації та створення чернеток**. Він може сканувати сайти, формувати короткі списки, - підсумовувати потенційних клієнтів і писати чернетки аутричу або рекламних текстів. + + Так, для **дослідження, кваліфікації та створення чернеток**. Він може сканувати сайти, створювати короткі списки, + підсумовувати потенційних клієнтів і писати чернетки outreach або рекламних текстів. - Для **аутричу або запусків реклами** залишайте людину в процесі. Уникайте спаму, дотримуйтеся місцевих законів і - політик платформ, і переглядайте все перед надсиланням. Найбезпечніший шаблон — дати + Для **outreach або рекламних запусків** тримайте людину в циклі. Уникайте спаму, дотримуйтеся місцевих законів і + політик платформ та переглядайте все перед надсиланням. Найбезпечніший підхід — дозволити OpenClaw створити чернетку, а вам затвердити. Документація: [Безпека](/uk/gateway/security). @@ -160,13 +160,13 @@ x-i18n: Переваги: - - **Постійна пам’ять + робочий простір** між сеансами + - **Постійна пам’ять + робоча область** між сесіями - **Доступ із кількох платформ** (WhatsApp, Telegram, TUI, WebChat) - - **Оркестрація інструментів** (браузер, файли, планування, hooks) - - **Постійно активний Gateway** (запускайте на VPS, взаємодійте звідусіль) + - **Оркестрація інструментів** (браузер, файли, планування, хуки) + - **Постійно ввімкнений Gateway** (запуск на VPS, взаємодія звідусіль) - **Nodes** для локального браузера/екрана/камери/exec - Вітрина: [https://openclaw.ai/showcase](https://openclaw.ai/showcase) + Showcase: [https://openclaw.ai/showcase](https://openclaw.ai/showcase) @@ -174,69 +174,69 @@ x-i18n: ## Skills і автоматизація - - Використовуйте керовані перевизначення замість редагування копії в репозиторії. Помістіть свої зміни в `~/.openclaw/skills//SKILL.md` (або додайте папку через `skills.load.extraDirs` у `~/.openclaw/openclaw.json`). Пріоритет: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані → `skills.load.extraDirs`, тож керовані перевизначення все одно мають перевагу над вбудованими skills без торкання git. Якщо вам потрібно, щоб skill було встановлено глобально, але видимо лише для деяких агентів, тримайте спільну копію в `~/.openclaw/skills` і керуйте видимістю через `agents.defaults.skills` та `agents.list[].skills`. Лише зміни, гідні upstream, мають жити в репозиторії та виходити як PR. + + Використовуйте керовані перевизначення замість редагування копії в репозиторії. Помістіть зміни в `~/.openclaw/skills//SKILL.md` (або додайте папку через `skills.load.extraDirs` у `~/.openclaw/openclaw.json`). Пріоритет такий: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані → `skills.load.extraDirs`, тож керовані перевизначення все одно мають перевагу над вбудованими Skills без змін у git. Якщо skill потрібно встановити глобально, але зробити видимим лише для деяких агентів, тримайте спільну копію в `~/.openclaw/skills` і керуйте видимістю через `agents.defaults.skills` та `agents.list[].skills`. У репозиторії мають бути лише зміни, які варто надсилати upstream як PR. - - Так. Додайте додаткові каталоги через `skills.load.extraDirs` у `~/.openclaw/openclaw.json` (найнижчий пріоритет). Типовий пріоритет: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані → `skills.load.extraDirs`. `clawhub` за замовчуванням встановлює в `./skills`, що OpenClaw розглядає як `/skills` під час наступного сеансу. Якщо skill має бути видимим лише для певних агентів, поєднайте це з `agents.defaults.skills` або `agents.list[].skills`. + + Так. Додайте додаткові каталоги через `skills.load.extraDirs` у `~/.openclaw/openclaw.json` (найнижчий пріоритет). Типовий пріоритет: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані → `skills.load.extraDirs`. `clawhub` за замовчуванням встановлює в `./skills`, що OpenClaw під час наступної сесії трактує як `/skills`. Якщо skill має бути видимим лише певним агентам, поєднайте це з `agents.defaults.skills` або `agents.list[].skills`. - Сьогодні підтримуються такі шаблони: + Нині підтримуються такі підходи: - - **Завдання Cron**: ізольовані завдання можуть задавати перевизначення `model` для кожного завдання. + - **Cron-завдання**: ізольовані завдання можуть задавати перевизначення `model` для кожного завдання. - **Субагенти**: маршрутизуйте завдання до окремих агентів із різними типовими моделями. - - **Перемикання на вимогу**: використовуйте `/model`, щоб будь-коли перемкнути модель поточного сеансу. + - **Перемикання на вимогу**: використовуйте `/model`, щоб будь-коли змінити модель поточної сесії. - Див. [Завдання Cron](/uk/automation/cron-jobs), [Маршрутизація між кількома агентами](/uk/concepts/multi-agent) та [Slash commands](/uk/tools/slash-commands). + Див. [Cron-завдання](/uk/automation/cron-jobs), [Маршрутизація кількох агентів](/uk/concepts/multi-agent) і [Slash-команди](/uk/tools/slash-commands). - - Використовуйте **субагентів** для довгих або паралельних завдань. Субагенти працюють у власному сеансі, - повертають підсумок і зберігають ваш основний чат responsive. + + Використовуйте **субагентів** для довгих або паралельних завдань. Субагенти працюють у власній сесії, + повертають підсумок і зберігають основний чат чуйним. Попросіть бота "spawn a sub-agent for this task" або використайте `/subagents`. Використовуйте `/status` у чаті, щоб побачити, що Gateway робить зараз (і чи він зайнятий). - Порада щодо токенів: довгі завдання й субагенти споживають токени. Якщо вартість має значення, задайте + Порада щодо токенів: довгі завдання та субагенти споживають токени. Якщо вартість має значення, задайте дешевшу модель для субагентів через `agents.defaults.subagents.model`. Документація: [Субагенти](/uk/tools/subagents), [Фонові завдання](/uk/automation/tasks). - - Використовуйте прив’язки тредів. Ви можете прив’язати тред Discord до субагента або цільового сеансу, щоб подальші повідомлення в цьому треді залишалися в цьому прив’язаному сеансі. + + Використовуйте прив’язки thread. Ви можете прив’язати Discord thread до субагента або цілі сесії, щоб подальші повідомлення в цьому thread залишалися в прив’язаній сесії. Базовий потік: - - Створіть через `sessions_spawn` із `thread: true` (і, за потреби, `mode: "session"` для постійних подальших повідомлень). + - Створіть через `sessions_spawn` з `thread: true` (і за бажанням `mode: "session"` для постійних подальших повідомлень). - Або вручну прив’яжіть через `/focus `. - Використовуйте `/agents`, щоб переглянути стан прив’язки. - - Використовуйте `/session idle ` і `/session max-age `, щоб керувати автоматичним скасуванням фокуса. - - Використовуйте `/unfocus`, щоб від’єднати тред. + - Використовуйте `/session idle ` і `/session max-age `, щоб керувати автоматичним зняттям focus. + - Використовуйте `/unfocus`, щоб від’єднати thread. - Потрібна конфігурація: + Обов’язкова конфігурація: - - Глобальні типові параметри: `session.threadBindings.enabled`, `session.threadBindings.idleHours`, `session.threadBindings.maxAgeHours`. + - Глобальні типові значення: `session.threadBindings.enabled`, `session.threadBindings.idleHours`, `session.threadBindings.maxAgeHours`. - Перевизначення Discord: `channels.discord.threadBindings.enabled`, `channels.discord.threadBindings.idleHours`, `channels.discord.threadBindings.maxAgeHours`. - - Автоматична прив’язка під час створення: задайте `channels.discord.threadBindings.spawnSubagentSessions: true`. + - Автоприв’язка під час створення: задайте `channels.discord.threadBindings.spawnSubagentSessions: true`. - Документація: [Субагенти](/uk/tools/subagents), [Discord](/uk/channels/discord), [Довідник конфігурації](/uk/gateway/configuration-reference), [Slash commands](/uk/tools/slash-commands). + Документація: [Субагенти](/uk/tools/subagents), [Discord](/uk/channels/discord), [Довідник конфігурації](/uk/gateway/configuration-reference), [Slash-команди](/uk/tools/slash-commands). - - Спочатку перевірте визначений маршрут запитувача: + + Спершу перевірте визначений маршрут requester: - - Доставка субагента в режимі завершення надає перевагу будь-якому прив’язаному треду або маршруту розмови, коли він існує. - - Якщо джерело завершення містить лише канал, OpenClaw повертається до збереженого маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все ще могла успішно виконатися. - - Якщо немає ні прив’язаного маршруту, ні придатного збереженого маршруту, пряма доставка може не вдатися, і результат натомість повернеться до доставки через чергу сеансу без негайної публікації в чат. + - Доставка субагента в режимі завершення надає перевагу будь-якому прив’язаному thread або маршруту розмови, якщо він існує. + - Якщо джерело завершення містить лише канал, OpenClaw повертається до збереженого маршруту сесії requester (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все ще могла спрацювати. + - Якщо немає ні прив’язаного маршруту, ні придатного збереженого маршруту, пряма доставка може не вдатися, і результат натомість повернеться до доставки через чергу сесії, а не буде негайно опублікований у чаті. - Недійсні або застарілі цілі все ще можуть примусити fallback до черги або остаточний збій доставки. - - Якщо остання видима відповідь асистента дочірнього сеансу — точний мовчазний токен `NO_REPLY` / `no_reply`, або точно `ANNOUNCE_SKIP`, OpenClaw навмисно пригнічує оголошення замість публікації застарілого попереднього прогресу. - - Якщо дочірній сеанс вичерпав час після самих лише викликів інструментів, оголошення може згорнути це в короткий підсумок часткового прогресу замість повторного відтворення сирого виводу інструментів. + - Якщо остання видима відповідь дочірнього асистента — це точний silent token `NO_REPLY` / `no_reply` або точно `ANNOUNCE_SKIP`, OpenClaw навмисно пригнічує оголошення замість публікації застарілого попереднього прогресу. + - Якщо дочірній процес завершився за таймаутом після самих викликів інструментів, оголошення може згорнути це в короткий підсумок часткового прогресу замість повторення сирого виводу інструментів. Налагодження: @@ -244,7 +244,7 @@ x-i18n: openclaw tasks show ``` - Документація: [Субагенти](/uk/tools/subagents), [Фонові завдання](/uk/automation/tasks), [Інструменти сеансу](/uk/concepts/session-tool). + Документація: [Субагенти](/uk/tools/subagents), [Фонові завдання](/uk/automation/tasks), [Інструменти сесії](/uk/concepts/session-tool). @@ -265,21 +265,21 @@ x-i18n: openclaw cron runs --id --limit 50 ``` - Документація: [Завдання Cron](/uk/automation/cron-jobs), [Автоматизація та завдання](/uk/automation). + Документація: [Cron-завдання](/uk/automation/cron-jobs), [Автоматизація та завдання](/uk/automation). - - Спочатку перевірте режим доставки: + + Спершу перевірте режим доставки: - - `--no-deliver` / `delivery.mode: "none"` означає, що fallback-надсилання від runner не очікується. + - `--no-deliver` / `delivery.mode: "none"` означає, що резервне надсилання runner не очікується. - Відсутня або недійсна ціль оголошення (`channel` / `to`) означає, що runner пропустив вихідну доставку. - - Помилки авторизації каналу (`unauthorized`, `Forbidden`) означають, що runner спробував доставити повідомлення, але облікові дані це заблокували. - - Тихий ізольований результат (лише `NO_REPLY` / `no_reply`) вважається навмисно недоставлюваним, тому runner також пригнічує поставлену в чергу fallback-доставку. + - Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що runner намагався доставити повідомлення, але облікові дані це заблокували. + - Тихий ізольований результат (лише `NO_REPLY` / `no_reply`) вважається навмисно недоставним, тому runner також пригнічує резервну доставку з черги. - Для ізольованих cron-завдань агент усе ще може надсилати напряму за допомогою інструмента `message`, - коли доступний маршрут чату. `--announce` керує лише fallback-шляхом runner - для фінального тексту, який агент ще не надіслав сам. + Для ізольованих завдань Cron агент усе ще може надсилати напряму за допомогою інструмента `message`, + коли доступний маршрут чату. `--announce` керує лише резервним шляхом runner + для фінального тексту, який агент ще не надіслав. Налагодження: @@ -288,27 +288,27 @@ x-i18n: openclaw tasks show ``` - Документація: [Cron-завдання](/uk/automation/cron-jobs), [Фонові завдання](/uk/automation/tasks). + Документація: [Завдання Cron](/uk/automation/cron-jobs), [Фонові завдання](/uk/automation/tasks). - - Зазвичай це шлях live-перемикання моделі, а не дублювання планування. + + Зазвичай це шлях live-перемикання моделі, а не дубльоване планування. - Ізольований cron може зберегти runtime-передавання моделі та повторити запуск, коли активний - запуск викидає `LiveSessionModelSwitchError`. Повтор зберігає перемкненого - провайдера/модель, а якщо перемикання принесло нове перевизначення профілю авторизації, cron - також зберігає його перед повтором. + Ізольований Cron може зберегти runtime-передавання моделі та повторити спробу, коли активний + запуск викидає `LiveSessionModelSwitchError`. Повторна спроба зберігає перемкненого + провайдера/модель, а якщо перемикання передало нове перевизначення профілю автентифікації, Cron + також зберігає його перед повторною спробою. Пов’язані правила вибору: - - Перевизначення моделі Gmail hook має пріоритет, коли застосовне. - - Потім `model` на рівні завдання. - - Потім будь-яке збережене перевизначення моделі cron-сесії. + - Перевизначення моделі Gmail hook застосовується першим, коли доречно. + - Потім `model` для окремого завдання. + - Потім будь-яке збережене перевизначення моделі cron-session. - Потім звичайний вибір моделі агента/за замовчуванням. - Цикл повторів обмежений. Після початкової спроби плюс 2 повторів перемикання - cron переривається замість нескінченного циклу. + Цикл повторів обмежений. Після початкової спроби плюс 2 повтори перемикання + Cron перериває виконання замість нескінченного циклу. Налагодження: @@ -317,12 +317,12 @@ x-i18n: openclaw tasks show ``` - Документація: [Cron-завдання](/uk/automation/cron-jobs), [cron CLI](/uk/cli/cron). + Документація: [Завдання Cron](/uk/automation/cron-jobs), [CLI Cron](/uk/cli/cron). - - Використовуйте нативні команди `openclaw skills` або помістіть Skills у свій робочий простір. Інтерфейс macOS Skills недоступний на Linux. + + Використовуйте нативні команди `openclaw skills` або помістіть Skills у свій робочий простір. macOS-інтерфейс Skills недоступний у Linux. Переглядайте Skills на [https://clawhub.ai](https://clawhub.ai). ```bash @@ -336,41 +336,41 @@ x-i18n: openclaw skills check ``` - Нативний `openclaw skills install` записує в директорію `skills/` - активного робочого простору. Встановлюйте окремий CLI `clawhub` лише якщо хочете публікувати або - синхронізувати власні Skills. Для спільних встановлень між агентами розмістіть Skill у + Нативний `openclaw skills install` записує в каталог `skills/` + активного робочого простору. Установлюйте окремий CLI `clawhub` лише якщо хочете публікувати або + синхронізувати власні Skills. Для спільних установок між агентами помістіть skill у `~/.openclaw/skills` і використовуйте `agents.defaults.skills` або - `agents.list[].skills`, якщо хочете обмежити, які агенти можуть його бачити. + `agents.list[].skills`, якщо хочете звузити, які агенти можуть його бачити. - + Так. Використовуйте планувальник Gateway: - - **Cron-завдання** для запланованих або повторюваних завдань (зберігаються між перезапусками). + - **Завдання Cron** для запланованих або повторюваних завдань (зберігаються після перезапусків). - **Heartbeat** для періодичних перевірок "основної сесії". - **Ізольовані завдання** для автономних агентів, які публікують підсумки або доставляють повідомлення в чати. - Документація: [Cron-завдання](/uk/automation/cron-jobs), [Автоматизація й завдання](/uk/automation), + Документація: [Завдання Cron](/uk/automation/cron-jobs), [Автоматизація та завдання](/uk/automation), [Heartbeat](/uk/gateway/heartbeat). - - Не напряму. macOS Skills обмежуються через `metadata.openclaw.os` плюс потрібні бінарні файли, і Skills з’являються в системному prompt лише тоді, коли вони придатні на **хості Gateway**. На Linux Skills лише для `darwin` (як-от `apple-notes`, `apple-reminders`, `things-mac`) не завантажаться, якщо не перевизначити обмеження. + + Не напряму. Skills для macOS обмежуються `metadata.openclaw.os` плюс потрібними бінарними файлами, і Skills з’являються в системному prompt лише тоді, коли вони придатні на **хості Gateway**. У Linux Skills лише для `darwin` (як-от `apple-notes`, `apple-reminders`, `things-mac`) не завантажаться, якщо ви не перевизначите обмеження. Є три підтримувані шаблони: - **Варіант A - запустити Gateway на Mac (найпростіше).** - Запустіть Gateway там, де є бінарні файли macOS, а потім підключіться з Linux у [віддаленому режимі](#gateway-ports-already-running-and-remote-mode) або через Tailscale. Skills завантажуються нормально, бо хост Gateway працює на macOS. + **Варіант A - запустіть Gateway на Mac (найпростіше).** + Запустіть Gateway там, де існують бінарні файли macOS, а потім підключіться з Linux у [віддаленому режимі](#gateway-ports-already-running-and-remote-mode) або через Tailscale. Skills завантажуються звичайно, бо хост Gateway працює на macOS. - **Варіант B - використати macOS node (без SSH).** - Запустіть Gateway на Linux, спарте macOS node (програму в рядку меню) і встановіть **Node Run Commands** на "Always Ask" або "Always Allow" на Mac. OpenClaw може вважати Skills лише для macOS придатними, коли потрібні бінарні файли існують на node. Агент запускає ці Skills через інструмент `nodes`. Якщо вибрати "Always Ask", схвалення "Always Allow" у prompt додає цю команду до allowlist. + **Варіант B - використовуйте macOS Node (без SSH).** + Запустіть Gateway у Linux, спаруйте macOS Node (застосунок у рядку меню) і встановіть **Node Run Commands** на "Always Ask" або "Always Allow" на Mac. OpenClaw може вважати Skills лише для macOS придатними, коли потрібні бінарні файли існують на Node. Агент запускає ці Skills через інструмент `nodes`. Якщо ви виберете "Always Ask", схвалення "Always Allow" у prompt додасть цю команду до allowlist. - **Варіант C - проксіювати бінарні файли macOS через SSH (розширено).** - Залиште Gateway на Linux, але зробіть так, щоб потрібні CLI-бінарники резолвилися в SSH-обгортки, які запускаються на Mac. Потім перевизначте Skill, щоб дозволити Linux і він залишався придатним. + **Варіант C - проксіюйте бінарні файли macOS через SSH (розширено).** + Залиште Gateway у Linux, але зробіть так, щоб потрібні CLI-бінарні файли розв’язувалися в SSH-обгортки, які запускаються на Mac. Потім перевизначте skill, щоб дозволити Linux, і він залишався придатним. - 1. Створіть SSH-обгортку для бінарного файлу (приклад: `memo` для Apple Notes): + 1. Створіть SSH-обгортку для бінарного файла (приклад: `memo` для Apple Notes): ```bash #!/usr/bin/env bash @@ -379,48 +379,48 @@ x-i18n: ``` 2. Помістіть обгортку в `PATH` на хості Linux (наприклад, `~/bin/memo`). - 3. Перевизначте метадані Skill (у робочому просторі або `~/.openclaw/skills`), щоб дозволити Linux: + 3. Перевизначте метадані skill (робочий простір або `~/.openclaw/skills`), щоб дозволити Linux: ```markdown --- name: apple-notes - description: Manage Apple Notes via the memo CLI on macOS. + description: Керуйте Apple Notes через CLI memo на macOS. metadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["memo"] } } } --- ``` - 4. Запустіть нову сесію, щоб snapshot Skills оновився. + 4. Запустіть нову сесію, щоб знімок Skills оновився. - Сьогодні вбудованої немає. + Наразі вбудованої немає. Варіанти: - - **Користувацький Skill / Plugin:** найкраще для надійного доступу до API (і Notion, і HeyGen мають API). + - **Користувацький skill / plugin:** найкраще для надійного доступу до API (Notion/HeyGen обидва мають API). - **Автоматизація браузера:** працює без коду, але повільніша й крихкіша. - Якщо хочете зберігати контекст для кожного клієнта (агентські workflow), простий шаблон такий: + Якщо ви хочете зберігати контекст для кожного клієнта (робочі процеси агенції), простий шаблон такий: - - Одна сторінка Notion на клієнта (контекст + вподобання + активна робота). - - Попросіть агента отримувати цю сторінку на початку сесії. + - Одна сторінка Notion на клієнта (контекст + уподобання + активна робота). + - Попросіть агента отримати цю сторінку на початку сеансу. - Якщо потрібна нативна інтеграція, відкрийте feature request або створіть Skill, - орієнтований на ці API. + Якщо вам потрібна нативна інтеграція, відкрийте запит на функцію або створіть skill + для роботи з цими API. - Встановити Skills: + Установіть skills: ```bash openclaw skills install openclaw skills update --all ``` - Нативні встановлення потрапляють у директорію `skills/` активного робочого простору. Для спільних Skills між агентами розмістіть їх у `~/.openclaw/skills//SKILL.md`. Якщо спільне встановлення мають бачити лише деякі агенти, налаштуйте `agents.defaults.skills` або `agents.list[].skills`. Деякі Skills очікують бінарні файли, встановлені через Homebrew; на Linux це означає Linuxbrew (див. запис FAQ Homebrew Linux вище). Див. [Skills](/uk/tools/skills), [Конфігурація Skills](/uk/tools/skills-config) і [ClawHub](/uk/tools/clawhub). + Нативні встановлення потрапляють у каталог `skills/` активного робочого простору. Для спільних skills між агентами розмістіть їх у `~/.openclaw/skills//SKILL.md`. Якщо спільне встановлення мають бачити лише деякі агенти, налаштуйте `agents.defaults.skills` або `agents.list[].skills`. Деякі skills очікують двійкові файли, встановлені через Homebrew; у Linux це означає Linuxbrew (див. запис FAQ Homebrew Linux вище). Див. [Skills](/uk/tools/skills), [Конфігурація Skills](/uk/tools/skills-config) і [ClawHub](/uk/tools/clawhub). - + Використовуйте вбудований профіль браузера `user`, який підключається через Chrome DevTools MCP: ```bash @@ -428,20 +428,20 @@ x-i18n: openclaw browser --browser-profile user snapshot ``` - Якщо потрібна власна назва, створіть явний профіль MCP: + Якщо вам потрібна власна назва, створіть явний профіль MCP: ```bash openclaw browser create-profile --name chrome-live --driver existing-session openclaw browser --browser-profile chrome-live tabs ``` - Цей шлях може використовувати локальний браузер хоста або підключений browser node. Якщо Gateway працює деінде, запустіть node host на машині з браузером або використовуйте remote CDP. + Цей шлях може використовувати локальний браузер хоста або підключений браузерний вузол. Якщо Gateway працює в іншому місці, запустіть вузол хоста на машині з браузером або використовуйте натомість віддалений CDP. - Поточні обмеження `existing-session` / `user`: + Поточні обмеження для `existing-session` / `user`: - дії керуються ref, а не CSS-селекторами - - завантаження файлів потребують `ref` / `inputRef` і наразі підтримують один файл за раз - - `responsebody`, експорт PDF, перехоплення завантажень і пакетні дії все ще потребують керованого браузера або raw CDP profile + - завантаження потребують `ref` / `inputRef` і наразі підтримують один файл за раз + - `responsebody`, експорт PDF, перехоплення завантажень і пакетні дії все ще потребують керованого браузера або профілю raw CDP @@ -449,28 +449,28 @@ x-i18n: ## Пісочниця та пам’ять - + Так. Див. [Пісочниця](/uk/gateway/sandboxing). Для налаштування, специфічного для Docker (повний gateway у Docker або образи пісочниці), див. [Docker](/uk/install/docker). - Типовий образ орієнтований на безпеку й працює як користувач `node`, тому він не - включає системні пакети, Homebrew або вбудовані браузери. Для повнішого налаштування: + Типовий образ насамперед орієнтований на безпеку й працює від імені користувача `node`, тому він не + містить системних пакетів, Homebrew або вбудованих браузерів. Для повнішого налаштування: - - Зберігайте `/home/node` через `OPENCLAW_HOME_VOLUME`, щоб кеші виживали. + - Збережіть `/home/node` за допомогою `OPENCLAW_HOME_VOLUME`, щоб кеші зберігалися. - Додайте системні залежності в образ через `OPENCLAW_DOCKER_APT_PACKAGES`. - - Встановіть браузери Playwright через вбудований CLI: + - Установіть браузери Playwright через вбудований CLI: `node /app/node_modules/playwright-core/cli.js install chromium` - - Встановіть `PLAYWRIGHT_BROWSERS_PATH` і переконайтеся, що шлях зберігається. + - Установіть `PLAYWRIGHT_BROWSERS_PATH` і переконайтеся, що шлях зберігається. Документація: [Docker](/uk/install/docker), [Браузер](/uk/tools/browser). - + Так - якщо ваш приватний трафік це **DM**, а публічний трафік це **групи**. - Використайте `agents.defaults.sandbox.mode: "non-main"`, щоб сесії груп/каналів (неосновні ключі) запускалися в налаштованому backend пісочниці, тоді як основна DM-сесія лишалася на хості. Docker є типовим backend, якщо ви не виберете інший. Потім обмежте, які інструменти доступні в sandboxed-сесіях, через `tools.sandbox.tools`. + Використовуйте `agents.defaults.sandbox.mode: "non-main"`, щоб сеанси груп/каналів (ключі non-main) запускалися в налаштованому backend пісочниці, тоді як основний сеанс DM залишається на хості. Docker є типовим backend, якщо ви не виберете інший. Потім обмежте інструменти, доступні в сеансах пісочниці, через `tools.sandbox.tools`. Покрокове налаштування + приклад конфігурації: [Групи: особисті DM + публічні групи](/uk/channels/groups#pattern-personal-dms-public-groups-single-agent) @@ -479,11 +479,11 @@ x-i18n: - Встановіть `agents.defaults.sandbox.docker.binds` на `["host:path:mode"]` (наприклад, `"/home/user/src:/src:ro"`). Глобальні та per-agent binds об’єднуються; per-agent binds ігноруються, коли `scope: "shared"`. Використовуйте `:ro` для всього чутливого й пам’ятайте, що binds обходять файлові стіни пісочниці. + Установіть `agents.defaults.sandbox.docker.binds` у `["host:path:mode"]` (наприклад, `"/home/user/src:/src:ro"`). Глобальні прив’язки та прив’язки на рівні агента об’єднуються; прив’язки на рівні агента ігноруються, коли `scope: "shared"`. Використовуйте `:ro` для всього чутливого й пам’ятайте, що прив’язки обходять файлові межі пісочниці. - OpenClaw перевіряє джерела bind за нормалізованим шляхом і канонічним шляхом, розв’язаним через найглибшого наявного предка. Це означає, що виходи через symlink-parent усе ще закриваються з помилкою, навіть коли останній сегмент шляху ще не існує, а перевірки дозволеного кореня все ще застосовуються після розв’язання symlink. + OpenClaw перевіряє джерела прив’язок і за нормалізованим шляхом, і за канонічним шляхом, визначеним через найглибшого наявного предка. Це означає, що виходи через батьківський symlink усе одно закрито блокуються, навіть якщо останній сегмент шляху ще не існує, а перевірки дозволеного кореня все одно застосовуються після розв’язання symlink. - Див. [Пісочниця](/uk/gateway/sandboxing#custom-bind-mounts) і [Пісочниця vs політика інструментів vs elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check) для прикладів і приміток з безпеки. + Див. [Пісочниця](/uk/gateway/sandboxing#custom-bind-mounts) і [Пісочниця vs політика інструментів vs підвищені права](/uk/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check) для прикладів і приміток щодо безпеки. @@ -491,56 +491,55 @@ x-i18n: Пам’ять OpenClaw - це просто Markdown-файли в робочому просторі агента: - Щоденні нотатки в `memory/YYYY-MM-DD.md` - - Кураторські довгострокові нотатки в `MEMORY.md` (лише основні/приватні сесії) + - Відібрані довгострокові нотатки в `MEMORY.md` (лише основні/приватні сеанси) - OpenClaw також запускає **тихий flush пам’яті перед Compaction**, щоб нагадати моделі - записати довговічні нотатки перед auto-compaction. Це виконується лише тоді, коли робочий простір - доступний для запису (read-only пісочниці пропускають це). Див. [Пам’ять](/uk/concepts/memory). + OpenClaw також виконує **тихе скидання пам’яті перед Compaction**, щоб нагадати моделі + записати довговічні нотатки перед автоматичною Compaction. Це виконується лише тоді, коли робочий простір + доступний для запису (пісочниці лише для читання це пропускають). Див. [Пам’ять](/uk/concepts/memory). - Попросіть бота **записати факт у пам’ять**. Довгострокові нотатки належать до `MEMORY.md`, - короткостроковий контекст іде в `memory/YYYY-MM-DD.md`. + Попросіть бота **записати факт у пам’ять**. Довгострокові нотатки мають бути в `MEMORY.md`, + короткостроковий контекст потрапляє в `memory/YYYY-MM-DD.md`. - Це все ще напрям, який ми покращуємо. Допомагає нагадувати моделі зберігати спогади; - вона знатиме, що робити. Якщо вона продовжує забувати, перевірте, що Gateway використовує той самий + Це все ще напрям, який ми вдосконалюємо. Допомагає нагадувати моделі зберігати спогади; + вона знатиме, що робити. Якщо вона й далі забуває, перевірте, що Gateway використовує той самий робочий простір під час кожного запуску. Документація: [Пам’ять](/uk/concepts/memory), [Робочий простір агента](/uk/concepts/agent-workspace). - - Файли пам’яті живуть на диску й зберігаються, доки ви їх не видалите. Обмеженням є ваше - сховище, а не модель. **Контекст сесії** все ще обмежений вікном контексту - моделі, тому довгі розмови можуть compact або truncate. Саме тому - існує пошук у пам’яті - він повертає в контекст лише релевантні частини. + + Файли пам’яті зберігаються на диску й лишаються там, доки ви їх не видалите. Обмеженням є ваше + сховище, а не модель. **Контекст сеансу** все одно обмежений вікном контексту моделі, + тому довгі розмови можуть ущільнюватися або обрізатися. Саме тому існує пошук у пам’яті - він повертає в контекст лише релевантні частини. Документація: [Пам’ять](/uk/concepts/memory), [Контекст](/uk/concepts/context). - - Лише якщо ви використовуєте **ембедінги OpenAI**. Codex OAuth покриває чат/доповнення та - **не** надає доступу до ембедінгів, тому **вхід через Codex (OAuth або - вхід Codex CLI)** не допоможе для семантичного пошуку памʼяті. Ембедінгам OpenAI - усе ще потрібен справжній API-ключ (`OPENAI_API_KEY` або `models.providers.openai.apiKey`). + + Лише якщо ви використовуєте **OpenAI embeddings**. Codex OAuth покриває чат/доповнення та + **не** надає доступу до embeddings, тому **вхід через Codex (OAuth або + вхід Codex CLI)** не допомагає для семантичного пошуку пам’яті. OpenAI embeddings + все одно потребують справжнього API-ключа (`OPENAI_API_KEY` або `models.providers.openai.apiKey`). - Якщо ви явно не задаєте провайдера, OpenClaw автоматично вибирає провайдера, коли - може знайти API-ключ (профілі автентифікації, `models.providers.*.apiKey` або змінні середовища). - Він надає перевагу OpenAI, якщо знайдено ключ OpenAI; інакше Gemini, якщо знайдено ключ Gemini, - потім Voyage, потім Mistral. Якщо віддалений ключ недоступний, пошук у памʼяті - лишається вимкненим, доки ви його не налаштуєте. Якщо у вас налаштовано й доступно + Якщо ви не задаєте провайдера явно, OpenClaw автоматично вибирає провайдера, коли + може визначити API-ключ (профілі автентифікації, `models.providers.*.apiKey` або змінні середовища). + Він віддає перевагу OpenAI, якщо визначено ключ OpenAI, інакше Gemini, якщо + визначено ключ Gemini, потім Voyage, потім Mistral. Якщо віддалений ключ недоступний, пошук + пам’яті лишається вимкненим, доки ви його не налаштуєте. Якщо у вас налаштований і доступний шлях до локальної моделі, OpenClaw - надає перевагу `local`. Ollama підтримується, коли ви явно задаєте + віддає перевагу `local`. Ollama підтримується, коли ви явно задаєте `memorySearch.provider = "ollama"`. - Якщо ви бажаєте залишатися локально, задайте `memorySearch.provider = "local"` (і за бажанням - `memorySearch.fallback = "none"`). Якщо вам потрібні ембедінги Gemini, задайте + Якщо ви хочете лишатися локально, задайте `memorySearch.provider = "local"` (і, за бажанням, + `memorySearch.fallback = "none"`). Якщо вам потрібні Gemini embeddings, задайте `memorySearch.provider = "gemini"` і надайте `GEMINI_API_KEY` (або - `memorySearch.remote.apiKey`). Ми підтримуємо моделі ембедінгів **OpenAI, Gemini, Voyage, Mistral, Ollama або локальні** - - подробиці налаштування див. у [Памʼяті](/uk/concepts/memory). + `memorySearch.remote.apiKey`). Ми підтримуємо моделі embeddings **OpenAI, Gemini, Voyage, Mistral, Ollama або local** + - подробиці налаштування див. у [Пам’ять](/uk/concepts/memory). @@ -551,50 +550,50 @@ x-i18n: Ні - **стан OpenClaw є локальним**, але **зовнішні сервіси все одно бачать те, що ви їм надсилаєте**. - - **Локально за замовчуванням:** сеанси, файли памʼяті, конфігурація та робочий простір розміщуються на хості Gateway + - **Локально за замовчуванням:** сесії, файли пам’яті, конфігурація та робочий простір зберігаються на хості Gateway (`~/.openclaw` + каталог вашого робочого простору). - - **Віддалено за потребою:** повідомлення, які ви надсилаєте провайдерам моделей (Anthropic/OpenAI тощо), ідуть до + - **Віддалено за необхідністю:** повідомлення, які ви надсилаєте провайдерам моделей (Anthropic/OpenAI тощо), надходять до їхніх API, а чат-платформи (WhatsApp/Telegram/Slack тощо) зберігають дані повідомлень на своїх серверах. - - **Ви контролюєте обсяг сліду:** використання локальних моделей зберігає промпти на вашій машині, але трафік каналів - усе одно проходить через сервери відповідного каналу. + - **Ви контролюєте обсяг даних:** використання локальних моделей залишає промпти на вашій машині, але трафік каналів + усе одно проходить через сервери каналу. - Повʼязано: [Робочий простір агента](/uk/concepts/agent-workspace), [Памʼять](/uk/concepts/memory). + Пов’язано: [Робочий простір агента](/uk/concepts/agent-workspace), [Пам’ять](/uk/concepts/memory). - Усе розміщується в `$OPENCLAW_STATE_DIR` (за замовчуванням: `~/.openclaw`): + Усе зберігається в `$OPENCLAW_STATE_DIR` (за замовчуванням: `~/.openclaw`): | Шлях | Призначення | | --------------------------------------------------------------- | ------------------------------------------------------------------ | | `$OPENCLAW_STATE_DIR/openclaw.json` | Основна конфігурація (JSON5) | | `$OPENCLAW_STATE_DIR/credentials/oauth.json` | Застарілий імпорт OAuth (копіюється в профілі автентифікації під час першого використання) | - | `$OPENCLAW_STATE_DIR/agents//agent/auth-profiles.json` | Профілі автентифікації (OAuth, API-ключі та необовʼязкові `keyRef`/`tokenRef`) | - | `$OPENCLAW_STATE_DIR/secrets.json` | Необовʼязкове файлове секретне навантаження для провайдерів SecretRef типу `file` | - | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Файл застарілої сумісності (статичні записи `api_key` очищено) | + | `$OPENCLAW_STATE_DIR/agents//agent/auth-profiles.json` | Профілі автентифікації (OAuth, API-ключі та необов’язкові `keyRef`/`tokenRef`) | + | `$OPENCLAW_STATE_DIR/secrets.json` | Необов’язкове файлове секретне навантаження для провайдерів SecretRef `file` | + | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Застарілий файл сумісності (статичні записи `api_key` очищено) | | `$OPENCLAW_STATE_DIR/credentials/` | Стан провайдера (наприклад, `whatsapp//creds.json`) | - | `$OPENCLAW_STATE_DIR/agents/` | Стан для кожного агента (agentDir + сеанси) | + | `$OPENCLAW_STATE_DIR/agents/` | Стан для кожного агента (agentDir + сесії) | | `$OPENCLAW_STATE_DIR/agents//sessions/` | Історія розмов і стан (для кожного агента) | - | `$OPENCLAW_STATE_DIR/agents//sessions/sessions.json` | Метадані сеансів (для кожного агента) | + | `$OPENCLAW_STATE_DIR/agents//sessions/sessions.json` | Метадані сесій (для кожного агента) | Застарілий шлях для одного агента: `~/.openclaw/agent/*` (мігрується через `openclaw doctor`). - Ваш **робочий простір** (AGENTS.md, файли памʼяті, skills тощо) є окремим і налаштовується через `agents.defaults.workspace` (за замовчуванням: `~/.openclaw/workspace`). + Ваш **робочий простір** (AGENTS.md, файли пам’яті, skills тощо) є окремим і налаштовується через `agents.defaults.workspace` (за замовчуванням: `~/.openclaw/workspace`). - Ці файли розміщуються в **робочому просторі агента**, а не в `~/.openclaw`. + Ці файли зберігаються в **робочому просторі агента**, а не в `~/.openclaw`. - **Робочий простір (для кожного агента)**: `AGENTS.md`, `SOUL.md`, `IDENTITY.md`, `USER.md`, - `MEMORY.md`, `memory/YYYY-MM-DD.md`, необовʼязковий `HEARTBEAT.md`. + `MEMORY.md`, `memory/YYYY-MM-DD.md`, необов’язковий `HEARTBEAT.md`. Кореневий файл `memory.md` у нижньому регістрі є лише застарілим вхідним файлом для відновлення; `openclaw doctor --fix` - може обʼєднати його з `MEMORY.md`, коли існують обидва файли. - - **Каталог стану (`~/.openclaw`)**: конфігурація, стан каналу/провайдера, профілі автентифікації, сеанси, журнали + може об’єднати його в `MEMORY.md`, коли існують обидва файли. + - **Каталог стану (`~/.openclaw`)**: конфігурація, стан каналів/провайдерів, профілі автентифікації, сесії, журнали та спільні skills (`~/.openclaw/skills`). - Робочий простір за замовчуванням - `~/.openclaw/workspace`, його можна налаштувати через: + Робочий простір за замовчуванням: `~/.openclaw/workspace`, налаштовується через: ```json5 { @@ -602,25 +601,25 @@ x-i18n: } ``` - Якщо бот "забуває" після перезапуску, переконайтеся, що Gateway використовує той самий - робочий простір під час кожного запуску (і памʼятайте: віддалений режим використовує **робочий простір хоста gateway**, - а не ваш локальний ноутбук). + Якщо бот "забуває" після перезапуску, перевірте, що Gateway під час кожного запуску використовує той самий + робочий простір (і пам’ятайте: віддалений режим використовує **робочий простір хоста gateway**, + а не вашого локального ноутбука). - Порада: якщо вам потрібна довготривала поведінка або вподобання, попросіть бота **записати це в + Порада: якщо вам потрібна стійка поведінка або налаштування, попросіть бота **записати це в AGENTS.md або MEMORY.md**, а не покладатися на історію чату. - Див. [Робочий простір агента](/uk/concepts/agent-workspace) і [Памʼять](/uk/concepts/memory). + Див. [Робочий простір агента](/uk/concepts/agent-workspace) і [Пам’ять](/uk/concepts/memory). - Помістіть свій **робочий простір агента** у **приватний** git-репозиторій і створюйте його резервну копію десь - приватно (наприклад, у приватному GitHub). Це збереже памʼять + файли AGENTS/SOUL/USER - і дасть змогу пізніше відновити "розум" асистента. + Розмістіть свій **робочий простір агента** у **приватному** git-репозиторії та створюйте його резервні копії в приватному місці + (наприклад, GitHub private). Це зберігає пам’ять + файли AGENTS/SOUL/USER + і дає змогу пізніше відновити "розум" асистента. - **Не** комітьте нічого з `~/.openclaw` (облікові дані, сеанси, токени або зашифровані секретні навантаження). + **Не** комітьте нічого з `~/.openclaw` (облікові дані, сесії, токени або зашифровані секретні навантаження). Якщо вам потрібне повне відновлення, створюйте резервні копії і робочого простору, і каталогу стану - окремо (див. запитання про міграцію вище). + окремо (див. питання про міграцію вище). Документація: [Робочий простір агента](/uk/concepts/agent-workspace). @@ -631,15 +630,15 @@ x-i18n: - Так. Робочий простір - це **типовий cwd** і якір памʼяті, а не жорстка пісочниця. - Відносні шляхи розвʼязуються всередині робочого простору, але абсолютні шляхи можуть отримувати доступ до інших + Так. Робочий простір - це **cwd за замовчуванням** і прив’язка пам’яті, а не жорстка пісочниця. + Відносні шляхи визначаються всередині робочого простору, але абсолютні шляхи можуть отримувати доступ до інших розташувань хоста, якщо пісочницю не ввімкнено. Якщо вам потрібна ізоляція, використовуйте - [`agents.defaults.sandbox`](/uk/gateway/sandboxing) або налаштування пісочниці для окремого агента. Якщо ви - хочете, щоб репозиторій був типовим робочим каталогом, укажіть для `workspace` цього агента + [`agents.defaults.sandbox`](/uk/gateway/sandboxing) або налаштування пісочниці для конкретного агента. Якщо ви + хочете, щоб репозиторій був робочим каталогом за замовчуванням, вкажіть для `workspace` цього агента корінь репозиторію. Репозиторій OpenClaw - це лише вихідний код; тримайте - робочий простір окремо, якщо ви навмисно не хочете, щоб агент працював усередині нього. + робочий простір окремо, якщо ви не хочете навмисно, щоб агент працював усередині нього. - Приклад (репозиторій як типовий cwd): + Приклад (репозиторій як cwd за замовчуванням): ```json5 { @@ -653,8 +652,8 @@ x-i18n: - - Стан сеансу належить **хосту gateway**. Якщо ви у віддаленому режимі, потрібне вам сховище сеансів розташоване на віддаленій машині, а не на вашому локальному ноутбуці. Див. [Керування сеансами](/uk/concepts/session). + + Стан сесій належить **хосту gateway**. Якщо ви у віддаленому режимі, сховище сесій, яке вас цікавить, розташоване на віддаленій машині, а не на вашому локальному ноутбуці. Див. [Керування сесіями](/uk/concepts/session). @@ -662,21 +661,21 @@ x-i18n: - OpenClaw читає необовʼязкову конфігурацію **JSON5** з `$OPENCLAW_CONFIG_PATH` (за замовчуванням: `~/.openclaw/openclaw.json`): + OpenClaw читає необов’язкову конфігурацію **JSON5** з `$OPENCLAW_CONFIG_PATH` (за замовчуванням: `~/.openclaw/openclaw.json`): ``` $OPENCLAW_CONFIG_PATH ``` - Якщо файл відсутній, використовуються доволі безпечні типові значення (зокрема типовий робочий простір `~/.openclaw/workspace`). + Якщо файл відсутній, використовуються достатньо безпечні значення за замовчуванням (зокрема робочий простір за замовчуванням `~/.openclaw/workspace`). - - Привʼязки не до loopback **потребують чинного шляху автентифікації gateway**. На практиці це означає: + + Прив’язки не до loopback **потребують чинного шляху автентифікації gateway**. На практиці це означає: - - автентифікація через спільний секрет: токен або пароль - - `gateway.auth.mode: "trusted-proxy"` за правильно налаштованим зворотним проксі з урахуванням ідентичності + - автентифікація спільним секретом: токен або пароль + - `gateway.auth.mode: "trusted-proxy"` за правильно налаштованим identity-aware reverse proxy ```json5 { @@ -693,30 +692,30 @@ x-i18n: Примітки: - `gateway.remote.token` / `.password` самі по собі **не** вмикають локальну автентифікацію gateway. - - Локальні шляхи викликів можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано. + - Локальні шляхи викликів можуть використовувати `gateway.remote.*` як запасний варіант лише тоді, коли `gateway.auth.*` не задано. - Для автентифікації паролем натомість задайте `gateway.auth.mode: "password"` разом із `gateway.auth.password` (або `OPENCLAW_GATEWAY_PASSWORD`). - - Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і його не розвʼязано, розвʼязання завершується закрито (без маскування віддаленим резервним варіантом). + - Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і його не вдалося визначити, визначення завершується закрито (без маскування через віддалений запасний варіант). - Налаштування Control UI зі спільним секретом автентифікуються через `connect.params.auth.token` або `connect.params.auth.password` (зберігається в налаштуваннях застосунку/UI). Режими з ідентичністю, як-от Tailscale Serve або `trusted-proxy`, натомість використовують заголовки запиту. Уникайте розміщення спільних секретів в URL. - - З `gateway.auth.mode: "trusted-proxy"` зворотні проксі loopback на тому самому хості потребують явного `gateway.auth.trustedProxy.allowLoopback = true` і запису loopback у `gateway.trustedProxies`. + - З `gateway.auth.mode: "trusted-proxy"` reverse proxy на тому самому хості через loopback потребують явного `gateway.auth.trustedProxy.allowLoopback = true` і запису loopback у `gateway.trustedProxies`. - - OpenClaw примусово вмикає автентифікацію gateway за замовчуванням, зокрема для loopback. У звичайному типовому шляху це означає автентифікацію токеном: якщо явний шлях автентифікації не налаштовано, запуск gateway розвʼязується в режим токена й автоматично генерує його, зберігаючи в `gateway.auth.token`, тому **локальні клієнти WS мають автентифікуватися**. Це блокує інші локальні процеси від викликів Gateway. + + OpenClaw за замовчуванням вимагає автентифікацію gateway, зокрема для loopback. У звичайному стандартному шляху це означає автентифікацію токеном: якщо явний шлях автентифікації не налаштовано, запуск gateway визначає режим токена й автоматично генерує його, зберігаючи в `gateway.auth.token`, тому **локальні WS-клієнти мають автентифікуватися**. Це блокує інші локальні процеси від виклику Gateway. - Якщо ви віддаєте перевагу іншому шляху автентифікації, можете явно вибрати режим пароля (або, для зворотних проксі з урахуванням ідентичності, `trusted-proxy`). Якщо ви **справді** хочете відкритий loopback, явно задайте `gateway.auth.mode: "none"` у своїй конфігурації. Doctor може згенерувати токен для вас будь-коли: `openclaw doctor --generate-gateway-token`. + Якщо ви віддаєте перевагу іншому шляху автентифікації, можете явно вибрати режим пароля (або, для identity-aware reverse proxy, `trusted-proxy`). Якщо ви **справді** хочете відкритий loopback, явно задайте `gateway.auth.mode: "none"` у своїй конфігурації. Doctor може згенерувати для вас токен будь-коли: `openclaw doctor --generate-gateway-token`. Gateway стежить за конфігурацією та підтримує гаряче перезавантаження: - - `gateway.reload.mode: "hybrid"` (за замовчуванням): гаряче застосування безпечних змін, перезапуск для критичних + - `gateway.reload.mode: "hybrid"` (за замовчуванням): безпечно застосовує безпечні зміни на гарячу, перезапускається для критичних - `hot`, `restart`, `off` також підтримуються - + Задайте `cli.banner.taglineMode` у конфігурації: ```json5 @@ -729,24 +728,24 @@ x-i18n: } ``` - - `off`: приховує текст слогана, але лишає рядок із назвою/версією банера. + - `off`: приховує текст слогана, але залишає рядок назви/версії банера. - `default`: щоразу використовує `All your chats, one OpenClaw.`. - - `random`: ротаційні жартівливі/сезонні слогани (типова поведінка). - - Якщо ви взагалі не хочете банер, задайте змінну середовища `OPENCLAW_HIDE_BANNER=1`. + - `random`: ротаційні кумедні/сезонні слогани (поведінка за замовчуванням). + - Якщо ви взагалі не хочете банера, задайте змінну середовища `OPENCLAW_HIDE_BANNER=1`. - + `web_fetch` працює без API-ключа. `web_search` залежить від вибраного провайдера: - Провайдери з API, як-от Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity і Tavily, потребують свого звичайного налаштування API-ключа. - Ollama Web Search не потребує ключа, але використовує ваш налаштований хост Ollama і потребує `ollama signin`. - DuckDuckGo не потребує ключа, але це неофіційна інтеграція на основі HTML. - - SearXNG не потребує ключа/самостійно хоститься; налаштуйте `SEARXNG_BASE_URL` або `plugins.entries.searxng.config.webSearch.baseUrl`. + - SearXNG не потребує ключа/може бути самостійно розгорнутим; налаштуйте `SEARXNG_BASE_URL` або `plugins.entries.searxng.config.webSearch.baseUrl`. **Рекомендовано:** запустіть `openclaw configure --section web` і виберіть провайдера. - Альтернативи через середовище: + Альтернативи через змінні середовища: - Brave: `BRAVE_API_KEY` - Exa: `EXA_API_KEY` @@ -788,31 +787,31 @@ x-i18n: } ``` - Конфігурація вебпошуку, специфічна для провайдера, тепер розташована в `plugins.entries..config.webSearch.*`. - Застарілі шляхи провайдерів `tools.web.search.*` тимчасово все ще завантажуються для сумісності, але їх не слід використовувати для нових конфігурацій. - Резервна конфігурація веботримання Firecrawl розташована в `plugins.entries.firecrawl.config.webFetch.*`. + Конфігурація вебпошуку для конкретного провайдера тепер розміщується в `plugins.entries..config.webSearch.*`. + Застарілі шляхи провайдера `tools.web.search.*` тимчасово ще завантажуються для сумісності, але їх не слід використовувати для нових конфігурацій. + Резервна конфігурація веботримання Firecrawl розміщується в `plugins.entries.firecrawl.config.webFetch.*`. Примітки: - Якщо ви використовуєте списки дозволів, додайте `web_search`/`web_fetch`/`x_search` або `group:web`. - `web_fetch` увімкнено за замовчуванням (якщо його явно не вимкнено). - - Якщо `tools.web.fetch.provider` пропущено, OpenClaw автоматично визначає першого готового резервного провайдера отримання з доступних облікових даних. Наразі вбудованим провайдером є Firecrawl. - - Демони читають змінні середовища з `~/.openclaw/.env` (або з середовища служби). + - Якщо `tools.web.fetch.provider` пропущено, OpenClaw автоматично визначає першого готового резервного провайдера отримання з доступних облікових даних. Наразі вбудований провайдер — Firecrawl. + - Демони читають змінні середовища з `~/.openclaw/.env` (або із середовища служби). Документація: [Вебінструменти](/uk/tools/web). - - `config.apply` замінює **всю конфігурацію**. Якщо ви надсилаєте частковий об’єкт, усе - інше видаляється. + + `config.apply` замінює **всю конфігурацію**. Якщо ви надішлете частковий об'єкт, усе + інше буде видалено. Поточний OpenClaw захищає від багатьох випадкових перезаписів: - Записи конфігурації, що належать OpenClaw, перевіряють повну конфігурацію після зміни перед записом. - Недійсні або руйнівні записи, що належать OpenClaw, відхиляються та зберігаються як `openclaw.json.rejected.*`. - - Якщо пряме редагування порушує запуск або гаряче перезавантаження, Gateway відновлює останню відому справну конфігурацію та зберігає відхилений файл як `openclaw.json.clobbered.*`. - - Головний агент отримує попередження під час запуску після відновлення, щоб він не записав помилкову конфігурацію знову без перевірки. + - Якщо пряме редагування ламає запуск або гаряче перезавантаження, Gateway відновлює останню відому справну конфігурацію та зберігає відхилений файл як `openclaw.json.clobbered.*`. + - Основний агент отримує попередження під час завантаження після відновлення, щоб він не записав сліпо погану конфігурацію знову. Відновлення: @@ -820,36 +819,36 @@ x-i18n: - Перегляньте найновіший `openclaw.json.clobbered.*` або `openclaw.json.rejected.*` поруч з активною конфігурацією. - Залиште активну відновлену конфігурацію, якщо вона працює, а потім скопіюйте назад лише потрібні ключі за допомогою `openclaw config set` або `config.patch`. - Запустіть `openclaw config validate` і `openclaw doctor`. - - Якщо у вас немає останньої відомої справної конфігурації або відхиленого корисного навантаження, відновіть із резервної копії або повторно запустіть `openclaw doctor` і налаштуйте канали/моделі. - - Якщо це було неочікувано, повідомте про помилку й додайте останню відому конфігурацію або будь-яку резервну копію. + - Якщо у вас немає останньої відомої справної конфігурації або відхиленого вмісту, відновіть із резервної копії або повторно запустіть `openclaw doctor` і налаштуйте канали/моделі. + - Якщо це було неочікувано, створіть звіт про помилку й додайте останню відому конфігурацію або будь-яку резервну копію. - Локальний агент кодування часто може відновити робочу конфігурацію з журналів або історії. Як уникнути: - Використовуйте `openclaw config set` для невеликих змін. - - Використовуйте `openclaw configure` для інтерактивних редагувань. - - Спершу використовуйте `config.schema.lookup`, якщо ви не впевнені щодо точного шляху або форми поля; він повертає поверхневий вузол схеми та підсумки безпосередніх дочірніх елементів для деталізації. + - Використовуйте `openclaw configure` для інтерактивного редагування. + - Спершу використовуйте `config.schema.lookup`, якщо не впевнені щодо точного шляху або форми поля; він повертає поверхневий вузол схеми та короткі описи безпосередніх дочірніх елементів для деталізації. - Використовуйте `config.patch` для часткових RPC-редагувань; залишайте `config.apply` лише для повної заміни конфігурації. - - Якщо ви використовуєте інструмент `gateway` лише для власника із запуску агента, він усе одно відхилятиме записи до `tools.exec.ask` / `tools.exec.security` (зокрема застарілі псевдоніми `tools.bash.*`, які нормалізуються до тих самих захищених шляхів exec). + - Якщо ви використовуєте доступний лише власнику інструмент `gateway` із запуску агента, він все одно відхилятиме записи до `tools.exec.ask` / `tools.exec.security` (зокрема застарілі псевдоніми `tools.bash.*`, які нормалізуються до тих самих захищених шляхів виконання). - Документація: [Конфігурація](/uk/cli/config), [Налаштування](/uk/cli/configure), [Усунення проблем Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config), [Doctor](/uk/gateway/doctor). + Документація: [Конфігурація](/uk/cli/config), [Налаштування](/uk/cli/configure), [Усунення несправностей Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config), [Doctor](/uk/gateway/doctor). - - Поширений шаблон — **один Gateway** (наприклад, Raspberry Pi) плюс **вузли** та **агенти**: + + Типовий шаблон — **один Gateway** (наприклад, Raspberry Pi) плюс **Node-и** та **агенти**: - - **Gateway (центральний):** володіє каналами (Signal/WhatsApp), маршрутизацією та сеансами. - - **Вузли (пристрої):** Mac/iOS/Android підключаються як периферійні пристрої та надають локальні інструменти (`system.run`, `canvas`, `camera`). - - **Агенти (виконавці):** окремі «мізки»/робочі простори для спеціальних ролей (наприклад, "Hetzner ops", "Personal data"). - - **Субагенти:** запускають фонову роботу з головного агента, коли потрібен паралелізм. + - **Gateway (центральний):** керує каналами (Signal/WhatsApp), маршрутизацією та сеансами. + - **Node-и (пристрої):** Macs/iOS/Android підключаються як периферійні пристрої та надають локальні інструменти (`system.run`, `canvas`, `camera`). + - **Агенти (працівники):** окремі «мізки»/робочі простори для спеціальних ролей (наприклад, "Hetzner ops", "Personal data"). + - **Підагенти:** запускають фонову роботу з основного агента, коли потрібен паралелізм. - **TUI:** підключайтеся до Gateway і перемикайте агентів/сеанси. - Документація: [Вузли](/uk/nodes), [Віддалений доступ](/uk/gateway/remote), [Маршрутизація кількох агентів](/uk/concepts/multi-agent), [Субагенти](/uk/tools/subagents), [TUI](/uk/web/tui). + Документація: [Node-и](/uk/nodes), [Віддалений доступ](/uk/gateway/remote), [Багатоагентна маршрутизація](/uk/concepts/multi-agent), [Підагенти](/uk/tools/subagents), [TUI](/uk/web/tui). - + Так. Це параметр конфігурації: ```json5 @@ -863,73 +862,73 @@ x-i18n: } ``` - За замовчуванням — `false` (з інтерфейсом). Безголовий режим частіше може запускати антибот-перевірки на деяких сайтах. Див. [Браузер](/uk/tools/browser). + За замовчуванням — `false` (із вікном). Headless-режим із більшою ймовірністю запускає антибот-перевірки на деяких сайтах. Див. [Браузер](/uk/tools/browser). - Безголовий режим використовує **той самий рушій Chromium** і працює для більшості автоматизації (форми, кліки, скрейпінг, входи). Основні відмінності: + Headless використовує **той самий рушій Chromium** і працює для більшості автоматизацій (форми, кліки, скрейпінг, входи). Основні відмінності: - Немає видимого вікна браузера (використовуйте знімки екрана, якщо потрібна візуальна перевірка). - - Деякі сайти суворіше ставляться до автоматизації в безголовому режимі (CAPTCHA, антибот). - Наприклад, X/Twitter часто блокує безголові сеанси. + - Деякі сайти суворіше ставляться до автоматизації в headless-режимі (CAPTCHA, антибот). + Наприклад, X/Twitter часто блокує headless-сеанси. - Установіть `browser.executablePath` на бінарний файл Brave (або будь-який браузер на основі Chromium) і перезапустіть Gateway. + Установіть `browser.executablePath` на ваш виконуваний файл Brave (або будь-який браузер на базі Chromium) і перезапустіть Gateway. Повні приклади конфігурації див. у [Браузер](/uk/tools/browser#use-brave-or-another-chromium-based-browser). -## Віддалені gateway та вузли +## Віддалені Gateway та Node-и - - Повідомлення Telegram обробляються **gateway**. gateway запускає агента й - лише потім викликає вузли через **Gateway WebSocket**, коли потрібен інструмент вузла: + + Повідомлення Telegram обробляє **gateway**. Gateway запускає агента і + лише потім викликає Node-и через **Gateway WebSocket**, коли потрібен інструмент Node: - Telegram → Gateway → Agent → `node.*` → Node → Gateway → Telegram + Telegram → Gateway → Агент → `node.*` → Node → Gateway → Telegram - Вузли не бачать вхідний трафік провайдера; вони отримують лише RPC-виклики вузла. + Node-и не бачать вхідного трафіку провайдера; вони отримують лише RPC-виклики Node. - - Коротка відповідь: **спарте свій комп’ютер як вузол**. Gateway працює в іншому місці, але може - викликати інструменти `node.*` (екран, камера, система) на вашому локальному комп’ютері через Gateway WebSocket. + + Коротка відповідь: **спарте ваш комп'ютер як Node**. Gateway працює в іншому місці, але може + викликати інструменти `node.*` (екран, камера, система) на вашій локальній машині через Gateway WebSocket. Типове налаштування: 1. Запустіть Gateway на постійно ввімкненому хості (VPS/домашній сервер). - 2. Помістіть хост Gateway і ваш комп’ютер в одну tailnet. - 3. Переконайтеся, що Gateway WS доступний (прив’язка tailnet або SSH-тунель). - 4. Відкрийте застосунок macOS локально й підключіться в режимі **Remote over SSH** (або напряму через tailnet), - щоб він міг зареєструватися як вузол. - 5. Схваліть вузол на Gateway: + 2. Розмістіть хост Gateway і ваш комп'ютер в одній tailnet. + 3. Переконайтеся, що Gateway WS доступний (прив'язка tailnet або SSH-тунель). + 4. Відкрийте застосунок macOS локально й підключіться в режимі **Віддалено через SSH** (або безпосередньо через tailnet), + щоб він міг зареєструватися як Node. + 5. Схваліть Node на Gateway: ```bash openclaw devices list openclaw devices approve ``` - Окремий TCP-міст не потрібен; вузли підключаються через Gateway WebSocket. + Окремий TCP-міст не потрібен; Node-и підключаються через Gateway WebSocket. - Нагадування про безпеку: спарювання вузла macOS дозволяє `system.run` на цій машині. Спарюйте - лише пристрої, яким довіряєте, і перегляньте [Безпеку](/uk/gateway/security). + Нагадування щодо безпеки: спарювання Node macOS дозволяє `system.run` на цій машині. Спарюйте + лише пристрої, яким довіряєте, і перегляньте [Безпека](/uk/gateway/security). - Документація: [Вузли](/uk/nodes), [Протокол Gateway](/uk/gateway/protocol), [Віддалений режим macOS](/uk/platforms/mac/remote), [Безпека](/uk/gateway/security). + Документація: [Node-и](/uk/nodes), [Протокол Gateway](/uk/gateway/protocol), [Віддалений режим macOS](/uk/platforms/mac/remote), [Безпека](/uk/gateway/security). - - Перевірте основне: + + Перевірте базові речі: - - Gateway працює: `openclaw gateway status` - - Стан Gateway: `openclaw status` - - Стан каналів: `openclaw channels status` + - Gateway запущено: `openclaw gateway status` + - Справність Gateway: `openclaw status` + - Справність каналу: `openclaw channels status` Потім перевірте автентифікацію та маршрутизацію: - - Якщо ви використовуєте Tailscale Serve, переконайтеся, що `gateway.auth.allowTailscale` налаштовано правильно. - - Якщо ви підключаєтеся через SSH-тунель, підтвердьте, що локальний тунель працює й вказує на правильний порт. + - Якщо ви використовуєте Tailscale Serve, переконайтеся, що `gateway.auth.allowTailscale` задано правильно. + - Якщо ви підключаєтеся через SSH-тунель, підтвердьте, що локальний тунель працює й указує на правильний порт. - Підтвердьте, що ваші списки дозволів (DM або група) містять ваш обліковий запис. Документація: [Tailscale](/uk/gateway/tailscale), [Віддалений доступ](/uk/gateway/remote), [Канали](/uk/channels). @@ -937,76 +936,76 @@ x-i18n: - Так. Вбудованого мосту "bot-to-bot" немає, але це можна налаштувати кількома + Так. Вбудованого мосту "бот-до-бота" немає, але ви можете з'єднати їх кількома надійними способами: - **Найпростіше:** використовуйте звичайний чат-канал, до якого мають доступ обидва боти (Telegram/Slack/WhatsApp). - Нехай Bot A надішле повідомлення Bot B, а потім Bot B відповість як зазвичай. + **Найпростіше:** використайте звичайний чат-канал, до якого мають доступ обидва боти (Telegram/Slack/WhatsApp). + Нехай бот A надішле повідомлення боту B, а потім бот B відповість як зазвичай. **CLI-міст (загальний):** запустіть скрипт, який викликає інший Gateway за допомогою `openclaw agent --message ... --deliver`, націлюючись на чат, де слухає інший бот. - Якщо один бот на віддаленому VPS, спрямуйте свій CLI на той віддалений Gateway + Якщо один бот на віддаленому VPS, спрямуйте CLI на цей віддалений Gateway через SSH/Tailscale (див. [Віддалений доступ](/uk/gateway/remote)). - Приклад шаблону (запустіть з машини, яка може дістатися цільового Gateway): + Приклад шаблону (запускайте з машини, яка може дістатися цільового Gateway): ```bash openclaw agent --message "Hello from local bot" --deliver --channel telegram --reply-to ``` - Порада: додайте запобіжник, щоб два боти не зациклилися безкінечно (лише за згадкою, списки дозволів - каналів або правило "не відповідати на повідомлення ботів"). + Порада: додайте запобіжник, щоб два боти не зациклилися нескінченно (лише згадування, списки + дозволів каналів або правило "не відповідати на повідомлення ботів"). Документація: [Віддалений доступ](/uk/gateway/remote), [CLI агента](/uk/cli/agent), [Надсилання агентом](/uk/tools/agent-send). - - Ні. Один Gateway може розміщувати кілька агентів, кожен зі своїм робочим простором, типовими моделями - та маршрутизацією. Це звичайне налаштування, і воно значно дешевше та простіше, ніж запускати + + Ні. Один Gateway може розміщувати кілька агентів, кожен із власним робочим простором, типовими параметрами моделі + та маршрутизацією. Це нормальне налаштування, і воно значно дешевше та простіше, ніж запускати один VPS на агента. Використовуйте окремі VPS лише тоді, коли потрібна жорстка ізоляція (межі безпеки) або дуже - різні конфігурації, якими ви не хочете ділитися. Інакше тримайте один Gateway і - використовуйте кілька агентів або субагентів. + різні конфігурації, якими ви не хочете ділитися. Інакше залиште один Gateway і + використовуйте кілька агентів або підагентів. - - Так — вузли є основним способом доступу до вашого ноутбука з віддаленого Gateway, і вони - відкривають більше можливостей, ніж доступ до shell. Gateway працює на macOS/Linux (Windows через WSL2) і є - легким (невеликий VPS або пристрій класу Raspberry Pi підходить; 4 ГБ RAM достатньо), тому поширене - налаштування — постійно ввімкнений хост плюс ваш ноутбук як вузол. + + Так - Node-и є основним способом дістатися вашого ноутбука з віддаленого Gateway, і вони + відкривають більше, ніж доступ до оболонки. Gateway працює на macOS/Linux (Windows через WSL2) і є + легким (невеликого VPS або пристрою класу Raspberry Pi достатньо; 4 ГБ RAM цілком вистачає), тож поширене + налаштування — постійно ввімкнений хост плюс ваш ноутбук як Node. - - **Вхідний SSH не потрібен.** Вузли підключаються назовні до Gateway WebSocket і використовують спарювання пристроїв. - - **Безпечніший контроль виконання.** `system.run` обмежується списками дозволів/схваленнями вузла на цьому ноутбуці. - - **Більше інструментів пристрою.** Вузли надають `canvas`, `camera` і `screen` на додачу до `system.run`. - - **Локальна автоматизація браузера.** Тримайте Gateway на VPS, але запускайте Chrome локально через хост вузла на ноутбуці або під’єднуйтеся до локального Chrome на хості через Chrome MCP. + - **Вхідний SSH не потрібен.** Node-и підключаються назовні до Gateway WebSocket і використовують спарювання пристроїв. + - **Безпечніші засоби контролю виконання.** `system.run` обмежується списками дозволів/схваленнями Node на цьому ноутбуці. + - **Більше інструментів пристрою.** Node-и надають `canvas`, `camera` і `screen` на додаток до `system.run`. + - **Локальна автоматизація браузера.** Тримайте Gateway на VPS, але запускайте Chrome локально через хост Node на ноутбуці або підключайтеся до локального Chrome на хості через Chrome MCP. - SSH підходить для разового доступу до shell, але вузли простіші для постійних робочих процесів агента та + SSH підходить для епізодичного доступу до оболонки, але Node-и простіші для постійних робочих процесів агента та автоматизації пристрою. - Документація: [Вузли](/uk/nodes), [CLI вузлів](/uk/cli/nodes), [Браузер](/uk/tools/browser). + Документація: [Node-и](/uk/nodes), [CLI Node](/uk/cli/nodes), [Браузер](/uk/tools/browser). - - Ні. На одному хості має працювати лише **один gateway**, якщо ви навмисно не запускаєте ізольовані профілі (див. [Кілька gateway](/uk/gateway/multiple-gateways)). Вузли — це периферійні пристрої, які підключаються - до gateway (вузли iOS/Android або "режим вузла" macOS у застосунку меню). Для безголових хостів вузлів - і керування через CLI див. [CLI хоста вузла](/uk/cli/node). + + Ні. Лише **один gateway** має працювати на хост, якщо ви навмисно не запускаєте ізольовані профілі (див. [Кілька gateway](/uk/gateway/multiple-gateways)). Node-и — це периферійні пристрої, які підключаються + до gateway (Node-и iOS/Android або "режим Node" macOS у застосунку меню). Для headless-хостів Node + і керування через CLI див. [CLI хоста Node](/uk/cli/node). - Для змін `gateway`, `discovery` і `canvasHost` потрібен повний перезапуск. + Повний перезапуск потрібен для змін `gateway`, `discovery` і `canvasHost`. - + Так. - - `config.schema.lookup`: переглядає одне піддерево конфігурації з його поверхневим вузлом схеми, відповідною підказкою UI та підсумками безпосередніх дочірніх елементів перед записом - - `config.get`: отримує поточний знімок + хеш - - `config.patch`: безпечне часткове оновлення (бажане для більшості RPC-редагувань); виконує гаряче перезавантаження, коли можливо, і перезапускає, коли потрібно - - `config.apply`: перевіряє + замінює повну конфігурацію; виконує гаряче перезавантаження, коли можливо, і перезапускає, коли потрібно - - Інструмент виконання `gateway`, доступний лише власнику, усе ще відмовляється переписувати `tools.exec.ask` / `tools.exec.security`; застарілі псевдоніми `tools.bash.*` нормалізуються до тих самих захищених шляхів exec + - `config.schema.lookup`: перегляньте одне піддерево конфігурації з його поверхневим вузлом схеми, відповідною UI-підказкою та короткими описами безпосередніх дочірніх елементів перед записом + - `config.get`: отримати поточний знімок + хеш + - `config.patch`: безпечне часткове оновлення (бажане для більшості RPC-редагувань); виконує гаряче перезавантаження, коли це можливо, і перезапускає, коли потрібно + - `config.apply`: перевірити + замінити повну конфігурацію; виконує гаряче перезавантаження, коли це можливо, і перезапускає, коли потрібно + - Доступний лише власнику інструмент runtime `gateway` все одно відмовляється переписувати `tools.exec.ask` / `tools.exec.security`; застарілі псевдоніми `tools.bash.*` нормалізуються до тих самих захищених шляхів виконання @@ -1018,11 +1017,11 @@ x-i18n: } ``` - Це задає ваш workspace і обмежує, хто може запускати бота. + Це задає ваш робочий простір і обмежує, хто може запускати бота. - + Мінімальні кроки: 1. **Встановіть і увійдіть на VPS** @@ -1032,67 +1031,67 @@ x-i18n: sudo tailscale up ``` - 2. **Встановіть і увійдіть на Mac** - - Використайте застосунок Tailscale і ввійдіть у той самий tailnet. + 2. **Встановіть і увійдіть на вашому Mac** + - Використайте застосунок Tailscale і увійдіть до тієї самої tailnet. 3. **Увімкніть MagicDNS (рекомендовано)** - У консолі адміністратора Tailscale увімкніть MagicDNS, щоб VPS мав стабільне ім’я. 4. **Використовуйте hostname tailnet** - SSH: `ssh user@your-vps.tailnet-xxxx.ts.net` - Gateway WS: `ws://your-vps.tailnet-xxxx.ts.net:18789` - Якщо вам потрібен Control UI без SSH, використайте Tailscale Serve на VPS: + Якщо вам потрібен Control UI без SSH, використовуйте Tailscale Serve на VPS: ```bash openclaw gateway --tailscale serve ``` - Це залишає gateway прив’язаним до loopback і надає HTTPS через Tailscale. Див. [Tailscale](/uk/gateway/tailscale). + Це залишає gateway прив’язаним до loopback і відкриває HTTPS через Tailscale. Див. [Tailscale](/uk/gateway/tailscale). - + Serve відкриває **Gateway Control UI + WS**. Nodes підключаються через той самий endpoint Gateway WS. Рекомендоване налаштування: - 1. **Переконайтеся, що VPS + Mac перебувають в одному tailnet**. - 2. **Використайте застосунок macOS у Remote mode** (SSH target може бути hostname tailnet). - Застосунок прокине порт Gateway і підключиться як Node. - 3. **Підтвердьте Node** на gateway: + 1. **Переконайтеся, що VPS і Mac перебувають у тій самій tailnet**. + 2. **Використовуйте застосунок macOS у режимі Remote** (ціллю SSH може бути hostname tailnet). + Застосунок створить тунель до порту Gateway і підключиться як node. + 3. **Схваліть node** на gateway: ```bash openclaw devices list openclaw devices approve ``` - Документація: [Gateway protocol](/uk/gateway/protocol), [Discovery](/uk/gateway/discovery), [macOS remote mode](/uk/platforms/mac/remote). + Документація: [Протокол Gateway](/uk/gateway/protocol), [Виявлення](/uk/gateway/discovery), [Віддалений режим macOS](/uk/platforms/mac/remote). - - Якщо на другому ноутбуці вам потрібні лише **локальні інструменти** (екран/камера/exec), додайте його як - **Node**. Так ви збережете один Gateway і уникнете дублювання конфігурації. Локальні інструменти Node + + Якщо вам потрібні лише **локальні інструменти** (екран/камера/exec) на другому ноутбуці, додайте його як + **node**. Це зберігає один Gateway і допомагає уникнути дублювання конфігурації. Інструменти локального node наразі доступні лише для macOS, але ми плануємо розширити їх на інші ОС. - Встановлюйте другий Gateway лише тоді, коли потрібна **жорстка ізоляція** або два повністю окремі боти. + Встановлюйте другий Gateway лише тоді, коли вам потрібна **жорстка ізоляція** або два повністю окремі боти. - Документація: [Nodes](/uk/nodes), [Nodes CLI](/uk/cli/nodes), [Multiple gateways](/uk/gateway/multiple-gateways). + Документація: [Nodes](/uk/nodes), [CLI для Nodes](/uk/cli/nodes), [Кілька gateways](/uk/gateway/multiple-gateways). -## Змінні середовища та завантаження .env +## Env vars і завантаження .env - OpenClaw читає змінні середовища з батьківського процесу (shell, launchd/systemd, CI тощо) і додатково завантажує: + OpenClaw читає env vars з батьківського процесу (shell, launchd/systemd, CI тощо) і додатково завантажує: - `.env` з поточного робочого каталогу - глобальний резервний `.env` з `~/.openclaw/.env` (також `$OPENCLAW_STATE_DIR/.env`) - Жоден файл `.env` не перевизначає наявні змінні середовища. + Жоден файл `.env` не перевизначає наявні env vars. - Ви також можете визначити inline-змінні середовища в конфігурації (застосовуються лише якщо їх немає в середовищі процесу): + Також можна визначити inline env vars у конфігурації (застосовуються лише якщо їх немає в env процесу): ```json5 { @@ -1103,15 +1102,15 @@ x-i18n: } ``` - Повний порядок пріоритетів і джерела див. у [/environment](/uk/help/environment). + Див. [/environment](/uk/help/environment), щоб отримати повну інформацію про пріоритети та джерела. - + Два поширені виправлення: - 1. Помістіть відсутні ключі в `~/.openclaw/.env`, щоб їх було підхоплено навіть тоді, коли сервіс не успадковує середовище вашого shell. - 2. Увімкніть імпорт shell (зручність за згодою): + 1. Помістіть відсутні ключі в `~/.openclaw/.env`, щоб їх було підхоплено навіть тоді, коли служба не успадковує env вашого shell. + 2. Увімкніть імпорт shell (зручність, що вмикається явно): ```json5 { @@ -1124,26 +1123,26 @@ x-i18n: } ``` - Це запускає ваш login shell і імпортує лише відсутні очікувані ключі (ніколи не перевизначає). Еквіваленти змінних середовища: + Це запускає ваш login shell і імпортує лише відсутні очікувані ключі (ніколи не перевизначає). Еквіваленти env var: `OPENCLAW_LOAD_SHELL_ENV=1`, `OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000`. - - `openclaw models status` повідомляє, чи ввімкнено **імпорт shell env**. "Shell env: off" - **не** означає, що ваших змінних середовища бракує - це лише означає, що OpenClaw не завантажуватиме + + `openclaw models status` повідомляє, чи ввімкнено **імпорт env із shell**. "Shell env: off" + **не** означає, що ваші env vars відсутні, це лише означає, що OpenClaw не завантажуватиме ваш login shell автоматично. - Якщо Gateway працює як сервіс (launchd/systemd), він не успадкує ваше shell - середовище. Виправте це одним із цих способів: + Якщо Gateway працює як служба (launchd/systemd), він не успадкує ваше середовище + shell. Виправте це одним із цих способів: - 1. Помістіть token у `~/.openclaw/.env`: + 1. Помістіть токен у `~/.openclaw/.env`: ``` COPILOT_GITHUB_TOKEN=... ``` - 2. Або увімкніть імпорт shell (`env.shellEnv.enabled: true`). + 2. Або ввімкніть імпорт shell (`env.shellEnv.enabled: true`). 3. Або додайте його до блока `env` у вашій конфігурації (застосовується лише якщо відсутній). Потім перезапустіть gateway і перевірте ще раз: @@ -1162,14 +1161,14 @@ x-i18n: - Надішліть `/new` або `/reset` окремим повідомленням. Див. [Session management](/uk/concepts/session). + Надішліть `/new` або `/reset` як окреме повідомлення. Див. [Керування сесіями](/uk/concepts/session). - - Сесії можуть завершуватися після `session.idleMinutes`, але це **вимкнено за замовчуванням** (значення за замовчуванням **0**). - Встановіть додатне значення, щоб увімкнути завершення через неактивність. Коли це ввімкнено, **наступне** - повідомлення після періоду неактивності починає новий ідентифікатор сесії для цього ключа чату. - Це не видаляє transcripts - це лише починає нову сесію. + + Термін дії сесій може завершуватися після `session.idleMinutes`, але це **вимкнено за замовчуванням** (типове значення **0**). + Задайте додатне значення, щоб увімкнути завершення через бездіяльність. Коли це ввімкнено, **наступне** + повідомлення після періоду бездіяльності запускає новий id сесії для цього ключа чату. + Це не видаляє transcripts, а лише починає нову сесію. ```json5 { @@ -1181,35 +1180,35 @@ x-i18n: - - Так, через **multi-agent routing** і **sub-agents**. Ви можете створити одного coordinator - agent і кілька worker agents із власними workspaces і моделями. + + Так, через **маршрутизацію між кількома агентами** та **sub-agents**. Ви можете створити одного координатора + agent і кількох worker agents із власними робочими просторами та моделями. Водночас це найкраще сприймати як **цікавий експеримент**. Він потребує багато токенів і часто - менш ефективний, ніж один bot з окремими сесіями. Типова модель, яку ми - уявляємо, - це один bot, з яким ви спілкуєтеся, з різними сесіями для паралельної роботи. Цей - bot також може запускати sub-agents, коли потрібно. + менш ефективний, ніж використання одного бота з окремими сесіями. Типова модель, яку ми + уявляємо, це один бот, із яким ви спілкуєтеся, і різні сесії для паралельної роботи. Цей + бот також може створювати sub-agents за потреби. - Документація: [Multi-agent routing](/uk/concepts/multi-agent), [Sub-agents](/uk/tools/subagents), [Agents CLI](/uk/cli/agents). + Документація: [Маршрутизація між кількома агентами](/uk/concepts/multi-agent), [Sub-agents](/uk/tools/subagents), [CLI для Agents](/uk/cli/agents). - + Контекст сесії обмежений вікном моделі. Довгі чати, великі виводи інструментів або багато - файлів можуть спричинити Compaction чи обрізання. + файлів можуть спричинити Compaction або обрізання. Що допомагає: - Попросіть бота підсумувати поточний стан і записати його у файл. - - Використовуйте `/compact` перед довгими завданнями, а `/new` під час зміни теми. - - Тримайте важливий контекст у workspace і попросіть бота перечитати його. + - Використовуйте `/compact` перед довгими завданнями та `/new` під час перемикання тем. + - Зберігайте важливий контекст у робочому просторі й просіть бота перечитати його. - Використовуйте sub-agents для довгої або паралельної роботи, щоб основний чат залишався меншим. - - Виберіть модель із більшим контекстним вікном, якщо це трапляється часто. + - Виберіть модель із більшим вікном контексту, якщо це трапляється часто. - Використайте команду reset: + Використовуйте команду reset: ```bash openclaw reset @@ -1227,16 +1226,16 @@ x-i18n: openclaw onboard --install-daemon ``` - Нотатки: + Примітки: - Onboarding також пропонує **Reset**, якщо бачить наявну конфігурацію. Див. [Onboarding (CLI)](/uk/start/wizard). - - Якщо ви використовували profiles (`--profile` / `OPENCLAW_PROFILE`), скиньте кожен state dir (за замовчуванням це `~/.openclaw-`). - - Dev reset: `openclaw gateway --dev --reset` (лише для dev; стирає dev config + credentials + sessions + workspace). + - Якщо ви використовували профілі (`--profile` / `OPENCLAW_PROFILE`), скиньте кожен state dir (за замовчуванням це `~/.openclaw-`). + - Скидання для розробки: `openclaw gateway --dev --reset` (лише для dev; стирає dev-конфігурацію + credentials + сесії + робочий простір). - Використайте один із цих варіантів: + Використовуйте один із цих варіантів: - **Compact** (зберігає розмову, але підсумовує старіші ходи): @@ -1244,7 +1243,7 @@ x-i18n: /compact ``` - або `/compact `, щоб спрямувати підсумок. + або `/compact `, щоб керувати підсумком. - **Reset** (новий ID сесії для того самого ключа чату): @@ -1253,26 +1252,26 @@ x-i18n: /reset ``` - Якщо це продовжує траплятися: + Якщо це повторюється: - - Увімкніть або налаштуйте **session pruning** (`agents.defaults.contextPruning`), щоб обрізати старий вивід інструментів. - - Використайте модель із більшим контекстним вікном. + - Увімкніть або налаштуйте **обрізання сесії** (`agents.defaults.contextPruning`), щоб скорочувати старий вивід інструментів. + - Використовуйте модель із більшим вікном контексту. - Документація: [Compaction](/uk/concepts/compaction), [Session pruning](/uk/concepts/session-pruning), [Session management](/uk/concepts/session). + Документація: [Compaction](/uk/concepts/compaction), [Обрізання сесії](/uk/concepts/session-pruning), [Керування сесіями](/uk/concepts/session). - Це помилка перевірки provider: модель видала блок `tool_use` без обов’язкового - `input`. Зазвичай це означає, що історія сесії застаріла або пошкоджена (часто після довгих threads + Це помилка валідації провайдера: модель згенерувала блок `tool_use` без обов’язкового + `input`. Зазвичай це означає, що історія сесії застаріла або пошкоджена (часто після довгих потоків або зміни інструмента/схеми). Виправлення: почніть нову сесію за допомогою `/new` (окреме повідомлення). - - Heartbeats за замовчуванням запускаються кожні **30m** (**1h** під час використання OAuth auth). Налаштуйте або вимкніть їх: + + Heartbeats запускаються кожні **30m** за замовчуванням (**1h** під час використання OAuth auth). Налаштуйте або вимкніть їх: ```json5 { @@ -1288,9 +1287,9 @@ x-i18n: Якщо `HEARTBEAT.md` існує, але фактично порожній (лише порожні рядки та markdown заголовки на кшталт `# Heading`), OpenClaw пропускає запуск heartbeat, щоб заощадити API-виклики. - Якщо файла немає, heartbeat усе одно запускається, і модель вирішує, що робити. + Якщо файл відсутній, heartbeat все одно запускається, а модель вирішує, що робити. - Перевизначення для окремого agent використовують `agents.list[].heartbeat`. Документація: [Heartbeat](/uk/gateway/heartbeat). + Перевизначення для окремого агента використовують `agents.list[].heartbeat`. Документація: [Heartbeat](/uk/gateway/heartbeat). @@ -1323,7 +1322,7 @@ x-i18n: Шукайте `chatId` (або `from`), що закінчується на `@g.us`, наприклад: `1234567890-1234567890@g.us`. - Варіант 2 (якщо вже налаштовано/додано до allowlist): виведіть список груп із config: + Варіант 2 (якщо вже налаштовано/додано до allowlist): виведіть список груп із конфігурації: ```bash openclaw directory groups list --channel whatsapp @@ -1336,63 +1335,63 @@ x-i18n: Дві поширені причини: - - Mention gating увімкнено (за замовчуванням). Ви маєте @mention бота (або відповідати `mentionPatterns`). - - Ви налаштували `channels.whatsapp.groups` без `"*"`, і група не додана до allowlist. + - Увімкнено gating за згадкою (за замовчуванням). Ви маєте @mention бота (або має збігтися `mentionPatterns`). + - Ви налаштували `channels.whatsapp.groups` без `"*"`, і групу не додано до allowlist. - Див. [Groups](/uk/channels/groups) і [Group messages](/uk/channels/group-messages). + Див. [Групи](/uk/channels/groups) і [Групові повідомлення](/uk/channels/group-messages). - - Прямі чати за замовчуванням згортаються в основну сесію. Групи/канали мають власні ключі сесій, а теми Telegram / threads Discord є окремими сесіями. Див. [Groups](/uk/channels/groups) і [Group messages](/uk/channels/group-messages). + + Прямі чати за замовчуванням згортаються до основної сесії. Групи/канали мають власні ключі сесій, а теми Telegram / threads Discord є окремими сесіями. Див. [Групи](/uk/channels/groups) і [Групові повідомлення](/uk/channels/group-messages). - - Жорстких обмежень немає. Десятки (навіть сотні) - це нормально, але стежте за: + + Жорстких обмежень немає. Десятки (навіть сотні) цілком нормальні, але стежте за: - - **Зростанням диска:** sessions + transcripts зберігаються в `~/.openclaw/agents//sessions/`. - - **Вартістю токенів:** більше agents означає більше одночасного використання моделей. - - **Операційними накладними витратами:** profiles auth для кожного agent, workspaces і routing каналів. + - **Зростанням диска:** сесії + transcripts зберігаються в `~/.openclaw/agents//sessions/`. + - **Вартістю токенів:** більше агентів означає більше одночасного використання моделей. + - **Операційними витратами:** auth profiles, робочі простори та маршрутизація каналів для кожного агента. Поради: - - Тримайте один **активний** workspace на agent (`agents.defaults.workspace`). - - Очищайте старі sessions (видаляйте JSONL або store entries), якщо диск зростає. - - Використовуйте `openclaw doctor`, щоб знайти зайві workspaces і невідповідності profile. + - Тримайте один **активний** робочий простір на агента (`agents.defaults.workspace`). + - Очищайте старі сесії (видаляйте JSONL або записи сховища), якщо диск зростає. + - Використовуйте `openclaw doctor`, щоб знаходити зайві робочі простори та невідповідності профілів. - Так. Використовуйте **багатоагентну маршрутизацію**, щоб запускати кілька ізольованих агентів і маршрутизувати вхідні повідомлення за - каналом/обліковим записом/співрозмовником. Slack підтримується як канал і може бути прив’язаний до певних агентів. + Так. Використовуйте **маршрутизацію кількох агентів**, щоб запускати кілька ізольованих агентів і маршрутизувати вхідні повідомлення за + каналом/обліковим записом/співрозмовником. Slack підтримується як канал і може бути прив'язаний до конкретних агентів. - Доступ через браузер потужний, але не "може робити все, що може людина" - антибот-захист, CAPTCHA та MFA все ще можуть + Доступ через браузер потужний, але це не "робити все, що може людина" - антибот-захист, CAPTCHA та MFA все ще можуть блокувати автоматизацію. Для найнадійнішого керування браузером використовуйте локальний Chrome MCP на хості або CDP на машині, яка фактично запускає браузер. - Рекомендоване налаштування: + Найкраще налаштування: - - Постійно ввімкнений хост Gateway (VPS/Mac mini). - - Один агент на роль (прив’язки). - - Канал(и) Slack, прив’язані до цих агентів. - - Локальний браузер через Chrome MCP або вузол за потреби. + - Завжди ввімкнений хост Gateway (VPS/Mac mini). + - Один агент на роль (прив'язки). + - Канал(и) Slack, прив'язані до цих агентів. + - Локальний браузер через Chrome MCP або вузол, коли потрібно. - Документація: [Багатоагентна маршрутизація](/uk/concepts/multi-agent), [Slack](/uk/channels/slack), + Документація: [Маршрутизація кількох агентів](/uk/concepts/multi-agent), [Slack](/uk/channels/slack), [Браузер](/uk/tools/browser), [Вузли](/uk/nodes). -## Моделі, аварійне перемикання та профілі автентифікації +## Моделі, резервне перемикання та профілі автентифікації -Питання й відповіді про моделі — стандартні значення, вибір, псевдоніми, перемикання, аварійне перемикання, профілі автентифікації — -розміщені на сторінці [FAQ про моделі](/uk/help/faq-models). +Питання й відповіді про моделі — значення за замовчуванням, вибір, псевдоніми, перемикання, резервне перемикання, профілі автентифікації — +містяться в [FAQ щодо моделей](/uk/help/faq-models). ## Gateway: порти, "already running" і віддалений режим - `gateway.port` керує єдиним мультиплексованим портом для WebSocket + HTTP (Control UI, hooks тощо). + `gateway.port` керує єдиним мультиплексованим портом для WebSocket + HTTP (інтерфейс керування, hooks тощо). Пріоритет: @@ -1403,18 +1402,18 @@ x-i18n: - Тому що "running" — це погляд **супервізора** (launchd/systemd/schtasks). Перевірка з’єднання — це фактичне підключення CLI до WebSocket Gateway. + Тому що "running" — це погляд **супервізора** (launchd/systemd/schtasks). Перевірка з'єднання — це фактичне підключення CLI до WebSocket Gateway. Використовуйте `openclaw gateway status` і довіряйте цим рядкам: - - `Probe target:` (URL, який перевірка фактично використала) - - `Listening:` (що фактично прив’язано до порту) - - `Last gateway error:` (поширена першопричина, коли процес живий, але порт не прослуховується) + - `Probe target:` (URL, який фактично використала перевірка) + - `Listening:` (що фактично прив'язано до порту) + - `Last gateway error:` (поширена першопричина, коли процес працює, але порт не слухає) - Ви редагуєте один файл конфігурації, тоді як служба запускається з іншим (часто через невідповідність `--profile` / `OPENCLAW_STATE_DIR`). + Ви редагуєте один файл конфігурації, тоді як служба запускає інший (часто невідповідність `--profile` / `OPENCLAW_STATE_DIR`). Виправлення: @@ -1427,14 +1426,14 @@ x-i18n: - OpenClaw забезпечує runtime-блокування, негайно прив’язуючи слухач WebSocket під час запуску (типово `ws://127.0.0.1:18789`). Якщо прив’язка завершується помилкою `EADDRINUSE`, викидається `GatewayLockError`, який вказує, що інший екземпляр уже прослуховується. + OpenClaw забезпечує runtime-блокування, одразу прив'язуючи слухач WebSocket під час запуску (типово `ws://127.0.0.1:18789`). Якщо прив'язка завершується помилкою `EADDRINUSE`, він викидає `GatewayLockError`, що вказує, що інший екземпляр уже слухає. - Виправлення: зупиніть інший екземпляр, звільніть порт або запустіть із `openclaw gateway --port `. + Виправлення: зупиніть інший екземпляр, звільніть порт або запустіть з `openclaw gateway --port `. - Установіть `gateway.mode: "remote"` і вкажіть віддалений URL WebSocket, за потреби зі спільними секретними віддаленими обліковими даними: + Установіть `gateway.mode: "remote"` і вкажіть віддалений WebSocket URL, за потреби зі спільним секретом віддалених облікових даних: ```json5 { @@ -1451,55 +1450,55 @@ x-i18n: Примітки: - - `openclaw gateway` запускається лише коли `gateway.mode` дорівнює `local` (або якщо ви передаєте прапорець перевизначення). - - Застосунок macOS стежить за файлом конфігурації та перемикає режими наживо, коли ці значення змінюються. - - `gateway.remote.token` / `.password` — це лише клієнтські віддалені облікові дані; самі по собі вони не вмикають автентифікацію локального gateway. + - `openclaw gateway` запускається лише коли `gateway.mode` має значення `local` (або якщо ви передаєте прапорець перевизначення). + - Застосунок macOS відстежує файл конфігурації та перемикає режими наживо, коли ці значення змінюються. + - `gateway.remote.token` / `.password` — це лише клієнтські віддалені облікові дані; самі по собі вони не вмикають автентифікацію локального Gateway. - - Ваш шлях автентифікації gateway і метод автентифікації UI не збігаються. + + Шлях автентифікації вашого Gateway і метод автентифікації UI не збігаються. Факти (з коду): - - Control UI зберігає токен у `sessionStorage` для поточної сесії вкладки браузера та вибраного URL gateway, тому оновлення в тій самій вкладці продовжують працювати без відновлення довготривалого збереження токена в localStorage. - - У разі `AUTH_TOKEN_MISMATCH` довірені клієнти можуть спробувати одну обмежену повторну спробу з кешованим токеном пристрою, коли gateway повертає підказки повтору (`canRetryWithDeviceToken=true`, `recommendedNextStep=retry_with_device_token`). - - Ця повторна спроба з кешованим токеном тепер повторно використовує кешовані схвалені області доступу, збережені разом із токеном пристрою. Виклики з явним `deviceToken` / явними `scopes` і надалі зберігають запитаний набір областей замість успадкування кешованих областей. - - Поза цим шляхом повтору пріоритет автентифікації підключення такий: явний спільний токен/пароль, потім явний `deviceToken`, потім збережений токен пристрою, потім bootstrap-токен. - - Перевірки області bootstrap-токена мають рольовий префікс. Вбудований allowlist bootstrap-оператора задовольняє лише запити оператора; вузлам або іншим неоператорським ролям усе ще потрібні області з власним рольовим префіксом. + - Інтерфейс керування зберігає токен у `sessionStorage` для поточної сесії вкладки браузера та вибраного URL Gateway, тому оновлення в тій самій вкладці продовжують працювати без відновлення довготривалого збереження токена в localStorage. + - При `AUTH_TOKEN_MISMATCH` довірені клієнти можуть спробувати одну обмежену повторну спробу з кешованим токеном пристрою, коли Gateway повертає підказки для повторної спроби (`canRetryWithDeviceToken=true`, `recommendedNextStep=retry_with_device_token`). + - Ця повторна спроба з кешованим токеном тепер повторно використовує кешовані схвалені scopes, збережені разом із токеном пристрою. Виклики з явним `deviceToken` / явними `scopes` все ще зберігають запитаний набір scopes замість успадкування кешованих scopes. + - Поза цим шляхом повторної спроби пріоритет автентифікації підключення такий: спочатку явний спільний токен/пароль, потім явний `deviceToken`, потім збережений токен пристрою, потім bootstrap-токен. + - Перевірки scope для bootstrap-токена мають рольовий префікс. Вбудований allowlist bootstrap-оператора задовольняє лише запити оператора; вузли або інші неоператорські ролі все ще потребують scopes під власним рольовим префіксом. Виправлення: - - Найшвидше: `openclaw dashboard` (друкує й копіює URL панелі керування, намагається відкрити; показує підказку SSH, якщо середовище без графічного інтерфейсу). + - Найшвидше: `openclaw dashboard` (друкує + копіює URL панелі, намагається відкрити; показує підказку SSH, якщо середовище без графічного інтерфейсу). - Якщо у вас ще немає токена: `openclaw doctor --generate-gateway-token`. - - Якщо віддалено, спочатку створіть тунель: `ssh -N -L 18789:127.0.0.1:18789 user@host`, потім відкрийте `http://127.0.0.1:18789/`. - - Режим спільного секрету: установіть `gateway.auth.token` / `OPENCLAW_GATEWAY_TOKEN` або `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`, потім вставте відповідний секрет у налаштування Control UI. - - Режим Tailscale Serve: переконайтеся, що `gateway.auth.allowTailscale` увімкнено і що ви відкриваєте Serve URL, а не сирий loopback/tailnet URL, який обходить заголовки ідентичності Tailscale. - - Режим довіреного проксі: переконайтеся, що ви проходите через налаштований identity-aware проксі, а не сирий URL gateway. Loopback-проксі на тому самому хості також потребують `gateway.auth.trustedProxy.allowLoopback = true`. - - Якщо невідповідність зберігається після однієї повторної спроби, ротируйте/повторно схваліть спарений токен пристрою: + - Якщо віддалено, спочатку створіть тунель: `ssh -N -L 18789:127.0.0.1:18789 user@host`, а потім відкрийте `http://127.0.0.1:18789/`. + - Режим спільного секрету: задайте `gateway.auth.token` / `OPENCLAW_GATEWAY_TOKEN` або `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`, потім вставте відповідний секрет у налаштування інтерфейсу керування. + - Режим Tailscale Serve: переконайтеся, що `gateway.auth.allowTailscale` увімкнено і ви відкриваєте Serve URL, а не сирий loopback/tailnet URL, який обходить заголовки ідентичності Tailscale. + - Режим довіреного проксі: переконайтеся, що ви заходите через налаштований проксі з підтримкою ідентичності, а не через сирий URL Gateway. Проксі same-host loopback також потребують `gateway.auth.trustedProxy.allowLoopback = true`. + - Якщо невідповідність лишається після однієї повторної спроби, ротируйте/повторно схваліть спарений токен пристрою: - `openclaw devices list` - `openclaw devices rotate --device --role operator` - Якщо цей виклик ротації каже, що його відхилено, перевірте дві речі: - - сесії спареного пристрою можуть ротирувати лише **власний** пристрій, якщо вони також не мають `operator.admin` - - явні значення `--scope` не можуть перевищувати поточні operator-області викликача - - Усе ще не працює? Запустіть `openclaw status --all` і дотримуйтеся [Усунення несправностей](/uk/gateway/troubleshooting). Див. [Dashboard](/uk/web/dashboard) для деталей автентифікації. + - сесії спарених пристроїв можуть ротирувати лише **власний** пристрій, якщо вони також не мають `operator.admin` + - явні значення `--scope` не можуть перевищувати поточні operator scopes викликача + - Все ще застрягли? Запустіть `openclaw status --all` і дотримуйтесь [усунення несправностей](/uk/gateway/troubleshooting). Див. [Dashboard](/uk/web/dashboard) для деталей автентифікації. - - Прив’язка `tailnet` вибирає IP Tailscale з ваших мережевих інтерфейсів (100.64.0.0/10). Якщо машина не в Tailscale (або інтерфейс вимкнений), немає до чого прив’язуватися. + + Прив'язка `tailnet` вибирає Tailscale IP з ваших мережевих інтерфейсів (100.64.0.0/10). Якщо машина не в Tailscale (або інтерфейс вимкнений), прив'язуватися нема до чого. Виправлення: - Запустіть Tailscale на цьому хості (щоб він мав адресу 100.x), або - - Перемкніться на `gateway.bind: "loopback"` / `"lan"`. + - Перемкніть на `gateway.bind: "loopback"` / `"lan"`. - Примітка: `tailnet` є явним. `auto` надає перевагу loopback; використовуйте `gateway.bind: "tailnet"`, коли потрібна прив’язка лише до tailnet. + Примітка: `tailnet` є явним. `auto` надає перевагу loopback; використовуйте `gateway.bind: "tailnet"`, коли вам потрібна прив'язка лише до tailnet. - Зазвичай ні - один Gateway може запускати кілька каналів обміну повідомленнями й агентів. Використовуйте кілька Gateway лише тоді, коли потрібна надлишковість (наприклад: резервний бот) або жорстка ізоляція. + Зазвичай ні - один Gateway може запускати кілька каналів повідомлень і агентів. Використовуйте кілька Gateway лише коли вам потрібна надмірність (наприклад, резервний бот) або жорстка ізоляція. Так, але потрібно ізолювати: @@ -1512,23 +1511,23 @@ x-i18n: - Використовуйте `openclaw --profile ...` для кожного екземпляра (автоматично створює `~/.openclaw-`). - Установіть унікальний `gateway.port` у конфігурації кожного профілю (або передайте `--port` для ручних запусків). - - Установіть службу для профілю: `openclaw --profile gateway install`. + - Встановіть службу для кожного профілю: `openclaw --profile gateway install`. - Профілі також додають суфікс до назв служб (`ai.openclaw.`; застарілі `com.openclaw.*`, `openclaw-gateway-.service`, `OpenClaw Gateway ()`). - Повний посібник: [Кілька gateway](/uk/gateway/multiple-gateways). + Профілі також додають суфікс до імен служб (`ai.openclaw.`; застарілі `com.openclaw.*`, `openclaw-gateway-.service`, `OpenClaw Gateway ()`). + Повний посібник: [Кілька gateways](/uk/gateway/multiple-gateways). - Gateway — це **сервер WebSocket**, і він очікує, що найперше повідомлення - буде кадром `connect`. Якщо він отримує щось інше, він закриває з’єднання + Gateway є **сервером WebSocket**, і він очікує, що найпершим повідомленням + буде кадр `connect`. Якщо він отримує щось інше, він закриває з'єднання з **кодом 1008** (порушення політики). Поширені причини: - Ви відкрили **HTTP** URL у браузері (`http://...`) замість WS-клієнта. - Ви використали неправильний порт або шлях. - - Проксі або тунель видалив заголовки автентифікації або надіслав не-Gateway запит. + - Проксі або тунель прибрав заголовки автентифікації чи надіслав запит не до Gateway. Швидкі виправлення: @@ -1559,7 +1558,7 @@ x-i18n: Ви можете встановити стабільний шлях через `logging.file`. Рівень файлового журналу керується `logging.level`. Докладність консолі керується `--verbose` і `logging.consoleLevel`. - Найшвидше стеження за журналом: + Найшвидший перегляд журналу: ```bash openclaw logs --follow @@ -1571,12 +1570,12 @@ x-i18n: - Linux: `journalctl --user -u openclaw-gateway[-].service -n 200 --no-pager` - Windows: `schtasks /Query /TN "OpenClaw Gateway ()" /V /FO LIST` - Див. [Усунення несправностей](/uk/gateway/troubleshooting) для додаткової інформації. + Див. більше в [усуненні несправностей](/uk/gateway/troubleshooting). - Використовуйте допоміжні команди gateway: + Використовуйте помічники gateway: ```bash openclaw gateway status @@ -1587,7 +1586,7 @@ x-i18n: - + Є **два режими встановлення Windows**: **1) WSL2 (рекомендовано):** Gateway працює всередині Linux. @@ -1608,14 +1607,14 @@ x-i18n: **2) Нативний Windows (не рекомендовано):** Gateway працює безпосередньо у Windows. - Відкрийте PowerShell і виконайте: + Відкрийте PowerShell і запустіть: ```powershell openclaw gateway status openclaw gateway restart ``` - Якщо запускаєте вручну (без служби), використовуйте: + Якщо ви запускаєте його вручну (без служби), використовуйте: ```powershell openclaw gateway run @@ -1625,7 +1624,7 @@ x-i18n: - + Почніть зі швидкої перевірки стану: ```bash @@ -1637,37 +1636,37 @@ x-i18n: Поширені причини: - - Автентифікація моделі не завантажена на **хості gateway** (перевірте `models status`). - - Спарення каналу/allowlist блокує відповіді (перевірте конфігурацію каналу й журнали). + - Автентифікацію моделі не завантажено на **хості gateway** (перевірте `models status`). + - Спарювання каналу/allowlist блокує відповіді (перевірте конфігурацію каналу + журнали). - WebChat/Dashboard відкрито без правильного токена. - Якщо ви працюєте віддалено, підтвердьте, що тунель/з’єднання Tailscale активне і що + Якщо ви працюєте віддалено, підтвердьте, що тунель/з'єднання Tailscale активне і що WebSocket Gateway доступний. Документація: [Канали](/uk/channels), [Усунення несправностей](/uk/gateway/troubleshooting), [Віддалений доступ](/uk/gateway/remote). - - Зазвичай це означає, що UI втратив з’єднання WebSocket. Перевірте: + + Зазвичай це означає, що UI втратив WebSocket-з'єднання. Перевірте: 1. Чи запущено Gateway? `openclaw gateway status` 2. Чи справний Gateway? `openclaw status` 3. Чи має UI правильний токен? `openclaw dashboard` - 4. Якщо віддалено, чи активне з’єднання тунелю/Tailscale? + 4. Якщо віддалено, чи активне посилання тунелю/Tailscale? - Потім перегляньте логи в реальному часі: + Потім перегляньте журнали в реальному часі: ```bash openclaw logs --follow ``` - Документація: [Dashboard](/uk/web/dashboard), [Віддалений доступ](/uk/gateway/remote), [Усунення несправностей](/uk/gateway/troubleshooting). + Документація: [Панель керування](/uk/web/dashboard), [Віддалений доступ](/uk/gateway/remote), [Усунення несправностей](/uk/gateway/troubleshooting). - Почніть із логів і стану каналу: + Почніть із журналів і стану каналу: ```bash openclaw channels status @@ -1677,16 +1676,16 @@ x-i18n: Потім зіставте помилку: - `BOT_COMMANDS_TOO_MUCH`: меню Telegram має забагато пунктів. OpenClaw уже обрізає їх до ліміту Telegram і повторює спробу з меншою кількістю команд, але деякі пункти меню все одно потрібно прибрати. Зменште кількість команд Plugin/Skills/користувацьких команд або вимкніть `channels.telegram.commands.native`, якщо меню вам не потрібне. - - `TypeError: fetch failed`, `Network request for 'setMyCommands' failed!` або подібні мережеві помилки: якщо ви на VPS або за проксі, переконайтеся, що вихідний HTTPS дозволено і DNS працює для `api.telegram.org`. + - `TypeError: fetch failed`, `Network request for 'setMyCommands' failed!` або подібні мережеві помилки: якщо ви на VPS або за проксі, переконайтеся, що вихідний HTTPS дозволено й DNS працює для `api.telegram.org`. - Якщо Gateway віддалений, переконайтеся, що переглядаєте логи на хості Gateway. + Якщо Gateway віддалений, переконайтеся, що ви дивитеся журнали на хості Gateway. Документація: [Telegram](/uk/channels/telegram), [Усунення несправностей каналів](/uk/channels/troubleshooting). - Спочатку переконайтеся, що Gateway доступний і агент може запускатися: + Спочатку переконайтеся, що Gateway доступний, а агент може запускатися: ```bash openclaw status @@ -1694,50 +1693,50 @@ x-i18n: openclaw logs --follow ``` - У TUI використайте `/status`, щоб побачити поточний стан. Якщо очікуєте відповіді в чат-каналі, переконайтеся, що доставку ввімкнено (`/deliver on`). + У TUI використайте `/status`, щоб побачити поточний стан. Якщо ви очікуєте відповіді в чат-каналі, переконайтеся, що доставку ввімкнено (`/deliver on`). - Документація: [TUI](/uk/web/tui), [Слеш-команди](/uk/tools/slash-commands). + Документація: [TUI](/uk/web/tui), [Slash-команди](/uk/tools/slash-commands). - Якщо ви встановили службу: + Якщо ви встановили сервіс: ```bash openclaw gateway stop openclaw gateway start ``` - Це зупиняє/запускає **службу під наглядом** (launchd на macOS, systemd на Linux). + Це зупиняє/запускає **сервіс під наглядом** (launchd на macOS, systemd на Linux). Використовуйте це, коли Gateway працює у фоновому режимі як демон. - Якщо ви запускаєте у передньому плані, зупиніть за допомогою Ctrl-C, потім: + Якщо ви запускаєте його на передньому плані, зупиніть через Ctrl-C, потім: ```bash openclaw gateway run ``` - Документація: [Операційний посібник служби Gateway](/uk/gateway). + Документація: [Операційний посібник сервісу Gateway](/uk/gateway). - - - `openclaw gateway restart`: перезапускає **фонову службу** (launchd/systemd). - - `openclaw gateway`: запускає gateway **у передньому плані** для цього сеансу термінала. + + - `openclaw gateway restart`: перезапускає **фоновий сервіс** (launchd/systemd). + - `openclaw gateway`: запускає gateway **на передньому плані** для цього сеансу термінала. - Якщо ви встановили службу, використовуйте команди gateway. Використовуйте `openclaw gateway`, коли потрібен одноразовий запуск у передньому плані. + Якщо ви встановили сервіс, використовуйте команди gateway. Використовуйте `openclaw gateway`, коли потрібен одноразовий запуск на передньому плані. - Запустіть Gateway із `--verbose`, щоб отримати більше деталей у консолі. Потім перевірте файл логів на помилки автентифікації каналу, маршрутизації моделі та RPC. + Запустіть Gateway з `--verbose`, щоб отримати більше деталей у консолі. Потім перегляньте файл журналу для помилок автентифікації каналу, маршрутизації моделей і RPC. -## Медіа й вкладення +## Медіа та вкладення - + Вихідні вкладення від агента мають містити рядок `MEDIA:` (в окремому рядку). Див. [Налаштування асистента OpenClaw](/uk/start/openclaw) і [Надсилання агентом](/uk/tools/agent-send). Надсилання через CLI: @@ -1748,84 +1747,80 @@ x-i18n: Також перевірте: - - Цільовий канал підтримує вихідні медіа й не заблокований allowlist. - - Файл у межах обмежень розміру провайдера (зображення змінюються до максимум 2048px). + - Цільовий канал підтримує вихідні медіа й не заблокований списками дозволених. + - Файл у межах лімітів розміру провайдера (зображення змінюються до максимум 2048px). - `tools.fs.workspaceOnly=true` обмежує надсилання локальних шляхів робочою областю, temp/media-store і файлами, перевіреними sandbox. - - `tools.fs.workspaceOnly=false` дає `MEDIA:` змогу надсилати локальні файли хоста, які агент уже може читати, але лише для медіа та безпечних типів документів (зображення, аудіо, відео, PDF і документи Office). Простий текст і файли, схожі на секрети, усе одно блокуються. + - `tools.fs.workspaceOnly=false` дозволяє `MEDIA:` надсилати локальні файли хоста, які агент уже може читати, але лише для медіа та безпечних типів документів (зображення, аудіо, відео, PDF і документи Office). Звичайні текстові та схожі на секрети файли все одно блокуються. Див. [Зображення](/uk/nodes/images). -## Безпека й контроль доступу +## Безпека та контроль доступу - - Розглядайте вхідні приватні повідомлення як недовірені вхідні дані. Типові налаштування спроєктовані для зниження ризику: + + Ставтеся до вхідних DM як до недовіреного вводу. Типові налаштування розроблено для зменшення ризику: - - Типова поведінка в каналах із підтримкою приватних повідомлень — **pairing**: - - Невідомі відправники отримують код pairing; бот не обробляє їхнє повідомлення. - - Підтвердьте за допомогою: `openclaw pairing approve --channel [--account ] ` - - Очікувані запити обмежено **3 на канал**; перевірте `openclaw pairing list --channel [--account ]`, якщо код не надійшов. - - Публічне відкриття приватних повідомлень потребує явної згоди (`dmPolicy: "open"` і allowlist `"*"`). + - Типова поведінка на каналах із підтримкою DM — **спарювання**: + - Невідомі відправники отримують код спарювання; бот не обробляє їхнє повідомлення. + - Підтвердіть через: `openclaw pairing approve --channel [--account ] ` + - Очікувані запити обмежено до **3 на канал**; перевірте `openclaw pairing list --channel [--account ]`, якщо код не надійшов. + - Публічне відкриття DM вимагає явної згоди (`dmPolicy: "open"` і список дозволених `"*"`). - Запустіть `openclaw doctor`, щоб виявити ризиковані політики приватних повідомлень. + Запустіть `openclaw doctor`, щоб виявити ризиковані політики DM. - Ні. Prompt injection стосується **недовіреного вмісту**, а не лише того, хто може надіслати приватне повідомлення боту. - Якщо ваш асистент читає зовнішній вміст (вебпошук/отримання, сторінки браузера, електронні листи, документацію, вкладення, вставлені логи), цей вміст може містити інструкції, які намагаються перехопити модель. Це може статися навіть якщо **ви єдиний відправник**. + Ні. Prompt injection стосується **недовіреного вмісту**, а не лише того, хто може писати боту в DM. + Якщо ваш асистент читає зовнішній вміст (вебпошук/отримання, сторінки браузера, електронні листи, документи, вкладення, вставлені журнали), цей вміст може містити інструкції, що намагаються перехопити керування моделлю. Це може статися, навіть якщо **ви єдиний відправник**. - Найбільший ризик виникає, коли інструменти ввімкнені: модель можна змусити - витягувати контекст або викликати інструменти від вашого імені. Зменште зону ураження так: + Найбільший ризик виникає, коли інструменти ввімкнено: модель можна змусити + витягувати контекст або викликати інструменти від вашого імені. Зменште зону впливу так: - - використовуйте read-only або безінструментального агента-«читача» для підсумовування недовіреного вмісту + - використовуйте агента-"читача" без інструментів або лише для читання, щоб підсумовувати недовірений вміст - тримайте `web_search` / `web_fetch` / `browser` вимкненими для агентів з увімкненими інструментами - - розглядайте декодований текст файлів/документів як недовірений теж: OpenResponses - `input_file` і витягування медіавкладень обгортають витягнутий текст у - явні маркери меж зовнішнього вмісту замість передавання сирого тексту файлу - - використовуйте sandbox і суворі allowlist інструментів + - також вважайте декодований текст файлів/документів недовіреним: OpenResponses + `input_file` і витягування медіавкладень обгортають витягнутий текст явними маркерами меж зовнішнього вмісту замість передавання сирого тексту файлу + - застосовуйте sandbox і строгі списки дозволених інструментів Деталі: [Безпека](/uk/gateway/security). - - Так, для більшості налаштувань. Ізоляція бота окремими акаунтами й номерами телефону - зменшує зону ураження, якщо щось піде не так. Це також полегшує ротацію - облікових даних або відкликання доступу без впливу на ваші особисті акаунти. + + Так, для більшості налаштувань. Ізоляція бота окремими обліковими записами й номерами телефонів зменшує зону впливу, якщо щось піде не так. Це також спрощує ротацію облікових даних або відкликання доступу без впливу на ваші особисті облікові записи. - Починайте з малого. Надавайте доступ лише до інструментів і акаунтів, які справді потрібні, і розширюйте - пізніше за потреби. + Починайте з малого. Надавайте доступ лише до тих інструментів і облікових записів, які справді потрібні, і розширюйте пізніше за потреби. - Документація: [Безпека](/uk/gateway/security), [Pairing](/uk/channels/pairing). + Документація: [Безпека](/uk/gateway/security), [Спарювання](/uk/channels/pairing). Ми **не** рекомендуємо повну автономію над вашими особистими повідомленнями. Найбезпечніший шаблон: - - Тримайте приватні повідомлення в **режимі pairing** або в суворому allowlist. - - Використовуйте **окремий номер або акаунт**, якщо хочете, щоб він надсилав повідомлення від вашого імені. - - Нехай він створює чернетку, а потім **підтверджуйте перед надсиланням**. + - Тримайте DM у **режимі спарювання** або зі строгим списком дозволених. + - Використовуйте **окремий номер або обліковий запис**, якщо хочете, щоб він надсилав повідомлення від вашого імені. + - Нехай він готує чернетку, а потім **підтверджуйте перед надсиланням**. - Якщо хочете експериментувати, робіть це на виділеному акаунті й тримайте його ізольованим. Див. + Якщо хочете експериментувати, робіть це на окремому обліковому записі й тримайте його ізольованим. Див. [Безпека](/uk/gateway/security). - Так, **якщо** агент працює лише як чат і вхідні дані є довіреними. Менші рівні - більш вразливі до перехоплення інструкцій, тому уникайте їх для агентів з увімкненими інструментами + Так, **якщо** агент працює лише в чаті, а ввід є довіреним. Менші рівні + більш вразливі до перехоплення інструкціями, тому уникайте їх для агентів з увімкненими інструментами або під час читання недовіреного вмісту. Якщо мусите використовувати меншу модель, жорстко обмежте - інструменти й запускайте всередині sandbox. Див. [Безпека](/uk/gateway/security). + інструменти й запускайте в sandbox. Див. [Безпека](/uk/gateway/security). - - Коди pairing надсилаються **лише** коли невідомий відправник пише боту й - увімкнено `dmPolicy: "pairing"`. `/start` сам по собі не генерує код. + + Коди спарювання надсилаються **лише** коли невідомий відправник пише боту й + `dmPolicy: "pairing"` увімкнено. `/start` сам по собі не генерує код. Перевірте очікувані запити: @@ -1833,32 +1828,32 @@ x-i18n: openclaw pairing list telegram ``` - Якщо потрібен негайний доступ, додайте свій sender id до allowlist або встановіть `dmPolicy: "open"` - для цього акаунта. + Якщо хочете негайний доступ, додайте свій id відправника до списку дозволених або встановіть `dmPolicy: "open"` + для цього облікового запису. - - Ні. Типова політика приватних повідомлень WhatsApp — **pairing**. Невідомі відправники лише отримують код pairing, а їхнє повідомлення **не обробляється**. OpenClaw відповідає лише в чатах, які отримує, або на явні надсилання, які запускаєте ви. + + Ні. Типова політика WhatsApp DM — **спарювання**. Невідомі відправники лише отримують код спарювання, а їхнє повідомлення **не обробляється**. OpenClaw відповідає лише на чати, які отримує, або на явні надсилання, які ви запускаєте. - Підтвердьте pairing за допомогою: + Підтвердьте спарювання через: ```bash openclaw pairing approve whatsapp ``` - Перелічіть очікувані запити: + Список очікуваних запитів: ```bash openclaw pairing list whatsapp ``` - Запит номера телефону в майстрі: він використовується для налаштування вашого **allowlist/owner**, щоб ваші власні приватні повідомлення були дозволені. Він не використовується для автоматичного надсилання. Якщо запускаєте на своєму особистому номері WhatsApp, використовуйте цей номер і ввімкніть `channels.whatsapp.selfChatMode`. + Запит номера телефону в майстрі: він використовується для встановлення вашого **списку дозволених/власника**, щоб ваші власні DM були дозволені. Він не використовується для автоматичного надсилання. Якщо ви запускаєте на своєму особистому номері WhatsApp, використовуйте цей номер і ввімкніть `channels.whatsapp.selfChatMode`. -## Команди чату, переривання завдань і «він не зупиняється» +## Команди чату, переривання завдань і «воно не зупиняється» @@ -1872,16 +1867,16 @@ x-i18n: /reasoning off ``` - Якщо шум лишається, перевірте налаштування сеансу в Control UI і встановіть verbose - на **inherit**. Також переконайтеся, що не використовуєте профіль бота з `verboseDefault`, установленим + Якщо все ще забагато шуму, перевірте налаштування сеансу в Control UI і встановіть verbose + на **inherit**. Також переконайтеся, що ви не використовуєте профіль бота з `verboseDefault`, встановленим на `on` у конфігурації. - Документація: [Мислення й verbose](/uk/tools/thinking), [Безпека](/uk/gateway/security#reasoning-verbose-output-in-groups). + Документація: [Мислення та verbose](/uk/tools/thinking), [Безпека](/uk/gateway/security#reasoning-verbose-output-in-groups). - Надішліть будь-що з цього **як окреме повідомлення** (без слеша): + Надішліть будь-яке з наведеного **як окреме повідомлення** (без slash): ``` stop @@ -1905,23 +1900,23 @@ x-i18n: interrupt ``` - Це тригери переривання (не слеш-команди). + Це тригери переривання (не slash-команди). - Для фонових процесів (з інструмента exec) можна попросити агента виконати: + Для фонових процесів (з інструмента exec) можна попросити агента запустити: ``` process action:kill sessionId:XXX ``` - Огляд слеш-команд: див. [Слеш-команди](/uk/tools/slash-commands). + Огляд slash-команд: див. [Slash-команди](/uk/tools/slash-commands). - Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`, але кілька скорочень (наприклад `/status`) також працюють inline для відправників з allowlist. + Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`, але кілька скорочень (наприклад `/status`) також працюють inline для відправників зі списку дозволених. OpenClaw типово блокує обмін повідомленнями **між провайдерами**. Якщо виклик інструмента прив’язаний - до Telegram, він не надішле в Discord, якщо ви явно це не дозволите. + до Telegram, він не надсилатиме в Discord, якщо ви явно цього не дозволите. Увімкніть обмін повідомленнями між провайдерами для агента: @@ -1943,15 +1938,16 @@ x-i18n: - Режим черги керує тим, як нові повідомлення взаємодіють із уже запущеним виконанням. Використовуйте `/queue`, щоб змінити режими: + Режим черги керує тим, як нові повідомлення взаємодіють із поточним запуском. Використайте `/queue`, щоб змінити режими: - - `steer` - поставити керування в чергу для наступної межі моделі в поточному виконанні - - `followup` - виконувати повідомлення по одному - - `collect` - згрупувати повідомлення й відповісти один раз - - `steer-backlog` - керувати зараз, потім обробити backlog - - `interrupt` - перервати поточне виконання й почати заново + - `steer` - ставити всі очікувані керівні повідомлення в чергу до наступної межі моделі в поточному запуску + - `queue` - застаріле керування по одному повідомленню + - `followup` - запускати повідомлення по одному + - `collect` - групувати повідомлення й відповідати один раз + - `steer-backlog` - керувати зараз, потім обробити накопичене + - `interrupt` - перервати поточний запуск і почати заново - Типовий режим — `steer`. Для режимів followup можна додати параметри на кшталт `debounce:0.5s cap:25 drop:summarize`. Див. [Черга команд](/uk/concepts/queue). + Типовий режим — `steer`. Можна додати параметри на кшталт `debounce:0.5s cap:25 drop:summarize` для режимів followup. Див. [Черга команд](/uk/concepts/queue) і [Черга керування](/uk/concepts/queue-steering). @@ -1959,8 +1955,8 @@ x-i18n: ## Різне - - В OpenClaw облікові дані та вибір моделі розділені. Установлення `ANTHROPIC_API_KEY` (або збереження Anthropic API key у профілях автентифікації) вмикає автентифікацію, але фактична модель за замовчуванням — це та, яку ви налаштуєте в `agents.defaults.model.primary` (наприклад, `anthropic/claude-sonnet-4-6` або `anthropic/claude-opus-4-6`). Якщо ви бачите `No credentials found for profile "anthropic:default"`, це означає, що Gateway не зміг знайти облікові дані Anthropic в очікуваному `auth-profiles.json` для агента, який виконується. + + В OpenClaw облікові дані та вибір моделі налаштовуються окремо. Установлення `ANTHROPIC_API_KEY` (або збереження API-ключа Anthropic в auth profiles) вмикає автентифікацію, але фактична модель за замовчуванням — це те, що ви налаштували в `agents.defaults.model.primary` (наприклад, `anthropic/claude-sonnet-4-6` або `anthropic/claude-opus-4-6`). Якщо ви бачите `No credentials found for profile "anthropic:default"`, це означає, що Gateway не зміг знайти облікові дані Anthropic в очікуваному `auth-profiles.json` для агента, який виконується. @@ -1970,6 +1966,6 @@ x-i18n: ## Пов’язане -- [FAQ першого запуску](/uk/help/faq-first-run) — установлення, початкове налаштування, автентифікація, підписки, ранні помилки -- [FAQ моделей](/uk/help/faq-models) — вибір моделі, перемикання в разі збою, профілі автентифікації +- [FAQ першого запуску](/uk/help/faq-first-run) — установлення, початкове налаштування, автентифікація, підписки, ранні збої +- [FAQ про моделі](/uk/help/faq-models) — вибір моделі, відмова на резервний варіант, auth profiles - [Усунення несправностей](/uk/help/troubleshooting) — діагностика за симптомами diff --git a/docs/uk/plugins/codex-harness.md b/docs/uk/plugins/codex-harness.md index 25b291bf3..713fab568 100644 --- a/docs/uk/plugins/codex-harness.md +++ b/docs/uk/plugins/codex-harness.md @@ -1,202 +1,204 @@ --- read_when: - - Ви хочете використовувати вбудовану обв’язку app-server Codex + - Ви хочете використовувати вбудовану тестову обв’язку сервера застосунку Codex - Вам потрібні приклади конфігурації середовища виконання Codex - - Ви хочете, щоб розгортання лише з Codex завершувалися помилкою замість резервного переходу до PI -summary: Запускайте ходи вбудованого агента OpenClaw через комплектну обв’язку сервера застосунку Codex -title: Обв’язка Codex + - Ви хочете, щоб розгортання лише з Codex завершувалися помилкою, а не переходили резервно на Pi +summary: Запускайте ходи вбудованого агента OpenClaw через комплектну обв’язку Codex app-server +title: Середовище Codex x-i18n: - generated_at: "2026-04-29T18:46:47Z" + generated_at: "2026-04-30T00:30:01Z" model: gpt-5.5 provider: openai - source_hash: a8eba5cb48c94fe38392d85c9d5c79a7829a2fa7eaba81715f4449d39d7d0dea + source_hash: 93abb72e9590aad265e5b6b8691dd16314178c4d255679b4e53da33b792a6e6b source_path: plugins/codex-harness.md workflow: 16 --- -Вбудований Plugin `codex` дає OpenClaw змогу запускати вбудовані ходи агента через -сервер застосунку Codex замість вбудованого PI harness. +The bundled `codex` plugin lets OpenClaw run embedded agent turns through the +Codex app-server instead of the built-in PI harness. -Використовуйте це, коли хочете, щоб Codex керував низькорівневим сеансом агента: виявленням -моделі, нативним відновленням потоку, нативною Compaction і виконанням на сервері застосунку. -OpenClaw і далі керує каналами чату, файлами сеансів, вибором моделі, інструментами, -схваленнями, доставленням медіа та видимим дзеркалом транскрипту. +Use this when you want Codex to own the low-level agent session: model +discovery, native thread resume, native compaction, and app-server execution. +OpenClaw still owns chat channels, session files, model selection, tools, +approvals, media delivery, and the visible transcript mirror. -Якщо ви намагаєтеся зорієнтуватися, почніть із -[Середовищ виконання агентів](/uk/concepts/agent-runtimes). Коротко: -`openai/gpt-5.5` — це посилання на модель, `codex` — середовище виконання, а Telegram, -Discord, Slack або інший канал лишається поверхнею комунікації. +If you are trying to orient yourself, start with +[Agent runtimes](/uk/concepts/agent-runtimes). The short version is: +`openai/gpt-5.5` is the model ref, `codex` is the runtime, and Telegram, +Discord, Slack, or another channel remains the communication surface. -## Що змінює цей Plugin +## What this plugin changes -Вбудований Plugin `codex` додає кілька окремих можливостей: +The bundled `codex` plugin contributes several separate capabilities: -| Можливість | Як ви її використовуєте | Що вона робить | +| Capability | How you use it | What it does | | --------------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------- | -| Нативне вбудоване середовище виконання | `agentRuntime.id: "codex"` | Запускає вбудовані ходи агента OpenClaw через сервер застосунку Codex. | -| Нативні команди керування чатом | `/codex bind`, `/codex resume`, `/codex steer`, ... | Прив’язує потоки сервера застосунку Codex до розмови в месенджері та керує ними. | -| Провайдер/каталог сервера застосунку Codex | внутрішні компоненти `codex`, доступні через harness | Дає середовищу виконання змогу виявляти й перевіряти моделі сервера застосунку. | -| Шлях розуміння медіа Codex | шляхи сумісності моделей зображень `codex/*` | Запускає обмежені ходи сервера застосунку Codex для підтримуваних моделей розуміння зображень. | -| Нативна ретрансляція хуків | Хуки Plugin навколо нативних подій Codex | Дає OpenClaw змогу спостерігати/блокувати підтримувані нативні події інструментів/завершення Codex. | +| Native embedded runtime | `agentRuntime.id: "codex"` | Runs OpenClaw embedded agent turns through Codex app-server. | +| Native chat-control commands | `/codex bind`, `/codex resume`, `/codex steer`, ... | Binds and controls Codex app-server threads from a messaging conversation. | +| Codex app-server provider/catalog | `codex` internals, surfaced through the harness | Lets the runtime discover and validate app-server models. | +| Codex media-understanding path | `codex/*` image-model compatibility paths | Runs bounded Codex app-server turns for supported image understanding models. | +| Native hook relay | Plugin hooks around Codex-native events | Lets OpenClaw observe/block supported Codex-native tool/finalization events. | -Увімкнення Plugin робить ці можливості доступними. Воно **не**: +Enabling the plugin makes those capabilities available. It does **not**: -- починає використовувати Codex для кожної моделі OpenAI -- перетворює посилання на моделі `openai-codex/*` на нативне середовище виконання -- робить ACP/acpx стандартним шляхом Codex -- гаряче перемикає наявні сеанси, у яких уже записано середовище виконання PI -- замінює доставлення через канали OpenClaw, файли сеансів, сховище auth-профілів або - маршрутизацію повідомлень +- start using Codex for every OpenAI model +- convert `openai-codex/*` model refs into the native runtime +- make ACP/acpx the default Codex path +- hot-switch existing sessions that already recorded a PI runtime +- replace OpenClaw channel delivery, session files, auth-profile storage, or + message routing -Той самий Plugin також відповідає за нативну поверхню команд керування чатом `/codex`. Якщо -Plugin увімкнено і користувач просить прив’язати, відновити, скерувати, зупинити або перевірити -потоки Codex із чату, агенти мають надавати перевагу `/codex ...` замість ACP. ACP лишається -явним запасним варіантом, коли користувач просить ACP/acpx або тестує ACP-адаптер -Codex. +The same plugin also owns the native `/codex` chat-control command surface. If +the plugin is enabled and the user asks to bind, resume, steer, stop, or inspect +Codex threads from chat, agents should prefer `/codex ...` over ACP. ACP remains +the explicit fallback when the user asks for ACP/acpx or is testing the ACP +Codex adapter. -Нативні ходи Codex зберігають хуки Plugin OpenClaw як публічний шар сумісності. -Це внутрішньопроцесні хуки OpenClaw, а не командні хуки Codex `hooks.json`: +Native Codex turns keep OpenClaw plugin hooks as the public compatibility layer. +These are in-process OpenClaw hooks, not Codex `hooks.json` command hooks: - `before_prompt_build` - `before_compaction`, `after_compaction` - `llm_input`, `llm_output` - `before_tool_call`, `after_tool_call` -- `before_message_write` для дзеркальних записів транскрипту -- `before_agent_finalize` через ретрансляцію Codex `Stop` +- `before_message_write` for mirrored transcript records +- `before_agent_finalize` through Codex `Stop` relay - `agent_end` -Plugins також можуть реєструвати нейтральне до середовища виконання проміжне ПЗ результатів інструментів, щоб переписувати -динамічні результати інструментів OpenClaw після того, як OpenClaw виконає інструмент, і перед тим, як -результат буде повернено в Codex. Це окремо від публічного хука Plugin -`tool_result_persist`, який перетворює записи результатів інструментів у транскрипті, що належать OpenClaw. +Plugins can also register runtime-neutral tool-result middleware to rewrite +OpenClaw dynamic tool results after OpenClaw executes the tool and before the +result is returned to Codex. This is separate from the public +`tool_result_persist` plugin hook, which transforms OpenClaw-owned transcript +tool-result writes. -Семантику самих хуків Plugin див. у [Хуках Plugin](/uk/plugins/hooks) -та [Поведінці захисту Plugin](/uk/tools/plugin). +For the plugin hook semantics themselves, see [Plugin hooks](/uk/plugins/hooks) +and [Plugin guard behavior](/uk/tools/plugin). -Harness вимкнений за замовчуванням. Нові конфігурації мають залишати посилання на моделі OpenAI -канонічними як `openai/gpt-*` і явно примусово задавати -`agentRuntime.id: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`, коли вони -потребують нативного виконання на сервері застосунку. Застарілі посилання на моделі `codex/*` і далі автоматично вибирають -harness для сумісності, але застарілі префікси провайдерів, підтримані середовищем виконання, не -показуються як звичайні варіанти моделі/провайдера. +The harness is off by default. New configs should keep OpenAI model refs +canonical as `openai/gpt-*` and explicitly force +`agentRuntime.id: "codex"` or `OPENCLAW_AGENT_RUNTIME=codex` when they +want native app-server execution. Legacy `codex/*` model refs still auto-select +the harness for compatibility, but runtime-backed legacy provider prefixes are +not shown as normal model/provider choices. -Якщо Plugin `codex` увімкнено, але основна модель досі -`openai-codex/*`, `openclaw doctor` попереджає замість того, щоб змінювати маршрут. Це -навмисно: `openai-codex/*` лишається шляхом PI для Codex OAuth/підписки, а -нативне виконання на сервері застосунку лишається явним вибором середовища виконання. +If the `codex` plugin is enabled but the primary model is still +`openai-codex/*`, `openclaw doctor` warns instead of changing the route. That is +intentional: `openai-codex/*` remains the PI Codex OAuth/subscription path, and +native app-server execution stays an explicit runtime choice. -## Мапа маршрутів +## Route map -Використовуйте цю таблицю перед зміною конфігурації: +Use this table before changing config: -| Бажана поведінка | Посилання на модель | Конфігурація середовища виконання | Вимога до Plugin | Очікувана мітка стану | +| Desired behavior | Model ref | Runtime config | Plugin requirement | Expected status label | | ------------------------------------------- | -------------------------- | -------------------------------------- | --------------------------- | ------------------------------ | -| OpenAI API через звичайний runner OpenClaw | `openai/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI | `Runtime: OpenClaw Pi Default` | -| Codex OAuth/підписка через PI | `openai-codex/gpt-*` | пропущено або `runtime: "pi"` | Провайдер OpenAI Codex OAuth | `Runtime: OpenClaw Pi Default` | -| Нативні вбудовані ходи сервера застосунку Codex | `openai/gpt-*` | `agentRuntime.id: "codex"` | Plugin `codex` | `Runtime: OpenAI Codex` | -| Змішані провайдери з консервативним автоматичним режимом | посилання, специфічні для провайдера | `agentRuntime.id: "auto"` | Опційні середовища виконання Plugin | Залежить від вибраного середовища виконання | -| Явний сеанс ACP-адаптера Codex | залежить від ACP prompt/model | `sessions_spawn` з `runtime: "acp"` | справний backend `acpx` | Стан завдання/сеансу ACP | +| OpenAI API through normal OpenClaw runner | `openai/gpt-*` | omitted or `runtime: "pi"` | OpenAI provider | `Runtime: OpenClaw Pi Default` | +| Codex OAuth/subscription through PI | `openai-codex/gpt-*` | omitted or `runtime: "pi"` | OpenAI Codex OAuth provider | `Runtime: OpenClaw Pi Default` | +| Native Codex app-server embedded turns | `openai/gpt-*` | `agentRuntime.id: "codex"` | `codex` plugin | `Runtime: OpenAI Codex` | +| Mixed providers with conservative auto mode | provider-specific refs | `agentRuntime.id: "auto"` | Optional plugin runtimes | Depends on selected runtime | +| Explicit Codex ACP adapter session | ACP prompt/model dependent | `sessions_spawn` with `runtime: "acp"` | healthy `acpx` backend | ACP task/session status | -Важливий поділ — між провайдером і середовищем виконання: +The important split is provider versus runtime: -- `openai-codex/*` відповідає на запитання «який маршрут провайдера/auth має використовувати PI?» -- `agentRuntime.id: "codex"` відповідає на запитання «який цикл має виконати цей - вбудований хід?» -- `/codex ...` відповідає на запитання «яку нативну розмову Codex цей чат має - прив’язати або контролювати?» -- ACP відповідає на запитання «який зовнішній процес harness має запустити acpx?» +- `openai-codex/*` answers "which provider/auth route should PI use?" +- `agentRuntime.id: "codex"` answers "which loop should execute this + embedded turn?" +- `/codex ...` answers "which native Codex conversation should this chat bind + or control?" +- ACP answers "which external harness process should acpx launch?" -## Виберіть правильний префікс моделі +## Pick the right model prefix -Маршрути сімейства OpenAI залежать від префікса. Використовуйте `openai-codex/*`, коли хочете -Codex OAuth через PI; використовуйте `openai/*`, коли хочете прямий доступ до OpenAI API або -коли примусово задаєте нативний harness сервера застосунку Codex: +OpenAI-family routes are prefix-specific. Use `openai-codex/*` when you want +Codex OAuth through PI; use `openai/*` when you want direct OpenAI API access or +when you are forcing the native Codex app-server harness: -| Посилання на модель | Шлях середовища виконання | Коли використовувати | +| Model ref | Runtime path | Use when | | --------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------- | -| `openai/gpt-5.4` | Провайдер OpenAI через OpenClaw/PI plumbing | Ви хочете поточний прямий доступ до OpenAI Platform API з `OPENAI_API_KEY`. | -| `openai-codex/gpt-5.5` | OpenAI Codex OAuth через OpenClaw/PI | Ви хочете auth підписки ChatGPT/Codex зі стандартним PI runner. | -| `openai/gpt-5.5` + `agentRuntime.id: "codex"` | Harness сервера застосунку Codex | Ви хочете нативне виконання на сервері застосунку Codex для вбудованого ходу агента. | +| `openai/gpt-5.4` | OpenAI provider through OpenClaw/PI plumbing | You want current direct OpenAI Platform API access with `OPENAI_API_KEY`. | +| `openai-codex/gpt-5.5` | OpenAI Codex OAuth through OpenClaw/PI | You want ChatGPT/Codex subscription auth with the default PI runner. | +| `openai/gpt-5.5` + `agentRuntime.id: "codex"` | Codex app-server harness | You want native Codex app-server execution for the embedded agent turn. | -GPT-5.5 наразі доступна в OpenClaw лише через підписку/OAuth. Використовуйте -`openai-codex/gpt-5.5` для PI OAuth або `openai/gpt-5.5` з harness сервера -застосунку Codex. Прямий доступ через API-ключ для `openai/gpt-5.5` підтримується, -щойно OpenAI увімкне GPT-5.5 у публічному API. +GPT-5.5 is currently subscription/OAuth-only in OpenClaw. Use +`openai-codex/gpt-5.5` for PI OAuth, or `openai/gpt-5.5` with the Codex +app-server harness. Direct API-key access for `openai/gpt-5.5` is supported +once OpenAI enables GPT-5.5 on the public API. -Застарілі посилання `codex/gpt-*` і далі приймаються як псевдоніми сумісності. Міграція сумісності Doctor -переписує застарілі основні посилання середовища виконання на канонічні посилання на моделі -та записує політику середовища виконання окремо, тоді як застарілі посилання лише для fallback -лишаються без змін, бо середовище виконання налаштовується для всього контейнера агента. -Нові конфігурації PI Codex OAuth мають використовувати `openai-codex/gpt-*`; нові конфігурації нативного -harness сервера застосунку мають використовувати `openai/gpt-*` плюс +Legacy `codex/gpt-*` refs remain accepted as compatibility aliases. Doctor +compatibility migration rewrites legacy primary runtime refs to canonical model +refs and records the runtime policy separately, while fallback-only legacy refs +are left unchanged because runtime is configured for the whole agent container. +New PI Codex OAuth configs should use `openai-codex/gpt-*`; new native +app-server harness configs should use `openai/gpt-*` plus `agentRuntime.id: "codex"`. -`agents.defaults.imageModel` дотримується того самого поділу за префіксами. Використовуйте -`openai-codex/gpt-*`, коли розуміння зображень має виконуватися через шлях провайдера OpenAI -Codex OAuth. Використовуйте `codex/gpt-*`, коли розуміння зображень має виконуватися -через обмежений хід сервера застосунку Codex. Модель сервера застосунку Codex має -оголошувати підтримку вводу зображень; текстові моделі Codex завершуються помилкою ще до початку -медіа-ходу. +`agents.defaults.imageModel` follows the same prefix split. Use +`openai-codex/gpt-*` when image understanding should run through the OpenAI +Codex OAuth provider path. Use `codex/gpt-*` when image understanding should run +through a bounded Codex app-server turn. The Codex app-server model must +advertise image input support; text-only Codex models fail before the media turn +starts. -Використовуйте `/status`, щоб підтвердити фактичний harness для поточного сеансу. Якщо -вибір неочікуваний, увімкніть debug-журналювання для підсистеми `agents/harness` -і перевірте структурований запис gateway `agent harness selected`. Він -містить вибраний id harness, причину вибору, політику середовища виконання/fallback, а -в режимі `auto` — результат підтримки кожного кандидата Plugin. +Use `/status` to confirm the effective harness for the current session. If the +selection is surprising, enable debug logging for the `agents/harness` subsystem +and inspect the gateway's structured `agent harness selected` record. It +includes the selected harness id, selection reason, runtime/fallback policy, and, +in `auto` mode, each plugin candidate's support result. -### Що означають попередження doctor +### What doctor warnings mean -`openclaw doctor` попереджає, коли всі ці умови істинні: +`openclaw doctor` warns when all of these are true: -- вбудований Plugin `codex` увімкнено або дозволено -- основна модель агента — `openai-codex/*` -- фактичне середовище виконання цього агента не `codex` +- the bundled `codex` plugin is enabled or allowed +- an agent's primary model is `openai-codex/*` +- that agent's effective runtime is not `codex` -Це попередження існує, бо користувачі часто очікують, що «Plugin Codex увімкнено» означає -«нативне середовище виконання сервера застосунку Codex». OpenClaw не робить такого переходу. Попередження -означає: +That warning exists because users often expect "Codex plugin enabled" to imply +"native Codex app-server runtime." OpenClaw does not make that leap. The warning +means: -- **Змін не потрібно**, якщо ви мали на увазі ChatGPT/Codex OAuth через PI. -- Змініть модель на `openai/` і задайте - `agentRuntime.id: "codex"`, якщо ви мали на увазі нативне виконання - на сервері застосунку. -- Наявним сеансам після зміни середовища виконання все одно потрібні `/new` або `/reset`, - бо прив’язки середовища виконання сеансу є липкими. +- **No change is required** if you intended ChatGPT/Codex OAuth through PI. +- Change the model to `openai/` and set + `agentRuntime.id: "codex"` if you intended native app-server + execution. +- Existing sessions still need `/new` or `/reset` after a runtime change, + because session runtime pins are sticky. -Вибір harness не є керуванням живим сеансом. Коли виконується вбудований хід, -OpenClaw записує id вибраного harness у цьому сеансі й продовжує використовувати його для -подальших ходів у межах того самого id сеансу. Змініть конфігурацію `agentRuntime` або -`OPENCLAW_AGENT_RUNTIME`, коли хочете, щоб майбутні сеанси використовували інший harness; -використовуйте `/new` або `/reset`, щоб почати свіжий сеанс перед перемиканням наявної -розмови між PI і Codex. Це запобігає повторному програванню одного транскрипту через -дві несумісні нативні системи сеансів. +Harness selection is not a live session control. When an embedded turn runs, +OpenClaw records the selected harness id on that session and keeps using it for +later turns in the same session id. Change `agentRuntime` config or +`OPENCLAW_AGENT_RUNTIME` when you want future sessions to use another harness; +use `/new` or `/reset` to start a fresh session before switching an existing +conversation between PI and Codex. This avoids replaying one transcript through +two incompatible native session systems. -Застарілі сеанси, створені до появи прив’язок harness, вважаються прив’язаними до PI, щойно вони -мають історію транскрипту. Використовуйте `/new` або `/reset`, щоб перевести цю розмову на -Codex після зміни конфігурації. +Legacy sessions created before harness pins are treated as PI-pinned once they +have transcript history. Use `/new` or `/reset` to opt that conversation into +Codex after changing config. -`/status` показує фактичне середовище виконання моделі. Стандартний PI harness відображається як -`Runtime: OpenClaw Pi Default`, а harness сервера застосунку Codex відображається як +`/status` shows the effective model runtime. The default PI harness appears as +`Runtime: OpenClaw Pi Default`, and the Codex app-server harness appears as `Runtime: OpenAI Codex`. -## Вимоги +## Requirements -- OpenClaw з доступним вбудованим Plugin `codex`. -- Сервер застосунку Codex `0.125.0` або новіший. Вбудований Plugin за замовчуванням керує сумісним - бінарним файлом сервера застосунку Codex, тому локальні команди `codex` у `PATH` не - впливають на звичайний запуск harness. -- Codex auth, доступний процесу сервера застосунку або auth-мосту Codex в OpenClaw. +- OpenClaw with the bundled `codex` plugin available. +- Codex app-server `0.125.0` or newer. The bundled plugin manages a compatible + Codex app-server binary by default, so local `codex` commands on `PATH` do + not affect normal harness startup. +- Codex auth available to the app-server process or to OpenClaw's Codex auth + bridge. -Plugin блокує старіші або неверсіоновані рукостискання сервера застосунку. Це утримує -OpenClaw на поверхні протоколу, з якою його протестовано. +The plugin blocks older or unversioned app-server handshakes. That keeps +OpenClaw on the protocol surface it has been tested against. -Для live- і Docker smoke-тестів auth зазвичай надходить з облікового запису Codex CLI -або auth-профілю OpenClaw `openai-codex`. Локальні stdio-запуски сервера застосунку також можуть -відступати до `CODEX_API_KEY` / `OPENAI_API_KEY`, коли обліковий запис відсутній. +For live and Docker smoke tests, auth usually comes from the Codex CLI account +or an OpenClaw `openai-codex` auth profile. Local stdio app-server launches can +also fall back to `CODEX_API_KEY` / `OPENAI_API_KEY` when no account is present. -## Мінімальна конфігурація +## Minimal config -Використайте `openai/gpt-5.5`, увімкніть вбудований Plugin і примусово задайте harness `codex`: +Use `openai/gpt-5.5`, enable the bundled plugin, and force the `codex` harness: ```json5 { @@ -218,7 +220,7 @@ OpenClaw на поверхні протоколу, з якою його прот } ``` -Якщо ваша конфігурація використовує `plugins.allow`, додайте туди й `codex`: +If your config uses `plugins.allow`, include `codex` there too: ```json5 { @@ -233,27 +235,27 @@ OpenClaw на поверхні протоколу, з якою його прот } ``` -Застарілі конфігурації, які задають `agents.defaults.model` або модель агента як -`codex/`, і далі автоматично вмикають вбудований Plugin `codex`. Нові конфігурації мають -надавати перевагу `openai/` плюс явному запису `agentRuntime` вище. +Legacy configs that set `agents.defaults.model` or an agent model to +`codex/` still auto-enable the bundled `codex` plugin. New configs should +prefer `openai/` plus the explicit `agentRuntime` entry above. -## Додайте Codex поряд з іншими моделями +## Add Codex alongside other models -Не задавайте `agentRuntime.id: "codex"` глобально, якщо той самий агент має вільно перемикатися -між Codex і моделями не-Codex провайдерів. Примусове середовище виконання застосовується до кожного -вбудованого ходу для цього агента або сеансу. Якщо ви виберете модель Anthropic, коли -це середовище виконання примусово задане, OpenClaw усе одно спробує harness Codex і закриється з помилкою, -замість того щоб тихо маршрутизувати цей хід через PI. +Do not set `agentRuntime.id: "codex"` globally if the same agent should freely switch +between Codex and non-Codex provider models. A forced runtime applies to every +embedded turn for that agent or session. If you select an Anthropic model while +that runtime is forced, OpenClaw still tries the Codex harness and fails closed +instead of silently routing that turn through PI. -Використовуйте натомість одну з цих форм: +Натомість використовуйте одну з цих форм: -- Розмістіть Codex на окремому агенті з `agentRuntime.id: "codex"`. -- Залиште стандартного агента на `agentRuntime.id: "auto"` і PI fallback для звичайного змішаного +- Розмістіть Codex на виділеному агенті з `agentRuntime.id: "codex"`. +- Залиште типового агента на `agentRuntime.id: "auto"` і fallback PI для звичайного змішаного використання провайдерів. -- Використовуйте застарілі посилання `codex/*` лише для сумісності. Нові конфігурації мають надавати перевагу +- Використовуйте застарілі посилання `codex/*` лише для сумісності. Нові конфігурації мають віддавати перевагу `openai/*` плюс явній політиці середовища виконання Codex. -Наприклад, це залишає стандартного агента на звичайному автоматичному виборі та +Наприклад, це залишає типового агента на звичайному автоматичному виборі та додає окремого агента Codex: ```json5 @@ -291,38 +293,38 @@ OpenClaw на поверхні протоколу, з якою його прот } ``` -З такою формою: +З цією формою: -- Стандартний агент `main` використовує звичайний шлях провайдера та PI compatibility fallback. -- Агент `codex` використовує обв’язку сервера застосунку Codex. +- Типовий агент `main` використовує звичайний шлях провайдера та fallback сумісності PI. +- Агент `codex` використовує обв’язку app-server Codex. - Якщо Codex відсутній або не підтримується для агента `codex`, хід завершується помилкою - замість тихого використання PI. + замість непомітного використання PI. ## Маршрутизація команд агента Агенти мають маршрутизувати запити користувача за наміром, а не лише за словом "Codex": -| Користувач просить... | Агент має використовувати... | +| Користувач просить... | Агент має використати... | | -------------------------------------------------------- | ------------------------------------------------ | | "Прив’язати цей чат до Codex" | `/codex bind` | -| "Відновити тут потік Codex ``" | `/codex resume ` | +| "Відновити потік Codex `` тут" | `/codex resume ` | | "Показати потоки Codex" | `/codex threads` | -| "Подати звіт у підтримку щодо невдалого запуску Codex" | `/diagnostics [note]` | -| "Надіслати відгук Codex лише для цього вкладеного потоку" | `/codex diagnostics [note]` | -| "Використовувати Codex як середовище виконання для цього агента" | зміна конфігурації `agentRuntime.id` | -| "Використовувати мою підписку ChatGPT/Codex зі звичайним OpenClaw" | посилання на моделі `openai-codex/*` | +| "Подати звіт до підтримки про невдалий запуск Codex" | `/diagnostics [note]` | +| "Надіслати відгук Codex лише для цього прикріпленого потоку" | `/codex diagnostics [note]` | +| "Використати Codex як середовище виконання для цього агента" | зміна конфігурації `agentRuntime.id` | +| "Використати мою підписку ChatGPT/Codex зі звичайним OpenClaw" | посилання на моделі `openai-codex/*` | | "Запустити Codex через ACP/acpx" | ACP `sessions_spawn({ runtime: "acp", ... })` | -| "Запустити Claude Code/Gemini/OpenCode/Cursor у потоці" | ACP/acpx, не `/codex` і не нативні підагенти | +| "Запустити Claude Code/Gemini/OpenCode/Cursor у потоці" | ACP/acpx, не `/codex` і не нативні під-агенти | -OpenClaw рекламує агентам інструкції щодо запуску ACP лише тоді, коли ACP увімкнено, -доступний для диспетчеризації та підкріплений завантаженим бекендом середовища виконання. Якщо ACP недоступний, +OpenClaw рекламує агентам настанови зі створення ACP лише тоді, коли ACP увімкнено, +доступний для диспетчеризації та підтримується завантаженим runtime-бекендом. Якщо ACP недоступний, системний prompt і Skills Plugin не мають навчати агента маршрутизації ACP. ## Розгортання лише з Codex Примусово використовуйте обв’язку Codex, коли потрібно довести, що кожен вбудований хід агента -використовує Codex. Явні середовища виконання Plugin типово не мають PI fallback, тому +використовує Codex. Явні середовища виконання Plugin типово не мають fallback PI, тому `fallback: "none"` необов’язковий, але часто корисний як документація: ```json5 @@ -339,20 +341,20 @@ ACP. } ``` -Перевизначення середовищем: +Перевизначення через середовище: ```bash OPENCLAW_AGENT_RUNTIME=codex openclaw gateway run ``` -Коли Codex примусово увімкнено, OpenClaw завершується рано, якщо Plugin Codex вимкнено, якщо -сервер застосунку занадто старий або якщо сервер застосунку не може запуститися. Установіть +Коли Codex примусово ввімкнено, OpenClaw завершується рано, якщо Plugin Codex вимкнено, +app-server надто старий або app-server не може запуститися. Установлюйте `OPENCLAW_AGENT_HARNESS_FALLBACK=pi` лише якщо ви навмисно хочете, щоб PI обробляв відсутній вибір обв’язки. ## Codex для окремого агента -Можна зробити одного агента лише для Codex, тоді як стандартний агент зберігає звичайний +Можна зробити одного агента лише для Codex, тоді як типовий агент зберігає звичайний автовибір: ```json5 @@ -385,14 +387,14 @@ OPENCLAW_AGENT_RUNTIME=codex openclaw gateway run ``` Використовуйте звичайні команди сесії, щоб перемикати агентів і моделі. `/new` створює нову -сесію OpenClaw, а обв’язка Codex створює або відновлює свій допоміжний потік сервера застосунку +сесію OpenClaw, а обв’язка Codex створює або відновлює свій допоміжний потік app-server за потреби. `/reset` очищає прив’язку сесії OpenClaw для цього потоку -і дає наступному ходу знову визначити обв’язку з поточної конфігурації. +і дозволяє наступному ходу знову визначити обв’язку з поточної конфігурації. ## Виявлення моделей -Типово Plugin Codex запитує у сервера застосунку доступні моделі. Якщо -виявлення завершується помилкою або перевищує час очікування, використовується вбудований резервний каталог для: +Типово Plugin Codex запитує app-server про доступні моделі. Якщо +виявлення завершується помилкою або таймаутом, використовується вбудований fallback-каталог для: - GPT-5.5 - GPT-5.4 mini @@ -418,8 +420,8 @@ OPENCLAW_AGENT_RUNTIME=codex openclaw gateway run } ``` -Вимкніть виявлення, коли хочете, щоб запуск уникав зондування Codex і використовував лише -резервний каталог: +Вимкніть виявлення, якщо хочете, щоб запуск не опитував Codex і використовував +fallback-каталог: ```json5 { @@ -438,27 +440,27 @@ OPENCLAW_AGENT_RUNTIME=codex openclaw gateway run } ``` -## Підключення сервера застосунку та політика +## Підключення app-server і політика -Типово Plugin запускає керований OpenClaw двійковий файл Codex локально з: +Типово Plugin запускає керований бінарний файл Codex OpenClaw локально з: ```bash codex app-server --listen stdio:// ``` -Керований двійковий файл оголошено як залежність середовища виконання вбудованого Plugin і підготовлено -разом з рештою залежностей Plugin `codex`. Це прив’язує версію сервера застосунку -до вбудованого Plugin, а не до будь-якого окремого Codex CLI, -який випадково встановлено локально. Установлюйте `appServer.command` лише тоді, коли +Керований бінарний файл оголошено як bundled runtime dependency Plugin і підготовлено +разом з рештою залежностей Plugin `codex`. Це прив’язує версію app-server +до bundled Plugin, а не до окремого Codex CLI, який випадково +встановлено локально. Установлюйте `appServer.command` лише тоді, коли ви навмисно хочете запустити інший виконуваний файл. Типово OpenClaw запускає локальні сесії обв’язки Codex у режимі YOLO: `approvalPolicy: "never"`, `approvalsReviewer: "user"` і -`sandbox: "danger-full-access"`. Це довірена локальна операторська позиція, яку використовують +`sandbox: "danger-full-access"`. Це довірена позиція локального оператора, яку використовують для автономних Heartbeat: Codex може використовувати інструменти shell і мережі без -зупинки на нативних запитах на схвалення, на які ніхто не може відповісти. +зупинки на нативних prompt затвердження, на які нікому відповісти. -Щоб увімкнути перевірені guardian схвалення Codex, установіть `appServer.mode: +Щоб увімкнути затвердження Codex з перевіркою guardian, установіть `appServer.mode: "guardian"`: ```json5 @@ -479,21 +481,21 @@ codex app-server --listen stdio:// } ``` -Режим Guardian використовує нативний шлях автоматичної перевірки схвалень Codex. Коли Codex просить -вийти з пісочниці, записати поза робочою областю або додати дозволи, як-от мережевий -доступ, Codex маршрутизує цей запит на схвалення нативному рецензенту замість -людського prompt. Рецензент застосовує рамку оцінки ризику Codex і схвалює або відхиляє -конкретний запит. Використовуйте Guardian, коли потрібні сильніші запобіжники, ніж у режимі YOLO, -але все ще потрібно, щоб unattended агенти просувалися далі. +Режим Guardian використовує нативний шлях автоматично перевірених затверджень Codex. Коли Codex просить +вийти з пісочниці, записати поза робочою областю або додати дозволи, наприклад мережевий +доступ, Codex маршрутизує цей запит на затвердження нативному рев’юеру замість +людського prompt. Рев’юер застосовує модель оцінки ризиків Codex і схвалює або відхиляє +конкретний запит. Використовуйте Guardian, коли потрібні сильніші запобіжники, ніж режим YOLO, +але все ще потрібно, щоб автоматичні агенти просувалися без нагляду. Пресет `guardian` розгортається в `approvalPolicy: "on-request"`, `approvalsReviewer: "auto_review"` і `sandbox: "workspace-write"`. -Окремі поля політики все ще перевизначають `mode`, тому розширені розгортання можуть поєднувати -пресет з явними виборами. Старіше значення рецензента `guardian_subagent` +Окремі поля політики все ще перевизначають `mode`, тому просунуті розгортання можуть поєднувати +пресет з явними виборами. Старіше значення рев’юера `guardian_subagent` досі приймається як псевдонім сумісності, але нові конфігурації мають використовувати `auto_review`. -Для вже запущеного сервера застосунку використовуйте транспорт WebSocket: +Для app-server, який уже запущено, використовуйте транспорт WebSocket: ```json5 { @@ -515,24 +517,24 @@ codex app-server --listen stdio:// } ``` -Запуски сервера застосунку через stdio типово успадковують середовище процесу OpenClaw, -але OpenClaw володіє мостом облікового запису сервера застосунку Codex. Auth вибирається в такому +Запуски stdio app-server типово успадковують середовище процесу OpenClaw, +але OpenClaw керує містком облікового запису app-server Codex. Автентифікація вибирається в такому порядку: -1. Явний профіль Auth OpenClaw Codex для агента. -2. Наявний обліковий запис сервера застосунку, наприклад локальний вхід Codex CLI ChatGPT. -3. Лише для локальних запусків сервера застосунку через stdio: `CODEX_API_KEY`, потім - `OPENAI_API_KEY`, коли немає облікового запису сервера застосунку, а OpenAI auth - усе ще потрібний. +1. Явний профіль автентифікації OpenClaw Codex для агента. +2. Наявний обліковий запис app-server, наприклад локальний вхід ChatGPT у Codex CLI. +3. Лише для локальних запусків stdio app-server: `CODEX_API_KEY`, потім + `OPENAI_API_KEY`, коли облікового запису app-server немає, а автентифікація OpenAI + все ще потрібна. -Коли OpenClaw бачить профіль Auth Codex у стилі підписки ChatGPT, він вилучає -`CODEX_API_KEY` і `OPENAI_API_KEY` із породженого дочірнього процесу Codex. Це +Коли OpenClaw бачить профіль автентифікації Codex у стилі підписки ChatGPT, він вилучає +`CODEX_API_KEY` і `OPENAI_API_KEY` з породженого дочірнього процесу Codex. Це залишає API-ключі рівня Gateway доступними для embeddings або прямих моделей OpenAI -без випадкового виставлення рахунків за нативні ходи сервера застосунку Codex через API. -Явні профілі API-ключа Codex і локальний stdio env-key fallback використовують вхід сервера застосунку -замість успадкованого середовища дочірнього процесу. Підключення до сервера застосунку через WebSocket -не отримують Gateway env API-key fallback; використовуйте явний профіль Auth або -власний обліковий запис віддаленого сервера застосунку. +і водночас не дає нативним ходам app-server Codex випадково тарифікуватися через API. +Явні профілі API-ключа Codex і fallback локального stdio env-key використовують логін app-server +замість успадкованого середовища дочірнього процесу. Підключення WebSocket app-server +не отримують fallback API-ключа середовища Gateway; використовуйте явний профіль автентифікації або +власний обліковий запис віддаленого app-server. Якщо розгортанню потрібна додаткова ізоляція середовища, додайте ці змінні до `appServer.clearEnv`: @@ -554,39 +556,39 @@ codex app-server --listen stdio:// } ``` -`appServer.clearEnv` впливає лише на породжений дочірній процес сервера застосунку Codex. +`appServer.clearEnv` впливає лише на породжений дочірній процес app-server Codex. Підтримувані поля `appServer`: -| Поле | Типово | Значення | +| Поле | Типове значення | Значення | | ------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `transport` | `"stdio"` | `"stdio"` запускає Codex; `"websocket"` підключається до `url`. | -| `command` | керований бінарний файл Codex | Виконуваний файл для stdio-транспорту. Залиште незаданим, щоб використати керований бінарний файл; задавайте лише для явного перевизначення. | +| `command` | керований бінарний файл Codex | Виконуваний файл для stdio-транспорту. Залиште незаданим, щоб використовувати керований бінарний файл; задавайте лише для явного перевизначення. | | `args` | `["app-server", "--listen", "stdio://"]` | Аргументи для stdio-транспорту. | -| `url` | не задано | URL app-server WebSocket. | +| `url` | не задано | URL WebSocket app-server. | | `authToken` | не задано | Bearer-токен для WebSocket-транспорту. | | `headers` | `{}` | Додаткові заголовки WebSocket. | -| `clearEnv` | `[]` | Імена додаткових змінних середовища, які видаляються із запущеного процесу stdio app-server після того, як OpenClaw сформує успадковане середовище. | +| `clearEnv` | `[]` | Додаткові назви змінних середовища, які видаляються зі створеного процесу stdio app-server після того, як OpenClaw сформує успадковане середовище. | | `requestTimeoutMs` | `60000` | Тайм-аут для викликів площини керування app-server. | | `mode` | `"yolo"` | Пресет для виконання YOLO або виконання з перевіркою guardian. | -| `approvalPolicy` | `"never"` | Нативна політика схвалень Codex, що надсилається до запуску/відновлення потоку/turn. | -| `sandbox` | `"danger-full-access"` | Нативний режим пісочниці Codex, що надсилається до запуску/відновлення потоку. | -| `approvalsReviewer` | `"user"` | Використовуйте `"auto_review"`, щоб дозволити Codex перевіряти нативні запити схвалення. `guardian_subagent` залишається застарілим псевдонімом. | +| `approvalPolicy` | `"never"` | Нативна політика схвалення Codex, яку надсилають під час start/resume/turn потоку. | +| `sandbox` | `"danger-full-access"` | Нативний режим sandbox Codex, який надсилають під час start/resume потоку. | +| `approvalsReviewer` | `"user"` | Використовуйте `"auto_review"`, щоб дозволити Codex перевіряти нативні запити на схвалення. `guardian_subagent` залишається застарілим псевдонімом. | | `serviceTier` | не задано | Необов’язковий рівень сервісу Codex app-server: `"fast"`, `"flex"` або `null`. Недійсні застарілі значення ігноруються. | -Динамічні виклики інструментів, які належать OpenClaw, обмежуються незалежно від +Динамічні виклики інструментів, що належать OpenClaw, обмежуються незалежно від `appServer.requestTimeoutMs`: кожен запит Codex `item/tool/call` має отримати відповідь OpenClaw протягом 30 секунд. У разі тайм-ауту OpenClaw перериває -сигнал інструмента там, де це підтримується, і повертає невдалу відповідь -динамічного інструмента до Codex, щоб turn міг продовжитися, а не залишати -сесію в стані `processing`. +сигнал інструмента там, де це підтримується, і повертає Codex невдалу відповідь +динамічного інструмента, щоб turn міг продовжитися замість того, щоб залишати +сесію в `processing`. -Після того як OpenClaw відповідає на запит app-server у межах turn Codex, harness -також очікує, що Codex завершить нативний turn через `turn/completed`. Якщо -app-server мовчить 60 секунд після цієї відповіді, OpenClaw у режимі best-effort -перериває turn Codex, записує діагностичний тайм-аут і звільняє смугу сесії -OpenClaw, щоб наступні повідомлення чату не ставали в чергу за застарілим -нативним turn. +Після того як OpenClaw відповідає на запит app-server у межах turn Codex, +harness також очікує, що Codex завершить нативний turn через `turn/completed`. Якщо +app-server замовкає на 60 секунд після цієї відповіді, OpenClaw докладає +максимальних зусиль, щоб перервати turn Codex, записує діагностичний тайм-аут і +звільняє lane сесії OpenClaw, щоб наступні повідомлення чату не ставали в чергу +за застарілим нативним turn. Перевизначення середовища залишаються доступними для локального тестування: @@ -599,28 +601,28 @@ OpenClaw, щоб наступні повідомлення чату не ста `OPENCLAW_CODEX_APP_SERVER_BIN` обходить керований бінарний файл, коли `appServer.command` не задано. -`OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1` було вилучено. Натомість використовуйте +`OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1` було видалено. Натомість використовуйте `plugins.entries.codex.config.appServer.mode: "guardian"` або -`OPENCLAW_CODEX_APP_SERVER_MODE=guardian` для разового локального тестування. -Конфігурація бажаніша для повторюваних розгортань, оскільки зберігає поведінку -Plugin у тому самому перевіреному файлі, що й решта налаштування harness Codex. +`OPENCLAW_CODEX_APP_SERVER_MODE=guardian` для одноразового локального тестування. Config +бажаніший для повторюваних розгортань, оскільки зберігає поведінку plugin у тому +самому перевіреному файлі, що й решту налаштувань harness Codex. ## Використання комп’ютера Computer Use описано в окремому посібнику з налаштування: [Codex Computer Use](/uk/plugins/codex-computer-use). -Коротко: OpenClaw не постачає desktop-control app і не виконує дії робочого -стола самостійно. Він готує Codex app-server, перевіряє, що MCP-сервер -`computer-use` доступний, а потім дозволяє Codex обробляти нативні виклики MCP -інструментів під час turn у режимі Codex. +Коротко: OpenClaw не постачає desktop-control app у складі пакета і не виконує +дії на робочому столі самостійно. Він готує Codex app-server, перевіряє, що MCP +server `computer-use` доступний, а потім дозволяє Codex обробляти нативні +виклики інструментів MCP під час turn у режимі Codex. -Для прямого доступу до драйвера TryCua поза потоком marketplace Codex -зареєструйте `cua-driver mcp` через `openclaw mcp set cua-driver '{"command":"cua-driver","args":["mcp"]}'`. +Для прямого доступу до драйвера TryCua поза потоком marketplace Codex зареєструйте +`cua-driver mcp` за допомогою `openclaw mcp set cua-driver '{"command":"cua-driver","args":["mcp"]}'`. Див. [Codex Computer Use](/uk/plugins/codex-computer-use), щоб зрозуміти різницю -між Computer Use, яким керує Codex, і прямою реєстрацією MCP. +між Computer Use, що належить Codex, і прямою реєстрацією MCP. -Мінімальна конфігурація: +Мінімальна config: ```json5 { @@ -655,20 +657,20 @@ Computer Use описано в окремому посібнику з налаш - `/codex computer-use install --source ` - `/codex computer-use install --marketplace-path ` -Computer Use специфічний для macOS і може вимагати локальних дозволів ОС, перш -ніж MCP-сервер Codex зможе керувати застосунками. Якщо `computerUse.enabled` -дорівнює true, а MCP-сервер недоступний, turn у режимі Codex завершується -помилкою до запуску потоку, а не непомітно виконується без нативних інструментів -Computer Use. Див. [Codex Computer Use](/uk/plugins/codex-computer-use) щодо -варіантів marketplace, обмежень віддаленого каталогу, причин статусу та +Computer Use є специфічним для macOS і може вимагати локальних дозволів ОС, +перш ніж MCP server Codex зможе керувати apps. Якщо `computerUse.enabled` має +значення true, а MCP server недоступний, turn у режимі Codex завершується з +помилкою до запуску потоку замість того, щоб непомітно працювати без нативних +інструментів Computer Use. Див. [Codex Computer Use](/uk/plugins/codex-computer-use) +про варіанти marketplace, обмеження віддаленого catalog, причини status і усунення несправностей. -Коли `computerUse.autoInstall` дорівнює true, OpenClaw може зареєструвати -стандартний bundled marketplace Codex Desktop із +Коли `computerUse.autoInstall` має значення true, OpenClaw може зареєструвати +стандартний bundled Codex Desktop marketplace з `/Applications/Codex.app/Contents/Resources/plugins/openai-bundled`, якщо Codex ще не виявив локальний marketplace. Використовуйте `/new` або `/reset` після -зміни runtime або конфігурації Computer Use, щоб наявні сесії не зберігали -старе прив’язування PI або потоку Codex. +зміни runtime або config Computer Use, щоб наявні сесії не зберігали старе +прив’язування PI або потоку Codex. ## Поширені рецепти @@ -753,97 +755,95 @@ Computer Use. Див. [Codex Computer Use](/uk/plugins/codex-computer-use) що } ``` -Перемикання моделі залишається під керуванням OpenClaw. Коли сесію OpenClaw -прикріплено до наявного потоку Codex, наступний turn знову надсилає поточно -вибрану модель OpenAI, провайдера, політику схвалення, пісочницю та рівень -сервісу до app-server. Перемикання з `openai/gpt-5.5` на `openai/gpt-5.2` -зберігає прив’язування потоку, але просить Codex продовжити з новообраною -моделлю. +Перемикання моделі залишається під контролем OpenClaw. Коли сесія OpenClaw +приєднана до наявного потоку Codex, наступний turn знову надсилає до app-server +поточну вибрану модель OpenAI, provider, політику схвалення, sandbox і рівень +сервісу. Перемикання з `openai/gpt-5.5` на `openai/gpt-5.2` зберігає +прив’язування потоку, але просить Codex продовжити з новою вибраною моделлю. ## Команда Codex -Bundled Plugin реєструє `/codex` як авторизовану slash-команду. Вона -універсальна й працює в будь-якому каналі, що підтримує текстові команди -OpenClaw. +Bundled plugin реєструє `/codex` як авторизовану slash-команду. Вона є +загальною і працює в будь-якому channel, що підтримує текстові команди OpenClaw. Поширені форми: -- `/codex status` показує live-підключення app-server, моделі, обліковий запис, rate limits, MCP-сервери та Skills. -- `/codex models` перелічує live-моделі Codex app-server. +- `/codex status` показує живе підключення app-server, моделі, account, rate limits, MCP servers і skills. +- `/codex models` перелічує живі моделі Codex app-server. - `/codex threads [filter]` перелічує нещодавні потоки Codex. -- `/codex resume ` прикріплює поточну сесію OpenClaw до наявного потоку Codex. -- `/codex compact` просить Codex app-server ущільнити прикріплений потік. -- `/codex review` запускає нативний review Codex для прикріпленого потоку. -- `/codex diagnostics [note]` запитує підтвердження перед надсиланням діагностичного feedback Codex для прикріпленого потоку. -- `/codex computer-use status` перевіряє налаштований Plugin Computer Use і MCP-сервер. -- `/codex computer-use install` встановлює налаштований Plugin Computer Use і перезавантажує MCP-сервери. -- `/codex account` показує стан облікового запису та rate-limit. -- `/codex mcp` перелічує статус MCP-серверів Codex app-server. -- `/codex skills` перелічує Skills Codex app-server. +- `/codex resume ` приєднує поточну сесію OpenClaw до наявного потоку Codex. +- `/codex compact` просить Codex app-server стиснути приєднаний потік. +- `/codex review` запускає нативний review Codex для приєднаного потоку. +- `/codex diagnostics [note]` запитує перед надсиланням діагностичного feedback Codex для приєднаного потоку. +- `/codex computer-use status` перевіряє налаштований plugin Computer Use і MCP server. +- `/codex computer-use install` встановлює налаштований plugin Computer Use і перезавантажує MCP servers. +- `/codex account` показує стан account і rate-limit. +- `/codex mcp` перелічує стан MCP server Codex app-server. +- `/codex skills` перелічує skills Codex app-server. ### Поширений робочий процес налагодження Коли агент на базі Codex робить щось неочікуване в Telegram, Discord, Slack -або іншому каналі, почніть із розмови, де сталася проблема: +або іншому channel, почніть із розмови, де сталася проблема: 1. Запустіть `/diagnostics bad tool choice after image upload` або іншу коротку нотатку, що описує побачене. -2. Один раз схваліть запит діагностики. Схвалення створює локальний - діагностичний zip Gateway і, оскільки сесія використовує harness Codex, також +2. Один раз схваліть діагностичний запит. Схвалення створює локальний + diagnostics zip Gateway і, оскільки сесія використовує harness Codex, також надсилає відповідний feedback bundle Codex на сервери OpenAI. -3. Скопіюйте завершену відповідь діагностики до bug report або support thread. - Вона містить локальний шлях до bundle, підсумок приватності, ідентифікатори - сесії OpenClaw, ідентифікатори потоків Codex і рядок `Inspect locally` для +3. Скопіюйте завершену діагностичну відповідь у bug report або support thread. + Вона містить шлях до локального bundle, зведення privacy, ідентифікатори + сесії OpenClaw, ідентифікатори потоку Codex і рядок `Inspect locally` для кожного потоку Codex. -4. Якщо ви хочете самостійно налагодити запуск, виконайте надруковану команду - `Inspect locally` у терміналі. Вона має вигляд `codex resume ` і - відкриває нативний потік Codex, щоб ви могли оглянути розмову, продовжити її - локально або запитати Codex, чому він вибрав певний інструмент чи план. +4. Якщо хочете самостійно налагодити запуск, виконайте надруковану команду + `Inspect locally` у терміналі. Вона виглядає як `codex resume ` і + відкриває нативний потік Codex, щоб ви могли переглянути розмову, продовжити + її локально або запитати Codex, чому він вибрав певний інструмент чи план. -Використовуйте `/codex diagnostics [note]` лише тоді, коли вам спеціально -потрібне завантаження feedback Codex для поточно прикріпленого потоку без -повного діагностичного bundle OpenClaw Gateway. Для більшості support reports -`/diagnostics [note]` є кращою відправною точкою, оскільки він пов’язує -локальний стан Gateway та ідентифікатори потоків Codex в одній відповіді. Див. -[Експорт діагностики](/uk/gateway/diagnostics) щодо повної моделі приватності та -поведінки групових чатів. +Використовуйте `/codex diagnostics [note]` лише тоді, коли вам конкретно потрібне +завантаження feedback Codex для поточного приєднаного потоку без повного +діагностичного bundle OpenClaw Gateway. Для більшості support reports +`/diagnostics [note]` є кращою відправною точкою, бо пов’язує локальний стан +Gateway та ідентифікатори потоку Codex в одній відповіді. Див. +[Diagnostics export](/uk/gateway/diagnostics) щодо повної моделі privacy і +поведінки group-chat. Core OpenClaw також надає owner-only `/diagnostics [note]` як загальну команду -діагностики Gateway. Її запит схвалення показує преамбулу про чутливі дані, -посилання на [Експорт діагностики](/uk/gateway/diagnostics) і щоразу запитує +діагностики Gateway. Її запит на схвалення показує преамбулу про sensitive-data, +посилання на [Diagnostics Export](/uk/gateway/diagnostics) і щоразу запитує `openclaw gateway diagnostics export --json` через явне exec-схвалення. Не -схвалюйте діагностику правилом allow-all. Після схвалення OpenClaw надсилає -звіт, який можна вставити, з локальним шляхом до bundle і підсумком manifest. -Коли активна сесія OpenClaw використовує harness Codex, це саме схвалення також -дозволяє надсилати відповідні feedback bundles Codex на сервери OpenAI. У -запиті схвалення вказано, що feedback Codex буде надіслано, але він не перелічує -ідентифікатори сесії чи потоків Codex до схвалення. +схвалюйте diagnostics за правилом allow-all. Після схвалення OpenClaw надсилає +звіт, придатний для вставлення, зі шляхом до локального bundle і зведенням +manifest. Коли активна сесія OpenClaw використовує harness Codex, те саме +схвалення також авторизує надсилання відповідних feedback bundles Codex на +сервери OpenAI. У запиті на схвалення сказано, що feedback Codex буде надіслано, +але до схвалення він не перелічує ідентифікатори сесії або потоку Codex. -Якщо `/diagnostics` викликає owner у груповому чаті, OpenClaw тримає спільний -канал чистим: група отримує лише коротке сповіщення, тоді як діагностична -преамбула, запити схвалення та ідентифікатори сесії/потоку Codex надсилаються -owner через приватний маршрут схвалення. Якщо приватного маршруту owner немає, -OpenClaw відхиляє груповий запит і просить owner запустити його з DM. +Якщо `/diagnostics` викликає owner у group chat, OpenClaw зберігає shared channel +чистим: group отримує лише коротке повідомлення, тоді як преамбула diagnostics, +запити на схвалення та ідентифікатори сесії/потоку Codex надсилаються owner +через приватний маршрут схвалення. Якщо приватного маршруту owner немає, +OpenClaw відхиляє запит group і просить owner запустити його з DM. -Затверджений виклик завантаження Codex викликає `feedback/upload` app-server Codex і просить +Схвалений виклик завантаження Codex викликає `feedback/upload` Codex app-server і просить app-server включити журнали для кожного вказаного потоку та породжених підпотоків Codex, коли вони доступні. Завантаження проходить звичайним шляхом зворотного зв’язку Codex до серверів OpenAI; якщо зворотний зв’язок Codex вимкнено в цьому app-server, команда повертає помилку app-server. Завершена відповідь діагностики перелічує канали, ідентифікатори сесій OpenClaw, ідентифікатори потоків Codex і локальні команди -`codex resume ` для потоків, які було надіслано. Якщо ви відхилите або проігноруєте підтвердження, -OpenClaw не виводить ці ідентифікатори Codex. Це завантаження не замінює локальний +`codex resume ` для потоків, які було надіслано. Якщо ви відхилите або проігноруєте схвалення, +OpenClaw не виведе ці ідентифікатори Codex. Це завантаження не замінює локальний експорт діагностики Gateway. -`/codex resume` записує той самий супровідний файл прив’язки, який harness використовує для +`/codex resume` записує той самий допоміжний файл прив’язки, який harness використовує для звичайних ходів. У наступному повідомленні OpenClaw відновлює цей потік Codex, передає -поточну вибрану модель OpenClaw до app-server і залишає розширену історію +поточну вибрану модель OpenClaw в app-server і залишає розширену історію увімкненою. -### Перевірити потік Codex із CLI +### Перевірка потоку Codex із CLI Найшвидший спосіб зрозуміти невдалий запуск Codex часто полягає в тому, щоб відкрити нативний потік Codex -напряму: +безпосередньо: ```sh codex resume @@ -851,171 +851,139 @@ codex resume Використовуйте це, коли помічаєте помилку в розмові каналу й хочете перевірити проблемну сесію Codex, продовжити її локально або запитати Codex, чому він зробив -певний вибір інструмента чи міркування. Найпростіший шлях зазвичай такий: -спочатку виконати `/diagnostics [note]`: після вашого підтвердження завершений звіт перелічує +певний вибір інструмента чи міркування. Найпростіший шлях зазвичай полягає в тому, щоб спершу виконати +`/diagnostics [note]`: після вашого схвалення завершений звіт перелічує кожен потік Codex і друкує команду `Inspect locally`, наприклад `codex resume `. Ви можете скопіювати цю команду безпосередньо в термінал. Ви також можете отримати ідентифікатор потоку з `/codex binding` для поточного чату або -`/codex threads [filter]` для нещодавніх потоків app-server Codex, а потім виконати ту саму +`/codex threads [filter]` для нещодавніх потоків Codex app-server, а потім виконати ту саму команду `codex resume` у своїй оболонці. -Поверхня команд потребує app-server Codex версії `0.125.0` або новішої. Окремі +Поверхня команд потребує Codex app-server `0.125.0` або новішого. Окремі методи керування повідомляються як `unsupported by this Codex app-server`, якщо майбутній або користувацький app-server не надає цей метод JSON-RPC. ## Межі хуків -Harness Codex має три шари хуків: +Codex harness має три шари хуків: | Шар | Власник | Призначення | | ------------------------------------ | ------------------------ | ------------------------------------------------------------------ | -| Хуки плагінів OpenClaw | OpenClaw | Сумісність продукту/плагінів у harness Pi та Codex. | -| Middleware розширень app-server Codex | Вбудовані плагіни OpenClaw | Поведінка адаптера для кожного ходу навколо динамічних інструментів OpenClaw. | +| Хуки Plugin OpenClaw | OpenClaw | Сумісність продукту/Plugin між PI та Codex harness. | +| Middleware розширення Codex app-server | Комплектні plugins OpenClaw | Поведінка адаптера для кожного ходу навколо динамічних інструментів OpenClaw. | | Нативні хуки Codex | Codex | Низькорівневий життєвий цикл Codex і нативна політика інструментів із конфігурації Codex. | OpenClaw не використовує проєктні або глобальні файли Codex `hooks.json` для маршрутизації -поведінки плагінів OpenClaw. Для підтримуваного мосту нативних інструментів і дозволів -OpenClaw інжектує конфігурацію Codex на рівні потоку для `PreToolUse`, `PostToolUse`, +поведінки Plugin OpenClaw. Для підтримуваного мосту нативних інструментів і дозволів +OpenClaw впроваджує конфігурацію Codex для кожного потоку для `PreToolUse`, `PostToolUse`, `PermissionRequest` і `Stop`. Інші хуки Codex, як-от `SessionStart` і -`UserPromptSubmit`, залишаються елементами керування рівня Codex; вони не надаються як -хуки плагінів OpenClaw у контракті v1. +`UserPromptSubmit`, залишаються засобами керування рівня Codex; вони не відкриті як +хуки Plugin OpenClaw у контракті v1. -Для динамічних інструментів OpenClaw OpenClaw виконує інструмент після того, як Codex просить -виклик, тому OpenClaw запускає поведінку плагінів і middleware, якою він володіє, в -адаптері harness. Для нативних інструментів Codex володіє канонічним записом інструмента. -OpenClaw може віддзеркалювати вибрані події, але не може переписати нативний потік Codex, -якщо Codex не надає цю операцію через app-server або callback-и нативних хуків. +Для динамічних інструментів OpenClaw OpenClaw виконує інструмент після того, як Codex запитує +виклик, тому OpenClaw запускає поведінку Plugin і middleware, якою він володіє, в +адаптері harness. Для нативних інструментів Codex канонічним записом інструмента володіє Codex. +OpenClaw може дзеркалити вибрані події, але не може переписати нативний потік Codex, +якщо Codex не відкриває цю операцію через app-server або нативні callback-и хуків. -Проєкції Compaction і життєвого циклу LLM надходять із сповіщень app-server Codex -і стану адаптера OpenClaw, а не з команд нативних хуків Codex. +Проєкції Compaction і життєвого циклу LLM надходять із повідомлень Codex app-server +і стану адаптера OpenClaw, а не з нативних команд хуків Codex. Події OpenClaw `before_compaction`, `after_compaction`, `llm_input` і -`llm_output` є спостереженнями рівня адаптера, а не побайтовими захопленнями +`llm_output` є спостереженнями рівня адаптера, а не побайтовими знімками внутрішнього запиту Codex або payload-ів Compaction. -Нативні сповіщення app-server Codex `hook/started` і `hook/completed` +Нативні повідомлення Codex app-server `hook/started` і `hook/completed` проєктуються як події агента `codex_app_server.hook` для траєкторії та налагодження. -Вони не викликають хуки плагінів OpenClaw. +Вони не викликають хуки Plugin OpenClaw. ## Контракт підтримки V1 -Режим Codex — це не Pi з іншим викликом моделі під капотом. Codex володіє більшою частиною -нативного циклу моделі, а OpenClaw адаптує свої поверхні плагінів і сесій +Режим Codex не є PI з іншим викликом моделі під ним. Codex володіє більшою частиною +нативного циклу моделі, а OpenClaw адаптує свої поверхні Plugin і сесій навколо цієї межі. -Підтримується в runtime Codex v1: +Підтримується в Codex runtime v1: -| Поверхня | Підтримка | Чому | -| -------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Цикл моделі OpenAI через Codex | Підтримується | app-server Codex володіє ходом OpenAI, відновленням нативного потоку та продовженням нативних інструментів. | -| Маршрутизація й доставка каналів OpenClaw | Підтримується | Telegram, Discord, Slack, WhatsApp, iMessage та інші канали залишаються поза runtime моделі. | -| Динамічні інструменти OpenClaw | Підтримується | Codex просить OpenClaw виконати ці інструменти, тому OpenClaw залишається на шляху виконання. | -| Плагіни prompt-ів і контексту | Підтримується | OpenClaw будує накладення prompt-ів і проєктує контекст у хід Codex перед запуском або відновленням потоку. | -| Життєвий цикл рушія контексту | Підтримується | Збирання, ingest або післяходове обслуговування, а також координація Compaction рушія контексту виконуються для ходів Codex. | -| Хуки динамічних інструментів | Підтримується | `before_tool_call`, `after_tool_call` і middleware результатів інструментів виконуються навколо динамічних інструментів, якими володіє OpenClaw. | -| Хуки життєвого циклу | Підтримуються як спостереження адаптера | `llm_input`, `llm_output`, `agent_end`, `before_compaction` і `after_compaction` спрацьовують із чесними payload-ами режиму Codex. | -| Шлюз перегляду фінальної відповіді | Підтримується через relay нативних хуків | Codex `Stop` передається до `before_agent_finalize`; `revise` просить Codex виконати ще один прохід моделі перед фіналізацією. | -| Нативні shell, patch і MCP: блокування або спостереження | Підтримується через relay нативних хуків | Codex `PreToolUse` і `PostToolUse` передаються для зафіксованих нативних поверхонь інструментів, включно з payload-ами MCP на app-server Codex `0.125.0` або новішому. Блокування підтримується; переписування аргументів — ні. | -| Нативна політика дозволів | Підтримується через relay нативних хуків | Codex `PermissionRequest` може маршрутизуватися через політику OpenClaw там, де runtime це надає. Якщо OpenClaw не повертає рішення, Codex продовжує через свій звичайний шлях guardian або підтвердження користувача. | -| Захоплення траєкторії app-server | Підтримується | OpenClaw записує запит, який він надіслав до app-server, і сповіщення app-server, які він отримує. | +| Поверхня | Підтримка | Чому | +| -------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Цикл моделі OpenAI через Codex | Підтримується | Codex app-server володіє ходом OpenAI, відновленням нативного потоку та продовженням нативного інструмента. | +| Маршрутизація та доставка каналів OpenClaw | Підтримується | Telegram, Discord, Slack, WhatsApp, iMessage та інші канали залишаються поза runtime моделі. | +| Динамічні інструменти OpenClaw | Підтримується | Codex просить OpenClaw виконувати ці інструменти, тому OpenClaw залишається в шляху виконання. | +| Plugins промптів і контексту | Підтримується | OpenClaw створює накладення промптів і проєктує контекст у хід Codex перед запуском або відновленням потоку. | +| Життєвий цикл рушія контексту | Підтримується | Збирання, ingest або обслуговування після ходу, а також координація Compaction рушія контексту виконуються для ходів Codex. | +| Хуки динамічних інструментів | Підтримується | `before_tool_call`, `after_tool_call` і middleware результатів інструментів виконуються навколо динамічних інструментів, якими володіє OpenClaw. | +| Хуки життєвого циклу | Підтримується як спостереження адаптера | `llm_input`, `llm_output`, `agent_end`, `before_compaction` і `after_compaction` спрацьовують із чесними payload-ами режиму Codex. | +| Шлюз перегляду фінальної відповіді | Підтримується через ретранслятор нативних хуків | Codex `Stop` ретранслюється до `before_agent_finalize`; `revise` просить Codex зробити ще один прохід моделі перед фіналізацією. | +| Блокування або спостереження нативних shell, patch і MCP | Підтримується через ретранслятор нативних хуків | Codex `PreToolUse` і `PostToolUse` ретранслюються для зафіксованих поверхонь нативних інструментів, включно з payload-ами MCP у Codex app-server `0.125.0` або новішому. Блокування підтримується; переписування аргументів — ні. | +| Нативна політика дозволів | Підтримується через ретранслятор нативних хуків | Codex `PermissionRequest` може маршрутизуватися через політику OpenClaw там, де runtime це відкриває. Якщо OpenClaw не повертає рішення, Codex продовжує через свій звичайний guardian або шлях схвалення користувача. | +| Захоплення траєкторії app-server | Підтримується | OpenClaw записує запит, який він надіслав до app-server, і повідомлення app-server, які він отримує. | -Не підтримується в runtime Codex v1: +Не підтримується в Codex runtime v1: -| Поверхня | Межа V1 | Майбутній шлях | -| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -| Мутація аргументів нативних інструментів | Нативні pre-tool хуки Codex можуть блокувати, але OpenClaw не переписує аргументи нативних інструментів Codex. | Потребує підтримки хуків/схеми Codex для заміни вхідних даних інструмента. | -| Редагована історія нативного transcript Codex | Codex володіє канонічною історією нативного потоку. OpenClaw володіє дзеркалом і може проєктувати майбутній контекст, але не має мутувати непідтримувані внутрішні дані. | Додати явні API app-server Codex, якщо потрібна хірургія нативного потоку. | -| `tool_result_persist` для записів нативних інструментів Codex | Цей хук трансформує записи transcript, якими володіє OpenClaw, а не записи нативних інструментів Codex. | Можна віддзеркалювати трансформовані записи, але канонічне переписування потребує підтримки Codex. | -| Розширені нативні метадані Compaction | OpenClaw спостерігає початок і завершення Compaction, але не отримує стабільний список залишеного/відкинутого, дельту токенів або payload підсумку. | Потребує багатших подій Compaction Codex. | -| Втручання в Compaction | Поточні хуки Compaction OpenClaw у режимі Codex мають рівень сповіщень. | Додати pre/post хуки Compaction Codex, якщо плагінам потрібно накладати вето або переписувати нативну Compaction. | -| Побайтове захоплення API-запиту моделі | OpenClaw може захоплювати запити й сповіщення app-server, але ядро Codex внутрішньо будує фінальний API-запит OpenAI. | Потребує події трасування запиту моделі Codex або debug API. | +| Поверхня | Межа V1 | Майбутній шлях | +| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| Мутація аргументів нативного інструмента | Нативні pre-tool хуки Codex можуть блокувати, але OpenClaw не переписує аргументи нативних інструментів Codex. | Потребує підтримки хуків/схеми Codex для заміни вхідних даних інструмента. | +| Редагована історія нативного transcript Codex | Codex володіє канонічною історією нативного потоку. OpenClaw володіє дзеркалом і може проєктувати майбутній контекст, але не має мутувати непідтримувані внутрішні структури. | Додати явні API Codex app-server, якщо потрібна хірургія нативного потоку. | +| `tool_result_persist` для записів нативних інструментів Codex | Цей хук перетворює записи transcript, якими володіє OpenClaw, а не записи нативних інструментів Codex. | Можна дзеркалити перетворені записи, але канонічне переписування потребує підтримки Codex. | +| Багаті нативні метадані Compaction | OpenClaw спостерігає початок і завершення Compaction, але не отримує стабільного списку збереженого/відкинутого, token delta або payload підсумку. | Потребує багатших подій Compaction Codex. | +| Втручання в Compaction | Поточні хуки Compaction OpenClaw у режимі Codex мають рівень повідомлень. | Додати pre/post хуки Compaction Codex, якщо plugins потребують накладати вето або переписувати нативну Compaction. | +| Побайтове захоплення запиту API моделі | OpenClaw може захоплювати запити й повідомлення app-server, але ядро Codex внутрішньо створює фінальний запит OpenAI API. | Потребує події трасування запиту моделі Codex або debug API. | ## Інструменти, медіа та Compaction -Harness Codex змінює лише низькорівневий вбудований виконавець агента. +Codex harness змінює лише низькорівневий вбудований виконавець агента. -OpenClaw і далі будує список інструментів і отримує результати динамічних інструментів від -harness. Текст, зображення, відео, музика, TTS, підтвердження та вивід messaging-tool +OpenClaw, як і раніше, створює список інструментів і отримує результати динамічних інструментів від +harness. Текст, зображення, відео, музика, TTS, схвалення та вивід інструментів обміну повідомленнями продовжують проходити звичайним шляхом доставки OpenClaw. -Relay нативних хуків навмисно є загальним, але контракт підтримки v1 +Ретранслятор нативних хуків навмисно є загальним, але контракт підтримки v1 обмежений шляхами нативних інструментів і дозволів Codex, які тестує OpenClaw. У runtime Codex це включає payload-и shell, patch і MCP `PreToolUse`, -`PostToolUse` і `PermissionRequest`. Не припускайте, що кожна майбутня -подія хуків Codex є поверхнею плагінів OpenClaw, доки контракт runtime -не назве її. +`PostToolUse` та `PermissionRequest`. Не припускайте, що кожна майбутня +подія хуків Codex є поверхнею Plugin OpenClaw, доки runtime contract не назве +її. Для `PermissionRequest` OpenClaw повертає явні рішення allow або deny лише -коли політика ухвалює рішення. Результат без рішення не є allow. Codex трактує його як -відсутність рішення хуку й переходить до власного шляху guardian або підтвердження користувача. +коли політика ухвалює рішення. Результат без рішення не є allow. Codex трактує його як відсутність +рішення хуку й переходить до свого власного guardian або шляху схвалення користувача. -Запити на підтвердження інструментів Codex MCP маршрутизуються через потік -підтверджень плагінів OpenClaw, коли Codex позначає `_meta.codex_approval_kind` як -`"mcp_tool_call"`. Prompt-и Codex `request_user_input` надсилаються назад до -початкового чату, а наступне повідомлення-відповідь у черзі відповідає на цей нативний -запит сервера замість того, щоб спрямовуватися як додатковий контекст. Інші запити elicitation -MCP і далі завершуються закритою відмовою. +Запити схвалення інструментів Codex MCP маршрутизуються через потік схвалення Plugin +OpenClaw, коли Codex позначає `_meta.codex_approval_kind` як +`"mcp_tool_call"`. Промпти Codex `request_user_input` надсилаються назад до +початкового чату, а наступне повідомлення в черзі відповідає на цей нативний +запит сервера замість того, щоб скеровуватися як додатковий контекст. Інші запити elicitation +MCP все ще завершуються закритою відмовою. -Коли вибрана модель використовує обв’язку Codex, нативну Compaction потоку -делеговано Codex app-server. OpenClaw зберігає дзеркало транскрипта для історії -каналу, пошуку, `/new`, `/reset` і майбутнього перемикання моделі або обв’язки. Дзеркало -містить підказку користувача, фінальний текст асистента й полегшені записи -міркувань або плану Codex, коли app-server їх видає. Наразі OpenClaw лише -записує сигнали початку й завершення нативної Compaction. Він ще не надає -людинозрозумілий підсумок Compaction або придатний для аудиту список записів, які Codex -зберіг після Compaction. +Керування чергою активного запуску відображається на `turn/steer` app-server Codex. Зі стандартним `messages.queue.mode: "steer"` OpenClaw групує поставлені в чергу повідомлення чату протягом налаштованого вікна тиші та надсилає їх як один запит `turn/steer` у порядку надходження. Застарілий режим `queue` надсилає окремі запити `turn/steer`. Перегляд Codex і ручні ходи Compaction можуть відхиляти керування в межах того самого ходу; у такому разі OpenClaw використовує чергу подальших дій, коли вибраний режим дозволяє резервний варіант. Див. [Черга керування](/uk/concepts/queue-steering). -Оскільки Codex володіє канонічним нативним потоком, `tool_result_persist` наразі не -перезаписує Codex-нативні записи результатів інструментів. Він застосовується лише тоді, коли -OpenClaw записує результат інструмента транскрипта сеансу, що належить OpenClaw. +Коли вибрана модель використовує обв’язку Codex, нативна Compaction потоку делегується app-server Codex. OpenClaw зберігає дзеркало транскрипту для історії каналів, пошуку, `/new`, `/reset` і майбутнього перемикання моделі або обв’язки. Дзеркало містить запит користувача, фінальний текст асистента та легкі записи міркувань або плану Codex, коли app-server їх видає. Наразі OpenClaw записує лише сигнали початку та завершення нативної Compaction. Він поки не надає людиночитного підсумку Compaction або придатного для аудиту списку записів, які Codex зберіг після Compaction. -Генерація медіа не потребує PI. Зображення, відео, музика, PDF, TTS і розуміння медіа -надалі використовують відповідні налаштування провайдера/моделі, як-от -`agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` і -`messages.tts`. +Оскільки Codex володіє канонічним нативним потоком, `tool_result_persist` наразі не переписує нативні для Codex записи результатів інструментів. Він застосовується лише тоді, коли OpenClaw записує результат інструмента транскрипту сесії, що належить OpenClaw. + +Генерація медіа не потребує PI. Зображення, відео, музика, PDF, TTS і розуміння медіа й надалі використовують відповідні налаштування провайдера/моделі, як-от `agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` і `messages.tts`. ## Усунення несправностей -**Codex не з’являється як звичайний провайдер `/model`:** це очікувано для -нових конфігурацій. Виберіть модель `openai/gpt-*` з -`agentRuntime.id: "codex"` (або застаріле посилання `codex/*`), увімкніть -`plugins.entries.codex.enabled` і перевірте, чи `plugins.allow` не виключає -`codex`. +**Codex не відображається як звичайний провайдер `/model`:** це очікувано для нових конфігурацій. Виберіть модель `openai/gpt-*` з `agentRuntime.id: "codex"` (або застаріле посилання `codex/*`), увімкніть `plugins.entries.codex.enabled` і перевірте, чи `plugins.allow` не виключає `codex`. -**OpenClaw використовує PI замість Codex:** `agentRuntime.id: "auto"` все ще може використовувати PI як -сумісний бекенд, коли жодна обв’язка Codex не приймає виконання. Установіть -`agentRuntime.id: "codex"`, щоб примусово вибрати Codex під час тестування. Примусово -заданий runtime Codex тепер завершується помилкою замість повернення до PI, якщо ви -явно не встановили `agentRuntime.fallback: "pi"`. Після вибору Codex app-server -його помилки передаються напряму без додаткової конфігурації fallback. +**OpenClaw використовує PI замість Codex:** `agentRuntime.id: "auto"` все ще може використовувати PI як сумісний бекенд, коли жодна обв’язка Codex не бере запуск на себе. Установіть `agentRuntime.id: "codex"`, щоб примусово вибрати Codex під час тестування. Примусовий runtime Codex тепер завершується помилкою замість переходу на PI, якщо ви явно не встановите `agentRuntime.fallback: "pi"`. Після вибору app-server Codex його збої відображаються напряму без додаткової конфігурації резервного варіанта. -**app-server відхилено:** оновіть Codex, щоб handshake app-server -повідомляв версію `0.125.0` або новішу. Пререлізи тієї самої версії або версії із суфіксом збірки, -як-от `0.125.0-alpha.2` чи `0.125.0+custom`, відхиляються, оскільки стабільний -мінімальний рівень протоколу `0.125.0` є тим, що тестує OpenClaw. +**app-server відхиляється:** оновіть Codex, щоб рукостискання app-server повідомляло версію `0.125.0` або новішу. Передрелізи тієї самої версії або версії із суфіксом збірки, як-от `0.125.0-alpha.2` чи `0.125.0+custom`, відхиляються, тому що OpenClaw тестує саме стабільний мінімальний рівень протоколу `0.125.0`. -**Виявлення моделей повільне:** зменште `plugins.entries.codex.config.discovery.timeoutMs` -або вимкніть виявлення. +**Виявлення моделей повільне:** зменште `plugins.entries.codex.config.discovery.timeoutMs` або вимкніть виявлення. -**Транспорт WebSocket одразу дає збій:** перевірте `appServer.url`, `authToken` -і те, що віддалений app-server підтримує ту саму версію протоколу Codex app-server. +**Транспорт WebSocket одразу завершується помилкою:** перевірте `appServer.url`, `authToken` і те, що віддалений app-server використовує ту саму версію протоколу app-server Codex. -**Модель не Codex використовує PI:** це очікувано, якщо ви не примусили -`agentRuntime.id: "codex"` для цього агента або не вибрали застаріле посилання -`codex/*`. Звичайні `openai/gpt-*` та інші посилання провайдерів залишаються на своєму нормальному -шляху провайдера в режимі `auto`. Якщо ви примусово задаєте `agentRuntime.id: "codex"`, кожен вбудований -хід для цього агента має бути підтримуваною Codex моделлю OpenAI. +**Модель не Codex використовує PI:** це очікувано, якщо ви не примусили `agentRuntime.id: "codex"` для цього агента або не вибрали застаріле посилання `codex/*`. Звичайні `openai/gpt-*` та інші посилання провайдерів залишаються на своєму нормальному шляху провайдера в режимі `auto`. Якщо ви примусово встановите `agentRuntime.id: "codex"`, кожен вбудований хід для цього агента має бути підтримуваною Codex моделлю OpenAI. -**Computer Use встановлено, але інструменти не запускаються:** перевірте -`/codex computer-use status` з нового сеансу. Якщо інструмент повідомляє -`Native hook relay unavailable`, використайте `/new` або `/reset`; якщо проблема зберігається, перезапустіть -gateway, щоб очистити застарілі реєстрації нативних хуків. Якщо `computer-use.list_apps` -вичерпує час очікування, перезапустіть Codex Computer Use або Codex Desktop і повторіть спробу. +**Computer Use встановлено, але інструменти не запускаються:** перевірте `/codex computer-use status` із нової сесії. Якщо інструмент повідомляє `Native hook relay unavailable`, використайте `/new` або `/reset`; якщо проблема не зникає, перезапустіть Gateway, щоб очистити застарілі реєстрації нативних хуків. Якщо `computer-use.list_apps` завершується за тайм-аутом, перезапустіть Codex Computer Use або Codex Desktop і повторіть спробу. ## Пов’язане -- [Плагіни обв’язки агента](/uk/plugins/sdk-agent-harness) -- [Runtime агента](/uk/concepts/agent-runtimes) +- [Plugin-и обв’язки агентів](/uk/plugins/sdk-agent-harness) +- [Runtime-и агентів](/uk/concepts/agent-runtimes) - [Провайдери моделей](/uk/concepts/model-providers) - [Провайдер OpenAI](/uk/providers/openai) - [Статус](/uk/cli/status) diff --git a/docs/uk/tools/slash-commands.md b/docs/uk/tools/slash-commands.md index 0fbf972e4..bca11ae86 100644 --- a/docs/uk/tools/slash-commands.md +++ b/docs/uk/tools/slash-commands.md @@ -1,24 +1,24 @@ --- read_when: - - Використання або налаштування команд чату + - Використання або налаштування чат-команд - Налагодження маршрутизації команд або дозволів sidebarTitle: Slash commands -summary: 'Слеш-команди: текстові й нативні, конфігурація та підтримувані команди' -title: Команди зі скісною рискою +summary: 'Слеш-команди: текстові та нативні, конфігурація та підтримувані команди' +title: Слеш-команди x-i18n: - generated_at: "2026-04-29T21:53:01Z" + generated_at: "2026-04-30T00:29:40Z" model: gpt-5.5 provider: openai - source_hash: 58b9a4bf0106df4d8397737976ddd4df665d80709892b686d71978d8a3bafae0 + source_hash: d87471982fd03fb35bcb44ae62c9f9e40ec38ad17059c88a1e990194a296fbbd source_path: tools/slash-commands.md workflow: 16 --- -Команди обробляє Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда чату bash лише для хоста використовує `! ` (з `/bash ` як псевдонімом). +Commands обробляє Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! ` (із `/bash ` як псевдонімом). -Коли розмову або гілку прив'язано до сесії ACP, звичайний подальший текст спрямовується до цього ACP harness. Команди керування Gateway усе одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` плюс `/unfocus` залишаються локальними щоразу, коли для поверхні увімкнено обробку команд. +Коли розмова або гілка прив’язана до сесії ACP, звичайний текст подальших відповідей спрямовується до цього ACP harness. Команди керування Gateway усе одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` і `/unfocus` залишаються локальними щоразу, коли для поверхні ввімкнено обробку команд. -Є дві пов'язані системи: +Є дві пов’язані системи: @@ -27,14 +27,14 @@ x-i18n: `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - - Директиви вилучаються з повідомлення до того, як модель його побачить. - - У звичайних повідомленнях чату (не лише з директивами) вони вважаються "вбудованими підказками" і **не** зберігають налаштування сесії. + - Директиви вилучаються з повідомлення до того, як його побачить модель. + - У звичайних повідомленнях чату (не лише з директивами) вони трактуються як "inline hints" і **не** зберігають налаштування сесії. - У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сесії й відповідають підтвердженням. - - Директиви застосовуються лише для **авторизованих відправників**. Якщо задано `commands.allowFrom`, використовується тільки цей список дозволених; інакше авторизація береться зі списків дозволених/сполучення каналу плюс `commands.useAccessGroups`. Неавторизовані відправники бачать директиви як звичайний текст. + - Директиви застосовуються тільки для **авторизованих відправників**. Якщо задано `commands.allowFrom`, використовується тільки цей список дозволених; інакше авторизація походить зі списків дозволених каналу/спарювання плюс `commands.useAccessGroups`. Неавторизовані відправники бачать директиви як звичайний текст. - Лише відправники зі списку дозволених/авторизовані відправники: `/help`, `/commands`, `/status`, `/whoami` (`/id`). + Лише відправники зі списку дозволених/авторизовані: `/help`, `/commands`, `/status`, `/whoami` (`/id`). Вони виконуються негайно, вилучаються до того, як модель побачить повідомлення, а решта тексту продовжує проходити звичайним потоком. @@ -69,100 +69,100 @@ x-i18n: ``` - Увімкнення розбору `/...` у повідомленнях чату. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення на `false`. + Вмикає розбір `/...` у повідомленнях чату. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення в `false`. - Реєструє нативні команди. Автоматично: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash-команди); ігнорується для провайдерів без нативної підтримки. Установіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Командами Slack керують у застосунку Slack, і вони не видаляються автоматично. + Реєструє нативні команди. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки. Встановіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично. - Реєструє команди **skill** нативно, коли це підтримується. Автоматично: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення slash-команди для кожного skill). Установіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`). + Реєструє команди **skill** нативно, коли це підтримується. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створити slash command для кожного skill). Встановіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`). - Увімкнення `! ` для запуску команд оболонки хоста (`/bash ` є псевдонімом; потребує списків дозволених `tools.elevated`). + Вмикає `! ` для запуску команд оболонки хоста (`/bash ` є псевдонімом; потребує списків дозволених `tools.elevated`). Керує тим, як довго bash чекає перед перемиканням у фоновий режим (`0` одразу переводить у фон). - Увімкнення `/config` (читає/записує `openclaw.json`). + Вмикає `/config` (читає/записує `openclaw.json`). - Увімкнення `/mcp` (читає/записує керовану OpenClaw конфігурацію MCP у `mcp.servers`). + Вмикає `/mcp` (читає/записує керовану OpenClaw конфігурацію MCP у `mcp.servers`). - Увімкнення `/plugins` (виявлення/стан плагінів плюс елементи керування встановленням і ввімкненням/вимкненням). + Вмикає `/plugins` (виявлення/статус Plugin, а також елементи керування встановленням і ввімкненням/вимкненням). - Увімкнення `/debug` (перевизначення лише під час виконання). + Вмикає `/debug` (перевизначення лише під час виконання). - Увімкнення `/restart` плюс дії інструментів перезапуску Gateway. + Вмикає `/restart` плюс дії інструментів перезапуску gateway. - Задає явний список дозволених власників для поверхонь команд/інструментів лише для власника. Це обліковий запис оператора-людини, який може схвалювати небезпечні дії та запускати команди, як-от `/diagnostics`, `/export-trajectory` і `/config`. Він відокремлений від `commands.allowFrom` і від доступу через сполучення DM. + Задає явний список дозволених власників для командних/інструментальних поверхонь лише для власника. Це обліковий запис оператора-людини, який може схвалювати небезпечні дії та запускати команди на кшталт `/diagnostics`, `/export-trajectory` і `/config`. Він окремий від `commands.allowFrom` і від доступу через спарювання DM. - Для окремого каналу: змушує команди лише для власника вимагати **ідентичність власника** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з розпізнаним кандидатом у власники (наприклад, записом у `commands.ownerAllowFrom` або нативними метаданими власника провайдера), або мати внутрішню область `operator.admin` на внутрішньому каналі повідомлень. Запис із wildcard у `allowFrom` каналу або порожній/нерозпізнаний список кандидатів у власники **не** є достатнім — команди лише для власника на цьому каналі відмовляють за замовчуванням. Залиште це вимкненим, якщо хочете, щоб команди лише для власника обмежувалися тільки `ownerAllowFrom` і стандартними списками дозволених команд. + Для каналу: змушує команди лише для власника вимагати **ідентичність власника** для запуску на цій поверхні. Коли `true`, відправник має або відповідати розпізнаному кандидату-власнику (наприклад, запису в `commands.ownerAllowFrom` чи нативним метаданим власника від провайдера), або мати внутрішній scope `operator.admin` у внутрішньому каналі повідомлень. Запис із wildcard у `allowFrom` каналу або порожній/нерозпізнаний список кандидатів-власників **не** є достатнім — команди лише для власника на цьому каналі завершуються закрито. Залиште це вимкненим, якщо хочете, щоб команди лише для власника обмежувалися тільки `ownerAllowFrom` і стандартними списками дозволених команд. Керує тим, як ідентифікатори власників відображаються в системному prompt. - Необов'язково задає секрет HMAC, який використовується, коли `commands.ownerDisplay="hash"`. + Необов’язково задає секрет HMAC, що використовується, коли `commands.ownerDisplay="hash"`. - Список дозволених для авторизації команд за окремими провайдерами. Коли налаштовано, це єдине джерело авторизації для команд і директив (списки дозволених/сполучення каналу та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` як глобальне значення за замовчуванням; ключі, специфічні для провайдера, перевизначають його. + Список дозволених для авторизації команд за провайдерами. Коли налаштовано, це єдине джерело авторизації для команд і директив (списки дозволених каналу/спарювання та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` для глобального стандартного значення; ключі конкретних провайдерів його перевизначають. - Забезпечує застосування списків дозволених/політик для команд, коли `commands.allowFrom` не задано. + Застосовує списки дозволених/політики для команд, коли `commands.allowFrom` не задано. ## Список команд Поточне джерело істини: -- вбудовані core-команди надходять із `src/auto-reply/commands-registry.shared.ts` -- згенеровані dock-команди надходять із `src/auto-reply/commands-registry.data.ts` -- команди плагінів надходять із викликів `registerCommand()` плагіна -- фактична доступність на вашому gateway усе одно залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених плагінів +- вбудовані core-команди походять із `src/auto-reply/commands-registry.shared.ts` +- згенеровані dock-команди походять із `src/auto-reply/commands-registry.data.ts` +- команди Plugin походять із викликів Plugin `registerCommand()` +- фактична доступність на вашому gateway усе ще залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins ### Вбудовані core-команди - - `/new [model]` запускає нову сесію; `/reset` є псевдонімом скидання. - - `/reset soft [message]` зберігає поточний transcript, відкидає повторно використані ідентифікатори сесій backend CLI та повторно запускає завантаження startup/system-prompt на місці. + - `/new [model]` запускає нову сесію; `/reset` є псевдонімом reset. + - `/reset soft [message]` зберігає поточну стенограму, відкидає повторно використані ідентифікатори сесій бекенду CLI та повторно запускає завантаження старту/системного prompt на місці. - `/compact [instructions]` ущільнює контекст сесії. Див. [Compaction](/uk/concepts/compaction). - `/stop` перериває поточний запуск. - - `/session idle ` і `/session max-age ` керують завершенням прив'язки гілки. + - `/session idle ` і `/session max-age ` керують строком дії прив’язки гілки. - `/export-session [path]` експортує поточну сесію в HTML. Псевдонім: `/export`. - - `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [пакет trajectory](/uk/tools/trajectory) для поточної сесії. Використовуйте це, коли вам потрібна часова шкала prompt, інструментів і transcript для однієї сесії OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються власнику приватно. Псевдонім: `/trajectory`. + - `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [пакет траєкторії](/uk/tools/trajectory) для поточної сесії. Використовуйте це, коли вам потрібна хронологія prompt, інструментів і стенограми для однієї сесії OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються власнику приватно. Псевдонім: `/trajectory`. - - `/think ` задає рівень мислення. Опції надходять із профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а власні рівні, як-от `xhigh`, `adaptive`, `max` або бінарний `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`. + - `/think ` задає рівень мислення. Варіанти походять із профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а власні рівні, як-от `xhigh`, `adaptive`, `max`, або бінарний `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`. - `/verbose on|off|full` перемикає докладний вивід. Псевдонім: `/v`. - - `/trace on|off` перемикає вивід трасування плагіна для поточної сесії. + - `/trace on|off` перемикає trace-вивід Plugin для поточної сесії. - `/fast [status|on|off]` показує або задає швидкий режим. - `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`. - - `/elevated [on|off|ask|full]` перемикає elevated-режим. Псевдонім: `/elev`. - - `/exec host= security= ask= node=` показує або задає типові параметри exec. + - `/elevated [on|off|ask|full]` перемикає підвищений режим. Псевдонім: `/elev`. + - `/exec host= security= ask= node=` показує або задає стандартні параметри exec. - `/model [name|#|status]` показує або задає модель. - - `/models [provider] [page] [limit=|size=|all]` перелічує налаштованих/доступних за авторизацією провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний каталог цього провайдера. - - `/queue ` керує поведінкою черги (`steer`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс опціями на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сесії. Див. [Черга команд](/uk/concepts/queue). + - `/models [provider] [page] [limit=|size=|all]` перелічує налаштованих/доступних за авторизацією провайдерів або моделі для провайдера; додайте `all`, щоб переглядати повний каталог цього провайдера. + - `/queue ` керує поведінкою черги (`steer`, застаріле `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс параметри на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сесії. Див. [Черга команд](/uk/concepts/queue) і [Черга скеровування](/uk/concepts/queue-steering). - - - `/help` показує короткий довідковий підсумок. + + - `/help` показує короткий підсумок довідки. - `/commands` показує згенерований каталог команд. - - `/tools [compact|verbose]` показує, що поточний агент може використовувати прямо зараз. - - `/status` показує стан виконання/runtime, зокрема мітки `Execution`/`Runtime` і використання/квоту провайдера, коли доступно. - - `/diagnostics [note]` — це потік звіту підтримки лише для власника для помилок Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте діагностику правилом allow-all. Після схвалення він надсилає придатний для вставлення звіт із локальним шляхом пакета, підсумком manifest, нотатками про приватність і відповідними ідентифікаторами сесій. У групових чатах prompt схвалення та звіт надсилаються власнику приватно. Коли активна сесія використовує OpenAI Codex harness, те саме схвалення також надсилає відповідний feedback Codex на сервери OpenAI, а завершена відповідь перелічує ідентифікатори сесій OpenClaw, ідентифікатори гілок Codex і команди `codex resume `. Див. [Експорт діагностики](/uk/gateway/diagnostics). - - `/crestodian ` запускає помічник налаштування та ремонту Crestodian із DM власника. - - `/tasks` перелічує активні/недавні фонові завдання для поточної сесії. + - `/tools [compact|verbose]` показує, що поточний агент може використовувати зараз. + - `/status` показує статус виконання/середовища виконання, зокрема мітки `Execution`/`Runtime` і використання/квоту провайдера, якщо доступно. + - `/diagnostics [note]` — це потік звіту підтримки лише для власника для помилок Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте діагностику правилом allow-all. Після схвалення він надсилає придатний для вставлення звіт із локальним шляхом пакета, підсумком manifest, нотатками щодо приватності та відповідними ідентифікаторами сесій. У групових чатах prompt схвалення та звіт надсилаються власнику приватно. Коли активна сесія використовує OpenAI Codex harness, те саме схвалення також надсилає відповідний відгук Codex на сервери OpenAI, а завершена відповідь перелічує ідентифікатори сесій OpenClaw, ідентифікатори гілок Codex і команди `codex resume `. Див. [Експорт діагностики](/uk/gateway/diagnostics). + - `/crestodian ` запускає помічник налаштування та виправлення Crestodian із DM власника. + - `/tasks` перелічує активні/нещодавні фонові завдання для поточної сесії. - `/context [list|detail|json]` пояснює, як збирається контекст. - `/whoami` показує ваш ідентифікатор відправника. Псевдонім: `/id`. - - `/usage off|tokens|full|cost` керує футером використання для кожної відповіді або друкує локальний підсумок вартості. + - `/usage off|tokens|full|cost` керує футером використання для кожної відповіді або виводить локальний підсумок вартості. @@ -174,62 +174,62 @@ x-i18n: - `/subagents list|kill|log|info|send|steer|spawn` керує запусками субагентів для поточної сесії. - - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сесіями ACP і runtime-опціями. - - `/focus ` прив'язує поточну гілку Discord або тему/розмову Telegram до цільової сесії. - - `/unfocus` видаляє поточну прив'язку. - - `/agents` перелічує прив'язаних до гілки агентів для поточної сесії. + - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сесіями ACP і параметрами середовища виконання. + - `/focus ` прив’язує поточну гілку Discord або тему/розмову Telegram до цілі сесії. + - `/unfocus` видаляє поточну прив’язку. + - `/agents` перелічує агентів, прив’язаних до гілки, для поточної сесії. - `/kill ` перериває одного або всіх запущених субагентів. - - `/steer ` надсилає керування запущеному субагенту. Псевдонім: `/tell`. + - `/steer ` надсилає скеровування запущеному субагенту. Псевдонім: `/tell`. - + - `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потребує `commands.config: true`. - `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`. - - `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` є псевдонімом. Записи лише для власника. Потребує `commands.plugins: true`. - - `/debug show|set|unset|reset` керує конфігураційними перевизначеннями лише для runtime. Лише для власника. Потребує `commands.debug: true`. + - `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан Plugin. `/plugin` є псевдонімом. Запис лише для власника. Потребує `commands.plugins: true`. + - `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише для часу виконання. Лише для власника. Потребує `commands.debug: true`. - `/restart` перезапускає OpenClaw, коли ввімкнено. Типово: ввімкнено; задайте `commands.restart: false`, щоб вимкнути. - `/send on|off|inherit` задає політику надсилання. Лише для власника. - + - `/tts on|off|status|chat|latest|provider|limit|summary|audio|help` керує TTS. Див. [TTS](/uk/tools/tts). - `/activation mention|always` задає режим активації групи. - - `/bash ` запускає команду shell на хості. Лише текст. Псевдонім: `! `. Потребує `commands.bash: true` плюс списків дозволеного `tools.elevated`. + - `/bash ` запускає команду оболонки хоста. Лише текст. Псевдонім: `! `. Потребує `commands.bash: true` плюс списки дозволів `tools.elevated`. - `!poll [sessionId]` перевіряє фонове завдання bash. - `!stop [sessionId]` зупиняє фонове завдання bash. -### Згенеровані команди докування +### Згенеровані команди стикування -Команди докування перемикають маршрут відповіді поточної сесії на інший пов’язаний -канал. Див. [Докування каналів](/uk/concepts/channel-docking) для налаштування, -прикладів і усунення несправностей. +Команди стикування перемикають маршрут відповіді поточного сеансу на інший пов'язаний +канал. Див. [Стикування каналів](/uk/concepts/channel-docking), щоб налаштувати, +переглянути приклади та усунути неполадки. -Команди докування генеруються з plugin каналів із підтримкою нативних команд. Поточний вбудований набір: +Команди стикування генеруються з каналових Plugin із підтримкою нативних команд. Поточний вбудований набір: - `/dock-discord` (псевдонім: `/dock_discord`) - `/dock-mattermost` (псевдонім: `/dock_mattermost`) - `/dock-slack` (псевдонім: `/dock_slack`) - `/dock-telegram` (псевдонім: `/dock_telegram`) -Використовуйте команди докування з прямого чату, щоб перемкнути маршрут відповіді поточної сесії на інший пов’язаний канал. Агент зберігає той самий контекст сесії, але майбутні відповіді для цієї сесії доставляються вибраному peer каналу. +Використовуйте команди стикування з прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов'язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному учаснику каналу. -Команди докування потребують `session.identityLinks`. Відправник-джерело й цільовий peer мають бути в одній групі ідентичності, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активній сесії. Якщо відправник не пов’язаний із peer Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату. +Команди стикування потребують `session.identityLinks`. Відправник-джерело та цільовий учасник мають бути в тій самій групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправник не пов'язаний з учасником Discord, команда відповідає підказкою щодо налаштування замість переходу до звичайного чату. -Докування змінює лише маршрут активної сесії. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволеного каналів і не переносить історію transcript в іншу сесію. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду докування, щоб знову перемкнути маршрут. +Стикування змінює лише маршрут активного сеансу. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналів і не переносить історію стенограми до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду стикування, щоб знову перемкнути маршрут. -### Команди вбудованих plugin +### Команди вбудованих Plugin -Вбудовані plugins можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії: +Вбудовані Plugin можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії: -- `/dreaming [on|off|status|help]` перемикає memory dreaming. Див. [Dreaming](/uk/concepts/dreaming). +- `/dreaming [on|off|status|help]` перемикає Dreaming пам'яті. Див. [Dreaming](/uk/concepts/dreaming). - `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком сполучення/налаштування пристрою. Див. [Сполучення](/uk/channels/pairing). -- `/phone status|arm [duration]|disarm` тимчасово активує високоризикові команди телефонного вузла. -- `/voice status|list [limit]|set ` керує конфігурацією голосу Talk. У Discord нативна назва команди — `/talkvoice`. -- `/card ...` надсилає пресети LINE rich card. Див. [LINE](/uk/channels/line). -- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє й керує вбудованою обв’язкою app-server Codex. Див. [Обв’язка Codex](/uk/plugins/codex-harness). +- `/phone status|arm [duration]|disarm` тимчасово активує високоризикові команди вузла телефона. +- `/voice status|list [limit]|set ` керує конфігурацією голосу Talk. У Discord назва нативної команди — `/talkvoice`. +- `/card ...` надсилає пресети розширених карток LINE. Див. [LINE](/uk/channels/line). +- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє та керує вбудованим серверним каркасом застосунку Codex. Див. [Каркас Codex](/uk/plugins/codex-harness). - Команди лише для QQBot: - `/bot-ping` - `/bot-version` @@ -237,93 +237,93 @@ x-i18n: - `/bot-upgrade` - `/bot-logs` -### Динамічні команди skills +### Динамічні команди Skills -Викликані користувачем skills також відкриваються як slash-команди: +Skills, які може викликати користувач, також доступні як slash-команди: -- `/skill [input]` завжди працює як загальна точка входу. -- skills також можуть з’являтися як прямі команди на кшталт `/prose`, коли skill/plugin реєструє їх. -- нативна реєстрація skill-команд керується `commands.nativeSkills` і `channels..commands.nativeSkills`. +- `/skill [input]` завжди працює як універсальна точка входу. +- Skills також можуть з'являтися як прямі команди, наприклад `/prose`, коли Skill/Plugin реєструє їх. +- реєстрація нативних команд Skills керується `commands.nativeSkills` і `channels..commands.nativeSkills`. - - - Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). - - `/new ` приймає псевдонім моделі, `provider/model` або назву provider (нечіткий збіг); якщо збігу немає, текст розглядається як тіло повідомлення. - - Для повного розподілу використання provider використовуйте `openclaw status --usage`. - - `/allowlist add|remove` потребує `commands.config=true` і враховує channel `configWrites`. - - У каналах із кількома обліковими записами `/allowlist --account ` для конфігурації та `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. - - `/usage` керує footer використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сесій OpenClaw. - - `/restart` типово ввімкнено; задайте `commands.restart: false`, щоб вимкнути. - - `/plugins install ` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:`. - - `/plugins enable|disable` оновлює конфігурацію plugin і може попросити перезапуск. + + - Команди приймають необов'язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). + - `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст обробляється як тіло повідомлення. + - Для повної розбивки використання провайдера використовуйте `openclaw status --usage`. + - `/allowlist add|remove` потребує `commands.config=true` і дотримується каналового `configWrites`. + - У багатооблікових каналах `/allowlist --account `, націлений на конфігурацію, і `/config set channels..accounts....` також дотримуються `configWrites` цільового облікового запису. + - `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сеансів OpenClaw. + - `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути. + - `/plugins install ` приймає ті самі специфікації Plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:`. + - `/plugins enable|disable` оновлює конфігурацію Plugin і може попросити перезапуск. - - Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступно як текст). `join` потребує guild і вибраного voice/stage channel. Потребує `channels.discord.voice` і нативних команд. - - Команди прив’язування thread Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив’язок thread (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). - - Довідник команд ACP і поведінка runtime: [Агенти ACP](/uk/tools/acp-agents). + - Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступна як текст). `join` потребує гільдії та вибраного голосового/сценічного каналу. Потребує `channels.discord.voice` і нативних команд. + - Команди прив'язки потоків Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнення ефективних прив'язок потоків (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). + - Довідник команд ACP і поведінка під час виконання: [агенти ACP](/uk/tools/acp-agents). - - `/verbose` призначено для налагодження й додаткової видимості; тримайте його **вимкненим** під час звичайного використання. - - `/trace` вужчий за `/verbose`: він показує лише рядки trace/debug, що належать plugin, і залишає звичайні докладні повідомлення інструментів вимкненими. - - `/fast on|off` зберігає перевизначення сесії. Використовуйте опцію `inherit` в UI Sessions, щоб очистити його й повернутися до типових значень конфігурації. - - `/fast` залежить від provider: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних endpoints Responses, тоді як прямі публічні запити Anthropic, включно з OAuth-автентифікованим трафіком, надісланим до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). - - Підсумки збоїв інструментів усе ще показуються, коли доречно, але детальний текст збою включається лише коли `/verbose` має значення `on` або `full`. - - `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning, вивід інструментів або діагностику plugin, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах. + - `/verbose` призначено для налагодження та додаткової видимості; тримайте його **вимкненим** за звичайного використання. + - `/trace` вужчий за `/verbose`: він показує лише рядки трасування/налагодження, що належать Plugin, і залишає звичайний verbose-шум інструментів вимкненим. + - `/fast on|off` зберігає перевизначення сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions, щоб очистити його й повернутися до типових значень конфігурації. + - `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних Responses-ендпойнтах, тоді як прямі публічні запити Anthropic, зокрема OAuth-автентифікований трафік, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). + - Підсумки збоїв інструментів усе ще показуються, коли доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`. + - `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє міркування, вивід інструментів або діагностику Plugin, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах. - - `/model` негайно зберігає нову модель сесії. - - Якщо агент неактивний, наступний запуск одразу використовує її. - - Якщо запуск уже активний, OpenClaw позначає live-перемикання як очікуване й перезапускається в нову модель лише в чистій точці повтору. - - Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до наступної можливості повтору або наступного ходу користувача. - - У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від rescue mode каналу повідомлень і не надає віддалених повноважень конфігурації. + - `/model` негайно зберігає нову модель сеансу. + - Якщо агент бездіяльний, наступний запуск одразу використовує її. + - Якщо запуск уже активний, OpenClaw позначає перемикання наживо як очікуване та перезапускає в нову модель лише в чистій точці повторної спроби. + - Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або наступного ходу користувача. + - У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від режиму порятунку каналу повідомлень і не надає віддалених повноважень конфігурації. - - **Швидкий шлях:** повідомлення лише з командою від відправників зі списку дозволеного обробляються негайно (обхід черги + моделі). - - **Group mention gating:** повідомлення лише з командою від відправників зі списку дозволеного обходять вимоги згадування. - - **Вбудовані скорочення (лише відправники зі списку дозволеного):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються перед тим, як модель побачить решту тексту. - - Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує проходити звичайним потоком. + - **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволів обробляються негайно (обхід черги + моделі). + - **Ворота згадування в групі:** повідомлення лише з командами від відправників зі списку дозволів обходять вимоги згадування. + - **Вбудовані скорочення (лише відправники зі списку дозволів):** певні команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту. + - Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує звичайний потік. - Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`). - - Неавторизовані повідомлення лише з командою мовчки ігноруються, а вбудовані токени `/...` розглядаються як звичайний текст. + - Неавторизовані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` обробляються як звичайний текст. - - - **Skill-команди:** skills `user-invocable` відкриваються як slash-команди. Назви очищаються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`). - - `/skill [input]` запускає skill за назвою (корисно, коли обмеження нативних команд перешкоджають окремим командам для кожного skill). - - Типово skill-команди пересилаються моделі як звичайний запит. - - Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб маршрутизувати команду безпосередньо до інструмента (детерміновано, без моделі). - - Приклад: `/prose` (OpenProse plugin) — див. [OpenProse](/uk/prose). - - **Аргументи нативних команд:** Discord використовує autocomplete для динамічних опцій (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви пропускаєте аргумент. Динамічні варіанти розв’язуються відносно цільової моделі сесії, тому специфічні для моделі опції, такі як рівні `/think`, відповідають перевизначенню `/model` цієї сесії. + + - **Команди Skills:** Skills `user-invocable` доступні як slash-команди. Назви очищуються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`). + - `/skill [input]` запускає Skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожного Skill). + - Типово команди Skills пересилаються до моделі як звичайний запит. + - Skills можуть необов'язково оголошувати `command-dispatch: tool`, щоб маршрутизувати команду безпосередньо до інструмента (детерміновано, без моделі). + - Приклад: `/prose` (Plugin OpenProse) — див. [OpenProse](/uk/prose). + - **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних опцій (і меню кнопок, коли ви пропускаєте обов'язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви пропускаєте аргумент. Динамічні варіанти визначаються відносно цільової моделі сеансу, тому специфічні для моделі опції, як-от рівні `/think`, відповідають перевизначенню `/model` цього сеансу. ## `/tools` -`/tools` відповідає на питання runtime, а не на питання конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**. +`/tools` відповідає на питання часу виконання, а не на питання конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**. - Типовий `/tools` компактний і оптимізований для швидкого перегляду. - `/tools verbose` додає короткі описи. -- Поверхні нативних команд, які підтримують аргументи, відкривають той самий перемикач режиму як `compact|verbose`. -- Результати прив’язані до сесії, тому зміна агента, каналу, thread, авторизації відправника або моделі може змінити вивід. -- `/tools` включає інструменти, які фактично доступні під час runtime, включно з core tools, підключеними plugin tools та інструментами, що належать каналу. +- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`. +- Результати прив'язані до сеансу, тому зміна агента, каналу, потоку, авторизації відправника або моделі може змінити вивід. +- `/tools` включає інструменти, які фактично доступні під час виконання, зокрема основні інструменти, підключені інструменти Plugin та інструменти, що належать каналу. -Для редагування профілю та перевизначень використовуйте панель Tools у Control UI або поверхні config/catalog, замість того щоб розглядати `/tools` як статичний каталог. +Для редагування профілю та перевизначень використовуйте панель Tools в Control UI або поверхні конфігурації/каталогу замість того, щоб трактувати `/tools` як статичний каталог. ## Поверхні використання (що де показується) -- **Використання/квота provider** (приклад: "Claude 80% left") показується в `/status` для поточного provider моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна provider до `% left`; для MiniMax поля відсотка лише залишку інвертуються перед відображенням, а відповіді `model_remains` віддають перевагу запису chat-model плюс позначці плану з тегом моделі. -- **Рядки token/cache** у `/status` можуть повертатися до останнього запису використання transcript, коли live-знімок сесії розріджений. Наявні ненульові live-значення все ще мають пріоритет, а fallback transcript також може відновити мітку активної runtime-моделі плюс більший prompt-орієнтований підсумок, коли збережені підсумки відсутні або менші. -- **Виконання проти runtime:** `/status` повідомляє `Execution` для ефективного sandbox path і `Runtime` для того, хто фактично запускає сесію: `OpenClaw Pi Default`, `OpenAI Codex`, backend CLI або backend ACP. -- **Tokens/cost для кожної відповіді** керується `/usage off|tokens|full` (додається до звичайних відповідей). -- `/model status` стосується **models/auth/endpoints**, а не використання. +- **Використання/квота провайдера** (приклад: "Claude 80% left") показується в `/status` для поточного провайдера моделі, коли відстеження використання ввімкнено. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax поля відсотка лише залишку інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису чат-моделі плюс позначці плану з тегом моделі. +- **Рядки токенів/кешу** в `/status` можуть відступати до останнього запису використання стенограми, коли знімок сеансу наживо розріджений. Наявні ненульові живі значення все одно мають пріоритет, а резерв зі стенограми також може відновити активну мітку моделі часу виконання плюс більшу суму, орієнтовану на промпт, коли збережені суми відсутні або менші. +- **Виконання проти часу виконання:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сеанс: `OpenClaw Pi Default`, `OpenAI Codex`, CLI-бекенд або ACP-бекенд. +- **Токени/вартість для кожної відповіді** керується `/usage off|tokens|full` (додається до звичайних відповідей). +- `/model status` стосується **моделей/автентифікації/ендпойнтів**, а не використання. ## Вибір моделі (`/model`) -`/model` реалізовано як directive. +`/model` реалізовано як директиву. Приклади: @@ -338,14 +338,14 @@ x-i18n: Примітки: -- `/model` і `/model list` показують компактний нумерований picker (сімейство моделі + доступні provider). -- У Discord `/model` і `/models` відкривають інтерактивний picker із dropdowns provider і model плюс крок Submit. -- `/model <#>` вибирає з цього picker (і, коли можливо, віддає перевагу поточному provider). -- `/model status` показує детальний перегляд, включно зі сконфігурованим endpoint provider (`baseUrl`) і режимом API (`api`), коли доступно. +- `/model` і `/model list` показують компактний нумерований вибірник (родина моделі + доступні провайдери). +- У Discord `/model` і `/models` відкривають інтерактивний вибірник із випадними списками провайдера та моделі плюс крок Submit. +- `/model <#>` вибирає з цього вибірника (і за можливості віддає перевагу поточному провайдеру). +- `/model status` показує докладний перегляд, зокрема налаштований ендпойнт провайдера (`baseUrl`) і режим API (`api`), коли доступно. -## Перевизначення debug +## Перевизначення налагодження -`/debug` дає змогу задавати **лише runtime** перевизначення конфігурації (у пам'яті, не на диску). Лише для власника. Вимкнено за замовчуванням; увімкніть через `commands.debug: true`. +`/debug` дає змогу задавати **лише під час виконання** перевизначення конфігурації (у пам’яті, не на диску). Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.debug: true`. Приклади: @@ -363,7 +363,7 @@ x-i18n: ## Вивід трасування Plugin -`/trace` дає змогу перемикати **обмежені поточною сесією рядки трасування/налагодження Plugin** без увімкнення повного докладного режиму. +`/trace` дає змогу перемикати **обмежені сеансом рядки трасування/налагодження Plugin** без увімкнення повного докладного режиму. Приклади: @@ -375,16 +375,16 @@ x-i18n: Примітки: -- `/trace` без аргументу показує поточний стан трасування сесії. -- `/trace on` вмикає рядки трасування Plugin для поточної сесії. +- `/trace` без аргумента показує поточний стан трасування сеансу. +- `/trace on` вмикає рядки трасування Plugin для поточного сеансу. - `/trace off` знову вимикає їх. -- Рядки трасування Plugin можуть з'являтися в `/status` і як подальше діагностичне повідомлення після звичайної відповіді асистента. -- `/trace` не замінює `/debug`; `/debug` і надалі керує лише runtime перевизначеннями конфігурації. -- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/статусу й надалі належить до `/verbose`. +- Рядки трасування Plugin можуть з’являтися в `/status` і як подальше діагностичне повідомлення після звичайної відповіді асистента. +- `/trace` не замінює `/debug`; `/debug` і далі керує перевизначеннями конфігурації лише під час виконання. +- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/стану й далі належить до `/verbose`. ## Оновлення конфігурації -`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. Вимкнено за замовчуванням; увімкніть через `commands.config: true`. +`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.config: true`. Приклади: @@ -402,7 +402,7 @@ x-i18n: ## Оновлення MCP -`/mcp` записує керовані OpenClaw визначення серверів MCP у `mcp.servers`. Лише для власника. Вимкнено за замовчуванням; увімкніть через `commands.mcp: true`. +`/mcp` записує керовані OpenClaw визначення серверів MCP у `mcp.servers`. Лише для власника. Вимкнено за замовчуванням; увімкніть за допомогою `commands.mcp: true`. Приклади: @@ -414,12 +414,12 @@ x-i18n: ``` -`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в проєктних налаштуваннях, що належать Pi. Runtime-адаптери вирішують, які транспорти фактично можна виконати. +`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в проєктних налаштуваннях, що належать Pi. Адаптери під час виконання вирішують, які транспорти справді можна виконати. ## Оновлення Plugin -`/plugins` дає операторам змогу переглядати виявлені Plugin і перемикати їх увімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. Вимкнено за замовчуванням; увімкніть через `commands.plugins: true`. +`/plugins` дає операторам змогу переглядати виявлені Plugin і перемикати їх увімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. Вимкнено за замовчуванням; увімкніть за допомогою `commands.plugins: true`. Приклади: @@ -432,7 +432,7 @@ x-i18n: ``` -- `/plugins list` і `/plugins show` використовують справжнє виявлення Plugin для поточного робочого простору разом із конфігурацією на диску. +- `/plugins list` і `/plugins show` використовують реальне виявлення Plugin у поточному робочому просторі разом із конфігурацією на диску. - `/plugins enable|disable` оновлює лише конфігурацію Plugin; це не встановлює й не видаляє Plugin. - Після змін увімкнення/вимкнення перезапустіть Gateway, щоб застосувати їх. @@ -441,36 +441,36 @@ x-i18n: ## Примітки щодо поверхонь - - - **Текстові команди** виконуються у звичайній чат-сесії (особисті повідомлення спільно використовують `main`, групи мають власну сесію). - - **Нативні команди** використовують ізольовані сесії: + + - **Текстові команди** виконуються у звичайному сеансі чату (DM мають спільний `main`, групи мають власний сеанс). + - **Нативні команди** використовують ізольовані сеанси: - Discord: `agent::discord:slash:` - Slack: `agent::slack:slash:` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`) - - Telegram: `telegram:slash:` (спрямовує на чат-сесію через `CommandTargetSessionKey`) - - **`/stop`** спрямовується на активну чат-сесію, щоб мати змогу перервати поточний запуск. + - Telegram: `telegram:slash:` (цілиться в сеанс чату через `CommandTargetSessionKey`) + - **`/stop`** цілиться в активний сеанс чату, щоб він міг перервати поточний запуск. - - `channels.slack.slashCommand` і надалі підтримується для однієї команди в стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (з тими самими назвами, що й у `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit. + + `channels.slack.slashCommand` досі підтримується для однієї команди в стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити по одній slash-команді Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit. - Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова команда `/status` і надалі працює в повідомленнях Slack. + Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` досі працює в повідомленнях Slack. ## Побічні запитання BTW -`/btw` — це швидке **побічне запитання** щодо поточної сесії. +`/btw` — це швидке **побічне запитання** про поточний сеанс. На відміну від звичайного чату: -- воно використовує поточну сесію як фоновий контекст, +- воно використовує поточний сеанс як фоновий контекст, - воно виконується як окремий одноразовий виклик **без інструментів**, -- воно не змінює майбутній контекст сесії, -- воно не записується в історію transcript, +- воно не змінює майбутній контекст сеансу, +- воно не записується в історію транскрипта, - воно доставляється як живий побічний результат замість звичайного повідомлення асистента. -Це робить `/btw` корисним, коли потрібне тимчасове уточнення, поки основне завдання продовжується. +Це робить `/btw` корисним, коли вам потрібне тимчасове уточнення, поки основне завдання триває. Приклад: @@ -478,10 +478,10 @@ x-i18n: /btw what are we doing right now? ``` -Див. [Побічні запитання BTW](/uk/tools/btw), щоб дізнатися повну поведінку та подробиці UX клієнта. +Див. [Побічні запитання BTW](/uk/tools/btw), щоб ознайомитися з повною поведінкою та деталями UX клієнта. -## Пов'язане +## Пов’язане -- [Створення skills](/uk/tools/creating-skills) +- [Створення Skills](/uk/tools/creating-skills) - [Skills](/uk/tools/skills) - [Конфігурація Skills](/uk/tools/skills-config)