diff --git a/docs/uk/concepts/dreaming.md b/docs/uk/concepts/dreaming.md index 07fccd261..5ef5e25c4 100644 --- a/docs/uk/concepts/dreaming.md +++ b/docs/uk/concepts/dreaming.md @@ -1,69 +1,116 @@ --- read_when: - Ви хочете, щоб просування пам’яті виконувалося автоматично - - Ви хочете зрозуміти три фази dreaming + - Ви хочете зрозуміти, що робить кожна фаза dreaming - Ви хочете налаштувати консолідацію, не засмічуючи `MEMORY.md` -summary: 'Фонова консолідація пам’яті з трьома кооперативними фазами: light, deep і REM' -title: Dreaming (експериментально) +summary: Фонове консолідування пам’яті з фазами light, deep і REM, а також Dream Diary +title: Dreaming (експериментальна функція) x-i18n: - generated_at: "2026-04-05T23:42:30Z" + generated_at: "2026-04-06T00:33:27Z" model: gpt-5.4 provider: openai - source_hash: 9ba56b20013aa53f5f440fd79ea14dc67a61c4fb63ebe91b3fd183d09a842912 + source_hash: f27da718176bebf59fe8a80fddd4fb5b6d814ac5647f6c1e8344bcfb328db9de source_path: concepts/dreaming.md workflow: 15 --- -# Dreaming (експериментально) +# Dreaming (експериментальна функція) -Dreaming — це система фонової консолідації пам’яті в `memory-core`. Вона -повторно переглядає те, що з’являлося під час розмов, і вирішує, що варто -зберегти як довготривалий контекст. +Dreaming — це система фонового консолідування пам’яті в `memory-core`. +Вона допомагає OpenClaw переносити сильні короткострокові сигнали в довготривалу пам’ять, водночас +зберігаючи цей процес зрозумілим і придатним для перевірки. -Dreaming використовує три кооперативні **фази**, а не конкуруючі режими. Кожна фаза має -окреме завдання, записує в окрему ціль і виконується за власним розкладом. +Dreaming є **опційною функцією** і за замовчуванням вимкнена. -## Три фази +## Що записує dreaming -### Light +Dreaming зберігає два типи результатів: -Light dreaming впорядковує недавній хаос. Вона сканує недавні сліди пам’яті, усуває дублікати -за схожістю Жаккара, кластеризує пов’язані записи та готує кандидатні -спогади у спільному файлі сліду dreaming (`DREAMS.md`), коли ввімкнено inline-зберігання. +- **Стан машини** у `memory/.dreams/` (сховище recall, сигнали фаз, контрольні точки ingestion, блокування). +- **Людинозчитуваний результат** у `DREAMS.md` (або наявному `dreams.md`) і необов’язкових файлах звітів фаз у `memory/dreaming//YYYY-MM-DD.md`. -Light **не** записує нічого до `MEMORY.md`. Вона лише організовує та -готує. Уявіть: «що із сьогоднішнього може бути важливим пізніше?» +Просування до довготривалої пам’яті, як і раніше, записується лише в `MEMORY.md`. -### Deep +## Модель фаз -Deep dreaming вирішує, що стає довготривалою пам’яттю. Вона виконує справжню логіку -просування: зважене оцінювання за шістьма сигналами, порогові перевірки, кількість -згадувань, різноманітність унікальних запитів, згасання за давністю та фільтрацію за максимальним віком. +Dreaming використовує три взаємодоповнювальні фази: -Deep — це **єдина** фаза, якій дозволено записувати довготривалі факти до `MEMORY.md`. -Вона також відповідає за відновлення, коли пам’яті мало (рівень здоров’я падає нижче -налаштованого порога). Уявіть: «що є достатньо правдивим, щоб це зберегти?» +| Фаза | Призначення | Стійкий запис | +| ----- | ----------- | ------------- | +| Light | Сортує й підготовлює нещодавній короткостроковий матеріал | Ні | +| Deep | Оцінює та просуває довготривалі кандидати | Так (`MEMORY.md`) | +| REM | Осмислює теми та повторювані ідеї | Ні | -### REM +Ці фази є внутрішніми деталями реалізації, а не окремими користувацькими +«режимами». -REM dreaming шукає патерни та рефлексії. Вона аналізує недавні матеріали, -визначає повторювані теми через кластеризацію тегів понять і записує -нотатки вищого рівня та рефлексії до `DREAMS.md`, коли ввімкнено inline-зберігання. +### Фаза light -REM записує до `DREAMS.md` в inline-режимі, **а не** до `MEMORY.md`. -Її результат є інтерпретативним, а не канонічним. Уявіть: «який патерн я помічаю?» +Фаза light поглинає нещодавні щоденні сигнали пам’яті й сліди recall, усуває дублікати +та готує рядки-кандидати. -## Жорсткі межі +- Читає зі стану короткострокового recall і нещодавніх щоденних файлів пам’яті. +- Записує керований блок `## Light Sleep`, коли сховище включає вбудований результат. +- Фіксує сигнали підсилення для подальшого ранжування deep. +- Ніколи не записує в `MEMORY.md`. -| Фаза | Завдання | Записує до | НЕ записує до | -| ----- | ----------- | ------------------------ | ------------- | -| Light | Організація | `DREAMS.md` (inline-режим) | MEMORY.md | -| Deep | Збереження | MEMORY.md | -- | -| REM | Інтерпретація | `DREAMS.md` (inline-режим) | MEMORY.md | +### Фаза deep + +Фаза deep вирішує, що стане довготривалою пам’яттю. + +- Ранжує кандидатів за допомогою зваженого оцінювання та порогових перевірок. +- Вимагає проходження `minScore`, `minRecallCount` і `minUniqueQueries`. +- Перед записом повторно гідратує фрагменти з актуальних щоденних файлів, тому застарілі або видалені фрагменти пропускаються. +- Додає просунуті записи до `MEMORY.md`. +- Записує підсумок `## Deep Sleep` у `DREAMS.md` і за потреби записує `memory/dreaming/deep/YYYY-MM-DD.md`. + +### Фаза REM + +Фаза REM витягує закономірності та рефлексивні сигнали. + +- Формує зведення тем і рефлексій із нещодавніх короткострокових слідів. +- Записує керований блок `## REM Sleep`, коли сховище включає вбудований результат. +- Фіксує сигнали підсилення REM, які використовуються в ранжуванні deep. +- Ніколи не записує в `MEMORY.md`. + +## Dream Diary + +Dreaming також веде описовий **Dream Diary** у `DREAMS.md`. +Після того як у кожній фазі накопичується достатньо матеріалу, `memory-core` запускає фоновий +хід субагента в режимі best-effort (з використанням типової runtime-моделі) і додає короткий запис щоденника. + +Цей щоденник призначений для читання людьми в інтерфейсі Dreams, а не є джерелом просування. + +## Сигнали ранжування deep + +Ранжування deep використовує шість зважених базових сигналів плюс підсилення фаз: + +| Сигнал | Вага | Опис | +| ------ | ---- | ---- | +| Частота | 0.24 | Скільки короткострокових сигналів накопичив запис | +| Релевантність | 0.30 | Середня якість отримання для запису | +| Різноманітність запитів | 0.15 | Окремі контексти запитів/днів, у яких він з’являвся | +| Актуальність | 0.15 | Оцінка свіжості з часовим згасанням | +| Консолідація | 0.10 | Сила повторення впродовж кількох днів | +| Концептуальна насиченість | 0.06 | Щільність concept-tag із фрагмента/шляху | + +Влучання фаз light і REM додають невелике підсилення зі згасанням за давністю з +`memory/.dreams/phase-signals.json`. + +## Планування + +Коли цю функцію ввімкнено, `memory-core` автоматично керує одним cron-завданням для повного циклу +dreaming. Кожен цикл запускає фази по черзі: light -> REM -> deep. + +Поведінка типової періодичності: + +| Налаштування | За замовчуванням | +| ------------ | ---------------- | +| `dreaming.frequency` | `0 3 * * *` | ## Швидкий старт -Увімкнути всі три фази (рекомендовано): +Увімкніть dreaming: ```json { @@ -81,7 +128,7 @@ REM записує до `DREAMS.md` в inline-режимі, **а не** до `ME } ``` -Увімкнути лише deep-просування: +Увімкніть dreaming із власною періодичністю циклу: ```json { @@ -91,11 +138,8 @@ REM записує до `DREAMS.md` в inline-режимі, **а не** до `ME "config": { "dreaming": { "enabled": true, - "phases": { - "light": { "enabled": false }, - "deep": { "enabled": true }, - "rem": { "enabled": false } - } + "timezone": "America/Los_Angeles", + "frequency": "0 */6 * * *" } } } @@ -104,204 +148,56 @@ REM записує до `DREAMS.md` в inline-режимі, **а не** до `ME } ``` -## Конфігурація - -Усі налаштування dreaming розташовані в `plugins.entries.memory-core.config.dreaming` -у `openclaw.json`. Повний список ключів дивіться в [довіднику з конфігурації Memory](/uk/reference/memory-config#dreaming-experimental). - -### Глобальні налаштування - -| Ключ | Тип | Типово | Опис | -| ---------------- | --------- | ---------- | ------------------------------------------------------------ | -| `enabled` | `boolean` | `true` | Головний перемикач для всіх фаз | -| `timezone` | `string` | не задано | Часовий пояс для оцінки розкладу та групування дат dreaming | -| `verboseLogging` | `boolean` | `false` | Виводити докладні журнали dreaming для кожного запуску | -| `storage.mode` | `string` | `"inline"` | Inline `DREAMS.md`, окремі звіти або обидва варіанти | - -### Конфігурація фази Light - -| Ключ | Тип | Типово | Опис | -| ------------------ | ---------- | ------------------------------- | --------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути фазу light | -| `cron` | `string` | `0 */6 * * *` | Розклад (типово: кожні 6 годин) | -| `lookbackDays` | `number` | `2` | Скільки днів слідів сканувати | -| `limit` | `number` | `100` | Макс. кількість кандидатів для підготовки за запуск | -| `dedupeSimilarity` | `number` | `0.9` | Поріг Жаккара для дедуплікації | -| `sources` | `string[]` | `["daily","sessions","recall"]` | Джерела даних для сканування | - -### Конфігурація фази Deep - -| Ключ | Тип | Типово | Опис | -| --------------------- | ---------- | ----------------------------------------------- | ------------------------------------ | -| `enabled` | `boolean` | `true` | Увімкнути фазу deep | -| `cron` | `string` | `0 3 * * *` | Розклад (типово: щодня о 3:00) | -| `limit` | `number` | `10` | Макс. кількість кандидатів для просування за цикл | -| `minScore` | `number` | `0.8` | Мінімальний зважений бал для просування | -| `minRecallCount` | `number` | `3` | Мінімальний поріг кількості згадувань | -| `minUniqueQueries` | `number` | `3` | Мінімальна кількість унікальних запитів | -| `recencyHalfLifeDays` | `number` | `14` | Кількість днів, за яку бал давності зменшується вдвічі | -| `maxAgeDays` | `number` | `30` | Максимальний вік щоденної нотатки для просування | -| `sources` | `string[]` | `["daily","memory","sessions","logs","recall"]` | Джерела даних | - -### Конфігурація відновлення Deep - -Відновлення запускається, коли рівень здоров’я довготривалої пам’яті падає нижче порога. - -| Ключ | Тип | Типово | Опис | -| --------------------------------- | --------- | ------- | ------------------------------------------ | -| `recovery.enabled` | `boolean` | `true` | Увімкнути автоматичне відновлення | -| `recovery.triggerBelowHealth` | `number` | `0.35` | Поріг оцінки здоров’я для запуску відновлення | -| `recovery.lookbackDays` | `number` | `30` | Як далеко назад шукати матеріал для відновлення | -| `recovery.maxRecoveredCandidates` | `number` | `20` | Макс. кількість кандидатів для відновлення за запуск | -| `recovery.minRecoveryConfidence` | `number` | `0.9` | Мінімальна впевненість для кандидатів на відновлення | -| `recovery.autoWriteMinConfidence` | `number` | `0.97` | Поріг автозапису (без ручної перевірки) | - -### Конфігурація фази REM - -| Ключ | Тип | Типово | Опис | -| -------------------- | ---------- | --------------------------- | --------------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути фазу REM | -| `cron` | `string` | `0 5 * * 0` | Розклад (типово: щотижня, неділя 5:00) | -| `lookbackDays` | `number` | `7` | Скільки днів матеріалів аналізувати | -| `limit` | `number` | `10` | Макс. кількість патернів або тем для запису | -| `minPatternStrength` | `number` | `0.75` | Мінімальна сила спільної появи тегів | -| `sources` | `string[]` | `["memory","daily","deep"]` | Джерела даних для рефлексії | - -### Перевизначення виконання - -Кожна фаза приймає блок `execution` для перевизначення глобальних значень за замовчуванням: - -| Ключ | Тип | Типово | Опис | -| ----------------- | -------- | ------------ | ----------------------------- | -| `speed` | `string` | `"balanced"` | `fast`, `balanced` або `slow` | -| `thinking` | `string` | `"medium"` | `low`, `medium` або `high` | -| `budget` | `string` | `"medium"` | `cheap`, `medium`, `expensive` | -| `model` | `string` | не задано | Перевизначити модель для цієї фази | -| `maxOutputTokens` | `number` | не задано | Обмежити кількість вихідних токенів | -| `temperature` | `number` | не задано | Температура семплювання (0-2) | -| `timeoutMs` | `number` | не задано | Тайм-аут фази в мілісекундах | - -## Сигнали просування (фаза deep) - -Deep dreaming поєднує шість зважених сигналів. Для просування потрібно, щоб усі налаштовані -порогові перевірки пройшли одночасно. - -| Сигнал | Вага | Опис | -| ------------------- | ---- | -------------------------------------------------- | -| Частота | 0.24 | Як часто той самий запис згадувався | -| Релевантність | 0.30 | Середні бали згадування під час витягування | -| Різноманітність запитів | 0.15 | Кількість різних намірів запитів, у яких він з’являвся | -| Давність | 0.15 | Часове згасання (`recencyHalfLifeDays`, типово 14) | -| Консолідація | 0.10 | Винагорода за згадування, повторене в кілька днів | -| Концептуальна насиченість | 0.06 | Винагорода записам із багатшими похідними тегами понять | - -## Команди чату +## Slash-команда ``` -/dreaming status # Показати конфігурацію фаз і частоту запуску -/dreaming on # Увімкнути всі фази -/dreaming off # Вимкнути всі фази -/dreaming enable light|deep|rem # Увімкнути конкретну фазу -/dreaming disable light|deep|rem # Вимкнути конкретну фазу -/dreaming help # Показати довідку з використання +/dreaming status +/dreaming on +/dreaming off +/dreaming help ``` -## CLI-команди +## Робочий процес CLI -Переглядайте та застосовуйте deep-просування з командного рядка: +Використовуйте просування через CLI для попереднього перегляду або ручного застосування: ```bash -# Preview promotion candidates openclaw memory promote - -# Apply promotions to MEMORY.md openclaw memory promote --apply - -# Limit preview count openclaw memory promote --limit 5 - -# Include already-promoted entries -openclaw memory promote --include-promoted - -# Check dreaming status openclaw memory status --deep ``` -Повний довідник щодо прапорців дивіться в [memory CLI](/cli/memory). +Ручна команда `memory promote` за замовчуванням використовує пороги фази deep, якщо їх не перевизначено +прапорцями CLI. -### Інструменти попереднього перегляду та пояснення +## Ключові значення за замовчуванням -Ще дві підкоманди допомагають переглядати поведінку просування та REM без будь-якого запису: +Усі налаштування розташовані в `plugins.entries.memory-core.config.dreaming`. -```bash -# Explain why a candidate would or would not promote -openclaw memory promote-explain "meeting notes" +| Ключ | За замовчуванням | +| ---- | ---------------- | +| `enabled` | `false` | +| `frequency` | `0 3 * * *` | -# Preview REM reflections, candidate truths, and deep promotions -openclaw memory rem-harness --json -``` +Політика фаз, пороги й поведінка сховища є внутрішніми деталями реалізації +(не користувацькою конфігурацією). -Повний список параметрів дивіться в [memory CLI](/cli/memory). - -## Як це працює - -### Конвеєр фази Light - -1. Прочитати записи короткострокового згадування з `memory/.dreams/short-term-recall.json`. -2. Відфільтрувати записи в межах `lookbackDays` від поточного часу. -3. Усунути дублікати за схожістю Жаккара (налаштовуваний поріг). -4. Відсортувати за середнім балом згадування та взяти до `limit` записів. -5. Записати підготовлених кандидатів до `DREAMS.md` у блоці `## Light Sleep`, якщо - ввімкнено inline-зберігання. - -### Конвеєр фази Deep - -1. Прочитати та ранжувати кандидатів короткострокового згадування за зваженими сигналами. -2. Застосувати порогові перевірки: `minScore`, `minRecallCount`, `minUniqueQueries`. -3. Відфільтрувати за `maxAgeDays` та застосувати згасання за давністю. -4. Виконати fan-out по налаштованих робочих просторах пам’яті. -5. Перед записом повторно прочитати актуальну щоденну нотатку (пропустити застарілі або видалені фрагменти). -6. Додати відповідні записи до `MEMORY.md` з часовими мітками просування. -7. Позначити просунуті записи, щоб виключити їх із майбутніх циклів. -8. Якщо рівень здоров’я нижчий за `recovery.triggerBelowHealth`, запустити етап відновлення. - -### Конвеєр фази REM - -1. Прочитати недавні сліди пам’яті в межах `lookbackDays`. -2. Кластеризувати теги понять за спільною появою. -3. Відфільтрувати патерни за `minPatternStrength`. -4. Записати теми та рефлексії до `DREAMS.md` у блоці `## REM Sleep`, - якщо ввімкнено inline-зберігання. - -## Планування - -Кожна фаза автоматично керує власним cron-завданням. Коли dreaming увімкнено, -`memory-core` узгоджує керовані cron-завдання під час запуску gateway. Вам не потрібно -створювати записи cron вручну. - -| Фаза | Типовий розклад | Опис | -| ----- | --------------- | --------------------- | -| Light | `0 */6 * * *` | Кожні 6 годин | -| Deep | `0 3 * * *` | Щодня о 3:00 | -| REM | `0 5 * * 0` | Щотижня, неділя 5:00 | - -Перевизначте будь-який розклад за допомогою ключа `cron` відповідної фази. Усі розклади враховують глобальне -налаштування `timezone`. +Повний список ключів дивіться в [довіднику з конфігурації Memory](/uk/reference/memory-config#dreaming-experimental). ## Інтерфейс Dreams -Коли dreaming увімкнено, бічна панель Gateway показує вкладку **Dreams** зі -статистикою пам’яті (кількість короткострокових записів, кількість довготривалих записів, кількість просунутих записів) і часом -наступного запланованого циклу. Щоденні лічильники враховують `dreaming.timezone`, якщо його задано, -і в іншому разі використовують налаштований часовий пояс користувача. +Коли функцію ввімкнено, вкладка **Dreams** у Gateway показує: -Ручні запуски `openclaw memory promote` типово використовують ті самі пороги фази deep, -тому заплановане й виконуване на вимогу просування залишаються узгодженими, якщо ви не передаєте -перевизначення CLI. +- поточний стан увімкнення dreaming +- статус на рівні фаз і наявність керованого циклу +- кількість короткострокових, довготривалих і просунутих сьогодні записів +- час наступного запланованого запуску +- розгортаний засіб читання Dream Diary на основі `doctor.memory.dreamDiary` ## Пов’язане - [Memory](/uk/concepts/memory) - [Memory Search](/uk/concepts/memory-search) -- [довідник з конфігурації Memory](/uk/reference/memory-config) - [memory CLI](/cli/memory) +- [довідник з конфігурації Memory](/uk/reference/memory-config) diff --git a/docs/uk/concepts/memory-search.md b/docs/uk/concepts/memory-search.md index 4b66162e5..7e13333ec 100644 --- a/docs/uk/concepts/memory-search.md +++ b/docs/uk/concepts/memory-search.md @@ -1,59 +1,60 @@ --- read_when: - Ви хочете зрозуміти, як працює memory_search - - Ви хочете вибрати провайдера embeddings + - Ви хочете вибрати провайдера ембедингів - Ви хочете налаштувати якість пошуку -summary: Як memory search знаходить релевантні нотатки за допомогою embeddings і гібридного пошуку -title: Пошук у пам’яті +summary: Як пошук пам’яті знаходить релевантні нотатки за допомогою ембедингів і гібридного пошуку +title: Пошук пам’яті x-i18n: - generated_at: "2026-04-05T18:01:12Z" + generated_at: "2026-04-06T00:33:21Z" model: gpt-5.4 provider: openai - source_hash: 87b1cb3469c7805f95bca5e77a02919d1e06d626ad3633bbc5465f6ab9db12a2 + source_hash: b6541cd702bff41f9a468dad75ea438b70c44db7c65a4b793cbacaf9e583c7e9 source_path: concepts/memory-search.md workflow: 15 --- -# Пошук у пам’яті +# Пошук пам’яті `memory_search` знаходить релевантні нотатки з ваших файлів пам’яті, навіть якщо -формулювання відрізняється від оригінального тексту. Він працює, індексуючи пам’ять у невеликі -фрагменти та шукаючи в них за допомогою embeddings, ключових слів або обох підходів. +формулювання відрізняється від початкового тексту. Це працює шляхом індексації пам’яті на малі +фрагменти та пошуку в них за допомогою ембедингів, ключових слів або обох підходів. ## Швидкий старт -Якщо у вас налаштовано API-ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам’яті -працює автоматично. Щоб явно вказати провайдера: +Якщо у вас налаштовано API-ключ OpenAI, Gemini, Voyage або Mistral, пошук у +пам’яті працює автоматично. Щоб явно вказати провайдера: ```json5 { agents: { defaults: { memorySearch: { - provider: "openai", // or "gemini", "local", "ollama", etc. + provider: "openai", // або "gemini", "local", "ollama" тощо }, }, }, } ``` -Для локальних embeddings без API-ключа використовуйте `provider: "local"` (потрібен +Для локальних ембедингів без API-ключа використовуйте `provider: "local"` (потрібен node-llama-cpp). ## Підтримувані провайдери -| Провайдер | ID | Потрібен API-ключ | Примітки | -| --------- | --------- | ----------------- | -------------------------------- | -| OpenAI | `openai` | Так | Автовиявлення, швидко | -| Gemini | `gemini` | Так | Підтримує індексування зображень/аудіо | -| Voyage | `voyage` | Так | Автовиявлення | -| Mistral | `mistral` | Так | Автовиявлення | -| Ollama | `ollama` | Ні | Локальний, потрібно вказати явно | -| Local | `local` | Ні | Модель GGUF, завантаження ~0.6 ГБ | +| Провайдер | ID | Потрібен API-ключ | Примітки | +| --------- | --------- | ----------------- | ---------------------------------------------------- | +| OpenAI | `openai` | Так | Автовизначення, швидко | +| Gemini | `gemini` | Так | Підтримує індексацію зображень/аудіо | +| Voyage | `voyage` | Так | Автовизначення | +| Mistral | `mistral` | Так | Автовизначення | +| Bedrock | `bedrock` | Ні | Автовизначення, коли ланцюжок облікових даних AWS розв’язується | +| Ollama | `ollama` | Ні | Локально, потрібно вказати явно | +| Local | `local` | Ні | Модель GGUF, завантаження ~0.6 ГБ | ## Як працює пошук -OpenClaw запускає два шляхи пошуку паралельно й об’єднує результати: +OpenClaw паралельно запускає два шляхи пошуку та об’єднує результати: ```mermaid flowchart LR @@ -66,39 +67,39 @@ flowchart LR M --> R["Top Results"] ``` -- **Векторний пошук** знаходить нотатки зі схожим змістом («gateway host» відповідає - «машина, на якій працює OpenClaw»). +- **Векторний пошук** знаходить нотатки зі схожим змістом ("gateway host" відповідає + "машина, на якій працює OpenClaw"). - **Пошук за ключовими словами BM25** знаходить точні збіги (ID, рядки помилок, ключі конфігурації). -Якщо доступний лише один шлях (немає embeddings або FTS), окремо працює лише він. +Якщо доступний лише один шлях (немає ембедингів або немає FTS), інший не використовується. -## Поліпшення якості пошуку +## Покращення якості пошуку -Дві необов’язкові функції допомагають, коли у вас велика історія нотаток: +Дві необов’язкові можливості допомагають, коли у вас велика історія нотаток: -### Temporal decay +### Часове згасання -Старі нотатки поступово втрачають вагу в ранжуванні, щоб новіша інформація піднімалася вище. -Із типовим періодом напіврозпаду 30 днів нотатка з минулого місяця матиме 50% від -своєї початкової ваги. Evergreen-файли на кшталт `MEMORY.md` ніколи не піддаються зниженню ваги. +Старі нотатки поступово втрачають вагу в ранжуванні, тож новіша інформація з’являється першою. +За типовим періодом напіврозпаду 30 днів нотатка з минулого місяця отримує 50% від +своєї початкової ваги. Для незмінних файлів, як-от `MEMORY.md`, згасання ніколи не застосовується. -Увімкніть temporal decay, якщо ваш агент має щоденні нотатки за багато місяців і застаріла +Увімкніть часове згасання, якщо ваш агент має щоденні нотатки за багато місяців і застаріла інформація постійно випереджає недавній контекст. ### MMR (різноманітність) -Зменшує кількість повторюваних результатів. Якщо п’ять нотаток згадують ту саму конфігурацію роутера, MMR -гарантує, що верхні результати охоплюватимуть різні теми замість повторень. +Зменшує кількість надлишкових результатів. Якщо п’ять нотаток згадують одну й ту саму конфігурацію маршрутизатора, MMR +гарантує, що верхні результати охоплюють різні теми, а не повторюються. -Увімкніть MMR, якщо `memory_search` постійно повертає майже однакові фрагменти з +Увімкніть MMR, якщо `memory_search` постійно повертає майже дубльовані фрагменти з різних щоденних нотаток. -### Увімкнення обох +### Увімкнути обидва ```json5 { @@ -119,29 +120,30 @@ flowchart LR ## Мультимодальна пам’ять -З Gemini Embedding 2 ви можете індексувати зображення та аудіофайли разом із -Markdown. Пошукові запити лишаються текстовими, але зіставляються з візуальним та аудіовмістом. Див. [довідник конфігурації пам’яті](/reference/memory-config) для +З Gemini Embedding 2 ви можете індексувати зображення й аудіофайли разом із +Markdown. Пошукові запити залишаються текстовими, але вони зіставляються з візуальним і аудіовмістом. Див. +[довідник із конфігурації пам’яті](/uk/reference/memory-config) для налаштування. -## Пошук у пам’яті сесій +## Пошук у пам’яті сеансу -За бажанням ви можете індексувати транскрипти сесій, щоб `memory_search` міг пригадувати -попередні розмови. Це вмикається окремо через -`memorySearch.experimental.sessionMemory`. Докладніше див. у -[довіднику конфігурації](/reference/memory-config). +Ви можете за бажанням індексувати стенограми сеансів, щоб `memory_search` міг згадувати +попередні розмови. Це вмикається явно через +`memorySearch.experimental.sessionMemory`. Див. +[довідник із конфігурації](/uk/reference/memory-config) для деталей. ## Усунення несправностей -**Немає результатів?** Виконайте `openclaw memory status`, щоб перевірити індекс. Якщо він порожній, запустіть +**Немає результатів?** Виконайте `openclaw memory status`, щоб перевірити індекс. Якщо він порожній, виконайте `openclaw memory index --force`. -**Лише збіги за ключовими словами?** Можливо, ваш провайдер embeddings не налаштований. Перевірте +**Лише збіги за ключовими словами?** Можливо, ваш провайдер ембедингів не налаштований. Перевірте `openclaw memory status --deep`. **Не знаходиться текст CJK?** Перебудуйте індекс FTS за допомогою `openclaw memory index --force`. -## Додаткове читання +## Подальше читання -- [Пам’ять](/concepts/memory) -- структура файлів, бекенди, інструменти -- [Довідник конфігурації пам’яті](/reference/memory-config) -- усі параметри конфігурації +- [Пам’ять](/uk/concepts/memory) -- структура файлів, бекенди, інструменти +- [Довідник із конфігурації пам’яті](/uk/reference/memory-config) -- усі параметри конфігурації diff --git a/docs/uk/concepts/memory.md b/docs/uk/concepts/memory.md index 40bb1a11a..ce708d844 100644 --- a/docs/uk/concepts/memory.md +++ b/docs/uk/concepts/memory.md @@ -1,37 +1,39 @@ --- read_when: - Ви хочете зрозуміти, як працює пам’ять - - Ви хочете знати, які файли пам’яті слід записувати -summary: Як OpenClaw запам’ятовує речі між сесіями + - Ви хочете знати, які файли пам’яті потрібно записувати +summary: Як OpenClaw запам’ятовує дані між сеансами title: Огляд пам’яті x-i18n: - generated_at: "2026-04-05T18:01:15Z" + generated_at: "2026-04-06T00:33:24Z" model: gpt-5.4 provider: openai - source_hash: 2410deead2e7b7891ffc6a4aaf9c368a4b874dc2e850c18eb0e607da1ef75e1b + source_hash: d19d4fa9c4b3232b7a97f7a382311d2a375b562040de15e9fe4a0b1990b825e7 source_path: concepts/memory.md workflow: 15 --- # Огляд пам’яті -OpenClaw запам’ятовує речі, записуючи **звичайні Markdown-файли** у робочому -просторі вашого агента. Модель лише «пам’ятає» те, що зберігається на диск — жодного -прихованого стану немає. +OpenClaw запам’ятовує дані, записуючи **звичайні файли Markdown** у робочому +просторі вашого агента. Модель «пам’ятає» лише те, що зберігається на диску — +прихованого стану не існує. ## Як це працює -У вашого агента є два місця для зберігання пам’яті: +Ваш агент має три файли, пов’язані з пам’яттю: -- **`MEMORY.md`** — довгострокова пам’ять. Стійкі факти, уподобання та - рішення. Завантажується на початку кожної DM-сесії. +- **`MEMORY.md`** — довготривала пам’ять. Стійкі факти, уподобання та + рішення. Завантажується на початку кожного сеансу DM. - **`memory/YYYY-MM-DD.md`** — щоденні нотатки. Поточний контекст і спостереження. - Нотатки за сьогодні й учора завантажуються автоматично. + Нотатки за сьогодні та вчора завантажуються автоматично. +- **`DREAMS.md`** (експериментально, необов’язково) — щоденник снів і зведення + проходів dreaming для перегляду людиною. Ці файли зберігаються в робочому просторі агента (типово `~/.openclaw/workspace`). -Якщо ви хочете, щоб агент щось запам’ятав, просто попросіть його: «Запам’ятай, що я +Якщо ви хочете, щоб ваш агент щось запам’ятав, просто попросіть його: «Запам’ятай, що я віддаю перевагу TypeScript». Він запише це у відповідний файл. @@ -39,73 +41,75 @@ OpenClaw запам’ятовує речі, записуючи **звичайн Агент має два інструменти для роботи з пам’яттю: -- **`memory_search`** — знаходить релевантні нотатки за допомогою семантичного пошуку, навіть коли - формулювання відрізняється від оригінального. +- **`memory_search`** — знаходить релевантні нотатки за допомогою семантичного пошуку, навіть якщо + формулювання відрізняється від оригіналу. - **`memory_get`** — читає конкретний файл пам’яті або діапазон рядків. -Обидва інструменти надаються активним плагіном пам’яті (типово: `memory-core`). +Обидва інструменти надаються активним plugin пам’яті (типово: `memory-core`). ## Пошук у пам’яті -Коли налаштовано провайдера embedding, `memory_search` використовує **гібридний -пошук** — поєднуючи векторну схожість (семантичне значення) з пошуком за ключовими словами -(точні терміни, як-от ID та символи коду). Це працює «з коробки», щойно у вас є +Коли налаштовано провайдера ембедингів, `memory_search` використовує **гібридний +пошук** — поєднуючи векторну схожість (семантичне значення) із зіставленням за ключовими словами +(точні терміни, як-от ID та символи коду). Це працює одразу після того, як у вас з’явиться API-ключ будь-якого підтримуваного провайдера. -OpenClaw автоматично визначає вашого провайдера embedding за доступними API-ключами. Якщо у -вас налаштовано ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам’яті +OpenClaw автоматично визначає вашого провайдера ембедингів із доступних API-ключів. Якщо у вас +налаштовано ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам’яті вмикається автоматично. Докладніше про те, як працює пошук, параметри налаштування та налаштування провайдера див. у -[Пошук у пам’яті](/concepts/memory-search). +[Пошук у пам’яті](/uk/concepts/memory-search). ## Бекенди пам’яті - -На основі SQLite. Працює «з коробки» з пошуком за ключовими словами, векторною схожістю та + +На основі SQLite. Працює одразу з пошуком за ключовими словами, векторною схожістю та гібридним пошуком. Без додаткових залежностей. - -Локальний sidecar із пріоритетом локальної роботи, з reranking, розширенням запитів і можливістю індексувати -каталоги поза робочим простором. + +Локальний sidecar із пріоритетом локальної роботи, із reranking, розширенням запитів і можливістю індексувати +каталоги поза межами робочого простору. - -AI-native пам’ять між сесіями з моделюванням користувача, семантичним пошуком і -обізнаністю про кількох агентів. Потрібне встановлення плагіна. + +AI-native пам’ять між сеансами з моделюванням користувача, семантичним пошуком і +обізнаністю про кількох агентів. Потрібне встановлення plugin. -## Автоматичне скидання в пам’ять +## Автоматичне скидання пам’яті -Перш ніж [compaction](/concepts/compaction) підсумує вашу розмову, OpenClaw +Перед тим як [compaction](/uk/concepts/compaction) підсумує вашу розмову, OpenClaw виконує тихий хід, який нагадує агенту зберегти важливий контекст у файли -пам’яті. Це типово ввімкнено — вам не потрібно нічого налаштовувати. +пам’яті. Це ввімкнено типово — вам не потрібно нічого налаштовувати. -Скидання в пам’ять запобігає втраті контексту під час compaction. Якщо у вашого агента є -важливі факти в розмові, які ще не записані у файл, вони -будуть автоматично збережені до того, як відбудеться підсумовування. +Скидання пам’яті запобігає втраті контексту під час compaction. Якщо у розмові вашого агента є +важливі факти, які ще не записані у файл, вони будуть автоматично збережені +перед створенням підсумку. ## Dreaming (експериментально) -Dreaming — це необов’язковий фоновий етап консолідації пам’яті. Він повторно переглядає -короткострокові згадки з щоденних файлів (`memory/YYYY-MM-DD.md`), оцінює їх і -переносить у довгострокову пам’ять (`MEMORY.md`) лише кваліфіковані елементи. +Dreaming — це необов’язковий фоновий процес консолідації пам’яті. Він збирає +короткострокові сигнали, оцінює кандидатів і просуває в довготривалу пам’ять +(`MEMORY.md`) лише відповідні елементи. -Його призначення — підтримувати високу цінність довгострокової пам’яті: +Його створено для того, щоб підтримувати високу значущість довготривалої пам’яті: - **Добровільне ввімкнення**: типово вимкнено. -- **За розкладом**: коли ввімкнено, `memory-core` автоматично керує - періодичним tasks. -- **Порогова модель**: перенесення мають пройти перевірки за оцінкою, частотою - згадування та різноманітністю запитів. +- **За розкладом**: коли ввімкнено, `memory-core` автоматично керує одним повторюваним cron-завданням + для повного проходу dreaming. +- **З порогами**: просування мають пройти перевірки за оцінкою, частотою згадування та + різноманітністю запитів. +- **Доступне для перегляду**: підсумки фаз і записи щоденника записуються до `DREAMS.md` + для перегляду людиною. -Про поведінку режимів (`off`, `core`, `rem`, `deep`), сигнали оцінювання та параметри -налаштування див. [Dreaming (експериментально)](/concepts/dreaming). +Щоб дізнатися про поведінку фаз, сигнали оцінювання та подробиці Щоденника снів, див. +[Dreaming (експериментально)](/uk/concepts/dreaming). ## CLI @@ -117,12 +121,12 @@ openclaw memory index --force # Перебудувати індекс ## Подальше читання -- [Builtin Memory Engine](/concepts/memory-builtin) — типовий бекенд SQLite -- [QMD Memory Engine](/concepts/memory-qmd) — розширений локальний sidecar -- [Honcho Memory](/concepts/memory-honcho) — AI-native пам’ять між сесіями -- [Memory Search](/concepts/memory-search) — конвеєр пошуку, провайдери та +- [Вбудований рушій пам’яті](/uk/concepts/memory-builtin) — типовий бекенд SQLite +- [Рушій пам’яті QMD](/uk/concepts/memory-qmd) — розширений локальний sidecar +- [Пам’ять Honcho](/uk/concepts/memory-honcho) — AI-native пам’ять між сеансами +- [Пошук у пам’яті](/uk/concepts/memory-search) — конвеєр пошуку, провайдери та налаштування -- [Dreaming (experimental)](/concepts/dreaming) — фонове перенесення - з короткострокового згадування в довгострокову пам’ять -- [Memory configuration reference](/reference/memory-config) — усі параметри конфігурації -- [Compaction](/concepts/compaction) — як compaction взаємодіє з пам’яттю +- [Dreaming (експериментально)](/uk/concepts/dreaming) — фонове просування + з короткострокового пригадування до довготривалої пам’яті +- [Довідник із конфігурації пам’яті](/uk/reference/memory-config) — усі параметри конфігурації +- [Compaction](/uk/concepts/compaction) — як compaction взаємодіє з пам’яттю diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md index 62dcd6474..79f9cd4e6 100644 --- a/docs/uk/gateway/configuration-reference.md +++ b/docs/uk/gateway/configuration-reference.md @@ -1,56 +1,56 @@ --- read_when: - - Вам потрібна точна семантика полів конфігурації або значення за замовчуванням - - Ви перевіряєте блоки конфігурації каналів, моделей, gateway або інструментів + - Вам потрібні точні семантика або значення за замовчуванням конфігурації на рівні полів + - Ви перевіряєте блоки конфігурації каналу, моделі, gateway або інструментів summary: Повний довідник для кожного ключа конфігурації OpenClaw, значень за замовчуванням і налаштувань каналів -title: Довідник з конфігурації +title: Довідник конфігурації x-i18n: - generated_at: "2026-04-05T20:48:22Z" + generated_at: "2026-04-06T00:38:50Z" model: gpt-5.4 provider: openai - source_hash: 46c05fdae14b9cb5a4baadd6d906145c3d875356ec5d728b483e85ee12c04b44 + source_hash: 5ea4ffa8910734c7d4dbc0e8ae1db291aae5e95c27ba543d38af8315017748b8 source_path: gateway/configuration-reference.md workflow: 15 --- -# Довідник з конфігурації +# Довідник конфігурації -Усі поля, доступні в `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration). +Кожне поле, доступне в `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration). -Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано. +Формат конфігурації — **JSON5** (дозволені коментарі й коми в кінці). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано. --- ## Канали -Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не вказано `enabled: false`). +Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`). -### Доступ до DM і груп +### Доступ до особистих повідомлень і груп -Усі канали підтримують політики DM і політики груп: +Усі канали підтримують політики для особистих повідомлень і політики для груп: | Політика DM | Поведінка | | ------------------- | -------------------------------------------------------------- | -| `pairing` (default) | Невідомі відправники отримують одноразовий код pairing; власник має підтвердити | -| `allowlist` | Лише відправники з `allowFrom` (або зі сховища paired allow) | -| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | -| `disabled` | Ігнорувати всі вхідні DM | +| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | +| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів сполучення) | +| `open` | Дозволити всі вхідні особисті повідомлення (потрібно `allowFrom: ["*"]`) | +| `disabled` | Ігнорувати всі вхідні особисті повідомлення | -| Політика груп | Поведінка | -| --------------------- | ------------------------------------------------------ | -| `allowlist` (default) | Лише групи, що відповідають налаштованому allowlist | -| `open` | Обійти allowlist груп (гейтінг згадок усе ще діє) | -| `disabled` | Блокувати всі повідомлення груп/кімнат | +| Політика груп | Поведінка | +| -------------------- | ------------------------------------------------------- | +| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволу | +| `open` | Обійти списки дозволу для груп (застосовується лише перевірка згадок) | +| `disabled` | Блокувати всі повідомлення груп/кімнат | -`channels.defaults.groupPolicy` задає значення за замовчуванням, якщо `groupPolicy` постачальника не встановлено. -Коди pairing спливають через 1 годину. Кількість очікуваних запитів на pairing DM обмежена **3 на канал**. -Якщо блок постачальника повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) з попередженням під час запуску. +`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` провайдера не встановлено. +Коди сполучення дійсні 1 годину. Очікувані запити на сполучення DM обмежено до **3 на канал**. +Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. ### Перевизначення моделі для каналів -Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли для сесії ще не встановлено перевизначення моделі (наприклад, через `/model`). +Використовуйте `channels.modelByChannel`, щоб прив’язати конкретні ID каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Прив’язка каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, установленого через `/model`). ```json5 { @@ -71,9 +71,9 @@ x-i18n: } ``` -### Значення каналів за замовчуванням і heartbeat +### Значення за замовчуванням для каналів і heartbeat -Використовуйте `channels.defaults` для спільної політики груп і поведінки heartbeat для всіх постачальників: +Використовуйте `channels.defaults` для спільної поведінки політики груп і heartbeat для всіх провайдерів: ```json5 { @@ -91,15 +91,15 @@ x-i18n: } ``` -- `channels.defaults.groupPolicy`: резервна політика груп, якщо `groupPolicy` на рівні постачальника не встановлено. -- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (default, включати весь процитований/потоковий/історичний контекст), `allowlist` (включати контекст лише від відправників з allowlist), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення на рівні каналу: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: включати здорові статуси каналів у вивід heartbeat. -- `channels.defaults.heartbeat.showAlerts`: включати деградовані/помилкові статуси у вивід heartbeat. +- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не встановлено. +- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/потоків/історії), `allowlist` (включати контекст лише від відправників зі списку дозволу), `allowlist_quote` (як `allowlist`, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: включати стани справних каналів у вивід heartbeat. +- `channels.defaults.heartbeat.showAlerts`: включати стани деградації/помилок у вивід heartbeat. - `channels.defaults.heartbeat.useIndicator`: відображати компактний heartbeat у стилі індикатора. ### WhatsApp -WhatsApp працює через web channel gateway (Baileys Web). Він запускається автоматично, коли існує пов’язана сесія. +WhatsApp працює через web-канал gateway (Baileys Web). Він запускається автоматично, коли існує прив’язана сесія. ```json5 { @@ -110,7 +110,7 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за textChunkLimit: 4000, chunkMode: "length", // length | newline mediaMaxMb: 50, - sendReadReceipts: true, // blue ticks (false у режимі self-chat) + sendReadReceipts: true, // сині галочки (false у режимі self-chat) groups: { "*": { requireMention: true }, }, @@ -132,7 +132,7 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` - + ```json5 { @@ -150,10 +150,10 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` -- Вихідні команди за замовчуванням використовують акаунт `default`, якщо він є; інакше — перший налаштований ID акаунта (відсортований). -- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- Застарілий каталог автентифікації Baileys для одного акаунта мігрується командою `openclaw doctor` у `whatsapp/default`. -- Перевизначення на рівні акаунта: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше — перший налаштований ID облікового запису (відсортовано). +- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується через `openclaw doctor` у `whatsapp/default`. +- Перевизначення на рівні облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -171,24 +171,24 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за "*": { requireMention: true }, "-1001234567890": { allowFrom: ["@admin"], - systemPrompt: "Залишай відповіді короткими.", + systemPrompt: "Зберігай відповіді короткими.", topics: { "99": { requireMention: false, skills: ["search"], - systemPrompt: "Дотримуйся теми.", + systemPrompt: "Не відхиляйся від теми.", }, }, }, }, customCommands: [ - { command: "backup", description: "Git backup" }, + { command: "backup", description: "Git резервна копія" }, { command: "generate", description: "Створити зображення" }, ], historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, - streaming: "partial", // off | partial | block | progress (default: off; явно вмикайте, щоб уникнути rate limits на preview-edit) + streaming: "partial", // off | partial | block | progress (типово: off; увімкніть явно, щоб уникнути обмежень rate limit на редагування попереднього перегляду) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, @@ -211,13 +211,13 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` -- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlink відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для акаунта default. -- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- У багатоакаунтних конфігураціях (2+ ID акаунтів) установіть явний default (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього бракує або значення невалідне. -- `configWrites: false` блокує записи конфігурації, ініційовані з Telegram (міграції ID supergroup, `/config set|unset`). -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі ACP-прив’язки для тем форумів (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- Прев’ю потоку Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах). -- Політика retry: див. [Retry policy](/uk/concepts/retry). +- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням. +- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- У багатооблікових конфігураціях (2+ ID облікових записів) установіть явне значення за замовчуванням (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього немає або воно некоректне. +- `configWrites: false` блокує ініційовані з Telegram записи конфігурації (міграції ID супергруп, `/config set|unset`). +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- Попередній перегляд потоку в Telegram використовує `sendMessage` + `editMessageText` (працює в особистих і групових чатах). +- Політика повторних спроб: див. [Retry policy](/uk/concepts/retry). ### Discord @@ -272,7 +272,7 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за historyLimit: 20, textChunkLimit: 2000, chunkMode: "length", // length | newline - streaming: "off", // off | partial | block | progress (progress зіставляється з partial у Discord) + streaming: "off", // off | partial | block | progress (progress відповідає partial у Discord) maxLinesPerMessage: 17, ui: { components: { @@ -283,7 +283,7 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за enabled: true, idleHours: 24, maxAgeHours: 0, - spawnSubagentSessions: false, // opt-in для sessions_spawn({ thread: true }) + spawnSubagentSessions: false, // увімкнення для sessions_spawn({ thread: true }) }, voice: { enabled: true, @@ -319,36 +319,36 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` -- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для акаунта default. -- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування retry/політики акаунта все одно беруться з вибраного акаунта в активному знімку runtime. -- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- Використовуйте `user:` (DM) або `channel:` (канал guild) як цілі доставки; прості числові ID відхиляються. -- Slug guild — у нижньому регістрі, пробіли замінено на `-`; ключі каналів використовують slug-ім’я (без `#`). Віддавайте перевагу ID guild. -- Повідомлення, створені ботом, за замовчуванням ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). -- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here). -- `maxLinesPerMessage` (default 17) розбиває довгі повідомлення, навіть якщо вони коротші за 2000 символів. -- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до thread у Discord: - - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до thread (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` та прив’язана доставка/маршрутизація) - - `idleHours`: перевизначення Discord для автоматичного unfocus через неактивність у годинах (`0` вимикає) +- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням. +- Прямі вихідні виклики, які явно передають Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політики облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. +- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- Використовуйте `user:` (DM) або `channel:` (канал guild) для цілей доставки; прості числові ID відхиляються. +- Slug для guild — нижній регістр із заміною пробілів на `-`; ключі каналів використовують slug-ім’я (без `#`). Віддавайте перевагу ID guild. +- Повідомлення, написані ботами, типово ігноруються. `allowBots: true` увімкне їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення від ботів, які згадують бота (власні повідомлення все одно фільтруються). +- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення на рівні каналу) відкидає повідомлення, що згадують іншого користувача або роль, але не бота (крім @everyone/@here). +- `maxLinesPerMessage` (типово 17) розбиває довгі по висоті повідомлення, навіть якщо вони коротші за 2000 символів. +- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до потоків Discord: + - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація) + - `idleHours`: перевизначення Discord для автоматичного зняття фокусу через неактивність у годинах (`0` вимикає) - `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає) - - `spawnSubagentSessions`: opt-in перемикач для автоматичного створення/прив’язки thread у `sessions_spawn({ thread: true })` -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі ACP-прив’язки для каналів і thread (використовуйте ID каналу/thread у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). + - `spawnSubagentSessions`: перемикач увімкнення для автоматичного створення/прив’язки потоку через `sessions_spawn({ thread: true })` +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і потоків (використовуйте ID каналу/потоку в `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). - `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів Discord components v2. -- `channels.discord.voice` вмикає розмови у voice channel Discord і необов’язкові auto-join + перевизначення TTS. -- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (`true` і `24` за замовчуванням). -- OpenClaw також намагається відновити voice receive, виходячи й повторно приєднуючись до voice session після повторюваних помилок дешифрування. -- `channels.discord.streaming` — канонічний ключ режиму потоку. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично. -- `channels.discord.autoPresence` зіставляє доступність runtime зі статусом бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. -- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним ім’ям/tag (режим break-glass для сумісності). -- `channels.discord.execApprovals`: доставка native exec approval у Discord і авторизація погоджувачів. - - `enabled`: `true`, `false` або `"auto"` (default). У режимі auto exec approvals активуються, коли погоджувачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Discord, яким дозволено схвалювати exec requests. Якщо не вказано, використовується `commands.ownerAllowFrom`. - - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, approvals пересилаються для всіх агентів. +- `channels.discord.voice` увімкнює розмови у voice-каналах Discord і необов’язкові перевизначення auto-join + TTS. +- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (`true` і `24` типово). +- OpenClaw додатково намагається відновити прийом голосу, виходячи й повторно входячи в голосову сесію після повторних збоїв дешифрування. +- `channels.discord.streaming` — канонічний ключ режиму потокової передачі. Застарілі значення `streamMode` і булеві `streaming` мігруються автоматично. +- `channels.discord.autoPresence` відображає доступність runtime у статус бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. +- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінними іменами/тегами (аварійний режим сумісності). +- `channels.discord.execApprovals`: доставка погоджень exec нативно через Discord і авторизація схвалювачів. + - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto погодження exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовується `commands.ownerAllowFrom`. + - `agentFilter`: необов’язковий список дозволу ID агентів. Якщо опустити, погодження пересилатимуться для всіх агентів. - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (default) надсилає в DM погоджувачів, `"channel"` — у вихідний канал, `"both"` — в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені погоджувачі. - - `cleanupAfterResolve`: якщо `true`, видаляє approval DM після схвалення, відхилення або timeout. + - `target`: куди надсилати запити на погодження. `"dm"` (типово) надсилає в DM схвалювачам, `"channel"` — у початковий канал, `"both"` — у обидва. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені схвалювачі. + - `cleanupAfterResolve`: коли `true`, видаляє DM із погодженнями після схвалення, відхилення або тайм-ауту. -**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, default), `all` (усі повідомлення), `allowlist` (із `guilds..users` для всіх повідомлень). +**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (від `guilds..users` для всіх повідомлень). ### Google Chat @@ -379,11 +379,11 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` -- JSON service account: вбудовано (`serviceAccount`) або з файла (`serviceAccountFile`). -- Також підтримується Service account SecretRef (`serviceAccountRef`). -- Резервні env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Використовуйте `spaces/` або `users/` як цілі доставки. -- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним email principal (режим break-glass для сумісності). +- JSON облікового запису служби: вбудований (`serviceAccount`) або через файл (`serviceAccountFile`). +- Також підтримується SecretRef для облікового запису служби (`serviceAccountRef`). +- Резервні значення env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- Використовуйте `spaces/` або `users/` для цілей доставки. +- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним email principal (аварійний режим сумісності). ### Slack @@ -433,8 +433,8 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за typingReaction: "hourglass_flowing_sand", textChunkLimit: 4000, chunkMode: "length", - streaming: "partial", // off | partial | block | progress (режим прев’ю) - nativeStreaming: true, // використовувати native streaming API Slack, коли streaming=partial + streaming: "partial", // off | partial | block | progress (режим попереднього перегляду) + nativeStreaming: true, // використовувати нативний Slack streaming API, коли streaming=partial mediaMaxMb: 20, execApprovals: { enabled: "auto", // true | false | "auto" @@ -448,30 +448,30 @@ WhatsApp працює через web channel gateway (Baileys Web). Він за } ``` -- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резерв через env для акаунта default). -- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для кожного акаунта). -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають прості текстові - рядки або об’єкти SecretRef. -- Знімки акаунтів Slack показують поля джерела/статусу для кожного облікового - даного, наприклад `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode — - `signingSecretStatus`. `configured_unavailable` означає, що акаунт - налаштований через SecretRef, але поточний шлях command/runtime не зміг - розв’язати значення секрету. -- `configWrites: false` блокує записи конфігурації, ініційовані зі Slack. -- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- `channels.slack.streaming` — канонічний ключ режиму потоку. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично. -- Використовуйте `user:` (DM) або `channel:` як цілі доставки. +- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резерву env облікового запису за замовчуванням). +- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або на рівні облікового запису). +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні рядки + або об’єкти SecretRef. +- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового даного, такі як + `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode — + `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис + налаштований через SecretRef, але поточний шлях команди/runtime не зміг + визначити значення секрету. +- `configWrites: false` блокує ініційовані зі Slack записи конфігурації. +- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- `channels.slack.streaming` — канонічний ключ режиму потокової передачі. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично. +- Використовуйте `user:` (DM) або `channel:` для цілей доставки. -**Режими сповіщень про реакції:** `off`, `own` (default), `all`, `allowlist` (із `reactionAllowlist`). +**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). -**Ізоляція thread session:** `thread.historyScope` — для кожного thread окремо (default) або спільний для каналу. `thread.inheritParent` копіює transcript батьківського каналу в нові threads. +**Ізоляція сесій потоків:** `thread.historyScope` є окремим для потоку (типово) або спільним для всього каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові потоки. -- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а після завершення прибирає її. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`. -- `channels.slack.execApprovals`: доставка native exec approval у Slack і авторизація погоджувачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). +- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а після завершення видаляє її. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: доставка погоджень exec нативно через Slack і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). -| Група дій | Default | Примітки | -| ----------- | ------- | ----------------------- | -| reactions | увімкнено | Реагування + список реакцій | +| Група дій | Типово | Примітки | +| ----------- | -------- | ----------------------- | +| reactions | увімкнено | Реакції + список реакцій | | messages | увімкнено | Читання/надсилання/редагування/видалення | | pins | увімкнено | Закріпити/відкріпити/список | | memberInfo | увімкнено | Інформація про учасника | @@ -496,10 +496,10 @@ Mattermost постачається як plugin: `openclaw plugins install @open "team-channel-id": { requireMention: false }, }, commands: { - native: true, // opt-in + native: true, // увімкнення nativeSkills: true, callbackPath: "/api/channels/mattermost/command", - // Необов’язкова явна URL-адреса для reverse-proxy/public deployments + // Необов’язкова явна URL для reverse proxy/публічних розгортань callbackUrl: "https://gateway.example.com/api/channels/mattermost/command", }, textChunkLimit: 4000, @@ -509,23 +509,23 @@ Mattermost постачається як plugin: `openclaw plugins install @open } ``` -Режими чату: `oncall` (відповідати на @-згадку, default), `onmessage` (на кожне повідомлення), `onchar` (повідомлення, що починаються з префікса trigger). +Режими чату: `oncall` (відповідати на @-згадки, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера). -Коли native commands Mattermost увімкнено: +Коли увімкнено нативні команди Mattermost: -- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою. -- `commands.callbackUrl` має вказувати на endpoint gateway OpenClaw і бути досяжним із сервера Mattermost. -- Native slash callbacks автентифікуються токенами кожної команди, - які Mattermost повертає під час реєстрації slash command. Якщо реєстрація не вдалася або - не активовано жодної команди, OpenClaw відхиляє callbacks із +- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL. +- `commands.callbackUrl` має вказувати на endpoint gateway OpenClaw і бути доступним із сервера Mattermost. +- Нативні slash-callback автентифікуються токенами для кожної команди, які + Mattermost повертає під час реєстрації slash-команди. Якщо реєстрація не вдалася або + не активовано жодної команди, OpenClaw відхиляє callback-и з `Unauthorized: invalid command token.` -- Для private/tailnet/internal callback hosts Mattermost може вимагати, - щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив callback host/domain. - Використовуйте значення host/domain, а не повні URL. -- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з Mattermost. +- Для приватних/tailnet/internal хостів callback-а Mattermost може вимагати, + щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback-а. + Використовуйте значення хоста/домену, а не повні URL. +- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані з Mattermost записи конфігурації. - `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах. -- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для default). -- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. +- `channels.mattermost.groups..requireMention`: перевизначення перевірки згадок на рівні каналу (`"*"` для значення за замовчуванням). +- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. ### Signal @@ -534,7 +534,7 @@ Mattermost постачається як plugin: `openclaw plugins install @open channels: { signal: { enabled: true, - account: "+15555550123", // необов’язкова прив’язка акаунта + account: "+15555550123", // необов’язкова прив’язка облікового запису dmPolicy: "pairing", allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"], configWrites: true, @@ -546,15 +546,15 @@ Mattermost постачається як plugin: `openclaw plugins install @open } ``` -**Режими сповіщень про реакції:** `off`, `own` (default), `all`, `allowlist` (із `reactionAllowlist`). +**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). -- `channels.signal.account`: закріпити запуск каналу за конкретною ідентичністю акаунта Signal. -- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані із Signal. -- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. +- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal. +- `channels.signal.configWrites`: дозволити або заборонити ініційовані із Signal записи конфігурації. +- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. ### BlueBubbles -BlueBubbles — рекомендований шлях для iMessage (підтримується plugin, налаштовується в `channels.bluebubbles`). +BlueBubbles — рекомендований шлях для iMessage (на базі plugin, налаштовується в `channels.bluebubbles`). ```json5 { @@ -569,14 +569,14 @@ BlueBubbles — рекомендований шлях для iMessage (підт } ``` -- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до сталих ACP session. Використовуйте BlueBubbles handle або target string (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles). +- Ключові шляхи ядра, охоплені тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних ACP-сесій. Використовуйте BlueBubbles handle або target-рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- Повну конфігурацію каналу BlueBubbles описано в [BlueBubbles](/uk/channels/bluebubbles). ### iMessage -OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або порт не потрібні. +OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон або порт не потрібні. ```json5 { @@ -600,15 +600,15 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або } ``` -- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. +- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. -- Потрібен Full Disk Access до БД Messages. +- Потрібен Full Disk Access до DB Messages. - Віддавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів. - `cliPath` може вказувати на SSH wrapper; установіть `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. -- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (default: `/Users/*/Library/Messages/Attachments`). -- SCP використовує сувору перевірку host key, тому переконайтеся, що host key relay уже є в `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з iMessage. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до сталих ACP session. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`). +- SCP використовує строгу перевірку host-key, тому переконайтеся, що ключ хоста relay уже існує в `~/.ssh/known_hosts`. +- `channels.imessage.configWrites`: дозволити або заборонити ініційовані з iMessage записи конфігурації. +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних ACP-сесій. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). @@ -621,7 +621,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix підтримується extension і налаштовується в `channels.matrix`. +Matrix підтримується розширенням і налаштовується в `channels.matrix`. ```json5 { @@ -652,23 +652,23 @@ Matrix підтримується extension і налаштовується в ` ``` - Автентифікація токеном використовує `accessToken`; автентифікація паролем — `userId` + `password`. -- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані акаунти можуть перевизначати це через `channels.matrix.accounts..proxy`. -- `channels.matrix.allowPrivateNetwork` дозволяє private/internal homeservers. `proxy` і `allowPrivateNetwork` — незалежні елементи керування. -- `channels.matrix.defaultAccount` вибирає бажаний акаунт у багатоакаунтних конфігураціях. -- `channels.matrix.execApprovals`: доставка native exec approval у Matrix і авторизація погоджувачів. - - `enabled`: `true`, `false` або `"auto"` (default). У режимі auto exec approvals активуються, коли погоджувачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати exec requests. - - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, approvals пересилаються для всіх агентів. +- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначати його через `channels.matrix.accounts..proxy`. +- `channels.matrix.allowPrivateNetwork` дозволяє приватні/internal homeserver-и. `proxy` і `allowPrivateNetwork` — незалежні елементи керування. +- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у багатооблікових конфігураціях. +- `channels.matrix.execApprovals`: доставка погоджень exec нативно через Matrix і авторизація схвалювачів. + - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto погодження exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec. + - `agentFilter`: необов’язковий список дозволу ID агентів. Якщо опустити, погодження пересилатимуться для всіх агентів. - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (default), `"channel"` (вихідна кімната) або `"both"`. - - Перевизначення на рівні акаунта: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в session: `per-user` (default) ділить за маршрутизованим peer, а `per-room` ізолює кожну DM room. -- Matrix status probes і live directory lookups використовують ту саму політику proxy, що й трафік runtime. -- Повну конфігурацію Matrix, правила targeting і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). + - `target`: куди надсилати запити на погодження. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`. + - Перевизначення на рівні облікового запису: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сесії: `per-user` (типово) спільний за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. +- Перевірки статусу Matrix і живі пошуки в директорії використовують ту саму політику proxy, що й runtime-трафік. +- Повну конфігурацію Matrix, правила адресації та приклади налаштування описано в [Matrix](/uk/channels/matrix). ### Microsoft Teams -Microsoft Teams підтримується extension і налаштовується в `channels.msteams`. +Microsoft Teams підтримується розширенням і налаштовується в `channels.msteams`. ```json5 { @@ -676,19 +676,19 @@ Microsoft Teams підтримується extension і налаштовуєть msteams: { enabled: true, configWrites: true, - // appId, appPassword, tenantId, webhook, політики team/channel: + // appId, appPassword, tenantId, webhook, політики команди/каналу: // див. /channels/msteams }, }, } ``` -- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`. -- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для кожної team/channel) задокументовано в [Microsoft Teams](/uk/channels/msteams). +- Ключові шляхи ядра, охоплені тут: `channels.msteams`, `channels.msteams.configWrites`. +- Повну конфігурацію Teams (облікові дані, webhook, політики DM/груп, перевизначення для кожної команди/каналу) описано в [Microsoft Teams](/uk/channels/msteams). ### IRC -IRC підтримується extension і налаштовується в `channels.irc`. +IRC підтримується розширенням і налаштовується в `channels.irc`. ```json5 { @@ -709,13 +709,13 @@ IRC підтримується extension і налаштовується в `cha } ``` -- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. -- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc). +- Ключові шляхи ядра, охоплені тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо збігається з налаштованим ID облікового запису. +- Повну конфігурацію каналу IRC (host/port/TLS/канали/списки дозволу/перевірка згадок) описано в [IRC](/uk/channels/irc). -### Багато акаунтів (усі канали) +### Багатообліковість (усі канали) -Запускайте кілька акаунтів на канал (кожен зі своїм `accountId`): +Запускайте кілька облікових записів на канал (кожен із власним `accountId`): ```json5 { @@ -736,28 +736,28 @@ IRC підтримується extension і налаштовується в `cha } ``` -- `default` використовується, коли `accountId` не вказано (CLI + routing). -- Токени env застосовуються лише до акаунта **default**. -- Базові налаштування каналу застосовуються до всіх акаунтів, якщо не перевизначено на рівні акаунта. -- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен акаунт до іншого агента. -- Якщо ви додаєте не-default акаунт через `openclaw channels add` (або onboarding каналу), поки ще використовуєте конфігурацію каналу верхнього рівня для одного акаунта, OpenClaw спочатку піднімає акаунт-орієнтовані значення верхнього рівня до мапи акаунтів каналу, щоб початковий акаунт продовжував працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix може зберегти наявну відповідну іменовану/default ціль. -- Наявні channel-only bindings (без `accountId`) і далі відповідатимуть акаунту default; bindings з прив’язкою до акаунта залишаються необов’язковими. -- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи акаунт-орієнтовані значення верхнього рівня для одного акаунта в підвищений акаунт, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix може зберегти наявну відповідну іменовану/default ціль. +- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація). +- Токени env застосовуються лише до **облікового запису за замовчуванням**. +- Базові налаштування каналу застосовуються до всіх облікових записів, якщо не перевизначено на їхньому рівні. +- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента. +- Якщо ви додаєте не-default обліковий запис через `openclaw channels add` (або onboarding каналу), коли все ще використовується конфігурація верхнього рівня для одного облікового запису, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, що належать цьому обліковому запису, до карти облікових записів каналу, щоб початковий обліковий запис і далі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default-ціль. +- Наявні прив’язки лише для каналу (без `accountId`) і далі відповідатимуть обліковому запису за замовчуванням; прив’язки з обліковим записом залишаються необов’язковими. +- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, що належать обліковому запису, до підвищеного облікового запису, вибраного для цього каналу. Більшість каналів використовують `accounts.default`; Matrix може зберегти наявну відповідну іменовану/default-ціль. -### Інші extension channels +### Інші канали розширень -Багато extension channels налаштовуються як `channels.` і задокументовані на окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). -Дивіться повний індекс каналів: [Channels](/uk/channels). +Багато каналів розширень налаштовуються як `channels.` і описані на їхніх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). +Див. повний індекс каналів: [Channels](/uk/channels). -### Гейтінг згадок у групових чатах +### Перевірка згадок у груповому чаті -Для групових повідомлень за замовчуванням **потрібна згадка** (метадані згадки або безпечні regex-шаблони). Це стосується групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. +Для групових повідомлень типово **потрібна згадка** (метадані згадки або безпечні regex-шаблони). Це стосується групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. **Типи згадок:** -- **Metadata mentions**: native @-згадки платформи. Ігноруються в режимі self-chat WhatsApp. -- **Text patterns**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Невалідні шаблони і небезпечні вкладені повторення ігноруються. -- Mention gating застосовується лише тоді, коли виявлення можливе (native mentions або принаймні один pattern). +- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі self-chat у WhatsApp. +- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Некоректні шаблони й небезпечні вкладені повторення ігноруються. +- Перевірка згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон). ```json5 { @@ -770,7 +770,7 @@ IRC підтримується extension і налаштовується в `cha } ``` -`messages.groupChat.historyLimit` задає глобальне default. Канали можуть перевизначити його через `channels..historyLimit` (або на рівні акаунта). Установіть `0`, щоб вимкнути. +`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначити його через `channels..historyLimit` (або на рівні облікового запису). Установіть `0`, щоб вимкнути. #### Ліміти історії DM @@ -787,13 +787,13 @@ IRC підтримується extension і налаштовується в `cha } ``` -Розв’язання: перевизначення для окремого DM → default постачальника → без ліміту (зберігається все). +Розв’язання: перевизначення для конкретного DM → значення провайдера за замовчуванням → без обмеження (зберігається все). Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. #### Режим self-chat -Додайте свій номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує native @-згадки, відповідає лише на text patterns): +Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): ```json5 { @@ -814,18 +814,18 @@ IRC підтримується extension і налаштовується в `cha } ``` -### Commands (обробка chat command) +### Команди (обробка команд чату) ```json5 { commands: { - native: "auto", // реєструвати native commands, коли підтримується - text: true, // розбирати /commands у chat messages - bash: false, // дозволити ! (аліас: /bash) + native: "auto", // реєструвати нативні команди, коли це підтримується + text: true, // розбирати /commands у повідомленнях чату + bash: false, // дозволити ! (псевдонім: /bash) bashForegroundMs: 2000, config: false, // дозволити /config debug: false, // дозволити /debug - restart: false, // дозволити /restart + інструмент restart gateway + restart: false, // дозволити /restart + інструмент перезапуску gateway allowFrom: { "*": ["user1"], discord: ["user:123"], @@ -835,18 +835,18 @@ IRC підтримується extension і налаштовується в `cha } ``` - + -- Text commands мають бути **окремими** повідомленнями з початковим `/`. -- `native: "auto"` вмикає native commands для Discord/Telegram, залишає Slack вимкненим. -- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищує раніше зареєстровані commands. +- Текстові команди мають бути **окремими** повідомленнями з початковим `/`. +- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим. +- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди. - `channels.telegram.customCommands` додає додаткові записи меню бота Telegram. -- `bash: true` вмикає `! ` для shell хоста. Потребує `tools.elevated.enabled` і щоб відправник був у `tools.elevated.allowFrom.`. -- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів gateway `chat.send` сталі записи `/config set|unset` також потребують `operator.admin`; read-only `/config show` залишається доступним для звичайних операторських клієнтів із правом запису. -- `channels..configWrites` контролює мутації конфігурації для кожного каналу (default: true). -- Для багатоакаунтних каналів `channels..accounts..configWrites` також контролює записи, що націлені на цей акаунт (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`). -- `allowFrom` задається для кожного постачальника. Якщо встановлено, це **єдине** джерело авторизації (allowlist/pairing каналу та `useAccessGroups` ігноруються). -- `useAccessGroups: false` дозволяє commands обходити політики access-group, коли `allowFrom` не задано. +- `bash: true` увімкне `! ` для shell хоста. Потрібно `tools.elevated.enabled` і відправник має бути в `tools.elevated.allowFrom.`. +- `config: true` увімкне `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним звичайним клієнтам з правом запису. +- `channels..configWrites` контролює мутації конфігурації для кожного каналу (типово: true). +- Для багатооблікових каналів `channels..accounts..configWrites` також керує записами, що націлені на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`). +- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволу/сполучення каналу та `useAccessGroups` ігноруються). +- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено. @@ -856,7 +856,7 @@ IRC підтримується extension і налаштовується в `cha ### `agents.defaults.workspace` -Default: `~/.openclaw/workspace`. +Типово: `~/.openclaw/workspace`. ```json5 { @@ -866,7 +866,7 @@ Default: `~/.openclaw/workspace`. ### `agents.defaults.repoRoot` -Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw визначає його автоматично, підіймаючись вгору від workspace. +Необов’язковий корінь репозиторію, що показується в рядку Runtime системного prompt-а. Якщо не задано, OpenClaw визначає його автоматично, піднімаючись угору від workspace. ```json5 { @@ -876,7 +876,7 @@ Default: `~/.openclaw/workspace`. ### `agents.defaults.skills` -Необов’язковий default allowlist для Skills для агентів, які не задають +Необов’язковий список дозволу Skills за замовчуванням для агентів, які не задають `agents.list[].skills`. ```json5 @@ -885,22 +885,22 @@ Default: `~/.openclaw/workspace`. defaults: { skills: ["github", "weather"] }, list: [ { id: "writer" }, // успадковує github, weather - { id: "docs", skills: ["docs-search"] }, // замінює defaults - { id: "locked-down", skills: [] }, // без skills + { id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням + { id: "locked-down", skills: [] }, // без Skills ], }, } ``` -- Пропустіть `agents.defaults.skills`, щоб за замовчуванням Skills не обмежувалися. -- Пропустіть `agents.list[].skills`, щоб успадкувати defaults. -- Установіть `agents.list[].skills: []`, щоб не було жодних Skills. -- Непорожній список `agents.list[].skills` — це фінальний набір для агента; він - не зливається з defaults. +- Пропустіть `agents.defaults.skills`, щоб типово не обмежувати Skills. +- Пропустіть `agents.list[].skills`, щоб успадкувати значення за замовчуванням. +- Установіть `agents.list[].skills: []`, щоб не було Skills. +- Непорожній список `agents.list[].skills` — це остаточний набір для цього агента; він + не об’єднується зі значеннями за замовчуванням. ### `agents.defaults.skipBootstrap` -Вимикає автоматичне створення bootstrap-файлів workspace (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`). +Вимикає автоматичне створення файлів bootstrap workspace (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`). ```json5 { @@ -910,7 +910,7 @@ Default: `~/.openclaw/workspace`. ### `agents.defaults.bootstrapMaxChars` -Максимальна кількість символів у кожному bootstrap-файлі workspace перед обрізанням. Default: `20000`. +Максимальна кількість символів на файл bootstrap workspace перед обрізанням. Типово: `20000`. ```json5 { @@ -920,7 +920,7 @@ Default: `~/.openclaw/workspace`. ### `agents.defaults.bootstrapTotalMaxChars` -Максимальна загальна кількість символів, що інжектуються в усі bootstrap-файли workspace. Default: `150000`. +Максимальна загальна кількість символів, що вставляються з усіх файлів bootstrap workspace. Типово: `150000`. ```json5 { @@ -930,12 +930,12 @@ Default: `~/.openclaw/workspace`. ### `agents.defaults.bootstrapPromptTruncationWarning` -Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізано. -Default: `"once"`. +Керує видимим агенту текстом попередження, коли bootstrap-контекст обрізано. +Типово: `"once"`. -- `"off"`: ніколи не інжектувати текст попередження в system prompt. -- `"once"`: інжектувати попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано). -- `"always"`: інжектувати попередження під час кожного запуску, якщо обрізання існує. +- `"off"`: ніколи не вставляти текст попередження в системний prompt. +- `"once"`: вставляти попередження один раз для кожного унікального підпису обрізання (рекомендовано). +- `"always"`: вставляти попередження під час кожного запуску, коли є обрізання. ```json5 { @@ -945,11 +945,11 @@ Default: `"once"`. ### `agents.defaults.imageMaxDimensionPx` -Максимальний розмір у пікселях для найдовшої сторони зображення в блоках image transcript/tool перед викликами постачальника. -Default: `1200`. +Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень transcript/tool перед викликами провайдера. +Типово: `1200`. -Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для сценаріїв із великою кількістю скриншотів. -Вищі значення зберігають більше візуальних деталей. +Менші значення зазвичай зменшують використання vision-token і розмір payload запиту для сценаріїв із великою кількістю скриншотів. +Більші значення зберігають більше візуальних деталей. ```json5 { @@ -959,7 +959,7 @@ Default: `1200`. ### `agents.defaults.userTimezone` -Часовий пояс для контексту system prompt (не для timestamp повідомлень). Якщо не задано, використовується часовий пояс хоста. +Часовий пояс для контексту системного prompt-а (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста. ```json5 { @@ -969,7 +969,7 @@ Default: `1200`. ### `agents.defaults.timeFormat` -Формат часу в system prompt. Default: `auto` (налаштування ОС). +Формат часу в системному prompt-і. Типово: `auto` (налаштування ОС). ```json5 { @@ -1007,7 +1007,7 @@ Default: `1200`. primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, - params: { cacheRetention: "long" }, // глобальні default provider params + params: { cacheRetention: "long" }, // глобальні параметри провайдера за замовчуванням pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", @@ -1023,37 +1023,37 @@ Default: `1200`. ``` - `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Рядкова форма задає лише primary model. - - Форма об’єкта задає primary плюс впорядковані failover models. + - Форма рядка задає лише основну модель. + - Форма об’єкта задає основну модель плюс впорядковані резервні моделі. - `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується шляхом інструмента `image` як конфігурація vision model. - - Також використовується як резервна маршрутизація, коли вибрана/default model не може приймати image input. + - Використовується шляхом інструмента `image` як конфігурація vision-model. + - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати зображення. - `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/plugin, що генерує зображення. - - Типові значення: `google/gemini-3.1-flash-image-preview` для native Gemini image generation, `fal/fal-ai/flux/dev` для fal або `openai/gpt-image-1` для OpenAI Images. - - Якщо ви вибираєте конкретний provider/model, також налаштуйте відповідну автентифікацію/API key постачальника (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`). - - Якщо параметр пропущено, `image_generate` все одно може вивести default постачальника з автентифікацією. Спочатку він пробує поточного default provider, а потім решту зареєстрованих постачальників image generation у порядку provider-id. + - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/plugin, яка генерує зображення. + - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal або `openai/gpt-image-1` для OpenAI Images. + - Якщо ви прямо вибираєте provider/model, налаштуйте відповідну автентифікацію/API key провайдера також (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`). + - Якщо поле опущено, `image_generate` усе одно може визначити значення провайдера за замовчуванням на основі автентифікації. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. - `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` усе одно може вивести default постачальника з автентифікацією. Спочатку він пробує поточного default provider, а потім решту зареєстрованих постачальників генерації відео в порядку provider-id. - - Якщо ви вибираєте конкретний provider/model, також налаштуйте відповідну автентифікацію/API key постачальника. - - Вбудований постачальник генерації відео Qwen наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри постачальника `size`, `aspectRatio`, `resolution`, `audio` та `watermark`. + - Якщо поле опущено, `video_generate` усе одно може визначити значення провайдера за замовчуванням на основі автентифікації. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації відео в порядку provider-id. + - Якщо ви прямо вибираєте provider/model, налаштуйте відповідну автентифікацію/API key провайдера також. + - Комплектний провайдер генерації відео Qwen наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`. - `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується інструментом `pdf` для маршрутизації моделі. - - Якщо параметр пропущено, PDF tool повертається до `imageModel`, а потім — до визначеної model session/default. -- `pdfMaxBytesMb`: default обмеження розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. -- `pdfMaxPages`: default максимальна кількість сторінок, які враховуються режимом fallback extraction в інструменті `pdf`. -- `verboseDefault`: default рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Default: `"off"`. -- `elevatedDefault`: default рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Default: `"on"`. -- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо пропустити provider, OpenClaw спочатку пробує alias, потім — унікальний match серед налаштованих providers для цього exact model id, і лише потім повертається до налаштованого default provider (застаріла сумісна поведінка, тому краще явно вказувати `provider/model`). Якщо цей provider більше не пропонує налаштовану default model, OpenClaw повертається до першого налаштованого provider/model, а не показує застарілий default видаленого provider. -- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для provider, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`). -- `params`: глобальні default provider parameters, застосовувані до всіх моделей. Задається через `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`). -- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), потім `agents.list[].params` (для відповідного agent id) перевизначає по ключах. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching). -- Записувачі конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта й по можливості зберігають наявні списки fallback. -- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна session усе одно серіалізується). Default: 4. + - Якщо поле опущено, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сесії/за замовчуванням. +- `pdfMaxBytesMb`: ліміт розміру PDF за замовчуванням для інструмента `pdf`, коли `maxBytesMb` не передається під час виклику. +- `pdfMaxPages`: максимальна кількість сторінок за замовчуванням, що враховується режимом резервного видобування в інструменті `pdf`. +- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типово: `"off"`. +- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типово: `"on"`. +- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо опустити провайдера, OpenClaw спочатку пробує псевдонім, потім — унікальний збіг налаштованого провайдера для точного model id, і лише після цього повертається до налаштованого провайдера за замовчуванням (застаріла поведінка сумісності, тож краще вказувати явний `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw повертається до першого налаштованого provider/model замість того, щоб показувати застаріле типове значення від видаленого провайдера. +- `models`: налаштований каталог моделей і список дозволу для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`). +- `params`: глобальні параметри провайдера за замовчуванням, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`). +- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для конкретної моделі), а потім `agents.list[].params` (відповідний agent id) перевизначає за ключем. Подробиці див. у [Prompt Caching](/uk/reference/prompt-caching). +- Засоби запису конфігурації, що змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта й за можливості зберігають наявні списки резервних моделей. +- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно серіалізується). Типово: 4. -**Вбудовані shorthand aliases** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): +**Вбудовані скорочені псевдоніми** (працюють лише тоді, коли модель є в `agents.defaults.models`): | Псевдонім | Модель | | ------------------- | -------------------------------------- | @@ -1066,14 +1066,14 @@ Default: `1200`. | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Ваші налаштовані aliases завжди мають пріоритет над defaults. +Ваші налаштовані псевдоніми завжди мають пріоритет над типовими. -Моделі Z.AI GLM-4.x автоматично вмикають thinking mode, якщо ви не встановите `--thinking off` або самі не задасте `agents.defaults.models["zai/"].params.thinking`. -Моделі Z.AI за замовчуванням вмикають `tool_stream` для потокової передачі tool call. Щоб вимкнути це, установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`. -Для моделей Anthropic Claude 4.6 за замовчуванням використовується `adaptive` thinking, коли не задано явний рівень thinking. +Моделі Z.AI GLM-4.x автоматично вмикають thinking mode, якщо ви не задасте `--thinking off` або самостійно не визначите `agents.defaults.models["zai/"].params.thinking`. +Моделі Z.AI типово вмикають `tool_stream` для потокової передачі викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це. +Моделі Anthropic Claude 4.6 типово використовують `adaptive` thinking, якщо явний рівень thinking не задано. -- Sessions підтримуються, коли встановлено `sessionArg`. -- Пряме передавання image підтримується, коли `imageArg` приймає file paths. +- Сесії підтримуються, коли задано `sessionArg`. +- Передавання зображень без змін підтримується, коли `imageArg` приймає шляхи до файлів. ### `agents.defaults.heartbeat` @@ -1087,12 +1087,12 @@ Default: `1200`. every: "30m", // 0m вимикає model: "openai/gpt-5.4-mini", includeReasoning: false, - lightContext: false, // default: false; true зберігає лише HEARTBEAT.md із bootstrap-файлів workspace - isolatedSession: false, // default: false; true запускає кожен heartbeat у свіжій session (без історії розмови) + lightContext: false, // типово: false; true залишає лише HEARTBEAT.md з файлів bootstrap workspace + isolatedSession: false, // типово: false; true запускає кожен heartbeat у новій сесії (без історії розмови) session: "main", to: "+15555550123", - directPolicy: "allow", // allow (default) | block - target: "none", // default: none | options: last | whatsapp | telegram | discord | ... + directPolicy: "allow", // allow (типово) | block + target: "none", // типово: none | варіанти: last | whatsapp | telegram | discord | ... prompt: "Прочитай HEARTBEAT.md, якщо він існує...", ackMaxChars: 300, suppressToolErrorWarnings: false, @@ -1102,13 +1102,13 @@ Default: `1200`. } ``` -- `every`: рядок тривалості (ms/s/m/h). Default: `30m` (автентифікація API key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути. -- `suppressToolErrorWarnings`: якщо true, пригнічує payload попереджень про помилки інструментів під час heartbeat runs. -- `directPolicy`: політика доставки direct/DM. `allow` (default) дозволяє доставку в direct targets. `block` пригнічує доставку в direct target і генерує `reason=dm-blocked`. -- `lightContext`: якщо true, heartbeat runs використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace. -- `isolatedSession`: якщо true, кожен heartbeat run відбувається в новій session без попередньої історії розмов. Той самий шаблон ізоляції, що й у cron `sessionTarget: "isolated"`. Зменшує вартість токенів на heartbeat приблизно зі ~100K до ~2-5K токенів. -- Для агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, heartbeat запускаються **лише для цих агентів**. -- Heartbeat виконують повні agent turns — коротші інтервали спалюють більше токенів. +- `every`: рядок тривалості (ms/s/m/h). Типово: `30m` (автентифікація API key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути. +- `suppressToolErrorWarnings`: коли true, пригнічує payload попереджень про помилки інструментів під час запусків heartbeat. +- `directPolicy`: політика прямої доставки/DM. `allow` (типово) дозволяє доставку на прямі цілі. `block` пригнічує доставку на прямі цілі та виводить `reason=dm-blocked`. +- `lightContext`: коли true, запуски heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із файлів bootstrap workspace. +- `isolatedSession`: коли true, кожен heartbeat запускається в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у cron `sessionTarget: "isolated"`. Зменшує витрати токенів на heartbeat приблизно зі ~100K до ~2-5K токенів. +- Для агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, heartbeat запускатимуть **лише ці агенти**. +- Heartbeat виконують повні ходи агента — коротші інтервали спалюють більше токенів. ### `agents.defaults.compaction` @@ -1121,15 +1121,15 @@ Default: `1200`. timeoutSeconds: 900, reserveTokensFloor: 24000, identifierPolicy: "strict", // strict | off | custom - identifierInstructions: "Точно зберігай deployment IDs, ticket IDs і пари host:port.", // використовується, коли identifierPolicy=custom - postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне інжектування + identifierInstructions: "Точно зберігай deployment ID, ticket ID і пари host:port.", // використовується, коли identifierPolicy=custom + postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне вставлення model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для compaction - notifyUser: true, // надсилати коротке повідомлення, коли починається compaction (default: false) + notifyUser: true, // надсилати коротке сповіщення, коли починається compaction (типово: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, - systemPrompt: "Session наближається до compaction. Збережіть сталі спогади зараз.", - prompt: "Запиши будь-які тривалі нотатки в memory/YYYY-MM-DD.md; відповідай точним silent token NO_REPLY, якщо зберігати нічого.", + systemPrompt: "Сесія наближається до compaction. Збережи довготривалі спогади зараз.", + prompt: "Запиши всі тривалі нотатки в memory/YYYY-MM-DD.md; відповідай точним тихим токеном NO_REPLY, якщо нічого зберігати.", }, }, }, @@ -1137,18 +1137,18 @@ Default: `1200`. } ``` -- `mode`: `default` або `safeguard` (узагальнення шматками для довгих історій). Див. [Compaction](/uk/concepts/compaction). -- `timeoutSeconds`: максимальна кількість секунд для однієї операції compaction, після чого OpenClaw її скасовує. Default: `900`. -- `identifierPolicy`: `strict` (default), `off` або `custom`. `strict` додає вбудовані інструкції щодо збереження непрозорих ідентифікаторів під час summarization у compaction. -- `identifierInstructions`: необов’язковий власний текст для збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. -- `postCompactionSections`: необов’язкові назви секцій AGENTS.md рівня H2/H3 для повторного інжектування після compaction. Default: `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне інжектування. Коли не задано або явно встановлено цю пару за замовчуванням, старіші заголовки `Every Session`/`Safety` також приймаються як legacy fallback. -- `model`: необов’язкове перевизначення `provider/model-id` лише для summarization у compaction. Використовуйте це, коли основна session має залишатися на одній моделі, а summaries compaction повинні виконуватися на іншій; якщо не задано, compaction використовує primary model session. -- `notifyUser`: якщо `true`, надсилає коротке повідомлення користувачу, коли починається compaction (наприклад, "Compacting context..."). За замовчуванням вимкнено, щоб compaction відбувався безшумно. -- `memoryFlush`: тихий agentic turn перед auto-compaction для збереження тривалих спогадів. Пропускається, якщо workspace тільки для читання. +- `mode`: `default` або `safeguard` (підсумовування великих історій частинами). Див. [Compaction](/uk/concepts/compaction). +- `timeoutSeconds`: максимальна кількість секунд, дозволених для однієї операції compaction, після чого OpenClaw її перериває. Типово: `900`. +- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки зі збереження непрозорих ідентифікаторів під час підсумовування compaction. +- `identifierInstructions`: необов’язковий користувацький текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. +- `postCompactionSections`: необов’язкові назви розділів H2/H3 з AGENTS.md, які повторно вставляються після compaction. Типово `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вставлення. Якщо не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант. +- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки compaction мають виконуватися на іншій; якщо не задано, compaction використовує основну модель сесії. +- `notifyUser`: коли `true`, надсилає користувачеві коротке сповіщення на початку compaction (наприклад, "Compacting context..."). Типово вимкнено, щоб compaction залишався тихим. +- `memoryFlush`: тихий агентний хід перед auto-compaction для збереження довготривалої пам’яті. Пропускається, коли workspace доступний лише для читання. ### `agents.defaults.contextPruning` -Обрізає **старі результати інструментів** з in-memory контексту перед надсиланням до LLM. **Не** змінює історію session на диску. +Обрізає **старі результати інструментів** з контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сесії на диску. ```json5 { @@ -1172,25 +1172,25 @@ Default: `1200`. -- `mode: "cache-ttl"` вмикає проходи pruning. -- `ttl` визначає, як часто pruning може запускатися знову (після останнього cache touch). -- Pruning спочатку soft-trim обрізає завеликі результати інструментів, а потім hard-clear очищає старіші результати інструментів, якщо потрібно. +- `mode: "cache-ttl"` увімкне проходи обрізання. +- `ttl` керує тим, як часто обрізання можна запускати знову (після останнього торкання кешу). +- Спочатку обрізання м’яко скорочує завеликі результати інструментів, а потім за потреби жорстко очищає старіші результати інструментів. -**Soft-trim** зберігає початок + кінець і вставляє `...` посередині. +**М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині. -**Hard-clear** замінює весь результат інструмента на placeholder. +**Жорстке очищення** замінює весь результат інструмента заповнювачем. Примітки: -- Блоки image ніколи не обрізаються/не очищаються. -- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів. -- Якщо існує менше ніж `keepLastAssistants` assistant messages, pruning пропускається. +- Блоки зображень ніколи не обрізаються й не очищаються. +- Коефіцієнти базуються на символах (приблизно), а не на точній кількості токенів. +- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається. -Докладніше про поведінку див. у [Session Pruning](/uk/concepts/session-pruning). +Подробиці поведінки див. в [Session Pruning](/uk/concepts/session-pruning). -### Block streaming +### Блокова потокова передача ```json5 { @@ -1206,13 +1206,13 @@ Default: `1200`. } ``` -- Канали, крім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути block replies. -- Перевизначення на рівні каналу: `channels..blockStreamingCoalesce` (і варіанти для кожного акаунта). Для Signal/Slack/Discord/Google Chat default `minChars: 1500`. -- `humanDelay`: випадкова пауза між block replies. `natural` = 800–2500ms. Перевизначення для агента: `agents.list[].humanDelay`. +- Канали, відмінні від Telegram, вимагають явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді. +- Перевизначення на рівні каналу: `channels..blockStreamingCoalesce` (і варіанти на рівні облікового запису). Для Signal/Slack/Discord/Google Chat типово `minChars: 1500`. +- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення на рівні агента: `agents.list[].humanDelay`. -Докладніше про поведінку та chunking див. у [Streaming](/uk/concepts/streaming). +Подробиці поведінки та chunking див. у [Streaming](/uk/concepts/streaming). -### Індикатори набору +### Індикатори друку ```json5 { @@ -1225,8 +1225,8 @@ Default: `1200`. } ``` -- Defaults: `instant` для direct chats/mentions, `message` для групових чатів без згадки. -- Перевизначення для session: `session.typingMode`, `session.typingIntervalSeconds`. +- Типово: `instant` для особистих чатів/згадок, `message` для групових чатів без згадки. +- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`. Див. [Typing Indicators](/uk/concepts/typing-indicators). @@ -1234,7 +1234,7 @@ Default: `1200`. ### `agents.defaults.sandbox` -Необов’язковий sandboxing для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing). +Необов’язковий sandboxing для вбудованого агента. Повний посібник див. в [Sandboxing](/uk/gateway/sandboxing). ```json5 { @@ -1280,7 +1280,7 @@ Default: `1200`. identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", - // Також підтримуються SecretRefs / вбудований вміст: + // Також підтримуються SecretRef / вбудований вміст: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, @@ -1333,20 +1333,20 @@ Default: `1200`. **Backend:** -- `docker`: локальний runtime Docker (default) -- `ssh`: універсальний remote runtime на основі SSH +- `docker`: локальний runtime Docker (типово) +- `ssh`: універсальний віддалений runtime на базі SSH - `openshell`: runtime OpenShell Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться до `plugins.entries.openshell.config`. -**Конфігурація backend SSH:** +**Конфігурація SSH backend:** -- `target`: ціль SSH у форматі `user@host[:port]` -- `command`: команда SSH client (default: `ssh`) -- `workspaceRoot`: абсолютний remote root, що використовується для workspace кожного scope -- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані до OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує у тимчасові файли під час runtime +- `target`: SSH-ціль у форматі `user@host[:port]` +- `command`: команда SSH-клієнта (типово: `ssh`) +- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace за областю +- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, які передаються OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, який OpenClaw матеріалізує у тимчасові файли під час runtime - `strictHostKeyChecking` / `updateHostKeys`: параметри політики host-key OpenSSH **Пріоритет автентифікації SSH:** @@ -1354,27 +1354,27 @@ Default: `1200`. - `identityData` має пріоритет над `identityFile` - `certificateData` має пріоритет над `certificateFile` - `knownHostsData` має пріоритет над `knownHostsFile` -- Значення `*Data`, що використовують SecretRef, розв’язуються з активного знімка secrets runtime до старту sandbox session +- Значення `*Data`, підкріплені SecretRef, визначаються з активного знімка runtime секретів до початку sandbox-сесії -**Поведінка backend SSH:** +**Поведінка SSH backend:** -- засіває remote workspace один раз після create або recreate -- після цього зберігає remote SSH workspace як канонічний -- маршрутизує `exec`, file tools і media paths через SSH -- не синхронізує remote changes назад на хост автоматично -- не підтримує sandbox browser containers +- один раз засіває віддалений workspace після створення або повторного створення +- потім зберігає віддалений SSH workspace як канонічний +- маршрутизує `exec`, файлові інструменти та шляхи до медіа через SSH +- не синхронізує віддалені зміни назад на хост автоматично +- не підтримує browser-контейнери sandbox **Доступ до workspace:** -- `none`: workspace sandbox для кожного scope у `~/.openclaw/sandboxes` -- `ro`: workspace sandbox у `/workspace`, workspace агента монтується read-only у `/agent` -- `rw`: workspace агента монтується read/write у `/workspace` +- `none`: workspace sandbox за областю в `~/.openclaw/sandboxes` +- `ro`: workspace sandbox у `/workspace`, workspace агента монтується лише для читання в `/agent` +- `rw`: workspace агента монтується для читання/запису в `/workspace` -**Scope:** +**Область:** -- `session`: окремий container + workspace для кожної session -- `agent`: один container + workspace на агента (default) -- `shared`: спільний container і workspace (без ізоляції між session) +- `session`: контейнер + workspace для кожної сесії +- `agent`: один контейнер + workspace на агента (типово) +- `shared`: спільний контейнер і workspace (без ізоляції між сесіями) **Конфігурація plugin OpenShell:** @@ -1391,7 +1391,7 @@ Default: `1200`. remoteAgentWorkspaceDir: "/agent", gateway: "lab", // необов’язково gatewayEndpoint: "https://lab.example", // необов’язково - policy: "strict", // необов’язковий id політики OpenShell + policy: "strict", // необов’язковий ID політики OpenShell providers: ["openai"], // необов’язково autoProviders: true, timeoutSeconds: 120, @@ -1404,30 +1404,30 @@ Default: `1200`. **Режим OpenShell:** -- `mirror`: засіяти remote із local перед exec, синхронізувати назад після exec; local workspace залишається канонічним -- `remote`: засіяти remote один раз під час створення sandbox, після цього remote workspace залишається канонічним +- `mirror`: перед `exec` засіває віддалене середовище з локального, після `exec` синхронізує назад; локальний workspace лишається канонічним +- `remote`: один раз засіває віддалене середовище під час створення sandbox, потім віддалений workspace залишається канонічним -У режимі `remote` зміни на локальному хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку seed. -Транспортом є SSH у sandbox OpenShell, але plugin володіє життєвим циклом sandbox і необов’язковою mirror sync. +У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку засівання. +Транспорт — SSH у sandbox OpenShell, але plugin керує життєвим циклом sandbox і необов’язковою синхронізацією mirror. -**`setupCommand`** виконується один раз після створення container (через `sh -lc`). Потребує network egress, writable root, root user. +**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потрібні вихід у мережу, доступний для запису root і користувач root. -**Для containers за замовчуванням використовується `network: "none"`** — установіть `"bridge"` (або власну bridge network), якщо агенту потрібен вихідний доступ. -`"host"` заблоковано. `"container:"` також заблоковано за замовчуванням, якщо ви явно не встановите -`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (break-glass). +**Контейнери типово використовують `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихід назовні. +`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не задасте +`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний режим). -**Вхідні вкладення** розміщуються у `media/inbound/*` в активному workspace. +**Вхідні вкладення** staging-уються в `media/inbound/*` в активному workspace. -**`docker.binds`** монтує додаткові каталоги хоста; глобальні binds і binds для конкретного агента зливаються. +**`docker.binds`** монтує додаткові каталоги хоста; глобальні та прив’язані до агента bind-и об’єднуються. -**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у container. URL noVNC інжектується в system prompt. Не потребує `browser.enabled` у `openclaw.json`. -Доступ спостерігача noVNC за замовчуванням використовує VNC auth, а OpenClaw видає short-lived token URL (замість того щоб показувати пароль у спільному URL). +**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вставляється в системний prompt. Не вимагає `browser.enabled` в `openclaw.json`. +Доступ для спостереження noVNC типово використовує автентифікацію VNC, а OpenClaw генерує короткоживучу token URL (замість розкриття пароля в спільній URL). -- `allowHostControl: false` (default) блокує націлювання sandboxed sessions на browser хоста. -- `network` за замовчуванням — `openclaw-sandbox-browser` (виділена bridge network). Установлюйте `bridge` лише тоді, коли вам справді потрібна глобальна bridge connectivity. -- `cdpSourceRange` необов’язково обмежує вхідний CDP на межі container до діапазону CIDR (наприклад `172.21.0.1/32`). -- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в container sandbox browser. Якщо встановлено (включно з `[]`), це замінює `docker.binds` для browser container. -- Значення запуску за замовчуванням визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для container hosts: +- `allowHostControl: false` (типово) блокує націлювання sandbox-сесій на browser хоста. +- `network` типово `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли свідомо хочете глобальну bridge-зв’язність. +- `cdpSourceRange` необов’язково обмежує вхідний CDP на межі контейнера діапазоном CIDR (наприклад `172.21.0.1/32`). +- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер sandbox browser. Якщо встановлено (включно з `[]`), замінює `docker.binds` для browser-контейнера. +- Типові параметри запуску визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для контейнерних хостів: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -1444,31 +1444,31 @@ Default: `1200`. - `--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_EXTENSIONS=0` знову вмикає extensions, якщо ваш workflow + від них залежить. - `--renderer-process-limit=2` можна змінити через `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати - стандартне обмеження процесів Chromium. - - плюс `--no-sandbox` і `--disable-setuid-sandbox`, коли увімкнено `noSandbox`. - - Defaults — це базовий рівень container image; щоб змінити defaults container, - використовуйте власний browser image із власним entrypoint. + типове обмеження процесів Chromium. + - плюс `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`. + - Значення за замовчуванням — це базовий рівень образу контейнера; використовуйте власний + browser image з власним entrypoint, щоб змінити типові налаштування контейнера. -Browser sandboxing і `sandbox.docker.binds` наразі працюють лише з Docker. +Sandboxing browser і `sandbox.docker.binds` наразі працюють лише з Docker. -Створення images: +Зібрати образи: ```bash -scripts/sandbox-setup.sh # основний sandbox image -scripts/sandbox-browser-setup.sh # необов’язковий browser image +scripts/sandbox-setup.sh # основний образ sandbox +scripts/sandbox-browser-setup.sh # необов’язковий образ browser ``` -### `agents.list` (перевизначення для агента) +### `agents.list` (перевизначення для конкретного агента) ```json5 { @@ -1477,14 +1477,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image { id: "main", default: true, - name: "Main Agent", + name: "Основний агент", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // або { primary, fallbacks } thinkingDefault: "high", // перевизначення рівня thinking для агента reasoningDefault: "on", // перевизначення видимості reasoning для агента fastModeDefault: false, // перевизначення fast mode для агента - params: { cacheRetention: "none" }, // перевизначає matching defaults.models params за ключем + params: { cacheRetention: "none" }, // перевизначає відповідні defaults.models params за ключем skills: ["docs-search"], // замінює agents.defaults.skills, якщо встановлено identity: { name: "Samantha", @@ -1516,24 +1516,24 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image } ``` -- `id`: стабільний id агента (обов’язково). -- `default`: коли їх кілька, перший має пріоритет (логуються warnings). Якщо не вказано жодного, default — перший елемент списку. -- `model`: рядкова форма перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallbacks). Cron jobs, які перевизначають лише `primary`, усе одно успадковують default fallbacks, якщо ви не встановите `fallbacks: []`. -- `params`: stream params для агента, що зливаються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних перевизначень агента, таких як `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей. -- `skills`: необов’язковий allowlist Skills для агента. Якщо не задано, агент успадковує `agents.defaults.skills`, якщо вони задані; явний список замінює defaults замість злиття, а `[]` означає відсутність Skills. -- `thinkingDefault`: необов’язковий default рівень thinking для агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не встановлено перевизначення для повідомлення або session. -- `reasoningDefault`: необов’язкове default перевизначення видимості reasoning для агента (`on | off | stream`). Застосовується, коли не встановлено перевизначення reasoning для повідомлення або session. -- `fastModeDefault`: необов’язкове default перевизначення fast mode (`true | false`). Застосовується, коли не встановлено перевизначення fast mode для повідомлення або session. -- `runtime`: необов’язковий дескриптор runtime для агента. Використовуйте `type: "acp"` з defaults `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент повинен за замовчуванням використовувати sessions harness ACP. +- `id`: стабільний ID агента (обов’язково). +- `default`: якщо задано кілька, перший має пріоритет (виводиться попередження). Якщо не задано жодного, перший запис у списку є default. +- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron jobs, що перевизначають лише `primary`, усе одно успадковують типові fallback, якщо ви не задасте `fallbacks: []`. +- `params`: параметри потоку для агента, що зливаються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень на рівні агента, наприклад `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей. +- `skills`: необов’язковий список дозволу Skills для конкретного агента. Якщо пропущено, агент успадковує `agents.defaults.skills`, якщо вони задані; явний список замінює значення за замовчуванням замість злиття, а `[]` означає відсутність Skills. +- `thinkingDefault`: необов’язковий рівень thinking за замовчуванням для агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сесії. +- `reasoningDefault`: необов’язкове значення видимості reasoning за замовчуванням для агента (`on | off | stream`). Застосовується, коли не задано перевизначення для повідомлення або сесії. +- `fastModeDefault`: необов’язкове значення fast mode за замовчуванням для агента (`true | false`). Застосовується, коли не задано перевизначення для повідомлення або сесії. +- `runtime`: необов’язковий дескриптор runtime для агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії harness ACP. - `identity.avatar`: шлях відносно workspace, `http(s)` URL або `data:` URI. -- `identity` виводить defaults: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`. -- `subagents.allowAgents`: allowlist id агентів для `sessions_spawn` (`["*"]` = будь-який; default: лише той самий агент). -- Sandbox inheritance guard: якщо session запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які працювали б без sandbox. -- `subagents.requireAgentId`: якщо true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (примушує до явного вибору профілю; default: false). +- `identity` виводить типові значення: `ackReaction` із `emoji`, `mentionPatterns` із `name`/`emoji`. +- `subagents.allowAgents`: список дозволу ID агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише цей самий агент). +- Захист успадкування sandbox: якщо сесія запитувача виконується в sandbox, `sessions_spawn` відхиляє цілі, які працювали б без sandbox. +- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, що не містять `agentId` (примушує до явного вибору профілю; типово: false). --- -## Маршрутизація кількох агентів +## Маршрутизація між кількома агентами Запускайте кілька ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent). @@ -1552,27 +1552,27 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image } ``` -### Поля match для binding +### Поля збігу прив’язок -- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній type означає route), `acp` для сталих ACP bindings розмов. +- `type` (необов’язково): `route` для звичайної маршрутизації (якщо type відсутній, типово використовується route), `acp` для постійних прив’язок розмов ACP. - `match.channel` (обов’язково) -- `match.accountId` (необов’язково; `*` = будь-який акаунт; пропущено = default акаунт) +- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = обліковий запис за замовчуванням) - `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`) -- `match.guildId` / `match.teamId` (необов’язково; залежить від каналу) +- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу) - `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }` -**Детермінований порядок match:** +**Детермінований порядок збігу:** 1. `match.peer` 2. `match.guildId` 3. `match.teamId` 4. `match.accountId` (точний, без peer/guild/team) -5. `match.accountId: "*"` (на весь канал) +5. `match.accountId: "*"` (для всього каналу) 6. Агент за замовчуванням -У межах кожного рівня перший відповідний запис `bindings` має пріоритет. +У межах кожного рівня перший відповідний запис `bindings` перемагає. -Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + акаунт + `match.peer.id`) і не використовує порядок рівнів route binding, описаний вище. +Для записів `type: "acp"` OpenClaw визначає збіг за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує порядок рівнів route binding, наведений вище. ### Профілі доступу для кожного агента @@ -1623,7 +1623,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image - + ```json5 { @@ -1669,7 +1669,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image -Докладніше про пріоритети див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools). +Подробиці пріоритетів див. в [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools). --- @@ -1695,7 +1695,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", - parentForkMaxTokens: 100000, // пропускати fork батьківського thread вище за цю кількість токенів (0 вимикає) + parentForkMaxTokens: 100000, // пропустити fork батьківського потоку вище цього ліміту токенів (0 вимикає) maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", @@ -1707,10 +1707,10 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image }, threadBindings: { enabled: true, - idleHours: 24, // default auto-unfocus через неактивність у годинах (`0` вимикає) - maxAgeHours: 0, // default жорсткий максимум віку в годинах (`0` вимикає) + idleHours: 24, // типове автоматичне unfocus через неактивність у годинах (`0` вимикає) + maxAgeHours: 0, // типовий жорсткий максимальний вік у годинах (`0` вимикає) }, - mainKey: "main", // legacy (runtime завжди використовує "main") + mainKey: "main", // застаріле (runtime завжди використовує "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], @@ -1722,35 +1722,35 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image -- **`scope`**: базова стратегія групування session для контекстів group chat. - - `per-sender` (default): кожен відправник отримує ізольовану session в межах контексту каналу. - - `global`: усі учасники в контексті каналу спільно використовують одну session (використовуйте лише коли справді потрібен спільний контекст). +- **`scope`**: базова стратегія групування сесій для контекстів групового чату. + - `per-sender` (типово): кожен відправник отримує ізольовану сесію в контексті каналу. + - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли потрібен спільний контекст). - **`dmScope`**: як групуються DM. - - `main`: усі DM спільно використовують main session. - - `per-peer`: ізоляція за sender id між каналами. - - `per-channel-peer`: ізоляція за каналом + sender (рекомендовано для inbox із кількома користувачами). - - `per-account-channel-peer`: ізоляція за акаунтом + каналом + sender (рекомендовано для багатоакаунтних конфігурацій). -- **`identityLinks`**: мапа канонічних id до peer із префіксами постачальника для спільного використання session між каналами. -- **`reset`**: основна політика reset. `daily` скидає о `atHour` за локальним часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує той, у якого раніше настає строк. -- **`resetByType`**: перевизначення для типів (`direct`, `group`, `thread`). Legacy `dm` приймається як alias для `direct`. -- **`parentForkMaxTokens`**: максимальна кількість `totalTokens` у батьківській session, дозволена під час створення forked thread session (default `100000`). - - Якщо `totalTokens` батьківської session перевищує це значення, OpenClaw починає нову thread session замість успадкування історії transcript батьківської session. - - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти parent forking. -- **`mainKey`**: legacy field. Runtime тепер завжди використовує `"main"` для основного bucket direct-chat. -- **`agentToAgent.maxPingPongTurns`**: максимальна кількість reply-back turns між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong chaining. -- **`sendPolicy`**: match за `channel`, `chatType` (`direct|group|channel`, з legacy alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет. -- **`maintenance`**: очищення сховища session + керування зберіганням. - - `mode`: `warn` лише показує попередження; `enforce` застосовує очищення. - - `pruneAfter`: поріг віку для застарілих записів (default `30d`). - - `maxEntries`: максимальна кількість записів у `sessions.json` (default `500`). - - `rotateBytes`: ротує `sessions.json`, коли його розмір перевищує це значення (default `10mb`). - - `resetArchiveRetention`: зберігання для архівів transcript `*.reset.`. За замовчуванням дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. - - `maxDiskBytes`: необов’язковий дисковий бюджет для каталогу sessions. У режимі `warn` логуються попередження; у режимі `enforce` спочатку видаляються найстаріші artifacts/sessions. - - `highWaterBytes`: необов’язкова ціль після очищення бюджету. За замовчуванням `80%` від `maxDiskBytes`. -- **`threadBindings`**: глобальні defaults для функцій session, прив’язаних до thread. - - `enabled`: основний default-перемикач (providers можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) - - `idleHours`: default auto-unfocus через неактивність у годинах (`0` вимикає; providers можуть перевизначати) - - `maxAgeHours`: default жорсткий максимум віку в годинах (`0` вимикає; providers можуть перевизначати) + - `main`: усі DM спільно використовують основну сесію. + - `per-peer`: ізолювати за ID відправника між каналами. + - `per-channel-peer`: ізолювати за каналом + відправником (рекомендовано для багатокористувацьких inbox). + - `per-account-channel-peer`: ізолювати за обліковим записом + каналом + відправником (рекомендовано для багатообліковості). +- **`identityLinks`**: зіставлення канонічних ID з peer-ідентифікаторами з префіксами провайдерів для спільного використання сесій між каналами. +- **`reset`**: основна політика скидання. `daily` скидає в `atHour` за локальним часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що настане раніше. +- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як псевдонім для `direct`. +- **`parentForkMaxTokens`**: максимальна кількість `totalTokens` у батьківській сесії, дозволена при створенні форкнутої потокової сесії (типово `100000`). + - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw починає нову потокову сесію замість успадкування історії transcript батьківської сесії. + - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти fork від батьківської сесії. +- **`mainKey`**: застаріле поле. Runtime тепер завжди використовує `"main"` для основного bucket прямого чату. +- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів відповіді між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong. +- **`sendPolicy`**: збіг за `channel`, `chatType` (`direct|group|channel`, зі застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет. +- **`maintenance`**: керування очищенням і збереженням session-store. + - `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення. + - `pruneAfter`: віковий поріг для застарілих записів (типово `30d`). + - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`). + - `rotateBytes`: обертати `sessions.json`, коли він перевищує цей розмір (типово `10mb`). + - `resetArchiveRetention`: строк зберігання архівів transcript `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. + - `maxDiskBytes`: необов’язковий бюджет диска для каталогу сесій. У режимі `warn` лише логуються попередження; у режимі `enforce` спочатку видаляються найстаріші артефакти/сесії. + - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово `80%` від `maxDiskBytes`. +- **`threadBindings`**: глобальні значення за замовчуванням для функцій сесій, прив’язаних до потоків. + - `enabled`: головний перемикач за замовчуванням (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) + - `idleHours`: типове автоматичне unfocus через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати) + - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати) @@ -1788,36 +1788,36 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image ### Префікс відповіді -Перевизначення для каналу/акаунта: `channels..responsePrefix`, `channels..accounts..responsePrefix`. +Перевизначення на рівні каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`. -Розв’язання (найбільш специфічне перемагає): акаунт → канал → глобальний. `""` вимикає й зупиняє cascade. `"auto"` виводить `[{identity.name}]`. +Порядок визначення (найспецифічніше перемагає): обліковий запис → канал → глобальне. `""` вимикає значення і зупиняє каскад. `"auto"` виводить `[{identity.name}]`. -**Змінні шаблону:** +**Шаблонні змінні:** -| Змінна | Опис | Приклад | -| ----------------- | ---------------------- | --------------------------- | -| `{model}` | Коротка назва моделі | `claude-opus-4-6` | +| Змінна | Опис | Приклад | +| ----------------- | ------------------------- | --------------------------- | +| `{model}` | Коротка назва моделі | `claude-opus-4-6` | | `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | -| `{provider}` | Назва постачальника | `anthropic` | -| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` | -| `{identity.name}` | Ім’я ідентичності агента | (те саме, що `"auto"`) | +| `{provider}` | Назва провайдера | `anthropic` | +| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` | +| `{identity.name}` | Назва identity агента | (те саме, що `"auto"`) | -Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`. +Змінні нечутливі до регістру. `{think}` — псевдонім для `{thinkingLevel}`. -### Ack reaction +### Реакція підтвердження -- За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. -- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. -- Порядок розв’язання: акаунт → канал → `messages.ackReaction` → fallback ідентичності. -- Scope: `group-mentions` (default), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: видаляє ack після reply у Slack, Discord і Telegram. -- `messages.statusReactions.enabled`: вмикає lifecycle status reactions у Slack, Discord і Telegram. - У Slack і Discord, якщо параметр не встановлено, status reactions залишаються увімкненими, коли активні ack reactions. - У Telegram задайте його явно як `true`, щоб увімкнути lifecycle status reactions. +- Типово береться з `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. +- Перевизначення на рівні каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. +- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення від identity. +- Область: `group-mentions` (типово), `group-all`, `direct`, `all`. +- `removeAckAfterReply`: видаляє ack після відповіді в Slack, Discord і Telegram. +- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram. + У Slack і Discord, якщо не задано, реакції статусу лишаються ввімкненими, коли активні ack-реакції. + У Telegram задайте явно `true`, щоб увімкнути реакції статусу життєвого циклу. -### Inbound debounce +### Debounce для вхідних повідомлень -Об’єднує швидкі текстові повідомлення від того самого відправника в один agent turn. Media/attachments скидаються негайно. Control commands обходять debouncing. +Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce. ### TTS (text-to-speech) @@ -1860,18 +1860,18 @@ scripts/sandbox-browser-setup.sh # необов’язковий browser image } ``` -- `auto` керує auto-TTS. `/tts off|always|inbound|tagged` перевизначає значення для кожної session. +- `auto` керує auto-TTS. `/tts off|always|inbound|tagged` перевизначає це для сесії. - `summaryModel` перевизначає `agents.defaults.model.primary` для auto-summary. -- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням дорівнює `false` (потрібне явне вмикання). -- API keys використовують fallback до `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-compatible TTS server і послаблює перевірку model/voice. +- `modelOverrides` типово увімкнено; `modelOverrides.allowProvider` типово `false` (увімкнення за бажанням). +- API key резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. +- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. +- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw трактує його як OpenAI-сумісний TTS server і послаблює перевірку model/voice. --- ## Talk -Defaults для режиму Talk (macOS/iOS/Android). +Значення за замовчуванням для режиму Talk (macOS/iOS/Android). ```json5 { @@ -1895,13 +1895,13 @@ Defaults для режиму Talk (macOS/iOS/Android). } ``` -- `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька Talk providers. -- Legacy flat ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) підтримуються лише для сумісності й автоматично мігруються в `talk.providers.`. -- Для Voice ID fallback — `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.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. +- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли API key Talk не налаштовано. +- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви. +- `silenceTimeoutMs` визначає, скільки Talk mode чекає після мовчання користувача перед надсиланням transcript. Якщо не задано, зберігається типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`). --- @@ -1909,37 +1909,37 @@ Defaults для режиму Talk (macOS/iOS/Android). ### Профілі інструментів -`tools.profile` задає базовий allowlist перед `tools.allow`/`tools.deny`: +`tools.profile` задає базовий список дозволу перед `tools.allow`/`tools.deny`: -Локальний onboarding за замовчуванням встановлює `tools.profile: "coding"` для нових локальних конфігурацій, якщо значення не задано (наявні явні профілі зберігаються). +Під час локального onboarding для нових локальних конфігурацій типово встановлюється `tools.profile: "coding"`, якщо поле не задано (наявні явні профілі зберігаються). -| Профіль | Містить | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `minimal` | лише `session_status` | +| Профіль | Містить | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `minimal` | лише `session_status` | | `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` | | `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` | -| `full` | Без обмежень (те саме, що не задано) | +| `full` | Без обмежень (так само, як якщо не задано) | ### Групи інструментів -| Група | Інструменти | -| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- | -| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як alias для `exec`) | -| `group:fs` | `read`, `write`, `edit`, `apply_patch` | -| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | -| `group:memory` | `memory_search`, `memory_get` | -| `group:web` | `web_search`, `x_search`, `web_fetch` | -| `group:ui` | `browser`, `canvas` | -| `group:automation` | `cron`, `gateway` | -| `group:messaging` | `message` | -| `group:nodes` | `nodes` | -| `group:agents` | `agents_list` | -| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | -| `group:openclaw` | Усі вбудовані інструменти (не включає provider plugins) | +| Група | Інструменти | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) | +| `group:fs` | `read`, `write`, `edit`, `apply_patch` | +| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | +| `group:memory` | `memory_search`, `memory_get` | +| `group:web` | `web_search`, `x_search`, `web_fetch` | +| `group:ui` | `browser`, `canvas` | +| `group:automation` | `cron`, `gateway` | +| `group:messaging` | `message` | +| `group:nodes` | `nodes` | +| `group:agents` | `agents_list` | +| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | +| `group:openclaw` | Усі вбудовані інструменти (без provider plugins) | ### `tools.allow` / `tools.deny` -Глобальна політика allow/deny для інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується, навіть коли sandbox Docker вимкнено. +Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Нечутлива до регістру, підтримує шаблони `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено. ```json5 { @@ -1949,7 +1949,7 @@ Defaults для режиму Talk (macOS/iOS/Android). ### `tools.byProvider` -Додатково обмежує інструменти для конкретних providers або моделей. Порядок: базовий профіль → профіль provider → allow/deny. +Додатково обмежує інструменти для конкретних провайдерів або моделей. Порядок: базовий профіль → профіль провайдера → allow/deny. ```json5 { @@ -1965,7 +1965,7 @@ Defaults для режиму Talk (macOS/iOS/Android). ### `tools.elevated` -Керує підвищеним доступом exec поза sandbox: +Керує elevated-доступом exec поза sandbox: ```json5 { @@ -1981,9 +1981,9 @@ Defaults для режиму Talk (macOS/iOS/Android). } ``` -- Перевизначення для агента (`agents.list[].tools.elevated`) може лише ще більше обмежити. -- `/elevated on|off|ask|full` зберігає стан для кожної session; inline directives застосовуються до одного повідомлення. -- Elevated `exec` обходить sandboxing і використовує налаштований шлях escape (`gateway` за замовчуванням або `node`, коли exec target — `node`). +- Перевизначення на рівні агента (`agents.list[].tools.elevated`) може лише додатково обмежувати. +- `/elevated on|off|ask|full` зберігає стан для кожної сесії; вбудовані директиви застосовуються до одного повідомлення. +- Elevated `exec` обходить sandboxing і використовує налаштований шлях виходу (`gateway` типово, або `node`, коли ціллю exec є `node`). ### `tools.exec` @@ -2007,8 +2007,8 @@ Defaults для режиму Talk (macOS/iOS/Android). ### `tools.loopDetection` -Перевірки безпеки циклів інструментів **вимкнені за замовчуванням**. Щоб увімкнути виявлення, задайте `enabled: true`. -Налаштування можна визначати глобально в `tools.loopDetection` і перевизначати для кожного агента в `agents.list[].tools.loopDetection`. +Перевірки безпеки циклів інструментів **типово вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення. +Параметри можна визначити глобально в `tools.loopDetection` і перевизначити для агента в `agents.list[].tools.loopDetection`. ```json5 { @@ -2029,14 +2029,14 @@ Defaults для режиму Talk (macOS/iOS/Android). } ``` -- `historySize`: максимальна історія tool-call, що зберігається для аналізу циклів. -- `warningThreshold`: поріг повторюваного шаблону без прогресу для попереджень. -- `criticalThreshold`: вищий поріг повторення для блокування критичних циклів. -- `globalCircuitBreakerThreshold`: жорсткий поріг зупинки для будь-якого запуску без прогресу. +- `historySize`: максимальна історія викликів інструментів, що зберігається для аналізу циклів. +- `warningThreshold`: поріг повторюваних патернів без прогресу для попереджень. +- `criticalThreshold`: вищий поріг повторень для блокування критичних циклів. +- `globalCircuitBreakerThreshold`: жорсткий поріг зупинки для будь-якого виконання без прогресу. - `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами. -- `detectors.knownPollNoProgress`: попереджати/блокувати відомі poll tools без прогресу (`process.poll`, `command_status` тощо). -- `detectors.pingPong`: попереджати/блокувати шаблони чергування пар без прогресу. -- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка валідації завершується помилкою. +- `detectors.knownPollNoProgress`: попереджати/блокувати відомі poll-інструменти (`process.poll`, `command_status` тощо). +- `detectors.pingPong`: попереджати/блокувати чергування пар без прогресу. +- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка не проходить. ### `tools.web` @@ -2070,7 +2070,7 @@ Defaults для режиму Talk (macOS/iOS/Android). ### `tools.media` -Налаштовує розуміння вхідних media (image/audio/video): +Налаштовує розуміння вхідних медіа (зображення/аудіо/відео): ```json5 { @@ -2101,24 +2101,24 @@ Defaults для режиму Talk (macOS/iOS/Android). -**Запис provider** (`type: "provider"` або пропущено): +**Запис провайдера** (`type: "provider"` або пропущено): -- `provider`: API provider id (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо) -- `model`: перевизначення id моделі +- `provider`: ID API-провайдера (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо) +- `model`: перевизначення model id - `profile` / `preferredProfile`: вибір профілю `auth-profiles.json` -**Запис CLI** (`type: "cli"`): +**CLI-запис** (`type: "cli"`): - `command`: виконуваний файл -- `args`: параметризовані args (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо) +- `args`: шаблонізовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо) **Спільні поля:** -- `capabilities`: необов’язковий список (`image`, `audio`, `video`). Defaults: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. +- `capabilities`: необов’язковий список (`image`, `audio`, `video`). Типові значення: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. - `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для конкретного запису. -- У разі помилок використовується наступний запис. +- Помилки переводять виконання до наступного запису. -Автентифікація provider follows standard order: `auth-profiles.json` → env vars → `models.providers.*.apiKey`. +Автентифікація провайдера використовує стандартний порядок: `auth-profiles.json` → env vars → `models.providers.*.apiKey`. @@ -2137,9 +2137,9 @@ Defaults для режиму Talk (macOS/iOS/Android). ### `tools.sessions` -Керує тим, які sessions можуть бути цілями для session tools (`sessions_list`, `sessions_history`, `sessions_send`). +Керує тим, на які сесії можуть націлюватися session tools (`sessions_list`, `sessions_history`, `sessions_send`). -Default: `tree` (поточна session + sessions, породжені нею, наприклад subagents). +Типово: `tree` (поточна сесія + сесії, породжені нею, наприклад subagents). ```json5 { @@ -2154,26 +2154,26 @@ Default: `tree` (поточна session + sessions, породжені нею, Примітки: -- `self`: лише поточний session key. -- `tree`: поточна session + sessions, породжені поточною session (subagents). -- `agent`: будь-яка session, що належить поточному agent id (може включати інших користувачів, якщо ви запускаєте per-sender sessions під тим самим agent id). -- `all`: будь-яка session. Націлення між агентами все одно потребує `tools.agentToAgent`. -- Sandbox clamp: коли поточна session працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`. +- `self`: лише поточний ключ сесії. +- `tree`: поточна сесія + сесії, породжені поточною сесією (subagents). +- `agent`: будь-яка сесія, що належить поточному ID агента (може включати інших користувачів, якщо ви використовуєте сесії per-sender під тим самим agent id). +- `all`: будь-яка сесія. Націлювання між агентами все одно потребує `tools.agentToAgent`. +- Обмеження sandbox: коли поточна сесія виконується в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, visibility примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`. ### `tools.sessions_spawn` -Керує підтримкою inline attachments для `sessions_spawn`. +Керує підтримкою вбудованих вкладень для `sessions_spawn`. ```json5 { tools: { sessions_spawn: { attachments: { - enabled: false, // opt-in: установіть true, щоб дозволити inline file attachments + enabled: false, // увімкнення: установіть true, щоб дозволити вбудовані вкладення файлів maxTotalBytes: 5242880, // 5 MB сумарно для всіх файлів maxFiles: 50, maxFileBytes: 1048576, // 1 MB на файл - retainOnSessionKeep: false, // зберігати attachments, коли cleanup="keep" + retainOnSessionKeep: false, // зберігати вкладення, коли cleanup="keep" }, }, }, @@ -2182,16 +2182,16 @@ Default: `tree` (поточна session + sessions, породжені нею, Примітки: -- Attachments підтримуються лише для `runtime: "subagent"`. Runtime ACP відхиляє їх. -- Файли матеріалізуються в child workspace у `.openclaw/attachments//` разом із `.manifest.json`. -- Вміст attachment автоматично редагується з transcript persistence. -- Base64 inputs проходять перевірку за суворими правилами alphabet/padding і з перевіркою розміру до декодування. -- Права файлів: `0700` для каталогів і `0600` для файлів. -- Очищення дотримується політики `cleanup`: `delete` завжди видаляє attachments; `keep` зберігає їх лише коли `retainOnSessionKeep: true`. +- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє. +- Файли матеріалізуються в дочірньому workspace в `.openclaw/attachments//` із `.manifest.json`. +- Вміст вкладень автоматично редагується в transcript persistence. +- Входи base64 перевіряються суворо: алфавіт/паддинг і захист розміру до декодування. +- Права доступу для файлів: `0700` для каталогів і `0600` для файлів. +- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`. ### `tools.experimental` -Експериментальні прапори вбудованих інструментів. За замовчуванням вимкнені, якщо не діє auto-enable rule, специфічне для runtime. +Експериментальні прапорці вбудованих інструментів. Типово вимкнені, якщо не діє правило auto-enable для конкретного runtime. ```json5 { @@ -2206,8 +2206,8 @@ Default: `tree` (поточна session + sessions, породжені нею, Примітки: - `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи. -- Default: `false` для не-OpenAI providers. OpenAI і OpenAI Codex runs вмикають його автоматично. -- Коли інструмент увімкнено, system prompt також додає підказки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й підтримувала не більше одного кроку `in_progress`. +- Типово: `false` для провайдерів, відмінних від OpenAI. Запуски OpenAI і OpenAI Codex вмикають його автоматично. +- Коли увімкнено, системний prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більше одного кроку в стані `in_progress`. ### `agents.defaults.subagents` @@ -2227,21 +2227,21 @@ Default: `tree` (поточна session + sessions, породжені нею, } ``` -- `model`: default model для spawned sub-agents. Якщо параметр пропущено, sub-agents успадковують model викликача. -- `allowAgents`: default allowlist цільових agent ids для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; default: лише той самий агент). -- `runTimeoutSeconds`: default timeout (секунди) для `sessions_spawn`, коли у виклику інструмента пропущено `runTimeoutSeconds`. `0` означає без timeout. +- `model`: типова модель для створених sub-agents. Якщо не задано, sub-agents успадковують модель викликача. +- `allowAgents`: типовий список дозволу ID цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; типово: лише цей самий агент). +- `runTimeoutSeconds`: тайм-аут за замовчуванням (секунди) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає відсутність тайм-ауту. - Політика інструментів для subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. --- -## Користувацькі providers і base URLs +## Користувацькі провайдери та base URL -OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких providers через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`. +OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`. ```json5 { models: { - mode: "merge", // merge (default) | replace + mode: "merge", // merge (типово) | replace providers: { "custom-proxy": { baseUrl: "http://localhost:4000/v1", @@ -2265,48 +2265,48 @@ OpenClaw використовує вбудований каталог модел } ``` -- Використовуйте `authHeader: true` + `headers` для нестандартних вимог автентифікації. -- Перевизначте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий alias environment variable). -- Пріоритет злиття для відповідних provider IDs: +- Використовуйте `authHeader: true` + `headers` для користувацьких потреб автентифікації. +- Перевизначте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища). +- Пріоритет злиття для збігів provider ID: - Непорожні значення `baseUrl` в agent `models.json` мають пріоритет. - - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей provider не керується через SecretRef у поточному контексті config/auth-profile. - - Для provider `apiKey`, керованих SecretRef, значення оновлюються з source markers (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs), а не шляхом збереження розв’язаних секретів. - - Для значень заголовків provider, керованих SecretRef, оновлення також відбувається з source markers (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs). - - Порожні або відсутні `apiKey`/`baseUrl` в agent використовують fallback до `models.providers` у конфігурації. - - Для matching models `contextWindow`/`maxTokens` використовується вище значення між явною конфігурацією та неявними значеннями каталогу. - - Для matching model `contextTokens` зберігається явне runtime cap, якщо воно задане; використовуйте його, щоб обмежити ефективний контекст без зміни native metadata моделі. + - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile. + - Значення `apiKey` провайдера, керовані SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs) замість збереження визначених секретів. + - Значення header провайдера, керовані SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs). + - Порожні або відсутні `apiKey`/`baseUrl` агента повертаються до `models.providers` у конфігурації. + - Для відповідних моделей `contextWindow`/`maxTokens` використовують більше значення між явною конфігурацією та неявними значеннями каталогу. + - Для відповідних моделей `contextTokens` зберігається явне обмеження runtime, коли воно є; використовуйте це, щоб обмежити ефективний контекст без зміни нативних метаданих моделі. - Використовуйте `models.mode: "replace"`, коли хочете, щоб конфігурація повністю переписала `models.json`. - - Збереження marker є source-authoritative: markers записуються з активного source config snapshot (до розв’язання), а не з розв’язаних runtime secret values. + - Збереження маркерів підпорядковується джерелу: маркери записуються з активного знімка конфігурації джерела (до визначення), а не з визначених значень секретів runtime. -### Деталі полів provider +### Деталі полів провайдера -- `models.mode`: поведінка каталогу provider (`merge` або `replace`). -- `models.providers`: мапа користувацьких providers, ключована за provider id. -- `models.providers.*.api`: adapter запиту (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо). -- `models.providers.*.apiKey`: credential постачальника (віддавайте перевагу SecretRef/env substitution). +- `models.mode`: поведінка каталогу провайдера (`merge` або `replace`). +- `models.providers`: карта користувацьких провайдерів за ключем provider id. +- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо). +- `models.providers.*.apiKey`: облікові дані провайдера (краще використовувати SecretRef/env substitution). - `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`). -- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` інжектувати `options.num_ctx` у запити (default: `true`). -- `models.providers.*.authHeader`: примусово передавати credential у заголовку `Authorization`, коли це потрібно. -- `models.providers.*.baseUrl`: базова URL-адреса upstream API. -- `models.providers.*.headers`: додаткові статичні заголовки для proxy/tenant routing. -- `models.providers.*.request`: перевизначення transport для HTTP-запитів model-provider. - - `request.headers`: додаткові заголовки (зливаються з defaults provider). Значення приймають SecretRef. - - `request.auth`: перевизначення стратегії auth. Режими: `"provider-default"` (використовувати вбудовану auth постачальника), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`). +- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вставляє `options.num_ctx` у запити (типово: `true`). +- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно. +- `models.providers.*.baseUrl`: base URL upstream API. +- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації proxy/tenant. +- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів model-provider. + - `request.headers`: додаткові заголовки (зливаються з типовими значеннями провайдера). Значення приймають SecretRef. + - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`). - `request.proxy`: перевизначення HTTP proxy. Режими: `"env-proxy"` (використовувати env vars `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (з `url`). Обидва режими приймають необов’язковий підоб’єкт `tls`. - `request.tls`: перевизначення TLS для прямих з’єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`. -- `models.providers.*.models`: явні записи каталогу моделей постачальника. -- `models.providers.*.models.*.contextWindow`: metadata native context window моделі. -- `models.providers.*.models.*.contextTokens`: необов’язкова runtime cap для контексту. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж native `contextWindow` моделі. -- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова compatibility hint. Для `api: "openai-completions"` із непорожнім ненативним `baseUrl` (host не `api.openai.com`) OpenClaw примусово встановлює це в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає стандартну поведінку OpenAI. -- `plugins.entries.amazon-bedrock.config.discovery`: кореневі налаштування auto-discovery Bedrock. +- `models.providers.*.models`: явні записи каталогу моделей провайдера. +- `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі. +- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту runtime. Використовуйте це, якщо вам потрібен менший ефективний бюджет контексту, ніж нативне `contextWindow` моделі. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` із непорожнім ненативним `baseUrl` (host не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI. +- `plugins.entries.amazon-bedrock.config.discovery`: кореневий розділ налаштувань auto-discovery Bedrock. - `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне discovery. - `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для discovery. - `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового discovery. - `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення discovery. -- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: fallback context window для виявлених моделей. -- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: fallback max output tokens для виявлених моделей. +- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для виявлених моделей. +- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей. -### Приклади provider +### Приклади провайдерів @@ -2342,7 +2342,7 @@ OpenClaw використовує вбудований каталог модел } ``` -Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` — для прямого Z.AI. +Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` для прямого Z.AI. @@ -2376,11 +2376,11 @@ OpenClaw використовує вбудований каталог модел } ``` -Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як aliases. Скорочення: `openclaw onboard --auth-choice zai-api-key`. +Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` — прийнятні псевдоніми. Скорочення: `openclaw onboard --auth-choice zai-api-key`. - Загальний endpoint: `https://api.z.ai/api/paas/v4` -- Endpoint для кодування (default): `https://api.z.ai/api/coding/paas/v4` -- Для загального endpoint визначте користувацького provider із перевизначенням base URL. +- Endpoint для кодування (типовий): `https://api.z.ai/api/coding/paas/v4` +- Для загального endpoint визначте користувацького провайдера з перевизначенням base URL. @@ -2421,9 +2421,9 @@ OpenClaw використовує вбудований каталог модел Для endpoint у Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`. -Native endpoints Moonshot заявляють сумісність із використанням streaming на спільному -транспорті `openai-completions`, і OpenClaw тепер визначає це за -можливостями endpoint, а не лише за id вбудованого provider. +Нативні endpoint-и Moonshot повідомляють про сумісність потокового використання на спільному +транспорті `openai-completions`, і OpenClaw тепер визначає це за можливостями endpoint-а, +а не лише за вбудованим provider id. @@ -2441,11 +2441,11 @@ Native endpoints Moonshot заявляють сумісність із вико } ``` -Сумісний з Anthropic, вбудований provider. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`. +Сумісний з Anthropic, вбудований провайдер. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`. - + ```json5 { @@ -2480,11 +2480,11 @@ Native endpoints Moonshot заявляють сумісність із вико } ``` -Base URL має бути без `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`. +Base URL має не містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`. - + ```json5 { @@ -2523,9 +2523,9 @@ Base URL має бути без `/v1` (клієнт Anthropic додає йог Установіть `MINIMAX_API_KEY`. Скорочення: `openclaw onboard --auth-choice minimax-global-api` або `openclaw onboard --auth-choice minimax-cn-api`. -Тепер каталог моделей за замовчуванням використовує лише M2.7. -На Anthropic-compatible streaming path OpenClaw вимикає thinking MiniMax -за замовчуванням, якщо ви самі явно не встановите `thinking`. `/fast on` або +Каталог моделей тепер типово використовує лише M2.7. +На Anthropic-compatible streaming path OpenClaw типово вимикає thinking MiniMax, +якщо ви явно не задасте `thinking` самостійно. `/fast on` або `params.fastMode: true` переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`. @@ -2533,7 +2533,7 @@ Base URL має бути без `/v1` (клієнт Anthropic додає йог -Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на потужному обладнанні; залишайте hosted models злитими для fallback. +Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте hosted-моделі в режимі merge для fallback. @@ -2554,7 +2554,7 @@ Base URL має бути без `/v1` (клієнт Anthropic додає йог }, entries: { "image-lab": { - apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або простий текстовий рядок + apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або звичайний рядок env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" }, }, peekaboo: { enabled: true }, @@ -2564,14 +2564,14 @@ Base URL має бути без `/v1` (клієнт Anthropic додає йог } ``` -- `allowBundled`: необов’язковий allowlist лише для bundled Skills (керовані/workspace Skills не зачіпає). +- `allowBundled`: необов’язковий список дозволу лише для bundled Skills (керовані/workspace Skills це не зачіпає). - `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет). -- `install.preferBrew`: коли true, віддає перевагу інсталяторам Homebrew, якщо - `brew` доступний, перш ніж переходити до інших типів інсталяторів. -- `install.nodeManager`: бажаний менеджер інсталяції node для специфікацій `metadata.openclaw.install` - (`npm` | `pnpm` | `yarn` | `bun`). +- `install.preferBrew`: коли true, віддавати перевагу інсталяторам Homebrew, якщо `brew` + доступний, перед переходом до інших типів інсталяторів. +- `install.nodeManager`: бажаний менеджер інсталяції node для специфікацій + `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). - `entries..enabled: false` вимикає Skill, навіть якщо він bundled/installed. -- `entries..apiKey`: спрощене поле API key для Skills, які оголошують основну env variable (простий текстовий рядок або об’єкт SecretRef). +- `entries..apiKey`: зручне поле для Skills, що оголошують основну env var (звичайний рядок або об’єкт SecretRef). --- @@ -2600,93 +2600,17 @@ Base URL має бути без `/v1` (клієнт Anthropic додає йог ``` - Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`. -- Discovery приймає native plugins OpenClaw, а також сумісні bundles Codex і Claude, включно з bundle Claude без manifest у стандартному layout. -- **Зміни конфігурації потребують restart gateway.** -- `allow`: необов’язковий allowlist (завантажуються лише вказані plugins). `deny` має пріоритет. -- `plugins.entries..apiKey`: спрощене plugin-level поле API key (коли це підтримується plugin). -- `plugins.entries..env`: мапа env vars у межах plugin. -- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля зі зміною prompt із legacy `before_agent_start`, зберігаючи legacy `modelOverride` і `providerOverride`. Застосовується до native plugin hooks і підтримуваних директорій hooks, наданих bundles. -- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому plugin запитувати перевизначення `provider` і `model` для кожного запуску background subagent. -- `plugins.entries..subagent.allowedModels`: необов’язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли свідомо хочете дозволити будь-яку модель. -- `plugins.entries..config`: об’єкт конфігурації, визначений plugin (валідується native OpenClaw plugin schema, коли вона доступна). -- `plugins.entries.firecrawl.config.webFetch`: налаштування постачальника web-fetch Firecrawl. - - `apiKey`: API key Firecrawl (приймає SecretRef). Використовує fallback до `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`. - - `baseUrl`: базова URL-адреса API Firecrawl (default: `https://api.firecrawl.dev`). - - `onlyMainContent`: витягувати лише основний вміст сторінок (default: `true`). - - `maxAgeMs`: максимальний вік кешу в мілісекундах (default: `172800000` / 2 дні). - - `timeoutSeconds`: timeout запиту scrape у секундах (default: `60`). -- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok). - - `enabled`: увімкнути постачальника X Search. - - `model`: модель Grok для пошуку (наприклад `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: налаштування dreaming пам’яті (експериментально). Режими і пороги див. у [Dreaming](/uk/concepts/dreaming). - - `mode`: preset cadence для dreaming (`"off"`, `"core"`, `"rem"`, `"deep"`). Default: `"off"`. - - `cron`: необов’язкове перевизначення cron expression для розкладу dreaming. - - `timezone`: часовий пояс для оцінки розкладу (fallback до `agents.defaults.userTimezone`). - - `limit`: максимальна кількість кандидатів на просування за цикл. - - `minScore`: мінімальний поріг зваженого score для просування. - - `minRecallCount`: мінімальний поріг кількості recall. - - `minUniqueQueries`: мінімальна кількість різних запитів. - - `recencyHalfLifeDays`: кількість днів, за які recency score зменшується вдвічі. Default: `14`. - - `maxAgeDays`: необов’язковий максимальний вік daily note у днях, дозволений для просування. - - `verboseLogging`: виводити детальні dreaming logs для кожного запуску у звичайний потік log gateway. -- Увімкнені Claude bundle plugins також можуть додавати вбудовані Pi defaults із `settings.json`; OpenClaw застосовує їх як санітизовані agent settings, а не як сирі patches конфігурації OpenClaw. -- `plugins.slots.memory`: виберіть id активного plugin пам’яті або `"none"`, щоб вимкнути memory plugins. -- `plugins.slots.contextEngine`: виберіть id активного plugin context engine; default — `"legacy"`, якщо ви не встановили й не вибрали інший engine. -- `plugins.installs`: метадані інсталяції, керовані CLI, які використовує `openclaw plugins update`. - - Містить `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`. - - Розглядайте `plugins.installs.*` як керований стан; віддавайте перевагу командам CLI, а не ручному редагуванню. - -Див. [Plugins](/uk/tools/plugin). - ---- - -## Browser - -```json5 -{ - browser: { - enabled: true, - evaluateEnabled: true, - defaultProfile: "user", - ssrfPolicy: { - dangerouslyAllowPrivateNetwork: true, // default trusted-network mode - // allowPrivateNetwork: true, // legacy alias - // hostnameAllowlist: ["*.example.com", "example.com"], - // allowedHostnames: ["localhost"], - }, - profiles: { - openclaw: { cdpPort: 18800, color: "#FF4500" }, - work: { cdpPort: 18801, color: "#0066CC" }, - user: { driver: "existing-session", attachOnly: true, color: "#00AA00" }, - brave: { - driver: "existing-session", - attachOnly: true, - userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", - color: "#FB542B", - }, - remote: { cdpUrl: "http://10.0.0.42:9222", color: "#00AA00" }, - }, - color: "#FF4500", - // headless: false, - // noSandbox: false, - // extraArgs: [], - // executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", - // attachOnly: false, - }, -} -``` - -- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`. -- `ssrfPolicy.dangerouslyAllowPrivateNetwork` за замовчуванням дорівнює `true`, якщо не встановлено (модель довіреної мережі). -- Установіть `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` для суворої навігації browser лише по public endpoints. -- У суворому режимі endpoints remote CDP profile (`profiles.*.cdpUrl`) підпадають під ті самі обмеження private-network під час reachability/discovery checks. -- `ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як legacy alias. -- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків. -- Remote profiles доступні лише для attach (start/stop/reset вимкнено). -- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`. - Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив `/json/version`; використовуйте WS(S), - коли ваш provider дає вам прямий DevTools WebSocket URL. -- Профілі `existing-session` працюють лише на хості та використовують Chrome MCP замість CDP. -- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлюватися на конкретний - профіль Chromium-based browser, наприклад Brave або Edge. -- Проф \ No newline at end of file +- Discovery приймає нативні plugin OpenClaw, а також сумісні bundles Codex і Claude, включно з manifestless bundle Claude зі стандартним layout. +- **Зміни конфігурації вимагають перезапуску gateway.** +- `allow`: необов’язковий список дозволу (завантажуються лише перелічені plugins). `deny` має пріоритет. +- `plugins.entries..apiKey`: зручне поле API key на рівні plugin (коли plugin це підтримує). +- `plugins.entries..env`: карта env var у межах plugin. +- `plugins.entries..hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля legacy `before_agent_start`, що змінюють prompt, зберігаючи при цьому legacy `modelOverride` і `providerOverride`. Застосовується до нативних hook-ів plugin і підтримуваних каталогів hook-ів, наданих bundles. +- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому plugin право запитувати перевизначення `provider` і `model` для окремих запусків фонового subagent. +- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволу канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише якщо свідомо хочете дозволити будь-яку модель. +- `plugins.entries..config`: об’єкт конфігурації, визначений plugin (перевіряється схемою нативного plugin OpenClaw, коли вона доступна). +- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера web-fetch Firecrawl. + - `apiKey`: API key Firecrawl (приймає SecretRef). Резервно використовує `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілий `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`. + - `baseUrl`: base URL API Firecrawl (типово: `https://api.firecrawl.dev`). + - `onlyMainContent`: видобувати лише основний вміст сторінок (типово: `true`). + - `maxAgeMs`: максим \ No newline at end of file diff --git a/docs/uk/help/faq.md b/docs/uk/help/faq.md index 47b9f313f..f8d2a571e 100644 --- a/docs/uk/help/faq.md +++ b/docs/uk/help/faq.md @@ -1,23 +1,23 @@ --- read_when: - - Відповіді на поширені запитання щодо налаштування, встановлення, онбордингу або підтримки під час роботи + - Відповідь на поширені запитання щодо налаштування, встановлення, онбордингу або підтримки під час роботи - Тріаж проблем, про які повідомляють користувачі, перед глибшим налагодженням summary: Часті запитання про налаштування, конфігурацію та використання OpenClaw -title: Поширені запитання +title: ЧаПи x-i18n: - generated_at: "2026-04-05T18:22:04Z" + generated_at: "2026-04-06T00:38:53Z" model: gpt-5.4 provider: openai - source_hash: f1004466a417ae57373048f4353ab4040a5c567980542375fbf55ff93132de31 + source_hash: 4d6d09621c6033d580cbcf1ff46f81587d69404d6f64c8d8fd8c3f09185bb920 source_path: help/faq.md workflow: 15 --- -# Поширені запитання +# ЧаПи -Швидкі відповіді та глибше усунення несправностей для реальних сценаріїв налаштування (локальна розробка, VPS, multi-agent, OAuth/API-ключі, резервне перемикання моделей). Для діагностики під час роботи див. [Troubleshooting](/uk/gateway/troubleshooting). Повний довідник з конфігурації див. у [Configuration](/uk/gateway/configuration). +Швидкі відповіді та глибше усунення проблем для реальних сценаріїв налаштування (локальна розробка, VPS, multi-agent, OAuth/API-ключі, резервне перемикання моделей). Для діагностики під час роботи див. [Усунення проблем](/uk/gateway/troubleshooting). Повний довідник конфігурації див. у [Конфігурація](/uk/gateway/configuration). -## Перші 60 секунд, якщо щось зламано +## Перші 60 секунд, якщо щось зламалося 1. **Швидкий статус (перша перевірка)** @@ -25,23 +25,23 @@ x-i18n: openclaw status ``` - Швидке локальне зведення: ОС + оновлення, доступність gateway/service, agents/sessions, конфігурація провайдера + проблеми під час роботи (коли gateway доступний). + Швидке локальне зведення: ОС + оновлення, доступність gateway/сервісу, agents/sessions, конфігурація провайдера + проблеми під час роботи (коли gateway доступний). -2. **Звіт, який можна вставити й безпечно поширити** +2. **Звіт, який можна вставити (безпечний для поширення)** ```bash openclaw status --all ``` - Діагностика лише для читання з хвостом логів (токени приховано). + Діагностика лише для читання з хвостом логів (токени приховані). -3. **Стан демона та порту** +3. **Стан демона + порту** ```bash openclaw gateway status ``` - Показує runtime супервізора порівняно з доступністю RPC, цільову URL-адресу probe і яку конфігурацію сервіс імовірно використовував. + Показує runtime супервізора порівняно з доступністю RPC, URL цілі probe та яку конфігурацію сервіс, імовірно, використав. 4. **Глибокі probe-перевірки** @@ -49,22 +49,22 @@ x-i18n: openclaw status --deep ``` - Виконує live gateway health probe, включно з перевірками каналів, коли це підтримується - (потрібен доступний gateway). Див. [Health](/uk/gateway/health). + Запускає live probe перевірки health gateway, включно з probe перевірками каналів, коли це підтримується + (потрібен доступний gateway). Див. [Стан](/uk/gateway/health). -5. **Перегляд найновішого журналу** +5. **Переглянути останній лог у реальному часі** ```bash openclaw logs --follow ``` - Якщо RPC недоступний, використовуйте: + Якщо RPC недоступний, використайте запасний варіант: ```bash tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" ``` - Файлові логи відокремлені від логів сервісу; див. [Logging](/uk/logging) і [Troubleshooting](/uk/gateway/troubleshooting). + Файлові логи відокремлені від логів сервісу; див. [Логування](/uk/logging) та [Усунення проблем](/uk/gateway/troubleshooting). 6. **Запустити doctor (виправлення)** @@ -72,48 +72,48 @@ x-i18n: openclaw doctor ``` - Виправляє/мігрує config/state + запускає health checks. Див. [Doctor](/uk/gateway/doctor). + Виправляє/мігрує config/state + запускає перевірки health. Див. [Doctor](/uk/gateway/doctor). -7. **Знімок Gateway** +7. **Знімок gateway** ```bash openclaw health --json - openclaw health --verbose # показує цільову URL-адресу + шлях до config у разі помилок + openclaw health --verbose # shows the target URL + config path on errors ``` - Запитує у запущеного gateway повний знімок (лише WS). Див. [Health](/uk/gateway/health). + Запитує у запущеного gateway повний знімок (лише WS). Див. [Стан](/uk/gateway/health). -## Швидкий старт і початкове налаштування +## Швидкий старт і перше налаштування - - Скористайтеся локальним AI-агентом, який може **бачити вашу машину**. Це набагато ефективніше, ніж питати - у Discord, бо більшість випадків «я застряг» — це **проблеми локальної конфігурації або середовища**, + + Використайте локального AI-агента, який може **бачити вашу машину**. Це значно ефективніше, ніж питати + в Discord, тому що більшість випадків "я застряг(ла)" — це **локальні проблеми конфігурації або середовища**, які віддалені помічники не можуть перевірити. - **Claude Code**: [https://www.anthropic.com/claude-code/](https://www.anthropic.com/claude-code/) - **OpenAI Codex**: [https://openai.com/codex/](https://openai.com/codex/) - Ці інструменти можуть читати репозиторій, запускати команди, перевіряти логи та допомагати виправляти - налаштування на рівні машини (PATH, сервіси, дозволи, auth-файли). Надайте їм **повну копію вихідного коду** - через hackable (git) install: + Ці інструменти можуть читати репозиторій, виконувати команди, перевіряти логи й допомагати виправляти + налаштування на рівні машини (PATH, сервіси, дозволи, auth-файли). Надайте їм **повний checkout вихідного коду** через + hackable-встановлення (git): ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - Це встановлює OpenClaw **із git checkout**, тому агент може читати код і документацію та - міркувати про точну версію, яку ви використовуєте. Пізніше ви завжди можете повернутися до stable, + Це встановлює OpenClaw **із git checkout**, тож агент може читати код + документацію і + міркувати про точну версію, яку ви запускаєте. Ви завжди можете повернутися до stable пізніше, повторно запустивши інсталятор без `--install-method git`. Порада: попросіть агента **спланувати й супроводжувати** виправлення (крок за кроком), а потім виконати лише - потрібні команди. Це зберігає зміни невеликими й полегшує аудит. + потрібні команди. Це зменшує масштаб змін і спрощує аудит. - Якщо ви виявите реальний баг або виправлення, будь ласка, створіть GitHub issue або надішліть PR: + Якщо ви знайдете реальний баг або виправлення, будь ласка, створіть issue на GitHub або надішліть PR: [https://github.com/openclaw/openclaw/issues](https://github.com/openclaw/openclaw/issues) [https://github.com/openclaw/openclaw/pulls](https://github.com/openclaw/openclaw/pulls) - Почніть із цих команд (діліться виводом, коли просите про допомогу): + Почніть із цих команд (поділіться виводом, коли просите про допомогу): ```bash openclaw status @@ -123,15 +123,15 @@ x-i18n: Що вони роблять: - - `openclaw status`: швидкий знімок здоров’я gateway/agent + базової конфігурації. + - `openclaw status`: швидкий знімок health gateway/agent + базової конфігурації. - `openclaw models status`: перевіряє auth провайдера + доступність моделей. - - `openclaw doctor`: перевіряє та виправляє поширені проблеми config/state. + - `openclaw doctor`: перевіряє та виправляє типові проблеми config/state. Інші корисні перевірки CLI: `openclaw status --all`, `openclaw logs --follow`, `openclaw gateway status`, `openclaw health --verbose`. - Швидкий цикл налагодження: [Перші 60 секунд, якщо щось зламано](#перші-60-секунд-якщо-щось-зламано). - Документація зі встановлення: [Install](/uk/install), [Installer flags](/uk/install/installer), [Updating](/uk/install/updating). + Швидкий цикл налагодження: [Перші 60 секунд, якщо щось зламалося](#перші-60-секунд-якщо-щось-зламалося). + Документація зі встановлення: [Встановлення](/uk/install), [Прапорці інсталятора](/uk/install/installer), [Оновлення](/uk/install/updating). @@ -139,122 +139,122 @@ x-i18n: Поширені причини пропуску heartbeat: - `quiet-hours`: поза налаштованим вікном active-hours - - `empty-heartbeat-file`: `HEARTBEAT.md` існує, але містить лише порожній/заголовковий каркас - - `no-tasks-due`: у `HEARTBEAT.md` активний режим задач, але жоден з інтервалів задач ще не настав - - `alerts-disabled`: вся видимість heartbeat вимкнена (`showOk`, `showAlerts` і `useIndicator` вимкнені) + - `empty-heartbeat-file`: `HEARTBEAT.md` існує, але містить лише порожній/заголовковий шаблон + - `no-tasks-due`: режим задач `HEARTBEAT.md` активний, але жоден із інтервалів задач ще не настав + - `alerts-disabled`: уся видимість heartbeat вимкнена (`showOk`, `showAlerts` і `useIndicator` усі вимкнені) - У режимі задач часові мітки настання оновлюються лише після завершення реального heartbeat-запуску. - Пропущені запуски не позначають задачі як виконані. + У режимі задач часові мітки due оновлюються лише після завершення + реального запуску heartbeat. Пропущені запуски не позначають задачі як виконані. - Документація: [Heartbeat](/uk/gateway/heartbeat), [Automation & Tasks](/uk/automation). + Документація: [Heartbeat](/uk/gateway/heartbeat), [Автоматизація та задачі](/uk/automation). - - У репозиторії рекомендується запуск із вихідного коду та використання onboarding: + + Репозиторій рекомендує запуск із вихідного коду та використання онбордингу: ```bash curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --install-daemon ``` - Майстер також може автоматично зібрати UI assets. Після onboarding ви зазвичай запускаєте Gateway на порту **18789**. + Майстер також може автоматично зібрати UI-ресурси. Після онбордингу ви зазвичай запускаєте Gateway на порту **18789**. - Із вихідного коду (для учасників/розробників): + Із вихідного коду (contributors/dev): ```bash git clone https://github.com/openclaw/openclaw.git cd openclaw pnpm install pnpm build - pnpm ui:build # автоматично встановлює UI deps під час першого запуску + pnpm ui:build # auto-installs UI deps on first run openclaw onboard ``` - Якщо у вас ще немає глобального встановлення, запускайте через `pnpm openclaw onboard`. + Якщо у вас ще немає глобального встановлення, запустіть через `pnpm openclaw onboard`. - - Майстер відкриває браузер із чистою (без токена) URL-адресою dashboard одразу після onboarding і також друкує посилання в підсумку. Залиште цю вкладку відкритою; якщо її не було запущено, скопіюйте та вставте надруковану URL-адресу на тій самій машині. + + Майстер відкриває у вашому браузері чисту (без токенізованого URL) адресу dashboard одразу після онбордингу, а також друкує посилання в підсумку. Тримайте цю вкладку відкритою; якщо вона не запустилася, скопіюйте й вставте надрукований URL на тій самій машині. **Localhost (та сама машина):** - Відкрийте `http://127.0.0.1:18789/`. - - Якщо запитується shared-secret auth, вставте налаштований токен або пароль у налаштуваннях Control UI. + - Якщо запитує auth через shared secret, вставте налаштований токен або пароль у налаштуваннях Control UI. - Джерело токена: `gateway.auth.token` (або `OPENCLAW_GATEWAY_TOKEN`). - Джерело пароля: `gateway.auth.password` (або `OPENCLAW_GATEWAY_PASSWORD`). - - Якщо shared secret ще не налаштовано, згенеруйте токен командою `openclaw doctor --generate-gateway-token`. + - Якщо shared secret ще не налаштовано, згенеруйте токен через `openclaw doctor --generate-gateway-token`. **Не на localhost:** - - **Tailscale Serve** (рекомендовано): залиште bind loopback, виконайте `openclaw gateway --tailscale serve`, відкрийте `https:///`. Якщо `gateway.auth.allowTailscale` має значення `true`, identity headers задовольняють auth для Control UI/WebSocket (без вставляння shared secret, за умови довіри до gateway host); HTTP API усе одно потребують shared-secret auth, якщо ви навмисно не використовуєте private-ingress `none` або trusted-proxy HTTP auth. - Невдалі одночасні спроби автентифікації Serve з одного клієнта серіалізуються до того, як лімітатор failed-auth зафіксує їх, тож уже друга невдала повторна спроба може показати `retry later`. - - **Tailnet bind**: виконайте `openclaw gateway --bind tailnet --token ""` (або налаштуйте auth паролем), відкрийте `http://:18789/`, потім вставте відповідний shared secret у налаштуваннях dashboard. - - **Identity-aware reverse proxy**: залиште Gateway за non-loopback trusted proxy, налаштуйте `gateway.auth.mode: "trusted-proxy"`, а потім відкрийте URL-адресу proxy. - - **SSH tunnel**: `ssh -N -L 18789:127.0.0.1:18789 user@host`, потім відкрийте `http://127.0.0.1:18789/`. Shared-secret auth усе ще застосовується через tunnel; якщо буде запит, вставте налаштований токен або пароль. + - **Tailscale Serve** (рекомендовано): залиште bind loopback, виконайте `openclaw gateway --tailscale serve`, відкрийте `https:///`. Якщо `gateway.auth.allowTailscale` має значення `true`, заголовки ідентичності задовольняють auth для Control UI/WebSocket (без вставляння shared secret, за умови довіреного gateway host); HTTP API, як і раніше, вимагають auth через shared secret, якщо ви навмисно не використовуєте private-ingress `none` або auth HTTP через trusted-proxy. + Некоректні одночасні спроби auth від того самого клієнта через Serve серіалізуються до того, як limiter невдалої auth їх зафіксує, тому вже друга помилкова повторна спроба може показати `retry later`. + - **Bind tailnet**: виконайте `openclaw gateway --bind tailnet --token ""` (або налаштуйте auth через пароль), відкрийте `http://:18789/`, потім вставте відповідний shared secret у налаштування dashboard. + - **Identity-aware reverse proxy**: залиште Gateway за trusted proxy без loopback, налаштуйте `gateway.auth.mode: "trusted-proxy"`, потім відкрийте URL proxy. + - **SSH tunnel**: `ssh -N -L 18789:127.0.0.1:18789 user@host` потім відкрийте `http://127.0.0.1:18789/`. Auth через shared secret і далі застосовується через tunnel; вставте налаштований токен або пароль, якщо буде запит. - Див. [Dashboard](/web/dashboard) і [Web surfaces](/web) щодо режимів bind і подробиць auth. + Див. [Dashboard](/web/dashboard) і [Web surfaces](/web) для подробиць щодо режимів bind і auth. - - Вони керують різними шарами: + + Вони керують різними рівнями: - - `approvals.exec`: пересилає approval prompts у chat destinations - - `channels..execApprovals`: робить цей channel нативним approval client для exec approvals + - `approvals.exec`: пересилає запити на approval до призначень чату + - `channels..execApprovals`: робить цей канал нативним approval-клієнтом для exec-approval - Host exec policy усе ще є справжнім approval gate. Конфігурація чату лише визначає, де з’являються - approval prompts і як люди можуть на них відповідати. + Політика host exec усе ще є реальною перепоною approval. Конфігурація чату лише керує тим, + де з’являються запити на approval і як люди можуть на них відповідати. - У більшості сценаріїв вам **не** потрібні обидві: + У більшості налаштувань вам **не** потрібні обидві: - - Якщо чат уже підтримує команди та відповіді, `/approve` у тому самому чаті працює через спільний шлях. - - Якщо підтримуваний native channel може безпечно визначити approvers, OpenClaw тепер автоматично вмикає native approvals у DM-first режимі, коли `channels..execApprovals.enabled` не задано або має значення `"auto"`. - - Коли доступні native approval cards/buttons, цей native UI є основним шляхом; агент має включати ручну команду `/approve`, лише якщо результат інструмента каже, що chat approvals недоступні або ручне approval — єдиний шлях. - - Використовуйте `approvals.exec` лише тоді, коли prompts також треба пересилати в інші чати або окремі ops rooms. - - Використовуйте `channels..execApprovals.target: "channel"` або `"both"` лише якщо ви явно хочете, щоб approval prompts публікувалися назад у початкову room/topic. - - Plugin approvals ще окремі: вони типово використовують `/approve` у тому самому чаті, необов’язкове пересилання `approvals.plugin`, і лише деякі native channels додатково підтримують plugin-approval-native handling. + - Якщо чат уже підтримує команди й відповіді, `/approve` у тому самому чаті працює через спільний шлях. + - Якщо підтримуваний нативний канал може безпечно визначити approver-ів, OpenClaw тепер автоматично вмикає DM-first native approvals, коли `channels..execApprovals.enabled` не задано або дорівнює `"auto"`. + - Коли доступні нативні картки/кнопки approval, цей нативний UI є основним шляхом; агент має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що approvals у чаті недоступні або ручний approval — єдиний шлях. + - Використовуйте `approvals.exec` лише коли запити також потрібно пересилати в інші чати або явні ops-room. + - Використовуйте `channels..execApprovals.target: "channel"` або `"both"` лише тоді, коли ви явно хочете, щоб запити на approval публікувалися назад у вихідну кімнату/тему. + - approvals для plugins знову ж таки окремі: вони за замовчуванням використовують `/approve` у тому самому чаті, необов’язкове пересилання `approvals.plugin`, і лише деякі нативні канали зберігають додаткову обробку plugin-approval-native. - Коротко: forwarding — для маршрутизації, native client config — для багатшого channel-specific UX. - Див. [Exec Approvals](/tools/exec-approvals). + Коротко: пересилання — це про маршрутизацію, конфігурація нативного клієнта — про багатший UX, специфічний для каналу. + Див. [Exec Approvals](/uk/tools/exec-approvals). - + Потрібен Node **>= 22**. Рекомендовано `pnpm`. Bun **не рекомендовано** для Gateway. - Так. Gateway легкий — у документації вказано, що для особистого використання достатньо **512MB-1GB RAM**, **1 core** і приблизно **500MB** - диска, а також зазначено, що **Raspberry Pi 4 може це запускати**. + Так. Gateway легкий — у документації вказано, що для особистого використання достатньо **512MB-1GB RAM**, **1 ядра** і близько **500MB** + диска, і зазначено, що **Raspberry Pi 4 може це запускати**. - Якщо вам потрібен додатковий запас (логи, медіа, інші сервіси), **рекомендується 2GB**, але це + Якщо вам потрібен додатковий запас (логи, медіа, інші сервіси), **рекомендовано 2GB**, але це не жорсткий мінімум. - Порада: невеликий Pi/VPS може розміщувати Gateway, а ви можете під’єднати **nodes** на ноутбуці/телефоні для + Порада: невеликий Pi/VPS може хостити Gateway, а ви можете підключати **nodes** на ноутбуці/телефоні для локального screen/camera/canvas або виконання команд. Див. [Nodes](/uk/nodes). - - Коротко: це працює, але очікуйте шорсткостей. + + Коротко: працює, але очікуйте шерехів. - Використовуйте **64-bit** ОС і Node >= 22. - Надавайте перевагу **hackable (git) install**, щоб бачити логи й швидко оновлюватися. - - Починайте без channels/skills, а потім додавайте їх по одному. - - Якщо натрапили на дивні проблеми з бінарниками, зазвичай це проблема **ARM compatibility**. + - Почніть без channels/Skills, потім додавайте їх по одному. + - Якщо натрапите на дивні проблеми з бінарниками, це зазвичай проблема **ARM-сумісності**. - Документація: [Linux](/uk/platforms/linux), [Install](/uk/install). + Документація: [Linux](/uk/platforms/linux), [Встановлення](/uk/install). - - Цей екран залежить від доступності та автентифікації Gateway. TUI також надсилає - «Wake up, my friend!» автоматично під час першого hatch. Якщо ви бачите цей рядок і **не маєте відповіді**, - а токени залишаються 0, агент так і не запустився. + + Цей екран залежить від доступності й автентифікації Gateway. TUI також автоматично надсилає + "Wake up, my friend!" під час першого hatch. Якщо ви бачите цей рядок **без відповіді** + і токени лишаються 0, агент так і не запустився. 1. Перезапустіть Gateway: @@ -262,7 +262,7 @@ x-i18n: openclaw gateway restart ``` - 2. Перевірте статус і auth: + 2. Перевірте статус + auth: ```bash openclaw status @@ -276,31 +276,31 @@ x-i18n: openclaw doctor ``` - Якщо Gateway віддалений, переконайтеся, що tunnel/Tailscale connection активне і що UI - спрямовано на правильний Gateway. Див. [Remote access](/uk/gateway/remote). + Якщо Gateway віддалений, переконайтеся, що tunnel/Tailscale-з’єднання активне і що UI + спрямовано на правильний Gateway. Див. [Віддалений доступ](/uk/gateway/remote). - Так. Скопіюйте **state directory** і **workspace**, а потім один раз запустіть Doctor. Це - збереже вашого бота «точно таким самим» (memory, session history, auth і channel - state), якщо ви скопіюєте **обидва** розташування: + Так. Скопіюйте **каталог state** і **workspace**, потім один раз запустіть Doctor. Це + збереже вашого бота "точно таким самим" (memory, history сесій, auth і channel + state), якщо ви скопіюєте **обидва** місця: - 1. Встановіть OpenClaw на новій машині. + 1. Встановіть OpenClaw на нову машину. 2. Скопіюйте `$OPENCLAW_STATE_DIR` (типово: `~/.openclaw`) зі старої машини. - 3. Скопіюйте свій workspace (типово: `~/.openclaw/workspace`). - 4. Виконайте `openclaw doctor` і перезапустіть сервіс Gateway. + 3. Скопіюйте ваш workspace (типово: `~/.openclaw/workspace`). + 4. Запустіть `openclaw doctor` і перезапустіть сервіс Gateway. - Це зберігає config, auth profiles, облікові дані WhatsApp, sessions і memory. Якщо ви у - remote mode, пам’ятайте, що gateway host володіє session store і workspace. + Це збереже config, auth-профілі, облікові дані WhatsApp, sessions і memory. Якщо ви в + remote mode, пам’ятайте, що саме gateway host володіє сховищем сесій і workspace. - **Важливо:** якщо ви лише commit/push свій workspace у GitHub, ви робите резервну копію - **memory + bootstrap files**, але **не** session history чи auth. Вони зберігаються - в `~/.openclaw/` (наприклад, `~/.openclaw/agents//sessions/`). + **Важливо:** якщо ви лише commit/push ваш workspace на GitHub, ви резервуєте + **memory + bootstrap-файли**, але **не** history сесій і не auth. Вони живуть + у `~/.openclaw/` (наприклад, `~/.openclaw/agents//sessions/`). - Пов’язане: [Migrating](/uk/install/migrating), [Де що зберігається на диску](#де-що-зберігається-на-диску), - [Agent workspace](/uk/concepts/agent-workspace), [Doctor](/uk/gateway/doctor), - [Remote mode](/uk/gateway/remote). + Пов’язане: [Міграція](/uk/install/migrating), [Де що лежить на диску](#де-що-лежить-на-диску), + [Workspace агента](/uk/concepts/agent-workspace), [Doctor](/uk/gateway/doctor), + [Віддалений режим](/uk/gateway/remote). @@ -308,16 +308,16 @@ x-i18n: Перевірте changelog на GitHub: [https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md](https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md) - Найновіші записи — вгорі. Якщо верхній розділ позначено як **Unreleased**, наступний датований - розділ — це остання випущена версія. Записи згруповано за **Highlights**, **Changes** і - **Fixes** (а також за документацією/іншими розділами за потреби). + Найновіші записи зверху. Якщо верхню секцію позначено як **Unreleased**, наступна датована + секція — це остання випущена версія. Записи згруповано за **Highlights**, **Changes** та + **Fixes** (а також docs/іншими секціями за потреби). - - Деякі з’єднання Comcast/Xfinity некоректно блокують `docs.openclaw.ai` через Xfinity - Advanced Security. Вимкніть її або додайте `docs.openclaw.ai` до allowlist, а потім спробуйте ще раз. - Будь ласка, допоможіть нам розблокувати сайт, повідомивши тут: [https://spa.xfinity.com/check_url_status](https://spa.xfinity.com/check_url_status). + + Деякі з’єднання Comcast/Xfinity помилково блокують `docs.openclaw.ai` через Xfinity + Advanced Security. Вимкніть її або додайте `docs.openclaw.ai` до allowlist, а потім повторіть спробу. + Будь ласка, допоможіть нам розблокувати це, повідомивши тут: [https://spa.xfinity.com/check_url_status](https://spa.xfinity.com/check_url_status). Якщо ви все ще не можете відкрити сайт, документація дзеркалюється на GitHub: [https://github.com/openclaw/openclaw/tree/main/docs](https://github.com/openclaw/openclaw/tree/main/docs) @@ -331,20 +331,20 @@ x-i18n: - `beta` = рання збірка для тестування Зазвичай stable-реліз спочатку потрапляє в **beta**, а потім явний - крок просування переміщує цю саму версію до `latest`. За потреби мейнтейнери також можуть - публікувати одразу в `latest`. Саме тому після просування beta і stable можуть - вказувати на **одну й ту саму версію**. + крок просування переносить цю саму версію в `latest`. Maintainers також можуть + за потреби публікувати відразу в `latest`. Саме тому beta і stable можуть + вказувати на **ту саму версію** після просування. - Подивіться, що змінилося: + Подивитися, що змінилося: [https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md](https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md) - Однорядкові команди встановлення та різницю між beta і dev див. в accordion нижче. + Однорядкові команди для встановлення і різницю між beta та dev дивіться в акордеоні нижче. - **Beta** — це npm dist-tag `beta` (після просування може збігатися з `latest`). - **Dev** — це рухома голова `main` (git); при публікації вона використовує npm dist-tag `dev`. + **Beta** — це npm dist-tag `beta` (може збігатися з `latest` після просування). + **Dev** — це рухома голова `main` (git); коли її публікують, вона використовує npm dist-tag `dev`. Однорядкові команди (macOS/Linux): @@ -356,14 +356,14 @@ x-i18n: curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - Інсталятор для Windows (PowerShell): + Windows installer (PowerShell): [https://openclaw.ai/install.ps1](https://openclaw.ai/install.ps1) - Докладніше: [Development channels](/uk/install/development-channels) і [Installer flags](/uk/install/installer). + Докладніше: [Канали розробки](/uk/install/development-channels) і [Прапорці інсталятора](/uk/install/installer). - + Є два варіанти: 1. **Dev channel (git checkout):** @@ -380,9 +380,9 @@ x-i18n: curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - Це дає вам локальний репозиторій, який можна редагувати, а потім оновлювати через git. + Це дає вам локальний repo, який можна редагувати, а потім оновлювати через git. - Якщо ви віддаєте перевагу чистому ручному clone, використовуйте: + Якщо ви віддаєте перевагу чистому clone вручну, використайте: ```bash git clone https://github.com/openclaw/openclaw.git @@ -391,36 +391,36 @@ x-i18n: pnpm build ``` - Документація: [Update](/cli/update), [Development channels](/uk/install/development-channels), - [Install](/uk/install). + Документація: [Оновлення](/cli/update), [Канали розробки](/uk/install/development-channels), + [Встановлення](/uk/install). - + Орієнтовно: - **Встановлення:** 2-5 хвилин - **Onboarding:** 5-15 хвилин залежно від кількості channels/models, які ви налаштовуєте - Якщо зависає, скористайтеся [Installer stuck](#швидкий-старт-і-початкове-налаштування) - і швидким циклом налагодження в [Я застряг](#швидкий-старт-і-початкове-налаштування). + Якщо все зависло, скористайтеся [Застряг інсталятор](#швидкий-старт-і-перше-налаштування) + і швидким циклом налагодження в [Я застряг(ла)](#швидкий-старт-і-перше-налаштування). - - Повторно запустіть інсталятор із **детальним виводом**: + + Повторно запустіть інсталятор із **докладним виводом**: ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --verbose ``` - Встановлення beta з детальним виводом: + Beta-встановлення з verbose: ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --beta --verbose ``` - Для hackable (git) install: + Для hackable-встановлення (git): ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --verbose @@ -429,48 +429,48 @@ x-i18n: Еквівалент для Windows (PowerShell): ```powershell - # install.ps1 поки що не має окремого прапорця -Verbose. + # install.ps1 has no dedicated -Verbose flag yet. Set-PSDebug -Trace 1 & ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard Set-PSDebug -Trace 0 ``` - Більше варіантів: [Installer flags](/uk/install/installer). + Більше варіантів: [Прапорці інсталятора](/uk/install/installer). - Дві поширені проблеми Windows: + Дві поширені проблеми у Windows: **1) npm error spawn git / git not found** - Встановіть **Git for Windows** і переконайтеся, що `git` є у вашому PATH. - - Закрийте та знову відкрийте PowerShell, потім повторно запустіть інсталятор. + - Закрийте й знову відкрийте PowerShell, потім повторно запустіть інсталятор. - **2) openclaw is not recognized після встановлення** + **2) openclaw is not recognized after install** - - Ваша глобальна папка npm bin відсутня в PATH. + - Ваша глобальна тека bin npm не додана до PATH. - Перевірте шлях: ```powershell npm config get prefix ``` - - Додайте цей каталог до вашого PATH користувача (суфікс `\bin` у Windows не потрібен; на більшості систем це `%AppData%\npm`). - - Після оновлення PATH закрийте й знову відкрийте PowerShell. + - Додайте цей каталог до PATH користувача (суфікс `\bin` у Windows не потрібен; у більшості систем це `%AppData%\npm`). + - Закрийте й знову відкрийте PowerShell після оновлення PATH. - Якщо ви хочете найгладше налаштування Windows, використовуйте **WSL2** замість нативного Windows. + Якщо ви хочете найгладше налаштування у Windows, використовуйте **WSL2**, а не нативну Windows. Документація: [Windows](/uk/platforms/windows). - - Зазвичай це невідповідність code page консолі в нативних оболонках Windows. + + Зазвичай це невідповідність кодової сторінки консолі в нативних оболонках Windows. Симптоми: - - вивід `system.run`/`exec` відображає китайський текст як mojibake - - та сама команда виглядає нормально в іншому профілі термінала + - Вивід `system.run`/`exec` відображає китайський текст як mojibake + - Та сама команда виглядає нормально в іншому профілі термінала Швидкий обхідний шлях у PowerShell: @@ -487,66 +487,66 @@ x-i18n: openclaw gateway restart ``` - Якщо ви все ще відтворюєте це на останній версії OpenClaw, відстежуйте/повідомте про це тут: + Якщо на останній версії OpenClaw проблема все ще відтворюється, відстежуйте/повідомляйте тут: - [Issue #30640](https://github.com/openclaw/openclaw/issues/30640) - Використовуйте **hackable (git) install**, щоб мати повний вихідний код і документацію локально, а потім поставте - запитання своєму боту (або Claude/Codex) _з цієї папки_, щоб він міг читати репозиторій і точно відповідати. + Використайте **hackable (git) install**, щоб мати повні локальні вихідні коди й документацію, а потім запитайте + свого бота (або Claude/Codex) _з цієї теки_, щоб він міг читати repo і відповісти точно. ```bash curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git ``` - Докладніше: [Install](/uk/install) і [Installer flags](/uk/install/installer). + Докладніше: [Встановлення](/uk/install) і [Прапорці інсталятора](/uk/install/installer). - Коротка відповідь: дотримуйтесь посібника для Linux, а потім запустіть onboarding. + Коротка відповідь: дотримуйтеся інструкції для Linux, потім запустіть onboarding. - Швидкий шлях для Linux + встановлення сервісу: [Linux](/uk/platforms/linux). - - Повний покроковий посібник: [Getting Started](/start/getting-started). - - Інсталятор + оновлення: [Install & updates](/uk/install/updating). + - Повний покроковий посібник: [Початок роботи](/uk/start/getting-started). + - Інсталятор + оновлення: [Встановлення та оновлення](/uk/install/updating). - Підійде будь-який Linux VPS. Встановіть на сервері, а потім використовуйте SSH/Tailscale для доступу до Gateway. + Підійде будь-який Linux VPS. Встановіть на сервері, потім використовуйте SSH/Tailscale для доступу до Gateway. Посібники: [exe.dev](/uk/install/exe-dev), [Hetzner](/uk/install/hetzner), [Fly.io](/uk/install/fly). - Віддалений доступ: [Gateway remote](/uk/gateway/remote). + Віддалений доступ: [Віддалений Gateway](/uk/gateway/remote). - - Ми підтримуємо **хаб хостингу** з поширеними провайдерами. Виберіть одного й дотримуйтесь посібника: + + Ми підтримуємо **хаб хостингів** із поширеними провайдерами. Оберіть один і дотримуйтеся інструкції: - - [VPS hosting](/vps) (усі провайдери в одному місці) + - [VPS hosting](/uk/vps) (усі провайдери в одному місці) - [Fly.io](/uk/install/fly) - [Hetzner](/uk/install/hetzner) - [exe.dev](/uk/install/exe-dev) - Як це працює в хмарі: **Gateway працює на сервері**, а ви отримуєте до нього доступ - зі свого ноутбука/телефона через Control UI (або Tailscale/SSH). Ваші state + workspace - живуть на сервері, тож ставтеся до хоста як до джерела істини та робіть резервні копії. + Як це працює в хмарі: **Gateway працює на сервері**, а ви отримуєте доступ до нього + з ноутбука/телефона через Control UI (або Tailscale/SSH). Ваші state + workspace + живуть на сервері, тож сприймайте host як джерело істини й робіть резервні копії. - Ви можете під’єднати **nodes** (Mac/iOS/Android/headless) до цього хмарного Gateway, щоб отримати доступ до - локального screen/camera/canvas або запускати команди на ноутбуці, залишаючи + Ви можете підключати **nodes** (Mac/iOS/Android/headless) до цього хмарного Gateway, щоб отримати доступ до + локальних screen/camera/canvas або виконувати команди на ноутбуці, залишаючи Gateway у хмарі. - Хаб: [Platforms](/uk/platforms). Віддалений доступ: [Gateway remote](/uk/gateway/remote). + Хаб: [Платформи](/uk/platforms). Віддалений доступ: [Віддалений Gateway](/uk/gateway/remote). Nodes: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes). - - Коротка відповідь: **можливо, але не рекомендовано**. Потік оновлення може перезапустити - Gateway (що розірве активну сесію), може потребувати чистого git checkout, а також - може вимагати підтвердження. Безпечніше запускати оновлення з оболонки як оператор. + + Коротка відповідь: **можливо, але не рекомендовано**. Процес оновлення може перезапустити + Gateway (що розірве активну сесію), може вимагати чистого git checkout і + може запитати підтвердження. Безпечніше: запускати оновлення з оболонки як оператор. Використовуйте CLI: @@ -558,86 +558,86 @@ x-i18n: openclaw update --no-restart ``` - Якщо вам потрібно автоматизувати це через агента: + Якщо вже треба автоматизувати з агента: ```bash openclaw update --yes --no-restart openclaw gateway restart ``` - Документація: [Update](/cli/update), [Updating](/uk/install/updating). + Документація: [Оновлення](/cli/update), [Оновлення](/uk/install/updating). `openclaw onboard` — рекомендований шлях налаштування. У **local mode** він проводить вас через: - - **Налаштування model/auth** (OAuth провайдера, API-ключі, застарілий Anthropic setup-token, а також варіанти локальних моделей, такі як LM Studio) - - Розташування **workspace** + bootstrap files + - **Налаштування model/auth** (OAuth провайдера, API-ключі, legacy setup-token Anthropic, а також варіанти локальних моделей, такі як LM Studio) + - Розташування **workspace** + bootstrap-файли - **Налаштування Gateway** (bind/port/auth/tailscale) - **Channels** (WhatsApp, Telegram, Discord, Mattermost, Signal, iMessage, а також bundled channel plugins, як-от QQ Bot) - - **Встановлення демона** (LaunchAgent на macOS; systemd user unit на Linux/WSL2) - - **Health checks** і вибір **skills** + - **Встановлення daemon** (LaunchAgent на macOS; systemd user unit на Linux/WSL2) + - **Перевірки health** і вибір **Skills** - Він також попереджає, якщо ваша налаштована модель невідома або для неї відсутня auth. + Він також попереджає, якщо налаштована модель невідома або для неї бракує auth. Ні. Ви можете запускати OpenClaw з **API-ключами** (Anthropic/OpenAI/інші) або з - **лише локальними моделями**, щоб ваші дані залишалися на вашому пристрої. Підписки (Claude - Pro/Max або OpenAI Codex) — це необов’язкові способи автентифікації цих провайдерів. + **лише локальними моделями**, щоб ваші дані лишалися на вашому пристрої. Підписки (Claude + Pro/Max або OpenAI Codex) — це необов’язкові способи автентифікації в цих провайдерів. Для Anthropic в OpenClaw практичний поділ такий: - - **Anthropic API key**: звичайна Anthropic API billing - - **Claude subscription auth в OpenClaw**: Anthropic повідомив користувачам OpenClaw - **4 квітня 2026 року о 12:00 PT / 20:00 BST**, що це потребує - **Extra Usage**, яка оплачується окремо від підписки + - **Anthropic API key**: звичайна тарифікація Anthropic API + - **Claude subscription auth in OpenClaw**: Anthropic повідомила користувачам OpenClaw + **4 квітня 2026 о 12:00 PT / 20:00 BST**, що для цього потрібне + **Extra Usage**, яке виставляється окремо від підписки Наші локальні відтворення також показують, що `claude -p --append-system-prompt ...` може натрапляти на той самий захист Extra Usage, коли доданий prompt ідентифікує OpenClaw, тоді як той самий рядок prompt **не** відтворює це блокування на - шляху Anthropic SDK + API-key. OpenAI Codex OAuth явно + шляху Anthropic SDK + API-key. OpenAI Codex OAuth офіційно підтримується для зовнішніх інструментів, таких як OpenClaw. - OpenClaw також підтримує інші hosted підпискові варіанти, зокрема - **Qwen Cloud Coding Plan**, **MiniMax Coding Plan** і + OpenClaw також підтримує інші hosted-варіанти з підписочною моделлю, включно з + **Qwen Cloud Coding Plan**, **MiniMax Coding Plan**, і **Z.AI / GLM Coding Plan**. Документація: [Anthropic](/uk/providers/anthropic), [OpenAI](/uk/providers/openai), [Qwen Cloud](/uk/providers/qwen), [MiniMax](/uk/providers/minimax), [GLM Models](/uk/providers/glm), - [Local models](/uk/gateway/local-models), [Models](/uk/concepts/models). + [Локальні моделі](/uk/gateway/local-models), [Моделі](/uk/concepts/models). - Так, але сприймайте це як **Claude subscription auth з Extra Usage**. + Так, але сприймайте це як **Claude subscription auth with Extra Usage**. - Підписки Claude Pro/Max не включають API-ключ. У OpenClaw це - означає, що застосовується Anthropic-специфічне повідомлення про billing для OpenClaw: - трафік за підпискою потребує **Extra Usage**. Якщо ви хочете Anthropic-трафік без - цього шляху Extra Usage, натомість використовуйте Anthropic API key. + Підписки Claude Pro/Max не включають API-ключ. В OpenClaw це + означає, що застосовується специфічне для OpenClaw повідомлення Anthropic про тарифікацію: + трафік за підпискою потребує **Extra Usage**. Якщо ви хочете трафік Anthropic без + цього шляху Extra Usage, натомість використовуйте API-ключ Anthropic. - Так, але підтримуване трактування тепер таке: + Так, але тепер підтримуване трактування таке: - Anthropic в OpenClaw із підпискою означає **Extra Usage** - Anthropic в OpenClaw без цього шляху означає **API key** - Anthropic setup-token усе ще доступний як застарілий/ручний шлях OpenClaw, - і Anthropic-специфічне повідомлення про billing для OpenClaw все ще застосовується тут. Ми - також локально відтворили той самий billing guard при прямому - використанні `claude -p --append-system-prompt ...`, коли доданий prompt - ідентифікує OpenClaw, тоді як той самий рядок prompt **не** відтворювався на + Setup-token Anthropic усе ще доступний як legacy/manual-шлях OpenClaw, + і специфічне для OpenClaw повідомлення Anthropic про тарифікацію тут також діє. Ми + також локально відтворили той самий захист тарифікації за прямого використання + `claude -p --append-system-prompt ...`, коли доданий prompt + ідентифікує OpenClaw, тоді як той самий рядок prompt **не** відтворився на шляху Anthropic SDK + API-key. - Для production або multi-user workloads auth через Anthropic API key — - безпечніший і рекомендований вибір. Якщо ви хочете інші hosted - subscription-style варіанти в OpenClaw, див. [OpenAI](/uk/providers/openai), [Qwen / Model + Для production або multi-user-навантажень auth через API-ключ Anthropic — + безпечніший і рекомендований вибір. Якщо вам потрібні інші hosted-варіанти + з підписочною моделлю в OpenClaw, див. [OpenAI](/uk/providers/openai), [Qwen / Model Cloud](/uk/providers/qwen), [MiniMax](/uk/providers/minimax) і [GLM Models](/uk/providers/glm). @@ -646,135 +646,133 @@ x-i18n: Це означає, що вашу **квоту/ліміт швидкості Anthropic** вичерпано для поточного вікна. Якщо ви -використовуєте **Claude CLI**, дочекайтеся скидання вікна або оновіть план. Якщо ви +використовуєте **Claude CLI**, дочекайтеся скидання вікна або підвищте свій тариф. Якщо ви використовуєте **Anthropic API key**, перевірте Anthropic Console -щодо використання/billing і за потреби підвищте ліміти. +на використання/тарифікацію та за потреби підвищте ліміти. Якщо повідомлення конкретно таке: - `Extra usage is required for long context requests`, запит намагається використати - 1M context beta від Anthropic (`context1m: true`). Це працює лише тоді, коли ваші - облікові дані підходять для long-context billing (billing через API key або + `Extra usage is required for long context requests`, запит намагається використовувати + beta 1M context Anthropic (`context1m: true`). Це працює лише коли ваш + credential має право на long-context billing (тарифікація через API-ключ або шлях OpenClaw Claude-login з увімкненим Extra Usage). - Порада: задайте **fallback model**, щоб OpenClaw міг продовжувати відповідати, коли провайдер упирається в rate limit. - Див. [Models](/cli/models), [OAuth](/uk/concepts/oauth) і + Порада: налаштуйте **fallback model**, щоб OpenClaw міг продовжувати відповідати, коли провайдер упирається в rate limit. + Див. [Моделі](/cli/models), [OAuth](/uk/concepts/oauth) і [/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context](/uk/gateway/troubleshooting#anthropic-429-extra-usage-required-for-long-context). - Так. OpenClaw має bundled провайдер **Amazon Bedrock (Converse)**. Якщо присутні AWS env markers, OpenClaw може автоматично виявити Bedrock catalog для streaming/text і об’єднати його як неявний провайдер `amazon-bedrock`; інакше ви можете явно ввімкнути `plugins.entries.amazon-bedrock.config.discovery.enabled` або додати ручний запис провайдера. Див. [Amazon Bedrock](/uk/providers/bedrock) і [Model providers](/uk/providers/models). Якщо ви віддаєте перевагу керованому потоку ключів, OpenAI-compatible proxy перед Bedrock також є коректним варіантом. + Так. OpenClaw має bundled-провайдера **Amazon Bedrock (Converse)**. Якщо присутні AWS env-маркери, OpenClaw може автоматично виявити streaming/text-каталог Bedrock і об’єднати його як неявного провайдера `amazon-bedrock`; інакше ви можете явно ввімкнути `plugins.entries.amazon-bedrock.config.discovery.enabled` або додати ручний запис провайдера. Див. [Amazon Bedrock](/uk/providers/bedrock) і [Провайдери моделей](/uk/providers/models). Якщо ви віддаєте перевагу керованому потоку ключів, OpenAI-сумісний proxy перед Bedrock також є коректним варіантом. - OpenClaw підтримує **OpenAI Code (Codex)** через OAuth (вхід через ChatGPT). Onboarding може запустити OAuth flow і встановить модель за замовчуванням на `openai-codex/gpt-5.4`, коли це доречно. Див. [Model providers](/uk/concepts/model-providers) і [Onboarding (CLI)](/start/wizard). + OpenClaw підтримує **OpenAI Code (Codex)** через OAuth (вхід через ChatGPT). Onboarding може провести OAuth-flow і встановить модель за замовчуванням `openai-codex/gpt-5.4`, коли це доречно. Див. [Провайдери моделей](/uk/concepts/model-providers) і [Onboarding (CLI)](/uk/start/wizard). - Так. OpenClaw повністю підтримує **OpenAI Code (Codex) subscription OAuth**. - OpenAI явно дозволяє використання subscription OAuth у зовнішніх інструментах/workflows - на кшталт OpenClaw. Onboarding може запустити OAuth flow за вас. + Так. OpenClaw повністю підтримує **subscription OAuth OpenAI Code (Codex)**. + OpenAI явно дозволяє використання subscription OAuth у зовнішніх інструментах/робочих процесах, + як-от OpenClaw. Onboarding може провести OAuth-flow за вас. - Див. [OAuth](/uk/concepts/oauth), [Model providers](/uk/concepts/model-providers) і [Onboarding (CLI)](/start/wizard). + Див. [OAuth](/uk/concepts/oauth), [Провайдери моделей](/uk/concepts/model-providers) і [Onboarding (CLI)](/uk/start/wizard). - Gemini CLI використовує **plugin auth flow**, а не client id чи secret у `openclaw.json`. + Gemini CLI використовує **plugin auth flow**, а не client id або secret у `openclaw.json`. Натомість використовуйте провайдера Gemini API: 1. Увімкніть plugin: `openclaw plugins enable google` - 2. Виконайте `openclaw onboard --auth-choice gemini-api-key` + 2. Запустіть `openclaw onboard --auth-choice gemini-api-key` 3. Встановіть модель Google, наприклад `google/gemini-3.1-pro-preview` - Зазвичай ні. OpenClaw потребує великого контексту + сильної безпеки; невеликі картки обрізають і протікають. Якщо мусите, запускайте **найбільшу** збірку моделі, яку можете локально (LM Studio), і дивіться [/gateway/local-models](/uk/gateway/local-models). Менші/квантовані моделі підвищують ризик prompt injection — див. [Security](/uk/gateway/security). + Зазвичай ні. OpenClaw потребує великого context + сильного безпекового профілю; малі картки обрізаються й протікають. Якщо вже дуже треба, запускайте **найбільшу** збірку моделі, яку можете локально (LM Studio), і див. [/gateway/local-models](/uk/gateway/local-models). Менші/квантовані моделі збільшують ризик prompt injection — див. [Безпека](/uk/gateway/security). - - Вибирайте endpoint-адреси, прив’язані до регіону. OpenRouter надає варіанти, розміщені у США, для MiniMax, Kimi та GLM; вибирайте варіант, розміщений у США, щоб зберігати дані в межах регіону. Ви все одно можете перелічити Anthropic/OpenAI поряд із ними, використовуючи `models.mode: "merge"`, щоб fallbacks залишалися доступними з урахуванням вибраного регіонального провайдера. + + Обирайте endpoint-и з прив’язкою до регіону. OpenRouter надає розміщені в США варіанти для MiniMax, Kimi і GLM; оберіть варіант, розміщений у США, щоб зберегти дані в регіоні. Ви все одно можете перелічувати Anthropic/OpenAI поруч із ними, використовуючи `models.mode: "merge"`, щоб fallbacks лишалися доступними, водночас поважаючи обраного вами регіонального провайдера. - - Ні. OpenClaw працює на macOS або Linux (Windows через WSL2). Mac mini — необов’язковий варіант: - деякі купують його як постійно увімкнений хост, але невеликий VPS, домашній сервер або машина класу Raspberry Pi також підійде. + + Ні. OpenClaw працює на macOS або Linux (Windows через WSL2). Mac mini — необов’язковий; + дехто купує його як хост, що працює постійно, але підійде й невеликий VPS, домашній сервер або box рівня Raspberry Pi. - Mac потрібен лише **для macOS-only tools**. Для iMessage використовуйте [BlueBubbles](/uk/channels/bluebubbles) (рекомендовано) — - сервер BlueBubbles працює на будь-якому Mac, а Gateway може працювати на Linux або деінде. Якщо вам потрібні інші macOS-only tools, запускайте Gateway на Mac або під’єднайте macOS node. + Mac потрібен лише для **інструментів, доступних тільки на macOS**. Для iMessage використовуйте [BlueBubbles](/uk/channels/bluebubbles) (рекомендовано) — сервер BlueBubbles працює на будь-якому Mac, а Gateway може працювати на Linux або деінде. Якщо вам потрібні інші macOS-only tools, запускайте Gateway на Mac або підключайте macOS node. - Документація: [BlueBubbles](/uk/channels/bluebubbles), [Nodes](/uk/nodes), [Mac remote mode](/uk/platforms/mac/remote). + Документація: [BlueBubbles](/uk/channels/bluebubbles), [Nodes](/uk/nodes), [Віддалений режим Mac](/uk/platforms/mac/remote). - Вам потрібен **якийсь пристрій macOS**, увійшовший у Messages. Це **не обов’язково** має бути Mac mini — - підійде будь-який Mac. **Використовуйте [BlueBubbles](/uk/channels/bluebubbles)** (рекомендовано) для iMessage — - сервер BlueBubbles працює на macOS, тоді як Gateway може працювати на Linux або будь-де ще. + Вам потрібен **якийсь пристрій macOS**, увійдений у Messages. Це **не обов’язково** Mac mini — + підійде будь-який Mac. Для iMessage **використовуйте [BlueBubbles](/uk/channels/bluebubbles)** (рекомендовано) — сервер BlueBubbles працює на macOS, а Gateway може працювати на Linux або деінде. - Поширені сценарії: + Типові варіанти: - - Запускайте Gateway на Linux/VPS, а сервер BlueBubbles — на будь-якому Mac, увійшовшому в Messages. + - Запускайте Gateway на Linux/VPS, а сервер BlueBubbles — на будь-якому Mac, увійденому в Messages. - Запускайте все на Mac, якщо хочете найпростішу одно-машинну конфігурацію. Документація: [BlueBubbles](/uk/channels/bluebubbles), [Nodes](/uk/nodes), - [Mac remote mode](/uk/platforms/mac/remote). + [Віддалений режим Mac](/uk/platforms/mac/remote). - - Так. **Mac mini може запускати Gateway**, а ваш MacBook Pro може підключатися як - **node** (супутній пристрій). Nodes не запускають Gateway — вони надають додаткові - можливості, такі як screen/camera/canvas і `system.run` на цьому пристрої. + + Так. **Mac mini може запускати Gateway**, а ваш MacBook Pro може підключитися як + **node** (companion device). Nodes не запускають Gateway — вони надають додаткові + можливості, як-от screen/camera/canvas і `system.run` на цьому пристрої. - Типовий шаблон: + Типова схема: - - Gateway на Mac mini (always-on). - - MacBook Pro запускає застосунок macOS або host вузла й під’єднується до Gateway. - - Використовуйте `openclaw nodes status` / `openclaw nodes list`, щоб побачити його. + - Gateway на Mac mini (завжди увімкнений). + - MacBook Pro запускає macOS-app або node host і з’єднується з Gateway. + - Для перегляду використовуйте `openclaw nodes status` / `openclaw nodes list`. Документація: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes). - - Bun **не рекомендовано**. Ми спостерігаємо баги під час роботи, особливо з WhatsApp і Telegram. - Для стабільних gateway використовуйте **Node**. + + Bun **не рекомендовано**. Ми бачимо баги під час роботи, особливо з WhatsApp і Telegram. + Для stable gateway використовуйте **Node**. - Якщо ви все ж хочете поекспериментувати з Bun, робіть це на non-production gateway + Якщо ви все ж хочете експериментувати з Bun, робіть це на non-production gateway без WhatsApp/Telegram. - `channels.telegram.allowFrom` — це **Telegram user ID людини-відправника** (числовий). Це не ім’я користувача бота. + `channels.telegram.allowFrom` — це **Telegram user ID людини-відправника** (числовий). Це не username бота. - Onboarding приймає введення `@username` і перетворює його на числовий ID, але авторизація OpenClaw використовує лише числові ID. + Onboarding приймає ввід `@username` і перетворює його на числовий ID, але авторизація OpenClaw використовує лише числові ID. Безпечніше (без стороннього бота): - - Напишіть вашому боту в DM, а потім виконайте `openclaw logs --follow` і подивіться `from.id`. + - Напишіть боту в DM, потім виконайте `openclaw logs --follow` і прочитайте `from.id`. Офіційний Bot API: - - Напишіть вашому боту в DM, а потім викличте `https://api.telegram.org/bot/getUpdates` і прочитайте `message.from.id`. + - Напишіть боту в DM, потім викличте `https://api.telegram.org/bot/getUpdates` і прочитайте `message.from.id`. Сторонній варіант (менш приватний): - - Напишіть `@userinfobot` або `@getidsbot`. + - Напишіть у DM `@userinfobot` або `@getidsbot`. Див. [/channels/telegram](/uk/channels/telegram#access-control-and-activation). - - Так, через **multi-agent routing**. Прив’яжіть **DM** WhatsApp кожного відправника (peer `kind: "direct"`, sender E.164 на кшталт `+15551234567`) до окремого `agentId`, щоб кожна людина мала власний workspace і session store. Відповіді все одно надходитимуть з **того самого акаунта WhatsApp**, а контроль доступу для DM (`channels.whatsapp.dmPolicy` / `channels.whatsapp.allowFrom`) є глобальним для кожного акаунта WhatsApp. Див. [Multi-Agent Routing](/uk/concepts/multi-agent) і [WhatsApp](/uk/channels/whatsapp). + + Так, через **multi-agent routing**. Прив’яжіть **DM** WhatsApp кожного відправника (peer `kind: "direct"`, E.164 відправника, як-от `+15551234567`) до іншого `agentId`, щоб кожна людина мала власний workspace і сховище сесій. Відповіді все одно надходитимуть із **того самого облікового запису WhatsApp**, а контроль доступу для DM (`channels.whatsapp.dmPolicy` / `channels.whatsapp.allowFrom`) є глобальним для цього облікового запису WhatsApp. Див. [Multi-Agent Routing](/uk/concepts/multi-agent) і [WhatsApp](/uk/channels/whatsapp). - - Так. Використовуйте multi-agent routing: задайте кожному агенту власну модель за замовчуванням, а потім прив’яжіть вхідні маршрути (акаунт провайдера або конкретні peers) до кожного агента. Приклад конфігурації є в [Multi-Agent Routing](/uk/concepts/multi-agent). Див. також [Models](/uk/concepts/models) і [Configuration](/uk/gateway/configuration). + + Так. Використовуйте multi-agent routing: дайте кожному agent його власну модель за замовчуванням, а потім прив’яжіть вхідні routes (обліковий запис провайдера або конкретних peers) до кожного agent. Приклад конфігурації наведено в [Multi-Agent Routing](/uk/concepts/multi-agent). Див. також [Моделі](/uk/concepts/models) і [Конфігурація](/uk/gateway/configuration). @@ -787,27 +785,27 @@ x-i18n: brew install ``` - Якщо ви запускаєте OpenClaw через systemd, переконайтеся, що PATH сервісу містить `/home/linuxbrew/.linuxbrew/bin` (або ваш brew prefix), щоб інструменти, встановлені через `brew`, знаходилися в non-login shells. - Останні збірки також додають поширені user bin dirs у префікс для Linux systemd services (наприклад `~/.local/bin`, `~/.npm-global/bin`, `~/.local/share/pnpm`, `~/.bun/bin`) і враховують `PNPM_HOME`, `NPM_CONFIG_PREFIX`, `BUN_INSTALL`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `NVM_DIR` та `FNM_DIR`, якщо вони задані. + Якщо ви запускаєте OpenClaw через systemd, переконайтеся, що PATH сервісу включає `/home/linuxbrew/.linuxbrew/bin` (або ваш префікс brew), щоб інструменти, встановлені через `brew`, визначалися в non-login оболонках. + Останні збірки також додають попереду поширені user bin-каталоги в Linux systemd-сервісах (наприклад, `~/.local/bin`, `~/.npm-global/bin`, `~/.local/share/pnpm`, `~/.bun/bin`) і враховують `PNPM_HOME`, `NPM_CONFIG_PREFIX`, `BUN_INSTALL`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `NVM_DIR` і `FNM_DIR`, якщо їх задано. - - **Hackable (git) install:** повна копія вихідного коду, можна редагувати, найкраще для учасників. - Ви збираєте локально й можете патчити код/документацію. - - **npm install:** глобальне встановлення CLI, без репозиторію, найкраще для сценарію «просто запустити». + - **Hackable (git) install:** повний checkout вихідного коду, редагований, найкраще для contributors. + Ви локально виконуєте збирання і можете патчити код/документацію. + - **npm install:** глобальне встановлення CLI без repo, найкраще для сценарію "просто запустити". Оновлення приходять із npm dist-tags. - Документація: [Getting started](/start/getting-started), [Updating](/uk/install/updating). + Документація: [Початок роботи](/uk/start/getting-started), [Оновлення](/uk/install/updating). - - Так. Встановіть інший варіант, а потім запустіть Doctor, щоб сервіс gateway вказував на нову entrypoint. - Це **не видаляє ваші дані** — воно лише змінює інсталяцію коду OpenClaw. Ваш state + + Так. Встановіть інший варіант, потім запустіть Doctor, щоб сервіс gateway вказував на новий entrypoint. + Це **не видаляє ваші дані** — воно лише змінює встановлення коду OpenClaw. Ваш state (`~/.openclaw`) і workspace (`~/.openclaw/workspace`) залишаються недоторканими. - З npm на git: + Із npm на git: ```bash git clone https://github.com/openclaw/openclaw.git @@ -818,7 +816,7 @@ x-i18n: openclaw gateway restart ``` - З git на npm: + Із git на npm: ```bash npm install -g openclaw@latest @@ -826,67 +824,67 @@ x-i18n: openclaw gateway restart ``` - Doctor виявляє невідповідність entrypoint сервісу gateway і пропонує переписати конфігурацію сервісу так, щоб вона відповідала поточному install (в automation використовуйте `--repair`). + Doctor виявляє невідповідність entrypoint сервісу gateway і пропонує переписати конфігурацію сервісу відповідно до поточного встановлення (в automation використовуйте `--repair`). - Поради щодо резервного копіювання: див. [Стратегія резервного копіювання](#де-що-зберігається-на-диску). + Поради щодо резервних копій: див. [Стратегія резервного копіювання](#де-що-лежить-на-диску). - Коротка відповідь: **якщо вам потрібна надійність 24/7, використовуйте VPS**. Якщо ви хочете - мінімум тертя й вас влаштовують sleep/restarts, запускайте локально. + Коротка відповідь: **якщо вам потрібна надійність 24/7, використовуйте VPS**. Якщо вам потрібне + найменше тертя й вас влаштовують сон/перезапуски, запускайте локально. **Ноутбук (локальний Gateway)** - - **Плюси:** немає витрат на сервер, прямий доступ до локальних файлів, видиме вікно браузера. - - **Мінуси:** sleep/розриви мережі = відключення, оновлення ОС/перезавантаження переривають роботу, машина має не засинати. + - **Плюси:** без вартості сервера, прямий доступ до локальних файлів, видиме вікно браузера. + - **Мінуси:** сон/обриви мережі = розриви з’єднання, оновлення/перезавантаження ОС переривають роботу, машину треба тримати активною. **VPS / хмара** - - **Плюси:** always-on, стабільна мережа, немає проблем через sleep ноутбука, простіше підтримувати в роботі. - - **Мінуси:** часто працює headless (використовуйте скриншоти), доступ до файлів лише віддалений, для оновлень треба SSH. + - **Плюси:** завжди ввімкнено, стабільна мережа, немає проблем через сон ноутбука, легше підтримувати постійну роботу. + - **Мінуси:** часто headless-режим (використовуйте скриншоти), доступ до файлів лише віддалено, для оновлень потрібен SSH. - **Примітка для OpenClaw:** WhatsApp/Telegram/Slack/Mattermost/Discord чудово працюють із VPS. Єдиний реальний компроміс — **headless browser** проти видимого вікна. Див. [Browser](/tools/browser). + **Примітка, специфічна для OpenClaw:** WhatsApp/Telegram/Slack/Mattermost/Discord усі добре працюють із VPS. Єдиний реальний компроміс — **headless browser** проти видимого вікна. Див. [Браузер](/uk/tools/browser). - **Рекомендований варіант за замовчуванням:** VPS, якщо у вас уже були відключення gateway. Локально чудово працює, коли ви активно користуєтеся Mac і хочете доступ до локальних файлів або UI automation з видимим браузером. + **Рекомендовано за замовчуванням:** VPS, якщо у вас уже були розриви gateway. Локальний запуск чудово підходить, коли ви активно користуєтеся Mac і хочете доступ до локальних файлів або UI-автоматизацію з видимим браузером. - Це не обов’язково, але **рекомендується для надійності та ізоляції**. + Не обов’язково, але **рекомендовано для надійності та ізоляції**. - - **Окремий хост (VPS/Mac mini/Pi):** always-on, менше переривань через sleep/reboot, чистіші дозволи, простіше підтримувати роботу. - - **Спільний ноутбук/десктоп:** цілком підходить для тестування й активного використання, але очікуйте пауз під час сну машини або оновлень. + - **Окремий host (VPS/Mac mini/Pi):** завжди ввімкнений, менше переривань через сон/перезавантаження, чистіші дозволи, простіше підтримувати роботу. + - **Спільний ноутбук/desktop:** цілком підходить для тестування та активного використання, але очікуйте пауз, коли машина засинає або оновлюється. - Якщо ви хочете найкраще з обох світів, тримайте Gateway на окремому хості й під’єднайте ноутбук як **node** для локальних screen/camera/exec tools. Див. [Nodes](/uk/nodes). - Для рекомендацій із безпеки читайте [Security](/uk/gateway/security). + Якщо ви хочете поєднати найкраще з обох світів, тримайте Gateway на окремому host і підключайте ноутбук як **node** для локальних інструментів screen/camera/exec. Див. [Nodes](/uk/nodes). + Поради з безпеки див. у [Безпека](/uk/gateway/security). - - OpenClaw легкий. Для базового Gateway + одного chat channel: + + OpenClaw легкий. Для базового Gateway + одного chat-каналу: - **Абсолютний мінімум:** 1 vCPU, 1GB RAM, ~500MB диска. - - **Рекомендовано:** 1-2 vCPU, 2GB RAM або більше для запасу (логи, медіа, кілька channels). Node tools і browser automation можуть бути ресурсомісткими. + - **Рекомендовано:** 1-2 vCPU, 2GB RAM або більше для запасу (логи, медіа, кілька каналів). Node tools і browser automation можуть потребувати багато ресурсів. - ОС: використовуйте **Ubuntu LTS** (або будь-який сучасний Debian/Ubuntu). Саме цей шлях встановлення на Linux найкраще протестований. + ОС: використовуйте **Ubuntu LTS** (або будь-яку сучасну Debian/Ubuntu). Шлях встановлення для Linux там протестовано найкраще. - Документація: [Linux](/uk/platforms/linux), [VPS hosting](/vps). + Документація: [Linux](/uk/platforms/linux), [VPS hosting](/uk/vps). - - Так. Ставтеся до VM так само, як до VPS: вона має бути постійно увімкнена, доступна й мати достатньо - RAM для Gateway та будь-яких увімкнених channels. + + Так. Ставтеся до VM так само, як до VPS: вона має бути постійно увімкнена, доступна і мати достатньо + RAM для Gateway та будь-яких увімкнених каналів. - Базові рекомендації: + Базові орієнтири: - **Абсолютний мінімум:** 1 vCPU, 1GB RAM. - - **Рекомендовано:** 2GB RAM або більше, якщо ви запускаєте кілька channels, browser automation чи media tools. - - **ОС:** Ubuntu LTS або інший сучасний Debian/Ubuntu. + - **Рекомендовано:** 2GB RAM або більше, якщо ви запускаєте кілька каналів, browser automation або media tools. + - **ОС:** Ubuntu LTS або інша сучасна Debian/Ubuntu. - Якщо ви працюєте на Windows, **WSL2 — найпростіше VM-подібне налаштування** і має найкращу - сумісність інструментів. Див. [Windows](/uk/platforms/windows), [VPS hosting](/vps). + Якщо ви на Windows, **WSL2 — найпростіший стиль налаштування VM** і має найкращу + сумісність інструментів. Див. [Windows](/uk/platforms/windows), [VPS hosting](/uk/vps). Якщо ви запускаєте macOS у VM, див. [macOS VM](/uk/install/macos-vm). @@ -895,154 +893,154 @@ x-i18n: ## Що таке OpenClaw? - - OpenClaw — це персональний AI-помічник, який ви запускаєте на власних пристроях. Він відповідає на вже знайомих вам платформах обміну повідомленнями (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat і bundled channel plugins, як-от QQ Bot), а також може працювати з голосом + live Canvas на підтримуваних платформах. **Gateway** — це always-on control plane; помічник і є самим продуктом. + + OpenClaw — це персональний AI-помічник, який ви запускаєте на власних пристроях. Він відповідає на поверхнях обміну повідомленнями, якими ви вже користуєтеся (WhatsApp, Telegram, Slack, Mattermost, Discord, Google Chat, Signal, iMessage, WebChat і bundled channel plugins, такі як QQ Bot), а також може працювати з голосом + live Canvas на підтримуваних платформах. **Gateway** — це постійно увімкнена control plane; помічник і є продуктом. - OpenClaw — це не «просто обгортка над Claude». Це **local-first control plane**, яка дозволяє запускати - потужного помічника на **вашому власному обладнанні**, доступного з уже використовуваних вами чат-застосунків, зі - session state, memory і tools — без передавання контролю над вашими процесами hosted + OpenClaw — це не "просто обгортка для Claude". Це **local-first control plane**, яка дозволяє вам запускати + потужного помічника на **власному обладнанні**, доступного з chat-застосунків, якими ви вже користуєтесь, зі + stateful sessions, memory та tools — без передачі контролю над вашими workflow хостинговому SaaS. Основні переваги: - - **Ваші пристрої, ваші дані:** запускайте Gateway де завгодно (Mac, Linux, VPS) і зберігайте - workspace + session history локально. - - **Реальні канали, а не веб-пісочниця:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage тощо, + - **Ваші пристрої, ваші дані:** запускайте Gateway де завгодно (Mac, Linux, VPS) і тримайте + workspace + history сесій локально. + - **Реальні канали, а не web-пісочниця:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage тощо, а також mobile voice і Canvas на підтримуваних платформах. - - **Незалежність від моделі:** використовуйте Anthropic, OpenAI, MiniMax, OpenRouter тощо з маршрутизацією + - **Незалежність від моделі:** використовуйте Anthropic, OpenAI, MiniMax, OpenRouter тощо, з маршрутизацією та failover на рівні agent. - - **Варіант лише локально:** запускайте локальні моделі, щоб **усі дані могли залишатися на вашому пристрої**, якщо ви цього хочете. - - **Multi-agent routing:** окремі агенти для channel, account або task, кожен зі своїм - workspace і налаштуваннями за замовчуванням. - - **Відкритий код і можливість змінювати:** перевіряйте, розширюйте й self-host без vendor lock-in. + - **Лише локальний варіант:** запускайте локальні моделі, щоб **усі дані могли лишатися на вашому пристрої**, якщо бажаєте. + - **Multi-agent routing:** окремі agents за каналом, обліковим записом або задачею, кожен із власним + workspace і параметрами за замовчуванням. + - **Відкритий код і hackable:** перевіряйте, розширюйте й self-host без vendor lock-in. - Документація: [Gateway](/uk/gateway), [Channels](/uk/channels), [Multi-agent](/uk/concepts/multi-agent), - [Memory](/uk/concepts/memory). + Документація: [Gateway](/uk/gateway), [Канали](/uk/channels), [Multi-agent](/uk/concepts/multi-agent), + [Пам’ять](/uk/concepts/memory). - + Хороші перші проєкти: - - Створити сайт (WordPress, Shopify або простий статичний сайт). + - Створити вебсайт (WordPress, Shopify або простий статичний сайт). - Прототипувати мобільний застосунок (структура, екрани, план API). - - Упорядкувати файли й папки (очищення, найменування, теги). - - Підключити Gmail і автоматизувати підсумки чи follow ups. + - Упорядкувати файли й теки (очищення, найменування, теги). + - Підключити Gmail і автоматизувати зведення чи follow-up. - Він може обробляти великі задачі, але найкраще працює, коли ви розбиваєте їх на фази й + Він може впоратися з великими задачами, але найкраще працює, коли ви ділите їх на фази й використовуєте sub agents для паралельної роботи. - - Повсякденні переваги зазвичай виглядають так: + + Повсякденні виграші зазвичай виглядають так: - - **Особисті брифінги:** підсумки inbox, календаря та новин, які вас цікавлять. - - **Дослідження та підготовка чернеток:** швидкі дослідження, резюме й перші чернетки для листів або документів. - - **Нагадування та follow ups:** nudges і чеклісти, керовані cron або heartbeat. - - **Browser automation:** заповнення форм, збір даних і повторювані веб-задачі. - - **Координація між пристроями:** надішліть задачу з телефону, дозвольте Gateway виконати її на сервері й отримайте результат назад у чат. + - **Персональні зведення:** підсумки inbox, календаря й важливих для вас новин. + - **Дослідження й чернетки:** швидкий ресерч, зведення та перші чернетки листів або документів. + - **Нагадування і follow-up:** nudges і чеклісти на базі cron або heartbeat. + - **Автоматизація браузера:** заповнення форм, збирання даних і повторення web-задач. + - **Координація між пристроями:** надішліть задачу з телефону, дайте Gateway виконати її на сервері й отримайте результат назад у чаті. - - Так — для **дослідження, кваліфікації та підготовки чернеток**. Він може сканувати сайти, складати shortlists, - підсумовувати інформацію про потенційних клієнтів і писати чернетки outreach або ad copy. + + Так — для **дослідження, кваліфікації та створення чернеток**. Він може сканувати сайти, будувати shortlists, + підсумовувати prospects і писати чернетки outreach або рекламних текстів. - Для **outreach або ad runs** залишайте людину в циклі. Уникайте спаму, дотримуйтеся місцевих законів і - політик платформ, а також переглядайте все перед відправленням. Найбезпечніший шаблон — дозволити - OpenClaw підготувати чернетку, а вам — затвердити її. + Для **outreach або запуску реклами** тримайте людину в циклі. Уникайте спаму, дотримуйтеся місцевих законів і + політик платформ, і перевіряйте все перед надсиланням. Найбезпечніший шаблон — нехай + OpenClaw створює чернетку, а ви схвалюєте. - Документація: [Security](/uk/gateway/security). + Документація: [Безпека](/uk/gateway/security). - OpenClaw — це **персональний помічник** і координаційний шар, а не заміна IDE. Використовуйте - Claude Code або Codex для найшвидшого прямого циклу програмування всередині репозиторію. Використовуйте OpenClaw, коли вам - потрібні довговічна пам’ять, міжпристроєвий доступ і оркестрація інструментів. + OpenClaw — це **персональний помічник** і координаційний рівень, а не заміна IDE. Використовуйте + Claude Code або Codex для найшвидшого прямого циклу кодування всередині repo. Використовуйте OpenClaw, коли вам + потрібні довготривала memory, доступ із різних пристроїв і orchestration tools. Переваги: - - **Постійна memory + workspace** між сесіями - - **Багатоплатформний доступ** (WhatsApp, Telegram, TUI, WebChat) - - **Оркестрація інструментів** (browser, файли, планування, hooks) - - **Always-on Gateway** (запускайте на VPS, взаємодійте звідусіль) - - **Nodes** для локальних browser/screen/camera/exec + - **Стійка memory + workspace** між сесіями + - **Multi-platform access** (WhatsApp, Telegram, TUI, WebChat) + - **Оркестрація інструментів** (browser, files, scheduling, hooks) + - **Постійно увімкнений Gateway** (запуск на VPS, взаємодія звідусіль) + - **Nodes** для локального browser/screen/camera/exec Вітрина: [https://openclaw.ai/showcase](https://openclaw.ai/showcase) -## Skills та automation +## Skills і автоматизація - - Використовуйте керовані overrides замість редагування копії в репозиторії. Розміщуйте свої зміни в `~/.openclaw/skills//SKILL.md` (або додайте папку через `skills.load.extraDirs` у `~/.openclaw/openclaw.json`). Пріоритет такий: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → bundled → `skills.load.extraDirs`, тож керовані overrides усе одно мають перевагу над bundled skills без змін у git. Якщо вам потрібно, щоб skill було встановлено глобально, але видимо лише для деяких agents, тримайте спільну копію в `~/.openclaw/skills` і керуйте видимістю через `agents.defaults.skills` і `agents.list[].skills`. Лише зміни, гідні upstream, мають жити в репозиторії та надсилатися як PR. + + Використовуйте керовані override-и замість редагування копії в repo. Розміщуйте свої зміни в `~/.openclaw/skills//SKILL.md` (або додайте теку через `skills.load.extraDirs` у `~/.openclaw/openclaw.json`). Пріоритет такий: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → bundled → `skills.load.extraDirs`, тож керовані override-и все одно мають перевагу над bundled Skills без втручання в git. Якщо вам потрібно, щоб Skill був встановлений глобально, але видимий лише деяким agents, тримайте спільну копію в `~/.openclaw/skills` і керуйте видимістю через `agents.defaults.skills` та `agents.list[].skills`. Лише зміни, гідні upstream, мають жити в repo і виходити як PR. - - Так. Додайте додаткові каталоги через `skills.load.extraDirs` у `~/.openclaw/openclaw.json` (найнижчий пріоритет). Типовий порядок пріоритету: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → bundled → `skills.load.extraDirs`. `clawhub` за замовчуванням встановлює в `./skills`, яке OpenClaw сприймає як `/skills` у наступній сесії. Якщо skill має бути видимим лише певним agents, поєднайте це з `agents.defaults.skills` або `agents.list[].skills`. + + Так. Додайте додаткові каталоги через `skills.load.extraDirs` у `~/.openclaw/openclaw.json` (найнижчий пріоритет). Стандартний пріоритет: `/skills` → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → bundled → `skills.load.extraDirs`. `clawhub` типово встановлює у `./skills`, які OpenClaw розглядає як `/skills` у наступній сесії. Якщо Skill має бути видимим лише певним agents, поєднайте це з `agents.defaults.skills` або `agents.list[].skills`. - - Наразі підтримуються такі шаблони: + + Сьогодні підтримуються такі шаблони: - - **Cron jobs**: ізольовані завдання можуть задавати override `model` для кожного job. - - **Sub-agents**: маршрутизуйте задачі до окремих agents з різними моделями за замовчуванням. - - **On-demand switch**: використовуйте `/model`, щоб у будь-який момент переключити модель поточної сесії. + - **Cron jobs**: ізольовані jobs можуть задавати override `model` для кожної job. + - **Sub-agents**: маршрутизуйте задачі до окремих agents із різними моделями за замовчуванням. + - **Перемикання на вимогу**: використовуйте `/model`, щоб змінити модель поточної сесії в будь-який момент. - Див. [Cron jobs](/uk/automation/cron-jobs), [Multi-Agent Routing](/uk/concepts/multi-agent) і [Slash commands](/tools/slash-commands). + Див. [Cron jobs](/uk/automation/cron-jobs), [Multi-Agent Routing](/uk/concepts/multi-agent) і [Слеш-команди](/uk/tools/slash-commands). - + Використовуйте **sub-agents** для довгих або паралельних задач. Sub-agents працюють у власній сесії, - повертають зведення й зберігають чутливість вашого основного чату. + повертають підсумок і зберігають чутливість вашого основного чату. - Попросіть бота «spawn a sub-agent for this task» або використайте `/subagents`. - Використовуйте `/status` у чаті, щоб побачити, що зараз робить Gateway (і чи він зайнятий). + Попросіть бота "spawn a sub-agent for this task" або використайте `/subagents`. + Використовуйте `/status` у чаті, щоб побачити, що Gateway робить просто зараз (і чи він зайнятий). - Порада щодо токенів: і довгі задачі, і sub-agents споживають токени. Якщо вас хвилює вартість, задайте + Порада щодо токенів: як довгі задачі, так і sub-agents споживають токени. Якщо вартість критична, задайте дешевшу модель для sub-agents через `agents.defaults.subagents.model`. - Документація: [Sub-agents](/tools/subagents), [Background Tasks](/uk/automation/tasks). + Документація: [Sub-agents](/uk/tools/subagents), [Фонові задачі](/uk/automation/tasks). - - Використовуйте прив’язки threads. Ви можете прив’язати Discord thread до subagent або session target, щоб подальші повідомлення в цьому thread залишалися на цій прив’язаній сесії. + + Використовуйте thread bindings. Ви можете прив’язати Discord thread до subagent або цілі session, щоб наступні повідомлення в цьому thread лишалися в межах прив’язаної session. - Базовий потік: + Базовий процес: - - Запускайте через `sessions_spawn` із `thread: true` (і за бажанням `mode: "session"` для сталого follow-up). - - Або вручну прив’яжіть через `/focus `. - - Використовуйте `/agents` для перегляду стану прив’язки. - - Використовуйте `/session idle ` і `/session max-age `, щоб керувати auto-unfocus. + - Створіть через `sessions_spawn` з `thread: true` (і за потреби `mode: "session"` для стійкого follow-up). + - Або прив’яжіть вручну через `/focus `. + - Використовуйте `/agents`, щоб перевірити стан прив’язки. + - Використовуйте `/session idle ` і `/session max-age `, щоб керувати автоматичним unfocus. - Використовуйте `/unfocus`, щоб від’єднати thread. Потрібна конфігурація: - Глобальні значення за замовчуванням: `session.threadBindings.enabled`, `session.threadBindings.idleHours`, `session.threadBindings.maxAgeHours`. - - Discord overrides: `channels.discord.threadBindings.enabled`, `channels.discord.threadBindings.idleHours`, `channels.discord.threadBindings.maxAgeHours`. - - Автоприв’язка під час spawn: задайте `channels.discord.threadBindings.spawnSubagentSessions: true`. + - Override-и Discord: `channels.discord.threadBindings.enabled`, `channels.discord.threadBindings.idleHours`, `channels.discord.threadBindings.maxAgeHours`. + - Автоприв’язка під час spawn: встановіть `channels.discord.threadBindings.spawnSubagentSessions: true`. - Документація: [Sub-agents](/tools/subagents), [Discord](/uk/channels/discord), [Configuration Reference](/uk/gateway/configuration-reference), [Slash commands](/tools/slash-commands). + Документація: [Sub-agents](/uk/tools/subagents), [Discord](/uk/channels/discord), [Довідник конфігурації](/uk/gateway/configuration-reference), [Слеш-команди](/uk/tools/slash-commands). - - Спочатку перевірте resolved requester route: + + Спочатку перевірте визначений requester route: - - Доставка завершення для subagent у режимі completion віддає перевагу будь-якому прив’язаному thread або conversation route, якщо такий існує. - - Якщо origin завершення містить лише channel, OpenClaw повертається до збереженого route сесії requester (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все ще могла спрацювати. - - Якщо немає ні прив’язаного route, ні придатного збереженого route, пряма доставка може не вдатися, і результат повертається до queued session delivery замість негайної публікації в чат. - - Недійсні або застарілі targets усе ще можуть примусити fallback на queue або остаточну помилку доставки. - - Якщо остання видима відповідь assistant у дочірньому агенті — це точний silent token `NO_REPLY` / `no_reply` або рівно `ANNOUNCE_SKIP`, OpenClaw навмисно пригнічує announce замість публікації застарілого попереднього прогресу. - - Якщо дочірній агент завершився за таймаутом після одних лише tool calls, announce може згорнути це в коротке зведення часткового прогресу замість відтворення сирого tool output. + - Доставка completion-mode subagent надає перевагу будь-якому прив’язаному thread або conversation route, якщо він існує. + - Якщо походження completion містить лише канал, OpenClaw відступає до збереженого route requester session (`lastChannel` / `lastTo` / `lastAccountId`), тож пряма доставка все одно може спрацювати. + - Якщо немає ні прив’язаного route, ні придатного збереженого route, пряма доставка може не вдатися, і результат переходить до queued session delivery замість негайної публікації в чат. + - Невалідні або застарілі цілі все одно можуть змусити перейти до queue fallback або остаточної невдачі доставки. + - Якщо остання видима відповідь assistant у child — це точний тихий токен `NO_REPLY` / `no_reply`, або точно `ANNOUNCE_SKIP`, OpenClaw навмисно пригнічує announce замість публікації застарілого ранішого progress. + - Якщо child перевищив timeout лише після викликів tools, announce може згорнути це в короткий підсумок часткового progress замість відтворення сирого виводу tools. Налагодження: @@ -1050,19 +1048,19 @@ x-i18n: openclaw tasks show ``` - Документація: [Sub-agents](/tools/subagents), [Background Tasks](/uk/automation/tasks), [Session Tools](/uk/concepts/session-tool). + Документація: [Sub-agents](/uk/tools/subagents), [Фонові задачі](/uk/automation/tasks), [Session Tools](/uk/concepts/session-tool). - Cron працює всередині процесу Gateway. Якщо Gateway не працює безперервно, + Cron виконується всередині процесу Gateway. Якщо Gateway не працює безперервно, заплановані jobs не запускатимуться. - Чекліст: + Контрольний список: - - Переконайтеся, що cron увімкнено (`cron.enabled`) і `OPENCLAW_SKIP_CRON` не задано. - - Перевірте, що Gateway працює 24/7 (без sleep/restarts). - - Перевірте налаштування timezone для job (`--tz` проти timezone хоста). + - Підтвердьте, що cron увімкнено (`cron.enabled`) і `OPENCLAW_SKIP_CRON` не задано. + - Переконайтеся, що Gateway працює 24/7 (без сну/перезапусків). + - Перевірте налаштування часового поясу для job (`--tz` проти часового поясу host). Налагодження: @@ -1071,22 +1069,22 @@ x-i18n: openclaw cron runs --id --limit 50 ``` - Документація: [Cron jobs](/uk/automation/cron-jobs), [Automation & Tasks](/uk/automation). + Документація: [Cron jobs](/uk/automation/cron-jobs), [Автоматизація та задачі](/uk/automation). - - Спочатку перевірте delivery mode: + + Спочатку перевірте режим доставки: - `--no-deliver` / `delivery.mode: "none"` означає, що зовнішнє повідомлення не очікується. - - Відсутній або недійсний announce target (`channel` / `to`) означає, що runner пропустив outbound delivery. - - Помилки auth каналу (`unauthorized`, `Forbidden`) означають, що runner намагався доставити, але облікові дані це заблокували. - - Тихий ізольований результат (`NO_REPLY` / `no_reply` лише) вважається навмисно недоставлюваним, тож runner також пригнічує queued fallback delivery. + - Відсутня або невалідна announce-ціль (`channel` / `to`) означає, що runner пропустив outbound delivery. + - Збої auth каналу (`unauthorized`, `Forbidden`) означають, що runner спробував доставити, але credentials заблокували це. + - Тихий ізольований результат (`NO_REPLY` / `no_reply` only) вважається навмисно недоставним, тож runner також пригнічує queued fallback delivery. - Для ізольованих cron jobs остаточною доставкою керує runner. Від агента очікується - повернення plain-text summary для надсилання runner-ом. `--no-deliver` зберігає - цей результат внутрішнім; це не дозволяє агенту напряму надсилати його - через message tool. + Для ізольованих cron jobs фінальною доставкою володіє runner. Очікується, + що agent поверне plain-text summary, який runner надішле. `--no-deliver` зберігає + цей результат внутрішнім; це не дозволяє agent натомість напряму надсилати через + message tool. Налагодження: @@ -1095,27 +1093,27 @@ x-i18n: openclaw tasks show ``` - Документація: [Cron jobs](/uk/automation/cron-jobs), [Background Tasks](/uk/automation/tasks). + Документація: [Cron jobs](/uk/automation/cron-jobs), [Фонові задачі](/uk/automation/tasks). - - Зазвичай це шлях live model-switch, а не дубльоване планування. + + Зазвичай це шлях live model-switch, а не дублювання розкладу. - Ізольований cron може зберігати runtime handoff моделі й повторювати спробу, коли активний - запуск викидає `LiveSessionModelSwitchError`. Повторна спроба зберігає переключений - provider/model, і якщо перемикання містило новий override auth profile, cron + Ізольований cron може зберігати runtime handoff моделі та повторювати спробу, коли активний + запуск викидає `LiveSessionModelSwitchError`. Повторна спроба зберігає перемкненого + provider/model, а якщо switch ніс новий override auth profile, cron також зберігає його перед повторною спробою. Пов’язані правила вибору: - - Спочатку перемагає override моделі Gmail hook, коли це застосовується. - - Потім per-job `model`. + - Override моделі Gmail hook має найвищий пріоритет, коли застосовно. + - Потім `model` для job. - Потім будь-який збережений override моделі cron-session. - Потім звичайний вибір моделі agent/default. - Цикл повторних спроб обмежений. Після початкової спроби плюс 2 повторні спроби через switch - cron переривається замість нескінченного циклу. + Цикл повторних спроб обмежений. Після початкової спроби плюс 2 switch-повторів + cron завершується замість нескінченного циклу. Налагодження: @@ -1128,9 +1126,9 @@ x-i18n: - - Використовуйте нативні команди `openclaw skills` або поміщайте skills у свій workspace. UI Skills для macOS недоступний на Linux. - Перегляд skills: [https://clawhub.ai](https://clawhub.ai). + + Використовуйте нативні команди `openclaw skills` або просто кладіть Skills у свій workspace. UI Skills для macOS недоступний на Linux. + Переглянути Skills можна на [https://clawhub.ai](https://clawhub.ai). ```bash openclaw skills search "calendar" @@ -1143,41 +1141,41 @@ x-i18n: openclaw skills check ``` - Нативна команда `openclaw skills install` записує в каталог `skills/` + Нативний `openclaw skills install` записує в каталог `skills/` активного workspace. Встановлюйте окремий CLI `clawhub` лише якщо хочете публікувати або - синхронізувати власні skills. Для спільного встановлення між agents покладіть skill у + синхронізувати власні Skills. Для спільних встановлень між agents кладіть Skill у `~/.openclaw/skills` і використовуйте `agents.defaults.skills` або - `agents.list[].skills`, якщо хочете звузити, які агенти можуть її бачити. + `agents.list[].skills`, якщо хочете обмежити видимість певним agents. - + Так. Використовуйте планувальник Gateway: - **Cron jobs** для запланованих або повторюваних задач (зберігаються після перезапусків). - - **Heartbeat** для періодичних перевірок «main session». - - **Isolated jobs** для автономних агентів, які публікують підсумки або доставляють їх у чати. + - **Heartbeat** для періодичних перевірок "головної session". + - **Ізольовані jobs** для автономних agents, які публікують підсумки або доставляють їх у чати. - Документація: [Cron jobs](/uk/automation/cron-jobs), [Automation & Tasks](/uk/automation), + Документація: [Cron jobs](/uk/automation/cron-jobs), [Автоматизація та задачі](/uk/automation), [Heartbeat](/uk/gateway/heartbeat). - - Не напряму. Skills для macOS обмежуються `metadata.openclaw.os` плюс потрібними binaries, і skills з’являються в system prompt лише тоді, коли вони придатні на **Gateway host**. У Linux skills лише для `darwin` (наприклад `apple-notes`, `apple-reminders`, `things-mac`) не завантажуватимуться, якщо ви не перевизначите обмеження. + + Не напряму. Skills на macOS обмежуються через `metadata.openclaw.os` плюс потрібні бінарники, і Skills з’являються в system prompt лише тоді, коли вони доступні на **Gateway host**. На Linux Skills лише для `darwin` (як-от `apple-notes`, `apple-reminders`, `things-mac`) не завантажаться, якщо ви не перевизначите це обмеження. Є три підтримувані шаблони: **Варіант A — запускати Gateway на Mac (найпростіше).** - Запускайте Gateway там, де існують macOS binaries, а потім підключайтеся з Linux у [remote mode](#gateway-ports-already-running-and-remote-mode) або через Tailscale. Skills завантажуються нормально, бо Gateway host — це macOS. + Запускайте Gateway там, де існують бінарники macOS, а потім підключайтеся з Linux у [віддаленому режимі](#gateway-ports-already-running-and-remote-mode) або через Tailscale. Skills завантажуються як зазвичай, бо Gateway host — це macOS. - **Варіант B — використовуйте macOS node (без SSH).** - Запускайте Gateway на Linux, під’єднайте macOS node (menubar app) і задайте **Node Run Commands** як "Always Ask" або "Always Allow" на Mac. OpenClaw може вважати macOS-only skills придатними, коли потрібні binaries існують на node. Агент запускає ці skills через інструмент `nodes`. Якщо ви оберете "Always Ask", підтвердження "Always Allow" у підказці додасть цю команду до allowlist. + **Варіант B — використовувати macOS node (без SSH).** + Запускайте Gateway на Linux, під’єднайте macOS node (menubar app) і встановіть **Node Run Commands** у "Always Ask" або "Always Allow" на Mac. OpenClaw може вважати macOS-only Skills доступними, коли потрібні бінарники існують на node. Агент запускає ці Skills через інструмент `nodes`. Якщо ви виберете "Always Ask", підтвердження "Always Allow" у prompt додає цю команду до allowlist. - **Варіант C — проксувати macOS binaries через SSH (просунуто).** - Залиште Gateway на Linux, але зробіть так, щоб потрібні CLI binaries дозволялися до SSH wrappers, які запускаються на Mac. Потім перевизначте skill, щоб дозволити Linux і зберегти його придатним. + **Варіант C — проксувати бінарники macOS через SSH (просунуто).** + Тримайте Gateway на Linux, але зробіть так, щоб потрібні CLI-бінарники визначалися як SSH-обгортки, які виконуються на Mac. Потім перевизначте Skill, щоб дозволити Linux і він лишався доступним. - 1. Створіть SSH wrapper для binary (приклад: `memo` для Apple Notes): + 1. Створіть SSH-обгортку для бінарника (приклад: `memo` для Apple Notes): ```bash #!/usr/bin/env bash @@ -1185,8 +1183,8 @@ x-i18n: exec ssh -T user@mac-host /opt/homebrew/bin/memo "$@" ``` - 2. Додайте wrapper у `PATH` на Linux host (наприклад `~/bin/memo`). - 3. Перевизначте metadata skill, щоб дозволити Linux: + 2. Додайте обгортку в `PATH` на Linux host (наприклад, `~/bin/memo`). + 3. Перевизначте metadata Skill (workspace або `~/.openclaw/skills`) так, щоб дозволити Linux: ```markdown --- @@ -1196,211 +1194,210 @@ x-i18n: --- ``` - 4. Почніть нову сесію, щоб оновився snapshot skills. + 4. Почніть нову session, щоб snapshot Skills оновився. - - Наразі вбудованої немає. + + Вбудованої зараз немає. Варіанти: - **Custom skill / plugin:** найкраще для надійного доступу до API (і Notion, і HeyGen мають API). - - **Browser automation:** працює без коду, але повільніше і крихкіше. + - **Автоматизація браузера:** працює без коду, але повільніше й крихкіше. - Якщо ви хочете зберігати контекст для кожного клієнта (сценарії agency), простий шаблон такий: + Якщо ви хочете зберігати context для кожного клієнта (workflows агентства), простий шаблон такий: - - Одна сторінка Notion на клієнта (контекст + уподобання + активна робота). - - Просіть агента отримувати цю сторінку на початку сесії. + - Одна сторінка Notion на клієнта (context + preferences + активна робота). + - Попросіть agent витягувати цю сторінку на початку session. - Якщо ви хочете нативну інтеграцію, відкрийте feature request або створіть skill, - націлений на ці API. + Якщо хочете нативну інтеграцію, відкрийте feature request або створіть Skill, + який працює з цими API. - Встановлення skills: + Встановлення Skills: ```bash openclaw skills install openclaw skills update --all ``` - Нативні встановлення потрапляють у каталог `skills/` активного workspace. Для спільних skills між agents розміщуйте їх у `~/.openclaw/skills//SKILL.md`. Якщо спільне встановлення мають бачити лише деякі agents, налаштуйте `agents.defaults.skills` або `agents.list[].skills`. Деякі skills очікують binaries, встановлені через Homebrew; у Linux це означає Linuxbrew (див. запис FAQ про Homebrew для Linux вище). Див. [Skills](/tools/skills), [Skills config](/tools/skills-config) і [ClawHub](/tools/clawhub). + Нативні встановлення потрапляють у каталог `skills/` активного workspace. Для спільних Skills між agents розміщуйте їх у `~/.openclaw/skills//SKILL.md`. Якщо спільне встановлення мають бачити лише деякі agents, налаштуйте `agents.defaults.skills` або `agents.list[].skills`. Деякі Skills очікують бінарники, встановлені через Homebrew; на Linux це означає Linuxbrew (див. запис ЧаП про Homebrew Linux вище). Див. [Skills](/uk/tools/skills), [Конфігурація Skills](/uk/tools/skills-config) і [ClawHub](/uk/tools/clawhub). - - Використовуйте вбудований browser profile `user`, який під’єднується через Chrome DevTools MCP: + + Використовуйте вбудований профіль браузера `user`, який підключається через Chrome DevTools MCP: ```bash openclaw browser --browser-profile user tabs openclaw browser --browser-profile user snapshot ``` - Якщо ви хочете власну назву, створіть явний MCP profile: + Якщо ви хочете власну назву, створіть явний MCP-профіль: ```bash openclaw browser create-profile --name chrome-live --driver existing-session openclaw browser --browser-profile chrome-live tabs ``` - Цей шлях локальний для хоста. Якщо Gateway працює деінде, або запускайте node host на машині з браузером, або використовуйте remote CDP. + Цей шлях є локальним для host. Якщо Gateway працює деінде, або запускайте node host на машині з браузером, або використовуйте remote CDP. Поточні обмеження `existing-session` / `user`: - - дії керуються через ref, а не CSS-selector - - uploads потребують `ref` / `inputRef` і наразі підтримують лише один файл за раз - - `responsebody`, експорт PDF, перехоплення завантажень і batch actions усе ще потребують managed browser або raw CDP profile + - дії базуються на ref, а не на CSS-selector + - завантаження файлів потребує `ref` / `inputRef` і зараз підтримує лише один файл за раз + - `responsebody`, експорт PDF, interception завантажень і batch-дії все ще потребують керованого браузера або сирого CDP-профілю -## Sandboxing і memory +## Пісочниця і пам’ять - - Так. Див. [Sandboxing](/uk/gateway/sandboxing). Для Docker-specific setup (повний gateway у Docker або sandbox images) див. [Docker](/uk/install/docker). + + Так. Див. [Пісочниця](/uk/gateway/sandboxing). Для налаштування, специфічного для Docker (повний gateway у Docker або sandbox images), див. [Docker](/uk/install/docker). - - Образ за замовчуванням орієнтований на безпеку й працює від імені користувача `node`, тому він не - містить system packages, Homebrew або bundled browsers. Для повнішого налаштування: + + Образ за замовчуванням орієнтований на безпеку і працює від користувача `node`, тому він не + містить системних пакетів, Homebrew або bundled-браузерів. Для повнішого налаштування: - - Збережіть `/home/node` через `OPENCLAW_HOME_VOLUME`, щоб кеші переживали перезапуски. - - Вбудуйте system deps у образ за допомогою `OPENCLAW_DOCKER_APT_PACKAGES`. + - Збережіть `/home/node` у `OPENCLAW_HOME_VOLUME`, щоб кеші переживали перезапуски. + - Запікайте системні залежності в образ через `OPENCLAW_DOCKER_APT_PACKAGES`. - Встановіть браузери Playwright через bundled CLI: `node /app/node_modules/playwright-core/cli.js install chromium` - - Задайте `PLAYWRIGHT_BROWSERS_PATH` і переконайтеся, що цей шлях зберігається. + - Встановіть `PLAYWRIGHT_BROWSERS_PATH` і переконайтеся, що цей шлях зберігається. - Документація: [Docker](/uk/install/docker), [Browser](/tools/browser). + Документація: [Docker](/uk/install/docker), [Браузер](/uk/tools/browser). - - Так — якщо ваш приватний трафік це **DMs**, а публічний трафік — **groups**. + + Так — якщо ваш приватний трафік це **DM**, а публічний трафік — **groups**. - Використовуйте `agents.defaults.sandbox.mode: "non-main"`, щоб group/channel sessions (ключі не-main) працювали в Docker, а основна DM session залишалася на host. Потім обмежте, які інструменти доступні в ізольованих сесіях, через `tools.sandbox.tools`. + Використайте `agents.defaults.sandbox.mode: "non-main"`, щоб group/channel sessions (ключі не main) запускалися в Docker, а головна DM-session лишалася на host. Потім обмежте, які tools доступні в sandboxed sessions, через `tools.sandbox.tools`. - Покрокове налаштування + приклад config: [Groups: personal DMs + public groups](/uk/channels/groups#pattern-personal-dms-public-groups-single-agent) + Покрокове налаштування + приклад конфігурації: [Групи: особисті DM + публічні групи](/uk/channels/groups#pattern-personal-dms-public-groups-single-agent) - Ключовий довідник конфігурації: [Gateway configuration](/uk/gateway/configuration-reference#agentsdefaultssandbox) + Ключове посилання на конфігурацію: [Конфігурація Gateway](/uk/gateway/configuration-reference#agentsdefaultssandbox) - - Задайте `agents.defaults.sandbox.docker.binds` як `["host:path:mode"]` (наприклад `"/home/user/src:/src:ro"`). Global + per-agent binds об’єднуються; per-agent binds ігноруються, коли `scope: "shared"`. Для всього чутливого використовуйте `:ro` і пам’ятайте, що binds обходять файлові стіни sandbox. + + Встановіть `agents.defaults.sandbox.docker.binds` у `["host:path:mode"]` (наприклад, `"/home/user/src:/src:ro"`). Global + per-agent bind-и об’єднуються; bind-и per-agent ігноруються, коли `scope: "shared"`. Використовуйте `:ro` для всього чутливого й пам’ятайте, що bind-и обходять файлові стіни sandbox. - OpenClaw перевіряє джерела bind як за нормалізованим шляхом, так і за канонічним шляхом, визначеним через найглибшого наявного предка. Це означає, що виходи через symlink-parent усе ще надійно блокуються, навіть якщо останній сегмент шляху ще не існує, а перевірки allowed-root усе ще застосовуються після розв’язання symlink. + OpenClaw перевіряє джерела bind і за нормалізованим шляхом, і за канонічним шляхом, визначеним через найглибшого наявного предка. Це означає, що вихід через symlink-parent усе одно буде fail closed, навіть якщо останній сегмент шляху ще не існує, а перевірки allowed-root і далі застосовуються після розв’язання symlink. - Приклади та примітки щодо безпеки див. у [Sandboxing](/uk/gateway/sandboxing#custom-bind-mounts) і [Sandbox vs Tool Policy vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check). + Див. [Пісочниця](/uk/gateway/sandboxing#custom-bind-mounts) і [Sandbox vs Tool Policy vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check) для прикладів і зауваг із безпеки. - - Memory в OpenClaw — це просто Markdown files у workspace агента: + + Пам’ять OpenClaw — це просто Markdown-файли в workspace агента: - Щоденні нотатки в `memory/YYYY-MM-DD.md` - Кураторські довгострокові нотатки в `MEMORY.md` (лише main/private sessions) - OpenClaw також виконує **тихий pre-compaction memory flush**, щоб нагадати моделі - записати тривкі нотатки перед auto-compaction. Це запускається лише тоді, коли workspace - доступний для запису (read-only sandboxes пропускають це). Див. [Memory](/uk/concepts/memory). + OpenClaw також запускає **тихий pre-compaction memory flush**, щоб нагадати моделі + записати стійкі нотатки перед auto-compaction. Це виконується лише тоді, коли workspace + доступний на запис (read-only sandbox пропускає це). Див. [Пам’ять](/uk/concepts/memory). - - Попросіть бота **записати факт у memory**. Довгострокові нотатки мають бути в `MEMORY.md`, - короткостроковий контекст — у `memory/YYYY-MM-DD.md`. + + Попросіть бота **записати факт у memory**. Довгострокові нотатки належать у `MEMORY.md`, + короткостроковий context — у `memory/YYYY-MM-DD.md`. - Це ще сфера, яку ми покращуємо. Корисно нагадувати моделі зберігати спогади; - вона знатиме, що робити. Якщо вона все одно забуває, перевірте, що Gateway використовує той самий - workspace під час кожного запуску. + Це все ще напрям, який ми покращуємо. Допомагає нагадувати моделі зберігати спогади; + вона знатиме, що робити. Якщо все одно забуває, перевірте, чи Gateway використовує той самий + workspace щоразу під час запуску. - Документація: [Memory](/uk/concepts/memory), [Agent workspace](/uk/concepts/agent-workspace). + Документація: [Пам’ять](/uk/concepts/memory), [Workspace агента](/uk/concepts/agent-workspace). - - Файли memory живуть на диску і зберігаються, доки ви їх не видалите. Обмеженням є ваше + + Файли пам’яті живуть на диску і зберігаються, доки ви їх не видалите. Обмеження — це ваше сховище, а не модель. **Контекст сесії** все одно обмежений вікном контексту моделі, - тому довгі розмови можуть стискатися або обрізатися. Саме тому існує - пошук по memory — він повертає в контекст лише потрібні частини. + тому довгі розмови можуть стискатися або обрізатися. Саме тому існує memory search — + він повертає в context лише релевантні частини. - Документація: [Memory](/uk/concepts/memory), [Context](/uk/concepts/context). + Документація: [Пам’ять](/uk/concepts/memory), [Контекст](/uk/concepts/context). - + Лише якщо ви використовуєте **OpenAI embeddings**. Codex OAuth покриває chat/completions і - **не** надає доступ до embeddings, тож **вхід через Codex (OAuth або - Codex CLI login)** не допомагає для semantic memory search. Для OpenAI embeddings - усе ще потрібен справжній API key (`OPENAI_API_KEY` або `models.providers.openai.apiKey`). + **не** надає доступу до embeddings, тож **вхід через Codex (OAuth або + вхід через Codex CLI)** не допомагає для semantic memory search. Для embeddings OpenAI + усе ще потрібен справжній API-ключ (`OPENAI_API_KEY` або `models.providers.openai.apiKey`). - Якщо ви явно не задаєте provider, OpenClaw автоматично вибирає provider, коли - може знайти API key (auth profiles, `models.providers.*.apiKey` або env vars). - Він надає перевагу OpenAI, якщо знаходиться ключ OpenAI, інакше Gemini, якщо є ключ Gemini, - потім Voyage, потім Mistral. Якщо віддалений ключ недоступний, memory - search залишається вимкненим, доки ви його не налаштуєте. Якщо у вас налаштовано й доступний - шлях до локальної моделі, OpenClaw - надає перевагу `local`. Ollama підтримується, коли ви явно задаєте + Якщо ви явно не задаєте провайдера, OpenClaw автоматично вибирає провайдера, коли + може знайти API-ключ (auth profiles, `models.providers.*.apiKey` або env vars). + Він надає перевагу OpenAI, якщо є ключ OpenAI, інакше Gemini, якщо є ключ Gemini, + потім Voyage, потім Mistral. Якщо жодного віддаленого ключа немає, memory + search лишається вимкненим, доки ви його не налаштуєте. Якщо у вас налаштований і наявний шлях до локальної моделі, OpenClaw + надає перевагу `local`. Ollama підтримується, якщо ви явно задаєте `memorySearch.provider = "ollama"`. - Якщо ви хочете залишитися локально, задайте `memorySearch.provider = "local"` (і за бажанням - `memorySearch.fallback = "none"`). Якщо вам потрібні Gemini embeddings, задайте + Якщо ви волієте залишитися локально, встановіть `memorySearch.provider = "local"` (і необов’язково + `memorySearch.fallback = "none"`). Якщо вам потрібні embeddings Gemini, встановіть `memorySearch.provider = "gemini"` і надайте `GEMINI_API_KEY` (або `memorySearch.remote.apiKey`). Ми підтримуємо embedding-моделі **OpenAI, Gemini, Voyage, Mistral, Ollama або local** — - подробиці налаштування див. у [Memory](/uk/concepts/memory). + див. [Пам’ять](/uk/concepts/memory) для деталей налаштування. -## Де що зберігається на диску +## Де що лежить на диску - + Ні — **стан OpenClaw локальний**, але **зовнішні сервіси все одно бачать те, що ви їм надсилаєте**. - - **Локально за замовчуванням:** sessions, memory files, config і workspace живуть на Gateway host - (`~/.openclaw` + каталог вашого workspace). - - **Віддалено за необхідністю:** повідомлення, які ви надсилаєте model providers (Anthropic/OpenAI тощо), ідуть до - їхніх API, а chat platforms (WhatsApp/Telegram/Slack тощо) зберігають дані повідомлень на своїх - серверах. - - **Ви контролюєте обсяг:** використання локальних моделей залишає prompts на вашій машині, але channel - traffic усе одно проходить через сервери цього channel. + - **Локально за замовчуванням:** sessions, memory-файли, config і workspace живуть на Gateway host + (`~/.openclaw` + ваш каталог workspace). + - **Віддалено за необхідністю:** повідомлення, які ви надсилаєте модельним провайдерам (Anthropic/OpenAI тощо), ідуть + до їхніх API, а chat-платформи (WhatsApp/Telegram/Slack тощо) зберігають дані повідомлень на + своїх серверах. + - **Ви контролюєте слід:** використання локальних моделей залишає prompts на вашій машині, але трафік + каналів усе одно проходить через сервери каналу. - Пов’язане: [Agent workspace](/uk/concepts/agent-workspace), [Memory](/uk/concepts/memory). + Пов’язане: [Workspace агента](/uk/concepts/agent-workspace), [Пам’ять](/uk/concepts/memory). - Усе зберігається в `$OPENCLAW_STATE_DIR` (типово: `~/.openclaw`): + Усе живе під `$OPENCLAW_STATE_DIR` (типово: `~/.openclaw`): - | Path | Призначення | - | --------------------------------------------------------------- | ----------------------------------------------------------------- | - | `$OPENCLAW_STATE_DIR/openclaw.json` | Основний config (JSON5) | - | `$OPENCLAW_STATE_DIR/credentials/oauth.json` | Застарілий імпорт OAuth (копіюється в auth profiles під час першого використання) | - | `$OPENCLAW_STATE_DIR/agents//agent/auth-profiles.json` | Auth profiles (OAuth, API keys і необов’язкові `keyRef`/`tokenRef`) | - | `$OPENCLAW_STATE_DIR/secrets.json` | Необов’язковий file-backed secret payload для `file` SecretRef providers | - | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Файл застарілої сумісності (статичні записи `api_key` очищаються) | - | `$OPENCLAW_STATE_DIR/credentials/` | Стан провайдерів (наприклад `whatsapp//creds.json`) | - | `$OPENCLAW_STATE_DIR/agents/` | Стан кожного агента окремо (agentDir + sessions) | - | `$OPENCLAW_STATE_DIR/agents//sessions/` | Історія розмов і стан (для кожного агента) | - | `$OPENCLAW_STATE_DIR/agents//sessions/sessions.json` | Метадані сесій (для кожного агента) | + | Path | Purpose | + | --------------------------------------------------------------- | ------------------------------------------------------------------ | + | `$OPENCLAW_STATE_DIR/openclaw.json` | Основна конфігурація (JSON5) | + | `$OPENCLAW_STATE_DIR/credentials/oauth.json` | Legacy OAuth import (копіюється в auth profiles при першому використанні) | + | `$OPENCLAW_STATE_DIR/agents//agent/auth-profiles.json` | Auth profiles (OAuth, API keys та необов’язкові `keyRef`/`tokenRef`) | + | `$OPENCLAW_STATE_DIR/secrets.json` | Необов’язковий file-backed payload secret для провайдерів `file` SecretRef | + | `$OPENCLAW_STATE_DIR/agents//agent/auth.json` | Файл legacy compatibility (статичні записи `api_key` очищені) | + | `$OPENCLAW_STATE_DIR/credentials/` | Стан провайдера (наприклад, `whatsapp//creds.json`) | + | `$OPENCLAW_STATE_DIR/agents/` | Стан на рівні agent (agentDir + sessions) | + | `$OPENCLAW_STATE_DIR/agents//sessions/` | History розмов і state (для кожного agent) | + | `$OPENCLAW_STATE_DIR/agents//sessions/sessions.json` | Metadata сесій (для кожного agent) | - Застарілий шлях single-agent: `~/.openclaw/agent/*` (мігрується через `openclaw doctor`). + Legacy single-agent path: `~/.openclaw/agent/*` (мігрується через `openclaw doctor`). - Ваш **workspace** (`AGENTS.md`, memory files, skills тощо) зберігається окремо й налаштовується через `agents.defaults.workspace` (типово: `~/.openclaw/workspace`). + Ваш **workspace** (AGENTS.md, memory-файли, Skills тощо) є окремим і налаштовується через `agents.defaults.workspace` (типово: `~/.openclaw/workspace`). - + Ці файли живуть у **workspace агента**, а не в `~/.openclaw`. - - **Workspace (для кожного агента):** `AGENTS.md`, `SOUL.md`, `IDENTITY.md`, `USER.md`, - `MEMORY.md` (або застарілий fallback `memory.md`, коли `MEMORY.md` відсутній), + - **Workspace (для кожного agent):** `AGENTS.md`, `SOUL.md`, `IDENTITY.md`, `USER.md`, + `MEMORY.md` (або legacy fallback `memory.md`, коли `MEMORY.md` відсутній), `memory/YYYY-MM-DD.md`, необов’язковий `HEARTBEAT.md`. - - **State dir (`~/.openclaw`)**: config, стан channels/providers, auth profiles, sessions, logs, - і спільні skills (`~/.openclaw/skills`). + - **Каталог state (`~/.openclaw`)**: config, state каналів/провайдерів, auth profiles, sessions, logs, + та спільні Skills (`~/.openclaw/skills`). - Workspace за замовчуванням — `~/.openclaw/workspace`, налаштовується так: + Workspace за замовчуванням — `~/.openclaw/workspace`, це можна налаштувати через: ```json5 { @@ -1408,42 +1405,42 @@ x-i18n: } ``` - Якщо бот «забуває» після перезапуску, переконайтеся, що Gateway під час кожного запуску використовує той самий - workspace (і пам’ятайте: у remote mode використовується **workspace gateway host**, а - не вашого локального ноутбука). + Якщо бот "забуває" після перезапуску, підтвердьте, що Gateway використовує той самий + workspace під час кожного запуску (і пам’ятайте: remote mode використовує **gateway host** + workspace, а не ваш локальний ноутбук). - Порада: якщо ви хочете закріпити певну поведінку або вподобання, попросіть бота **записати це в - AGENTS.md або MEMORY.md**, а не покладатися лише на історію чату. + Порада: якщо ви хочете стійку поведінку або вподобання, попросіть бота **записати це в + AGENTS.md або MEMORY.md**, а не покладатися на history чату. - Див. [Agent workspace](/uk/concepts/agent-workspace) і [Memory](/uk/concepts/memory). + Див. [Workspace агента](/uk/concepts/agent-workspace) і [Пам’ять](/uk/concepts/memory). - Помістіть свій **agent workspace** у **приватний** git repo і робіть його резервні копії кудись - приватно (наприклад у GitHub private). Це захоплює memory + файли AGENTS/SOUL/USER - і дозволяє пізніше відновити «розум» помічника. + Помістіть ваш **workspace агента** в **приватний** git repo і робіть його резервну копію десь + приватно (наприклад, у GitHub private). Це зберігає memory + файли AGENTS/SOUL/USER + і дозволяє відновити "розум" помічника пізніше. - **Не** комітьте нічого з `~/.openclaw` (credentials, sessions, tokens або encrypted secrets payloads). - Якщо вам потрібне повне відновлення, окремо робіть резервні копії як workspace, так і state directory + **Не** commit-те нічого з `~/.openclaw` (credentials, sessions, tokens або encrypted payload secrets). + Якщо вам потрібне повне відновлення, окремо робіть резервні копії і workspace, і каталогу state (див. питання про міграцію вище). - Документація: [Agent workspace](/uk/concepts/agent-workspace). + Документація: [Workspace агента](/uk/concepts/agent-workspace). - Див. окремий посібник: [Uninstall](/uk/install/uninstall). + Див. окрему інструкцію: [Видалення](/uk/install/uninstall). - - Так. Workspace — це **cwd за замовчуванням** і опора для memory, а не жорстка sandbox. - Відносні шляхи розв’язуються всередині workspace, але абсолютні шляхи можуть отримувати доступ до інших - розташувань на host, якщо sandboxing не ввімкнено. Якщо вам потрібна ізоляція, використовуйте - [`agents.defaults.sandbox`](/uk/gateway/sandboxing) або per-agent налаштування sandbox. Якщо ви - хочете, щоб репозиторій був working directory за замовчуванням, вкажіть у цього агента - `workspace` як корінь репозиторію. Репозиторій OpenClaw — це лише вихідний код; тримайте - workspace окремо, якщо тільки ви свідомо не хочете, щоб агент працював усередині нього. + + Так. Workspace — це **cwd за замовчуванням** і якір memory, а не жорстка sandbox. + Відносні шляхи розв’язуються всередині workspace, але абсолютні шляхи можуть звертатися до інших + місць на host, якщо sandboxing не увімкнено. Якщо вам потрібна ізоляція, використовуйте + [`agents.defaults.sandbox`](/uk/gateway/sandboxing) або sandbox-налаштування для окремих agents. Якщо ви + хочете, щоб repo був робочим каталогом за замовчуванням, вкажіть для цього agent + `workspace` як корінь repo. Repo OpenClaw — це лише вихідний код; тримайте + workspace окремо, якщо тільки ви навмисно не хочете, щоб agent працював усередині нього. Приклад (repo як cwd за замовчуванням): @@ -1459,16 +1456,16 @@ x-i18n: - - Станом сесій володіє **gateway host**. Якщо ви працюєте в remote mode, потрібний вам session store знаходиться на віддаленій машині, а не на вашому локальному ноутбуці. Див. [Session management](/uk/concepts/session). + + Станом session володіє **gateway host**. Якщо ви працюєте у віддаленому режимі, потрібне вам сховище сесій знаходиться на віддаленій машині, а не на вашому локальному ноутбуці. Див. [Керування сесіями](/uk/concepts/session). -## Основи config +## Основи конфігурації - - OpenClaw читає необов’язковий **JSON5** config з `$OPENCLAW_CONFIG_PATH` (типово: `~/.openclaw/openclaw.json`): + + OpenClaw читає необов’язкову конфігурацію **JSON5** з `$OPENCLAW_CONFIG_PATH` (типово: `~/.openclaw/openclaw.json`): ``` $OPENCLAW_CONFIG_PATH @@ -1478,11 +1475,11 @@ x-i18n: - - Non-loopback binds **вимагають коректного gateway auth path**. На практиці це означає: + + Bind-и без loopback **вимагають валідного шляху auth для gateway**. На практиці це означає: - - shared-secret auth: токен або пароль - - `gateway.auth.mode: "trusted-proxy"` за правильно налаштованим non-loopback identity-aware reverse proxy + - auth через shared secret: токен або пароль + - `gateway.auth.mode: "trusted-proxy"` за правильно налаштованим identity-aware reverse proxy без loopback ```json5 { @@ -1499,31 +1496,31 @@ x-i18n: Примітки: - `gateway.remote.token` / `.password` самі по собі **не** вмикають auth локального gateway. - - Локальні шляхи виклику можуть використовувати `gateway.remote.*` як fallback лише тоді, коли `gateway.auth.*` не задано. - - Для auth паролем задайте `gateway.auth.mode: "password"` плюс `gateway.auth.password` (або `OPENCLAW_GATEWAY_PASSWORD`). - - Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не може бути розв’язано, розв’язання завершується в закритий спосіб (жоден remote fallback не маскує це). - - Конфігурації Control UI зі shared-secret автентифікуються через `connect.params.auth.token` або `connect.params.auth.password` (зберігаються в налаштуваннях app/UI). Режими з ідентичністю, такі як Tailscale Serve або `trusted-proxy`, натомість використовують request headers. Уникайте розміщення shared secrets в URL. - - З `gateway.auth.mode: "trusted-proxy"` reverse proxies через loopback на тому ж host **не** задовольняють trusted-proxy auth. Trusted proxy має бути налаштованим non-loopback source. + - Локальні шляхи виклику можуть використовувати `gateway.remote.*` як fallback лише коли `gateway.auth.*` не задано. + - Для auth через пароль замість цього встановіть `gateway.auth.mode: "password"` плюс `gateway.auth.password` (або `OPENCLAW_GATEWAY_PASSWORD`). + - Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і його неможливо визначити, визначення завершується fail closed (без маскування через remote fallback). + - Налаштування shared-secret у Control UI автентифікуються через `connect.params.auth.token` або `connect.params.auth.password` (зберігаються в налаштуваннях app/UI). Режими з ідентичністю, як-от Tailscale Serve або `trusted-proxy`, натомість використовують заголовки запиту. Уникайте розміщення shared secrets у URL. + - З `gateway.auth.mode: "trusted-proxy"` same-host reverse proxy через loopback все одно **не** задовольняє auth trusted-proxy. Trusted proxy має бути налаштованим джерелом без loopback. - OpenClaw за замовчуванням вимагає gateway auth, включно з loopback. У звичайному стандартному шляху це означає auth токеном: якщо явний auth path не налаштовано, запуск gateway переходить у режим токена й автоматично генерує його, зберігаючи в `gateway.auth.token`, тож **локальні WS clients мають автентифікуватися**. Це блокує інші локальні процеси від виклику Gateway. + OpenClaw примусово вимагає auth для gateway за замовчуванням, включно з loopback. У звичайному сценарії за замовчуванням це означає auth через токен: якщо не налаштовано явний шлях auth, запуск gateway переходить у режим токена і автоматично генерує його, зберігаючи в `gateway.auth.token`, тому **локальні WS-клієнти мають автентифікуватися**. Це блокує інші локальні процеси від виклику Gateway. - Якщо ви віддаєте перевагу іншому auth path, ви можете явно вибрати режим пароля (або, для non-loopback identity-aware reverse proxies, `trusted-proxy`). Якщо ви **справді** хочете відкритий loopback, явно задайте `gateway.auth.mode: "none"` у config. Doctor може будь-коли згенерувати токен: `openclaw doctor --generate-gateway-token`. + Якщо ви віддаєте перевагу іншому шляху auth, ви можете явно вибрати режим пароля (або, для identity-aware reverse proxy без loopback, `trusted-proxy`). Якщо ви **справді** хочете відкритий loopback, явно встановіть `gateway.auth.mode: "none"` у своїй config. Doctor може згенерувати токен у будь-який момент: `openclaw doctor --generate-gateway-token`. - - Gateway відстежує config і підтримує hot-reload: + + Gateway стежить за config і підтримує hot-reload: - - `gateway.reload.mode: "hybrid"` (типово): hot-apply для безпечних змін, restart для критичних - - Також підтримуються `hot`, `restart`, `off` + - `gateway.reload.mode: "hybrid"` (за замовчуванням): безпечні зміни застосовуються hot, критичні — через перезапуск + - також підтримуються `hot`, `restart`, `off` - - Установіть `cli.banner.taglineMode` в config: + + Встановіть `cli.banner.taglineMode` у config: ```json5 { @@ -1535,23 +1532,23 @@ x-i18n: } ``` - - `off`: приховує текст tagline, але залишає рядок із заголовком/версією banner. - - `default`: завжди використовує `All your chats, one OpenClaw.`. - - `random`: ротація кумедних/сезонних tagline (поведінка за замовчуванням). - - Якщо ви хочете повністю прибрати banner, задайте env `OPENCLAW_HIDE_BANNER=1`. + - `off`: приховує текст слогана, але зберігає рядок із назвою/версією banner. + - `default`: щоразу використовує `All your chats, one OpenClaw.`. + - `random`: змінні кумедні/сезонні слогани (поведінка за замовчуванням). + - Якщо ви не хочете banner взагалі, встановіть env `OPENCLAW_HIDE_BANNER=1`. - `web_fetch` працює без API key. `web_search` залежить від вибраного - provider: + `web_fetch` працює без API-ключа. `web_search` залежить від вибраного + провайдера: - - Провайдери з API, такі як Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity і Tavily, потребують звичайного налаштування API key. - - Ollama Web Search не потребує ключа, але використовує налаштований Ollama host і вимагає `ollama signin`. - - DuckDuckGo не потребує ключа, але це неофіційна HTML-based інтеграція. + - Провайдери з API, такі як Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Perplexity і Tavily, потребують звичайного налаштування API-ключа. + - Ollama Web Search не потребує ключа, але використовує налаштований host Ollama і вимагає `ollama signin`. + - DuckDuckGo не потребує ключа, але це неофіційна інтеграція на основі HTML. - SearXNG не потребує ключа / може бути self-hosted; налаштуйте `SEARXNG_BASE_URL` або `plugins.entries.searxng.config.webSearch.baseUrl`. - **Рекомендовано:** виконайте `openclaw configure --section web` і виберіть provider. + **Рекомендовано:** виконайте `openclaw configure --section web` і виберіть провайдера. Альтернативи через environment: - Brave: `BRAVE_API_KEY` @@ -1587,66 +1584,66 @@ x-i18n: }, fetch: { enabled: true, - provider: "firecrawl", // необов’язково; пропустіть для auto-detect + provider: "firecrawl", // optional; omit for auto-detect }, }, }, } ``` - Конфігурація web-search для конкретного provider тепер живе в `plugins.entries..config.webSearch.*`. - Застарілі шляхи provider у `tools.web.search.*` тимчасово все ще завантажуються для сумісності, але не повинні використовуватися в нових configs. - Конфігурація fallback web-fetch для Firecrawl живе в `plugins.entries.firecrawl.config.webFetch.*`. + Специфічна для провайдера конфігурація web-search тепер живе в `plugins.entries..config.webSearch.*`. + Legacy-шляхи провайдера `tools.web.search.*` все ще тимчасово завантажуються для сумісності, але їх не слід використовувати в нових config. + Конфігурація fallback для web-fetch Firecrawl живе в `plugins.entries.firecrawl.config.webFetch.*`. Примітки: - - Якщо ви використовуєте allowlists, додайте `web_search`/`web_fetch`/`x_search` або `group:web`. - - `web_fetch` увімкнено за замовчуванням (якщо його явно не вимкнути). - - Якщо `tools.web.fetch.provider` пропущено, OpenClaw автоматично визначає першого готового fallback provider для fetch з доступних credentials. Наразі bundled provider — Firecrawl. - - Демони читають env vars з `~/.openclaw/.env` (або з середовища сервісу). + - Якщо ви використовуєте allowlist, додайте `web_search`/`web_fetch`/`x_search` або `group:web`. + - `web_fetch` увімкнено за замовчуванням (якщо його явно не вимкнено). + - Якщо `tools.web.fetch.provider` пропущено, OpenClaw автоматично визначає першого готового fallback-провайдера fetch на основі доступних credentials. Зараз bundled-провайдер — це Firecrawl. + - Демони читають env vars із `~/.openclaw/.env` (або з environment сервісу). - Документація: [Web tools](/tools/web). + Документація: [Web tools](/uk/tools/web). - - `config.apply` замінює **весь config**. Якщо ви надсилаєте частковий об’єкт, усе + + `config.apply` замінює **всю конфігурацію повністю**. Якщо ви надсилаєте частковий об’єкт, усе інше видаляється. Відновлення: - - Відновіть із резервної копії (git або збережений `~/.openclaw/openclaw.json`). - - Якщо резервної копії немає, повторно запустіть `openclaw doctor` і заново налаштуйте channels/models. - - Якщо це стало несподіванкою, створіть bug report і додайте ваш останній відомий config або будь-яку резервну копію. - - Локальний coding agent часто може відновити робочий config з логів або історії. + - Відновіть із резервної копії (git або скопійований `~/.openclaw/openclaw.json`). + - Якщо резервної копії немає, знову запустіть `openclaw doctor` і переналаштуйте channels/models. + - Якщо це сталося неочікувано, створіть bug-report і додайте вашу останню відому config або будь-яку резервну копію. + - Локальний coding agent часто може відновити робочу config з логів або history. Як уникнути: - Використовуйте `openclaw config set` для невеликих змін. - Використовуйте `openclaw configure` для інтерактивного редагування. - - Спочатку використовуйте `config.schema.lookup`, якщо ви не впевнені щодо точного шляху або форми поля; він повертає shallow schema node плюс підсумки безпосередніх дочірніх елементів для drill-down. + - Використовуйте `config.schema.lookup` спочатку, коли не впевнені в точному path або формі поля; він повертає вузол shallow schema плюс короткі підсумки безпосередніх дочірніх елементів для подальшого заглиблення. - Використовуйте `config.patch` для часткових RPC-редагувань; залишайте `config.apply` лише для повної заміни config. - - Якщо ви використовуєте owner-only інструмент `gateway` із запуску агента, він усе одно відхилятиме записи до `tools.exec.ask` / `tools.exec.security` (включно із застарілими aliases `tools.bash.*`, які нормалізуються до тих самих захищених exec paths). + - Якщо ви використовуєте owner-only інструмент `gateway` із запуску agent, він усе одно відхилятиме записи в `tools.exec.ask` / `tools.exec.security` (включно з legacy-аліасами `tools.bash.*`, які нормалізуються до тих самих захищених exec-шляхів). Документація: [Config](/cli/config), [Configure](/cli/configure), [Doctor](/uk/gateway/doctor). - Поширений шаблон — **один Gateway** (наприклад Raspberry Pi) плюс **nodes** і **agents**: + Поширений шаблон — **один Gateway** (наприклад, Raspberry Pi) плюс **nodes** і **agents**: - - **Gateway (центральний):** володіє channels (Signal/WhatsApp), маршрутизацією та sessions. - - **Nodes (пристрої):** Macs/iOS/Android підключаються як периферія й надають локальні tools (`system.run`, `canvas`, `camera`). - - **Agents (workers):** окремі brains/workspaces для спеціальних ролей (наприклад, «Hetzner ops», «Personal data»). - - **Sub-agents:** запускайте фонову роботу з головного агента, коли потрібен паралелізм. - - **TUI:** підключайтеся до Gateway і перемикайте agents/sessions. + - **Gateway (центральний):** володіє channels (Signal/WhatsApp), routing і sessions. + - **Nodes (пристрої):** Macs/iOS/Android підключаються як периферія й відкривають локальні tools (`system.run`, `canvas`, `camera`). + - **Agents (workers):** окремі мозки/workspaces для спеціальних ролей (наприклад, "Hetzner ops", "Personal data"). + - **Sub-agents:** породжують фонову роботу з main agent, коли потрібен паралелізм. + - **TUI:** підключається до Gateway і перемикає agents/sessions. - Документація: [Nodes](/uk/nodes), [Remote access](/uk/gateway/remote), [Multi-Agent Routing](/uk/concepts/multi-agent), [Sub-agents](/tools/subagents), [TUI](/web/tui). + Документація: [Nodes](/uk/nodes), [Віддалений доступ](/uk/gateway/remote), [Multi-Agent Routing](/uk/concepts/multi-agent), [Sub-agents](/uk/tools/subagents), [TUI](/web/tui). - - Так. Це параметр config: + + Так. Це параметр конфігурації: ```json5 { @@ -1659,46 +1656,46 @@ x-i18n: } ``` - За замовчуванням — `false` (headful). Headless частіше викликає anti-bot перевірки на деяких сайтах. Див. [Browser](/tools/browser). + За замовчуванням `false` (із вікном). Headless частіше викликає anti-bot перевірки на деяких сайтах. Див. [Браузер](/uk/tools/browser). - Headless використовує **той самий Chromium engine** і працює для більшості сценаріїв automation (форми, кліки, скрейпінг, логіни). Основні відмінності: + Headless використовує **той самий Chromium engine** і працює для більшості automation-сценаріїв (форми, кліки, scraping, logins). Основні відмінності: - - Немає видимого вікна браузера (використовуйте скриншоти, якщо потрібна візуалізація). - - Деякі сайти суворіше ставляться до automation у headless режимі (CAPTCHA, anti-bot). + - Немає видимого вікна браузера (використовуйте скриншоти, якщо вам потрібні візуальні підтвердження). + - Деякі сайти суворіше ставляться до automation у headless-режимі (CAPTCHA, anti-bot). Наприклад, X/Twitter часто блокує headless sessions. - Задайте `browser.executablePath` як шлях до вашого binary Brave (або будь-якого Chromium-based browser) і перезапустіть Gateway. - Повні приклади config див. в [Browser](/tools/browser#use-brave-or-another-chromium-based-browser). + Встановіть `browser.executablePath` на ваш бінарник Brave (або будь-який браузер на базі Chromium) і перезапустіть Gateway. + Повні приклади конфігурації див. у [Браузер](/uk/tools/browser#use-brave-or-another-chromium-based-browser). -## Віддалені gateways і nodes +## Віддалені gateway і nodes - Повідомлення Telegram обробляються **gateway**. Gateway запускає агента і - лише потім викликає nodes через **Gateway WebSocket**, коли потрібен інструмент node: + Повідомлення Telegram обробляються **gateway**. Gateway запускає agent і + лише потім викликає nodes через **Gateway WebSocket**, коли потрібен node tool: Telegram → Gateway → Agent → `node.*` → Node → Gateway → Telegram - Nodes не бачать вхідний traffic провайдера; вони отримують лише node RPC calls. + Nodes не бачать вхідний трафік провайдерів; вони отримують лише виклики node RPC. - - Коротка відповідь: **під’єднайте свій комп’ютер як node**. Gateway працює деінде, але він може + + Коротка відповідь: **підключіть свій комп’ютер як node**. Gateway працює деінде, але він може викликати інструменти `node.*` (screen, camera, system) на вашій локальній машині через Gateway WebSocket. Типове налаштування: - 1. Запустіть Gateway на always-on host (VPS/home server). - 2. Розмістіть gateway host і ваш комп’ютер в одній tailnet. - 3. Переконайтеся, що Gateway WS доступний (tailnet bind або SSH tunnel). - 4. Відкрийте застосунок macOS локально й підключіться в режимі **Remote over SSH** (або напряму через tailnet), - щоб він міг зареєструватися як node. + 1. Запустіть Gateway на host, який завжди увімкнений (VPS/home server). + 2. Додайте Gateway host і ваш комп’ютер в один tailnet. + 3. Переконайтеся, що Gateway WS доступний (bind tailnet або SSH tunnel). + 4. Відкрийте macOS-app локально і підключіться в режимі **Remote over SSH** (або напряму через tailnet), + щоб вона могла зареєструватися як node. 5. Підтвердьте node на Gateway: ```bash @@ -1706,107 +1703,107 @@ x-i18n: openclaw devices approve ``` - Окремий TCP bridge не потрібен; nodes підключаються через Gateway WebSocket. + Окремий TCP-bridge не потрібен; nodes підключаються через Gateway WebSocket. - Нагадування про безпеку: pairing macOS node дозволяє `system.run` на цій машині. Підключайте - лише ті пристрої, яким довіряєте, і перегляньте [Security](/uk/gateway/security). + Нагадування щодо безпеки: підключення macOS node дозволяє `system.run` на цій машині. Підключайте + лише пристрої, яким довіряєте, і перегляньте [Безпека](/uk/gateway/security). - Документація: [Nodes](/uk/nodes), [Gateway protocol](/uk/gateway/protocol), [macOS remote mode](/uk/platforms/mac/remote), [Security](/uk/gateway/security). + Документація: [Nodes](/uk/nodes), [Протокол Gateway](/uk/gateway/protocol), [віддалений режим macOS](/uk/platforms/mac/remote), [Безпека](/uk/gateway/security). - + Перевірте базові речі: - Gateway працює: `openclaw gateway status` - - Стан Gateway: `openclaw status` - - Стан channels: `openclaw channels status` + - Health Gateway: `openclaw status` + - Health каналів: `openclaw channels status` - Потім перевірте auth і маршрутизацію: + Потім перевірте auth і routing: - Якщо ви використовуєте Tailscale Serve, переконайтеся, що `gateway.auth.allowTailscale` налаштовано правильно. - - Якщо підключаєтеся через SSH tunnel, переконайтеся, що локальний tunnel піднято й він спрямований на правильний порт. - - Переконайтеся, що ваші allowlists (DM або group) містять ваш account. + - Якщо підключаєтеся через SSH tunnel, підтвердьте, що локальний tunnel активний і вказує на правильний порт. + - Підтвердьте, що ваші allowlist-и (DM або group) включають ваш обліковий запис. - Документація: [Tailscale](/uk/gateway/tailscale), [Remote access](/uk/gateway/remote), [Channels](/uk/channels). + Документація: [Tailscale](/uk/gateway/tailscale), [Віддалений доступ](/uk/gateway/remote), [Канали](/uk/channels). - - Так. Вбудованого bridge «bot-to-bot» немає, але це можна організувати кількома + + Так. Вбудованого bridge "bot-to-bot" немає, але це можна з’єднати кількома надійними способами: - **Найпростіше:** використовуйте звичайний chat channel, до якого мають доступ обидва боти (Telegram/Slack/WhatsApp). - Нехай Bot A надсилає повідомлення Bot B, а потім Bot B відповідає як зазвичай. + **Найпростіше:** використовуйте звичайний chat-канал, до якого мають доступ обидва боти (Telegram/Slack/WhatsApp). + Нехай Bot A надсилає повідомлення Bot B, а далі Bot B відповідає як зазвичай. - **CLI bridge (універсальний):** запустіть скрипт, який викликає інший Gateway через - `openclaw agent --message ... --deliver`, націлившись на чат, де слухає інший бот. - Якщо один бот працює на віддаленому VPS, націльте свій CLI на той віддалений Gateway - через SSH/Tailscale (див. [Remote access](/uk/gateway/remote)). + **CLI bridge (універсально):** запустіть скрипт, який викликає інший Gateway через + `openclaw agent --message ... --deliver`, націлюючись на чат, де інший бот + слухає. Якщо один бот працює на віддаленому VPS, націльте ваш CLI на той віддалений Gateway + через SSH/Tailscale (див. [Віддалений доступ](/uk/gateway/remote)). - Приклад шаблону (запускається з машини, яка може дістатися до цільового Gateway): + Приклад шаблону (запускайте на машині, яка може дістатися до цільового Gateway): ```bash openclaw agent --message "Hello from local bot" --deliver --channel telegram --reply-to ``` - Порада: додайте захист, щоб два боти не зациклилися безкінечно (лише згадування, channel - allowlists або правило «не відповідати на повідомлення ботів»). + Порада: додайте запобіжник, щоб два боти не зациклилися безкінечно (лише згадування, channel + allowlists або правило "не відповідати на повідомлення ботів"). - Документація: [Remote access](/uk/gateway/remote), [Agent CLI](/cli/agent), [Agent send](/tools/agent-send). + Документація: [Віддалений доступ](/uk/gateway/remote), [Agent CLI](/cli/agent), [Agent send](/uk/tools/agent-send). - Ні. Один Gateway може розміщувати кількох agents, кожен зі своїм workspace, model defaults - і маршрутизацією. Це нормальне налаштування, і воно набагато дешевше та простіше, ніж запускати - один VPS на агента. + Ні. Один Gateway може хостити кілька agents, кожен із власним workspace, моделями за замовчуванням + і routing. Це стандартне налаштування, і воно значно дешевше та простіше, ніж запускати + один VPS на agent. Використовуйте окремі VPS лише тоді, коли вам потрібна жорстка ізоляція (межі безпеки) або дуже - різні configs, якими ви не хочете ділитися. В іншому разі зберігайте один Gateway і - використовуйте кількох agents або sub-agents. + різні config, якими ви не хочете ділитися. Інакше тримайте один Gateway і + використовуйте кілька agents або sub-agents. - + Так — nodes є first-class способом доступу до вашого ноутбука з віддаленого Gateway, і вони - відкривають більше, ніж просто shell access. Gateway працює на macOS/Linux (Windows через WSL2) і є - легким (достатньо невеликого VPS або машини рівня Raspberry Pi; 4 GB RAM цілком вистачає), тож поширений - сценарій — always-on host плюс ваш ноутбук як node. + дають більше, ніж просто доступ до shell. Gateway працює на macOS/Linux (Windows через WSL2) і є + легким (достатньо невеликого VPS або box рівня Raspberry Pi; 4 GB RAM більш ніж достатньо), тому поширене + налаштування — це host, який завжди увімкнений, плюс ваш ноутбук як node. - - **Не потрібен вхідний SSH.** Nodes самі підключаються до Gateway WebSocket і використовують device pairing. - - **Безпечніший контроль виконання.** `system.run` на цьому ноутбуці захищений allowlists/approvals node. - - **Більше device tools.** Nodes надають `canvas`, `camera` і `screen` на додачу до `system.run`. - - **Локальна browser automation.** Тримайте Gateway на VPS, але запускайте Chrome локально через node host на ноутбуці або під’єднуйтеся до локального Chrome на host через Chrome MCP. + - **Не потрібен вхідний SSH.** Nodes самі підключаються до Gateway WebSocket і використовують pairing пристрою. + - **Безпечніший контроль виконання.** `system.run` контролюється allowlist-ами/approval на node на цьому ноутбуці. + - **Більше інструментів пристрою.** Nodes відкривають `canvas`, `camera` і `screen` на додачу до `system.run`. + - **Локальна автоматизація браузера.** Тримайте Gateway на VPS, але запускайте Chrome локально через node host на ноутбуці або під’єднуйтеся до локального Chrome на host через Chrome MCP. - SSH підходить для разового shell access, але nodes простіші для постійних workflows агентів і - automation пристроїв. + SSH підходить для епізодичного доступу до shell, але nodes простіші для постійних workflow агентів і + автоматизації пристроїв. - Документація: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes), [Browser](/tools/browser). + Документація: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes), [Браузер](/uk/tools/browser). - - Ні. На одному host зазвичай має працювати лише **один gateway**, якщо ви навмисно не запускаєте ізольовані профілі (див. [Multiple gateways](/uk/gateway/multiple-gateways)). Nodes — це периферія, яка підключається - до gateway (nodes iOS/Android або macOS у режимі "node mode" в menubar app). Для headless node + + Ні. Лише **один gateway** має працювати на host, якщо тільки ви навмисно не запускаєте ізольовані profiles (див. [Кілька gateway](/uk/gateway/multiple-gateways)). Nodes — це периферія, яка підключається + до gateway (nodes iOS/Android, або macOS "node mode" у menubar app). Для headless node hosts і керування через CLI див. [Node host CLI](/cli/node). - Для змін `gateway`, `discovery` і `canvasHost` потрібен повний restart. + Повний перезапуск потрібен для змін `gateway`, `discovery` і `canvasHost`. - + Так. - - `config.schema.lookup`: перевірити одне config subtree з його shallow schema node, відповідною UI hint і підсумками безпосередніх дочірніх елементів перед записом + - `config.schema.lookup`: перевірити одне піддерево config разом із його вузлом shallow schema, відповідною UI-підказкою та короткими підсумками безпосередніх дочірніх елементів перед записом - `config.get`: отримати поточний snapshot + hash - `config.patch`: безпечне часткове оновлення (рекомендовано для більшості RPC-редагувань) - - `config.apply`: перевірити + замінити повний config, а потім перезапустити - - Owner-only runtime tool `gateway` усе ще відмовляється переписувати `tools.exec.ask` / `tools.exec.security`; застарілі aliases `tools.bash.*` нормалізуються до тих самих захищених exec paths + - `config.apply`: перевірити + повністю замінити config, потім перезапустити + - Owner-only runtime tool `gateway` і далі відмовляється переписувати `tools.exec.ask` / `tools.exec.security`; legacy-аліаси `tools.bash.*` нормалізуються до тих самих захищених exec-шляхів - + ```json5 { agents: { defaults: { workspace: "~/.openclaw/workspace" } }, @@ -1814,25 +1811,25 @@ x-i18n: } ``` - Це задає ваш workspace і обмежує, хто може активувати бота. + Це задає ваш workspace і обмежує, хто може запускати бота. Мінімальні кроки: - 1. **Встановіть + увійдіть на VPS** + 1. **Встановити + увійти на VPS** ```bash curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up ``` - 2. **Встановіть + увійдіть на Mac** - - Скористайтеся застосунком Tailscale і увійдіть у ту саму tailnet. - 3. **Увімкніть MagicDNS (рекомендовано)** - - У Tailscale admin console увімкніть MagicDNS, щоб VPS мав стабільне ім’я. - 4. **Використовуйте hostname tailnet** + 2. **Встановити + увійти на Mac** + - Використайте застосунок Tailscale і ввійдіть у той самий tailnet. + 3. **Увімкнути MagicDNS (рекомендовано)** + - У консолі адміністратора Tailscale увімкніть MagicDNS, щоб VPS мав стабільне ім’я. + 4. **Використовувати hostname tailnet** - SSH: `ssh user@your-vps.tailnet-xxxx.ts.net` - Gateway WS: `ws://your-vps.tailnet-xxxx.ts.net:18789` @@ -1847,13 +1844,13 @@ x-i18n: - Serve відкриває **Gateway Control UI + WS**. Nodes підключаються через ту саму endpoint Gateway WS. + Serve відкриває **Gateway Control UI + WS**. Nodes підключаються через той самий endpoint Gateway WS. Рекомендоване налаштування: - 1. **Переконайтеся, що VPS + Mac знаходяться в одній tailnet**. - 2. **Використовуйте застосунок macOS у Remote mode** (SSH target може бути hostname tailnet). - Застосунок прокине port gateway і підключиться як node. + 1. **Переконайтеся, що VPS + Mac перебувають в одному tailnet**. + 2. **Використовуйте macOS-app у Remote mode** (SSH target може бути hostname tailnet). + App зробить tunnel порту Gateway і підключиться як node. 3. **Підтвердьте node** на gateway: ```bash @@ -1861,18 +1858,18 @@ x-i18n: openclaw devices approve ``` - Документація: [Gateway protocol](/uk/gateway/protocol), [Discovery](/uk/gateway/discovery), [macOS remote mode](/uk/platforms/mac/remote). + Документація: [Протокол Gateway](/uk/gateway/protocol), [Виявлення](/uk/gateway/discovery), [віддалений режим macOS](/uk/platforms/mac/remote). - + Якщо вам потрібні лише **локальні tools** (screen/camera/exec) на другому ноутбуці, додайте його як - **node**. Це зберігає один Gateway і уникає дублювання config. Локальні node tools - наразі доступні лише на macOS, але ми плануємо розширити їх на інші ОС. + **node**. Це дозволяє залишити один Gateway і уникнути дублювання config. Локальні node tools + наразі доступні лише на macOS, але ми плануємо поширити їх і на інші ОС. Встановлюйте другий Gateway лише тоді, коли вам потрібна **жорстка ізоляція** або два повністю окремі боти. - Документація: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes), [Multiple gateways](/uk/gateway/multiple-gateways). + Документація: [Nodes](/uk/nodes), [Nodes CLI](/cli/nodes), [Кілька gateway](/uk/gateway/multiple-gateways). @@ -1881,14 +1878,14 @@ x-i18n: - OpenClaw читає env vars з батьківського процесу (shell, launchd/systemd, CI тощо) і додатково завантажує: + OpenClaw читає env vars із батьківського процесу (shell, launchd/systemd, CI тощо) і додатково завантажує: - - `.env` з поточного working directory - - глобальний fallback `.env` з `~/.openclaw/.env` (тобто `$OPENCLAW_STATE_DIR/.env`) + - `.env` із поточного робочого каталогу + - глобальний fallback `.env` із `~/.openclaw/.env` (тобто `$OPENCLAW_STATE_DIR/.env`) - Жоден із `.env` files не перевизначає вже наявні env vars. + Жоден із `.env` файлів не перевизначає вже наявні env vars. - Ви також можете визначати inline env vars у config (застосовуються лише якщо вони відсутні в process env): + Ви також можете визначити inline env vars у config (застосовуються лише якщо відсутні в process env): ```json5 { @@ -1899,15 +1896,15 @@ x-i18n: } ``` - Повний порядок пріоритету і джерела див. у [/environment](/uk/help/environment). + Див. [/environment](/uk/help/environment) для повного порядку пріоритетів і джерел. - + Два поширені виправлення: - 1. Помістіть відсутні ключі в `~/.openclaw/.env`, щоб вони підхоплювалися, навіть коли сервіс не успадковує env вашої оболонки. - 2. Увімкніть import shell env (добровільна зручність): + 1. Помістіть відсутні ключі в `~/.openclaw/.env`, щоб вони підхоплювалися, навіть коли сервіс не успадковує env вашої shell. + 2. Увімкніть імпорт shell env (зручно, але лише за бажанням): ```json5 { @@ -1920,18 +1917,18 @@ x-i18n: } ``` - Це запускає вашу login shell і імпортує лише очікувані відсутні ключі (ніколи не перевизначає). Еквіваленти env vars: + Це запускає вашу login shell і імпортує лише відсутні очікувані ключі (ніколи не перевизначає). Еквіваленти env var: `OPENCLAW_LOAD_SHELL_ENV=1`, `OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000`. - - `openclaw models status` повідомляє, чи увімкнено **shell env import**. "Shell env: off" - **не** означає, що ваших env vars немає — це лише означає, що OpenClaw не завантажуватиме + + `openclaw models status` повідомляє, чи увімкнено **імпорт shell env**. "Shell env: off" + **не** означає, що env vars відсутні — це лише означає, що OpenClaw не завантажуватиме вашу login shell автоматично. Якщо Gateway працює як сервіс (launchd/systemd), він не успадковує ваше shell - environment. Виправте це одним із таких способів: + environment. Виправлення: зробіть одне з цього: 1. Помістіть токен у `~/.openclaw/.env`: @@ -1939,8 +1936,8 @@ x-i18n: COPILOT_GITHUB_TOKEN=... ``` - 2. Або увімкніть import shell (`env.shellEnv.enabled: true`). - 3. Або додайте його в блок `env` вашого config (застосовується лише якщо відсутній). + 2. Або увімкніть імпорт shell (`env.shellEnv.enabled: true`). + 3. Або додайте його до блоку `env` у config (застосовується лише якщо відсутній). Потім перезапустіть gateway і перевірте знову: @@ -1948,7 +1945,7 @@ x-i18n: openclaw models status ``` - Токени Copilot читаються з `COPILOT_GITHUB_TOKEN` (також `GH_TOKEN` / `GITHUB_TOKEN`). + Copilot-токени читаються з `COPILOT_GITHUB_TOKEN` (також `GH_TOKEN` / `GITHUB_TOKEN`). Див. [/concepts/model-providers](/uk/concepts/model-providers) і [/environment](/uk/help/environment). @@ -1958,14 +1955,14 @@ x-i18n: - Надішліть `/new` або `/reset` як окреме повідомлення. Див. [Session management](/uk/concepts/session). + Надішліть `/new` або `/reset` окремим повідомленням. Див. [Керування сесіями](/uk/concepts/session). - Сесії можуть завершуватися після `session.idleMinutes`, але це **вимкнено за замовчуванням** (типове значення **0**). - Задайте додатне значення, щоб увімкнути завершення через бездіяльність. Коли це ввімкнено, **наступне** - повідомлення після періоду бездіяльності починає новий session id для цього chat key. - Це не видаляє transcript — просто починає нову session. + Сесії можуть завершуватися після `session.idleMinutes`, але це **вимкнено за замовчуванням** (типово **0**). + Встановіть додатне значення, щоб увімкнути завершення через простій. Коли це увімкнено, **наступне** + повідомлення після періоду простою створює новий session id для цього ключа чату. + Це не видаляє транскрипти — лише починає нову session. ```json5 { @@ -1977,30 +1974,30 @@ x-i18n: - + Так, через **multi-agent routing** і **sub-agents**. Ви можете створити одного координатора - й кількох worker-агентів зі своїми workspace і models. + agent і кількох робочих agents із власними workspaces і моделями. - Втім, найкраще сприймати це як **цікавий експеримент**. Це витрачає багато токенів і часто - менш ефективно, ніж використання одного бота з окремими сесіями. Типова модель, яку - ми уявляємо, — один бот, із яким ви спілкуєтеся, і різні сесії для паралельної роботи. Цей - бот також може запускати sub-agents за потреби. + Водночас це краще сприймати як **цікавий експеримент**. Це витрачає багато токенів і часто + менш ефективно, ніж використання одного бота з окремими сесіями. Типова модель, яку ми + уявляємо, — один бот, з яким ви говорите, але з різними сесіями для паралельної роботи. Цей + бот також може породжувати sub-agents за потреби. - Документація: [Multi-agent routing](/uk/concepts/multi-agent), [Sub-agents](/tools/subagents), [Agents CLI](/cli/agents). + Документація: [Multi-agent routing](/uk/concepts/multi-agent), [Sub-agents](/uk/tools/subagents), [Agents CLI](/cli/agents). - - Контекст сесії обмежений вікном моделі. Довгі чати, великі tool outputs або багато - файлів можуть запустити compaction або truncation. + + Контекст сесії обмежений вікном моделі. Довгі чати, великі виводи tools або багато + файлів можуть викликати compaction або truncation. Що допомагає: - Попросіть бота підсумувати поточний стан і записати його у файл. - - Використовуйте `/compact` перед довгими задачами й `/new` при зміні теми. - - Тримайте важливий контекст у workspace й просіть бота зчитати його назад. - - Використовуйте sub-agents для довгої або паралельної роботи, щоб основний чат залишався меншим. - - Виберіть модель із більшим context window, якщо це трапляється часто. + - Використовуйте `/compact` перед довгими задачами і `/new` під час зміни тем. + - Тримайте важливий context у workspace і просіть бота перечитати його. + - Використовуйте sub-agents для довгих або паралельних робіт, щоб основний чат лишався меншим. + - Обирайте модель із більшим вікном контексту, якщо це трапляється часто. @@ -2011,7 +2008,7 @@ x-i18n: openclaw reset ``` - Неінтерактивний повний reset: + Неінтерактивне повне скидання: ```bash openclaw reset --scope full --yes --non-interactive @@ -2025,76 +2022,76 @@ x-i18n: Примітки: - - Onboarding також пропонує **Reset**, якщо бачить наявний config. Див. [Onboarding (CLI)](/start/wizard). - - Якщо ви використовували profiles (`--profile` / `OPENCLAW_PROFILE`), скиньте кожен state dir (типово це `~/.openclaw-`). + - Onboarding також пропонує **Reset**, якщо бачить наявну config. Див. [Onboarding (CLI)](/uk/start/wizard). + - Якщо ви використовували profiles (`--profile` / `OPENCLAW_PROFILE`), скидайте кожен каталог state окремо (типово це `~/.openclaw-`). - Dev reset: `openclaw gateway --dev --reset` (лише для dev; стирає dev config + credentials + sessions + workspace). - Використовуйте один із цих варіантів: + Використайте один із варіантів: - - **Compact** (зберігає розмову, але підсумовує старіші turns): + - **Стиснення** (зберігає розмову, але підсумовує старіші ходи): ``` /compact ``` - або `/compact `, щоб спрямувати summary. + або `/compact `, щоб спрямувати підсумок. - - **Reset** (новий session ID для того самого chat key): + - **Скидання** (новий session ID для того самого ключа чату): ``` /new /reset ``` - Якщо це трапляється постійно: + Якщо це повторюється: - - Увімкніть або налаштуйте **session pruning** (`agents.defaults.contextPruning`), щоб обрізати старий tool output. - - Використовуйте модель із більшим context window. + - Увімкніть або налаштуйте **обрізання сесій** (`agents.defaults.contextPruning`) для підрізання старого виводу tools. + - Використовуйте модель із більшим вікном контексту. - Документація: [Compaction](/uk/concepts/compaction), [Session pruning](/uk/concepts/session-pruning), [Session management](/uk/concepts/session). + Документація: [Compaction](/uk/concepts/compaction), [Обрізання сесій](/uk/concepts/session-pruning), [Керування сесіями](/uk/concepts/session). Це помилка валідації провайдера: модель видала блок `tool_use` без обов’язкового - `input`. Зазвичай це означає, що history сесії застаріла або пошкоджена (часто після довгих threads - або змін tool/schema). + `input`. Зазвичай це означає, що history сесії застаріла або пошкоджена (часто після довгих thread-ів + або зміни tool/schema). - Виправлення: почніть нову сесію через `/new` (окреме повідомлення). + Виправлення: почніть нову session через `/new` (окремим повідомленням). - Heartbeats за замовчуванням запускаються кожні **30m** (**1h** при використанні OAuth auth). Налаштуйте або вимкніть їх: + За замовчуванням heartbeats запускаються кожні **30m** (**1h** у разі використання OAuth auth). Налаштуйте або вимкніть їх: ```json5 { agents: { defaults: { heartbeat: { - every: "2h", // або "0m", щоб вимкнути + every: "2h", // or "0m" to disable }, }, }, } ``` - Якщо `HEARTBEAT.md` існує, але фактично порожній (лише порожні рядки та markdown - headers на кшталт `# Heading`), OpenClaw пропускає heartbeat run, щоб зекономити API calls. - Якщо файлу немає, heartbeat все одно запускається, а модель вирішує, що робити. + Якщо `HEARTBEAT.md` існує, але фактично порожній (лише пусті рядки й markdown-заголовки + на кшталт `# Heading`), OpenClaw пропускає запуск heartbeat, щоб зекономити API-виклики. + Якщо файл відсутній, heartbeat усе одно запускається, а модель сама вирішує, що робити. - Для per-agent overrides використовуйте `agents.list[].heartbeat`. Документація: [Heartbeat](/uk/gateway/heartbeat). + Override-и для окремих agents використовують `agents.list[].heartbeat`. Документація: [Heartbeat](/uk/gateway/heartbeat). - Ні. OpenClaw працює від **вашого власного account**, тож якщо ви є в групі, OpenClaw може її бачити. - За замовчуванням групові відповіді блокуються, доки ви не дозволите senders (`groupPolicy: "allowlist"`). + Ні. OpenClaw працює з **вашим власним обліковим записом**, тож якщо ви є в групі, OpenClaw може її бачити. + За замовчуванням відповіді в групах заблоковані, доки ви не дозволите відправників (`groupPolicy: "allowlist"`). - Якщо ви хочете, щоб у групі лише **ви** могли активувати відповіді: + Якщо ви хочете, щоб лише **ви** могли запускати відповіді в групі: ```json5 { @@ -2110,7 +2107,7 @@ x-i18n: - Варіант 1 (найшвидший): дивіться логи й надішліть тестове повідомлення в групу: + Варіант 1 (найшвидший): переглядайте логи й надішліть тестове повідомлення в групу: ```bash openclaw logs --follow --json @@ -2119,196 +2116,136 @@ x-i18n: Шукайте `chatId` (або `from`), що закінчується на `@g.us`, наприклад: `1234567890-1234567890@g.us`. - Варіант 2 (якщо вже налаштовано/додано до allowlist): виведіть групи з config: + Варіант 2 (якщо вже налаштовано/є в allowlist): перелічіть групи з config: ```bash openclaw directory groups list --channel whatsapp ``` - Документація: [WhatsApp](/uk/channels/whatsapp), [Directory](/cli/directory), [Logs](/cli/logs). + Документація: [WhatsApp](/uk/channels/whatsapp), [Directory](/cli/directory), [Логи](/cli/logs). - Є дві поширені причини: + Дві типові причини: - - Увімкнено gating за згадуванням (за замовчуванням). Ви маєте @mention бота (або збігтися з `mentionPatterns`). - - Ви налаштували `channels.whatsapp.groups` без `"*"`, і групу не додано до allowlist. + - Увімкнено gating за згадкою (за замовчуванням). Ви повинні @згадати бота (або відповідати `mentionPatterns`). + - Ви налаштували `channels.whatsapp.groups` без `"*"`, і група не входить до allowlist. - Див. [Groups](/uk/channels/groups) і [Group messages](/uk/channels/group-messages). + Див. [Групи](/uk/channels/groups) і [Групові повідомлення](/uk/channels/group-messages). - - Direct chats за замовчуванням згортаються в main session. Groups/channels мають власні session keys, а topics Telegram / threads Discord є окремими сесіями. Див. [Groups](/uk/channels/groups) і [Group messages](/uk/channels/group-messages). + + Direct-чати за замовчуванням згортаються до main session. Groups/channels мають власні session keys, а теми Telegram / thread-и Discord — це окремі sessions. Див. [Групи](/uk/channels/groups) і [Групові повідомлення](/uk/channels/group-messages). - Жорстких обмежень немає. Десятки (навіть сотні) — це нормально, але стежте за: + Жорстких обмежень немає. Десятки (навіть сотні) — це нормально, але слідкуйте за: - - **Зростанням диска:** sessions + transcripts зберігаються в `~/.openclaw/agents//sessions/`. + - **Зростанням диска:** sessions + transcripts живуть у `~/.openclaw/agents//sessions/`. - **Вартістю токенів:** більше agents означає більше одночасного використання моделей. - - **Операційними витратами:** auth profiles, workspaces і channel routing для кожного агента. + - **Операційними накладними витратами:** auth profiles, workspaces і channel routing на рівні agent. Поради: - - Тримайте один **активний** workspace на агента (`agents.defaults.workspace`). - - Очищайте старі sessions (видаляйте JSONL або записи store), якщо диск росте. + - Тримайте один **активний** workspace на agent (`agents.defaults.workspace`). + - Очищайте старі sessions (видаляйте JSONL або записи зі сховища), якщо диск розростається. - Використовуйте `openclaw doctor`, щоб знаходити зайві workspaces і невідповідності profiles. - - Так. Використовуйте **Multi-Agent Routing**, щоб запускати кількох ізольованих agents і маршрутизувати вхідні повідомлення за - channel/account/peer. Slack підтримується як channel і може бути прив’язаний до конкретних agents. + + Так. Використовуйте **Multi-Agent Routing**, щоб запускати кілька ізольованих agents і маршрутизувати вхідні повідомлення за + channel/account/peer. Slack підтримується як канал і може бути прив’язаний до конкретних agents. - Доступ до браузера потужний, але це не «робити все, що може людина» — anti-bot, CAPTCHA та MFA - усе ще можуть блокувати automation. Для найнадійнішого керування браузером використовуйте локальний Chrome MCP на host + Доступ до браузера потужний, але це не "може все, що може людина" — anti-bot, CAPTCHA та MFA все + ще можуть блокувати automation. Для найнадійнішого керування браузером використовуйте локальний Chrome MCP на host, або CDP на машині, яка фактично запускає браузер. - Рекомендоване налаштування: + Найкраща практика налаштування: - - Always-on Gateway host (VPS/Mac mini). - - Один агент на роль (bindings). - - Канал(и) Slack, прив’язані до цих агентів. + - Host Gateway, який завжди увімкнений (VPS/Mac mini). + - Один agent на роль (bindings). + - Канал(и) Slack, прив’язані до цих agents. - Локальний браузер через Chrome MCP або node за потреби. Документація: [Multi-Agent Routing](/uk/concepts/multi-agent), [Slack](/uk/channels/slack), - [Browser](/tools/browser), [Nodes](/uk/nodes). + [Браузер](/uk/tools/browser), [Nodes](/uk/nodes). -## Моделі: значення за замовчуванням, вибір, aliases, перемикання +## Моделі: значення за замовчуванням, вибір, аліаси, перемикання - Default model в OpenClaw — це те, що ви встановили як: + Модель OpenClaw за замовчуванням — це те, що ви встановили в: ``` agents.defaults.model.primary ``` - На моделі посилаються у форматі `provider/model` (приклад: `openai/gpt-5.4`). Якщо ви опускаєте provider, OpenClaw спочатку пробує alias, потім — унікальний configured-provider match для точного model id, і лише потім переходить до configured default provider як застарілого шляху сумісності. Якщо цей provider більше не надає configured default model, OpenClaw переходить до першого configured provider/model замість показу застарілого default від видаленого provider. Утім, вам усе одно слід **явно** задавати `provider/model`. + На моделі посилаються як `provider/model` (приклад: `openai/gpt-5.4`). Якщо ви пропускаєте провайдера, OpenClaw спочатку пробує alias, потім — унікальний збіг налаштованого provider для цього точного model id, і лише після цього відступає до налаштованого провайдера за замовчуванням як до застарілого compatibility-path. Якщо цей provider більше не відкриває налаштовану default model, OpenClaw відступає до першого налаштованого provider/model замість того, щоб показувати застаріле default від видаленого provider. Однак вам усе одно слід **явно** встановлювати `provider/model`. - **Рекомендовано за замовчуванням:** використовуйте найсильнішу модель останнього покоління, доступну у вашому стеку provider. - **Для агентів із увімкненими tools або недовіреним входом:** ставте силу моделі вище за вартість. - **Для рутинного/низькоризикового чату:** використовуйте дешевші fallback models і маршрутизуйте за ролями agent. + **Рекомендовано за замовчуванням:** використовуйте найсильнішу модель останнього покоління, доступну у вашому стеку провайдерів. + **Для агентів із tools або недовіреним вводом:** віддавайте перевагу силі моделі над вартістю. + **Для рутинного/низькоризикового чату:** використовуйте дешевші fallback-моделі й маршрутизуйте за роллю agent. - MiniMax має власну документацію: [MiniMax](/uk/providers/minimax) і - [Local models](/uk/gateway/local-models). + Для MiniMax є окрема документація: [MiniMax](/uk/providers/minimax) і + [Локальні моделі](/uk/gateway/local-models). - Практичне правило: використовуйте **найкращу модель, яку можете собі дозволити** для задач із високими ставками, і дешевшу - модель для рутинного чату або summary. Ви можете маршрутизувати моделі на рівні agent і використовувати sub-agents для - паралелізації довгих задач (кожен sub-agent споживає токени). Див. [Models](/uk/concepts/models) і - [Sub-agents](/tools/subagents). + Загальне правило: використовуйте **найкращу модель, яку можете собі дозволити** для високоризикової роботи, а дешевшу + модель — для рутинного чату або підсумків. Ви можете маршрутизувати моделі по agents і використовувати sub-agents для + паралелізації довгих задач (кожен sub-agent споживає токени). Див. [Моделі](/uk/concepts/models) і + [Sub-agents](/uk/tools/subagents). - Важливе попередження: слабші/надмірно квантизовані моделі більш вразливі до prompt - injection і небезпечної поведінки. Див. [Security](/uk/gateway/security). + Сильне попередження: слабші/надто квантовані моделі вразливіші до prompt + injection і небезпечної поведінки. Див. [Безпека](/uk/gateway/security). - Більше контексту: [Models](/uk/concepts/models). + Більше контексту: [Моделі](/uk/concepts/models). - - Використовуйте **команди моделі** або редагуйте лише поля **model**. Уникайте повної заміни config. + + Використовуйте **команди моделей** або редагуйте лише поля **model**. Уникайте повної заміни config. Безпечні варіанти: - - `/model` у чаті (швидко, для окремої сесії) + - `/model` у чаті (швидко, для однієї session) - `openclaw models set ...` (оновлює лише config моделі) - `openclaw configure --section model` (інтерактивно) - - редагуйте `agents.defaults.model` у `~/.openclaw/openclaw.json` + - редагування `agents.defaults.model` у `~/.openclaw/openclaw.json` - Уникайте `config.apply` з частковим об’єктом, якщо ви не збираєтеся замінювати весь config. - Для RPC-редагувань спочатку перевіряйте через `config.schema.lookup` і надавайте перевагу `config.patch`. Payload lookup дає нормалізований шлях, shallow schema docs/constraints і підсумки безпосередніх дочірніх елементів + Уникайте `config.apply` із частковим об’єктом, якщо ви не маєте наміру замінити всю config. + Для RPC-редагувань спочатку перевіряйте через `config.schema.lookup` і віддавайте перевагу `config.patch`. Payload lookup дає нормалізований path, документи/обмеження shallow schema та короткі підсумки безпосередніх дочірніх елементів. для часткових оновлень. - Якщо ви все ж перезаписали config, відновіть його з резервної копії або повторно запустіть `openclaw doctor` для виправлення. + Якщо ви таки перезаписали config, відновіть її з резервної копії або повторно запустіть `openclaw doctor` для виправлення. - Документація: [Models](/uk/concepts/models), [Configure](/cli/configure), [Config](/cli/config), [Doctor](/uk/gateway/doctor). + Документація: [Моделі](/uk/concepts/models), [Configure](/cli/configure), [Config](/cli/config), [Doctor](/uk/gateway/doctor). - - Так. Ollama — найпростіший шлях для локальних моделей. + + Так. Ollama — найпростіший шлях до локальних моделей. Найшвидше налаштування: 1. Встановіть Ollama з `https://ollama.com/download` 2. Завантажте локальну модель, наприклад `ollama pull glm-4.7-flash` - 3. Якщо ви хочете ще й cloud models, виконайте `ollama signin` + 3. Якщо вам потрібні також cloud-моделі, виконайте `ollama signin` 4. Запустіть `openclaw onboard` і виберіть `Ollama` 5. Виберіть `Local` або `Cloud + Local` Примітки: - - `Cloud + Local` дає вам cloud models плюс ваші локальні моделі Ollama - - cloud models, такі як `kimi-k2.5:cloud`, не потребують локального pull + - `Cloud + Local` дає вам cloud-моделі плюс ваші локальні моделі Ollama + - cloud-моделі, як-от `kimi-k2.5:cloud`, не потребують локального pull - для ручного перемикання використовуйте `openclaw models list` і `openclaw models set ollama/` - Примітка щодо безпеки: менші або сильно квантизовані моделі більш вразливі до prompt + Примітка з безпеки: менші або сильно квантовані моделі вразливіші до prompt injection. Ми наполегливо рекомендуємо **великі моделі** для будь-якого бота, який може використовувати tools. - Якщо ви все ж хочете малі моделі, увімкніть sandboxing і суворі tool allowlists. - - Документація: [Ollama](/uk/providers/ollama), [Local models](/uk/gateway/local-models), - [Model providers](/uk/concepts/model-providers), [Security](/uk/gateway/security), - [Sandboxing](/uk/gateway/sandboxing). - - - - - - Ці розгортання можуть відрізнятися й змінюватися з часом; фіксованої рекомендації щодо provider немає. - - Перевіряйте поточне налаштування runtime на кожному gateway за допомогою `openclaw models status`. - - Для безпеково чутливих агентів із tools використовуйте найсильнішу доступну модель останнього покоління. - - - - Використовуйте команду `/model` як окреме повідомлення: - - ``` - /model sonnet - /model opus - /model gpt - /model gpt-mini - /model gemini - /model gemini-flash - /model gemini-flash-lite - ``` - - Це вбудовані aliases. Власні aliases можна додати через `agents.defaults.models`. - - Ви можете переглянути доступні моделі через `/model`, `/model list` або `/model status`. - - `/model` (і `/model list`) показує компактний пронумерований picker. Вибирайте за номером: - - ``` - /model 3 - ``` - - Ви також можете примусово використати конкретний auth profile для provider (для окремої сесії): - - ``` - /model opus@anthropic:default - /model opus@anthropic:work - ``` - - Порада: `/model status` показує, який agent активний, який файл `auth-profiles.json` використовується і який auth profile буде спробувано наступним. - Він також показує налаштований endpoint provider (`baseUrl`) і режим API (`api`), коли це доступно. - - **Як зняти закріплення profile, який я встановив через @profile?** - - Повторно запустіть `/model` **без** суфікса `@profile`: - - ``` - /model anthropic/claude-opus-4-6 - ``` - - Якщо ви хочете повернутися до значення за замовчуванням, виберіть його через `/model` (або надішліть `/model `). - Використовуйте `/model status`, щоб підтвердити, який auth profile активний. - - - - > ~/.bashrc echo 'export AWS_REGION=us-east-1' >> ~/.bashrc source ~/.bashrc -# 5. Verify models are discovered +# 5. Перевірте, що моделі виявлено openclaw models list ``` ## Профілі інференсу OpenClaw виявляє **регіональні та глобальні профілі інференсу** разом із -foundation-моделями. Коли профіль зіставляється з відомою foundation-моделлю, -профіль успадковує можливості цієї моделі (вікно контексту, max tokens, -reasoning, vision), а правильний регіон запиту Bedrock підставляється +базовими моделями. Коли профіль зіставляється з відомою базовою моделлю, +профіль успадковує можливості цієї моделі (контекстне вікно, максимальну кількість токенів, +reasoning, vision), і правильний регіон запиту Bedrock підставляється автоматично. Це означає, що міжрегіональні профілі Claude працюють без ручного перевизначення провайдера. Ідентифікатори профілів інференсу мають вигляд `us.anthropic.claude-opus-4-6-v1:0` (регіональний) -або `anthropic.claude-opus-4-6-v1:0` (глобальний). Якщо базова модель уже -є в результатах виявлення, профіль успадковує повний набір її можливостей; -інакше застосовуються безпечні значення за замовчуванням. +або `anthropic.claude-opus-4-6-v1:0` (глобальний). Якщо базова модель уже є +в результатах виявлення, профіль успадковує повний набір її можливостей; +інакше застосовуються безпечні типові значення. -Додаткове налаштування не потрібне. Якщо виявлення ввімкнене і суб’єкт IAM -має дозвіл `bedrock:ListInferenceProfiles`, профілі з’являються поруч із -foundation-моделями в `openclaw models list`. +Додаткова конфігурація не потрібна. Якщо виявлення ввімкнено і принципал IAM +має дозвіл `bedrock:ListInferenceProfiles`, профілі з’являються разом із +базовими моделями в `openclaw models list`. ## Примітки -- Bedrock вимагає ввімкненого **доступу до моделі** у вашому обліковому записі AWS/регіоні. -- Для автоматичного виявлення потрібні дозволи `bedrock:ListFoundationModels` і +- Bedrock вимагає, щоб у вашому обліковому записі/регіоні AWS було ввімкнено **доступ до моделей**. +- Автоматичне виявлення потребує дозволів `bedrock:ListFoundationModels` і `bedrock:ListInferenceProfiles`. - Якщо ви покладаєтеся на автоматичний режим, установіть один із підтримуваних маркерів середовища автентифікації AWS на - gateway host. Якщо ви віддаєте перевагу автентифікації через IMDS/спільну конфігурацію без маркерів середовища, установіть + хості шлюзу. Якщо ви надаєте перевагу автентифікації через IMDS/спільну конфігурацію без маркерів середовища, установіть `plugins.entries.amazon-bedrock.config.discovery.enabled: true`. - OpenClaw показує джерело облікових даних у такому порядку: `AWS_BEARER_TOKEN_BEDROCK`, - потім `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`, потім `AWS_PROFILE`, а далі + потім `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`, потім `AWS_PROFILE`, а потім стандартний ланцюжок AWS SDK. -- Підтримка reasoning залежить від моделі; перевіряйте картку моделі Bedrock на предмет +- Підтримка reasoning залежить від моделі; перевіряйте картку моделі Bedrock щодо актуальних можливостей. - Якщо ви віддаєте перевагу керованому потоку ключів, ви також можете розмістити - сумісний з OpenAI проксі перед Bedrock і натомість налаштувати його як провайдера OpenAI. + OpenAI‑сумісний проксі перед Bedrock і натомість налаштувати його як провайдера OpenAI. ## Guardrails -Ви можете застосувати [Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) +Ви можете застосовувати [Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) до всіх викликів моделей Bedrock, додавши об’єкт `guardrail` до -config plugin `amazon-bedrock`. Guardrails дають змогу застосовувати фільтрацію контенту, +конфігурації плагіна `amazon-bedrock`. Guardrails дають змогу застосовувати фільтрацію вмісту, заборону тем, фільтри слів, фільтри чутливої інформації та перевірки -контекстного заземлення. +контекстного grounding. ```json5 { @@ -251,10 +249,10 @@ config plugin `amazon-bedrock`. Guardrails дають змогу застосо "amazon-bedrock": { config: { guardrail: { - guardrailIdentifier: "abc123", // guardrail ID or full ARN - guardrailVersion: "1", // version number or "DRAFT" - streamProcessingMode: "sync", // optional: "sync" or "async" - trace: "enabled", // optional: "enabled", "disabled", or "enabled_full" + guardrailIdentifier: "abc123", // ID guardrail або повний ARN + guardrailVersion: "1", // номер версії або "DRAFT" + streamProcessingMode: "sync", // необов’язково: "sync" або "async" + trace: "enabled", // необов’язково: "enabled", "disabled" або "enabled_full" }, }, }, @@ -263,16 +261,44 @@ config plugin `amazon-bedrock`. Guardrails дають змогу застосо } ``` -- `guardrailIdentifier` (обов’язковий) приймає ID guardrail (наприклад, `abc123`) або +- `guardrailIdentifier` (обов’язково) приймає ID guardrail (наприклад, `abc123`) або повний ARN (наприклад, `arn:aws:bedrock:us-east-1:123456789012:guardrail/abc123`). -- `guardrailVersion` (обов’язковий) указує, яку опубліковану версію використовувати, або +- `guardrailVersion` (обов’язково) указує, яку опубліковану версію використовувати, або `"DRAFT"` для робочої чернетки. -- `streamProcessingMode` (необов’язковий) визначає, чи виконується оцінювання guardrail - синхронно (`"sync"`) чи асинхронно (`"async"`) під час потокової передачі. Якщо - не вказано, Bedrock використовує свою стандартну поведінку. -- `trace` (необов’язковий) вмикає трасування guardrail у відповіді API. Установіть - `"enabled"` або `"enabled_full"` для налагодження; не вказуйте або встановіть `"disabled"` для - production. +- `streamProcessingMode` (необов’язково) визначає, чи виконуватиметься перевірка guardrail + синхронно (`"sync"`) чи асинхронно (`"async"`) під час streaming. Якщо + параметр пропущено, Bedrock використовує свою стандартну поведінку. +- `trace` (необов’язково) вмикає виведення трасування guardrail у відповіді API. Установіть + `"enabled"` або `"enabled_full"` для налагодження; у production пропустіть параметр або встановіть `"disabled"`. -Суб’єкт IAM, який використовує gateway, повинен мати дозвіл `bedrock:ApplyGuardrail` -додатково до стандартних дозволів на виклик. +Принципал IAM, який використовує шлюз, повинен мати дозвіл `bedrock:ApplyGuardrail` +на додачу до стандартних дозволів на виклик. + +## Embeddings для пошуку в пам’яті + +Bedrock також може виступати провайдером embeddings для +[пошуку в пам’яті](/uk/concepts/memory-search). Це налаштовується окремо від +провайдера інференсу — установіть `agents.defaults.memorySearch.provider` у `"bedrock"`: + +```json5 +{ + agents: { + defaults: { + memorySearch: { + provider: "bedrock", + model: "amazon.titan-embed-text-v2:0", // типово + }, + }, + }, +} +``` + +Embeddings Bedrock використовують той самий ланцюжок облікових даних AWS SDK, що й інференс (ролі +екземплярів, SSO, ключі доступу, спільна конфігурація та web identity). API-ключ не +потрібен. Коли `provider` має значення `"auto"`, Bedrock визначається автоматично, якщо цей +ланцюжок облікових даних успішно розв’язується. + +Підтримувані моделі embeddings включають Amazon Titan Embed (v1, v2), Amazon Nova +Embed, Cohere Embed (v3, v4) і TwelveLabs Marengo. Див. +[Довідник з конфігурації пам’яті — Bedrock](/uk/reference/memory-config#bedrock-embedding-config) +для повного списку моделей і параметрів розмірності. diff --git a/docs/uk/providers/openai.md b/docs/uk/providers/openai.md index c26695d59..dff830f1f 100644 --- a/docs/uk/providers/openai.md +++ b/docs/uk/providers/openai.md @@ -1,14 +1,14 @@ --- read_when: - Ви хочете використовувати моделі OpenAI в OpenClaw - - Ви хочете автентифікацію через підписку Codex замість API-ключів -summary: Використовуйте OpenAI через API-ключі або підписку Codex в OpenClaw + - Ви хочете використовувати автентифікацію підписки Codex замість ключів API +summary: Використовуйте OpenAI через ключі API або підписку Codex в OpenClaw title: OpenAI x-i18n: - generated_at: "2026-04-06T00:04:42Z" + generated_at: "2026-04-06T00:33:55Z" model: gpt-5.4 provider: openai - source_hash: d9a024b102f24a2f690efdbe633a01fbe00f500a74a8007af3245b8b948394ef + source_hash: 9e04db5787f6ed7b1eda04d965c10febae10809fc82ae4d9769e7163234471f5 source_path: providers/openai.md workflow: 15 --- @@ -16,17 +16,17 @@ x-i18n: # OpenAI OpenAI надає API для розробників для моделей GPT. Codex підтримує **вхід через ChatGPT** для доступу за підпискою -або **вхід через API key** для доступу з оплатою за використання. Для Codex cloud потрібен вхід через ChatGPT. -OpenAI прямо підтримує використання OAuth за підпискою у зовнішніх інструментах і робочих процесах, таких як OpenClaw. +або **вхід за ключем API** для доступу з оплатою за використання. Codex cloud вимагає входу через ChatGPT. +OpenAI явно підтримує використання OAuth підписки у зовнішніх інструментах/робочих процесах, таких як OpenClaw. -## Типова взаємодія +## Стиль взаємодії за замовчуванням -OpenClaw може додавати невелике специфічне для OpenAI накладання промпту як для запусків `openai/*`, так і для -`openai-codex/*`. Типово це накладання робить асистента доброзичливим, -співпрацюючим, лаконічним, прямим і трохи більш емоційно виразним, -не замінюючи базовий системний промпт OpenClaw. Доброзичливе накладання також -дозволяє зрідка використовувати emoji, коли це природно, водночас зберігаючи загальну -лаконічність відповіді. +OpenClaw може додавати невелике OpenAI-специфічне накладання prompt для запусків `openai/*` і +`openai-codex/*`. За замовчуванням це накладання зберігає стиль помічника теплим, +колаборативним, лаконічним, прямим і трохи емоційно виразнішим, +не замінюючи базовий системний prompt OpenClaw. Дружнє накладання також +дозволяє час від часу використовувати emoji, коли це природно, водночас зберігаючи +загальний вивід лаконічним. Ключ конфігурації: @@ -34,8 +34,8 @@ OpenClaw може додавати невелике специфічне для Дозволені значення: -- `"friendly"`: типове; увімкнути специфічне для OpenAI накладання. -- `"off"`: вимкнути накладання та використовувати лише базовий промпт OpenClaw. +- `"friendly"`: за замовчуванням; увімкнути OpenAI-специфічне накладання. +- `"off"`: вимкнути накладання та використовувати лише базовий prompt OpenClaw. Область дії: @@ -43,8 +43,8 @@ OpenClaw може додавати невелике специфічне для - Застосовується до моделей `openai-codex/*`. - Не впливає на інших провайдерів. -Цю поведінку увімкнено типово. Залиште `"friendly"` явно, якщо хочете, щоб -це збереглося після майбутніх локальних змін конфігурації: +Ця поведінка увімкнена за замовчуванням. Залиште `"friendly"` явно, якщо хочете, +щоб це пережило майбутні локальні зміни конфігурації: ```json5 { @@ -60,9 +60,9 @@ OpenClaw може додавати невелике специфічне для } ``` -### Вимкнути накладання промпту OpenAI +### Вимкнення OpenAI prompt-накладання -Якщо ви хочете незмінений базовий промпт OpenClaw, встановіть для накладання значення `"off"`: +Якщо ви хочете використовувати незмінений базовий prompt OpenClaw, встановіть для накладання значення `"off"`: ```json5 { @@ -84,16 +84,16 @@ OpenClaw може додавати невелике специфічне для openclaw config set plugins.entries.openai.config.personality off ``` -## Варіант A: API key OpenAI (OpenAI Platform) +## Варіант A: ключ API OpenAI (OpenAI Platform) -**Найкраще підходить для:** прямого доступу до API та оплати за використання. -Отримайте свій API key на панелі керування OpenAI. +**Найкраще для:** прямого доступу до API та білінгу за використанням. +Отримайте свій ключ API на інформаційній панелі OpenAI. ### Налаштування CLI ```bash openclaw onboard --auth-choice openai-api-key -# або неінтерактивно +# або без взаємодії openclaw onboard --openai-api-key "$OPENAI_API_KEY" ``` @@ -106,28 +106,28 @@ openclaw onboard --openai-api-key "$OPENAI_API_KEY" } ``` -У поточній документації OpenAI для моделей API вказано `gpt-5.4` і `gpt-5.4-pro` для прямого -використання API OpenAI. OpenClaw передає обидві через шлях Responses `openai/*`. +У поточній документації моделей API OpenAI вказані `gpt-5.4` і `gpt-5.4-pro` для прямого +використання API OpenAI. OpenClaw пересилає обидві через шлях Responses `openai/*`. OpenClaw навмисно приховує застарілий рядок `openai/gpt-5.3-codex-spark`, оскільки прямі виклики API OpenAI відхиляють його в реальному трафіку. -OpenClaw **не** показує `openai/gpt-5.3-codex-spark` на шляху прямого API OpenAI. -`pi-ai` усе ще постачається з вбудованим рядком для цієї моделі, але реальні запити до API OpenAI -зараз її відхиляють. В OpenClaw Spark розглядається лише як Codex. +OpenClaw **не** надає `openai/gpt-5.3-codex-spark` на шляху прямого API OpenAI. +`pi-ai` усе ще постачає вбудований рядок для цієї моделі, але реальні запити до API OpenAI +зараз її відхиляють. У OpenClaw Spark вважається доступним лише для Codex. ## Генерація зображень Вбудований плагін `openai` також реєструє генерацію зображень через спільний інструмент `image_generate`. -- Типова модель зображень: `openai/gpt-image-1` -- Генерація: до 4 зображень за запит +- Модель зображень за замовчуванням: `openai/gpt-image-1` +- Генерація: до 4 зображень на запит - Режим редагування: увімкнено, до 5 еталонних зображень -- Підтримується `size` -- Поточне специфічне для OpenAI обмеження: OpenClaw наразі не передає перевизначення `aspectRatio` або +- Підтримує `size` +- Поточне OpenAI-специфічне застереження: OpenClaw наразі не пересилає перевизначення `aspectRatio` або `resolution` до OpenAI Images API -Щоб використовувати OpenAI як типового провайдера зображень: +Щоб використовувати OpenAI як провайдера зображень за замовчуванням: ```json5 { @@ -142,22 +142,22 @@ OpenClaw **не** показує `openai/gpt-5.3-codex-spark` на шляху п ``` Див. [Генерація зображень](/uk/tools/image-generation) щодо параметрів спільного інструмента, -вибору провайдера та поведінки під час відмови. +вибору провайдера та поведінки failover. ## Генерація відео Вбудований плагін `openai` також реєструє генерацію відео через спільний інструмент `video_generate`. -- Типова модель відео: `openai/sora-2` -- Режими: текст-у-відео, зображення-у-відео та сценарії з одним еталонним відео/редагуванням -- Поточні обмеження: 1 зображення або 1 еталонне відео на вхід -- Поточне специфічне для OpenAI обмеження: OpenClaw наразі передає лише перевизначення - `size` для нативної генерації відео OpenAI. Непідтримувані необов’язкові перевизначення, +- Модель відео за замовчуванням: `openai/sora-2` +- Режими: текст-у-відео, зображення-у-відео та потоки посилання/редагування одного відео +- Поточні обмеження: 1 зображення або 1 відео як вхідне посилання +- Поточне OpenAI-специфічне застереження: OpenClaw наразі пересилає лише перевизначення `size` + для нативної генерації відео OpenAI. Непідтримувані необов’язкові перевизначення, такі як `aspectRatio`, `resolution`, `audio` і `watermark`, ігноруються - та повертаються як попередження інструмента. + і повертаються як попередження інструмента. -Щоб використовувати OpenAI як типового провайдера відео: +Щоб використовувати OpenAI як провайдера відео за замовчуванням: ```json5 { @@ -172,12 +172,12 @@ OpenClaw **не** показує `openai/gpt-5.3-codex-spark` на шляху п ``` Див. [Генерація відео](/uk/tools/video-generation) щодо параметрів спільного інструмента, -вибору провайдера та поведінки під час відмови. +вибору провайдера та поведінки failover. ## Варіант B: підписка OpenAI Code (Codex) -**Найкраще підходить для:** використання доступу за підпискою ChatGPT/Codex замість API key. -Для Codex cloud потрібен вхід через ChatGPT, тоді як Codex CLI підтримує вхід через ChatGPT або API key. +**Найкраще для:** використання доступу за підпискою ChatGPT/Codex замість ключа API. +Codex cloud вимагає входу через ChatGPT, тоді як Codex CLI підтримує вхід через ChatGPT або ключ API. ### Налаштування CLI (Codex OAuth) @@ -197,41 +197,41 @@ openclaw models auth login --provider openai-codex } ``` -У поточній документації Codex від OpenAI `gpt-5.4` вказано як актуальну модель Codex. OpenClaw +У поточній документації Codex від OpenAI вказано `gpt-5.4` як поточну модель Codex. OpenClaw відображає її як `openai-codex/gpt-5.4` для використання через OAuth ChatGPT/Codex. -Якщо під час онбордингу повторно використовується наявний вхід Codex CLI, ці облікові дані -залишаються під керуванням Codex CLI. Після завершення строку дії OpenClaw спочатку знову читає зовнішнє джерело Codex -і, коли провайдер може їх оновити, записує оновлені облікові дані -назад у сховище Codex замість того, щоб брати їх під свій контроль в окремій копії +Якщо під час onboarding повторно використовується наявний вхід Codex CLI, ці облікові дані +і далі керуються Codex CLI. Після завершення строку дії OpenClaw спочатку повторно зчитує зовнішнє джерело Codex +і, коли провайдер може його оновити, записує оновлені облікові дані +назад до сховища Codex замість того, щоб брати їх під керування в окремій копії лише для OpenClaw. -Якщо ваш обліковий запис Codex має доступ до Codex Spark, OpenClaw також підтримує: +Якщо ваш обліковий запис Codex має право на Codex Spark, OpenClaw також підтримує: - `openai-codex/gpt-5.3-codex-spark` OpenClaw розглядає Codex Spark як доступний лише для Codex. Він не надає прямий -шлях API-key `openai/gpt-5.3-codex-spark`. +шлях за ключем API `openai/gpt-5.3-codex-spark`. OpenClaw також зберігає `openai-codex/gpt-5.3-codex-spark`, коли його виявляє `pi-ai`. -Сприймайте його як залежний від прав доступу та експериментальний: Codex Spark -відрізняється від GPT-5.4 `/fast`, а доступність залежить від облікового запису Codex / -ChatGPT, у який виконано вхід. +Розглядайте його як такий, що залежить від прав доступу, й експериментальний: Codex Spark +окремий від GPT-5.4 `/fast`, а доступність залежить від облікового запису Codex / +ChatGPT, під яким виконано вхід. -### Обмеження розміру контекстного вікна Codex +### Ліміт вікна контексту Codex -OpenClaw розглядає метадані моделі Codex і ліміт контексту під час виконання як окремі +OpenClaw розглядає метадані моделі Codex і обмеження контексту під час виконання як окремі значення. Для `openai-codex/gpt-5.4`: - нативне `contextWindow`: `1050000` -- типовий ліміт виконання `contextTokens`: `272000` +- обмеження `contextTokens` під час виконання за замовчуванням: `272000` -Це зберігає правдивість метаданих моделі, водночас залишаючи менше типове вікно -виконання, яке на практиці має кращі характеристики затримки та якості. +Це зберігає правдивість метаданих моделі, водночас залишаючи менше вікно за замовчуванням +під час виконання, яке на практиці має кращі характеристики затримки та якості. -Якщо вам потрібен інший фактичний ліміт, встановіть `models.providers..models[].contextTokens`: +Якщо ви хочете інше фактичне обмеження, задайте `models.providers..models[].contextTokens`: ```json5 { @@ -253,43 +253,42 @@ OpenClaw розглядає метадані моделі Codex і ліміт к Використовуйте `contextWindow` лише тоді, коли ви оголошуєте або перевизначаєте нативні метадані моделі. Використовуйте `contextTokens`, коли хочете обмежити бюджет контексту під час виконання. -### Типовий транспорт +### Транспорт за замовчуванням -OpenClaw використовує `pi-ai` для потокової передачі моделей. Для `openai/*`, і для -`openai-codex/*` типовим транспортом є `"auto"` (спочатку WebSocket, потім запасний -варіант SSE). +OpenClaw використовує `pi-ai` для потокової передачі моделі. Для `openai/*` і +`openai-codex/*` транспорт за замовчуванням — `"auto"` (спочатку WebSocket, потім +резервний перехід на SSE). -У режимі `"auto"` OpenClaw також повторює одну ранню WebSocket-помилку, яку можна повторити, -перш ніж перейти на SSE. Примусовий режим `"websocket"` і далі показує помилки транспорту -безпосередньо, а не приховує їх за запасним варіантом. +У режимі `"auto"` OpenClaw також повторює одну ранню придатну до повтору помилку WebSocket +перед переходом на SSE. Примусовий режим `"websocket"` і далі безпосередньо показує помилки транспорту +замість того, щоб приховувати їх за резервним переходом. -Після помилки WebSocket під час з’єднання або на ранньому етапі запиту в режимі `"auto"` OpenClaw позначає -WebSocket-шлях цієї сесії як деградований приблизно на 60 секунд і надсилає -наступні запити через SSE протягом періоду охолодження замість того, щоб постійно -перемикатися між транспортами. +Після помилки підключення або помилки WebSocket на ранньому ході в режимі `"auto"` OpenClaw позначає +шлях WebSocket для цього сеансу як деградований приблизно на 60 секунд і надсилає +наступні ходи через SSE під час охолодження замість безладного перемикання +між транспортами. -Для нативних endpoint-ів сімейства OpenAI (`openai/*`, `openai-codex/*` і Azure -OpenAI Responses) OpenClaw також додає стабільний стан ідентифікації сесії та запиту -до запитів, щоб повторні спроби, перепідключення та запасний варіант SSE лишалися прив’язаними до тієї самої -ідентичності розмови. На нативних маршрутах сімейства OpenAI це включає стабільні -заголовки ідентифікації запитів сесії/запиту та відповідні метадані транспорту. +Для нативних кінцевих точок сімейства OpenAI (`openai/*`, `openai-codex/*` і Azure +OpenAI Responses) OpenClaw також додає стабільний стан ідентичності сеансу та ходу +до запитів, щоб повтори, перепідключення та резервний перехід на SSE залишалися прив’язаними до тієї самої +ідентичності розмови. На нативних маршрутах сімейства OpenAI це включає стабільні заголовки +ідентичності запиту сеансу/ходу, а також відповідні метадані транспорту. -OpenClaw також нормалізує лічильники використання OpenAI для різних варіантів транспорту, перш ніж -вони потраплять на поверхні сесії/статусу. Нативний трафік OpenAI/Codex Responses може -повідомляти про використання як `input_tokens` / `output_tokens` або -`prompt_tokens` / `completion_tokens`; OpenClaw розглядає їх як ті самі лічильники вхідних -і вихідних токенів для `/status`, `/usage` і журналів сесій. Коли нативний -WebSocket-трафік не містить `total_tokens` (або вказує `0`), OpenClaw повертається до -нормалізованої суми вхідних і вихідних токенів, щоб відображення сесії/статусу лишалося заповненим. +OpenClaw також нормалізує лічильники використання OpenAI між варіантами транспорту перед тим, +як вони потрапляють до поверхонь сеансу/статусу. Нативний трафік OpenAI/Codex Responses може +повідомляти використання як `input_tokens` / `output_tokens` або +`prompt_tokens` / `completion_tokens`; OpenClaw розглядає їх як однакові лічильники +вхідних і вихідних токенів для `/status`, `/usage` і журналів сеансів. Коли нативний +трафік WebSocket не містить `total_tokens` (або повідомляє `0`), OpenClaw повертається до +нормалізованої суми вхідних і вихідних токенів, щоб відображення сеансу/статусу залишалися заповненими. -Ви можете встановити `agents.defaults.models..params.transport`: +Ви можете задати `agents.defaults.models..params.transport`: - `"sse"`: примусово використовувати SSE - `"websocket"`: примусово використовувати WebSocket - `"auto"`: спробувати WebSocket, потім перейти на SSE -Для `openai/*` (Responses API) OpenClaw також типово вмикає попередній прогрів WebSocket -(`openaiWsWarmup: true`), коли використовується транспорт WebSocket. +Для `openai/*` (Responses API) OpenClaw також за замовчуванням увімкнув попередній прогрів WebSocket (`openaiWsWarmup: true`), коли використовується транспорт WebSocket. Пов’язана документація OpenAI: @@ -313,12 +312,12 @@ WebSocket-трафік не містить `total_tokens` (або вказує ` } ``` -### Попередній прогрів WebSocket OpenAI +### Попередній прогрів OpenAI WebSocket -У документації OpenAI прогрів описано як необов’язковий. OpenClaw типово вмикає його для -`openai/*`, щоб зменшити затримку першого запиту під час використання транспорту WebSocket. +У документації OpenAI попередній прогрів описано як необов’язковий. OpenClaw вмикає його за замовчуванням для +`openai/*`, щоб зменшити затримку першого ходу при використанні транспорту WebSocket. -### Вимкнути прогрів +### Вимкнення попереднього прогріву ```json5 { @@ -336,7 +335,7 @@ WebSocket-трафік не містить `total_tokens` (або вказує ` } ``` -### Явно ввімкнути прогрів +### Явне увімкнення попереднього прогріву ```json5 { @@ -354,11 +353,11 @@ WebSocket-трафік не містить `total_tokens` (або вказує ` } ``` -### Пріоритетна обробка OpenAI і Codex +### Пріоритетна обробка для OpenAI і Codex API OpenAI надає пріоритетну обробку через `service_tier=priority`. У -OpenClaw встановіть `agents.defaults.models["/"].params.serviceTier`, -щоб передавати це поле до нативних endpoint-ів OpenAI/Codex Responses. +OpenClaw задайте `agents.defaults.models["/"].params.serviceTier`, +щоб передавати це поле далі на нативні кінцеві точки OpenAI/Codex Responses. ```json5 { @@ -383,31 +382,37 @@ OpenClaw встановіть `agents.defaults.models["/"].para Підтримувані значення: `auto`, `default`, `flex` і `priority`. -OpenClaw передає `params.serviceTier` і до прямих запитів `openai/*` Responses, -і до запитів `openai-codex/*` Codex Responses, коли ці моделі вказують -на нативні endpoint-и OpenAI/Codex. +OpenClaw пересилає `params.serviceTier` як у прямі запити Responses `openai/*`, +так і в запити Codex Responses `openai-codex/*`, коли ці моделі вказують +на нативні кінцеві точки OpenAI/Codex. Важлива поведінка: -- прямий `openai/*` має вказувати на `api.openai.com` -- `openai-codex/*` має вказувати на `chatgpt.com/backend-api` -- якщо ви спрямовуєте будь-якого з цих провайдерів через інший base URL або проксі, OpenClaw залишає `service_tier` без змін +- прямий `openai/*` має бути спрямований на `api.openai.com` +- `openai-codex/*` має бути спрямований на `chatgpt.com/backend-api` +- якщо ви маршрутизуєте будь-якого з цих провайдерів через інший базовий URL або проксі, OpenClaw залишає `service_tier` без змін ### Швидкий режим OpenAI -OpenClaw надає спільний перемикач швидкого режиму як для сесій `openai/*`, так і для +OpenClaw надає спільний перемикач швидкого режиму для сеансів `openai/*` і `openai-codex/*`: -- Чат/UI: `/fast status|on|off` +- Chat/UI: `/fast status|on|off` - Конфігурація: `agents.defaults.models["/"].params.fastMode` Коли швидкий режим увімкнено, OpenClaw відображає його на пріоритетну обробку OpenAI: -- прямі виклики `openai/*` Responses до `api.openai.com` надсилають `service_tier = "priority"` -- виклики `openai-codex/*` Responses до `chatgpt.com/backend-api` також надсилають `service_tier = "priority"` -- наявні значення `service_tier` у корисному навантаженні зберігаються +- прямі виклики Responses `openai/*` до `api.openai.com` надсилають `service_tier = "priority"` +- виклики Responses `openai-codex/*` до `chatgpt.com/backend-api` також надсилають `service_tier = "priority"` +- наявні значення `service_tier` у payload зберігаються - швидкий режим не переписує `reasoning` або `text.verbosity` +Зокрема для GPT 5.4 найпоширеніше налаштування таке: + +- надіслати `/fast on` у сеансі, що використовує `openai/gpt-5.4` або `openai-codex/gpt-5.4` +- або задати `agents.defaults.models["openai/gpt-5.4"].params.fastMode = true` +- якщо ви також використовуєте Codex OAuth, задайте `agents.defaults.models["openai-codex/gpt-5.4"].params.fastMode = true` також + Приклад: ```json5 @@ -431,48 +436,48 @@ OpenClaw надає спільний перемикач швидкого реж } ``` -Перевизначення на рівні сесії мають вищий пріоритет, ніж конфігурація. Очищення перевизначення сесії в UI сесій -повертає сесію до налаштованого типового значення. +Перевизначення сеансу мають пріоритет над конфігурацією. Очищення перевизначення сеансу в UI Sessions +повертає сеанс до налаштованого значення за замовчуванням. -### Нативні маршрути OpenAI проти OpenAI-compatible маршрутів +### Нативні OpenAI-маршрути проти OpenAI-сумісних маршрутів -OpenClaw по-різному обробляє прямі endpoint-и OpenAI, Codex і Azure OpenAI -порівняно із загальними OpenAI-compatible проксі `/v1`: +OpenClaw по-різному обробляє прямі кінцеві точки OpenAI, Codex і Azure OpenAI +порівняно з типовими OpenAI-сумісними проксі `/v1`: - нативні маршрути `openai/*`, `openai-codex/*` і Azure OpenAI зберігають `reasoning: { effort: "none" }` без змін, коли ви явно вимикаєте reasoning -- нативні маршрути сімейства OpenAI типово встановлюють strict mode для схем інструментів +- для нативних маршрутів сімейства OpenAI схеми інструментів за замовчуванням працюють у strict mode - приховані заголовки атрибуції OpenClaw (`originator`, `version` і - `User-Agent`) додаються лише для перевірених нативних хостів OpenAI - (`api.openai.com`) і нативних хостів Codex (`chatgpt.com/backend-api`) -- нативні маршрути OpenAI/Codex зберігають формування запитів, доступне лише для OpenAI, таке як - `service_tier`, `store` у Responses, payload-и сумісності reasoning OpenAI і - підказки кешу промптів -- OpenAI-compatible маршрути проксі-зразка зберігають м’якшу поведінку сумісності й не - примушують strict mode для схем інструментів, нативне формування запитів або приховані + `User-Agent`) додаються лише на перевірених нативних хостах OpenAI + (`api.openai.com`) і нативних хостах Codex (`chatgpt.com/backend-api`) +- нативні маршрути OpenAI/Codex зберігають OpenAI-специфічне формування запиту, таке як + `service_tier`, `store` у Responses, OpenAI payload сумісності reasoning і + підказки для кешу prompt +- маршрути OpenAI-compatible у стилі проксі зберігають вільнішу поведінку сумісності й + не примушують strict-схеми інструментів, нативне формування запитів або приховані заголовки атрибуції OpenAI/Codex -Azure OpenAI лишається в групі нативної маршрутизації щодо транспорту та поведінки -сумісності, але не отримує прихованих заголовків атрибуції OpenAI/Codex. +Azure OpenAI залишається в категорії нативної маршрутизації щодо транспорту та +поведінки сумісності, але не отримує приховані заголовки атрибуції OpenAI/Codex. -Це зберігає поточну нативну поведінку OpenAI Responses без нав’язування старих -OpenAI-compatible shim-ів стороннім бекендам `/v1`. +Це зберігає поточну поведінку нативного OpenAI Responses без примусового +накладання старих OpenAI-compatible shim на сторонні бекенди `/v1`. ### Серверна компактація OpenAI Responses Для прямих моделей OpenAI Responses (`openai/*`, що використовують `api: "openai-responses"` з -`baseUrl` на `api.openai.com`), OpenClaw тепер автоматично вмикає підказки корисного навантаження -для серверної компактації OpenAI: +`baseUrl` на `api.openai.com`) OpenClaw тепер автоматично вмикає підказки payload для +серверної компактації OpenAI: -- Примусово встановлює `store: true` (якщо сумісність моделі не задає `supportsStore: false`) -- Вставляє `context_management: [{ type: "compaction", compact_threshold: ... }]` +- Примусово задає `store: true` (якщо compat моделі не задає `supportsStore: false`) +- Інжектує `context_management: [{ type: "compaction", compact_threshold: ... }]` -Типово `compact_threshold` становить `70%` від `contextWindow` моделі (або `80000`, +За замовчуванням `compact_threshold` становить `70%` від `contextWindow` моделі (або `80000`, якщо значення недоступне). -### Явно ввімкнути серверну компактацію +### Явне увімкнення серверної компактації -Використовуйте це, якщо хочете примусово вставляти `context_management` для сумісних +Використовуйте це, коли хочете примусово інжектувати `context_management` для сумісних моделей Responses (наприклад, Azure OpenAI Responses): ```json5 @@ -491,7 +496,7 @@ OpenAI-compatible shim-ів стороннім бекендам `/v1`. } ``` -### Увімкнути з власним порогом +### Увімкнення з користувацьким порогом ```json5 { @@ -510,7 +515,7 @@ OpenAI-compatible shim-ів стороннім бекендам `/v1`. } ``` -### Вимкнути серверну компактацію +### Вимкнення серверної компактації ```json5 { @@ -528,11 +533,11 @@ OpenAI-compatible shim-ів стороннім бекендам `/v1`. } ``` -`responsesServerCompaction` керує лише вставлянням `context_management`. -Прямі моделі OpenAI Responses і далі примусово встановлюють `store: true`, якщо сумісність -не задає `supportsStore: false`. +`responsesServerCompaction` керує лише інжекцією `context_management`. +Прямі моделі OpenAI Responses і далі примусово задають `store: true`, якщо compat не встановлює +`supportsStore: false`. ## Примітки -- Посилання на моделі завжди використовують формат `provider/model` (див. [/concepts/models](/uk/concepts/models)). -- Докладніше про автентифікацію та правила повторного використання — у [/concepts/oauth](/uk/concepts/oauth). +- Посилання на моделі завжди використовують `provider/model` (див. [/concepts/models](/uk/concepts/models)). +- Докладно про автентифікацію та правила повторного використання — у [/concepts/oauth](/uk/concepts/oauth). diff --git a/docs/uk/providers/runway.md b/docs/uk/providers/runway.md index 3622102c1..275da6d3d 100644 --- a/docs/uk/providers/runway.md +++ b/docs/uk/providers/runway.md @@ -1,26 +1,26 @@ --- read_when: - Ви хочете використовувати генерацію відео Runway в OpenClaw - - Вам потрібне налаштування ключа API / змінної середовища для Runway + - Вам потрібне налаштування ключа API/env для Runway - Ви хочете зробити Runway типовим провайдером відео summary: Налаштування генерації відео Runway в OpenClaw title: Runway x-i18n: - generated_at: "2026-04-06T00:19:38Z" + generated_at: "2026-04-06T00:33:10Z" model: gpt-5.4 provider: openai - source_hash: 87092da3f1a3cb137b0a3dffe1241a5a3d84eb29fa7c3a6b1df9c2871f1c80b6 + source_hash: bc615d1a26f7a4b890d29461e756690c858ecb05024cf3c4d508218022da6e76 source_path: providers/runway.md workflow: 15 --- # Runway -OpenClaw постачається з вбудованим провайдером `runway` для хостингової генерації відео. +OpenClaw постачається зі вбудованим провайдером `runway` для хостингової генерації відео. -- Провайдер: `runway` -- Автентифікація: `RUNWAYML_API_SECRET` (канонічний; `RUNWAY_API_KEY` також працює) -- API: API генерації відео Runway на основі завдань +- Ідентифікатор провайдера: `runway` +- Автентифікація: `RUNWAYML_API_SECRET` (канонічний) або `RUNWAY_API_KEY` +- API: генерація відео Runway на основі завдань (опитування `GET /v1/tasks/{id}`) ## Швидкий старт @@ -30,33 +30,27 @@ OpenClaw постачається з вбудованим провайдером openclaw onboard --auth-choice runway-api-key ``` -2. Установіть типову модель відео: +2. Установіть Runway як типовий провайдер відео: -```json5 -{ - agents: { - defaults: { - videoGenerationModel: { - primary: "runway/gen4.5", - }, - }, - }, -} +```bash +openclaw config set agents.defaults.videoGenerationModel.primary "runway/gen4.5" ``` -## Генерація відео +3. Попросіть агента згенерувати відео. Runway буде використано автоматично. -Вбудований провайдер генерації відео `runway` типово використовує `runway/gen4.5`. +## Підтримувані режими -- Режими: text-to-video, single-image image-to-video та single-video video-to-video -- Виконання: асинхронне надсилання завдання + опитування через `GET /v1/tasks/{id}` -- Сесії агента: `video_generate` запускає фонове завдання, а пізніші виклики в межах тієї самої сесії тепер повертають статус активного завдання замість створення дубльованого запуску -- Перевірка статусу: `video_generate action=status` -- Локальні посилання на зображення/відео: підтримуються через data URI -- Поточне застереження для video-to-video: OpenClaw наразі вимагає `runway/gen4_aleph` для відеовходів -- Поточне застереження для text-to-video: OpenClaw наразі надає `16:9` і `9:16` для запусків лише з текстом +| Режим | Модель | Вхідні референси | +| -------------- | ------------------ | ----------------------- | +| Текст у відео | `gen4.5` (типово) | Немає | +| Зображення у відео | `gen4.5` | 1 локальне або віддалене зображення | +| Відео у відео | `gen4_aleph` | 1 локальне або віддалене відео | -Щоб використовувати Runway як типовий провайдер відео: +- Підтримуються посилання на локальні зображення та відео через URI даних. +- Для режиму відео у відео наразі потрібна саме модель `runway/gen4_aleph`. +- Для запусків лише з текстом наразі доступні співвідношення сторін `16:9` і `9:16`. + +## Конфігурація ```json5 { @@ -72,5 +66,5 @@ openclaw onboard --auth-choice runway-api-key ## Пов’язане -- [Генерація відео](/uk/tools/video-generation) -- [Довідник із конфігурації](/uk/gateway/configuration-reference#agent-defaults) +- [Генерація відео](/uk/tools/video-generation) -- спільні параметри інструмента, вибір провайдера та асинхронна поведінка +- [Довідник з конфігурації](/uk/gateway/configuration-reference#agent-defaults) diff --git a/docs/uk/reference/memory-config.md b/docs/uk/reference/memory-config.md index 905dd03c7..dde6c21d8 100644 --- a/docs/uk/reference/memory-config.md +++ b/docs/uk/reference/memory-config.md @@ -1,70 +1,72 @@ --- read_when: - - Ви хочете налаштувати провайдерів пошуку в памʼяті або моделі ембедингів + - Ви хочете налаштувати провайдерів пошуку в пам’яті або моделі ембедингів - Ви хочете налаштувати бекенд QMD - Ви хочете налаштувати гібридний пошук, MMR або часове згасання - - Ви хочете увімкнути мультимодальне індексування памʼяті -summary: Усі параметри конфігурації для пошуку в памʼяті, провайдерів ембедингів, QMD, гібридного пошуку та мультимодального індексування -title: Довідник із конфігурації памʼяті + - Ви хочете ввімкнути мультимодальне індексування пам’яті +summary: Усі параметри конфігурації для пошуку в пам’яті, провайдерів ембедингів, QMD, гібридного пошуку та мультимодального індексування +title: Довідник із конфігурації пам’яті x-i18n: - generated_at: "2026-04-05T23:00:17Z" + generated_at: "2026-04-06T00:34:15Z" model: gpt-5.4 provider: openai - source_hash: 24dcdca7e2c29f27e61b0ed076574d6b473832f839cba2cc0c0d57e2ac17c196 + source_hash: d2be752f3b08441807224b4c33f4b63aea2de6deb43ac42db7e34f8e837b0240 source_path: reference/memory-config.md workflow: 15 --- -# Довідник із конфігурації памʼяті +# Довідник із конфігурації пам’яті -На цій сторінці перелічено всі параметри конфігурації пошуку в памʼяті OpenClaw. Для +На цій сторінці наведено всі параметри конфігурації для пошуку в пам’яті OpenClaw. Для концептуальних оглядів дивіться: -- [Огляд памʼяті](/uk/concepts/memory) -- як працює памʼять +- [Огляд пам’яті](/uk/concepts/memory) -- як працює пам’ять - [Вбудований рушій](/uk/concepts/memory-builtin) -- типовий бекенд SQLite -- [Рушій QMD](/uk/concepts/memory-qmd) -- локально-орієнтований сайдкар -- [Пошук у памʼяті](/uk/concepts/memory-search) -- конвеєр пошуку та налаштування +- [Рушій QMD](/uk/concepts/memory-qmd) -- локальний sidecar +- [Пошук у пам’яті](/uk/concepts/memory-search) -- конвеєр пошуку та налаштування -Усі налаштування пошуку в памʼяті знаходяться в `agents.defaults.memorySearch` у +Усі налаштування пошуку в пам’яті розміщені в `agents.defaults.memorySearch` у `openclaw.json`, якщо не зазначено інше. --- ## Вибір провайдера -| Ключ | Тип | Типово | Опис | -| ---------- | --------- | ---------------- | -------------------------------------------------------------------------------- | -| `provider` | `string` | автоматично виявлено | ID адаптера ембедингів: `openai`, `gemini`, `voyage`, `mistral`, `ollama`, `local` | -| `model` | `string` | типове значення провайдера | Назва моделі ембедингів | -| `fallback` | `string` | `"none"` | ID резервного адаптера, якщо основний завершується помилкою | -| `enabled` | `boolean` | `true` | Увімкнути або вимкнути пошук у памʼяті | +| Ключ | Тип | Типово | Опис | +| ---------- | --------- | ---------------- | ------------------------------------------------------------------------------------------- | +| `provider` | `string` | визначається автоматично | ID адаптера ембедингів: `openai`, `gemini`, `voyage`, `mistral`, `bedrock`, `ollama`, `local` | +| `model` | `string` | типове значення провайдера | Назва моделі ембедингів | +| `fallback` | `string` | `"none"` | ID резервного адаптера, якщо основний завершиться помилкою | +| `enabled` | `boolean` | `true` | Увімкнути або вимкнути пошук у пам’яті | -### Порядок автоматичного виявлення +### Порядок автовизначення -Коли `provider` не задано, OpenClaw вибирає перший доступний: +Коли `provider` не встановлено, OpenClaw вибирає перший доступний: 1. `local` -- якщо налаштовано `memorySearch.local.modelPath` і файл існує. 2. `openai` -- якщо вдається визначити ключ OpenAI. 3. `gemini` -- якщо вдається визначити ключ Gemini. 4. `voyage` -- якщо вдається визначити ключ Voyage. 5. `mistral` -- якщо вдається визначити ключ Mistral. +6. `bedrock` -- якщо спрацьовує ланцюжок облікових даних AWS SDK (роль екземпляра, ключі доступу, профіль, SSO, web identity або спільна конфігурація). -`ollama` підтримується, але не виявляється автоматично (задайте його явно). +`ollama` підтримується, але не визначається автоматично (встановіть його явно). -### Визначення API-ключа +### Визначення ключа API -Віддалені ембединги потребують API-ключа. OpenClaw визначає його з: -профілів автентифікації, `models.providers.*.apiKey` або змінних середовища. +Для віддалених ембедингів потрібен ключ API. Натомість Bedrock використовує типовий +ланцюжок облікових даних AWS SDK (ролі екземпляра, SSO, ключі доступу). -| Провайдер | Змінна середовища | Ключ конфігурації | -| -------- | ------------------------------ | --------------------------------- | -| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` | -| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` | -| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` | -| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` | -| Ollama | `OLLAMA_API_KEY` (заповнювач) | -- | +| Провайдер | Змінна середовища | Ключ конфігурації | +| --------- | ------------------------------ | -------------------------------- | +| OpenAI | `OPENAI_API_KEY` | `models.providers.openai.apiKey` | +| Gemini | `GEMINI_API_KEY` | `models.providers.google.apiKey` | +| Voyage | `VOYAGE_API_KEY` | `models.providers.voyage.apiKey` | +| Mistral | `MISTRAL_API_KEY` | `models.providers.mistral.apiKey` | +| Bedrock | ланцюжок облікових даних AWS | Ключ API не потрібен | +| Ollama | `OLLAMA_API_KEY` (заповнювач) | -- | -Codex OAuth охоплює лише chat/completions і не задовольняє запити +Codex OAuth покриває лише chat/completions і не задовольняє запити на ембединги. --- @@ -76,8 +78,8 @@ Codex OAuth охоплює лише chat/completions і не задовольн | Ключ | Тип | Опис | | ---------------- | -------- | ------------------------------------------------ | | `remote.baseUrl` | `string` | Користувацька базова URL-адреса API | -| `remote.apiKey` | `string` | Перевизначення API-ключа | -| `remote.headers` | `object` | Додаткові HTTP-заголовки (обʼєднуються з типовими значеннями провайдера) | +| `remote.apiKey` | `string` | Перевизначення ключа API | +| `remote.headers` | `object` | Додаткові HTTP-заголовки (об’єднуються з типовими значеннями провайдера) | ```json5 { @@ -98,11 +100,11 @@ Codex OAuth охоплює лише chat/completions і не задовольн --- -## Конфігурація, специфічна для Gemini +## Конфігурація для Gemini | Ключ | Тип | Типово | Опис | | ---------------------- | -------- | ---------------------- | ------------------------------------------ | -| `model` | `string` | `gemini-embedding-001` | Також підтримує `gemini-embedding-2-preview` | +| `model` | `string` | `gemini-embedding-001` | Також підтримується `gemini-embedding-2-preview` | | `outputDimensionality` | `number` | `3072` | Для Embedding 2: 768, 1536 або 3072 | @@ -111,44 +113,122 @@ Codex OAuth охоплює лише chat/completions і не задовольн --- +## Конфігурація ембедингів Bedrock + +Bedrock використовує типовий ланцюжок облікових даних AWS SDK -- ключі API не потрібні. +Якщо OpenClaw працює на EC2 з роллю екземпляра, у якої ввімкнено Bedrock, просто встановіть +провайдера та модель: + +```json5 +{ + agents: { + defaults: { + memorySearch: { + provider: "bedrock", + model: "amazon.titan-embed-text-v2:0", + }, + }, + }, +} +``` + +| Ключ | Тип | Типово | Опис | +| ---------------------- | -------- | ------------------------------ | ------------------------------ | +| `model` | `string` | `amazon.titan-embed-text-v2:0` | Будь-який ID моделі ембедингів Bedrock | +| `outputDimensionality` | `number` | типове значення моделі | Для Titan V2: 256, 512 або 1024 | + +### Підтримувані моделі + +Підтримуються такі моделі (з визначенням сімейства та типовими +розмірностями): + +| ID моделі | Провайдер | Типові розмірності | Налаштовувані розмірності | +| ------------------------------------------ | ---------- | ------------------ | ------------------------- | +| `amazon.titan-embed-text-v2:0` | Amazon | 1024 | 256, 512, 1024 | +| `amazon.titan-embed-text-v1` | Amazon | 1536 | -- | +| `amazon.titan-embed-g1-text-02` | Amazon | 1536 | -- | +| `amazon.titan-embed-image-v1` | Amazon | 1024 | -- | +| `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon | 1024 | 256, 384, 1024, 3072 | +| `cohere.embed-english-v3` | Cohere | 1024 | -- | +| `cohere.embed-multilingual-v3` | Cohere | 1024 | -- | +| `cohere.embed-v4:0` | Cohere | 1536 | 256-1536 | +| `twelvelabs.marengo-embed-3-0-v1:0` | TwelveLabs | 512 | -- | +| `twelvelabs.marengo-embed-2-7-v1:0` | TwelveLabs | 1024 | -- | + +Варіанти з суфіксом пропускної здатності (наприклад, `amazon.titan-embed-text-v1:2:8k`) успадковують +конфігурацію базової моделі. + +### Автентифікація + +Автентифікація Bedrock використовує стандартний порядок визначення облікових даних AWS SDK: + +1. Змінні середовища (`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`) +2. Кеш токенів SSO +3. Облікові дані токена web identity +4. Спільні файли облікових даних і конфігурації +5. Облікові дані метаданих ECS або EC2 + +Регіон визначається з `AWS_REGION`, `AWS_DEFAULT_REGION`, `baseUrl` +провайдера `amazon-bedrock` або типово використовується `us-east-1`. + +### Дозволи IAM + +Ролі або користувачу IAM потрібне таке: + +```json +{ + "Effect": "Allow", + "Action": "bedrock:InvokeModel", + "Resource": "*" +} +``` + +Для принципу найменших привілеїв обмежте `InvokeModel` конкретною моделлю: + +``` +arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0 +``` + +--- + ## Конфігурація локальних ембедингів | Ключ | Тип | Типово | Опис | | --------------------- | -------- | ---------------------- | ------------------------------ | -| `local.modelPath` | `string` | автоматично завантажується | Шлях до файлу моделі GGUF | +| `local.modelPath` | `string` | завантажується автоматично | Шлях до файла моделі GGUF | | `local.modelCacheDir` | `string` | типове значення node-llama-cpp | Каталог кешу для завантажених моделей | -Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 ГБ, завантажується автоматично). -Потребує нативного збирання: `pnpm approve-builds`, потім `pnpm rebuild node-llama-cpp`. +Типова модель: `embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 GB, завантажується автоматично). +Потрібна нативна збірка: `pnpm approve-builds`, а потім `pnpm rebuild node-llama-cpp`. --- ## Конфігурація гібридного пошуку -Усе в `memorySearch.query.hybrid`: +Усе знаходиться в `memorySearch.query.hybrid`: | Ключ | Тип | Типово | Опис | -| --------------------- | --------- | ------- | ---------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути гібридний пошук BM25 + векторний пошук | -| `vectorWeight` | `number` | `0.7` | Вага для векторних оцінок (0-1) | -| `textWeight` | `number` | `0.3` | Вага для оцінок BM25 (0-1) | -| `candidateMultiplier` | `number` | `4` | Множник розміру пулу кандидатів | +| --------------------- | --------- | ------ | ---------------------------------- | +| `enabled` | `boolean` | `true` | Увімкнути гібридний пошук BM25 + векторний | +| `vectorWeight` | `number` | `0.7` | Вага для векторних оцінок (0-1) | +| `textWeight` | `number` | `0.3` | Вага для оцінок BM25 (0-1) | +| `candidateMultiplier` | `number` | `4` | Множник розміру пулу кандидатів | ### MMR (різноманітність) -| Ключ | Тип | Типово | Опис | -| ------------- | --------- | ------- | -------------------------------------- | -| `mmr.enabled` | `boolean` | `false` | Увімкнути повторне ранжування MMR | +| Ключ | Тип | Типово | Опис | +| ------------- | --------- | ------ | ------------------------------------- | +| `mmr.enabled` | `boolean` | `false` | Увімкнути повторне ранжування MMR | | `mmr.lambda` | `number` | `0.7` | 0 = максимальна різноманітність, 1 = максимальна релевантність | -### Часове згасання (новизна) +### Часове згасання (актуальність) | Ключ | Тип | Типово | Опис | -| ---------------------------- | --------- | ------- | ----------------------------- | -| `temporalDecay.enabled` | `boolean` | `false` | Увімкнути підсилення за новизною | +| ---------------------------- | --------- | ------ | ----------------------------- | +| `temporalDecay.enabled` | `boolean` | `false` | Увімкнути буст актуальності | | `temporalDecay.halfLifeDays` | `number` | `30` | Оцінка зменшується вдвічі кожні N днів | -Для постійно актуальних файлів (`MEMORY.md`, недатовані файли в `memory/`) згасання ніколи не застосовується. +До evergreen-файлів (`MEMORY.md`, файли без дати в `memory/`) згасання ніколи не застосовується. ### Повний приклад @@ -173,11 +253,11 @@ Codex OAuth охоплює лише chat/completions і не задовольн --- -## Додаткові шляхи памʼяті +## Додаткові шляхи пам’яті -| Ключ | Тип | Опис | -| ------------ | ---------- | ---------------------------------------- | -| `extraPaths` | `string[]` | Додаткові каталоги або файли для індексування | +| Ключ | Тип | Опис | +| ----------- | ---------- | ----------------------------------------- | +| `extraPaths` | `string[]` | Додаткові каталоги або файли для індексації | ```json5 { @@ -193,32 +273,32 @@ Codex OAuth охоплює лише chat/completions і не задовольн Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги скануються рекурсивно на наявність файлів `.md`. Обробка символьних посилань залежить від активного бекенда: -вбудований рушій ігнорує символьні посилання, тоді як QMD дотримується поведінки -базового сканера QMD. +вбудований рушій ігнорує символьні посилання, тоді як QMD наслідує поведінку +сканера QMD. -Для пошуку транскриптів між агентами в межах області агента використовуйте +Для пошуку стенограм між агентами в межах області агента використовуйте `agents.list[].memorySearch.qmd.extraCollections` замість `memory.qmd.paths`. Ці додаткові колекції мають ту саму форму `{ path, name, pattern? }`, але -обʼєднуються для кожного агента окремо й можуть зберігати явні спільні назви, коли шлях -вказує за межі поточного робочого простору. -Якщо той самий визначений шлях зʼявляється і в `memory.qmd.paths`, і в +об’єднуються для кожного агента окремо й можуть зберігати явні спільні назви, коли шлях +вказує поза поточним робочим простором. +Якщо той самий визначений шлях з’являється і в `memory.qmd.paths`, і в `memorySearch.qmd.extraCollections`, QMD зберігає перший запис і пропускає дублікат. --- -## Мультимодальна памʼять (Gemini) +## Мультимодальна пам’ять (Gemini) Індексуйте зображення й аудіо разом із Markdown за допомогою Gemini Embedding 2: -| Ключ | Тип | Типово | Опис | -| ------------------------- | ---------- | ---------- | -------------------------------------- | -| `multimodal.enabled` | `boolean` | `false` | Увімкнути мультимодальне індексування | +| Ключ | Тип | Типово | Опис | +| ------------------------- | ---------- | ---------- | ------------------------------------ | +| `multimodal.enabled` | `boolean` | `false` | Увімкнути мультимодальне індексування | | `multimodal.modalities` | `string[]` | -- | `["image"]`, `["audio"]` або `["all"]` | -| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файлу для індексування | +| `multimodal.maxFileBytes` | `number` | `10000000` | Максимальний розмір файла для індексації | -Застосовується лише до файлів у `extraPaths`. Типові корені памʼяті залишаються лише для Markdown. -Потребує `gemini-embedding-2-preview`. `fallback` має бути `"none"`. +Застосовується лише до файлів у `extraPaths`. Типові корені пам’яті залишаються лише для Markdown. +Потрібен `gemini-embedding-2-preview`. `fallback` має бути `"none"`. Підтримувані формати: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif` (зображення); `.mp3`, `.wav`, `.ogg`, `.opus`, `.m4a`, `.aac`, `.flac` (аудіо). @@ -227,71 +307,71 @@ Codex OAuth охоплює лише chat/completions і не задовольн ## Кеш ембедингів -| Ключ | Тип | Типово | Опис | -| ------------------ | --------- | ------- | ------------------------------- | +| Ключ | Тип | Типово | Опис | +| ------------------ | --------- | ------ | -------------------------------- | | `cache.enabled` | `boolean` | `false` | Кешувати ембединги фрагментів у SQLite | | `cache.maxEntries` | `number` | `50000` | Максимальна кількість кешованих ембедингів | -Запобігає повторному створенню ембедингів для незміненого тексту під час переіндексування або оновлення транскриптів. +Запобігає повторному створенню ембедингів для незмінного тексту під час переіндексації або оновлення стенограм. --- -## Пакетне індексування +## Пакетна індексація | Ключ | Тип | Типово | Опис | -| ----------------------------- | --------- | ------- | -------------------------- | +| ----------------------------- | --------- | ------ | -------------------------- | | `remote.batch.enabled` | `boolean` | `false` | Увімкнути API пакетних ембедингів | | `remote.batch.concurrency` | `number` | `2` | Паралельні пакетні завдання | | `remote.batch.wait` | `boolean` | `true` | Очікувати завершення пакета | -| `remote.batch.pollIntervalMs` | `number` | -- | Інтервал опитування | -| `remote.batch.timeoutMinutes` | `number` | -- | Тайм-аут пакета | +| `remote.batch.pollIntervalMs` | `number` | -- | Інтервал опитування | +| `remote.batch.timeoutMinutes` | `number` | -- | Тайм-аут пакета | Доступно для `openai`, `gemini` і `voyage`. Пакетний режим OpenAI зазвичай найшвидший і найдешевший для великих зворотних заповнень. --- -## Пошук у памʼяті сеансів (експериментально) +## Пошук у пам’яті сесій (експериментально) -Індексуйте транскрипти сеансів і відображайте їх через `memory_search`: +Індексуйте стенограми сесій і показуйте їх через `memory_search`: | Ключ | Тип | Типово | Опис | | ----------------------------- | ---------- | ------------ | -------------------------------------- | -| `experimental.sessionMemory` | `boolean` | `false` | Увімкнути індексування сеансів | -| `sources` | `string[]` | `["memory"]` | Додайте `"sessions"`, щоб включити транскрипти | -| `sync.sessions.deltaBytes` | `number` | `100000` | Поріг байтів для переіндексування | -| `sync.sessions.deltaMessages` | `number` | `50` | Поріг повідомлень для переіндексування | +| `experimental.sessionMemory` | `boolean` | `false` | Увімкнути індексацію сесій | +| `sources` | `string[]` | `["memory"]` | Додайте `"sessions"`, щоб включити стенограми | +| `sync.sessions.deltaBytes` | `number` | `100000` | Поріг у байтах для переіндексації | +| `sync.sessions.deltaMessages` | `number` | `50` | Поріг у повідомленнях для переіндексації | -Індексування сеансів є опційним і виконується асинхронно. Результати можуть бути трохи -застарілими. Журнали сеансів зберігаються на диску, тому вважайте доступ до файлової системи -межею довіри. +Індексація сесій є опційною й виконується асинхронно. Результати можуть бути трохи +застарілими. Журнали сесій зберігаються на диску, тому ставтеся до доступу до файлової системи як до +межі довіри. --- ## Прискорення векторів SQLite (sqlite-vec) | Ключ | Тип | Типово | Опис | -| ---------------------------- | --------- | ------- | --------------------------------- | -| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для векторних запитів | -| `store.vector.extensionPath` | `string` | вбудовано | Перевизначити шлях до sqlite-vec | +| ---------------------------- | --------- | ------ | --------------------------------- | +| `store.vector.enabled` | `boolean` | `true` | Використовувати sqlite-vec для векторних запитів | +| `store.vector.extensionPath` | `string` | bundled | Перевизначити шлях до sqlite-vec | -Коли sqlite-vec недоступний, OpenClaw автоматично повертається до -обчислення косинусної подібності в процесі. +Коли sqlite-vec недоступний, OpenClaw автоматично переходить до косинусної +схожості в процесі. --- ## Сховище індексу -| Ключ | Тип | Типово | Опис | -| --------------------- | -------- | ------------------------------------- | ----------------------------------------- | -| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Розташування індексу (підтримує токен `{agentId}`) | -| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) | +| Ключ | Тип | Типово | Опис | +| ------------------- | -------- | ------------------------------------- | ----------------------------------------- | +| `store.path` | `string` | `~/.openclaw/memory/{agentId}.sqlite` | Розташування індексу (підтримує токен `{agentId}`) | +| `store.fts.tokenizer` | `string` | `unicode61` | Токенізатор FTS5 (`unicode61` або `trigram`) | --- ## Конфігурація бекенда QMD -Задайте `memory.backend = "qmd"`, щоб увімкнути. Усі налаштування QMD знаходяться в +Установіть `memory.backend = "qmd"`, щоб увімкнути його. Усі налаштування QMD розміщені в `memory.qmd`: | Ключ | Тип | Типово | Опис | @@ -300,35 +380,35 @@ Codex OAuth охоплює лише chat/completions і не задовольн | `searchMode` | `string` | `search` | Команда пошуку: `search`, `vsearch`, `query` | | `includeDefaultMemory` | `boolean` | `true` | Автоматично індексувати `MEMORY.md` + `memory/**/*.md` | | `paths[]` | `array` | -- | Додаткові шляхи: `{ name, path, pattern? }` | -| `sessions.enabled` | `boolean` | `false` | Індексувати транскрипти сеансів | -| `sessions.retentionDays` | `number` | -- | Термін зберігання транскриптів | +| `sessions.enabled` | `boolean` | `false` | Індексувати стенограми сесій | +| `sessions.retentionDays` | `number` | -- | Утримання стенограм | | `sessions.exportDir` | `string` | -- | Каталог експорту | -### Розклад оновлення +### Розклад оновлень -| Ключ | Тип | Типово | Опис | -| ------------------------- | --------- | ------- | ---------------------------------- | -| `update.interval` | `string` | `5m` | Інтервал оновлення | -| `update.debounceMs` | `number` | `15000` | Затримка для змін файлів | -| `update.onBoot` | `boolean` | `true` | Оновлювати під час запуску | +| Ключ | Тип | Типово | Опис | +| ------------------------- | --------- | ------ | ----------------------------------- | +| `update.interval` | `string` | `5m` | Інтервал оновлення | +| `update.debounceMs` | `number` | `15000` | Debounce змін файлів | +| `update.onBoot` | `boolean` | `true` | Оновлювати під час запуску | | `update.waitForBootSync` | `boolean` | `false` | Блокувати запуск до завершення оновлення | -| `update.embedInterval` | `string` | -- | Окрема частота для ембедингів | -| `update.commandTimeoutMs` | `number` | -- | Тайм-аут для команд QMD | -| `update.updateTimeoutMs` | `number` | -- | Тайм-аут для операцій оновлення QMD | -| `update.embedTimeoutMs` | `number` | -- | Тайм-аут для операцій ембедингів QMD | +| `update.embedInterval` | `string` | -- | Окремий інтервал для ембедингів | +| `update.commandTimeoutMs` | `number` | -- | Тайм-аут для команд QMD | +| `update.updateTimeoutMs` | `number` | -- | Тайм-аут для операцій оновлення QMD | +| `update.embedTimeoutMs` | `number` | -- | Тайм-аут для операцій ембедингів QMD | -### Обмеження +### Ліміти -| Ключ | Тип | Типово | Опис | -| ------------------------- | -------- | ------- | ---------------------------- | -| `limits.maxResults` | `number` | `6` | Максимальна кількість результатів пошуку | -| `limits.maxSnippetChars` | `number` | -- | Обмежити довжину фрагмента | -| `limits.maxInjectedChars` | `number` | -- | Обмежити загальну кількість вставлених символів | -| `limits.timeoutMs` | `number` | `4000` | Тайм-аут пошуку | +| Ключ | Тип | Типово | Опис | +| ------------------------- | -------- | ------ | ------------------------------- | +| `limits.maxResults` | `number` | `6` | Максимальна кількість результатів пошуку | +| `limits.maxSnippetChars` | `number` | -- | Обмеження довжини фрагмента | +| `limits.maxInjectedChars` | `number` | -- | Обмеження загальної кількості вставлених символів | +| `limits.timeoutMs` | `number` | `4000` | Тайм-аут пошуку | ### Область дії -Керує тим, які сеанси можуть отримувати результати пошуку QMD. Та сама схема, що й у +Керує тим, які сесії можуть отримувати результати пошуку QMD. Та сама схема, що й у [`session.sendPolicy`](/uk/gateway/configuration-reference#session): ```json5 @@ -344,18 +424,18 @@ Codex OAuth охоплює лише chat/completions і не задовольн } ``` -Типове значення -- лише DM. `match.keyPrefix` відповідає нормалізованому ключу сеансу; +Типове значення -- лише DM. `match.keyPrefix` відповідає нормалізованому ключу сесії; `match.rawKeyPrefix` відповідає сирому ключу, включно з `agent::`. -### Цитування +### Цитати `memory.citations` застосовується до всіх бекендів: | Значення | Поведінка | | ---------------- | --------------------------------------------------- | -| `auto` (типово) | Додавати нижній колонтитул `Source: ` у фрагменти | +| `auto` (типово) | Додавати нижній колонтитул `Source: ` до фрагментів | | `on` | Завжди додавати нижній колонтитул | -| `off` | Не додавати нижній колонтитул (шлях однаково передається агенту внутрішньо) | +| `off` | Не додавати нижній колонтитул (шлях усе одно передається агенту внутрішньо) | ### Повний приклад QMD @@ -383,92 +463,19 @@ Codex OAuth охоплює лише chat/completions і не задовольн ## Dreaming (експериментально) Dreaming налаштовується в `plugins.entries.memory-core.config.dreaming`, -а не в `agents.defaults.memorySearch`. Dreaming використовує три кооперативні -фази (light, deep, REM), кожна з яких має власний розклад і конфігурацію. Для -концептуальних деталей і команд чату дивіться [Dreaming](/uk/concepts/dreaming). +а не в `agents.defaults.memorySearch`. -### Глобальні налаштування +Dreaming виконується як один запланований прохід і використовує внутрішні фази light/deep/REM як +деталь реалізації. -| Ключ | Тип | Типово | Опис | -| ------------------------- | --------- | ---------- | ------------------------------------------------------------ | -| `enabled` | `boolean` | `true` | Головний перемикач для всіх фаз | -| `timezone` | `string` | не задано | Часовий пояс для обчислення розкладу та групування дат у dreaming | -| `verboseLogging` | `boolean` | `false` | Виводити докладні журнали dreaming для кожного запуску | -| `storage.mode` | `string` | `"inline"` | Вбудований `DREAMS.md`, окремі звіти або обидва варіанти | -| `storage.separateReports` | `boolean` | `false` | Записувати окремі файли звітів для кожної фази | +Для концептуальної поведінки та slash-команд дивіться [Dreaming](/uk/concepts/dreaming). -### Легка фаза (`phases.light`) +### Налаштування користувача -Сканує нещодавні трасування, усуває дублікати та додає кандидатів у `DREAMS.md`, коли -увімкнено вбудоване зберігання. -**Не** записує до `MEMORY.md`. - -| Ключ | Тип | Типово | Опис | -| ------------------ | ---------- | ------------------------------- | ---------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути легку фазу | -| `cron` | `string` | `0 */6 * * *` | Розклад (кожні 6 годин) | -| `lookbackDays` | `number` | `2` | Кількість днів трасувань для сканування | -| `limit` | `number` | `100` | Максимальна кількість кандидатів для додавання | -| `dedupeSimilarity` | `number` | `0.9` | Поріг Jaccard для усунення дублікатів | -| `sources` | `string[]` | `["daily","sessions","recall"]` | Джерела даних | - -### Глибока фаза (`phases.deep`) - -Просуває кваліфікованих кандидатів до `MEMORY.md`. Це **єдина** фаза, що -записує довготривалі факти. Також відповідає за відновлення, коли памʼяті недостатньо. - -| Ключ | Тип | Типово | Опис | -| --------------------- | ---------- | ----------------------------------------------- | ------------------------------------ | -| `enabled` | `boolean` | `true` | Увімкнути глибоку фазу | -| `cron` | `string` | `0 3 * * *` | Розклад (щодня о 3:00) | -| `limit` | `number` | `10` | Максимум кандидатів для просування за цикл | -| `minScore` | `number` | `0.8` | Мінімальна зважена оцінка для просування | -| `minRecallCount` | `number` | `3` | Мінімальний поріг кількості recall | -| `minUniqueQueries` | `number` | `3` | Мінімальна кількість різних запитів | -| `recencyHalfLifeDays` | `number` | `14` | Кількість днів, за які оцінка новизни зменшується вдвічі | -| `maxAgeDays` | `number` | `30` | Максимальний вік щоденної нотатки для просування | -| `sources` | `string[]` | `["daily","memory","sessions","logs","recall"]` | Джерела даних | - -#### Глибоке відновлення (`phases.deep.recovery`) - -| Ключ | Тип | Типово | Опис | -| ------------------------ | --------- | ------- | ----------------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути автоматичне відновлення | -| `triggerBelowHealth` | `number` | `0.35` | Поріг оцінки стану для запуску відновлення | -| `lookbackDays` | `number` | `30` | Наскільки далеко назад шукати матеріали для відновлення | -| `maxRecoveredCandidates` | `number` | `20` | Максимум кандидатів для відновлення за запуск | -| `minRecoveryConfidence` | `number` | `0.9` | Мінімальна впевненість для кандидатів на відновлення | -| `autoWriteMinConfidence` | `number` | `0.97` | Поріг автозапису (без ручної перевірки) | - -### Фаза REM (`phases.rem`) - -Записує теми, роздуми та нотатки про шаблони в `DREAMS.md`, коли -увімкнено вбудоване зберігання. -**Не** записує до `MEMORY.md`. - -| Ключ | Тип | Типово | Опис | -| -------------------- | ---------- | --------------------------- | ---------------------------------- | -| `enabled` | `boolean` | `true` | Увімкнути фазу REM | -| `cron` | `string` | `0 5 * * 0` | Розклад (щотижня, неділя 5:00) | -| `lookbackDays` | `number` | `7` | Кількість днів матеріалу для рефлексії | -| `limit` | `number` | `10` | Максимальна кількість шаблонів або тем для запису | -| `minPatternStrength` | `number` | `0.75` | Мінімальна сила співзустрічальності тегів | -| `sources` | `string[]` | `["memory","daily","deep"]` | Джерела даних для рефлексії | - -### Перевизначення виконання - -Кожна фаза приймає блок `execution`. Також є глобальний -блок `execution.defaults`, від якого фази успадковують значення. - -| Ключ | Тип | Типово | Опис | -| ----------------- | -------- | ------------ | ------------------------------ | -| `speed` | `string` | `"balanced"` | `fast`, `balanced` або `slow` | -| `thinking` | `string` | `"medium"` | `low`, `medium` або `high` | -| `budget` | `string` | `"medium"` | `cheap`, `medium` або `expensive` | -| `model` | `string` | не задано | Перевизначити модель для цієї фази | -| `maxOutputTokens` | `number` | не задано | Обмежити вихідні токени | -| `temperature` | `number` | не задано | Температура семплювання (0-2) | -| `timeoutMs` | `number` | не задано | Тайм-аут фази в мілісекундах | +| Ключ | Тип | Типово | Опис | +| ----------- | --------- | ----------- | --------------------------------------------------- | +| `enabled` | `boolean` | `false` | Повністю увімкнути або вимкнути dreaming | +| `frequency` | `string` | `0 3 * * *` | Необов’язкова cron-частота для повного циклу dreaming | ### Приклад @@ -480,12 +487,7 @@ Dreaming налаштовується в `plugins.entries.memory-core.config.dre config: { dreaming: { enabled: true, - timezone: "America/New_York", - phases: { - light: { cron: "0 */4 * * *", lookbackDays: 3 }, - deep: { minScore: 0.85, recencyHalfLifeDays: 21 }, - rem: { lookbackDays: 14 }, - }, + frequency: "0 3 * * *", }, }, }, @@ -493,3 +495,9 @@ Dreaming налаштовується в `plugins.entries.memory-core.config.dre }, } ``` + +Примітки: + +- Dreaming записує машинний стан у `memory/.dreams/`. +- Dreaming записує зрозумілий людині наративний вивід у `DREAMS.md` (або наявний `dreams.md`). +- Політика й пороги фаз light/deep/REM є внутрішньою поведінкою, а не користувацькою конфігурацією. diff --git a/docs/uk/tools/slash-commands.md b/docs/uk/tools/slash-commands.md index f4de00b35..39f3b7d5e 100644 --- a/docs/uk/tools/slash-commands.md +++ b/docs/uk/tools/slash-commands.md @@ -2,37 +2,37 @@ read_when: - Використання або налаштування команд чату - Налагодження маршрутизації команд або дозволів -summary: 'Команди зі слешем: текстові проти нативних, config і підтримувані команди' -title: Команди зі слешем +summary: 'Слеш-команди: текстові та нативні, конфігурація й підтримувані команди' +title: Слеш-команди x-i18n: - generated_at: "2026-04-05T18:21:36Z" + generated_at: "2026-04-06T00:34:40Z" model: gpt-5.4 provider: openai - source_hash: 13c6a4648d48e47469e7b2c16f135b3e58e3c39f859960df882c7af370c083bd + source_hash: 417e35b9ddd87f25f6c019111b55b741046ea11039dde89210948185ced5696d source_path: tools/slash-commands.md workflow: 15 --- -# Команди зі слешем +# Слеш-команди Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, яке починається з `/`. -Чат-команда bash лише для host використовує `! ` (з `/bash ` як псевдонімом). +Команда чату bash лише для хоста використовує `! ` (із псевдонімом `/bash `). Є дві пов’язані системи: - **Команди**: окремі повідомлення `/...`. - **Директиви**: `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - - Директиви вилучаються з повідомлення до того, як його побачить модель. - - У звичайних повідомленнях чату (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сесії. - - У повідомленнях лише з директивами (повідомлення містить лише директиви) вони зберігаються в сесії та відповідають підтвердженням. + - Директиви видаляються з повідомлення до того, як його побачить модель. + - У звичайних повідомленнях чату (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сеансу. + - У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сеансі й повертають підтвердження. - Директиви застосовуються лише для **авторизованих відправників**. Якщо задано `commands.allowFrom`, це єдиний - allowlist, який використовується; інакше авторизація надходить із allowlist каналів/pairing разом із `commands.useAccessGroups`. + список дозволу, який використовується; інакше авторизація визначається списками дозволу/спарюванням каналу та `commands.useAccessGroups`. Для неавторизованих відправників директиви трактуються як звичайний текст. -Також є кілька **вбудованих скорочень** (лише для allowlisted/авторизованих відправників): `/help`, `/commands`, `/status`, `/whoami` (`/id`). -Вони виконуються негайно, вилучаються до того, як повідомлення побачить модель, а решта тексту продовжує проходити звичайним потоком. +Також є кілька **вбудованих скорочень** (лише для відправників зі списку дозволу/авторизованих): `/help`, `/commands`, `/status`, `/whoami` (`/id`). +Вони запускаються негайно, видаляються до того, як модель побачить повідомлення, а решта тексту продовжує оброблятися у звичайному потоці. -## Config +## Конфігурація ```json5 { @@ -57,24 +57,24 @@ x-i18n: ``` - `commands.text` (типово `true`) вмикає розбір `/...` у повідомленнях чату. - - На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо ви встановите `false`. + - На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити `false`. - `commands.native` (типово `"auto"`) реєструє нативні команди. - - Auto: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки. - - Використовуйте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити це для конкретного провайдера (bool або `"auto"`). - - `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично. -- `commands.nativeSkills` (типово `"auto"`) реєструє нативно команди **skill**, коли це підтримується. - - Auto: увімкнено для Discord/Telegram; вимкнено для Slack (у Slack потрібно створювати окрему slash command для кожної skill). - - Використовуйте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити це для конкретного провайдера (bool або `"auto"`). -- `commands.bash` (типово `false`) вмикає `! ` для запуску shell-команд на host (`/bash ` — псевдонім; потребує allowlist для `tools.elevated`). -- `commands.bashForegroundMs` (типово `2000`) керує тим, скільки часу bash чекає перед переходом у фоновий режим (`0` одразу переводить у фон). + - Auto: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте слеш-команди); ігнорується для провайдерів без нативної підтримки. + - Щоб перевизначити для окремого провайдера, задайте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native` (bool або `"auto"`). + - `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і автоматично не видаляються. +- `commands.nativeSkills` (типово `"auto"`) нативно реєструє команди **Skills**, якщо це підтримується. + - Auto: увімкнено для Discord/Telegram; вимкнено для Slack (у Slack потрібно створювати окрему слеш-команду для кожного skill). + - Щоб перевизначити для окремого провайдера, задайте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills` (bool або `"auto"`). +- `commands.bash` (типово `false`) вмикає `! ` для виконання shell-команд хоста (`/bash ` є псевдонімом; потрібні списки дозволу `tools.elevated`). +- `commands.bashForegroundMs` (типово `2000`) визначає, як довго bash чекає перед переходом у фоновий режим (`0` одразу переводить у фон). - `commands.config` (типово `false`) вмикає `/config` (читання/запис `openclaw.json`). -- `commands.mcp` (типово `false`) вмикає `/mcp` (читання/запис config MCP під керуванням OpenClaw у `mcp.servers`). -- `commands.plugins` (типово `false`) вмикає `/plugins` (виявлення/стан plugin плюс керування встановленням і вмиканням/вимиканням). -- `commands.debug` (типово `false`) вмикає `/debug` (перевизначення лише для runtime). -- `commands.allowFrom` (необов’язково) задає allowlist для авторизації команд окремо для кожного провайдера. Якщо його налаштовано, це - єдине джерело авторизації для команд і директив (`commands.useAccessGroups` - та allowlist каналів/pairing ігноруються). Використовуйте `"*"` як глобальне значення за замовчуванням; ключі для конкретних провайдерів його перевизначають. -- `commands.useAccessGroups` (типово `true`) застосовує allowlist/політики для команд, коли `commands.allowFrom` не задано. +- `commands.mcp` (типово `false`) вмикає `/mcp` (читання/запис керованої OpenClaw конфігурації MCP у `mcp.servers`). +- `commands.plugins` (типово `false`) вмикає `/plugins` (виявлення/статус plugins, а також встановлення й елементи керування увімкненням/вимкненням). +- `commands.debug` (типово `false`) вмикає `/debug` (перевизначення лише під час виконання). +- `commands.allowFrom` (необов’язково) задає список дозволу для авторизації команд окремо для кожного провайдера. Якщо його налаштовано, це + єдине джерело авторизації для команд і директив (списки дозволу/спарювання каналу та `commands.useAccessGroups` + ігноруються). Використовуйте `"*"` для глобального значення за замовчуванням; ключі окремих провайдерів мають пріоритет. +- `commands.useAccessGroups` (типово `true`) застосовує списки дозволу/політики для команд, коли `commands.allowFrom` не задано. ## Список команд @@ -84,33 +84,33 @@ x-i18n: - `/commands` - `/tools [compact|verbose]` (показує, що поточний агент може використовувати прямо зараз; `verbose` додає описи) - `/skill [input]` (запустити skill за назвою) -- `/status` (показати поточний стан; включає використання/квоту провайдера для поточного провайдера моделі, коли доступно) -- `/tasks` (перелічити фонові завдання для поточної сесії; показує деталі активних і нещодавніх завдань із локальними для агента резервними підрахунками) -- `/allowlist` (переглянути/додати/видалити записи allowlist) -- `/approve ` (обробити запити схвалення exec; використовуйте повідомлення про очікуване схвалення для доступних рішень) -- `/context [list|detail|json]` (пояснює «контекст»; `detail` показує розмір для кожного файла + кожного інструмента + кожної skill + системного запиту) -- `/btw ` (поставити тимчасове побічне запитання про поточну сесію без зміни майбутнього контексту сесії; див. [/tools/btw](/tools/btw)) -- `/export-session [path]` (псевдонім: `/export`) (експортувати поточну сесію в HTML із повним системним запитом) +- `/status` (показати поточний стан; містить використання/квоту провайдера для поточного провайдера моделі, якщо доступно) +- `/tasks` (показати фонові завдання для поточного сеансу; відображає активні та нещодавні деталі завдань із локальними для агента резервними лічильниками) +- `/allowlist` (перегляд/додавання/видалення записів списку дозволу) +- `/approve ` (розв’язати запити на погодження exec; використовуйте повідомлення з очікуваним погодженням для доступних рішень) +- `/context [list|detail|json]` (пояснює «контекст»; `detail` показує розмір для кожного файла + кожного інструмента + кожного skill + системного prompt) +- `/btw ` (поставити тимчасове побічне запитання про поточний сеанс без зміни майбутнього контексту сеансу; див. [/tools/btw](/uk/tools/btw)) +- `/export-session [path]` (псевдонім: `/export`) (експортувати поточний сеанс у HTML з повним системним prompt) - `/whoami` (показати ваш sender id; псевдонім: `/id`) -- `/session idle ` (керування автоматичним зняттям фокусу через неактивність для прив’язок сфокусованих потоків) -- `/session max-age ` (керування жорстким автоматичним зняттям фокусу за максимальним віком для прив’язок сфокусованих потоків) -- `/subagents list|kill|log|info|send|steer|spawn` (переглянути, керувати або запускати sub-agent для поточної сесії) -- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (перегляд і керування runtime-сесіями ACP) -- `/agents` (перелічити агентів, прив’язаних до потоку для цієї сесії) -- `/focus ` (Discord: прив’язати цей потік або новий потік до цілі session/subagent) -- `/unfocus` (Discord: прибрати поточну прив’язку потоку) -- `/kill ` (негайно перервати один або всі запущені sub-agent для цієї сесії; без повідомлення-підтвердження) -- `/steer ` (негайно перенаправити запущений sub-agent: під час виконання, якщо можливо, інакше перервати поточну роботу та перезапустити з повідомленням steer) +- `/session idle ` (керування автоматичним зняттям фокуса через неактивність для прив’язок сфокусованих гілок) +- `/session max-age ` (керування жорстким автоматичним зняттям фокуса за максимальним віком для прив’язок сфокусованих гілок) +- `/subagents list|kill|log|info|send|steer|spawn` (перегляд, керування або запуск виконань субагентів для поточного сеансу) +- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (перегляд і керування сеансами середовища виконання ACP) +- `/agents` (показати агентів, прив’язаних до гілок, для цього сеансу) +- `/focus ` (Discord: прив’язати цю гілку або нову гілку до цілі сеансу/субагента) +- `/unfocus` (Discord: прибрати поточну прив’язку гілки) +- `/kill ` (негайно перервати один або всі запущені субагенти для цього сеансу; без повідомлення-підтвердження) +- `/steer ` (негайно спрямувати запущений субагент: під час виконання, якщо можливо, інакше перервати поточну роботу й перезапустити з повідомленням спрямування) - `/tell ` (псевдонім для `/steer`) -- `/config show|get|set|unset` (зберегти config на диск, лише для власника; потребує `commands.config: true`) -- `/mcp show|get|set|unset` (керування config сервера OpenClaw MCP, лише для власника; потребує `commands.mcp: true`) -- `/plugins list|show|get|install|enable|disable` (перегляд виявлених plugin, встановлення нових і перемикання стану ввімкнення; запис лише для власника; потребує `commands.plugins: true`) - - `/plugin` — псевдонім для `/plugins`. +- `/config show|get|set|unset` (зберегти конфігурацію на диск, лише для власника; потребує `commands.config: true`) +- `/mcp show|get|set|unset` (керування конфігурацією MCP-сервера OpenClaw, лише для власника; потребує `commands.mcp: true`) +- `/plugins list|show|get|install|enable|disable` (перегляд виявлених plugins, встановлення нових і перемикання стану ввімкнення; запис лише для власника; потребує `commands.plugins: true`) + - `/plugin` є псевдонімом для `/plugins`. - `/plugin install ` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:`. - - Записи enable/disable усе ще відповідають підказкою про перезапуск. На gateway переднього плану з watch OpenClaw може виконати цей перезапуск автоматично відразу після запису. -- `/debug show|set|unset|reset` (перевизначення runtime, лише для власника; потребує `commands.debug: true`) -- `/usage off|tokens|full|cost` (нижній колонтитул використання для кожної відповіді або локальний підсумок витрат) -- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (керування TTS; див. [/tts](/tools/tts)) + - Записи для увімкнення/вимкнення все одно повертають підказку про перезапуск. У gateway переднього плану з наглядом OpenClaw може автоматично виконати цей перезапуск одразу після запису. +- `/debug show|set|unset|reset` (перевизначення під час виконання, лише для власника; потребує `commands.debug: true`) +- `/usage off|tokens|full|cost` (нижній колонтитул використання для кожної відповіді або локальний підсумок вартості) +- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (керування TTS; див. [/tts](/uk/tools/tts)) - Discord: нативна команда — `/voice` (Discord резервує `/tts`); текстова `/tts` усе одно працює. - `/stop` - `/restart` @@ -120,80 +120,80 @@ x-i18n: - `/activation mention|always` (лише для груп) - `/send on|off|inherit` (лише для власника) - `/reset` або `/new [model]` (необов’язкова підказка моделі; решта передається далі) -- `/think ` (динамічні варіанти за моделлю/провайдером; псевдоніми: `/thinking`, `/t`) -- `/fast status|on|off` (без аргументу показує поточний ефективний стан fast mode) +- `/think ` (динамічні варіанти залежно від моделі/провайдера; псевдоніми: `/thinking`, `/t`) +- `/fast status|on|off` (якщо опустити аргумент, показує поточний ефективний стан швидкого режиму) - `/verbose on|full|off` (псевдонім: `/v`) - `/reasoning on|off|stream` (псевдонім: `/reason`; коли ввімкнено, надсилає окреме повідомлення з префіксом `Reasoning:`; `stream` = лише чернетка Telegram) -- `/elevated on|off|ask|full` (псевдонім: `/elev`; `full` пропускає схвалення exec) -- `/exec host= security= ask= node=` (надішліть `/exec`, щоб побачити поточне значення) +- `/elevated on|off|ask|full` (псевдонім: `/elev`; `full` пропускає погодження exec) +- `/exec host= security= ask= node=` (надішліть `/exec`, щоб показати поточне) - `/model ` (псевдонім: `/models`; або `/` з `agents.defaults.models.*.alias`) - `/queue ` (плюс параметри на кшталт `debounce:2s cap:25 drop:summarize`; надішліть `/queue`, щоб побачити поточні налаштування) -- `/bash ` (лише для host; псевдонім для `! `; потребує `commands.bash: true` + allowlist для `tools.elevated`) -- `/dreaming [on|off|status|help]` або `/dreaming [enable|disable] [light|deep|rem]` (перемкнути фази dreaming або показати стан; див. [Dreaming](/uk/concepts/dreaming)) +- `/bash ` (лише для хоста; псевдонім для `! `; потребує `commands.bash: true` + списків дозволу `tools.elevated`) +- `/dreaming [on|off|status|help]` (перемкнути глобальний dreaming або показати стан; див. [Dreaming](/uk/concepts/dreaming)) Лише текстові: - `/compact [instructions]` (див. [/concepts/compaction](/uk/concepts/compaction)) -- `! ` (лише для host; по одній за раз; використовуйте `!poll` + `!stop` для довготривалих завдань) +- `! ` (лише для хоста; по одній за раз; використовуйте `!poll` + `!stop` для довготривалих завдань) - `!poll` (перевірити вивід / стан; приймає необов’язковий `sessionId`; `/bash poll` також працює) - `!stop` (зупинити запущене завдання bash; приймає необов’язковий `sessionId`; `/bash stop` також працює) Примітки: -- Команди приймають необов’язковий `:` між командою й аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). -- `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігів немає, текст трактується як тіло повідомлення. -- Для повного розбору використання провайдера використовуйте `openclaw status --usage`. +- Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). +- `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст трактується як тіло повідомлення. +- Для повного розподілу використання провайдера використовуйте `openclaw status --usage`. - `/allowlist add|remove` потребує `commands.config=true` і враховує канал `configWrites`. -- У каналах з кількома обліковими записами `/allowlist --account `, націлений на config, і `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. -- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` друкує локальний підсумок витрат із логів сесій OpenClaw. -- `/restart` увімкнено за замовчуванням; установіть `commands.restart: false`, щоб вимкнути його. -- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потребує `channels.discord.voice` і нативних команд; недоступна як текст). -- Команди прив’язки потоків Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують, щоб ефективні прив’язки потоків були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). -- Довідка щодо команд ACP і поведінка runtime: [ACP Agents](/tools/acp-agents). +- У каналах з кількома обліковими записами `/allowlist --account `, націлений на конфігурацію, і `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. +- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний підсумок вартості з журналів сеансів OpenClaw. +- `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути його. +- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потребує `channels.discord.voice` і нативних команд; недоступна як текстова). +- Команди прив’язки гілок Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують, щоб ефективні прив’язки гілок були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). +- Довідник команд ACP і поведінка середовища виконання: [ACP Agents](/uk/tools/acp-agents). - `/verbose` призначено для налагодження та додаткової видимості; у звичайному використанні тримайте його **вимкненим**. -- `/fast on|off` зберігає перевизначення сесії. Використовуйте параметр `inherit` в UI Sessions, щоб очистити його та повернутися до типових значень config. -- `/fast` залежить від провайдера: OpenAI/OpenAI Codex маплять його на `service_tier=priority` у нативних endpoint Responses, тоді як прямі публічні запити Anthropic, включно з трафіком з OAuth-автентифікацією, надісланим до `api.anthropic.com`, маплять його на `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). -- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але детальний текст збоїв включається лише коли `/verbose` має значення `on` або `full`. -- `/reasoning` (і `/verbose`) ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування або вивід інструментів, які ви не хотіли показувати. Краще залишати їх вимкненими, особливо в групових чатах. -- `/model` негайно зберігає нову модель сесії. -- Якщо агент неактивний, наступний запуск одразу її використовує. +- `/fast on|off` зберігає перевизначення для сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions, щоб очистити його й повернутися до значень конфігурації за замовчуванням. +- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` у нативних ендпоінтах Responses, тоді як прямі публічні запити Anthropic, включно з трафіком з OAuth-аутентифікацією, надісланим до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). +- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`. +- `/reasoning` (і `/verbose`) ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування або вивід інструментів, який ви не планували показувати. Краще залишати їх вимкненими, особливо в групових чатах. +- `/model` негайно зберігає нову модель сеансу. +- Якщо агент простоює, наступний запуск використає її одразу. - Якщо виконання вже активне, OpenClaw позначає живе перемикання як очікуване й перезапускає на новій моделі лише в чистій точці повторної спроби. -- Якщо активність інструмента або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або до наступного ходу користувача. -- **Швидкий шлях:** повідомлення лише з командами від allowlisted відправників обробляються негайно (обхід черги + моделі). -- **Обмеження групових згадок:** повідомлення лише з командами від allowlisted відправників обходять вимоги щодо згадки. -- **Вбудовані скорочення (лише для allowlisted відправників):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і вилучаються до того, як модель побачить решту тексту. - - Приклад: `hey /status` викликає відповідь зі статусом, а решта тексту продовжує проходити звичайним потоком. +- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або наступного ходу користувача. +- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволу обробляються негайно (в обхід черги й моделі). +- **Керування згадками в групі:** повідомлення лише з командами від відправників зі списку дозволу обходять вимоги щодо згадок. +- **Вбудовані скорочення (лише для відправників зі списку дозволу):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту. + - Приклад: `hey /status` запускає відповідь про стан, а решта тексту продовжує оброблятися у звичайному потоці. - Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`). -- Неавторизовані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` трактуються як звичайний текст. -- **Команди skill:** skill із `user-invocable` надаються як slash commands. Назви санітизуються до `a-z0-9_` (максимум 32 символи); колізії отримують числові суфікси (наприклад, `_2`). - - `/skill [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дозволяють окремі команди для кожної skill). - - За замовчуванням команди skill пересилаються до моделі як звичайний запит. - - Skill можуть необов’язково оголошувати `command-dispatch: tool`, щоб маршрутизувати команду безпосередньо до інструмента (детерміновано, без моделі). +- Неавторизовані повідомлення лише з командами тихо ігноруються, а вбудовані токени `/...` трактуються як звичайний текст. +- **Skill-команди:** skills з `user-invocable` доступні як слеш-команди. Назви санітизуються до `a-z0-9_` (максимум 32 символи); у разі колізій додаються числові суфікси (наприклад, `_2`). + - `/skill [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дозволяють команди для кожного skill окремо). + - Типово skill-команди пересилаються моделі як звичайний запит. + - Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб маршрутити команду безпосередньо до інструмента (детерміновано, без моделі). - Приклад: `/prose` (plugin OpenProse) — див. [OpenProse](/uk/prose). -- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви пропускаєте аргумент. +- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви не вказали аргумент. ## `/tools` -`/tools` відповідає на питання про runtime, а не про config: **що цей агент може використовувати прямо зараз у +`/tools` відповідає на запитання про середовище виконання, а не про конфігурацію: **що цей агент може використовувати прямо зараз у цій розмові**. -- Типовий `/tools` компактний і оптимізований для швидкого перегляду. +- Типовий `/tools` є компактним і оптимізованим для швидкого перегляду. - `/tools verbose` додає короткі описи. -- Поверхні нативних команд, що підтримують аргументи, надають той самий перемикач режиму `compact|verbose`. -- Результати прив’язані до сесії, тож зміна агента, каналу, потоку, авторизації відправника або моделі може +- Поверхні з нативними командами, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`. +- Результати прив’язані до сеансу, тому зміна агента, каналу, гілки, авторизації відправника або моделі може змінити вивід. -- `/tools` включає інструменти, які реально доступні під час runtime, зокрема core-інструменти, інструменти - підключених plugin і інструменти, що належать каналам. +- `/tools` містить інструменти, які реально доступні під час виконання, включно з основними інструментами, підключеними + інструментами plugin і інструментами, що належать каналу. -Для редагування профілів і перевизначень використовуйте панель Tools у Control UI або поверхні config/catalog, а не -трактуйте `/tools` як статичний каталог. +Для редагування профілю та перевизначень використовуйте панель Tools у Control UI або поверхні конфігурації/каталогу, +а не трактуйте `/tools` як статичний каталог. ## Поверхні використання (що де показується) -- **Використання/квота провайдера** (наприклад: «Claude 80% left») з’являється в `/status` для поточного провайдера моделі, коли відстеження використання ввімкнене. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax поля відсотка, що показують лише залишок, інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model разом із міткою плану, прив’язаною до моделі. -- **Рядки токенів/кешу** в `/status` можуть резервно братися з найновішого запису використання транскрипту, коли поточний знімок сесії містить мало даних. Наявні ненульові поточні значення все ще мають пріоритет, а резервний перехід до транскрипту також може відновити мітку активної моделі runtime плюс більший загальний обсяг, орієнтований на запит, коли збережені підсумки відсутні або менші. -- **Токени/вартість для кожної відповіді** керуються через `/usage off|tokens|full` (додається до звичайних відповідей). -- `/model status` стосується **моделей/автентифікації/endpoint**, а не використання. +- **Використання/квота провайдера** (наприклад, «Claude 80% left») показується в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax відсоткові поля лише залишку інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану, прив’язаній до моделі. +- **Рядки token/cache** у `/status` можуть брати резервні значення з останнього запису використання в транскрипті, коли живий знімок сеансу є неповним. Наявні ненульові живі значення все одно мають пріоритет, а резерв із транскрипту також може відновити мітку активної моделі середовища виконання та більший загальний обсяг, орієнтований на prompt, коли збережені підсумки відсутні або менші. +- **Tokens/cost для кожної відповіді** керуються через `/usage off|tokens|full` (додаються до звичайних відповідей). +- `/model status` стосується **моделей/аутентифікації/ендпоінтів**, а не використання. ## Вибір моделі (`/model`) @@ -213,13 +213,13 @@ x-i18n: Примітки: - `/model` і `/model list` показують компактний нумерований вибір (сімейство моделей + доступні провайдери). -- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера та моделі плюс кроком Submit. -- `/model <#>` вибирає з цього списку (і за можливості віддає перевагу поточному провайдеру). -- `/model status` показує детальний вигляд, включно з налаштованим endpoint провайдера (`baseUrl`) і режимом API (`api`), коли доступно. +- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера та моделі й кроком Submit. +- `/model <#>` вибирає з цього списку (і, якщо можливо, віддає перевагу поточному провайдеру). +- `/model status` показує докладний вигляд, зокрема налаштований ендпоінт провайдера (`baseUrl`) і режим API (`api`), якщо доступно. ## Перевизначення налагодження -`/debug` дозволяє встановлювати **перевизначення лише для runtime** (пам’ять, а не диск). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.debug: true`. +`/debug` дає змогу задавати перевизначення конфігурації **лише під час виконання** (у пам’яті, не на диску). Лише для власника. Типово вимкнено; увімкніть через `commands.debug: true`. Приклади: @@ -233,12 +233,12 @@ x-i18n: Примітки: -- Перевизначення застосовуються негайно до нових читань config, але **не** записуються в `openclaw.json`. -- Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до config на диску. +- Перевизначення застосовуються негайно до нових читань конфігурації, але **не** записуються в `openclaw.json`. +- Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску. -## Оновлення config +## Оновлення конфігурації -`/config` записує у ваш config на диску (`openclaw.json`). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.config: true`. +`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. Типово вимкнено; увімкніть через `commands.config: true`. Приклади: @@ -252,12 +252,12 @@ x-i18n: Примітки: -- Config перевіряється перед записом; недійсні зміни відхиляються. -- Оновлення `/config` зберігаються після перезапуску. +- Перед записом конфігурація проходить валідацію; недійсні зміни відхиляються. +- Оновлення `/config` зберігаються після перезапусків. ## Оновлення MCP -`/mcp` записує визначення серверів MCP під керуванням OpenClaw у `mcp.servers`. Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.mcp: true`. +`/mcp` записує визначення MCP-серверів, керованих OpenClaw, у `mcp.servers`. Лише для власника. Типово вимкнено; увімкніть через `commands.mcp: true`. Приклади: @@ -270,12 +270,12 @@ x-i18n: Примітки: -- `/mcp` зберігає config у config OpenClaw, а не в налаштуваннях проєкту під керуванням Pi. -- Адаптери runtime вирішують, які транспорти справді можна виконати. +- `/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. +- Адаптери середовища виконання вирішують, які транспорти реально можна виконати. -## Оновлення plugin +## Оновлення plugins -`/plugins` дозволяє операторам переглядати виявлені plugin і перемикати стан ввімкнення в config. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. За замовчуванням вимкнено; увімкніть через `commands.plugins: true`. +`/plugins` дає операторам змогу переглядати виявлені plugins і перемикати стан увімкнення в конфігурації. Для сценаріїв лише читання можна використовувати `/plugin` як псевдонім. Типово вимкнено; увімкніть через `commands.plugins: true`. Приклади: @@ -289,30 +289,30 @@ x-i18n: Примітки: -- `/plugins list` і `/plugins show` використовують реальне виявлення plugin на основі поточного workspace плюс config на диску. -- `/plugins enable|disable` оновлює лише config plugin; воно не встановлює й не видаляє plugin. -- Після змін enable/disable перезапустіть gateway, щоб застосувати їх. +- `/plugins list` і `/plugins show` використовують реальне виявлення plugins для поточного workspace і конфігурації на диску. +- `/plugins enable|disable` оновлює лише конфігурацію plugin; команди не встановлюють і не видаляють plugins. +- Після змін увімкнення/вимкнення перезапустіть gateway, щоб застосувати їх. -## Примітки щодо поверхонь +## Примітки про поверхні -- **Текстові команди** виконуються в звичайній сесії чату (DM використовують `main`, групи мають власну сесію). -- **Нативні команди** використовують ізольовані сесії: +- **Текстові команди** виконуються у звичайному сеансі чату (DM ділять `main`, групи мають власний сеанс). +- **Нативні команди** використовують ізольовані сеанси: - Discord: `agent::discord:slash:` - Slack: `agent::slack:slash:` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`) - - Telegram: `telegram:slash:` (націлюється на сесію чату через `CommandTargetSessionKey`) -- **`/stop`** націлюється на активну сесію чату, щоб можна було перервати поточне виконання. -- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви ввімкнете `commands.native`, ви маєте створити одну slash command Slack для кожної вбудованої команди (з тими самими назвами, що й `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit. - - Нативний виняток Slack: зареєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстова `/status` у повідомленнях Slack усе одно працює. + - Telegram: `telegram:slash:` (націлюється на сеанс чату через `CommandTargetSessionKey`) +- **`/stop`** націлюється на активний сеанс чату, щоб можна було перервати поточне виконання. +- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну слеш-команду Slack для кожної вбудованої команди (з тими самими назвами, що й у `/help`). Меню аргументів команд для Slack доставляються як тимчасові кнопки Block Kit. + - Виняток для нативної команди Slack: зареєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстова `/status` у повідомленнях Slack усе одно працює. ## Побічні запитання BTW -`/btw` — це швидке **побічне запитання** про поточну сесію. +`/btw` — це швидке **побічне запитання** про поточний сеанс. На відміну від звичайного чату: -- воно використовує поточну сесію як фоновий контекст, -- воно виконується як окремий **одноразовий виклик без інструментів**, -- воно не змінює майбутній контекст сесії, +- воно використовує поточний сеанс як фоновий контекст, +- воно виконується як окремий одноразовий виклик **без інструментів**, +- воно не змінює майбутній контекст сеансу, - воно не записується в історію транскрипту, - воно доставляється як живий побічний результат, а не як звичайне повідомлення асистента. @@ -325,4 +325,5 @@ x-i18n: /btw what are we doing right now? ``` -Повну поведінку та подробиці UX клієнта див. у [BTW Side Questions](/tools/btw). +Див. [BTW Side Questions](/uk/tools/btw), щоб ознайомитися з повною поведінкою та +деталями UX клієнта. diff --git a/docs/uk/tools/video-generation.md b/docs/uk/tools/video-generation.md index 781f7816f..8014dcba8 100644 --- a/docs/uk/tools/video-generation.md +++ b/docs/uk/tools/video-generation.md @@ -2,108 +2,164 @@ read_when: - Генерація відео через агента - Налаштування провайдерів і моделей для генерації відео - - Розуміння параметрів інструмента video_generate -summary: Створюйте відео за допомогою налаштованих провайдерів, таких як Alibaba, OpenAI, Google, Qwen, MiniMax і Runway + - Розуміння параметрів інструмента `video_generate` +summary: Генеруйте відео з тексту, зображень або наявних відео за допомогою 10 бекендів провайдерів title: Генерація відео x-i18n: - generated_at: "2026-04-06T00:20:03Z" + generated_at: "2026-04-06T00:34:01Z" model: gpt-5.4 provider: openai - source_hash: 9917245069c39676a7e33afe4800d9c528300e8489a35a28aa6c0356d65b2282 + source_hash: 62ed5a9d246f17507c5a6f3db07ecc2f86d1c4cf32f82796c287d298181c7931 source_path: tools/video-generation.md workflow: 15 --- # Генерація відео -Інструмент `video_generate` дає змогу агенту створювати відео за допомогою ваших налаштованих провайдерів. У сеансах агента OpenClaw запускає генерацію відео як фонове завдання, відстежує її в журналі завдань, а потім знову активує агента, коли кліп буде готовий, щоб агент міг надіслати завершене відео назад в оригінальний канал. +Агенти OpenClaw можуть генерувати відео з текстових запитів, еталонних зображень або наявних відео. Підтримуються десять бекендів провайдерів, кожен із різними варіантами моделей, режимами введення та наборами можливостей. Агент автоматично вибирає правильного провайдера на основі вашої конфігурації та доступних API-ключів. -Інструмент з’являється лише тоді, коли доступний принаймні один провайдер генерації відео. Якщо ви не бачите `video_generate` серед інструментів вашого агента, налаштуйте `agents.defaults.videoGenerationModel` або задайте API-ключ провайдера. - - - -У сеансах агента `video_generate` одразу повертає id завдання/run id. Фактичне завдання провайдера продовжується у фоновому режимі. Коли воно завершується, OpenClaw надсилає в той самий сеанс внутрішню подію завершення, щоб агент міг надіслати звичайне подальше повідомлення разом із вкладенням згенерованого відео. +Інструмент `video_generate` з’являється лише тоді, коли доступний принаймні один провайдер генерації відео. Якщо ви не бачите його серед інструментів агента, задайте API-ключ провайдера або налаштуйте `agents.defaults.videoGenerationModel`. ## Швидкий старт -1. Задайте API-ключ принаймні для одного провайдера (наприклад, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `MODELSTUDIO_API_KEY`, `QWEN_API_KEY` або `RUNWAYML_API_SECRET`). -2. За бажанням задайте бажану модель: +1. Задайте API-ключ для будь-якого підтримуваного провайдера: + +```bash +export GEMINI_API_KEY="your-key" +``` + +2. За бажанням закріпіть типову модель: + +```bash +openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview" +``` + +3. Попросіть агента: + +> Згенеруй 5-секундне кінематографічне відео з дружнім лобстером, який серфить на заході сонця. + +Агент автоматично викликає `video_generate`. Дозволений список інструментів не потрібен. + +## Що відбувається під час генерації відео + +Генерація відео є асинхронною. Коли агент викликає `video_generate` у межах сеансу: + +1. OpenClaw надсилає запит провайдеру й одразу повертає ID завдання. +2. Провайдер обробляє завдання у фоновому режимі (зазвичай від 30 секунд до 5 хвилин залежно від провайдера та роздільної здатності). +3. Коли відео готове, OpenClaw пробуджує той самий сеанс внутрішньою подією завершення. +4. Агент публікує готове відео назад у вихідну розмову. + +Поки завдання виконується, повторні виклики `video_generate` у тому самому сеансі повертають поточний стан завдання замість запуску нової генерації. Використовуйте `openclaw tasks list` або `openclaw tasks show `, щоб перевірити прогрес із CLI. + +Поза межами запусків агента, прив’язаних до сеансу, (наприклад, під час прямих викликів інструмента) інструмент переходить до вбудованої генерації та повертає кінцевий шлях до медіафайлу в тому самому ході. + +## Підтримувані провайдери + +| Провайдер | Типова модель | Текст | Еталонне зображення | Еталонне відео | API-ключ | +| --------- | ------------------------------ | ----- | ------------------- | ---------------- | -------------------- | +| Alibaba | `wan2.6-t2v` | Так | Так (віддалений URL) | Так (віддалений URL) | `MODELSTUDIO_API_KEY` | +| BytePlus | `seedance-1-0-lite-t2v-250428` | Так | 1 зображення | Ні | `BYTEPLUS_API_KEY` | +| fal | `fal-ai/minimax/video-01-live` | Так | 1 зображення | Ні | `FAL_KEY` | +| Google | `veo-3.1-fast-generate-preview` | Так | 1 зображення | 1 відео | `GEMINI_API_KEY` | +| MiniMax | `MiniMax-Hailuo-2.3` | Так | 1 зображення | Ні | `MINIMAX_API_KEY` | +| OpenAI | `sora-2` | Так | 1 зображення | 1 відео | `OPENAI_API_KEY` | +| Qwen | `wan2.6-t2v` | Так | Так (віддалений URL) | Так (віддалений URL) | `QWEN_API_KEY` | +| Runway | `gen4.5` | Так | 1 зображення | 1 відео | `RUNWAYML_API_SECRET` | +| Together | `Wan-AI/Wan2.2-T2V-A14B` | Так | 1 зображення | Ні | `TOGETHER_API_KEY` | +| xAI | `grok-imagine-video` | Так | 1 зображення | 1 відео | `XAI_API_KEY` | + +Деякі провайдери приймають додаткові або альтернативні змінні середовища для API-ключів. Докладніше див. на окремих [сторінках провайдерів](#related). + +Запустіть `video_generate action=list`, щоб переглянути доступних провайдерів і моделі під час виконання. + +## Параметри інструмента + +### Обов’язкові + +| Параметр | Тип | Опис | +| -------- | ------ | --------------------------------------------------------------------------- | +| `prompt` | string | Текстовий опис відео для генерації (обов’язковий для `action: "generate"`) | + +### Вхідні дані контенту + +| Параметр | Тип | Опис | +| -------- | -------- | ------------------------------------ | +| `image` | string | Одне еталонне зображення (шлях або URL) | +| `images` | string[] | Кілька еталонних зображень (до 5) | +| `video` | string | Одне еталонне відео (шлях або URL) | +| `videos` | string[] | Кілька еталонних відео (до 4) | + +### Керування стилем + +| Параметр | Тип | Опис | +| ---------------- | ------- | ------------------------------------------------------------------------ | +| `aspectRatio` | string | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` | +| `resolution` | string | `480P`, `720P` або `1080P` | +| `durationSeconds` | number | Цільова тривалість у секундах (округлюється до найближчого значення, яке підтримує провайдер) | +| `size` | string | Підказка розміру, якщо провайдер це підтримує | +| `audio` | boolean | Увімкнути згенероване аудіо, якщо підтримується | +| `watermark` | boolean | Увімкнути або вимкнути водяний знак провайдера, якщо підтримується | + +### Додатково + +| Параметр | Тип | Опис | +| --------- | ------ | ----------------------------------------------- | +| `action` | string | `"generate"` (типово), `"status"` або `"list"` | +| `model` | string | Перевизначення провайдера/моделі (наприклад, `runway/gen4.5`) | +| `filename` | string | Підказка для імені вихідного файла | + +Не всі провайдери підтримують усі параметри. Непідтримувані перевизначення ігноруються за принципом best-effort і повідомляються як попередження в результаті інструмента. Жорсткі обмеження можливостей (наприклад, надто багато еталонних входів) призводять до помилки ще до надсилання. + +## Дії + +- **generate** (типово) — створити відео за вказаним запитом і необов’язковими еталонними входами. +- **status** — перевірити стан поточного відеозавдання для поточного сеансу без запуску нового. +- **list** — показати доступних провайдерів, моделі та їхні можливості. + +## Вибір моделі + +Під час генерації відео OpenClaw визначає модель у такому порядку: + +1. **Параметр інструмента `model`** — якщо агент задає його у виклику. +2. **`videoGenerationModel.primary`** — із конфігурації. +3. **`videoGenerationModel.fallbacks`** — пробуються по черзі. +4. **Автовизначення** — використовує провайдерів із чинною автентифікацією, починаючи з поточного типового провайдера, а потім решту провайдерів в алфавітному порядку. + +Якщо один провайдер завершується помилкою, автоматично пробується наступний кандидат. Якщо помиляються всі кандидати, помилка містить подробиці кожної спроби. ```json5 { agents: { defaults: { videoGenerationModel: { - primary: "qwen/wan2.6-t2v", + primary: "google/veo-3.1-fast-generate-preview", + fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"], }, }, }, } ``` -3. Попросіть агента: _"Згенеруй 5-секундне кінематографічне відео дружнього омара, який катається на серфі на заході сонця."_ +## Примітки щодо провайдерів -Агент викликає `video_generate` автоматично. Додавати його до списку дозволених інструментів не потрібно — його ввімкнено за замовчуванням, коли провайдер доступний. +| Провайдер | Примітки | +| --------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| Alibaba | Використовує асинхронну кінцеву точку DashScope/Model Studio. Еталонні зображення та відео мають бути віддаленими URL `http(s)`. | +| BytePlus | Лише одне еталонне зображення. | +| fal | Використовує потік на основі черги для довготривалих завдань. Лише одне еталонне зображення. | +| Google | Використовує Gemini/Veo. Підтримує одне еталонне зображення або одне еталонне відео. | +| MiniMax | Лише одне еталонне зображення. | +| OpenAI | Передається лише перевизначення `size`. Інші перевизначення стилю (`aspectRatio`, `resolution`, `audio`, `watermark`) ігноруються з попередженням. | +| Qwen | Такий самий бекенд DashScope, як і в Alibaba. Еталонні входи мають бути віддаленими URL `http(s)`; локальні файли відхиляються одразу. | +| Runway | Підтримує локальні файли через data URI. Для video-to-video потрібна `runway/gen4_aleph`. Для запусків лише з текстом доступні співвідношення сторін `16:9` і `9:16`. | +| Together | Лише одне еталонне зображення. | +| xAI | Підтримує потоки text-to-video, image-to-video і віддалене редагування/розширення відео. | -Для прямих синхронних контекстів без запуску агента на основі сеансу інструмент однаково повертається до вбудованої генерації та повертає фінальний шлях до медіафайлу в результаті інструмента. +## Конфігурація -## Підтримувані провайдери - -| Провайдер | Модель за замовчуванням | Вхідні референси | API-ключ | -| --------- | ------------------------------- | ----------------- | ---------------------------------------------------------- | -| Alibaba | `wan2.6-t2v` | Так, віддалені URL | `MODELSTUDIO_API_KEY`, `DASHSCOPE_API_KEY`, `QWEN_API_KEY` | -| BytePlus | `seedance-1-0-lite-t2v-250428` | 1 зображення | `BYTEPLUS_API_KEY` | -| fal | `fal-ai/minimax/video-01-live` | 1 зображення | `FAL_KEY` | -| Google | `veo-3.1-fast-generate-preview` | 1 зображення або 1 відео | `GEMINI_API_KEY`, `GOOGLE_API_KEY` | -| MiniMax | `MiniMax-Hailuo-2.3` | 1 зображення | `MINIMAX_API_KEY` | -| OpenAI | `sora-2` | 1 зображення або 1 відео | `OPENAI_API_KEY` | -| Qwen | `wan2.6-t2v` | Так, віддалені URL | `QWEN_API_KEY`, `MODELSTUDIO_API_KEY`, `DASHSCOPE_API_KEY` | -| Runway | `gen4.5` | 1 зображення або 1 відео | `RUNWAYML_API_SECRET`, `RUNWAY_API_KEY` | -| Together | `Wan-AI/Wan2.2-T2V-A14B` | 1 зображення | `TOGETHER_API_KEY` | -| xAI | `grok-imagine-video` | 1 зображення або 1 відео | `XAI_API_KEY` | - -Використовуйте `action: "list"`, щоб переглянути доступні провайдери та моделі під час виконання: - -``` -/tool video_generate action=list -``` - -## Параметри інструмента - -| Параметр | Тип | Опис | -| ---------------- | -------- | ------------------------------------------------------------------------------------------------- | -| `prompt` | string | Запит для генерації відео (обов’язковий для `action: "generate"`) | -| `action` | string | `"generate"` (типово), `"status"` для поточного завдання сеансу або `"list"` для перегляду провайдерів | -| `model` | string | Перевизначення провайдера/моделі, наприклад `qwen/wan2.6-t2v` | -| `image` | string | Шлях або URL одного референсного зображення | -| `images` | string[] | Кілька референсних зображень (до 5) | -| `video` | string | Шлях або URL одного референсного відео | -| `videos` | string[] | Кілька референсних відео (до 4) | -| `size` | string | Підказка щодо розміру, якщо провайдер це підтримує | -| `aspectRatio` | string | Співвідношення сторін: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` | -| `resolution` | string | Підказка щодо роздільної здатності: `480P`, `720P` або `1080P` | -| `durationSeconds` | number | Цільова тривалість у секундах. OpenClaw може округлити її до найближчого значення, підтримуваного провайдером | -| `audio` | boolean | Увімкнути генерацію аудіо, якщо провайдер це підтримує | -| `watermark` | boolean | Увімкнути або вимкнути водяний знак провайдера, якщо підтримується | -| `filename` | string | Підказка щодо імені вихідного файлу | - -Не всі провайдери підтримують усі параметри. Непідтримувані необов’язкові перевизначення ігноруються в міру можливості та повертаються в результаті інструмента як попередження. Жорсткі обмеження можливостей, як-от надто велика кількість референсних вхідних даних, усе ж спричиняють помилку до надсилання. Коли провайдер або модель підтримує лише дискретний набір тривалостей відео, OpenClaw округлює `durationSeconds` до найближчого підтримуваного значення та повідомляє нормалізовану тривалість у результаті інструмента. - -## Асинхронна поведінка - -- Запуски агента з підтримкою сеансів: `video_generate` створює фонове завдання, одразу повертає відповідь про запуск/завдання та пізніше надсилає готове відео в подальшому повідомленні агента. -- Запобігання дублюванню: поки це фонове завдання все ще має стан `queued` або `running`, подальші виклики `video_generate` у тому самому сеансі повертають стан завдання замість запуску нової генерації. -- Перевірка стану: використовуйте `action: "status"`, щоб переглянути активне відеозавдання, пов’язане з поточним сеансом, без запуску нового. -- Відстеження завдань: використовуйте `openclaw tasks list` / `openclaw tasks show `, щоб переглядати статуси queued, running і terminal для генерації. -- Активація після завершення: OpenClaw вставляє внутрішню подію завершення назад у той самий сеанс, щоб модель могла сама написати видиме для користувача подальше повідомлення. -- Підказка для запиту: пізніші користувацькі/ручні ходи в тому самому сеансі отримують невелику підказку під час виконання, коли завдання відео вже виконується, щоб модель не викликала `video_generate` повторно навмання. -- Резервний режим без сеансу: прямі/локальні контексти без реального сеансу агента все одно виконуються вбудовано та повертають фінальний результат відео в тому самому ході. - -## Налаштування - -### Вибір моделі +Установіть типову модель генерації відео у вашій конфігурації OpenClaw: ```json5 { @@ -118,45 +174,25 @@ x-i18n: } ``` -### Порядок вибору провайдера +Або через CLI: -Під час генерації відео OpenClaw намагається використати провайдерів у такому порядку: - -1. Параметр **`model`** з виклику інструмента (якщо агент його вказує) -2. **`videoGenerationModel.primary`** з конфігурації -3. **`videoGenerationModel.fallbacks`** у заданому порядку -4. **Автовизначення** — використовує лише типові значення провайдерів, підкріплені автентифікацією: - - спочатку поточний типовий провайдер - - решта зареєстрованих провайдерів генерації відео в порядку id провайдера - -Якщо провайдер завершується помилкою, автоматично пробується наступний кандидат. Якщо завершується помилкою все, помилка містить подробиці про кожну спробу. - -## Примітки щодо провайдерів - -- Alibaba використовує асинхронний відеоендпойнт DashScope / Model Studio і наразі вимагає віддалених URL `http(s)` для референсних ресурсів. -- Google використовує Gemini/Veo і підтримує одне референсне зображення або відео. -- MiniMax, Together, BytePlus і fal наразі підтримують одне референсне зображення. -- OpenAI використовує нативний відеоендпойнт і наразі типово використовує `sora-2`. -- Qwen підтримує референсні зображення/відео, але вихідний відеоендпойнт DashScope наразі вимагає для них віддалені URL `http(s)`. -- Runway використовує нативний API асинхронних завдань з опитуванням `GET /v1/tasks/{id}` і наразі типово використовує `gen4.5`. -- xAI використовує нативний API відео xAI і підтримує сценарії text-to-video, image-to-video, а також віддалене редагування/подовження відео. -- fal використовує чергу fal для відео завдань із тривалим виконанням замість одного блокувального запиту інференсу. - -## Референсні входи Qwen - -Вбудований провайдер Qwen підтримує text-to-video, а також режими з референсними зображеннями/відео, але вихідний відеоендпойнт DashScope наразі вимагає **віддалені URL `http(s)`** для референсних вхідних даних. Локальні шляхи до файлів і завантажені буфери відхиляються одразу, а не тихо ігноруються. +```bash +openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v" +``` ## Пов’язані матеріали -- [Огляд інструментів](/uk/tools) — усі доступні інструменти агента -- [Фонові завдання](/uk/automation/tasks) — відстеження завдань для відокремлених запусків `video_generate` -- [Alibaba Model Studio](/uk/providers/alibaba) — пряме налаштування провайдера Wan -- [Google (Gemini)](/uk/providers/google) — налаштування провайдера Veo -- [MiniMax](/uk/providers/minimax) — налаштування провайдера Hailuo -- [OpenAI](/uk/providers/openai) — налаштування провайдера Sora -- [Qwen](/uk/providers/qwen) — налаштування та обмеження, специфічні для Qwen -- [Runway](/uk/providers/runway) — налаштування Runway і поточні примітки щодо моделей/вхідних даних -- [Together AI](/uk/providers/together) — налаштування провайдера Together Wan -- [xAI](/uk/providers/xai) — налаштування провайдера відео Grok -- [Довідник з конфігурації](/uk/gateway/configuration-reference#agent-defaults) — конфігурація `videoGenerationModel` -- [Моделі](/uk/concepts/models) — конфігурація моделей і резервне перемикання +- [Огляд інструментів](/uk/tools) +- [Фонові завдання](/uk/automation/tasks) — відстеження завдань для асинхронної генерації відео +- [Alibaba Model Studio](/uk/providers/alibaba) +- [BytePlus](/providers/byteplus) +- [fal](/uk/providers/fal) +- [Google (Gemini)](/uk/providers/google) +- [MiniMax](/uk/providers/minimax) +- [OpenAI](/uk/providers/openai) +- [Qwen](/uk/providers/qwen) +- [Runway](/uk/providers/runway) +- [Together AI](/uk/providers/together) +- [xAI](/uk/providers/xai) +- [Довідник із конфігурації](/uk/gateway/configuration-reference#agent-defaults) +- [Моделі](/uk/concepts/models)