From 02bdca2309032255ceb34ba48f0a1000de7cdfce Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 24 Apr 2026 18:48:12 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/gateway/config-agents.md | 552 ++++++++++++++++--------------- docs/uk/plugins/codex-harness.md | 344 +++++++++---------- 2 files changed, 451 insertions(+), 445 deletions(-) diff --git a/docs/uk/gateway/config-agents.md b/docs/uk/gateway/config-agents.md index 437e20e80..b8ca0365d 100644 --- a/docs/uk/gateway/config-agents.md +++ b/docs/uk/gateway/config-agents.md @@ -1,28 +1,28 @@ --- read_when: - Налаштування значень агента за замовчуванням (моделі, thinking, робочий простір, Heartbeat, медіа, Skills) - - Налаштування маршрутизації та прив’язок для кількох агентів - - Налаштування поведінки сесій, доставки повідомлень і режиму talk -summary: Значення за замовчуванням для агента, маршрутизація кількох агентів, сесія, повідомлення та конфігурація talk + - Налаштування маршрутизації між кількома агентами та прив’язок + - Налаштування поведінки сесії, доставки повідомлень і режиму talk +summary: Значення агента за замовчуванням, маршрутизація між кількома агентами, сесія, повідомлення та конфігурація talk title: Конфігурація — агенти x-i18n: - generated_at: "2026-04-24T03:44:07Z" + generated_at: "2026-04-24T18:44:26Z" model: gpt-5.4 provider: openai - source_hash: de1587358404808b4a11a92a9392d7cc5bdd2b599773f8a0f7b4331551841991 + source_hash: 85840fbc565a3d7d79a9ccaf20132225aa2a363d7ca6c6964e219b561235d183 source_path: gateway/config-agents.md workflow: 15 --- -Ключі конфігурації на рівні агента в `agents.*`, `multiAgent.*`, `session.*`, -`messages.*` і `talk.*`. Для каналів, інструментів, runtime Gateway та інших -ключів верхнього рівня див. [Configuration reference](/uk/gateway/configuration-reference). +Ключі конфігурації в межах агента під `agents.*`, `multiAgent.*`, `session.*`, +`messages.*` і `talk.*`. Для каналів, інструментів, середовища виконання Gateway та інших +ключів верхнього рівня див. [Довідник із конфігурації](/uk/gateway/configuration-reference). ## Значення агента за замовчуванням ### `agents.defaults.workspace` -Типово: `~/.openclaw/workspace`. +За замовчуванням: `~/.openclaw/workspace`. ```json5 { @@ -32,7 +32,7 @@ x-i18n: ### `agents.defaults.repoRoot` -Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw автоматично визначає його, підіймаючись угору від робочого простору. +Необов’язковий кореневий каталог репозиторію, який показується в рядку Runtime системного запиту. Якщо не вказано, OpenClaw автоматично визначає його, піднімаючись угору від робочого простору. ```json5 { @@ -42,7 +42,7 @@ x-i18n: ### `agents.defaults.skills` -Необов’язковий allowlist Skills за замовчуванням для агентів, які не задають +Необов’язковий типовий список дозволених Skills для агентів, які не задають `agents.list[].skills`. ```json5 @@ -58,15 +58,15 @@ x-i18n: } ``` -- Не вказуйте `agents.defaults.skills`, щоб типово дозволити необмежені Skills. +- Не вказуйте `agents.defaults.skills`, щоб Skills за замовчуванням були без обмежень. - Не вказуйте `agents.list[].skills`, щоб успадкувати значення за замовчуванням. -- Установіть `agents.list[].skills: []`, щоб не було 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,9 +76,9 @@ x-i18n: ### `agents.defaults.contextInjection` -Керує тим, коли bootstrap-файли робочого простору інжектуються в системний prompt. Типово: `"always"`. +Керує тим, коли файли початкового налаштування робочого простору додаються до системного запиту. За замовчуванням: `"always"`. -- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторну інжекцію bootstrap робочого простору, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction все одно перебудовують контекст. +- `"continuation-skip"`: у безпечних ходах продовження (після завершеної відповіді асистента) повторне додавання bootstrap-файлів робочого простору пропускається, що зменшує розмір запиту. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст. ```json5 { @@ -88,7 +88,7 @@ x-i18n: ### `agents.defaults.bootstrapMaxChars` -Максимальна кількість символів на один bootstrap-файл робочого простору до усікання. Типово: `12000`. +Максимальна кількість символів для кожного bootstrap-файлу робочого простору до обрізання. За замовчуванням: `12000`. ```json5 { @@ -98,7 +98,7 @@ x-i18n: ### `agents.defaults.bootstrapTotalMaxChars` -Максимальна загальна кількість символів, що інжектуються з усіх bootstrap-файлів робочого простору. Типово: `60000`. +Максимальна загальна кількість символів, що додаються з усіх bootstrap-файлів робочого простору. За замовчуванням: `60000`. ```json5 { @@ -108,12 +108,12 @@ x-i18n: ### `agents.defaults.bootstrapPromptTruncationWarning` -Керує видимим агенту текстом попередження, коли bootstrap-контекст усічено. -Типово: `"once"`. +Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається. +За замовчуванням: `"once"`. -- `"off"`: ніколи не інжектувати текст попередження в системний prompt. -- `"once"`: інжектувати попередження один раз для кожного унікального сигнатурного усікання (рекомендовано). -- `"always"`: інжектувати попередження під час кожного запуску, коли є усікання. +- `"off"`: ніколи не додавати текст попередження до системного запиту. +- `"once"`: додавати попередження один раз для кожного унікального сигнатурного набору обрізання (рекомендовано). +- `"always"`: додавати попередження при кожному запуску, коли є обрізання. ```json5 { @@ -121,26 +121,26 @@ x-i18n: } ``` -### Карта власності бюджету контексту +### Карта володіння бюджетами контексту -OpenClaw має кілька великих бюджетів prompt/контексту, і вони -навмисно розділені за підсистемами, а не проходять через один загальний -перемикач. +OpenClaw має кілька великих бюджетів запиту/контексту, і вони +навмисно розділені між підсистемами, замість того щоб усі проходили через один +загальний параметр. - `agents.defaults.bootstrapMaxChars` / `agents.defaults.bootstrapTotalMaxChars`: - звичайна інжекція bootstrap робочого простору. + звичайне додавання bootstrap-даних робочого простору. - `agents.defaults.startupContext.*`: - одноразова стартова преамбула для `/new` і `/reset`, включно з недавніми щоденними - файлами `memory/*.md`. + одноразовий стартовий прелюд для `/new` і `/reset`, зокрема нещодавні + файли `memory/*.md` за днями. - `skills.limits.*`: - компактний список Skills, інжектований у системний prompt. + компактний список Skills, що додається до системного запиту. - `agents.defaults.contextLimits.*`: - обмежені runtime-уривки та інжектовані блоки, якими володіє runtime. + обмежені витяги середовища виконання та додані блоки, що належать runtime. - `memory.qmd.limits.*`: - розмір фрагментів і інжекції для індексованого пошуку по пам’яті. + розмір фрагментів індексованого пошуку пам’яті та додавання їх до контексту. -Використовуйте відповідне перевизначення для конкретного агента лише тоді, коли одному агенту потрібен інший +Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший бюджет: - `agents.list[].skillsLimits.maxSkillsPromptChars` @@ -148,7 +148,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `agents.defaults.startupContext` -Керує стартовою преамбулою першого ходу, яка інжектується під час запусків bare `/new` і `/reset`. +Керує стартовим прелюдом першого ходу, який додається під час порожніх запусків `/new` і `/reset`. ```json5 { @@ -186,16 +186,18 @@ OpenClaw має кілька великих бюджетів prompt/контек } ``` -- `memoryGetMaxChars`: типовий ліміт уривка `memory_get` до додавання метаданих - усікання та повідомлення про продовження. -- `memoryGetDefaultLines`: типове вікно рядків для `memory_get`, коли `lines` +- `memoryGetMaxChars`: типовий ліміт витягу `memory_get` перед додаванням метаданих + обрізання та повідомлення про продовження. +- `memoryGetDefaultLines`: типове вікно рядків для `memory_get`, якщо `lines` не вказано. -- `toolResultMaxChars`: поточний ліміт результатів інструментів, який використовується для збережених результатів і відновлення після переповнення. -- `postCompactionMaxChars`: ліміт уривка AGENTS.md, який використовується під час інжекції оновлення після Compaction. +- `toolResultMaxChars`: поточний ліміт результату інструмента, що використовується для збережених результатів і + відновлення після переповнення. +- `postCompactionMaxChars`: ліміт витягу AGENTS.md, який використовується під час додавання + оновлення після Compaction. #### `agents.list[].contextLimits` -Перевизначення на рівні агента для спільних перемикачів `contextLimits`. Невказані поля успадковуються +Перевизначення для окремого агента для спільних параметрів `contextLimits`. Поля, які не вказано, успадковуються з `agents.defaults.contextLimits`. ```json5 @@ -222,7 +224,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `skills.limits.maxSkillsPromptChars` -Глобальний ліміт для компактного списку Skills, інжектованого в системний prompt. Це +Глобальний ліміт для компактного списку Skills, що додається до системного запиту. Це не впливає на читання файлів `SKILL.md` на вимогу. ```json5 @@ -237,7 +239,7 @@ OpenClaw має кілька великих бюджетів prompt/контек #### `agents.list[].skillsLimits.maxSkillsPromptChars` -Перевизначення на рівні агента для бюджету prompt Skills. +Перевизначення для окремого агента для бюджету запиту Skills. ```json5 { @@ -256,11 +258,11 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.imageMaxDimensionPx` -Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень transcript/tool перед викликами провайдера. -Типово: `1200`. +Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень транскрипту/інструментів перед викликами провайдера. +За замовчуванням: `1200`. -Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload запиту для запусків із великою кількістю знімків екрана. -Вищі значення зберігають більше візуальних деталей. +Менші значення зазвичай зменшують використання vision-токенів і розмір тіла запиту для сценаріїв із великою кількістю скриншотів. +Більші значення зберігають більше візуальних деталей. ```json5 { @@ -270,7 +272,7 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.userTimezone` -Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста. +Часовий пояс для контексту системного запиту (не міток часу повідомлень). Якщо не вказано, використовується часовий пояс хоста. ```json5 { @@ -280,7 +282,7 @@ OpenClaw має кілька великих бюджетів prompt/контек ### `agents.defaults.timeFormat` -Формат часу в системному prompt. Типово: `auto` (налаштування ОС). +Формат часу в системному запиті. За замовчуванням: `auto` (параметри ОС). ```json5 { @@ -318,9 +320,9 @@ OpenClaw має кілька великих бюджетів prompt/контек primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, - params: { cacheRetention: "long" }, // глобальні параметри провайдера за замовчуванням + params: { cacheRetention: "long" }, // глобальні типові параметри провайдера embeddedHarness: { - runtime: "auto", // auto | pi | зареєстрований id harness, наприклад codex + runtime: "auto", // auto | pi | зареєстрований ідентифікатор harness, наприклад codex fallback: "pi", // pi | none }, pdfMaxBytesMb: 10, @@ -339,50 +341,50 @@ OpenClaw має кілька великих бюджетів prompt/контек - `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Форма рядка задає лише основну модель. - - Форма об’єкта задає основну модель плюс упорядковані failover-моделі. + - Форма об’єкта задає основну модель і впорядкований список резервних моделей. - `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується шляхом інструмента `image` як конфігурація vision-моделі. - - Також використовується як fallback-маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення. + - Також використовується для резервної маршрутизації, коли вибрана/типова модель не може приймати вхідні зображення. - `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/plugin, що генерує зображення. + - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/Plugin, що генерує зображення. - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal або `openai/gpt-image-2` для OpenAI Images. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2`, `FAL_KEY` для `fal/*`). - - Якщо параметр пропущено, `image_generate` усе одно може вивести типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації зображень у порядку id провайдера. + - Якщо ви безпосередньо вибираєте `provider/model`, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2`, `FAL_KEY` для `fal/*`). + - Якщо не вказано, `image_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів. - `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`. - Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.5+`. - - Якщо параметр пропущено, `music_generate` усе одно може вивести типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації музики в порядку id провайдера. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера/API key. + - Якщо не вказано, `music_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики в порядку ідентифікаторів провайдерів. + - Якщо ви безпосередньо вибираєте `provider/model`, також налаштуйте відповідну автентифікацію провайдера/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` усе одно може вивести типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації відео в порядку id провайдера. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера/API key. - - Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`. + - Якщо не вказано, `video_generate` усе одно може визначити типове значення провайдера з налаштованою автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео в порядку ідентифікаторів провайдерів. + - Якщо ви безпосередньо вибираєте `provider/model`, також налаштуйте відповідну автентифікацію провайдера/API-ключ. + - Вбудований провайдер генерації відео Qwen підтримує не більше ніж 1 вихідне відео, 1 вхідне зображення, 4 вхідних відео, тривалість до 10 секунд, а також параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` і `watermark`. - `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується інструментом `pdf` для маршрутизації моделей. - - Якщо параметр пропущено, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сесії/типової моделі. + - Використовується інструментом `pdf` для маршрутизації моделі. + - Якщо не вказано, інструмент PDF використовує `imageModel`, а потім визначену модель сесії/типову модель. - `pdfMaxBytesMb`: типовий ліміт розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. -- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує режим fallback-витягування в інструменті `pdf`. -- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типово: `"off"`. -- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типово: `"on"`. -- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4` для доступу через API key або `openai-codex/gpt-5.5` для Codex OAuth). Якщо ви не вкажете провайдера, OpenClaw спочатку спробує alias, потім унікальний збіг exact model id серед налаштованих провайдерів і лише після цього повернеться до налаштованого провайдера за замовчуванням (застаріла поведінка для сумісності, тому краще вказувати явний `provider/model`). Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw повернеться до першої налаштованої пари provider/model замість того, щоб показувати застаріле типове значення від видаленого провайдера. -- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`). - - Безпечне редагування: використовуйте `openclaw config set agents.defaults.models '' --strict-json --merge`, щоб додавати записи. `config set` відмовляється від замін, які вилучили б наявні записи allowlist, якщо не передати `--replace`. - - Потоки configure/onboarding на рівні провайдера об’єднують вибрані моделі провайдера в цю мапу та зберігають уже налаштованих непов’язаних провайдерів. - - Для прямих моделей OpenAI Responses компакція на стороні сервера вмикається автоматично. Використовуйте `params.responsesServerCompaction: false`, щоб припинити інжекцію `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [OpenAI server-side compaction](/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 агента) перевизначає за ключем. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching). -- `embeddedHarness`: типова політика низькорівневого runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим plugin harness брати на себе підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований id harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний fallback до PI. -- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта та, за можливості, зберігають наявні списки fallback. -- `maxConcurrent`: максимальна кількість паралельних запусків агента між сесіями (кожна сесія все одно серіалізується). Типово: 4. +- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує резервний режим витягування в інструменті `pdf`. +- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. За замовчуванням: `"off"`. +- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. За замовчуванням: `"on"`. +- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо не вказати провайдера, OpenClaw спочатку пробує alias, потім унікальний збіг налаштованого провайдера для цього точного ідентифікатора моделі і лише після цього переходить до типового налаштованого провайдера (застаріла сумісна поведінка, тому краще явно вказувати `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переходить до першої налаштованої пари провайдер/модель замість того, щоб показувати застаріле типове значення від видаленого провайдера. +- `models`: каталог налаштованих моделей і список дозволених значень для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`). + - Безпечні зміни: використовуйте `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). +- `embeddedHarness`: типова політика низькорівневого середовища виконання вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим harness із Plugin брати на себе підтримувані моделі, `runtime: "pi"` — щоб примусово використовувати вбудований PI harness, або зареєстрований ідентифікатор harness, наприклад `runtime: "codex"`. Встановіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід до PI. Нові конфігурації Codex harness повинні зберігати посилання на моделі в канонічному форматі `openai/*` і вибирати harness тут, а не використовувати застарілі посилання на моделі `codex/*`. +- Засоби запису конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення резервних варіантів), зберігають канонічну форму об’єкта і, коли можливо, зберігають наявні списки резервних моделей. +- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно серіалізується). За замовчуванням: 4. ### `agents.defaults.embeddedHarness` -`embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента. -У більшості розгортань слід залишити типове значення `{ runtime: "auto", fallback: "pi" }`. -Використовуйте це, коли довірений plugin надає нативний harness, наприклад вбудований -harness app-server Codex. +`embeddedHarness` визначає, який низькорівневий виконавець запускає ходи вбудованого агента. +Для більшості розгортань слід залишати типове значення `{ runtime: "auto", fallback: "pi" }`. +Використовуйте його, коли довірений Plugin надає нативний harness, наприклад вбудований +harness сервера застосунку Codex. ```json5 { @@ -398,35 +400,35 @@ harness app-server Codex. } ``` -- `runtime`: `"auto"`, `"pi"` або id зареєстрованого plugin harness. Вбудований plugin Codex реєструє `codex`. -- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як fallback для сумісності, коли не вибрано жодного plugin harness. `"none"` змушує відсутній або непідтримуваний вибір plugin harness завершуватися помилкою замість тихого використання PI. Збої вибраного plugin harness завжди показуються напряму. -- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає fallback до PI для цього процесу. -- Для розгортань лише з Codex установіть `model: "openai/gpt-5.5"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`. -- Вибір harness фіксується для кожного id сесії після першого вбудованого запуску. Зміни config/env впливають на нові або скинуті сесії, але не на наявний transcript. Застарілі сесії з історією transcript, але без зафіксованого значення, вважаються прив’язаними до PI. `/status` показує id harness, відмінні від PI, наприклад `codex`, поруч із `Fast`. -- Це керує лише вбудованим harness чату. Генерація медіа, vision, PDF, музики, відео та TTS усе ще використовують свої налаштування provider/model. +- `runtime`: `"auto"`, `"pi"` або ідентифікатор зареєстрованого harness із Plugin. Вбудований Plugin Codex реєструє `codex`. +- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований PI harness як сумісний резервний варіант, коли не вибрано жодного harness із Plugin. `"none"` призводить до помилки, якщо вибраний harness із Plugin відсутній або не підтримується, замість тихого використання PI. Помилки вибраного harness із Plugin завжди показуються безпосередньо. +- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний перехід до PI для цього процесу. +- Для розгортань лише з Codex встановіть `model: "openai/gpt-5.5"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`. +- Вибір harness закріплюється за ідентифікатором сесії після першого вбудованого запуску. Зміни конфігурації/середовища впливають на нові або скинуті сесії, але не на наявний транскрипт. Застарілі сесії з історією транскрипту, але без записаного закріплення, вважаються закріпленими за PI. `/status` показує ідентифікатори harness, відмінні від PI, наприклад `codex`, поруч із `Fast`. +- Це керує лише harness вбудованого чату. Генерація медіа, vision, PDF, музика, відео і TTS, як і раніше, використовують свої параметри провайдер/модель. -**Вбудовані alias-скорочення** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): +**Вбудовані скорочення alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): | Alias | Модель | | ------------------- | -------------------------------------------------- | | `opus` | `anthropic/claude-opus-4-6` | | `sonnet` | `anthropic/claude-sonnet-4-6` | -| `gpt` | `openai/gpt-5.4` або налаштований Codex OAuth GPT-5.5 | +| `gpt` | `openai/gpt-5.4` або налаштована Codex OAuth GPT-5.5 | | `gpt-mini` | `openai/gpt-5.4-mini` | | `gpt-nano` | `openai/gpt-5.4-nano` | | `gemini` | `google/gemini-3.1-pro-preview` | | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Ваші налаштовані alias завжди мають пріоритет над типовими. +Налаштовані вами alias завжди мають пріоритет над типовими. Для моделей Z.AI GLM-4.x режим thinking вмикається автоматично, якщо ви не встановите `--thinking off` або самостійно не задасте `agents.defaults.models["zai/"].params.thinking`. -Для моделей Z.AI за замовчуванням увімкнено `tool_stream` для потокового передавання викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути його. +Для моделей Z.AI `tool_stream` увімкнено за замовчуванням для потокової передачі викликів інструментів. Встановіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це. Для моделей Anthropic Claude 4.6 за замовчуванням використовується thinking `adaptive`, якщо не задано явний рівень thinking. ### `agents.defaults.cliBackends` -Необов’язкові CLI backends для text-only fallback-запусків (без викликів інструментів). Корисно як резервний варіант, коли API-провайдери недоступні. +Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API-провайдери не працюють. ```json5 { @@ -454,13 +456,13 @@ harness app-server Codex. } ``` -- CLI backends орієнтовані насамперед на текст; інструменти завжди вимкнені. -- Сесії підтримуються, коли задано `sessionArg`. -- Передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів. +- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені. +- Сесії підтримуються, якщо задано `sessionArg`. +- Передавання зображень підтримується, якщо `imageArg` приймає шляхи до файлів. ### `agents.defaults.systemPromptOverride` -Замінює весь системний prompt, зібраний OpenClaw, фіксованим рядком. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для конкретного агента (`agents.list[].systemPromptOverride`). Значення для конкретного агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із prompt. +Замінює весь системний запит, зібраний OpenClaw, на фіксований рядок. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для конкретного агента (`agents.list[].systemPromptOverride`). Значення для конкретного агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із запитами. ```json5 { @@ -474,7 +476,7 @@ harness app-server Codex. ### `agents.defaults.promptOverlays` -Незалежні від провайдера накладки prompt, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний поведінковий контракт між провайдерами; `personality` керує лише дружнім шаром стилю взаємодії. +Незалежні від провайдера накладки запитів, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний контракт поведінки між провайдерами; `personality` керує лише шаром дружнього стилю взаємодії. ```json5 { @@ -490,9 +492,9 @@ harness app-server Codex. } ``` -- `"friendly"` (типово) і `"on"` вмикають дружній шар стилю взаємодії. -- `"off"` вимикає лише дружній шар; позначений поведінковий контракт GPT-5 залишається ввімкненим. -- Застарілий `plugins.entries.openai.config.personality` усе ще читається, коли це спільне налаштування не задано. +- `"friendly"` (типово) і `"on"` вмикають шар дружнього стилю взаємодії. +- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 залишається увімкненим. +- Застаріле `plugins.entries.openai.config.personality` усе ще зчитується, якщо цей спільний параметр не задано. ### `agents.defaults.heartbeat` @@ -506,13 +508,13 @@ harness app-server Codex. every: "30m", // 0m вимикає model: "openai/gpt-5.4-mini", includeReasoning: false, - includeSystemPromptSection: true, // типово: true; false прибирає секцію Heartbeat із системного prompt - lightContext: false, // типово: false; true залишає лише HEARTBEAT.md із bootstrap-файлів робочого простору - isolatedSession: false, // типово: false; true запускає кожен Heartbeat у новій сесії (без історії розмови) + includeSystemPromptSection: true, // за замовчуванням: true; false не додає розділ Heartbeat до системного запиту + lightContext: false, // за замовчуванням: false; true залишає лише HEARTBEAT.md із bootstrap-файлів робочого простору + isolatedSession: false, // за замовчуванням: false; true запускає кожен heartbeat у новій сесії (без історії розмови) session: "main", to: "+15555550123", - directPolicy: "allow", // allow (типово) | block - target: "none", // типово: none | варіанти: last | whatsapp | telegram | discord | ... + directPolicy: "allow", // allow (за замовчуванням) | block + target: "none", // за замовчуванням: none | варіанти: last | whatsapp | telegram | discord | ... prompt: "Read HEARTBEAT.md if it exists...", ackMaxChars: 300, suppressToolErrorWarnings: false, @@ -523,15 +525,15 @@ harness app-server Codex. } ``` -- `every`: рядок тривалості (ms/s/m/h). Типово: `30m` (автентифікація через API key) або `1h` (автентифікація через OAuth). Установіть `0m`, щоб вимкнути. -- `includeSystemPromptSection`: коли `false`, прибирає секцію Heartbeat із системного prompt і пропускає інжекцію `HEARTBEAT.md` у bootstrap-контекст. Типово: `true`. -- `suppressToolErrorWarnings`: коли `true`, пригнічує payload попереджень про помилки інструментів під час запусків Heartbeat. -- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat до його переривання. Залиште незаданим, щоб використовувати `agents.defaults.timeoutSeconds`. -- `directPolicy`: політика прямої доставки/доставки в приватні повідомлення. `allow` (типово) дозволяє доставку за прямою ціллю. `block` пригнічує доставку за прямою ціллю та виводить `reason=dm-blocked`. -- `lightContext`: коли `true`, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору. -- `isolatedSession`: коли `true`, кожен Heartbeat запускається в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує вартість одного Heartbeat за токенами приблизно зі ~100K до ~2–5K токенів. -- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускаються **лише для цих агентів**. -- Heartbeat запускають повні ходи агента — коротші інтервали спалюють більше токенів. +- `every`: рядок тривалості (ms/s/m/h). За замовчуванням: `30m` (автентифікація через API-ключ) або `1h` (автентифікація через OAuth). Встановіть `0m`, щоб вимкнути. +- `includeSystemPromptSection`: якщо `false`, не додає розділ Heartbeat до системного запиту і пропускає додавання `HEARTBEAT.md` до bootstrap-контексту. За замовчуванням: `true`. +- `suppressToolErrorWarnings`: якщо `true`, пригнічує корисне навантаження попереджень про помилки інструментів під час запусків heartbeat. +- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента heartbeat, після чого його буде перервано. Якщо не вказано, використовується `agents.defaults.timeoutSeconds`. +- `directPolicy`: політика доставки напряму/в особисті повідомлення. `allow` (за замовчуванням) дозволяє доставку безпосередньо цілі. `block` пригнічує доставку безпосередньо цілі та генерує `reason=dm-blocked`. +- `lightContext`: якщо `true`, запуски heartbeat використовують полегшений bootstrap-контекст і залишають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору. +- `isolatedSession`: якщо `true`, кожен heartbeat запускається в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на один heartbeat приблизно зі ~100K до ~2-5K токенів. +- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, **heartbeat запускаються лише для цих агентів**. +- Heartbeat виконують повноцінні ходи агента — коротші інтервали спалюють більше токенів. ### `agents.defaults.compaction` @@ -541,14 +543,14 @@ harness app-server Codex. defaults: { compaction: { mode: "safeguard", // default | safeguard - provider: "my-provider", // id зареєстрованого Plugin провайдера Compaction (необов’язково) + provider: "my-provider", // id зареєстрованого Plugin провайдера compaction (необов’язково) timeoutSeconds: 900, reserveTokensFloor: 24000, identifierPolicy: "strict", // strict | off | custom identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // використовується, коли identifierPolicy=custom - postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторну інжекцію - model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для Compaction - notifyUser: true, // надсилати короткі сповіщення користувачу, коли Compaction починається і завершується (типово: false) + postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне додавання + model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для compaction + notifyUser: true, // надсилати короткі сповіщення користувачу, коли compaction починається і завершується (за замовчуванням: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, @@ -561,15 +563,15 @@ harness app-server Codex. } ``` -- `mode`: `default` або `safeguard` (підсумовування довгих історій частинами). Див. [Compaction](/uk/concepts/compaction). -- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо задано, замість вбудованого LLM-підсумовування викликається `summarize()` цього провайдера. У разі помилки відбувається fallback до вбудованого. Установлення провайдера примусово вмикає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). -- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction до того, як OpenClaw перерве її. Типово: `900`. -- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction. -- `identifierInstructions`: необов’язковий власний текст для збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. -- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md для повторної інжекції після Compaction. Типово `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторну інжекцію. Якщо значення не задано або явно встановлено цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий fallback. -- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction — виконуватися на іншій; якщо не задано, Compaction використовує основну модель сесії. -- `notifyUser`: коли `true`, надсилає короткі сповіщення користувачу, коли Compaction починається і завершується (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб Compaction залишався тихим. -- `memoryFlush`: тихий хід агента перед автоматичним Compaction для збереження довготривалої пам’яті. Пропускається, коли робочий простір доступний лише для читання. +- `mode`: `default` або `safeguard` (підсумовування частинами для довгих історій). Див. [Compaction](/uk/concepts/compaction). +- `provider`: id зареєстрованого Plugin провайдера compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` цього провайдера. У разі помилки повертається до вбудованого механізму. Встановлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). +- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції compaction, після чого OpenClaw її перериває. За замовчуванням: `900`. +- `identifierPolicy`: `strict` (за замовчуванням), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування compaction. +- `identifierInstructions`: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. +- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md, які потрібно повторно додати після compaction. За замовчуванням `["Session Startup", "Red Lines"]`; встановіть `[]`, щоб вимкнути повторне додавання. Якщо значення не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як резервний варіант для сумісності. +- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки compaction повинні виконуватися на іншій; якщо не задано, compaction використовує основну модель сесії. +- `notifyUser`: якщо `true`, надсилає користувачу короткі сповіщення, коли compaction починається і коли завершується (наприклад, "Compacting context..." і "Compaction complete"). За замовчуванням вимкнено, щоб compaction залишався непомітним. +- `memoryFlush`: тихий агентний хід перед автоматичним compaction для збереження довготривалої пам’яті. Пропускається, якщо робочий простір доступний лише для читання. ### `agents.defaults.contextPruning` @@ -581,7 +583,7 @@ harness app-server Codex. defaults: { contextPruning: { mode: "cache-ttl", // off | cache-ttl - ttl: "1h", // тривалість (ms/s/m/h), типова одиниця: хвилини + ttl: "1h", // тривалість (ms/s/m/h), одиниця за замовчуванням: хвилини keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, @@ -603,19 +605,19 @@ harness app-server Codex. **М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині. -**Повне очищення** замінює весь результат інструмента заповнювачем. +**Повне очищення** замінює весь результат інструмента на заповнювач. Примітки: - Блоки зображень ніколи не обрізаються і не очищаються. -- Співвідношення базуються на символах (приблизно), а не на точних кількостях токенів. -- Якщо повідомлень асистента менше, ніж `keepLastAssistants`, обрізання пропускається. +- Співвідношення базуються на кількості символів (приблизно), а не на точній кількості токенів. +- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається. -Докладніше про поведінку див. [Session Pruning](/uk/concepts/session-pruning). +Докладніше про поведінку див. у [Обрізання сесії](/uk/concepts/session-pruning). -### Block streaming +### Блокове потокове передавання ```json5 { @@ -631,13 +633,13 @@ harness app-server Codex. } ``` -- Для каналів, відмінних від Telegram, потрібне явне `*.blockStreaming: true`, щоб увімкнути відповіді блоками. -- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типово `minChars: 1500`. -- `humanDelay`: випадкова пауза між блоками відповіді. `natural` = 800–2500ms. Перевизначення для окремого агента: `agents.list[].humanDelay`. +- Канали, окрім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути відповіді блоками. +- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat за замовчуванням `minChars: 1500`. +- `humanDelay`: випадкова пауза між відповідями блоками. `natural` = 800–2500ms. Перевизначення для окремого агента: `agents.list[].humanDelay`. -Докладніше про поведінку та розбиття див. [Streaming](/uk/concepts/streaming). +Докладніше про поведінку та розбиття на блоки див. у [Потокове передавання](/uk/concepts/streaming). -### Індикатори набору +### Індикатори набору тексту ```json5 { @@ -650,16 +652,16 @@ harness app-server Codex. } ``` -- Типові значення: `instant` для прямих чатів/згадок, `message` для групових чатів без згадок. -- Перевизначення для окремих сесій: `session.typingMode`, `session.typingIntervalSeconds`. +- Значення за замовчуванням: `instant` для прямих чатів/згадок, `message` для групових чатів без згадок. +- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`. -Див. [Typing Indicators](/uk/concepts/typing-indicators). +Див. [Індикатори набору тексту](/uk/concepts/typing-indicators). ### `agents.defaults.sandbox` -Необов’язкова Sandbox-ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing). +Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Ізоляція](/uk/gateway/sandboxing). ```json5 { @@ -754,24 +756,24 @@ harness app-server Codex. } ``` - + **Backend:** -- `docker`: локальний runtime Docker (типово) -- `ssh`: універсальний віддалений runtime через SSH -- `openshell`: runtime OpenShell +- `docker`: локальне середовище виконання Docker (за замовчуванням) +- `ssh`: загальне віддалене середовище виконання на основі SSH +- `openshell`: середовище виконання OpenShell -Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться в +Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться до `plugins.entries.openshell.config`. **Конфігурація SSH backend:** - `target`: ціль SSH у форматі `user@host[:port]` -- `command`: команда SSH-клієнта (типово: `ssh`) -- `workspaceRoot`: абсолютний віддалений корінь для робочих просторів за scope -- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, які передаються до OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує в тимчасові файли під час runtime +- `command`: команда SSH-клієнта (за замовчуванням: `ssh`) +- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів у межах області видимості +- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані до OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, який OpenClaw матеріалізує у тимчасові файли під час виконання - `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH **Пріоритет автентифікації SSH:** @@ -779,26 +781,26 @@ harness app-server Codex. - `identityData` має пріоритет над `identityFile` - `certificateData` має пріоритет над `certificateFile` - `knownHostsData` має пріоритет над `knownHostsFile` -- Значення `*Data`, що використовують SecretRef, визначаються з активного знімка runtime секретів перед стартом Sandbox-сесії +- Значення `*Data` на основі SecretRef визначаються з активного знімка середовища виконання секретів до початку сесії sandbox **Поведінка SSH backend:** -- один раз засіває віддалений робочий простір після створення або повторного створення -- потім зберігає віддалений робочий простір SSH як канонічний -- маршрутизує `exec`, файлові інструменти й шляхи медіа через SSH -- не синхронізує віддалені зміни назад на хост автоматично -- не підтримує browser-контейнери Sandbox +- один раз ініціалізує віддалений робочий простір після створення або повторного створення +- потім підтримує віддалений робочий простір SSH як канонічний +- маршрутизує `exec`, файлові інструменти та шляхи медіа через SSH +- не синхронізує автоматично віддалені зміни назад на хост +- не підтримує браузерні контейнери sandbox **Доступ до робочого простору:** -- `none`: робочий простір Sandbox за scope у `~/.openclaw/sandboxes` -- `ro`: робочий простір Sandbox у `/workspace`, робочий простір агента монтується лише для читання в `/agent` -- `rw`: робочий простір агента монтується для читання/запису в `/workspace` +- `none`: робочий простір sandbox у межах області видимості під `~/.openclaw/sandboxes` +- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента змонтовано лише для читання в `/agent` +- `rw`: робочий простір агента змонтовано для читання/запису в `/workspace` -**Scope:** +**Область видимості:** -- `session`: окремий контейнер + робочий простір для кожної сесії -- `agent`: один контейнер + робочий простір на агента (типово) +- `session`: окремий контейнер і робочий простір на сесію +- `agent`: один контейнер і робочий простір на агента (за замовчуванням) - `shared`: спільний контейнер і робочий простір (без ізоляції між сесіями) **Конфігурація Plugin OpenShell:** @@ -829,32 +831,32 @@ harness app-server Codex. **Режим OpenShell:** -- `mirror`: перед `exec` віддалений простір засівається з локального, після `exec` синхронізується назад; локальний робочий простір залишається канонічним -- `remote`: віддалений простір засівається один раз під час створення Sandbox, після чого канонічним залишається віддалений робочий простір +- `mirror`: ініціалізує віддалений простір із локального перед exec, синхронізує назад після exec; локальний робочий простір залишається канонічним +- `remote`: один раз ініціалізує віддалений простір під час створення sandbox, після чого віддалений робочий простір залишається канонічним -У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються в Sandbox автоматично після кроку засівання. -Транспортом є SSH у Sandbox OpenShell, але Plugin керує життєвим циклом Sandbox і необов’язковою дзеркальною синхронізацією. +У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються автоматично в sandbox після кроку ініціалізації. +Транспортом є SSH у sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією. -**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потребує вихідного доступу до мережі, кореневої файлової системи з можливістю запису та користувача root. +**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує вихідного доступу до мережі, записуваного кореня та користувача root. -**Типово контейнери мають `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ. -`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не встановите -`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний режим). +**Для контейнерів за замовчуванням встановлено `network: "none"`** — задайте `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ. +`"host"` заблоковано. `"container:"` також заблоковано за замовчуванням, якщо ви явно не встановите +`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний варіант). -**Вхідні вкладення** розміщуються у `media/inbound/*` в активному робочому просторі. +**Вхідні вкладення** розміщуються в `media/inbound/*` в активному робочому просторі. -**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремого агента об’єднуються. +**`docker.binds`** монтує додаткові каталоги хоста; глобальні монтування та монтування для окремих агентів об’єднуються. -**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC інжектується в системний prompt. Не потребує `browser.enabled` у `openclaw.json`. -Доступ спостерігача через noVNC типово використовує автентифікацію VNC, і OpenClaw видає короткоживучий URL із токеном (замість того, щоб розкривати пароль у спільному URL). +**Ізольований браузер** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC додається до системного запиту. Не потребує `browser.enabled` в `openclaw.json`. +Доступ спостерігача через noVNC за замовчуванням використовує VNC-автентифікацію, і OpenClaw генерує URL із короткоживучим токеном (замість показу пароля в спільному URL). -- `allowHostControl: false` (типово) блокує націлювання з Sandbox-сесій на browser хоста. -- `network` типово має значення `openclaw-sandbox-browser` (окрема bridge-мережа). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge. -- `cdpSourceRange` за бажанням обмежує вхідний доступ CDP на межі контейнера до діапазону CIDR (наприклад, `172.21.0.1/32`). -- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер browser Sandbox. Якщо параметр задано (включно з `[]`), він замінює `docker.binds` для контейнера browser. -- Типові параметри запуску визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для контейнерних хостів: +- `allowHostControl: false` (за замовчуванням) блокує для ізольованих сесій націлювання на браузер хоста. +- Для `network` за замовчуванням використовується `openclaw-sandbox-browser` (окрема bridge-мережа). Встановлюйте `bridge` лише тоді, коли вам явно потрібна глобальна 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=` + - `--remote-debugging-port=<похідне від OPENCLAW_BROWSER_CDP_PORT>` - `--user-data-dir=${HOME}/.chrome` - `--no-first-run` - `--no-default-browser-check` @@ -869,28 +871,28 @@ harness app-server Codex. - `--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_EXTENSIONS=0` знову вмикає extensions, якщо ваш workflow + увімкнені за замовчуванням і можуть бути вимкнені через + `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо для використання WebGL/3D це потрібно. + - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо ваш робочий процес залежить від них. - `--renderer-process-limit=2` можна змінити через - `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати + `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; встановіть `0`, щоб використовувати типовий ліміт процесів Chromium. - - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`. - - Типові значення — це базова конфігурація образу контейнера; використовуйте власний образ browser із власним - entrypoint, щоб змінити типові значення контейнера. + - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли увімкнено `noSandbox`. + - Типові значення є базовими для образу контейнера; щоб змінити типові параметри контейнера, використовуйте власний + образ браузера з власним entrypoint. -Sandbox-ізоляція browser і `sandbox.docker.binds` доступні лише для Docker. +Ізоляція браузера та `sandbox.docker.binds` працюють лише з Docker. -Збірка образів: +Зібрати образи: ```bash scripts/sandbox-setup.sh # основний образ sandbox -scripts/sandbox-browser-setup.sh # необов’язковий образ browser +scripts/sandbox-browser-setup.sh # необов’язковий образ браузера ``` ### `agents.list` (перевизначення для окремого агента) @@ -908,9 +910,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br model: "anthropic/claude-opus-4-6", // або { primary, fallbacks } thinkingDefault: "high", // перевизначення рівня thinking для окремого агента reasoningDefault: "on", // перевизначення видимості reasoning для окремого агента - fastModeDefault: false, // перевизначення fast mode для окремого агента + fastModeDefault: false, // перевизначення швидкого режиму для окремого агента embeddedHarness: { runtime: "auto", fallback: "pi" }, - params: { cacheRetention: "none" }, // перевизначає за ключами відповідні params з defaults.models + params: { cacheRetention: "none" }, // перевизначає params відповідного defaults.models за ключами skills: ["docs-search"], // замінює agents.defaults.skills, якщо задано identity: { name: "Samantha", @@ -943,26 +945,26 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br ``` - `id`: стабільний id агента (обов’язково). -- `default`: якщо задано кілька значень, перше має пріоритет (записується попередження в лог). Якщо не задано жодного, типовим буде перший елемент у списку. -- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron-завдання, які перевизначають лише `primary`, усе ще успадковують типові fallback, якщо не встановити `fallbacks: []`. -- `params`: параметри потоку для окремого агента, які об’єднуються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень на рівні агента, таких як `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей. -- `skills`: необов’язковий allowlist Skills для окремого агента. Якщо параметр пропущено, агент успадковує `agents.defaults.skills`, якщо його задано; явний список замінює типові значення замість злиття, а `[]` означає відсутність Skills. +- `default`: якщо задано кілька, перший має пріоритет (записується попередження). Якщо не задано жодного, типовим буде перший елемент списку. +- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні резервні моделі). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові резервні моделі, якщо ви не задасте `fallbacks: []`. +- `params`: параметри потоку для окремого агента, які об’єднуються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень, специфічних для агента, як-от `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей. +- `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо не задано, агент успадковує `agents.defaults.skills`, коли його задано; явний список замінює типові значення, а не об’єднується з ними, а `[]` означає відсутність Skills. - `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не задано перевизначення для повідомлення або сесії. -- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для повідомлення або сесії. -- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для повідомлення або сесії. -- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий fallback до PI. -- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії harness ACP. -- `identity.avatar`: шлях відносно робочого простору, `http(s)` URL або `data:` URI. +- `reasoningDefault`: необов’язкова типова видимість reasoning для окремого агента (`on | off | stream`). Застосовується, якщо не задано перевизначення reasoning для повідомлення або сесії. +- `fastModeDefault`: необов’язкове типове значення швидкого режиму для окремого агента (`true | false`). Застосовується, якщо не задано перевизначення швидкого режиму для повідомлення або сесії. +- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише Codex, а інші агенти зберігали типовий резервний PI. +- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` зі значеннями `runtime.acp` за замовчуванням (`agent`, `backend`, `mode`, `cwd`), коли агент має за замовчуванням використовувати сесії harness ACP. +- `identity.avatar`: шлях відносно робочого простору, URL `http(s)` або URI `data:`. - `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`. -- `subagents.allowAgents`: allowlist id агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент). -- Захист успадкування Sandbox: якщо сесія-ініціатор працює в Sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без Sandbox. -- `subagents.requireAgentId`: коли `true`, блокує виклики `sessions_spawn`, які не містять `agentId` (примушує до явного вибору профілю; типово: false). +- `subagents.allowAgents`: список дозволених id агентів для `sessions_spawn` (`["*"]` = будь-який; за замовчуванням: лише той самий агент). +- Захист успадкування sandbox: якщо сесія-запитувач працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox. +- `subagents.requireAgentId`: якщо `true`, блокує виклики `sessions_spawn`, у яких не вказано `agentId` (примушує до явного вибору профілю; за замовчуванням: false). --- -## Маршрутизація кількох агентів +## Маршрутизація між кількома агентами -Запускайте кілька ізольованих агентів у межах одного Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent). +Запускайте кількох ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent). ```json5 { @@ -979,16 +981,16 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br } ``` -### Поля відповідності binding +### Поля збігу для прив’язок -- `type` (необов’язково): `route` для звичайної маршрутизації (відсутнє значення типово означає route), `acp` для постійних binding розмов ACP. +- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип не вказано, за замовчуванням використовується route), `acp` для постійних прив’язок розмов ACP. - `match.channel` (обов’язково) -- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = типовий обліковий запис) +- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо не вказано = типовий обліковий запис) - `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`) -- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу) -- `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }` +- `match.guildId` / `match.teamId` (необов’язково; залежить від каналу) +- `acp` (необов’язково; лише для записів `type: "acp"`): `{ mode, label, cwd, backend }` -**Детермінований порядок відповідності:** +**Детермінований порядок збігів:** 1. `match.peer` 2. `match.guildId` @@ -997,9 +999,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br 5. `match.accountId: "*"` (на весь канал) 6. Типовий агент -У межах кожного рівня перший відповідний запис у `bindings` має пріоритет. +У межах кожного рівня перемагає перший відповідний запис у `bindings`. -Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує порядок рівнів route binding, наведений вище. +Для записів `type: "acp"` OpenClaw виконує зіставлення за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує порядок рівнів прив’язки route, наведений вище. ### Профілі доступу для окремих агентів @@ -1050,7 +1052,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br - + ```json5 { @@ -1096,7 +1098,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br -Докладніше про пріоритети див. [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools). +Докладніше про пріоритети див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools). --- @@ -1122,7 +1124,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", - parentForkMaxTokens: 100000, // пропустити fork батьківського thread вище цього ліміту токенів (0 вимикає) + parentForkMaxTokens: 100000, // пропускати відгалуження від батьківського потоку вище цього числа токенів (0 вимикає) maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", @@ -1134,10 +1136,10 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br }, threadBindings: { enabled: true, - idleHours: 24, // типове автоматичне зняття фокуса після неактивності в годинах (`0` вимикає) + idleHours: 24, // типове автоматичне зняття фокусу через неактивність у годинах (`0` вимикає) maxAgeHours: 0, // типовий жорсткий максимальний вік у годинах (`0` вимикає) }, - mainKey: "main", // застаріле (runtime завжди використовує "main") + mainKey: "main", // застаріле поле (runtime завжди використовує "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], @@ -1147,36 +1149,36 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br } ``` - + - **`scope`**: базова стратегія групування сесій для контекстів групового чату. - - `per-sender` (типово): кожен відправник отримує ізольовану сесію в межах контексту каналу. - - `global`: усі учасники в контексті каналу ділять одну спільну сесію (використовуйте лише тоді, коли потрібен спільний контекст). -- **`dmScope`**: як групуються приватні повідомлення. - - `main`: усі приватні повідомлення використовують головну сесію. + - `per-sender` (за замовчуванням): кожен відправник отримує ізольовану сесію в межах контексту каналу. + - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли потрібен спільний контекст). +- **`dmScope`**: як групуються особисті повідомлення. + - `main`: усі особисті повідомлення спільно використовують основну сесію. - `per-peer`: ізоляція за id відправника між каналами. - - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для inbox із кількома користувачами). + - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для спільних inbox). - `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для кількох облікових записів). -- **`identityLinks`**: мапа канонічних id до peer із префіксом провайдера для спільного використання сесій між каналами. -- **`reset`**: основна політика скидання. `daily` скидає в `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що спливе першим. +- **`identityLinks`**: мапа канонічних id на peer із префіксом провайдера для спільного використання сесій між каналами. +- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва варіанти, спрацьовує той, що настане раніше. - **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`. -- **`parentForkMaxTokens`**: максимальне значення `totalTokens` у батьківській сесії, дозволене під час створення сесії fork для thread (типово `100000`). - - Якщо значення `totalTokens` у батьківській сесії перевищує це число, OpenClaw починає нову сесію thread замість успадкування історії transcript батьківської сесії. - - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти fork від батьківської сесії. -- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для головного кошика прямого чату. -- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong. -- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перше правило deny має пріоритет. -- **`maintenance`**: очищення сховища сесій + керування retention. - - `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення. - - `pruneAfter`: віковий поріг для застарілих записів (типово `30d`). - - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`). - - `rotateBytes`: ротація `sessions.json`, коли він перевищує цей розмір (типово `10mb`). - - `resetArchiveRetention`: retention для архівів transcript `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. - - `maxDiskBytes`: необов’язковий бюджет дискового простору для каталогу сесій. У режимі `warn` лише пише попередження в лог; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. - - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово `80%` від `maxDiskBytes`. -- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до thread. +- **`parentForkMaxTokens`**: максимальне значення `totalTokens` у батьківській сесії, дозволене під час створення відгалуженої сесії потоку (за замовчуванням `100000`). + - Якщо `totalTokens` у батьківській сесії перевищує це значення, OpenClaw починає нову сесію потоку замість успадкування історії транскрипту батьківської сесії. + - Встановіть `0`, щоб вимкнути цей захист і завжди дозволяти відгалуження від батьківської сесії. +- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного кошика особистих чатів. +- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів відповіді у зворотному напрямку між агентами під час обміну агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong-ланцюжок. +- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший `deny` має пріоритет. +- **`maintenance`**: очищення сховища сесій і керування термінами зберігання. + - `mode`: `warn` лише генерує попередження; `enforce` застосовує очищення. + - `pruneAfter`: поріг віку для застарілих записів (за замовчуванням `30d`). + - `maxEntries`: максимальна кількість записів у `sessions.json` (за замовчуванням `500`). + - `rotateBytes`: ротує `sessions.json`, коли він перевищує цей розмір (за замовчуванням `10mb`). + - `resetArchiveRetention`: термін зберігання архівів транскрипту `*.reset.`. За замовчуванням дорівнює `pruneAfter`; встановіть `false`, щоб вимкнути. + - `maxDiskBytes`: необов’язковий бюджет дискового простору для каталогу сесій. У режимі `warn` лише журналює попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. + - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. За замовчуванням `80%` від `maxDiskBytes`. +- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до потоків. - `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) - - `idleHours`: типове автоматичне зняття фокуса після неактивності в годинах (`0` вимикає; провайдери можуть перевизначати) + - `idleHours`: типове автоматичне зняття фокусу через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати) - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати) @@ -1217,36 +1219,36 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`. -Визначення значення (найспецифічніше має пріоритет): обліковий запис → канал → глобальне. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`. +Визначення значення (найспецифічніше має пріоритет): обліковий запис → канал → глобальне. `""` вимикає й зупиняє каскад. `"auto"` формує `[{identity.name}]`. **Змінні шаблону:** -| Змінна | Опис | Приклад | -| ---------------- | ----------------------- | --------------------------- | -| `{model}` | Коротка назва моделі | `claude-opus-4-6` | -| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | -| `{provider}` | Назва провайдера | `anthropic` | +| Variable | Опис | Example | +| ----------------- | ---------------------- | --------------------------- | +| `{model}` | Коротка назва моделі | `claude-opus-4-6` | +| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | +| `{provider}` | Назва провайдера | `anthropic` | | `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` | -| `{identity.name}` | Ім’я identity агента | (те саме, що й `"auto"`) | +| `{identity.name}` | Назва identity агента | (те саме, що й `"auto"`) | Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`. -### Ack reaction +### Реакція підтвердження -- Типово береться з `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. +- За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Встановіть `""`, щоб вимкнути. - Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → fallback до identity. -- Область дії: `group-mentions` (типово), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: видаляє ack після відповіді в Slack, Discord і Telegram. +- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення з identity. +- Область: `group-mentions` (за замовчуванням), `group-all`, `direct`, `all`. +- `removeAckAfterReply`: видаляє підтвердження після відповіді в Slack, Discord і Telegram. - `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram. - У Slack і Discord незадане значення зберігає реакції статусу ввімкненими, коли активні ack reaction. + У Slack і Discord, якщо не задано, реакції статусу залишаються увімкненими, коли активні реакції підтвердження. У Telegram установіть це значення явно в `true`, щоб увімкнути реакції статусу життєвого циклу. -### Inbound debounce +### Debounce для вхідних повідомлень -Об’єднує швидку послідовність текстових повідомлень від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce. +Об’єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Команди керування обходять debounce. -### TTS (text-to-speech) +### TTS (синтез мовлення) ```json5 { @@ -1287,12 +1289,12 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br } ``` -- `auto` керує типовим режимом auto-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні prefs, а `/tts status` показує фактичний стан. -- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку. -- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` типово дорівнює `false` (потрібне явне ввімкнення). -- API keys повертаються до `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. -- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: config, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. -- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw вважає його OpenAI-сумісним TTS-сервером і послаблює валідацію model/voice. +- `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`. +- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. +- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw вважає його OpenAI-сумісним TTS-сервером і послаблює перевірку моделі/голосу. --- @@ -1323,17 +1325,17 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br ``` - `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька провайдерів Talk. -- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) потрібні лише для сумісності й автоматично мігруються в `talk.providers.`. -- Voice ID повертаються до `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. -- `providers.*.apiKey` приймає рядки відкритого тексту або об’єкти SecretRef. -- Fallback до `ELEVENLABS_API_KEY` застосовується лише тоді, коли API key Talk не налаштовано. -- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні імена. -- `silenceTimeoutMs` визначає, скільки режим Talk чекає після тиші користувача перед надсиланням transcript. Якщо не задано, зберігається типове вікно паузи для платформи (`700 ms на macOS і Android, 900 ms на iOS`). +- Застарілі плоскі ключі Talk (`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-ключ Talk не налаштовано. +- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви. +- `silenceTimeoutMs` визначає, скільки часу режим Talk чекає після того, як користувач замовкне, перш ніж надіслати транскрипт. Якщо не задано, зберігається типове для платформи вікно паузи (`700 ms на macOS і Android, 900 ms на iOS`). --- ## Пов’язане -- [Configuration reference](/uk/gateway/configuration-reference) — усі інші ключі конфігурації -- [Configuration](/uk/gateway/configuration) — поширені завдання та швидке налаштування -- [Configuration examples](/uk/gateway/configuration-examples) +- [Довідник із конфігурації](/uk/gateway/configuration-reference) — усі інші ключі конфігурації +- [Конфігурація](/uk/gateway/configuration) — поширені завдання та швидке налаштування +- [Приклади конфігурації](/uk/gateway/configuration-examples) diff --git a/docs/uk/plugins/codex-harness.md b/docs/uk/plugins/codex-harness.md index bc240fc76..cf50a3c2c 100644 --- a/docs/uk/plugins/codex-harness.md +++ b/docs/uk/plugins/codex-harness.md @@ -1,24 +1,26 @@ --- read_when: - - Ви хочете використовувати комплектний app-server harness Codex - - Вам потрібні посилання на моделі Codex і приклади конфігурації - - Ви хочете вимкнути резервний перехід на PI для розгортань лише з Codex + - Ви хочете використати комплектний app-server harness Codex + - Вам потрібні приклади конфігурації harness Codex + - Ви хочете вимкнути резервний варіант Pi для розгортань лише з Codex summary: Запустіть вбудовані ходи агента OpenClaw через комплектний app-server harness Codex title: harness Codex x-i18n: - generated_at: "2026-04-24T07:31:32Z" + generated_at: "2026-04-24T18:44:26Z" model: gpt-5.4 provider: openai - source_hash: c02b1e6cbaaefee858db7ebd7e306261683278ed9375bca6fe74855ca84eabd8 + source_hash: 1942e571358674066a7a92139c0ab05273b8196ad68ae3ca2349e2be33cac403 source_path: plugins/codex-harness.md workflow: 15 --- -Комплектний Plugin `codex` дає змогу OpenClaw запускати вбудовані ходи агента через Codex app-server замість вбудованого harness PI. +Комплектний Plugin `codex` дає OpenClaw змогу запускати вбудовані ходи агента через +app-server Codex замість вбудованого harness PI. -Використовуйте це, коли хочете, щоб Codex керував низькорівневою сесією агента: виявленням моделей, нативним відновленням потоку, нативним Compaction і виконанням app-server. -OpenClaw, як і раніше, керує чат-каналами, файлами сесій, вибором моделей, інструментами, -схваленнями, доставкою медіа та видимим дзеркалом транскрипту. +Використовуйте це, коли хочете, щоб Codex керував низькорівневою сесією агента: виявленням +моделей, нативним відновленням потоку, нативним Compaction і виконанням через app-server. +OpenClaw, як і раніше, керує каналами чату, файлами сесії, вибором моделі, інструментами, +підтвердженнями, доставкою медіа та видимим дзеркалом транскрипту. Нативні ходи Codex зберігають хуки Plugin OpenClaw як публічний шар сумісності. Це внутрішньопроцесні хуки OpenClaw, а не командні хуки Codex `hooks.json`: @@ -30,85 +32,88 @@ OpenClaw, як і раніше, керує чат-каналами, файлам - `before_message_write` для дзеркальних записів транскрипту - `agent_end` -Комплектні Plugins також можуть реєструвати фабрику розширення Codex app-server, щоб додавати +Комплектні plugins також можуть реєструвати фабрику розширення app-server Codex, щоб додати асинхронне проміжне ПЗ `tool_result`. Це проміжне ПЗ виконується для динамічних інструментів OpenClaw після того, як OpenClaw виконає інструмент, і до того, як результат буде повернено в Codex. Воно -відокремлене від публічного хука Plugin `tool_result_persist`, який перетворює записи -результатів інструментів у транскрипті, якими керує OpenClaw. +відокремлене від публічного хука Plugin `tool_result_persist`, який перетворює записи результатів +інструментів у транскрипті, якими керує OpenClaw. -За замовчуванням harness вимкнений. У нових конфігураціях слід зберігати посилання на моделі OpenAI +За замовчуванням harness вимкнено. Нові конфігурації мають зберігати посилання на моделі OpenAI канонічними як `openai/gpt-*` і явно примусово вказувати -`embeddedHarness.runtime: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`, коли -потрібне нативне виконання через app-server. Застарілі посилання на моделі `codex/*` і надалі -автоматично вибирають harness для сумісності. +`embeddedHarness.runtime: "codex"` або `OPENCLAW_AGENT_RUNTIME=codex`, коли вони +хочуть нативне виконання через app-server. Застарілі посилання на моделі `codex/*` і далі +автоматично вибирають harness для сумісності, але не показуються як звичайні варіанти +моделей/провайдерів. ## Виберіть правильний префікс моделі -Маршрути сімейства OpenAI залежать від префікса. Використовуйте `openai-codex/*`, коли потрібна -автентифікація Codex OAuth через PI; використовуйте `openai/*`, коли потрібен прямий доступ до OpenAI API або -коли ви примусово використовуєте нативний harness Codex app-server: +Маршрути сімейства OpenAI залежать від префікса. Використовуйте `openai-codex/*`, якщо хочете +Codex OAuth через PI; використовуйте `openai/*`, якщо хочете прямий доступ до OpenAI API або +коли примусово використовуєте нативний harness app-server Codex: -| Посилання на модель | Шлях виконання | Використовуйте, коли | -| ----------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------- | -| `openai/gpt-5.4` | Провайдер OpenAI через зв’язку OpenClaw/PI | Вам потрібен поточний прямий доступ до OpenAI Platform API з `OPENAI_API_KEY`. | -| `openai-codex/gpt-5.5` | OpenAI Codex OAuth через OpenClaw/PI | Вам потрібна автентифікація підписки ChatGPT/Codex із типовим раннером PI. | -| `openai/gpt-5.5` + `embeddedHarness.runtime: "codex"` | harness Codex app-server | Вам потрібне нативне виконання через Codex app-server для вбудованого ходу агента. | +| Посилання на модель | Шлях runtime | Використовуйте, коли | +| --------------------------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------- | +| `openai/gpt-5.4` | Провайдер OpenAI через інфраструктуру OpenClaw/PI | Ви хочете поточний прямий доступ до OpenAI Platform API з `OPENAI_API_KEY`. | +| `openai-codex/gpt-5.5` | OpenAI Codex OAuth через OpenClaw/PI | Ви хочете автентифікацію за підпискою ChatGPT/Codex зі стандартним runner PI. | +| `openai/gpt-5.5` + `embeddedHarness.runtime: "codex"` | Harness app-server Codex | Ви хочете нативне виконання через app-server Codex для вбудованого ходу агента. | -Наразі GPT-5.5 в OpenClaw доступний лише через підписку/OAuth. Використовуйте -`openai-codex/gpt-5.5` для PI OAuth або `openai/gpt-5.5` із harness -Codex app-server. Прямий доступ за API-ключем для `openai/gpt-5.5` підтримуватиметься, +Наразі GPT-5.5 в OpenClaw доступна лише через підписку/OAuth. Використовуйте +`openai-codex/gpt-5.5` для PI OAuth або `openai/gpt-5.5` з harness +app-server Codex. Прямий доступ за API-ключем для `openai/gpt-5.5` підтримуватиметься, щойно OpenAI увімкне GPT-5.5 у публічному API. -Застарілі посилання `codex/gpt-*` залишаються прийнятними як псевдоніми сумісності. Нові конфігурації -PI Codex OAuth повинні використовувати `openai-codex/gpt-*`; нові конфігурації -нативного harness app-server повинні використовувати `openai/gpt-*` разом із `embeddedHarness.runtime: -"codex"`. +Застарілі посилання `codex/gpt-*` і далі приймаються як сумісні псевдоніми. Міграція сумісності +doctor переписує застарілі основні посилання `codex/*` на `openai/*` +і окремо зберігає політику harness Codex. Нові конфігурації PI Codex OAuth +мають використовувати `openai-codex/gpt-*`; нові конфігурації нативного harness app-server +мають використовувати `openai/gpt-*` разом із `embeddedHarness.runtime: "codex"`. -`agents.defaults.imageModel` дотримується того самого поділу за префіксами. Використовуйте +`agents.defaults.imageModel` дотримується того самого розділення за префіксами. Використовуйте `openai-codex/gpt-*`, коли розуміння зображень має виконуватися через шлях провайдера OpenAI Codex OAuth. Використовуйте `codex/gpt-*`, коли розуміння зображень має виконуватися -через обмежений хід Codex app-server. Модель Codex app-server повинна -заявляти підтримку вхідних зображень; текстові моделі Codex завершуються помилкою ще до початку -медіа-ходу. +через обмежений хід app-server Codex. Модель app-server Codex має +оголошувати підтримку вхідних зображень; текстові моделі Codex завершуються з помилкою до початку +ходу з медіа. Використовуйте `/status`, щоб підтвердити ефективний harness для поточної сесії. Якщо -вибір виглядає неочікуваним, увімкніть налагоджувальне логування для підсистеми `agents/harness` -і перевірте структурований запис gateway `agent harness selected`. Він -містить ідентифікатор вибраного harness, причину вибору, політику runtime/fallback і, -у режимі `auto`, результат підтримки для кожного кандидата Plugin. +вибір виглядає неочікуваним, увімкніть журналювання налагодження для підсистеми `agents/harness` +та перевірте структурований запис gateway `agent harness selected`. Він +містить id вибраного harness, причину вибору, політику runtime/резервного варіанта, а +в режимі `auto` — результат підтримки для кожного кандидата Plugin. -Вибір harness не є елементом керування живою сесією. Коли вбудований хід виконується, -OpenClaw записує ідентифікатор вибраного harness у цю сесію та продовжує використовувати його для -наступних ходів у межах того самого ідентифікатора сесії. Змінюйте конфігурацію `embeddedHarness` або +Вибір harness не є елементом керування живою сесією. Коли виконується вбудований хід, +OpenClaw записує id вибраного harness для цієї сесії та продовжує використовувати його для +наступних ходів у межах того самого id сесії. Змініть конфігурацію `embeddedHarness` або `OPENCLAW_AGENT_RUNTIME`, коли хочете, щоб майбутні сесії використовували інший harness; використовуйте `/new` або `/reset`, щоб почати нову сесію перед перемиканням наявної -розмови між PI і Codex. Це дає змогу уникнути повторного відтворення одного транскрипту через +розмови між PI та Codex. Це дає змогу уникнути повторного відтворення одного транскрипту через дві несумісні нативні системи сесій. -Застарілі сесії, створені до прив’язок harness, вважаються прив’язаними до PI, щойно вони -мають історію транскрипту. Використовуйте `/new` або `/reset`, щоб перевести цю розмову на +Застарілі сесії, створені до появи фіксації harness, вважаються прив’язаними до PI, щойно вони +мають історію транскрипту. Використовуйте `/new` або `/reset`, щоб перевести таку розмову на Codex після зміни конфігурації. -`/status` показує ефективний не-PI harness поруч із `Fast`, наприклад -`Fast · codex`. Типовий harness PI залишається `Runner: pi (embedded)` і +`/status` показує ефективний harness, відмінний від PI, поруч із `Fast`, наприклад +`Fast · codex`. Стандартний harness PI і далі показується як `Runner: pi (embedded)` і не додає окремий бейдж harness. ## Вимоги - OpenClaw із доступним комплектним Plugin `codex`. -- Codex app-server `0.118.0` або новіший. -- Доступна автентифікація Codex для процесу app-server. +- app-server Codex версії `0.118.0` або новішої. +- Автентифікація Codex, доступна для процесу app-server. -Plugin блокує старіші або безверсійні handshake app-server. Це утримує -OpenClaw у межах поверхні протоколу, з якою його було протестовано. +Plugin блокує старіші або неверсіоновані рукостискання app-server. Це утримує +OpenClaw на поверхні протоколу, з якою його було протестовано. -Для live- і Docker smoke-тестів автентифікація зазвичай надходить із `OPENAI_API_KEY`, а також із +Для live- і Docker smoke-тестів автентифікація зазвичай надходить із `OPENAI_API_KEY`, а також необов’язкових файлів Codex CLI, таких як `~/.codex/auth.json` і -`~/.codex/config.toml`. Використовуйте ті самі дані автентифікації, що й ваш локальний Codex app-server. +`~/.codex/config.toml`. Використовуйте ті самі матеріали автентифікації, що й ваш локальний +app-server Codex. ## Мінімальна конфігурація -Використовуйте `openai/gpt-5.5`, увімкніть комплектний Plugin і примусово вкажіть harness `codex`: +Використовуйте `openai/gpt-5.5`, увімкніть комплектний Plugin і примусово задайте harness `codex`: ```json5 { @@ -131,7 +136,7 @@ OpenClaw у межах поверхні протоколу, з якою його } ``` -Якщо ваша конфігурація використовує `plugins.allow`, додайте туди також `codex`: +Якщо ваша конфігурація використовує `plugins.allow`, також додайте туди `codex`: ```json5 { @@ -147,14 +152,14 @@ OpenClaw у межах поверхні протоколу, з якою його ``` Застарілі конфігурації, які встановлюють `agents.defaults.model` або модель агента в -`codex/`, і надалі автоматично вмикають комплектний Plugin `codex`. Нові конфігурації мають -віддавати перевагу `openai/` разом із явним записом `embeddedHarness`, наведеним вище. +`codex/`, і далі автоматично вмикають комплектний Plugin `codex`. Нові конфігурації мають +надавати перевагу `openai/` разом із явним записом `embeddedHarness`, наведеним вище. ## Додайте Codex без заміни інших моделей -Залишайте `runtime: "auto"`, якщо хочете, щоб застарілі посилання `codex/*` вибирали Codex, а +Зберігайте `runtime: "auto"`, якщо хочете, щоб застарілі посилання `codex/*` вибирали Codex, а PI — для всього іншого. Для нових конфігурацій надавайте перевагу явному `runtime: "codex"` для -агентів, які мають використовувати цей harness. +тих агентів, які мають використовувати harness. ```json5 { @@ -184,15 +189,15 @@ PI — для всього іншого. Для нових конфігурац } ``` -За такої форми: +Із такою конфігурацією: -- `/model gpt` або `/model openai/gpt-5.5` використовує harness Codex app-server для цієї конфігурації. +- `/model gpt` або `/model openai/gpt-5.5` використовує harness app-server Codex для цієї конфігурації. - `/model opus` використовує шлях провайдера Anthropic. -- Якщо вибрано не-Codex модель, PI залишається harness сумісності. +- Якщо вибрано не модель Codex, PI залишається harness сумісності. ## Розгортання лише з Codex -Вимкніть fallback на PI, коли потрібно гарантувати, що кожен вбудований хід агента використовує +Вимкніть резервний варіант PI, коли вам потрібно довести, що кожен вбудований хід агента використовує harness Codex: ```json5 @@ -209,7 +214,7 @@ harness Codex: } ``` -Перевизначення через середовище: +Перевизначення через змінні середовища: ```bash OPENCLAW_AGENT_RUNTIME=codex \ @@ -217,12 +222,12 @@ OPENCLAW_AGENT_HARNESS_FALLBACK=none \ openclaw gateway run ``` -Коли fallback вимкнено, OpenClaw завершується помилкою на ранньому етапі, якщо Plugin Codex вимкнено, -app-server надто старий або app-server не вдається запустити. +Якщо резервний варіант вимкнено, OpenClaw завершується з помилкою рано, якщо Plugin Codex вимкнено, +app-server надто старий або app-server не може запуститися. ## Codex для окремого агента -Ви можете зробити один агент лише для Codex, тоді як агент за замовчуванням зберігатиме звичайний +Ви можете зробити один агент лише-Codex, тоді як стандартний агент зберігатиме звичайний автовибір: ```json5 @@ -254,15 +259,15 @@ app-server надто старий або app-server не вдається за } ``` -Використовуйте звичайні команди сесії для перемикання агентів і моделей. `/new` створює нову -сесію OpenClaw, а harness Codex за потреби створює або відновлює свій sidecar-потік app-server. -`/reset` очищує прив’язку сесії OpenClaw для цього потоку й дозволяє наступному ходу знову -визначити harness із поточної конфігурації. +Використовуйте звичайні команди сесії, щоб перемикати агентів і моделі. `/new` створює нову +сесію OpenClaw, а harness Codex створює або відновлює свій sidecar-потік app-server +за потреби. `/reset` очищає прив’язку сесії OpenClaw для цього потоку +і дає змогу наступному ходу знову визначити harness на основі поточної конфігурації. ## Виявлення моделей -За замовчуванням Plugin Codex запитує в app-server доступні моделі. Якщо -виявлення завершується помилкою або перевищує час очікування, він використовує комплектний резервний каталог для: +За замовчуванням Plugin Codex запитує app-server про доступні моделі. Якщо +виявлення завершується помилкою або за тайм-аутом, він використовує комплектний резервний каталог для: - GPT-5.5 - GPT-5.4 mini @@ -308,9 +313,9 @@ app-server надто старий або app-server не вдається за } ``` -## З’єднання з app-server і політика +## Підключення app-server і політика -За замовчуванням Plugin запускає Codex локально так: +За замовчуванням Plugin запускає Codex локально командою: ```bash codex app-server --listen stdio:// @@ -318,11 +323,11 @@ codex app-server --listen stdio:// За замовчуванням OpenClaw запускає локальні сесії harness Codex у режимі YOLO: `approvalPolicy: "never"`, `approvalsReviewer: "user"` і -`sandbox: "danger-full-access"`. Це поза довіри для локального оператора, що використовується -для автономних Heartbeat: Codex може використовувати shell і мережеві інструменти без -зупинки на нативних запитах підтвердження, на які нікому відповісти. +`sandbox: "danger-full-access"`. Це позиція довіреного локального оператора, що використовується +для автономних Heartbeat: Codex може використовувати shell та мережеві інструменти без +зупинки на нативних запитах на підтвердження, на які нікому відповісти. -Щоб увімкнути перевірювані Guardian схвалення Codex, установіть `appServer.mode: +Щоб увімкнути підтвердження Codex із перевіркою guardian, задайте `appServer.mode: "guardian"`: ```json5 @@ -343,9 +348,9 @@ codex app-server --listen stdio:// } ``` -Guardian — це нативний рецензент схвалень Codex. Коли Codex просить вийти із sandbox, записувати поза межами workspace або додати дозволи, як-от мережевий доступ, Codex спрямовує цей запит на схвалення до субагента-рецензента замість запиту людині. Рецензент застосовує модель ризиків Codex і схвалює або відхиляє конкретний запит. Використовуйте Guardian, коли вам потрібно більше запобіжників, ніж у режимі YOLO, але все ж потрібні агенти без нагляду, які можуть просуватися далі. +Guardian — це нативний рецензент підтверджень Codex. Коли Codex просить вийти із sandbox, записати дані поза робочим простором або додати дозволи, як-от доступ до мережі, Codex спрямовує цей запит на підтвердження до субагента-рецензента замість запиту в людини. Рецензент застосовує рамку ризиків Codex і схвалює або відхиляє конкретний запит. Використовуйте Guardian, якщо вам потрібні кращі запобіжники, ніж у режимі YOLO, але все ще потрібно, щоб агенти без нагляду могли просуватися далі. -Набір `guardian` розгортається в `approvalPolicy: "on-request"`, `approvalsReviewer: "guardian_subagent"` і `sandbox: "workspace-write"`. Окремі поля політики, як і раніше, мають пріоритет над `mode`, тому розширені розгортання можуть поєднувати цей набір із явними виборами. +Пресет `guardian` розгортається в `approvalPolicy: "on-request"`, `approvalsReviewer: "guardian_subagent"` і `sandbox: "workspace-write"`. Окремі поля політики, як і раніше, перевизначають `mode`, тому розширені розгортання можуть поєднувати пресет із явними параметрами. Для вже запущеного app-server використовуйте транспорт WebSocket: @@ -371,23 +376,23 @@ Guardian — це нативний рецензент схвалень Codex. К Підтримувані поля `appServer`: -| Поле | Типове значення | Значення | -| ------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `transport` | `"stdio"` | `"stdio"` запускає Codex; `"websocket"` підключається до `url`. | -| `command` | `"codex"` | Виконуваний файл для транспорту stdio. | +| Поле | За замовчуванням | Значення | +| ------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `transport` | `"stdio"` | `"stdio"` запускає Codex; `"websocket"` підключається до `url`. | +| `command` | `"codex"` | Виконуваний файл для транспорту stdio. | | `args` | `["app-server", "--listen", "stdio://"]` | Аргументи для транспорту stdio. | -| `url` | не встановлено | URL WebSocket app-server. | -| `authToken` | не встановлено | Bearer-токен для транспорту WebSocket. | -| `headers` | `{}` | Додаткові заголовки WebSocket. | -| `requestTimeoutMs` | `60000` | Час очікування для викликів control-plane app-server. | -| `mode` | `"yolo"` | Набір параметрів для виконання в режимі YOLO або з перевіркою Guardian. | -| `approvalPolicy` | `"never"` | Нативна політика схвалення Codex, яка надсилається під час запуску/відновлення потоку/ходу. | -| `sandbox` | `"danger-full-access"` | Нативний режим sandbox Codex, який надсилається під час запуску/відновлення потоку. | -| `approvalsReviewer` | `"user"` | Використовуйте `"guardian_subagent"`, щоб дозволити Codex Guardian перевіряти запити. | -| `serviceTier` | не встановлено | Необов’язковий рівень сервісу Codex app-server: `"fast"`, `"flex"` або `null`. Некоректні застарілі значення ігноруються. | +| `url` | не задано | URL WebSocket app-server. | +| `authToken` | не задано | Bearer-токен для транспорту WebSocket. | +| `headers` | `{}` | Додаткові заголовки WebSocket. | +| `requestTimeoutMs` | `60000` | Тайм-аут для викликів control-plane app-server. | +| `mode` | `"yolo"` | Пресет для виконання в режимі YOLO або з перевіркою guardian. | +| `approvalPolicy` | `"never"` | Нативна політика підтверджень Codex, що надсилається під час запуску/відновлення потоку та ходу. | +| `sandbox` | `"danger-full-access"` | Нативний режим sandbox Codex, що надсилається під час запуску/відновлення потоку. | +| `approvalsReviewer` | `"user"` | Використовуйте `"guardian_subagent"`, щоб дозволити Codex Guardian перевіряти запити. | +| `serviceTier` | не задано | Необов’язковий рівень сервісу app-server Codex: `"fast"`, `"flex"` або `null`. Некоректні застарілі значення ігноруються. | -Старі змінні середовища все ще працюють як резервні варіанти для локального тестування, коли -відповідне поле конфігурації не встановлено: +Старі змінні середовища й далі працюють як резервні варіанти для локального тестування, коли +відповідне поле конфігурації не задано: - `OPENCLAW_CODEX_APP_SERVER_BIN` - `OPENCLAW_CODEX_APP_SERVER_ARGS` @@ -395,15 +400,15 @@ Guardian — це нативний рецензент схвалень Codex. К - `OPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICY` - `OPENCLAW_CODEX_APP_SERVER_SANDBOX` -`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` для одноразового локального тестування. Конфігурація +є бажаним варіантом для відтворюваних розгортань, оскільки вона зберігає поведінку Plugin у тому +самому перевіреному файлі, що й решта налаштування harness Codex. ## Поширені рецепти -Локальний Codex із типовим транспортом stdio: +Локальний Codex зі стандартним транспортом stdio: ```json5 { @@ -417,7 +422,7 @@ Guardian — це нативний рецензент схвалень Codex. К } ``` -Перевірка harness лише з Codex із вимкненим fallback на PI: +Перевірка harness лише з Codex, із вимкненим резервним варіантом PI: ```json5 { @@ -434,7 +439,7 @@ Guardian — це нативний рецензент схвалень Codex. К } ``` -Схвалення Codex із перевіркою Guardian: +Підтвердження Codex із перевіркою Guardian: ```json5 { @@ -479,68 +484,68 @@ Guardian — це нативний рецензент схвалень Codex. К } ``` -Перемикання моделей залишається під керуванням OpenClaw. Коли сесію OpenClaw приєднано +Перемикання моделей і далі контролюється OpenClaw. Коли сесію OpenClaw прив’язано до наявного потоку Codex, наступний хід знову надсилає в -app-server поточну вибрану модель OpenAI, провайдера, політику схвалення, sandbox і рівень сервісу. -Перемикання з `openai/gpt-5.5` на `openai/gpt-5.2` зберігає прив’язку до потоку, але просить Codex -продовжити роботу з новою вибраною моделлю. +app-server поточно вибрану модель OpenAI, провайдера, політику підтверджень, sandbox і +рівень сервісу. Перемикання з `openai/gpt-5.5` на `openai/gpt-5.2` зберігає +прив’язку до потоку, але просить Codex продовжити роботу з новою вибраною моделлю. ## Команда Codex Комплектний Plugin реєструє `/codex` як авторизовану slash-команду. Вона є -загальною і працює в будь-якому каналі, який підтримує текстові команди OpenClaw. +універсальною та працює на будь-якому каналі, що підтримує текстові команди OpenClaw. Поширені форми: -- `/codex status` показує поточне підключення до app-server, моделі, обліковий запис, ліміти запитів, сервери MCP і skills. -- `/codex models` перелічує поточні моделі Codex app-server. -- `/codex threads [filter]` перелічує нещодавні потоки Codex. -- `/codex resume ` приєднує поточну сесію OpenClaw до наявного потоку Codex. -- `/codex compact` просить Codex app-server виконати Compaction для приєднаного потоку. -- `/codex review` запускає нативну перевірку Codex для приєднаного потоку. -- `/codex account` показує стан облікового запису та лімітів запитів. -- `/codex mcp` показує стан серверів MCP у Codex app-server. -- `/codex skills` показує skills Codex app-server. +- `/codex status` показує активне підключення до app-server, моделі, обліковий запис, ліміти швидкості, сервери MCP і skills. +- `/codex models` виводить список активних моделей app-server Codex. +- `/codex threads [filter]` виводить список нещодавніх потоків Codex. +- `/codex resume ` прив’язує поточну сесію OpenClaw до наявного потоку Codex. +- `/codex compact` просить app-server Codex виконати Compaction для прив’язаного потоку. +- `/codex review` запускає нативну перевірку Codex для прив’язаного потоку. +- `/codex account` показує стан облікового запису та лімітів швидкості. +- `/codex mcp` показує стан серверів MCP app-server Codex. +- `/codex skills` показує skills app-server Codex. -`/codex resume` записує той самий файл sidecar-прив’язки, який harness використовує для -звичайних ходів. Під час наступного повідомлення OpenClaw відновлює цей потік Codex, передає -поточну вибрану модель OpenClaw в app-server і залишає -розширену історію ввімкненою. +`/codex resume` записує той самий sidecar-файл прив’язки, який harness використовує для +звичайних ходів. У наступному повідомленні OpenClaw відновлює цей потік Codex, передає +поточну вибрану модель OpenClaw в app-server і зберігає +увімкнену розширену історію. -Поверхня команд вимагає Codex app-server `0.118.0` або новішої версії. Окремі -методи керування позначаються як `unsupported by this Codex app-server`, якщо -майбутній або нестандартний app-server не надає цей метод JSON-RPC. +Поверхня команд вимагає app-server Codex `0.118.0` або новішої версії. Для окремих +методів керування буде показано `unsupported by this Codex app-server`, якщо +майбутній або кастомний app-server не надає цей метод JSON-RPC. ## Межі хуків Harness Codex має три шари хуків: -| Шар | Власник | Призначення | -| ------------------------------------- | ------------------------ | ------------------------------------------------------------------- | -| Хуки Plugin OpenClaw | OpenClaw | Сумісність продукту/Plugin між harness PI і Codex. | -| Проміжне ПЗ розширення Codex app-server | Комплектні Plugins OpenClaw | Поведінка адаптера на рівні ходу навколо динамічних інструментів OpenClaw. | -| Нативні хуки Codex | Codex | Низькорівневий життєвий цикл Codex і політика нативних інструментів із конфігурації Codex. | +| Шар | Власник | Призначення | +| ------------------------------------- | ------------------------ | -------------------------------------------------------------------- | +| Хуки Plugin OpenClaw | OpenClaw | Сумісність продукту/Plugin між harness PI і Codex. | +| Middleware розширення app-server Codex | Комплектні plugins OpenClaw | Поведінка адаптера на кожному ході навколо динамічних інструментів OpenClaw. | +| Нативні хуки Codex | Codex | Низькорівневий життєвий цикл Codex і нативна політика інструментів із конфігурації Codex. | -OpenClaw не використовує файли проєкту або глобальні файли Codex `hooks.json` для маршрутизації -поведінки Plugin OpenClaw. Нативні хуки Codex корисні для операцій, якими володіє -Codex, таких як політика shell, перевірка результатів нативних інструментів, -обробка зупинки та життєвий цикл нативних моделей/Compaction, але вони не є API Plugin OpenClaw. +OpenClaw не використовує файли проєктного чи глобального Codex `hooks.json` для маршрутизації +поведінки Plugin OpenClaw. Нативні хуки Codex корисні для операцій, якими володіє Codex, +таких як політика shell, нативна перевірка результатів інструментів, обробка зупинки та +нативний життєвий цикл Compaction/моделі, але вони не є API Plugin OpenClaw. Для динамічних інструментів OpenClaw OpenClaw виконує інструмент після того, як Codex запитує -виклик, тому OpenClaw запускає поведінку Plugin і проміжного ПЗ, якою він володіє, в -адаптері harness. Для нативних інструментів Codex канонічним записом інструмента володіє Codex. -OpenClaw може дзеркалювати окремі події, але не може переписувати нативний потік Codex, -якщо Codex не надає цю операцію через app-server або колбеки нативних хуків. +виклик, тому OpenClaw запускає поведінку Plugin і middleware, якою він володіє, в +адаптері harness. Для нативних інструментів Codex саме Codex володіє канонічним записом інструмента. +OpenClaw може віддзеркалювати окремі події, але не може переписати нативний +потік Codex, якщо тільки Codex не надає цю операцію через app-server або callbacks нативних хуків. -Коли новіші збірки Codex app-server надають події хуків життєвого циклу нативних моделей і Compaction, -OpenClaw має керувати підтримкою цього протоколу за версіями та відображати -події в наявний контракт хуків OpenClaw там, де семантика є коректною. +Коли новіші збірки app-server Codex надаватимуть події нативних хуків життєвого циклу Compaction і моделі, +OpenClaw має обмежувати підтримку цього протоколу за версією та відображати ці +події в наявний контракт хуків OpenClaw там, де семантика є чесною. До того часу події OpenClaw `before_compaction`, `after_compaction`, `llm_input` і -`llm_output` є спостереженнями на рівні адаптера, а не побайтовими захопленнями +`llm_output` є спостереженнями на рівні адаптера, а не побайтними копіями внутрішнього запиту Codex або payload Compaction. -Нативні сповіщення Codex app-server `hook/started` і `hook/completed` -проєктуються як події агента `codex_app_server.hook` для траєкторії та налагодження. +Нативні сповіщення app-server Codex `hook/started` і `hook/completed` проєктуються як +події агента `codex_app_server.hook` для траєкторії та налагодження. Вони не викликають хуки Plugin OpenClaw. ## Інструменти, медіа та Compaction @@ -548,59 +553,58 @@ OpenClaw має керувати підтримкою цього протоко Harness Codex змінює лише низькорівневий виконавець вбудованого агента. OpenClaw, як і раніше, формує список інструментів і отримує результати динамічних інструментів від -harness. Текст, зображення, відео, музика, TTS, схвалення та вивід інструментів обміну повідомленнями -і далі проходять через звичайний шлях доставки OpenClaw. +harness. Текст, зображення, відео, музика, TTS, підтвердження та вивід інструментів обміну повідомленнями +й далі проходять через звичайний шлях доставки OpenClaw. -Запити на схвалення інструментів MCP Codex маршрутизуються через потік схвалення Plugin OpenClaw, -коли Codex позначає `_meta.codex_approval_kind` як +Запити на підтвердження для інструментів MCP Codex маршрутизуються через потік +підтверджень Plugin OpenClaw, коли Codex позначає `_meta.codex_approval_kind` як `"mcp_tool_call"`. Запити Codex `request_user_input` надсилаються назад у -вихідний чат, а наступне поставлене в чергу додаткове повідомлення відповідає на цей нативний -запит сервера замість того, щоб скеровуватися як додатковий контекст. Інші запити elicitation MCP -і далі завершуються безпечним блокуванням. +початковий чат, а наступне повідомлення в черзі відповідає на цей нативний запит +сервера замість того, щоб бути спрямованим як додатковий контекст. Інші запити elicitation MCP, +як і раніше, завершуються із закритою відмовою. Коли вибрана модель використовує harness Codex, нативний Compaction потоку делегується -Codex app-server. OpenClaw зберігає дзеркало транскрипту для історії каналу, +app-server Codex. OpenClaw зберігає дзеркало транскрипту для історії каналу, пошуку, `/new`, `/reset` і майбутнього перемикання моделі або harness. Дзеркало -включає запит користувача, фінальний текст асистента та полегшені записи міркувань -або плану Codex, коли їх генерує app-server. Наразі OpenClaw записує лише сигнали -початку та завершення нативного Compaction. Він ще не показує -людинозрозумілий підсумок Compaction або придатний до аудиту список того, які записи Codex -зберіг після Compaction. +містить запит користувача, фінальний текст помічника та полегшені записи міркувань або плану Codex, +коли app-server їх надсилає. Наразі OpenClaw записує лише сигнали початку та завершення +нативного Compaction. Він іще не показує зручний для читання людиною підсумок Compaction +або придатний до аудиту список того, які записи Codex зберіг після Compaction. -Оскільки канонічним нативним потоком володіє Codex, `tool_result_persist` наразі не +Оскільки Codex володіє канонічним нативним потоком, `tool_result_persist` наразі не переписує записи результатів нативних інструментів Codex. Він застосовується лише тоді, коли OpenClaw записує результат інструмента в транскрипт сесії, яким володіє OpenClaw. -Генерація медіа не потребує PI. Генерація зображень, відео, музики, PDF, TTS і -розуміння медіа і далі використовують відповідні налаштування провайдера/моделі, такі як +Генерація медіа не вимагає PI. Генерація зображень, відео, музики, PDF, TTS та розуміння медіа +й далі використовують відповідні параметри провайдера/моделі, такі як `agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` і `messages.tts`. -## Усунення проблем +## Усунення неполадок **Codex не з’являється в `/model`:** увімкніть `plugins.entries.codex.enabled`, виберіть модель `openai/gpt-*` з `embeddedHarness.runtime: "codex"` (або застаріле посилання `codex/*`) і перевірте, чи `plugins.allow` не виключає `codex`. -**OpenClaw використовує PI замість Codex:** якщо жоден harness Codex не бере виконання, -OpenClaw може використовувати PI як сумісний бекенд. Установіть +**OpenClaw використовує PI замість Codex:** якщо жоден harness Codex не бере виконання на себе, +OpenClaw може використовувати PI як бекенд сумісності. Установіть `embeddedHarness.runtime: "codex"`, щоб примусово вибрати Codex під час тестування, або `embeddedHarness.fallback: "none"`, щоб отримувати помилку, коли жоден harness Plugin не підходить. Щойно -вибрано Codex app-server, його збої відображаються безпосередньо без додаткової -конфігурації fallback. +вибрано app-server Codex, його збої відображаються безпосередньо без додаткової +конфігурації резервного варіанта. -**app-server відхиляється:** оновіть Codex, щоб handshake app-server -повідомляв версію `0.118.0` або новішу. +**app-server відхиляється:** оновіть Codex, щоб рукостискання app-server +повідомляло про версію `0.118.0` або новішу. **Виявлення моделей повільне:** зменште `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:** це очікувана поведінка, якщо ви не примусово встановили +**Модель не Codex використовує PI:** це очікувана поведінка, якщо ви не примусово задали `embeddedHarness.runtime: "codex"` (або не вибрали застаріле посилання `codex/*`). Звичайні -`openai/gpt-*` та посилання інших провайдерів залишаються на своєму стандартному шляху провайдера. +посилання `openai/gpt-*` та інших провайдерів залишаються на своєму стандартному шляху провайдера. ## Пов’язане