diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md index 51a34b9c2..f8d59a4fb 100644 --- a/docs/uk/channels/slack.md +++ b/docs/uk/channels/slack.md @@ -1,28 +1,28 @@ --- read_when: - - Налаштування Slack або налагодження режиму socket/HTTP у Slack + - Налаштування Slack або налагодження режиму сокета/HTTP у Slack summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів) title: Slack x-i18n: - generated_at: "2026-04-24T23:03:44Z" + generated_at: "2026-04-24T23:30:39Z" model: gpt-5.4 provider: openai - source_hash: aef3302e3c535f6e4eaba8460b3a89fcfa7043a8a6da856f4a734c2d997c9374 + source_hash: d0ab5b0865102175477bacac2ef948cdb2e42892fdfd5adb73afe89f0f482de5 source_path: channels/slack.md workflow: 15 --- -Готово до продакшн-використання для приватних повідомлень і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; також підтримуються URL-адреси HTTP-запитів. +Готово до production для особистих повідомлень і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; також підтримуються URL-адреси HTTP-запитів. - - Для приватних повідомлень Slack за замовчуванням використовується режим сполучення. + + Для особистих повідомлень Slack режим прив’язки використовується за замовчуванням. - - Нативна поведінка команд і каталог команд. + + Вбудована поведінка команд і каталог команд. - - Діагностика між каналами та сценарії виправлення. + + Міжканальна діагностика та інструкції з відновлення. @@ -34,8 +34,8 @@ x-i18n: У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - - виберіть **from a manifest** і виберіть робочий простір для вашого застосунку - - вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжуйте створення + - виберіть **from a manifest** і виберіть робочий простір для свого застосунку + - вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжте створення - згенеруйте **App-Level Token** (`xapp-...`) з `connections:write` - встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) @@ -55,7 +55,7 @@ x-i18n: } ``` - Резервне значення через змінні середовища (лише для облікового запису за замовчуванням): + Резервний варіант через змінні середовища (лише для облікового запису за замовчуванням): ```bash SLACK_APP_TOKEN=xapp-... @@ -80,7 +80,7 @@ openclaw gateway У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - - виберіть **from a manifest** і виберіть робочий простір для вашого застосунку + - виберіть **from a manifest** і виберіть робочий простір для свого застосунку - вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням - збережіть **Signing Secret** для перевірки запитів - встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) @@ -104,9 +104,9 @@ openclaw gateway ``` - Використовуйте унікальні шляхи webhook для багатьох HTTP-облікових записів + Використовуйте унікальні шляхи Webhook для багатокористувацького HTTP - Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували. + Для кожного облікового запису задавайте окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували. @@ -125,7 +125,7 @@ openclaw gateway ## Контрольний список маніфесту та scope -Базовий маніфест застосунку Slack однаковий для Socket Mode і URL-адрес HTTP-запитів. Відрізняється лише блок `settings` (і `url` для slash-команди). +Базовий маніфест застосунку Slack однаковий для Socket Mode і URL-адрес HTTP-запитів. Відрізняється лише блок `settings` (і `url` слеш-команди). Базовий маніфест (Socket Mode за замовчуванням): @@ -199,7 +199,7 @@ openclaw gateway } ``` -Для **режиму URL-адрес HTTP-запитів** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібна публічна URL-адреса: +Для **режиму URL-адрес HTTP-запитів** замініть `settings` на HTTP-варіант і додайте `url` до кожної слеш-команди. Потрібна публічна URL-адреса: ```json { @@ -229,19 +229,19 @@ openclaw gateway } ``` -### Додаткові параметри маніфесту +### Додаткові налаштування маніфесту -Показують різні можливості, які розширюють наведені вище параметри за замовчуванням. +Описано різні можливості, які розширюють наведені вище значення за замовчуванням. - + - Замість однієї налаштованої команди з нюансами можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior): + Можна використовувати кілька [вбудованих слеш-команд](#commands-and-slash-behavior) замість однієї налаштованої команди, з такими нюансами: - Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована. - - Одночасно можна зробити доступними не більше 25 slash-команд. + - Одночасно можна зробити доступними не більше 25 слеш-команд. - Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list): + Замініть наявний розділ `features.slash_commands` на підмножину [доступних команд](/uk/tools/slash-commands#command-list): @@ -385,9 +385,9 @@ openclaw gateway - Додайте bot scope `chat:write.customize`, якщо хочете, щоб у вихідних повідомленнях використовувалася identity активного агента (власне ім’я користувача та піктограма) замість identity застосунку Slack за замовчуванням. + Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні ім’я користувача та іконку) замість типової ідентичності застосунку Slack. - Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`. + Якщо ви використовуєте іконку emoji, Slack очікує синтаксис `:emoji_name:`. Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope читання є: @@ -405,27 +405,27 @@ openclaw gateway ## Модель токенів -- `botToken` + `appToken` обов’язкові для Socket Mode. -- Для HTTP-режиму потрібні `botToken` + `signingSecret`. -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті +- Для Socket Mode потрібні `botToken` + `appToken`. +- Для HTTP mode потрібні `botToken` + `signingSecret`. +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні текстові рядки або об’єкти SecretRef. - Токени в конфігурації мають пріоритет над резервними значеннями зі змінних середовища. -- Резервні значення через змінні середовища `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до облікового запису за замовчуванням. -- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного значення через змінні середовища) і за замовчуванням працює лише в режимі читання (`userTokenReadOnly: true`). +- Резервне значення зі змінних середовища `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням. +- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного значення через змінні середовища) і за замовчуванням працює лише для читання (`userTokenReadOnly: true`). Поведінка знімка стану: -- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status` - для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Перевірка облікового запису Slack відстежує для кожних облікових даних поля + `*Source` і `*Status` (`botToken`, `appToken`, `signingSecret`, `userToken`). - Статус може бути `available`, `configured_unavailable` або `missing`. - `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef - або інше неінлайнове джерело секретів, але поточний шлях команди/виконання + або інше не вбудоване джерело секретів, але поточний шлях команди/виконання не зміг визначити фактичне значення. -- У HTTP-режимі включається `signingSecretStatus`; у Socket Mode - обов’язковою парою є `botTokenStatus` + `appTokenStatus`. +- У HTTP mode включається `signingSecretStatus`; у Socket Mode + потрібна пара — `botTokenStatus` + `appTokenStatus`. -Для дій/читання каталогу токен користувача може мати пріоритет, якщо його налаштовано. Для запису пріоритетним лишається токен бота; запис через токен користувача дозволяється лише коли `userTokenReadOnly: false`, а токен бота недоступний. +Для дій/читання каталогів може надаватися перевага токену користувача, якщо його налаштовано. Для запису перевага все одно надається bot token; запис через user token дозволений лише коли `userTokenReadOnly: false`, а bot token недоступний. ## Дії та обмеження @@ -434,8 +434,8 @@ openclaw gateway Доступні групи дій у поточному інструментарії Slack: -| Група | За замовчуванням | -| ---------- | ---------------- | +| Група | Типово | +| ---------- | ------- | | messages | enabled | | reactions | enabled | | pins | enabled | @@ -447,29 +447,29 @@ openclaw gateway ## Керування доступом і маршрутизація - - `channels.slack.dmPolicy` керує доступом до приватних повідомлень (застаріле: `channels.slack.dm.policy`): + + `channels.slack.dmPolicy` керує доступом до DM (застаріле: `channels.slack.dm.policy`): - - `pairing` (за замовчуванням) + - `pairing` (типово) - `allowlist` - `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`) - `disabled` - Прапорці приватних повідомлень: + Прапорці DM: - - `dm.enabled` (за замовчуванням true) + - `dm.enabled` (типово true) - `channels.slack.allowFrom` (рекомендовано) - `dm.allowFrom` (застаріле) - - `dm.groupEnabled` (для групових приватних повідомлень за замовчуванням false) - - `dm.groupChannels` (необов’язковий allowlist для MPIM) + - `dm.groupEnabled` (для групових DM типово false) + - `dm.groupChannels` (необов’язковий allowlist MPIM) - Пріоритет для багатьох облікових записів: + Пріоритет для кількох облікових записів: - `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`. - Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано. - Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`. - Pairing у приватних повідомленнях використовує `openclaw pairing approve slack `. + Прив’язка в DM використовує `openclaw pairing approve slack `. @@ -480,28 +480,28 @@ openclaw gateway - `allowlist` - `disabled` - Allowlist каналів розміщується в `channels.slack.channels` і має використовувати стабільні ID каналів. + Allowlist каналів знаходиться в `channels.slack.channels` і має використовувати стабільні ID каналів. - Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через змінні середовища), під час виконання використовується резервне значення `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо встановлено `channels.defaults.groupPolicy`). + Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime використовує резервне значення `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`). - Визначення імені/ID: + Визначення імен/ID: - - записи allowlist каналів і записи allowlist приватних повідомлень визначаються під час запуску, якщо доступ токена це дозволяє - - записи імен каналів, які не вдалося визначити, зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації - - авторизація вхідних повідомлень і маршрутизація каналів за замовчуванням орієнтуються спочатку на ID; пряме зіставлення імені користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` + - записи allowlist каналів і DM allowlist визначаються під час запуску, якщо доступ токена це дозволяє + - нерозпізнані записи назв каналів зберігаються як налаштовано, але типово ігноруються під час маршрутизації + - авторизація вхідних повідомлень і маршрутизація каналів типово працюють за принципом ID-first; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` - Повідомлення в каналах за замовчуванням обробляються лише за наявності згадки. + Повідомлення в каналах типово проходять через обмеження за згадками. Джерела згадок: - явна згадка застосунку (`<@botId>`) - - шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення — `messages.groupChat.mentionPatterns`) - - неявна поведінка відповіді в треді боту (вимикається, коли `thread.requireExplicitMention` має значення `true`) + - шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`) + - неявна поведінка reply-to-bot у тредах (вимикається, коли `thread.requireExplicitMention` має значення `true`) - Керування на рівні каналу (`channels.slack.channels.`; імена — лише через визначення під час запуску або `dangerouslyAllowNameMatching`): + Керування для кожного каналу (`channels.slack.channels.`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`): - `requireMention` - `users` (allowlist) @@ -509,45 +509,45 @@ openclaw gateway - `skills` - `systemPrompt` - `tools`, `toolsBySender` - - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"` + - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"` (застарілі ключі без префікса, як і раніше, зіставляються лише з `id:`) -## Треди, сесії та теги відповідей +## Треди, сесії та теги відповіді -- Приватні повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`. -- Із типовим `session.dmScope=main` приватні повідомлення Slack згортаються в основну сесію агента. +- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`. +- Із типовим `session.dmScope=main` DM у Slack згортаються в основну сесію агента. - Сесії каналів: `agent::slack:channel:`. -- Відповіді в треді можуть створювати суфікси сесій треду (`:thread:`), коли це застосовно. +- Відповіді в тредах можуть створювати суфікси сесій тредів (`:thread:`), коли це застосовно. - Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`. -- `channels.slack.thread.initialHistoryLimit` керує кількістю наявних повідомлень треду, які отримуються під час запуску нової сесії треду (за замовчуванням `20`; встановіть `0`, щоб вимкнути). -- `channels.slack.thread.requireExplicitMention` (за замовчуванням `false`): якщо `true`, пригнічує неявні згадки в треді, тож бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де бот уже брав участь, обходять обмеження `requireMention`. +- `channels.slack.thread.initialHistoryLimit` визначає, скільки наявних повідомлень треду буде отримано, коли починається нова сесія треду (типово `20`; встановіть `0`, щоб вимкнути). +- `channels.slack.thread.requireExplicitMention` (типово `false`): коли має значення `true`, неявні згадки в тредах пригнічуються, і бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді за участю бота обходять обмеження `requireMention`. -Елементи керування тредами відповідей: +Керування тредами відповідей: -- `channels.slack.replyToMode`: `off|first|all|batched` (за замовчуванням `off`) -- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel` +- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`) +- `channels.slack.replyToModeByChatType`: для `direct|group|channel` - застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode` -Підтримуються ручні теги відповідей: +Підтримуються ручні теги відповіді: - `[[reply_to_current]]` - `[[reply_to:]]` -Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"` — у Slack треди приховують повідомлення з каналу, тоді як відповіді в Telegram залишаються видимими вбудовано. +Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"` — треди Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими вбудовано. -## Реакції підтвердження +## Реакції-підтвердження -`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення. +`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення. Порядок визначення: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- резервне значення emoji identity агента (`agents.list[].identity.emoji`, інакше "👀") +- резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀") Примітки: @@ -556,22 +556,22 @@ openclaw gateway ## Потокова передача тексту -`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі: +`channels.slack.streaming` керує поведінкою live preview: -- `off`: вимкнути потоковий попередній перегляд у реальному часі. -- `partial` (за замовчуванням): замінювати текст попереднього перегляду найновішим частковим виводом. -- `block`: додавати фрагментовані оновлення попереднього перегляду. -- `progress`: показувати текст стану поступу під час генерування, а потім надсилати остаточний текст. -- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/поступу в те саме редаговане повідомлення попереднього перегляду (за замовчуванням: `true`). Встановіть `false`, щоб зберегти окремі повідомлення для інструментів/поступу. +- `off`: вимкнути потокову live preview. +- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом. +- `block`: додавати оновлення попереднього перегляду частинами. +- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст. +- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Встановіть `false`, щоб залишити окремі повідомлення інструментів/прогресу. -`channels.slack.streaming.nativeTransport` керує нативною потоковою передачею тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (за замовчуванням: `true`). +`channels.slack.streaming.nativeTransport` керує нативною потоковою передачею тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`). -- Для нативної потокової передачі тексту та відображення стану треду асистента Slack має бути доступний тред відповіді. Вибір треду, як і раніше, визначається `replyToMode`. -- Кореневі повідомлення в каналах і групових чатах усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативна потокова передача недоступна. -- Приватні повідомлення Slack верхнього рівня за замовчуванням лишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в треді або `typingReaction`, якщо хочете бачити поступ там. -- Для медіа й нетекстових payload використовується звичайна доставка. -- Остаточні медіа/помилкові відповіді скасовують очікувані редагування попереднього перегляду; придатні остаточні текстові/block-відповіді скидаються лише тоді, коли можуть редагувати попередній перегляд на місці. -- Якщо потокова передача зламається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload. +- Для нативної потокової передачі тексту та появи статусу треду Slack assistant має бути доступний тред відповіді. Вибір треду, як і раніше, підпорядковується `replyToMode`. +- Корені каналів і групових чатів усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативна потокова передача недоступна. +- DM верхнього рівня в Slack типово залишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо там потрібен видимий прогрес. +- Для медіа та нетекстових payload використовується звичайне доставлення. +- Фінальні повідомлення media/error скасовують відкладені редагування попереднього перегляду; придатні фінальні повідомлення text/block скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці. +- Якщо потокова передача зламається посеред відповіді, OpenClaw переходить на звичайне доставлення для решти payload. Використовуйте чернетковий попередній перегляд замість нативної потокової передачі тексту Slack: @@ -590,13 +590,13 @@ openclaw gateway Застарілі ключі: -- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`. -- булеве `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. -- застаріле `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`. +- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрує до `channels.slack.streaming.mode`. +- булеве значення `channels.slack.streaming` автоматично мігрує до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. +- застаріле `channels.slack.nativeStreaming` автоматично мігрує до `channels.slack.streaming.nativeTransport`. -## Резервна реакція введення +## Резервна реакція набору тексту -`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найбільш корисно поза відповідями в треді, де використовується типовий індикатор стану "is typing...". +`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найкорисніше поза відповідями в тредах, де використовується типовий індикатор стану "is typing...". Порядок визначення: @@ -606,39 +606,39 @@ openclaw gateway Примітки: - Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`). -- Реакція є best-effort, і після завершення відповіді або шляху помилки автоматично робиться спроба очищення. +- Реакція виконується за принципом best-effort, а очищення автоматично намагається виконатися після завершення відповіді або шляху помилки. -## Медіа, розбиття на частини та доставка +## Медіа, розбиття на частини та доставлення - Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру. + Файлові вкладення Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру. - Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. + Типове обмеження розміру вхідних даних у runtime — `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`. - - текстові частини використовують `channels.slack.textChunkLimit` (за замовчуванням 4000) + - текстові частини використовують `channels.slack.textChunkLimit` (типово 4000) - `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами - - надсилання файлів використовує API завантаження Slack і може включати відповіді в треді (`thread_ts`) - - обмеження вихідних медіа використовує `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує типові значення MIME-kind із конвеєра медіа + - надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`) + - обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, якщо його налаштовано; інакше надсилання в канал використовують типові значення MIME-kind із медіапайплайна - + Бажані явні цілі: - - `user:` для приватних повідомлень + - `user:` для DM - `channel:` для каналів - Приватні повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача. + DM у Slack відкриваються через API розмов Slack під час надсилання до цілей користувача. -## Команди та поведінка slash-команд +## Команди та поведінка слеш-команд -Slash-команди відображаються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди: +Слеш-команди відображаються в Slack або як одна налаштована команда, або як кілька вбудованих команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди: - `enabled: false` - `name: "openclaw"` @@ -649,32 +649,32 @@ Slash-команди відображаються в Slack або як одна /openclaw /help ``` -Нативні команди потребують [додаткових параметрів маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або натомість через `commands.native: true` у глобальних конфігураціях. +Вбудовані команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях. -- Автоматичний режим нативних команд для Slack **вимкнений**, тому `commands.native: "auto"` не вмикає нативні команди Slack. +- Режим auto для вбудованих команд у Slack **вимкнений**, тому `commands.native: "auto"` не вмикає вбудовані команди Slack. ```txt /help ``` -Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед відправленням вибраного значення параметра: +Меню аргументів вбудованих команд використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед відправленням значення вибраного параметра: -- до 5 параметрів: блоки кнопок -- 6–100 параметрів: статичне меню вибору -- понад 100 параметрів: зовнішній вибір з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів інтерактивності -- перевищено ліміти Slack: закодовані значення параметрів повертаються до кнопок +- до 5 параметрів: button blocks +- 6-100 параметрів: static select menu +- понад 100 параметрів: external select з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів interactivity +- перевищено ліміти Slack: закодовані значення параметрів повертаються до buttons ```txt /think ``` -Сесії slash-команд використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до цільової сесії розмови через `CommandTargetSessionKey`. +Сесії слеш-команд використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до цільової сесії розмови через `CommandTargetSessionKey`. ## Інтерактивні відповіді -Slack може відображати інтерактивні елементи керування у відповідях, створених агентом, але цю можливість за замовчуванням вимкнено. +Slack може рендерити інтерактивні елементи відповіді, створені агентом, але ця можливість типово вимкнена. -Увімкнути глобально: +Увімкніть її глобально: ```json5 { @@ -688,7 +688,7 @@ Slack може відображати інтерактивні елементи } ``` -Або увімкнути лише для одного облікового запису Slack: +Або увімкніть її лише для одного облікового запису Slack: ```json5 { @@ -706,44 +706,43 @@ Slack може відображати інтерактивні елементи } ``` -Коли увімкнено, агенти можуть генерувати директиви відповідей лише для Slack: +Коли її ввімкнено, агенти можуть надсилати директиви відповіді лише для Slack: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -Ці директиви компілюються в Slack Block Kit і спрямовують натискання або вибір назад через наявний шлях подій взаємодії Slack. +Ці директиви компілюються в Slack Block Kit і маршрутизують натискання або вибір назад через наявний шлях подій взаємодії Slack. Примітки: -- Це інтерфейс, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок. -- Значення інтерактивних зворотних викликів — це непрозорі токени, згенеровані OpenClaw, а не необроблені значення, створені агентом. -- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання невалідного payload blocks. +- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок. +- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом. +- Якщо згенеровані інтерактивні блоки перевищують ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання невалідного payload blocks. -## Підтвердження exec у Slack +## Погодження exec у Slack -Slack може виступати як нативний клієнт підтвердження з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала. +Slack може працювати як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість переходу до Web UI або термінала. -- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації в приватних повідомленнях/каналах. -- Підтвердження Plugin також можуть визначатися через ту саму нативну поверхню кнопок Slack, коли запит уже потрапляє в Slack і тип ID підтвердження — `plugin:`. -- Авторизація того, хто підтверджує, усе одно застосовується: лише користувачі, ідентифіковані як ті, хто може підтверджувати, можуть схвалювати або відхиляти запити через Slack. +- Погодження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів. +- Погодження Plugin, як і раніше, можуть визначатися через ту саму Slack-native поверхню кнопок, коли запит уже надходить у Slack, а тип id погодження — `plugin:`. +- Авторизація того, хто погоджує, як і раніше, примусово перевіряється: лише користувачі, ідентифіковані як ті, хто погоджує, можуть погоджувати або відхиляти запити через Slack. -Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові. -Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw -має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що -підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом. +Це використовує ту саму спільну поверхню кнопок погодження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на погодження відображаються як кнопки Block Kit безпосередньо в розмові. +Коли ці кнопки присутні, вони є основним UX погодження; OpenClaw +має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що погодження в чаті недоступні або ручне погодження — єдиний шлях. Шлях конфігурації: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers` (необов’язково; за можливості використовує резервне значення з `commands.ownerAllowFrom`) -- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`) +- `channels.slack.execApprovals.approvers` (необов’язково; за можливості використовує резервне значення `commands.ownerAllowFrom`) +- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`) - `agentFilter`, `sessionFilter` -Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один -користувач, який може підтверджувати. Встановіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтвердження. -Встановіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли визначаються користувачі, які можуть підтверджувати. +Slack автоматично вмикає нативні погодження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один користувач, що погоджує. +Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження. +Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли визначаються користувачі, що погоджують. -Типова поведінка без явної конфігурації підтверджень exec для Slack: +Типова поведінка без явної конфігурації погодження exec для Slack: ```json5 { @@ -753,8 +752,8 @@ Slack автоматично вмикає нативні підтверджен } ``` -Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити тих, хто може підтверджувати, додати фільтри або -використовувати доставку в початковий чат: +Явна Slack-native конфігурація потрібна лише тоді, коли ви хочете перевизначити користувачів, що погоджують, додати фільтри або +використовувати доставлення до чату-джерела: ```json5 { @@ -770,37 +769,38 @@ Slack автоматично вмикає нативні підтверджен } ``` -Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на підтвердження exec також мають -маршрутизуватися до інших чатів або явно вказаних позасмугових цілей. Спільне переспрямування `approvals.plugin` також -налаштовується окремо; нативні кнопки Slack все одно можуть визначати підтвердження Plugin, коли ці запити вже надходять +Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на погодження exec також мають +маршрутизуватися до інших чатів або явно заданих зовнішніх цілей. Спільне переспрямування `approvals.plugin` також +налаштовується окремо; Slack-native кнопки все одно можуть обробляти погодження Plugin, коли ці запити вже надходять у Slack. -`/approve` у тому самому чаті також працює в каналах Slack і приватних повідомленнях, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування підтверджень. +`/approve` у тому самому чаті також працює в каналах і DM Slack, які вже підтримують команди. Повну модель переспрямування погоджень див. у [Погодження exec](/uk/tools/exec-approvals). ## Події та операційна поведінка -- Редагування/видалення повідомлень і трансляції тредів зіставляються із системними подіями. +- Редагування/видалення повідомлень зіставляються із системними подіями. +- Thread broadcasts (відповіді в тредах з опцією "Also send to channel") обробляються як звичайні повідомлення користувачів. - Події додавання/видалення реакцій зіставляються із системними подіями. - Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень зіставляються із системними подіями. -- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`. -- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть додаватися до контексту маршрутизації. -- Ініціатор треду та початкове заповнення контексту історії треду фільтруються відповідно до налаштованих allowlist відправників, коли це застосовно. -- Дії блоків і взаємодії з модальними вікнами генерують структуровані системні події `Slack interaction: ...` з розширеними полями payload: +- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`. +- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть впроваджуватися в контекст маршрутизації. +- Ініціатор треду та початкове наповнення контексту історією треду фільтруються за налаштованими allowlist відправників, де це застосовно. +- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з насиченими полями payload: - дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*` - - події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналу та даними форм + - події модальних вікон `view_submission` і `view_closed` з метаданими маршрутизованого каналу та полями форм -## Довідник з конфігурації +## Довідник конфігурації -Основний довідник: [Довідник з конфігурації - Slack](/uk/gateway/config-channels#slack). +Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack). - + -- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` -- доступ до приватних повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застарілі: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` -- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; не вмикайте без потреби) +- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` +- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` +- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний режим; залишайте вимкненим, якщо немає потреби) - доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` -- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress` +- доставлення: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress` - операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` @@ -809,12 +809,12 @@ Slack автоматично вмикає нативні підтверджен - Перевірте по порядку: + Перевірте по черзі: - `groupPolicy` - allowlist каналів (`channels.slack.channels`) - `requireMention` - - allowlist `users` для конкретного каналу + - allowlist `users` для кожного каналу Корисні команди: @@ -826,14 +826,14 @@ openclaw doctor - + Перевірте: - `channels.slack.dm.enabled` - `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`) - - підтвердження pairing / записи allowlist - - події приватних повідомлень Slack Assistant: докладні журнали з `drop message_changed` - зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без + - погодження прив’язки / записи allowlist + - події Slack Assistant DM: докладні журнали з фразою `drop message_changed` + зазвичай означають, що Slack надіслав подію редагування треду Assistant без придатного для відновлення відправника-людини в метаданих повідомлення ```bash @@ -842,35 +842,35 @@ openclaw pairing list slack - - Перевірте токени бота й застосунку та ввімкнення Socket Mode в налаштуваннях застосунку Slack. + + Перевірте bot token + app token і те, що Socket Mode увімкнено в налаштуваннях застосунку Slack. Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або `appTokenStatus: "configured_unavailable"`, обліковий запис Slack - налаштований, але поточне середовище виконання не змогло визначити значення, - яке використовує SecretRef. + налаштовано, але поточний runtime не зміг визначити значення, + що надходить через SecretRef. - + Перевірте: - signing secret - шлях webhook - - URL-адреси запитів Slack (Events + Interactivity + Slash Commands) + - Slack Request URLs (Events + Interactivity + Slash Commands) - унікальний `webhookPath` для кожного HTTP-облікового запису - Якщо у знімках облікових записів з’являється `signingSecretStatus: "configured_unavailable"`, - HTTP-обліковий запис налаштований, але поточне середовище виконання не змогло - визначити signing secret, який використовує SecretRef. + Якщо в знімках облікового запису з’являється `signingSecretStatus: "configured_unavailable"`, + HTTP-обліковий запис налаштовано, але поточний runtime не зміг + визначити signing secret, що надходить через SecretRef. - - Перевірте, що саме ви планували використовувати: + + Перевірте, що саме ви хотіли використати: - - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack - - або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`) + - режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack + - або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`) Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів. @@ -880,11 +880,11 @@ openclaw pairing list slack ## Пов’язане - - Зіставити користувача Slack із Gateway. + + Прив’яжіть користувача Slack до Gateway. - Поведінка каналів і групових приватних повідомлень. + Поведінка каналів і групових DM. Маршрутизація вхідних повідомлень до агентів. @@ -895,7 +895,7 @@ openclaw pairing list slack Структура конфігурації та пріоритетність. - + Каталог команд і поведінка. diff --git a/docs/uk/cli/browser.md b/docs/uk/cli/browser.md index 4874225f2..801135596 100644 --- a/docs/uk/cli/browser.md +++ b/docs/uk/cli/browser.md @@ -1,15 +1,15 @@ --- read_when: - - Ви використовуєте `openclaw browser` і хочете приклади для типових завдань + - Ви використовуєте `openclaw browser` і хочете приклади для поширених завдань - Ви хочете керувати браузером, що працює на іншій машині, через вузол-хост - - Ви хочете підключитися до локального Chrome, у якому вже виконано вхід, через Chrome MCP -summary: Довідка CLI для `openclaw browser` (життєвий цикл, профілі, вкладки, дії, стан і налагодження) + - Ви хочете під’єднатися до свого локального Chrome із виконаним входом через Chrome MCP +summary: Довідник CLI для `openclaw browser` (життєвий цикл, профілі, вкладки, дії, стан і налагодження) title: Браузер x-i18n: - generated_at: "2026-04-24T04:11:43Z" + generated_at: "2026-04-24T23:30:41Z" model: gpt-5.4 provider: openai - source_hash: 1b93ea053b7fc047fad79397e0298cc530673a64d5873d98be9f910df1ea2fde + source_hash: 07d8aad1aa28f9504d201d156178e9d7d6aa59a684aa26cde84d7946480364f6 source_path: cli/browser.md workflow: 15 --- @@ -20,16 +20,16 @@ x-i18n: Пов’язане: -- Інструмент Browser + API: [Інструмент Browser](/uk/tools/browser) +- Інструмент браузера + API: [Browser tool](/uk/tools/browser) ## Поширені прапорці - `--url `: URL WebSocket Gateway (типово з конфігурації). - `--token `: токен Gateway (якщо потрібен). - `--timeout `: тайм-аут запиту (мс). -- `--expect-final`: очікувати фінальну відповідь Gateway. -- `--browser-profile `: вибрати профіль браузера (типовий береться з конфігурації). -- `--json`: машиночитаний вивід (де підтримується). +- `--expect-final`: чекати на фінальну відповідь Gateway. +- `--browser-profile `: вибрати профіль браузера (типовий із конфігурації). +- `--json`: вивід у машиночитному форматі (де підтримується). ## Швидкий старт (локально) @@ -42,7 +42,7 @@ openclaw browser --browser-profile openclaw snapshot ## Швидке усунення несправностей -Якщо `start` завершується помилкою `not reachable after start`, спочатку перевірте готовність CDP. Якщо `start` і `tabs` виконуються успішно, але `open` або `navigate` не працюють, площина керування браузером справна, і збій зазвичай спричинений політикою SSRF для навігації. +Якщо `start` завершується помилкою `not reachable after start`, спочатку перевірте готовність CDP. Якщо `start` і `tabs` виконуються успішно, але `open` або `navigate` завершуються помилкою, площина керування браузером працює справно, а причина зазвичай у політиці SSRF для навігації. Мінімальна послідовність: @@ -52,7 +52,7 @@ openclaw browser --browser-profile openclaw tabs openclaw browser --browser-profile openclaw open https://example.com ``` -Докладні вказівки: [Усунення несправностей Browser](/uk/tools/browser#cdp-startup-failure-vs-navigation-ssrf-block) +Докладні вказівки: [Усунення несправностей браузера](/uk/tools/browser#cdp-startup-failure-vs-navigation-ssrf-block) ## Життєвий цикл @@ -65,19 +65,15 @@ openclaw browser --browser-profile openclaw reset-profile Примітки: -- Для профілів `attachOnly` і віддалених CDP `openclaw browser stop` закриває - активну сесію керування та очищає тимчасові перевизначення емуляції, навіть - якщо OpenClaw сам не запускав процес браузера. -- Для локальних керованих профілів `openclaw browser stop` зупиняє запущений - процес браузера. +- Для профілів `attachOnly` і віддалених профілів CDP команда `openclaw browser stop` закриває активну сесію керування та очищає тимчасові перевизначення емуляції, навіть якщо OpenClaw не запускав процес браузера самостійно. +- Для локальних керованих профілів `openclaw browser stop` зупиняє запущений процес браузера. ## Якщо команда відсутня -Якщо `openclaw browser` — невідома команда, перевірте `plugins.allow` у +Якщо `openclaw browser` є невідомою командою, перевірте `plugins.allow` у `~/.openclaw/openclaw.json`. -Коли `plugins.allow` присутній, вбудований Plugin браузера має бути вказаний -явно: +Коли `plugins.allow` присутній, вбудований Plugin браузера має бути явно вказаний у списку: ```json5 { @@ -87,18 +83,17 @@ openclaw browser --browser-profile openclaw reset-profile } ``` -`browser.enabled=true` не відновлює підкоманду CLI, якщо список дозволених Plugin -виключає `browser`. +`browser.enabled=true` не відновлює підкоманду CLI, якщо список дозволених Plugin-ів виключає `browser`. -Пов’язане: [Інструмент Browser](/uk/tools/browser#missing-browser-command-or-tool) +Пов’язане: [Browser tool](/uk/tools/browser#missing-browser-command-or-tool) ## Профілі Профілі — це іменовані конфігурації маршрутизації браузера. На практиці: -- `openclaw`: запускає або підключається до окремого екземпляра Chrome, керованого OpenClaw (ізольований каталог користувацьких даних). -- `user`: керує вашою наявною сесією Chrome, у якій уже виконано вхід, через Chrome DevTools MCP. -- власні профілі CDP: вказують на локальну або віддалену кінцеву точку CDP. +- `openclaw`: запускає або під’єднується до окремого екземпляра Chrome, керованого OpenClaw (ізольований каталог користувацьких даних). +- `user`: керує вашою наявною сесією Chrome з виконаним входом через Chrome DevTools MCP. +- користувацькі профілі CDP: вказують на локальну або віддалену кінцеву точку CDP. ```bash openclaw browser profiles @@ -118,14 +113,18 @@ openclaw browser --browser-profile work tabs ```bash openclaw browser tabs -openclaw browser tab new +openclaw browser tab new --label docs +openclaw browser tab label t1 docs openclaw browser tab select 2 openclaw browser tab close 2 -openclaw browser open https://docs.openclaw.ai -openclaw browser focus -openclaw browser close +openclaw browser open https://docs.openclaw.ai --label docs +openclaw browser focus docs +openclaw browser close t1 ``` +`tabs` повертає сирий `targetId` і стабільний `tabId`, наприклад `t1`. Ви також можете призначити мітку за допомогою `open --label`, `tab new --label` або `tab label`. +`focus`, `close`, знімки та дії приймають сирий `targetId`, `tabId`, мітку або унікальний префікс target-id. + ## Знімок / знімок екрана / дії Знімок: @@ -144,12 +143,10 @@ openclaw browser screenshot --ref e12 Примітки: -- `--full-page` призначений лише для знімків сторінки; його не можна поєднувати з `--ref` - або `--element`. -- Профілі `existing-session` / `user` підтримують знімки екрана сторінки та знімки - екрана `--ref` із виводу snapshot, але не підтримують знімки екрана CSS `--element`. +- `--full-page` призначений лише для захоплення сторінки; його не можна поєднувати з `--ref` або `--element`. +- Профілі `existing-session` / `user` підтримують знімки екрана сторінки та знімки екрана з `--ref` на основі виводу `snapshot`, але не підтримують знімки екрана CSS `--element`. -Навігація/клік/введення (автоматизація інтерфейсу на основі ref): +Navigate/click/type (автоматизація UI на основі ref): ```bash openclaw browser navigate https://example.com @@ -176,7 +173,7 @@ openclaw browser dialog --accept ## Стан і сховище -Область перегляду + емуляція: +Viewport + емуляція: ```bash openclaw browser resize 1280 720 @@ -191,7 +188,7 @@ openclaw browser set headers '{"x-test":"1"}' openclaw browser set credentials myuser mypass ``` -Файли cookie + сховище: +Cookies + сховище: ```bash openclaw browser cookies @@ -226,34 +223,31 @@ openclaw browser create-profile --name brave-live --driver existing-session --us openclaw browser --browser-profile chrome-live tabs ``` -Цей шлях працює лише на хості. Для Docker, безголових серверів, Browserless або інших віддалених налаштувань замість цього використовуйте профіль CDP. +Цей шлях доступний лише на хості. Для Docker, headless-серверів, Browserless або інших віддалених конфігурацій замість цього використовуйте профіль CDP. Поточні обмеження existing-session: -- дії на основі snapshot використовують ref, а не CSS-селектори -- `click` підтримує лише ліву кнопку миші +- дії на основі `snapshot` використовують ref, а не CSS-селектори +- `click` підтримує лише лівий клік - `type` не підтримує `slowly=true` - `press` не підтримує `delayMs` -- `hover`, `scrollintoview`, `drag`, `select`, `fill` і `evaluate` відхиляють - перевизначення тайм-ауту для окремого виклику +- `hover`, `scrollintoview`, `drag`, `select`, `fill` і `evaluate` відхиляють перевизначення тайм-ауту для окремого виклику - `select` підтримує лише одне значення - `wait --load networkidle` не підтримується -- завантаження файлів вимагає `--ref` / `--input-ref`, не підтримує CSS - `--element`, і наразі підтримує лише один файл за раз -- обробники діалогів не підтримують `--timeout` -- знімки екрана підтримують знімки сторінки та `--ref`, але не CSS `--element` -- `responsebody`, перехоплення завантажень, експорт PDF і пакетні дії досі - вимагають керований браузер або сирий профіль CDP +- завантаження файлів вимагає `--ref` / `--input-ref`, не підтримує CSS `--element` і наразі підтримує по одному файлу за раз +- хуки діалогів не підтримують `--timeout` +- знімки екрана підтримують захоплення сторінки та `--ref`, але не CSS `--element` +- `responsebody`, перехоплення завантажень, експорт PDF і пакетні дії, як і раніше, вимагають керованого браузера або сирого профілю CDP ## Віддалене керування браузером (проксі вузла-хоста) Якщо Gateway працює на іншій машині, ніж браузер, запустіть **вузол-хост** на машині, де є Chrome/Brave/Edge/Chromium. Gateway проксіюватиме дії браузера до цього вузла (окремий сервер керування браузером не потрібен). -Використовуйте `gateway.nodes.browser.mode`, щоб керувати автоматичною маршрутизацією, і `gateway.nodes.browser.node`, щоб закріпити конкретний вузол, якщо підключено кілька вузлів. +Використовуйте `gateway.nodes.browser.mode` для керування автоматичною маршрутизацією та `gateway.nodes.browser.node` для прив’язки до конкретного вузла, якщо під’єднано кілька вузлів. -Безпека + віддалене налаштування: [Інструмент Browser](/uk/tools/browser), [Віддалений доступ](/uk/gateway/remote), [Tailscale](/uk/gateway/tailscale), [Безпека](/uk/gateway/security) +Безпека + віддалене налаштування: [Browser tool](/uk/tools/browser), [Віддалений доступ](/uk/gateway/remote), [Tailscale](/uk/gateway/tailscale), [Безпека](/uk/gateway/security) ## Пов’язане -- [Довідка CLI](/uk/cli) +- [Довідник CLI](/uk/cli) - [Browser](/uk/tools/browser) diff --git a/docs/uk/concepts/system-prompt.md b/docs/uk/concepts/system-prompt.md index 696a6496b..ab39124a5 100644 --- a/docs/uk/concepts/system-prompt.md +++ b/docs/uk/concepts/system-prompt.md @@ -1,109 +1,102 @@ --- read_when: - - Редагування тексту системного prompt, списку інструментів або розділів часу/Heartbeat - - Зміна поведінки початкового налаштування workspace або ін’єкції Skills -summary: Що містить системний prompt OpenClaw і як він збирається -title: Системний prompt + - Редагування тексту системного промпту, списку інструментів або розділів часу/Heartbeat + - Зміна bootstrap робочого простору або поведінки інʼєкції Skills +summary: Що містить системний промпт OpenClaw і як він збирається +title: Системний промпт x-i18n: - generated_at: "2026-04-23T22:59:25Z" + generated_at: "2026-04-24T23:30:39Z" model: gpt-5.4 provider: openai - source_hash: ff0498b99974f1a75fc9b93ca46cc0bf008ebf234b429c05ee689a4a150d29f1 + source_hash: 83d9cc69fff164ba52d1fc1a9b04ea799f48dbd8b449bde63473c6dec4cb026a source_path: concepts/system-prompt.md workflow: 15 --- -OpenClaw збирає власний системний prompt для кожного запуску агента. Prompt **належить OpenClaw** і не використовує типовий prompt pi-coding-agent. +OpenClaw створює власний системний промпт для кожного запуску агента. Промпт **належить OpenClaw** і не використовує стандартний промпт pi-coding-agent. -Prompt збирається OpenClaw і ін’єктується в кожен запуск агента. +Промпт збирається OpenClaw і впроваджується в кожен запуск агента. -Provider plugins можуть додавати cache-aware вказівки для prompt без заміни -повного prompt, що належить OpenClaw. Runtime provider може: +Плагіни провайдерів можуть додавати вказівки для промпту з урахуванням кешу, не замінюючи при цьому весь промпт, що належить OpenClaw. Середовище виконання провайдера може: -- замінювати невеликий набір іменованих базових розділів (`interaction_style`, +- замінювати невеликий набір іменованих основних розділів (`interaction_style`, `tool_call_style`, `execution_bias`) -- ін’єктувати **стабільний префікс** над межею кешу prompt -- ін’єктувати **динамічний суфікс** під межею кешу prompt +- впроваджувати **стабільний префікс** над межею кешу промпту +- впроваджувати **динамічний суфікс** під межею кешу промпту -Використовуйте внески, що належать provider, для налаштування під конкретні сімейства моделей. Залишайте застарілу -мутацію prompt через `before_prompt_build` для сумісності або справді глобальних змін prompt, а не для звичайної поведінки provider. +Використовуйте внески, що належать провайдеру, для налаштування під конкретні сімейства моделей. Зберігайте застарілу мутацію промпту `before_prompt_build` для сумісності або справді глобальних змін промпту, а не для звичайної поведінки провайдера. -Накладка для сімейства OpenAI GPT-5 зберігає базове правило виконання невеликим і додає -специфічні для моделі вказівки щодо фіксації persona, лаконічного виводу, дисципліни інструментів, -паралельного пошуку, охоплення deliverable, перевірки, відсутнього контексту та -гігієни terminal-tool. +Оверлей для сімейства OpenAI GPT-5 зберігає основне правило виконання компактним і додає вказівки, специфічні для моделі: фіксація персони, лаконічний вивід, дисципліна використання інструментів, паралельний пошук, охоплення результатів, перевірка, відсутній контекст і гігієна інструментів термінала. ## Структура -Prompt навмисно компактний і використовує фіксовані розділи: +Промпт навмисно компактний і використовує фіксовані розділи: -- **Tooling**: нагадування про джерело істини для structured-tool плюс вказівки щодо використання runtime-інструментів. -- **Execution Bias**: компактні вказівки щодо доведення до кінця: діяти в поточному ході на - запити, які можна виконати, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів, - перевіряти змінний стан наживо та верифікувати перед фіналізацією. -- **Safety**: коротке нагадування про запобіжники, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду. -- **Skills** (коли доступні): пояснює моделі, як завантажувати інструкції Skills на вимогу. -- **OpenClaw Self-Update**: як безпечно інспектувати конфігурацію за допомогою - `config.schema.lookup`, змінювати конфігурацію через `config.patch`, замінювати всю - конфігурацію через `config.apply` і запускати `update.run` лише на явний запит користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати +- **Інструменти**: нагадування про структуровані інструменти як джерело істини плюс вказівки щодо використання інструментів під час виконання. +- **Ухил виконання**: компактні вказівки щодо доведення справ до кінця: діяти в межах поточного ходу для запитів, які можна виконати, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів, перевіряти змінний стан наживо та верифікувати перед завершенням. +- **Безпека**: коротке нагадування про запобіжники, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду. +- **Skills** (коли доступні): повідомляє моделі, як завантажувати інструкції Skills за потреби. +- **Самооновлення OpenClaw**: як безпечно перевіряти конфігурацію за допомогою + `config.schema.lookup`, змінювати конфігурацію за допомогою `config.patch`, замінювати всю + конфігурацію за допомогою `config.apply` і запускати `update.run` лише за явним + запитом користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати `tools.exec.ask` / `tools.exec.security`, включно із застарілими - псевдонімами `tools.bash.*`, які нормалізуються до цих захищених exec-шляхів. -- **Workspace**: робочий каталог (`agents.defaults.workspace`). -- **Documentation**: локальний шлях до документації OpenClaw (репозиторій або npm package) і коли її читати. -- **Workspace Files (injected)**: вказує, що bootstrap-файли включено нижче. -- **Sandbox** (коли ввімкнено): вказує sandboxed runtime, шляхи sandbox і те, чи доступний підвищений exec. -- **Current Date & Time**: локальний час користувача, часовий пояс і формат часу. -- **Reply Tags**: необов’язковий синтаксис тегів відповіді для підтримуваних provider. -- **Heartbeats**: Heartbeat-prompt і поведінка підтвердження, коли Heartbeat увімкнено для типового агента. -- **Runtime**: хост, ОС, node, модель, корінь репозиторію (коли виявлено), рівень мислення (один рядок). -- **Reasoning**: поточний рівень видимості + підказка перемикання `/reasoning`. + псевдонімами `tools.bash.*`, які нормалізуються до цих захищених шляхів exec. +- **Робочий простір**: робочий каталог (`agents.defaults.workspace`). +- **Документація**: локальний шлях до документації OpenClaw (репозиторій або npm package) і коли її читати. +- **Файли робочого простору (впроваджені)**: вказує, що bootstrap-файли включено нижче. +- **Пісочниця** (коли ввімкнено): вказує на ізольоване середовище виконання, шляхи пісочниці та чи доступне підвищене виконання. +- **Поточна дата й час**: локальний час користувача, часовий пояс і формат часу. +- **Теги відповіді**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів. +- **Heartbeat**: промпт Heartbeat і поведінка підтвердження, коли Heartbeat увімкнено для стандартного агента. +- **Середовище виконання**: хост, ОС, node, модель, корінь репозиторію (коли визначено), рівень мислення (одним рядком). +- **Міркування**: поточний рівень видимості + підказка перемикання /reasoning. -Розділ Tooling також містить runtime-вказівки для довготривалої роботи: +Розділ «Інструменти» також містить вказівки під час виконання для довготривалої роботи: -- використовуйте Cron для відкладеного follow-up (`check back later`, нагадування, періодична робота) - замість циклів сну через `exec`, прийомів затримки `yieldMs` або повторного +- використовуйте cron для подальших дій у майбутньому (`check back later`, нагадування, повторювана робота) + замість циклів сну через `exec`, трюків із затримкою `yieldMs` або повторного опитування `process` - використовуйте `exec` / `process` лише для команд, які запускаються зараз і продовжують виконуватися у фоновому режимі -- коли ввімкнено автоматичне пробудження після завершення, запустіть команду один раз і покладайтеся на - push-based шлях пробудження, коли вона виведе результат або завершиться помилкою -- використовуйте `process` для журналів, статусу, введення або втручання, коли вам потрібно - інспектувати запущену команду -- якщо завдання більше, надавайте перевагу `sessions_spawn`; завершення субагента працює через - push-based механізм і автоматично анонсується назад запитувачу +- коли ввімкнено автоматичне пробудження після завершення, запускайте команду один раз і покладайтеся на + push-орієнтований механізм пробудження, коли вона виведе результат або завершиться з помилкою +- використовуйте `process` для логів, статусу, введення або втручання, коли вам потрібно + перевірити виконувану команду +- якщо завдання більше, віддавайте перевагу `sessions_spawn`; завершення субагента працює на основі + push і автоматично оголошується назад запитувачу - не опитуйте `subagents list` / `sessions_list` у циклі лише для очікування завершення -Коли ввімкнено експериментальний інструмент `update_plan`, Tooling також вказує -моделі використовувати його лише для нетривіальної багатокрокової роботи, підтримувати рівно один +Коли ввімкнено експериментальний інструмент `update_plan`, розділ «Інструменти» також повідомляє +моделі використовувати його лише для нетривіальної багатокрокової роботи, тримати рівно один крок `in_progress` і не повторювати весь план після кожного оновлення. -Запобіжники Safety у системному prompt мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують виконання політики. Для жорсткого контролю використовуйте політику інструментів, погодження exec, sandboxing і allowlist каналів; оператори можуть вимкнути це за задумом. +Запобіжники безпеки в системному промпті мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують примусове застосування політики. Для жорсткого забезпечення використовуйте політику інструментів, погодження exec, пісочницю та allowlist каналів; оператори можуть вимкнути їх за задумом. -У каналах із нативними картками/кнопками погодження runtime-prompt тепер вказує -агенту спершу покладатися на цей нативний UI погодження. Він має включати ручну -команду `/approve` лише тоді, коли результат інструмента каже, що погодження в чаті недоступне або -ручне погодження є єдиним шляхом. +У каналах із нативними картками/кнопками погодження промпт середовища виконання тепер повідомляє +агенту спочатку покладатися на цей нативний UI погодження. Він має включати ручну +команду `/approve` лише тоді, коли результат інструмента каже, що погодження в чаті недоступні або +ручне погодження — єдиний шлях. -## Режими prompt +## Режими промпту -OpenClaw може рендерити менші системні prompt для субагентів. Runtime встановлює -`promptMode` для кожного запуску (це не користувацька конфігурація): +OpenClaw може рендерити менші системні промпти для субагентів. Середовище виконання встановлює +`promptMode` для кожного запуску (це не користувацький параметр конфігурації): -- `full` (типово): включає всі розділи вище. -- `minimal`: використовується для субагентів; пропускає **Skills**, **Memory Recall**, **OpenClaw - Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**, - **Messaging**, **Silent Replies** і **Heartbeats**. Tooling, **Safety**, - Workspace, Sandbox, Current Date & Time (коли відомо), Runtime та ін’єктований +- `full` (типово): включає всі наведені вище розділи. +- `minimal`: використовується для субагентів; пропускає **Skills**, **Виклик пам’яті**, **Самооновлення OpenClaw**, **Псевдоніми моделей**, **Ідентичність користувача**, **Теги відповіді**, + **Повідомлення**, **Тихі відповіді** та **Heartbeat**. **Інструменти**, + **Безпека**, Робочий простір, Пісочниця, Поточна дата й час (коли відомо), Середовище виконання та впроваджений контекст залишаються доступними. - `none`: повертає лише базовий рядок ідентичності. -Коли `promptMode=minimal`, додаткові ін’єктовані prompt позначаються як **Subagent -Context**, а не **Group Chat Context**. +Коли `promptMode=minimal`, додаткові впроваджені промпти позначаються як **Контекст субагента** +замість **Контекст групового чату**. -## Ін’єкція bootstrap workspace +## Впровадження bootstrap робочого простору -Bootstrap-файли обрізаються та додаються в розділ **Project Context**, щоб модель бачила ідентичність і контекст профілю без потреби в явному читанні: +Bootstrap-файли обрізаються та додаються в розділ **Контекст проєкту**, щоб модель бачила контекст ідентичності та профілю без явного читання: - `AGENTS.md` - `SOUL.md` @@ -111,71 +104,74 @@ Bootstrap-файли обрізаються та додаються в розд - `IDENTITY.md` - `USER.md` - `HEARTBEAT.md` -- `BOOTSTRAP.md` (лише в абсолютно нових workspace) -- `MEMORY.md`, коли присутній +- `BOOTSTRAP.md` (лише в абсолютно нових робочих просторах) +- `MEMORY.md` за наявності -Усі ці файли **ін’єктуються у вікно контексту** на кожному ході, якщо не застосовується -окремий файловий запобіжник. `HEARTBEAT.md` пропускається у звичайних запусках, коли -Heartbeat вимкнено для типового агента або -`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Тримайте ін’єктовані -файли стислими — особливо `MEMORY.md`, який з часом може зростати й призводити до -неочікувано великого використання контексту та частішого Compaction. +Усі ці файли **впроваджуються у вікно контексту** на кожному ході, якщо не застосовується окремий бар’єр для файла. `HEARTBEAT.md` пропускається під час звичайних запусків, коли +Heartbeat вимкнено для стандартного агента або +`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Зберігайте впроваджені +файли лаконічними — особливо `MEMORY.md`, який з часом може розростатися та призводити до +неочікувано високого використання контексту й частішої Compaction. -> **Примітка:** щоденні файли `memory/*.md` **не** є частиною звичайного bootstrap -> Project Context. У звичайних ходах доступ до них відбувається на вимогу через +> **Примітка:** щоденні файли `memory/*.md` **не** входять до звичайного bootstrap +> Контексту проєкту. У звичайних ходах доступ до них відбувається за потреби через > інструменти `memory_search` і `memory_get`, тому вони не враховуються у -> вікні контексту, якщо модель явно їх не читає. Виняток — прості ходи `/new` і -> `/reset`: runtime може додавати нещодавню щоденну пам’ять як одноразовий блок -> стартового контексту для цього першого ходу. +> вікні контексту, якщо модель явно їх не читає. Виняток — порожні ходи `/new` і +> `/reset`: середовище виконання може додати нещодавню щоденну пам’ять як одноразовий +> блок стартового контексту для цього першого ходу. -Великі файли обрізаються з маркером. Максимальний розмір одного файла контролюється через -`agents.defaults.bootstrapMaxChars` (типово: 12000). Загальний обсяг ін’єктованого bootstrap-вмісту -між файлами обмежується через `agents.defaults.bootstrapTotalMaxChars` -(типово: 60000). Відсутні файли ін’єктують короткий маркер відсутності файла. Коли відбувається обрізання, -OpenClaw може ін’єктувати блок попередження в Project Context; це контролюється через +Великі файли обрізаються з маркером. Максимальний розмір на файл керується через +`agents.defaults.bootstrapMaxChars` (типово: 12000). Загальний обсяг впровадженого bootstrap-вмісту +в усіх файлах обмежено `agents.defaults.bootstrapTotalMaxChars` +(типово: 60000). Для відсутніх файлів впроваджується короткий маркер відсутнього файла. Коли відбувається обрізання, +OpenClaw може впроваджувати блок попередження в Контекст проєкту; це керується через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово: `once`). -Сесії субагентів ін’єктують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли +Сесії субагентів впроваджують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли відфільтровуються, щоб контекст субагента залишався малим). -Внутрішні hooks можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати -ін’єктовані bootstrap-файли (наприклад, підміняти `SOUL.md` альтернативною persona). +Внутрішні хуки можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати +впроваджені bootstrap-файли (наприклад, замінювати `SOUL.md` альтернативною персоною). Якщо ви хочете, щоб агент звучав менш шаблонно, почніть із -[Посібника з особистості SOUL.md](/uk/concepts/soul). +[Посібника з індивідуальності SOUL.md](/uk/concepts/soul). -Щоб перевірити, який внесок робить кожен ін’єктований файл (сирий vs ін’єктований, обрізання, а також накладні витрати schema інструментів), використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context). +Щоб перевірити, який внесок дає кожен впроваджений файл (сирий чи впроваджений, обрізання, а також накладні витрати на схему інструмента), використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context). -## Робота з часом +## Обробка часу -Системний prompt включає окремий розділ **Current Date & Time**, коли відомий -часовий пояс користувача. Щоб зберегти стабільність кешу prompt, тепер він містить лише +Системний промпт містить окремий розділ **Поточна дата й час**, коли +відомий часовий пояс користувача. Щоб зберігати стабільність кешу промпту, тепер він містить лише **часовий пояс** (без динамічного годинника чи формату часу). Використовуйте `session_status`, коли агенту потрібен поточний час; картка статусу -містить рядок із позначкою часу. Той самий інструмент також може за бажанням встановити -перевизначення моделі для сесії (`model=default` очищає його). +містить рядок позначки часу. Той самий інструмент також може за бажанням встановити перевизначення моделі +для сесії (`model=default` очищає його). Налаштовується через: - `agents.defaults.userTimezone` - `agents.defaults.timeFormat` (`auto` | `12` | `24`) -Див. [Дата й час](/uk/date-time) для повних подробиць поведінки. +Повну інформацію про поведінку див. у [Дата й час](/uk/date-time). ## Skills -Коли існують відповідні Skills, OpenClaw ін’єктує компактний **список доступних Skills** -(`formatSkillsForPrompt`), який включає **шлях до файла** для кожної Skill. Prompt -вказує моделі використовувати `read`, щоб завантажити `SKILL.md` за вказаним -розташуванням (workspace, керованим або вбудованим). Якщо жодна Skill не підходить, -розділ Skills пропускається. +Коли існують придатні Skills, OpenClaw впроваджує компактний **список доступних Skills** +(`formatSkillsForPrompt`), який містить **шлях до файла** для кожного skill. Промпт +інструктує модель використовувати `read`, щоб завантажити SKILL.md у зазначеному +розташуванні (робочий простір, кероване або вбудоване). Якщо жоден skill не є придатним, розділ +Skills пропускається. -Відповідність включає запобіжники метаданих Skill, перевірки runtime-середовища/конфігурації +Придатність включає бар’єри метаданих skill, перевірки середовища виконання/конфігурації та ефективний allowlist Skills агента, коли налаштовано `agents.defaults.skills` або `agents.list[].skills`. +Skills, вбудовані в плагін, є придатними лише тоді, коли плагін-власник увімкнено. +Це дозволяє плагінам інструментів надавати глибші робочі інструкції, не вбудовуючи всі +ці вказівки безпосередньо в опис кожного інструмента. + ``` @@ -186,32 +182,32 @@ OpenClaw може ін’єктувати блок попередження в P ``` -Це зберігає базовий prompt малим, водночас дозволяючи цільове використання Skills. +Це зберігає базовий промпт малим, але водночас дає змогу цільового використання Skills. Бюджет списку Skills належить підсистемі Skills: - Глобальне типове значення: `skills.limits.maxSkillsPromptChars` - Перевизначення для агента: `agents.list[].skillsLimits.maxSkillsPromptChars` -Узагальнені обмежені runtime-витяги використовують іншу поверхню: +Загальні обмежені уривки середовища виконання використовують іншу поверхню: - `agents.defaults.contextLimits.*` - `agents.list[].contextLimits.*` -Це розділення відокремлює розмір Skills від розміру runtime-читання/ін’єкції, такого як -`memory_get`, результати live-інструментів і оновлення `AGENTS.md` після Compaction. +Такий поділ зберігає розмір Skills окремо від розміру читання/впровадження під час виконання, такого +як `memory_get`, живі результати інструментів і оновлення AGENTS.md після Compaction. -## Documentation +## Документація -Коли доступно, системний prompt включає розділ **Documentation**, який вказує на -локальний каталог документації OpenClaw (або `docs/` у workspace репозиторію, або документацію з вбудованого npm -package) і також згадує публічне дзеркало, вихідний репозиторій, Discord спільноти та -ClawHub ([https://clawhub.ai](https://clawhub.ai)) для виявлення Skills. Prompt вказує моделі спершу звертатися до локальної документації -щодо поведінки, команд, конфігурації або архітектури OpenClaw і самостійно запускати -`openclaw status`, коли це можливо (питаючи користувача лише тоді, коли доступу немає). +Коли доступно, системний промпт містить розділ **Документація**, який вказує на +локальний каталог документації OpenClaw (або `docs/` у робочому просторі репозиторію, або документацію вбудованого +npm package) і також згадує публічне дзеркало, вихідний репозиторій, спільноту Discord і +ClawHub ([https://clawhub.ai](https://clawhub.ai)) для пошуку Skills. Промпт інструктує модель спочатку звертатися до локальної документації +щодо поведінки OpenClaw, команд, конфігурації чи архітектури та +самостійно запускати `openclaw status`, коли це можливо (звертаючись до користувача лише тоді, коли доступу немає). ## Пов’язане -- [Runtime агента](/uk/concepts/agent) -- [Workspace агента](/uk/concepts/agent-workspace) +- [Середовище виконання агента](/uk/concepts/agent) +- [Робочий простір агента](/uk/concepts/agent-workspace) - [Рушій контексту](/uk/concepts/context-engine) diff --git a/docs/uk/tools/browser.md b/docs/uk/tools/browser.md index bd1425850..7a22c1a98 100644 --- a/docs/uk/tools/browser.md +++ b/docs/uk/tools/browser.md @@ -1,41 +1,43 @@ --- read_when: - Додавання автоматизації браузера, керованої агентом - - Налагодження, чому openclaw заважає вашому власному Chrome + - Налагодження того, чому openclaw втручається у роботу вашого власного Chrome - Реалізація налаштувань браузера + життєвого циклу в застосунку macOS -summary: Інтегрована служба керування браузером + команди дій +summary: Інтегрований сервіс керування браузером + команди дій title: Браузер (керований OpenClaw) x-i18n: - generated_at: "2026-04-24T07:42:12Z" + generated_at: "2026-04-24T23:30:44Z" model: gpt-5.4 provider: openai - source_hash: 80805676213ef5195093163874a848955b3c25364b20045a8d759d03ac088e14 + source_hash: 58806d9728345ca32f0341a060bd53f8447f7614a1a5fdcad822d94f9bd48d40 source_path: tools/browser.md workflow: 15 --- -OpenClaw може запускати **виділений профіль Chrome/Brave/Edge/Chromium**, яким керує агент. +OpenClaw може запускати **окремий профіль Chrome/Brave/Edge/Chromium**, яким керує агент. Він ізольований від вашого особистого браузера та керується через невеликий локальний сервіс керування всередині Gateway (лише loopback). -Погляд для початківців: +Пояснення для початківців: - Думайте про це як про **окремий браузер лише для агента**. -- Профіль `openclaw` **не** торкається профілю вашого особистого браузера. -- Агент може **відкривати вкладки, читати сторінки, натискати й вводити текст** у безпечному середовищі. -- Вбудований профіль `user` підключається до вашої реальної сесії Chrome з входом через Chrome MCP. +- Профіль `openclaw` **не** зачіпає ваш особистий профіль браузера. +- Агент може **відкривати вкладки, читати сторінки, натискати та вводити текст** у безпечному середовищі. +- Вбудований профіль `user` підключається до вашої справжньої авторизованої сесії Chrome через Chrome MCP. ## Що ви отримуєте - Окремий профіль браузера з назвою **openclaw** (типово з помаранчевим акцентом). -- Детерміноване керування вкладками (перелік/відкриття/фокус/закриття). -- Дії агента (клік/введення/перетягування/вибір), знімки стану, скриншоти, PDF. -- Необов’язкову підтримку кількох профілів (`openclaw`, `work`, `remote`, ...). +- Детерміноване керування вкладками (перелік/відкриття/фокусування/закриття). +- Дії агента (натискання/введення/перетягування/вибір), знімки стану, скриншоти, PDF. +- Вбудований Skill `browser-automation`, який навчає агентів циклу відновлення snapshot, + stable-tab, stale-ref і manual-blocker, коли ввімкнено Plugin браузера. +- Необов’язкова підтримка кількох профілів (`openclaw`, `work`, `remote`, ...). -Цей браузер **не** є вашим основним щоденним браузером. Це безпечна, ізольована поверхня для -автоматизації та перевірки з боку агента. +Цей браузер **не** призначений для щоденного використання. Це безпечне, ізольоване середовище для +автоматизації та перевірки агентом. -## Швидкий старт +## Швидкий початок ```bash openclaw browser --browser-profile openclaw status @@ -44,15 +46,15 @@ openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` -Якщо ви бачите “Browser disabled”, увімкніть це в конфігурації (див. нижче) і перезапустіть +Якщо ви бачите “Браузер вимкнено”, увімкніть його в конфігурації (див. нижче) і перезапустіть Gateway. -Якщо `openclaw browser` взагалі відсутній або агент каже, що інструмент браузера -недоступний, перейдіть до [Відсутня команда браузера або інструмент](/uk/tools/browser#missing-browser-command-or-tool). +Якщо `openclaw browser` взагалі відсутня або агент каже, що інструмент браузера +недоступний, перейдіть до [Відсутня команда або інструмент браузера](/uk/tools/browser#missing-browser-command-or-tool). ## Керування Plugin -Типовий інструмент `browser` — це вбудований Plugin. Вимкніть його, щоб замінити іншим Plugin, який реєструє ту саму назву інструмента `browser`: +Типовий інструмент `browser` — це вбудований Plugin. Вимкніть його, щоб замінити іншим Plugin, який реєструє той самий інструмент із назвою `browser`: ```json5 { @@ -66,13 +68,29 @@ Gateway. } ``` -Для типових значень потрібні і `plugins.entries.browser.enabled`, і `browser.enabled=true`. Вимкнення лише Plugin прибирає CLI `openclaw browser`, метод Gateway `browser.request`, інструмент агента та сервіс керування як єдине ціле; ваш конфіг `browser.*` залишається недоторканим для заміни. +Для типових налаштувань потрібні і `plugins.entries.browser.enabled`, і `browser.enabled=true`. Вимкнення лише Plugin прибирає CLI `openclaw browser`, метод Gateway `browser.request`, інструмент агента та сервіс керування як єдине ціле; ваша конфігурація `browser.*` залишається недоторканою для заміни. Зміни конфігурації браузера потребують перезапуску Gateway, щоб Plugin міг повторно зареєструвати свій сервіс. -## Відсутня команда браузера або інструмент +## Вказівки для агента -Якщо `openclaw browser` невідомий після оновлення, `browser.request` відсутній або агент повідомляє, що інструмент браузера недоступний, зазвичай причина — список `plugins.allow`, у якому немає `browser`. Додайте його: +Plugin браузера постачається з двома рівнями вказівок для агента: + +- Опис інструмента `browser` містить компактний контракт, який завжди активний: вибирайте + правильний профіль, тримайте refs у межах тієї самої вкладки, використовуйте `tabId`/мітки для націлювання на вкладки + і завантажуйте Skill браузера для багатокрокової роботи. +- Вбудований Skill `browser-automation` містить довший робочий цикл: + спочатку перевірити статус/вкладки, позначити вкладки завдання, зробити snapshot перед дією, повторно зняти snapshot + після змін інтерфейсу, один раз відновити stale refs і повідомляти про login/2FA/captcha або + блокування camera/microphone як про ручну дію, а не вгадувати. + +Skills, вбудовані в Plugin, перелічуються в доступних Skills агента, коли +Plugin увімкнено. Повні інструкції Skill завантажуються на вимогу, тому звичайні +сеанси не оплачують повну вартість токенів. + +## Відсутня команда або інструмент браузера + +Якщо після оновлення `openclaw browser` невідома, `browser.request` відсутній або агент повідомляє, що інструмент браузера недоступний, зазвичай причина в списку `plugins.allow`, у якому немає `browser`. Додайте його: ```json5 { @@ -82,40 +100,39 @@ Gateway. } ``` -`browser.enabled=true`, `plugins.entries.browser.enabled=true` і `tools.alsoAllow: ["browser"]` не замінюють членство в allowlist — allowlist керує завантаженням Plugin, а політика інструментів застосовується лише після завантаження. Видалення `plugins.allow` повністю також відновлює типову поведінку. +`browser.enabled=true`, `plugins.entries.browser.enabled=true` і `tools.alsoAllow: ["browser"]` не замінюють членство в allowlist — allowlist керує завантаженням Plugin, а політика інструментів виконується лише після завантаження. Видалення `plugins.allow` повністю також відновлює типову поведінку. -## Профілі: `openclaw` vs `user` +## Профілі: `openclaw` і `user` - `openclaw`: керований, ізольований браузер (розширення не потрібне). -- `user`: вбудований профіль підключення Chrome MCP до вашої **реальної сесії Chrome** - з входом. +- `user`: вбудований профіль підключення Chrome MCP до вашої **справжньої авторизованої сесії Chrome**. Для викликів інструмента браузера агентом: -- Типово: використовувати ізольований браузер `openclaw`. -- Віддавайте перевагу `profile="user"`, коли важливі наявні сесії з входом і користувач - знаходиться за комп’ютером, щоб натиснути/підтвердити будь-який запит на підключення. +- Типово: використовуйте ізольований браузер `openclaw`. +- Віддавайте перевагу `profile="user"`, коли важливі наявні авторизовані сесії і користувач + перебуває за комп’ютером, щоб натиснути/підтвердити будь-який запит на підключення. - `profile` — це явне перевизначення, коли вам потрібен конкретний режим браузера. Установіть `browser.defaultProfile: "openclaw"`, якщо хочете, щоб керований режим був типовим. ## Конфігурація -Налаштування браузера містяться в `~/.openclaw/openclaw.json`. +Налаштування браузера зберігаються в `~/.openclaw/openclaw.json`. ```json5 { browser: { - enabled: true, // default: true + enabled: true, // типово: true ssrfPolicy: { - // dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access - // allowPrivateNetwork: true, // legacy alias + // dangerouslyAllowPrivateNetwork: true, // вмикайте лише для довіреного доступу до приватної мережі + // allowPrivateNetwork: true, // застарілий псевдонім // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, - // cdpUrl: "http://127.0.0.1:18792", // legacy single-profile override - remoteCdpTimeoutMs: 1500, // remote CDP HTTP timeout (ms) - remoteCdpHandshakeTimeoutMs: 3000, // remote CDP WebSocket handshake timeout (ms) + // cdpUrl: "http://127.0.0.1:18792", // застаріле перевизначення одного профілю + remoteCdpTimeoutMs: 1500, // тайм-аут HTTP для віддаленого CDP (мс) + remoteCdpHandshakeTimeoutMs: 3000, // тайм-аут WebSocket handshake для віддаленого CDP (мс) defaultProfile: "openclaw", color: "#FF4500", headless: false, @@ -144,41 +161,41 @@ Gateway. - + -- Сервіс керування прив’язується до loopback на порту, похідному від `gateway.port` (типово `18791` = gateway + 2). Перевизначення `gateway.port` або `OPENCLAW_GATEWAY_PORT` зсуває похідні порти в тій самій групі. -- Локальні профілі `openclaw` автоматично призначають `cdpPort`/`cdpUrl`; задавайте їх лише для віддаленого CDP. Якщо `cdpUrl` не задано, типово використовується керований локальний CDP-порт. -- `remoteCdpTimeoutMs` застосовується до перевірок доступності HTTP для віддаленого (не-loopback) CDP; `remoteCdpHandshakeTimeoutMs` застосовується до WebSocket handshake віддаленого CDP. +- Сервіс керування прив’язується до local loopback на порті, похідному від `gateway.port` (типово `18791` = gateway + 2). Перевизначення `gateway.port` або `OPENCLAW_GATEWAY_PORT` зсуває похідні порти в тій самій групі. +- Локальні профілі `openclaw` автоматично призначають `cdpPort`/`cdpUrl`; задавайте їх лише для віддаленого CDP. Якщо `cdpUrl` не задано, типово використовується локальний керований порт CDP. +- `remoteCdpTimeoutMs` застосовується до перевірок доступності HTTP віддаленого CDP (не-loopback); `remoteCdpHandshakeTimeoutMs` застосовується до WebSocket handshakes віддаленого CDP. -- Навігація браузера та відкриття вкладок захищені від SSRF перед навігацією та, наскільки можливо, повторно перевіряються на фінальному URL `http(s)` після неї. -- У строгому режимі SSRF також перевіряються виявлення віддалених CDP-ендпойнтів і запити `/json/version` (`cdpUrl`). -- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` типово вимкнено; вмикайте лише тоді, коли доступ браузера до приватної мережі свідомо вважається довіреним. -- `browser.ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий синонім. +- Навігація браузера та open-tab захищені від SSRF перед навігацією і повторно перевіряються в міру можливості за фінальним URL `http(s)` після неї. +- У строгому режимі SSRF discovery віддаленої кінцевої точки CDP і перевірки `/json/version` (`cdpUrl`) також перевіряються. +- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` типово вимкнено; вмикайте лише тоді, коли доступ браузера до приватної мережі є навмисно довіреним. +- `browser.ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий псевдонім. - + -- `attachOnly: true` означає ніколи не запускати локальний браузер; лише підключатися, якщо він уже працює. +- `attachOnly: true` означає ніколи не запускати локальний браузер; підключатися лише якщо він уже працює. - `color` (на верхньому рівні та для кожного профілю) тонує інтерфейс браузера, щоб ви могли бачити, який профіль активний. -- Типовий профіль — `openclaw` (керований автономний). Використовуйте `defaultProfile: "user"`, щоб вибрати браузер користувача з входом. -- Порядок автовиявлення: системний браузер за замовчуванням, якщо він на базі Chromium; інакше Chrome → Brave → Edge → Chromium → Chrome Canary. -- `driver: "existing-session"` використовує Chrome DevTools MCP замість сирого CDP. Не задавайте `cdpUrl` для цього драйвера. +- Типовий профіль — `openclaw` (керований автономний). Використовуйте `defaultProfile: "user"`, щоб перейти до авторизованого браузера користувача. +- Порядок автовизначення: системний браузер за замовчуванням, якщо він Chromium-based; інакше Chrome → Brave → Edge → Chromium → Chrome Canary. +- `driver: "existing-session"` використовує Chrome DevTools MCP замість сирого CDP. Не задавайте `cdpUrl` для цього driver. - Установіть `browser.profiles..userDataDir`, коли профіль existing-session має підключатися до нестандартного профілю користувача Chromium (Brave, Edge тощо). -## Використання Brave (або іншого браузера на базі Chromium) +## Використання Brave (або іншого Chromium-based браузера) -Якщо вашим **системним браузером за замовчуванням** є браузер на базі Chromium (Chrome/Brave/Edge тощо), -OpenClaw автоматично використовує його. Установіть `browser.executablePath`, щоб перевизначити -автовиявлення: +Якщо вашим **системним браузером за замовчуванням** є Chromium-based браузер (Chrome/Brave/Edge тощо), +OpenClaw використовує його автоматично. Установіть `browser.executablePath`, щоб перевизначити +автовизначення: ```bash openclaw config set browser.executablePath "/usr/bin/google-chrome" @@ -219,17 +236,17 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" ## Локальне та віддалене керування - **Локальне керування (типово):** Gateway запускає loopback-сервіс керування і може запускати локальний браузер. -- **Віддалене керування (хост вузла):** запустіть хост вузла на машині, де є браузер; Gateway проксіює до нього дії браузера. +- **Віддалене керування (host Node):** запустіть host Node на машині, де є браузер; Gateway проксуватиме до нього дії браузера. - **Віддалений CDP:** установіть `browser.profiles..cdpUrl` (або `browser.cdpUrl`), щоб - підключитися до віддаленого браузера на базі Chromium. У такому разі OpenClaw не запускатиме локальний браузер. + підключитися до віддаленого Chromium-based браузера. У цьому випадку OpenClaw не запускатиме локальний браузер. -Поведінка зупинки відрізняється залежно від режиму профілю: +Поведінка під час зупинки відрізняється залежно від режиму профілю: - локальні керовані профілі: `openclaw browser stop` зупиняє процес браузера, який запустив OpenClaw - профілі лише для підключення та профілі віддаленого CDP: `openclaw browser stop` закриває активну - сесію керування і скидає перевизначення емуляції Playwright/CDP (viewport, - колірну схему, локаль, часовий пояс, офлайн-режим та подібний стан), навіть + сесію керування та скидає перевизначення емуляції Playwright/CDP (viewport, + color scheme, locale, timezone, offline mode та подібний стан), навіть якщо OpenClaw не запускав жодного процесу браузера URL віддаленого CDP можуть містити автентифікацію: @@ -237,22 +254,22 @@ URL віддаленого CDP можуть містити автентифік - Токени запиту (наприклад, `https://provider.example?token=`) - HTTP Basic auth (наприклад, `https://user:pass@provider.example`) -OpenClaw зберігає автентифікацію під час виклику ендпойнтів `/json/*` і під час підключення -до CDP WebSocket. Для токенів віддавайте перевагу змінним середовища або менеджерам секретів -замість коміту їх у конфігураційні файли. +OpenClaw зберігає автентифікацію під час виклику кінцевих точок `/json/*` і під час підключення +до WebSocket CDP. Для токенів віддавайте перевагу змінним середовища або менеджерам секретів +замість коміту їх у файли конфігурації. -## Node browser proxy (типово без додаткової конфігурації) +## Node browser proxy (типовий шлях без додаткової конфігурації) -Якщо ви запускаєте **хост вузла** на машині, де є ваш браузер, OpenClaw може +Якщо ви запускаєте **host Node** на машині, де є ваш браузер, OpenClaw може автоматично маршрутизувати виклики інструмента браузера до цього вузла без жодної додаткової конфігурації браузера. Це типовий шлях для віддалених gateway. -Нотатки: +Примітки: -- Хост вузла надає доступ до свого локального сервера керування браузером через **proxy command**. +- Host Node відкриває свій локальний сервер керування браузером через **proxy command**. - Профілі беруться з власної конфігурації `browser.profiles` вузла (так само, як локально). -- `nodeHost.browserProxy.allowProfiles` — необов’язковий параметр. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі залишаються доступними через proxy, включно з маршрутами створення/видалення профілів. -- Якщо ви задаєте `nodeHost.browserProxy.allowProfiles`, OpenClaw розглядає це як межу мінімальних привілеїв: можна адресувати лише профілі з allowlist, а маршрути створення/видалення постійних профілів блокуються на поверхні proxy. +- `nodeHost.browserProxy.allowProfiles` є необов’язковим. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі залишаються доступними через proxy, включно з маршрутами створення/видалення профілів. +- Якщо ви задаєте `nodeHost.browserProxy.allowProfiles`, OpenClaw розглядає це як межу мінімальних привілеїв: лише профілі з allowlist можуть бути ціллю, а маршрути створення/видалення постійних профілів блокуються на поверхні proxy. - Вимкніть це, якщо воно вам не потрібне: - На вузлі: `nodeHost.browserProxy.enabled=false` - На gateway: `gateway.nodes.browser.mode="off"` @@ -260,9 +277,9 @@ OpenClaw зберігає автентифікацію під час викли ## Browserless (хостинговий віддалений CDP) [Browserless](https://browserless.io) — це хостинговий сервіс Chromium, який надає -URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати будь-яку форму, але +URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати обидва формати, але для профілю віддаленого браузера найпростішим варіантом є прямий URL WebSocket -з документації Browserless щодо підключення. +з документації з підключення Browserless. Приклад: @@ -283,41 +300,41 @@ URL підключення CDP через HTTPS і WebSocket. OpenClaw може } ``` -Нотатки: +Примітки: -- Замініть `` на ваш реальний токен Browserless. -- Виберіть регіональний ендпойнт, який відповідає вашому обліковому запису Browserless (див. їхню документацію). +- Замініть `` на ваш справжній токен Browserless. +- Виберіть кінцеву точку регіону, яка відповідає вашому обліковому запису Browserless (див. їхню документацію). - Якщо Browserless надає вам базовий URL HTTPS, ви можете або перетворити його на `wss://` для прямого підключення CDP, або залишити URL HTTPS і дозволити OpenClaw виявити `/json/version`. ## Провайдери прямого WebSocket CDP -Деякі хостингові браузерні сервіси надають **прямий ендпойнт WebSocket** замість -стандартного виявлення CDP на основі HTTP (`/json/version`). OpenClaw приймає три +Деякі хостингові сервіси браузера надають **пряму кінцеву точку WebSocket** замість +стандартного HTTP-based discovery для CDP (`/json/version`). OpenClaw приймає три форми URL CDP і автоматично вибирає правильну стратегію підключення: -- **Виявлення HTTP(S)** — `http://host[:port]` або `https://host[:port]`. +- **HTTP(S) discovery** — `http://host[:port]` або `https://host[:port]`. OpenClaw викликає `/json/version`, щоб виявити URL WebSocket debugger, а потім - підключається. Резервного переходу на WebSocket немає. -- **Прямі ендпойнти WebSocket** — `ws://host[:port]/devtools//` або + підключається. Fallback до WebSocket немає. +- **Прямі кінцеві точки WebSocket** — `ws://host[:port]/devtools//` або `wss://...` зі шляхом `/devtools/browser|page|worker|shared_worker|service_worker/`. - OpenClaw підключається безпосередньо через WebSocket handshake і повністю пропускає + OpenClaw підключається напряму через WebSocket handshake і повністю пропускає `/json/version`. -- **Кореневі URL WebSocket без шляху** — `ws://host[:port]` або `wss://host[:port]` без +- **Кореневі bare WebSocket** — `ws://host[:port]` або `wss://host[:port]` без шляху `/devtools/...` (наприклад, [Browserless](https://browserless.io), [Browserbase](https://www.browserbase.com)). OpenClaw спочатку пробує HTTP - виявлення через `/json/version` (нормалізуючи схему до `http`/`https`); - якщо виявлення повертає `webSocketDebuggerUrl`, він використовується, інакше OpenClaw - переходить до прямого WebSocket handshake на корені без шляху. Це дозволяє - підключатися навіть bare `ws://`, спрямованому на локальний Chrome, оскільки Chrome приймає - WebSocket upgrade лише на конкретному шляху для цілі з + discovery через `/json/version` (нормалізуючи схему до `http`/`https`); + якщо discovery повертає `webSocketDebuggerUrl`, він використовується, інакше OpenClaw + переходить до прямого WebSocket handshake на bare root. Це дозволяє + bare `ws://`, спрямованому на локальний Chrome, усе ж підключатися, оскільки Chrome + приймає WebSocket upgrades лише на конкретному шляху для цілі з `/json/version`. ### Browserbase [Browserbase](https://www.browserbase.com) — це хмарна платформа для запуску -headless-браузерів із вбудованим розв’язанням CAPTCHA, stealth mode та residential +headless браузерів із вбудованим розв’язанням CAPTCHA, stealth mode та residential proxy. ```json5 @@ -337,64 +354,65 @@ proxy. } ``` -Нотатки: +Примітки: - [Зареєструйтеся](https://www.browserbase.com/sign-up) і скопіюйте свій **API Key** - з [панелі Overview](https://www.browserbase.com/overview). -- Замініть `` на ваш реальний API key Browserbase. -- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тому + з [Overview dashboard](https://www.browserbase.com/overview). +- Замініть `` на ваш справжній API key Browserbase. +- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тож крок ручного створення сесії не потрібен. - Безкоштовний тариф дозволяє одну одночасну сесію та одну годину браузера на місяць. - Ліміти платних планів дивіться в [pricing](https://www.browserbase.com/pricing). -- Повний довідник API, посібники з SDK та приклади інтеграції дивіться в [документації Browserbase](https://docs.browserbase.com). + Обмеження платних тарифів дивіться в [pricing](https://www.browserbase.com/pricing). +- Повний довідник API, + посібники з SDK та приклади інтеграції дивіться в [документації Browserbase](https://docs.browserbase.com). ## Безпека Ключові ідеї: -- Керування браузером доступне лише через loopback; доступ проходить через автентифікацію Gateway або pairing з вузлом. -- Автономний loopback HTTP API браузера використовує **лише автентифікацію зі спільним секретом**: - bearer auth через токен gateway, `x-openclaw-password` або HTTP Basic auth із +- Керування браузером доступне лише через loopback; доступ проходить через auth Gateway або pairing вузла. +- Окремий loopback HTTP API браузера використовує **лише auth на основі shared secret**: + bearer auth токена gateway, `x-openclaw-password` або HTTP Basic auth із налаштованим паролем gateway. - Заголовки ідентичності Tailscale Serve та `gateway.auth.mode: "trusted-proxy"` - **не** автентифікують цей автономний loopback API браузера. -- Якщо керування браузером увімкнене й не налаштовано автентифікацію зі спільним секретом, OpenClaw + **не** автентифікують цей окремий loopback API браузера. +- Якщо керування браузером увімкнено й не налаштовано жодної auth на основі shared secret, OpenClaw автоматично генерує `gateway.auth.token` під час запуску та зберігає його в конфігурації. -- OpenClaw **не** генерує цей токен автоматично, коли `gateway.auth.mode` уже має значення +- OpenClaw **не** генерує цей токен автоматично, якщо `gateway.auth.mode` уже має значення `password`, `none` або `trusted-proxy`. -- Тримайте Gateway та всі хости вузлів у приватній мережі (Tailscale); уникайте публічного доступу. -- Ставтеся до URL/токенів віддаленого CDP як до секретів; віддавайте перевагу env vars або менеджеру секретів. +- Тримайте Gateway і будь-які node host у приватній мережі (Tailscale); уникайте публічного доступу. +- Розглядайте URL/токени віддаленого CDP як секрети; віддавайте перевагу змінним середовища або менеджеру секретів. Поради щодо віддаленого CDP: -- За можливості віддавайте перевагу зашифрованим ендпойнтам (HTTPS або WSS) і короткоживучим токенам. -- Уникайте вбудовування довгоживучих токенів безпосередньо в конфігураційні файли. +- За можливості віддавайте перевагу зашифрованим кінцевим точкам (HTTPS або WSS) і короткоживучим токенам. +- Уникайте вбудовування довгоживучих токенів безпосередньо у файли конфігурації. ## Профілі (кілька браузерів) -OpenClaw підтримує кілька іменованих профілів (конфігурації маршрутизації). Профілі можуть бути: +OpenClaw підтримує кілька іменованих профілів (конфігурацій маршрутизації). Профілі можуть бути: -- **керовані OpenClaw**: виділений екземпляр браузера на базі Chromium із власним каталогом даних користувача + портом CDP -- **віддалені**: явний URL CDP (браузер на базі Chromium, що працює деінде) -- **наявна сесія**: ваш наявний профіль Chrome через автопідключення Chrome DevTools MCP +- **керованими OpenClaw**: окремий екземпляр Chromium-based браузера з власним каталогом user data + портом CDP +- **віддаленими**: явний URL CDP (Chromium-based браузер, що працює в іншому місці) +- **наявною сесією**: ваш наявний профіль Chrome через автоматичне підключення Chrome DevTools MCP Типові значення: - Профіль `openclaw` створюється автоматично, якщо його немає. -- Профіль `user` вбудований для підключення existing-session через Chrome MCP. -- Профілі existing-session, окрім `user`, вмикаються явно; створюйте їх через `--driver existing-session`. +- Профіль `user` є вбудованим для existing-session attach через Chrome MCP. +- Профілі existing-session, крім `user`, є опціональними; створюйте їх за допомогою `--driver existing-session`. - Локальні порти CDP типово виділяються з діапазону **18800–18899**. - Видалення профілю переміщує його локальний каталог даних до Trash. -Усі ендпойнти керування приймають `?profile=`; CLI використовує `--browser-profile`. +Усі кінцеві точки керування приймають `?profile=`; CLI використовує `--browser-profile`. ## Existing-session через Chrome DevTools MCP -OpenClaw також може підключатися до запущеного профілю браузера на базі Chromium через +OpenClaw також може підключатися до запущеного профілю Chromium-based браузера через офіційний сервер Chrome DevTools MCP. Це повторно використовує вкладки та стан входу, які вже відкриті в цьому профілі браузера. -Офіційні довідкові матеріали та налаштування: +Офіційні довідкові матеріали та посилання для налаштування: - [Chrome for Developers: Використання Chrome DevTools MCP із вашою сесією браузера](https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session) - [README Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp) @@ -403,15 +421,15 @@ OpenClaw також може підключатися до запущеного - `user` -Необов’язково: створіть власний користувацький профіль existing-session, якщо вам потрібні +Необов’язково: створіть власний custom existing-session profile, якщо вам потрібні інша назва, колір або каталог даних браузера. Типова поведінка: -- Вбудований профіль `user` використовує автопідключення Chrome MCP, яке націлюється на - типовий локальний профіль Google Chrome. +- Вбудований профіль `user` використовує авто-підключення Chrome MCP, яке націлюється на + локальний профіль Google Chrome за замовчуванням. -Використовуйте `userDataDir` для Brave, Edge, Chromium або нетипового профілю Chrome: +Використовуйте `userDataDir` для Brave, Edge, Chromium або нестандартного профілю Chrome: ```json5 { @@ -431,8 +449,8 @@ OpenClaw також може підключатися до запущеного Потім у відповідному браузері: 1. Відкрийте сторінку inspect цього браузера для віддаленого налагодження. -2. Увімкніть віддалене налагодження. -3. Залиште браузер запущеним і підтвердьте запит на підключення, коли OpenClaw під’єднається. +2. Увімкніть remote debugging. +3. Не закривайте браузер і підтвердьте запит на підключення, коли OpenClaw приєднається. Поширені сторінки inspect: @@ -440,7 +458,7 @@ OpenClaw також може підключатися до запущеного - Brave: `brave://inspect/#remote-debugging` - Edge: `edge://inspect/#remote-debugging` -Live attach smoke test: +Smoke test для live attach: ```bash openclaw browser --browser-profile user start @@ -449,58 +467,59 @@ openclaw browser --browser-profile user tabs openclaw browser --browser-profile user snapshot --format ai ``` -Як виглядає успіх: +Ознаки успіху: - `status` показує `driver: existing-session` - `status` показує `transport: chrome-mcp` - `status` показує `running: true` -- `tabs` перелічує вже відкриті вкладки браузера -- `snapshot` повертає ref з вибраної live-вкладки +- `tabs` показує список уже відкритих вкладок браузера +- `snapshot` повертає refs з вибраної активної вкладки Що перевірити, якщо підключення не працює: -- цільовий браузер на базі Chromium має версію `144+` -- віддалене налагодження увімкнене на сторінці inspect цього браузера -- браузер показав запит на підключення, і ви його підтвердили -- `openclaw doctor` переносить стару конфігурацію браузера на основі розширення та перевіряє, що - Chrome встановлено локально для типових профілів автопідключення, але він не може - увімкнути віддалене налагодження в браузері за вас +- цільовий Chromium-based браузер має версію `144+` +- у сторінці inspect цього браузера ввімкнено remote debugging +- браузер показав запит на підключення і ви його підтвердили +- `openclaw doctor` мігрує стару конфігурацію браузера на основі розширення і перевіряє, що + Chrome локально встановлено для типових профілів авто-підключення, але він не може + увімкнути для вас remote debugging на боці браузера Використання агентом: -- Використовуйте `profile="user"`, коли вам потрібен стан браузера користувача з виконаним входом. -- Якщо ви використовуєте власний профіль existing-session, передайте його явну назву профілю. +- Використовуйте `profile="user"`, коли вам потрібен стан авторизованого браузера користувача. +- Якщо ви використовуєте custom existing-session profile, передайте явну назву цього профілю. - Обирайте цей режим лише тоді, коли користувач перебуває за комп’ютером, щоб підтвердити запит на підключення. -- Gateway або хост вузла може запускати `npx chrome-devtools-mcp@latest --autoConnect` +- Gateway або node host може запускати `npx chrome-devtools-mcp@latest --autoConnect` -Нотатки: +Примітки: -- Цей шлях є ризикованішим, ніж ізольований профіль `openclaw`, оскільки він може - виконувати дії у вашій сесії браузера з виконаним входом. -- OpenClaw не запускає браузер для цього драйвера; він лише підключається. +- Цей шлях має вищий ризик, ніж ізольований профіль `openclaw`, оскільки він може + виконувати дії у вашій авторизованій сесії браузера. +- OpenClaw не запускає браузер для цього driver; він лише підключається. - Тут OpenClaw використовує офіційний потік Chrome DevTools MCP `--autoConnect`. Якщо - встановлено `userDataDir`, його буде передано далі для націлювання на цей каталог даних користувача. -- Existing-session може підключатися на вибраному хості або через підключений - browser node. Якщо Chrome розташований деінде й browser node не підключений, використовуйте - натомість віддалений CDP або хост вузла. + задано `userDataDir`, він передається далі для націлювання на цей каталог даних користувача. +- Existing-session може підключатися на вибраному host або через підключений + browser node. Якщо Chrome працює деінде і browser node не підключено, використовуйте + віддалений CDP або node host. Порівняно з керованим профілем `openclaw`, драйвери existing-session мають більше обмежень: - **Скриншоти** — працюють знімки сторінки та знімки елементів через `--ref`; CSS-селектори `--element` не підтримуються. `--full-page` не можна поєднувати з `--ref` або `--element`. Для скриншотів сторінки або елементів на основі ref Playwright не потрібен. -- **Дії** — `click`, `type`, `hover`, `scrollIntoView`, `drag` і `select` потребують ref зі snapshot (без CSS-селекторів). `click` підтримує лише ліву кнопку. `type` не підтримує `slowly=true`; використовуйте `fill` або `press`. `press` не підтримує `delayMs`. `type`, `hover`, `scrollIntoView`, `drag`, `select`, `fill` та `evaluate` не підтримують тайм-аути для окремих викликів. `select` приймає одне значення. -- **Очікування / upload / dialog** — `wait --url` підтримує точні, часткові та glob-шаблони; `wait --load networkidle` не підтримується. Хуки upload потребують `ref` або `inputRef`, по одному файлу за раз, без CSS `element`. Хуки dialog не підтримують перевизначення тайм-аутів. -- **Функції лише для керованого режиму** — пакетні дії, експорт PDF, перехоплення завантажень і `responsebody` як і раніше потребують шляху керованого браузера. +- **Дії** — `click`, `type`, `hover`, `scrollIntoView`, `drag` і `select` потребують snapshot refs (без CSS-селекторів). `click` підтримує лише ліву кнопку миші. `type` не підтримує `slowly=true`; використовуйте `fill` або `press`. `press` не підтримує `delayMs`. `type`, `hover`, `scrollIntoView`, `drag`, `select`, `fill` і `evaluate` не підтримують тайм-аути для окремого виклику. `select` приймає одне значення. +- **Очікування / завантаження / діалоги** — `wait --url` підтримує точні, часткові та glob-шаблони; `wait --load networkidle` не підтримується. Hooks завантаження потребують `ref` або `inputRef`, по одному файлу за раз, без CSS `element`. Hooks діалогів не підтримують перевизначення тайм-аутів. +- **Функції лише для керованого режиму** — пакетні дії, експорт PDF, перехоплення завантажень і `responsebody` досі потребують шляху керованого браузера. ## Гарантії ізоляції -- **Виділений каталог даних користувача**: ніколи не торкається профілю вашого особистого браузера. -- **Виділені порти**: уникає `9222`, щоб запобігти конфліктам із dev-процесами. -- **Детерміноване керування вкладками**: націлювання на вкладки через `targetId`, а не через “last tab”. +- **Окремий каталог user data**: ніколи не зачіпає ваш особистий профіль браузера. +- **Окремі порти**: уникає `9222`, щоб не конфліктувати з робочими процесами розробки. +- **Детерміноване керування вкладками**: націлюйте вкладки за сирим `targetId`, стабільними + дескрипторами `tabId`, такими як `t1`, або мітками, які ви призначаєте через `open --label` / `tab label`. ## Вибір браузера @@ -516,41 +535,41 @@ openclaw browser --browser-profile user snapshot --format ai Платформи: -- macOS: перевіряє `/Applications` і `~/Applications`. -- Linux: шукає `google-chrome`, `brave`, `microsoft-edge`, `chromium` тощо. -- Windows: перевіряє типові місця встановлення. +- macOS: перевіряються `/Applications` і `~/Applications`. +- Linux: шукаються `google-chrome`, `brave`, `microsoft-edge`, `chromium` тощо. +- Windows: перевіряються поширені місця встановлення. -## Control API (необов’язково) +## API керування (необов’язково) -Для сценаріїв і налагодження Gateway надає невеликий **HTTP Control API лише для loopback** -разом із відповідним CLI `openclaw browser` (знімки стану, ref, розширені можливості wait, -вивід JSON, сценарії налагодження). Повний довідник див. у -[Browser control API](/uk/tools/browser-control). +Для створення скриптів і налагодження Gateway надає невеликий **HTTP API керування +лише для loopback** плюс відповідний CLI `openclaw browser` (snapshots, refs, wait +power-ups, вивід JSON, робочі процеси налагодження). Повний довідник дивіться в +[API керування браузером](/uk/tools/browser-control). ## Усунення несправностей -Для проблем, специфічних для Linux (особливо snap Chromium), див. +Щодо проблем, специфічних для Linux (особливо snap Chromium), дивіться [Усунення несправностей браузера](/uk/tools/browser-linux-troubleshooting). -Для конфігурацій із розділеними хостами WSL2 Gateway + Windows Chrome див. -[WSL2 + Windows + усунення несправностей віддаленого Chrome CDP](/uk/tools/browser-wsl2-windows-remote-cdp-troubleshooting). +Для конфігурацій із розділеними host WSL2 Gateway + Windows Chrome дивіться +[Усунення несправностей WSL2 + Windows + віддалений Chrome CDP](/uk/tools/browser-wsl2-windows-remote-cdp-troubleshooting). -### Помилка запуску CDP vs блокування SSRF під час навігації +### Збій запуску CDP проти блокування SSRF під час навігації -Це різні класи помилок, і вони вказують на різні шляхи виконання коду. +Це різні класи збоїв, і вони вказують на різні шляхи в коді. -- **Помилка запуску або готовності CDP** означає, що OpenClaw не може підтвердити, що площина керування браузером працює справно. -- **Блокування SSRF під час навігації** означає, що площина керування браузером працює справно, але ціль переходу сторінки відхилена політикою. +- **Збій запуску або готовності CDP** означає, що OpenClaw не може підтвердити, що площина керування браузером працює справно. +- **Блокування SSRF під час навігації** означає, що площина керування браузером працює справно, але ціль навігації сторінки відхиляється політикою. Поширені приклади: -- Помилка запуску або готовності CDP: +- Збій запуску або готовності CDP: - `Chrome CDP websocket for profile "openclaw" is not reachable after start` - `Remote CDP for profile "" is not reachable at ` - Блокування SSRF під час навігації: - потоки `open`, `navigate`, snapshot або відкриття вкладок завершуються помилкою політики браузера/мережі, тоді як `start` і `tabs` усе ще працюють -Використовуйте цю мінімальну послідовність, щоб розрізнити ці випадки: +Використайте цю мінімальну послідовність, щоб розрізнити ці два випадки: ```bash openclaw browser --browser-profile openclaw start @@ -560,21 +579,21 @@ openclaw browser --browser-profile openclaw open https://example.com Як читати результати: -- Якщо `start` завершується помилкою `not reachable after start`, спочатку усувайте проблеми готовності CDP. -- Якщо `start` успішний, але `tabs` завершується помилкою, площина керування все ще несправна. Розглядайте це як проблему доступності CDP, а не проблему навігації сторінки. -- Якщо `start` і `tabs` успішні, але `open` або `navigate` завершуються помилкою, площина керування браузером працює, а проблема в політиці навігації або цільовій сторінці. +- Якщо `start` завершується помилкою `not reachable after start`, спочатку усувайте проблему готовності CDP. +- Якщо `start` успішний, але `tabs` завершується помилкою, площина керування все ще несправна. Розглядайте це як проблему досяжності CDP, а не проблему навігації сторінкою. +- Якщо `start` і `tabs` успішні, але `open` або `navigate` завершується помилкою, площина керування браузером працює, а проблема в політиці навігації або в цільовій сторінці. - Якщо `start`, `tabs` і `open` усі успішні, базовий шлях керування керованим браузером працює справно. Важливі деталі поведінки: -- Конфігурація браузера типово використовує fail-closed об’єкт політики SSRF, навіть якщо ви не налаштовуєте `browser.ssrfPolicy`. -- Для локального керованого профілю `openclaw` на loopback перевірки справності CDP навмисно пропускають перевірку доступності SSRF браузера для власної локальної площини керування OpenClaw. -- Захист навігації є окремим. Успішний результат `start` або `tabs` не означає, що подальша ціль `open` або `navigate` буде дозволена. +- Конфігурація браузера типово використовує об’єкт політики SSRF із fail-closed, навіть якщо ви не налаштовуєте `browser.ssrfPolicy`. +- Для локального керованого профілю `openclaw` на loopback перевірки справності CDP навмисно пропускають застосування SSRF reachability браузера до власної локальної площини керування OpenClaw. +- Захист навігації є окремим. Успішний результат `start` або `tabs` не означає, що пізніша ціль `open` або `navigate` дозволена. Рекомендації з безпеки: -- **Не** послаблюйте політику SSRF браузера типово. -- Віддавайте перевагу вузьким виняткам для хостів, таким як `hostnameAllowlist` або `allowedHostnames`, замість широкого доступу до приватної мережі. +- Типово **не** послаблюйте політику SSRF браузера. +- Віддавайте перевагу вузьким виняткам для host, таким як `hostnameAllowlist` або `allowedHostnames`, замість широкого доступу до приватної мережі. - Використовуйте `dangerouslyAllowPrivateNetwork: true` лише в навмисно довірених середовищах, де доступ браузера до приватної мережі потрібен і перевірений. ## Інструменти агента + як працює керування @@ -585,20 +604,20 @@ openclaw browser --browser-profile openclaw open https://example.com Як це відображається: -- `browser snapshot` повертає стабільне дерево інтерфейсу (AI або ARIA). +- `browser snapshot` повертає стабільне дерево UI (AI або ARIA). - `browser act` використовує ID `ref` зі snapshot для click/type/drag/select. - `browser screenshot` захоплює пікселі (усю сторінку або елемент). - `browser` приймає: - `profile` для вибору іменованого профілю браузера (openclaw, chrome або віддалений CDP). - - `target` (`sandbox` | `host` | `node`) для вибору місця розташування браузера. - - У sandbox-сесіях `target: "host"` потребує `agents.defaults.sandbox.browser.allowHostControl=true`. - - Якщо `target` не вказано: sandbox-сесії типово використовують `sandbox`, сесії без sandbox типово використовують `host`. - - Якщо підключено вузол із підтримкою браузера, інструмент може автоматично маршрутизуватися до нього, якщо ви явно не зафіксуєте `target="host"` або `target="node"`. + - `target` (`sandbox` | `host` | `node`) для вибору, де працює браузер. + - У sandboxed sessions `target: "host"` вимагає `agents.defaults.sandbox.browser.allowHostControl=true`. + - Якщо `target` пропущено: sandboxed sessions типово використовують `sandbox`, а non-sandbox sessions — `host`. + - Якщо підключено node з підтримкою браузера, інструмент може автоматично маршрутизуватися до нього, якщо ви явно не зафіксуєте `target="host"` або `target="node"`. Це зберігає детермінованість агента й допомагає уникати крихких селекторів. ## Пов’язане - [Огляд інструментів](/uk/tools) — усі доступні інструменти агента -- [Пісочниця](/uk/gateway/sandboxing) — керування браузером у sandbox-середовищах +- [Пісочниця](/uk/gateway/sandboxing) — керування браузером у sandboxed environments - [Безпека](/uk/gateway/security) — ризики керування браузером і посилення захисту diff --git a/docs/uk/tools/skills.md b/docs/uk/tools/skills.md index 7eed9e4e3..06059d44d 100644 --- a/docs/uk/tools/skills.md +++ b/docs/uk/tools/skills.md @@ -1,62 +1,55 @@ --- read_when: - - Додавання або зміна Skills - - Зміна правил фільтрації або завантаження Skills -summary: 'Skills: керовані чи робочого простору, правила фільтрації та прив’язка конфігурації/env' + - Додавання або змінення Skills + - Зміна правил gatekeeping або завантаження Skills +summary: 'Skills: керовані vs робочий простір, правила gatekeeping і wiring конфігурації/env' title: Skills x-i18n: - generated_at: "2026-04-23T23:08:41Z" + generated_at: "2026-04-24T23:30:41Z" model: gpt-5.4 provider: openai - source_hash: 3c7db23e1eb818d62283376cb33353882a9cb30e4476c5775218137da2ba82d9 + source_hash: 346058f4d85cd66f7b05f6ddd7ee3b8959f05da8645c62ce5531a955eedf7a83 source_path: tools/skills.md workflow: 15 --- -OpenClaw використовує папки Skills, сумісні з **[AgentSkills](https://agentskills.io)**, щоб навчати агента користуватися інструментами. Кожен Skill — це каталог, що містить `SKILL.md` з YAML frontmatter та інструкціями. OpenClaw завантажує **комплектні Skills** плюс необов’язкові локальні перевизначення й фільтрує їх під час завантаження на основі середовища, конфігурації та наявності бінарних файлів. +OpenClaw використовує папки навичок, **сумісні з [AgentSkills](https://agentskills.io)**, щоб навчати агента користуватися інструментами. Кожна навичка — це каталог, що містить `SKILL.md` з YAML frontmatter та інструкціями. OpenClaw завантажує **вбудовані навички** плюс необов’язкові локальні перевизначення та фільтрує їх під час завантаження на основі середовища, конфігурації та наявності бінарних файлів. ## Розташування та пріоритет -OpenClaw завантажує Skills з таких джерел: +OpenClaw завантажує навички з таких джерел: -1. **Додаткові папки Skills**: налаштовуються через `skills.load.extraDirs` -2. **Комплектні Skills**: постачаються разом з установленням (npm-пакет або OpenClaw.app) -3. **Керовані/локальні Skills**: `~/.openclaw/skills` -4. **Персональні Skills агента**: `~/.agents/skills` -5. **Skills агента проєкту**: `/.agents/skills` -6. **Skills робочого простору**: `/skills` +1. **Додаткові папки навичок**: налаштовуються через `skills.load.extraDirs` +2. **Вбудовані навички**: постачаються разом з інсталяцією (npm package або OpenClaw.app) +3. **Керовані/локальні навички**: `~/.openclaw/skills` +4. **Персональні навички агента**: `~/.agents/skills` +5. **Навички агента проєкту**: `/.agents/skills` +6. **Навички робочого простору**: `/skills` -Якщо назви Skills конфліктують, пріоритет такий: +Якщо назва навички конфліктує, пріоритет такий: -`/skills` (найвищий) → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → комплектні Skills → `skills.load.extraDirs` (найнижчий) +`/skills` (найвищий) → `/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані навички → `skills.load.extraDirs` (найнижчий) -## Skills для окремого агента vs спільні Skills +## Навички для окремого агента vs спільні навички -У конфігураціях **multi-agent** кожен агент має власний робочий простір. Це означає: +У конфігураціях **з кількома агентами** кожен агент має власний робочий простір. Це означає: -- **Skills для окремого агента** розміщуються в `/skills` лише для цього агента. -- **Skills агента проєкту** розміщуються в `/.agents/skills` і застосовуються до - цього робочого простору перед звичайною папкою `skills/` робочого простору. -- **Персональні Skills агента** розміщуються в `~/.agents/skills` і застосовуються до всіх - робочих просторів на цій машині. -- **Спільні Skills** розміщуються в `~/.openclaw/skills` (керовані/локальні) і видимі - **всім агентам** на цій самій машині. -- **Спільні папки** також можна додати через `skills.load.extraDirs` (найнижчий - пріоритет), якщо ви хочете мати спільний набір Skills для кількох агентів. +- **Навички для окремого агента** знаходяться в `/skills` лише для цього агента. +- **Навички агента проєкту** знаходяться в `/.agents/skills` і застосовуються до цього робочого простору перед звичайною папкою `skills/` робочого простору. +- **Персональні навички агента** знаходяться в `~/.agents/skills` і застосовуються в усіх робочих просторах на цій машині. +- **Спільні навички** знаходяться в `~/.openclaw/skills` (керовані/локальні) і видимі **всім агентам** на цій самій машині. +- **Спільні папки** також можна додати через `skills.load.extraDirs` (найнижчий пріоритет), якщо ви хочете мати спільний набір навичок, який використовують кілька агентів. -Якщо один і той самий Skill із тією самою назвою існує в кількох місцях, діє звичайний пріоритет: -перемагає робочий простір, потім Skills агента проєкту, потім персональні Skills агента, -потім керовані/локальні, потім комплектні, потім extra dirs. +Якщо та сама назва навички існує в кількох місцях, застосовується звичайний пріоритет: робочий простір має перевагу, далі йдуть навички агента проєкту, потім персональні навички агента, потім керовані/локальні, потім вбудовані, а потім додаткові каталоги. -## Allowlist Skills для агента +## Списки дозволених навичок агента -**Розташування** Skill і **видимість** Skill — це окремі механізми керування. +**Розташування** навички та її **видимість** — це окремі механізми керування. -- Розташування/пріоритет визначає, яка копія Skill з однаковою назвою перемагає. -- Allowlist агента визначає, які з видимих Skills агент реально може використовувати. +- Розташування/пріоритет визначає, яка копія однойменної навички перемагає. +- Списки дозволених навичок агента визначають, які з видимих навичок агент фактично може використовувати. -Використовуйте `agents.defaults.skills` для спільної бази, а потім перевизначайте для окремих агентів через -`agents.list[].skills`: +Використовуйте `agents.defaults.skills` для спільного базового набору, а потім перевизначайте для окремих агентів через `agents.list[].skills`: ```json5 { @@ -67,7 +60,7 @@ OpenClaw завантажує Skills з таких джерел: list: [ { id: "writer" }, // успадковує github, weather { id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням - { id: "locked-down", skills: [] }, // без Skills + { id: "locked-down", skills: [] }, // без навичок ], }, } @@ -75,77 +68,75 @@ OpenClaw завантажує Skills з таких джерел: Правила: -- Не задавайте `agents.defaults.skills`, якщо за замовчуванням Skills не мають бути обмежені. -- Не задавайте `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`. -- Установіть `agents.list[].skills: []`, щоб не було Skills. -- Непорожній список `agents.list[].skills` є фінальним набором для цього агента; він - не зливається зі значеннями за замовчуванням. +- Не вказуйте `agents.defaults.skills`, якщо за замовчуванням навички не мають бути обмежені. +- Не вказуйте `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`. +- Встановіть `agents.list[].skills: []`, щоб не дозволити жодних навичок. +- Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він не зливається зі значеннями за замовчуванням. -OpenClaw застосовує фактичний набір Skills агента до побудови prompt, -виявлення slash-команд Skills, синхронізації sandbox і snapshot Skills. +OpenClaw застосовує ефективний набір навичок агента під час побудови prompt, виявлення slash-команд навичок, синхронізації sandbox та знімків навичок. ## Plugins + Skills -Plugins можуть постачати власні Skills, указуючи каталоги `skills` у -`openclaw.plugin.json` (шляхи відносно кореня plugin). Skills plugin завантажуються, -коли plugin увімкнено. Сьогодні ці каталоги зливаються в той самий -шлях із низьким пріоритетом, що й `skills.load.extraDirs`, тож Skill із такою самою назвою з комплектного, -керованого, агентського або робочого простору перевизначає їх. -Ви можете фільтрувати їх через `metadata.openclaw.requires.config` у записі -конфігурації plugin. Див. [Plugins](/uk/tools/plugin) для виявлення/конфігурації і [Tools](/uk/tools) для -поверхні інструментів, якої навчають ці Skills. +Plugins можуть постачати власні навички, вказуючи каталоги `skills` у +`openclaw.plugin.json` (шляхи відносно кореня plugin). Навички plugin +завантажуються, коли plugin увімкнено. Це правильне місце для інструкцій з +використання інструментів, які надто довгі для опису інструмента, але мають бути +доступні щоразу, коли plugin встановлено; наприклад, browser plugin постачає +навичку `browser-automation` для багатокрокового керування браузером. Наразі ці +каталоги об’єднуються в той самий шлях з низьким пріоритетом, що й +`skills.load.extraDirs`, тому однойменна вбудована, керована, агентська навичка +або навичка робочого простору перевизначає їх. +Ви можете застосувати до них gatekeeping через `metadata.openclaw.requires.config` у записі конфігурації plugin. +Див. [Plugins](/uk/tools/plugin) щодо виявлення/конфігурації та [Tools](/uk/tools) щодо +поверхні інструментів, якої навчають ці навички. ## Skill Workshop -Необов’язковий, експериментальний plugin Skill Workshop може створювати або оновлювати Skills робочого простору -з повторно використовуваних процедур, помічених під час роботи агента. Його вимкнено за замовчуванням, і його потрібно явно ввімкнути через +Необов’язковий експериментальний plugin Skill Workshop може створювати або оновлювати навички робочого простору з повторно використовуваних процедур, помічених під час роботи агента. Він вимкнений за замовчуванням і має бути явно увімкнений через `plugins.entries.skill-workshop`. Skill Workshop записує лише в `/skills`, сканує згенерований вміст, -підтримує очікування підтвердження або автоматичні безпечні записи, ізолює небезпечні -пропозиції та оновлює snapshot Skills після успішних записів, щоб нові -Skills могли ставати доступними без перезапуску Gateway. +підтримує очікування схвалення або автоматичні безпечні записи, поміщає небезпечні +пропозиції в карантин і оновлює знімок навичок після успішного запису, щоб нові +навички могли стати доступними без перезапуску Gateway. -Використовуйте його, коли хочете, щоб виправлення на кшталт “наступного разу перевіряй attribution GIF” або -важко здобуті workflow на кшталт чеклістів QA для медіа стали довговічними -процедурними інструкціями. Починайте з очікування підтвердження; використовуйте автоматичні записи -лише в довірених робочих просторах після перегляду його пропозицій. Повний посібник: -[Plugin Skill Workshop](/uk/plugins/skill-workshop). +Використовуйте його, коли ви хочете, щоб виправлення на кшталт «наступного разу перевіряй атрибуцію GIF» або складно здобуті робочі процеси на кшталт чеклістів медіа-QA стали стійкими процедурними інструкціями. Починайте з режиму очікування схвалення; автоматичні записи використовуйте лише в довірених робочих просторах після перегляду його пропозицій. Повний посібник: +[Skill Workshop Plugin](/uk/plugins/skill-workshop). -## ClawHub (установлення + синхронізація) +## ClawHub (інсталяція + синхронізація) -ClawHub — це публічний реєстр Skills для OpenClaw. Переглянути можна на -[https://clawhub.ai](https://clawhub.ai). Використовуйте вбудовані команди `openclaw skills`, -щоб виявляти/установлювати/оновлювати Skills, або окремий CLI `clawhub`, коли -вам потрібні workflow публікації/синхронізації. +ClawHub — це публічний реєстр навичок для OpenClaw. Переглянути можна на +[https://clawhub.ai](https://clawhub.ai). Використовуйте нативні команди `openclaw skills` +для пошуку/встановлення/оновлення навичок або окремий CLI `clawhub`, коли +потрібні робочі процеси публікації/синхронізації. Повний посібник: [ClawHub](/uk/tools/clawhub). -Поширені потоки: +Поширені сценарії: -- Установити Skill у ваш робочий простір: +- Встановити навичку у свій робочий простір: - `openclaw skills install ` -- Оновити всі встановлені Skills: +- Оновити всі встановлені навички: - `openclaw skills update --all` -- Синхронізувати (сканування + публікація оновлень): +- Синхронізація (сканування + публікація оновлень): - `clawhub sync --all` -Вбудована команда `openclaw skills install` встановлює в активний каталог `skills/` -робочого простору. Окремий CLI `clawhub` також встановлює в `./skills` у -поточному робочому каталозі (або повертається до налаштованого робочого простору OpenClaw). -OpenClaw підхоплює це як `/skills` у наступній сесії. +Нативна команда `openclaw skills install` встановлює в активний каталог `skills/` +робочого простору. Окремий CLI `clawhub` також встановлює в `./skills` у вашому +поточному робочому каталозі (або використовує налаштований робочий простір OpenClaw як запасний варіант). +OpenClaw підхопить це як `/skills` у наступній сесії. ## Примітки щодо безпеки -- Ставтеся до сторонніх Skills як до **недовіреного коду**. Читайте їх перед увімкненням. -- Для недовірених вхідних даних і ризикованих інструментів віддавайте перевагу sandboxed-запускам. Див. [Sandboxing](/uk/gateway/sandboxing). -- Виявлення Skills у робочому просторі та додаткових каталогах приймає лише корені Skills і файли `SKILL.md`, чий розв’язаний realpath залишається в межах налаштованого кореня. -- Установлення залежностей Skill через Gateway (`skills.install`, initial setup і UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Результати рівня `critical` блокують за замовчуванням, якщо викликач явно не задасть небезпечне перевизначення; підозрілі результати все одно лише попереджають. -- `openclaw skills install ` працює інакше: він завантажує папку Skill із ClawHub у робочий простір і не використовує вищезгаданий шлях метаданих інсталятора. -- `skills.entries.*.env` і `skills.entries.*.apiKey` вводять секрети в процес **хоста** - для цього ходу агента (а не в sandbox). Не допускайте секретів у prompt і журналах. -- Для ширшої моделі загроз і чеклістів див. [Безпека](/uk/gateway/security). +- Ставтеся до сторонніх навичок як до **ненадійного коду**. Читайте їх перед увімкненням. +- Для ненадійних вхідних даних і ризикованих інструментів віддавайте перевагу sandbox-запускам. Див. [Sandboxing](/uk/gateway/sandboxing). +- Виявлення навичок у робочому просторі та додаткових каталогах приймає лише корені навичок і файли `SKILL.md`, чий обчислений realpath залишається всередині налаштованого кореня. +- Встановлення залежностей навичок через Gateway (`skills.install`, onboarding та UI налаштувань Skills) запускає вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Знахідки рівня `critical` блокуються за замовчуванням, якщо викликач явно не встановить небезпечне перевизначення; підозрілі знахідки, як і раніше, лише попереджають. +- `openclaw skills install ` відрізняється: ця команда завантажує папку навички ClawHub у робочий простір і не використовує описаний вище шлях метаданих інсталятора. +- `skills.entries.*.env` і `skills.entries.*.apiKey` інʼєктують секрети в **host**-процес + для цього ходу агента (не в sandbox). Не допускайте потрапляння секретів у prompt і логи. +- Для ширшої моделі загроз і чеклістів див. [Security](/uk/gateway/security). -## Формат (AgentSkills + сумісний з Pi) +## Формат (сумісний з AgentSkills + Pi) `SKILL.md` має містити принаймні: @@ -159,23 +150,23 @@ description: Generate or edit images via a provider-backed image workflow Примітки: - Ми дотримуємося специфікації AgentSkills щодо структури/призначення. -- Парсер, який використовується вбудованим агентом, підтримує лише **однорядкові** ключі frontmatter. +- Парсер, який використовує вбудований агент, підтримує лише **однорядкові** ключі frontmatter. - `metadata` має бути **однорядковим JSON-об’єктом**. -- Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до папки Skill. +- Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до папки навички. - Необов’язкові ключі frontmatter: - - `homepage` — URL, що відображається як “Website” в UI Skills на macOS (також підтримується через `metadata.openclaw.homepage`). - - `user-invocable` — `true|false` (типово: `true`). Коли `true`, Skill відкривається як slash-команда користувача. - - `disable-model-invocation` — `true|false` (типово: `false`). Коли `true`, Skill виключається з prompt моделі (але все ще доступний через виклик користувачем). - - `command-dispatch` — `tool` (необов’язково). Коли встановлено `tool`, slash-команда оминає модель і напряму диспетчеризується до інструмента. - - `command-tool` — назва інструмента для виклику, коли встановлено `command-dispatch: tool`. - - `command-arg-mode` — `raw` (типово). Для диспетчеризації до інструмента пересилає рядок сирих аргументів до інструмента (без розбору на рівні core). + - `homepage` — URL, що відображається як «Website» у macOS UI для Skills (також підтримується через `metadata.openclaw.homepage`). + - `user-invocable` — `true|false` (типове значення: `true`). Якщо `true`, навичка доступна як slash-команда користувача. + - `disable-model-invocation` — `true|false` (типове значення: `false`). Якщо `true`, навичка виключається з model prompt (але все ще доступна через виклик користувачем). + - `command-dispatch` — `tool` (необов’язково). Якщо встановлено `tool`, slash-команда обходить model і напряму диспетчеризується до інструмента. + - `command-tool` — назва інструмента, який треба викликати, коли встановлено `command-dispatch: tool`. + - `command-arg-mode` — `raw` (типове значення). Для dispatch до інструмента передає сирий рядок args в інструмент (без парсингу core). Інструмент викликається з параметрами: `{ command: "", commandName: "", skillName: "" }`. -## Фільтрація (фільтри під час завантаження) +## Gatekeeping (фільтри під час завантаження) -OpenClaw **фільтрує Skills під час завантаження** за допомогою `metadata` (однорядковий JSON): +OpenClaw **фільтрує навички під час завантаження** за допомогою `metadata` (однорядковий JSON): ```markdown --- @@ -194,26 +185,26 @@ metadata: Поля в `metadata.openclaw`: -- `always: true` — завжди включати Skill (пропускає інші фільтри). -- `emoji` — необов’язковий emoji, який використовує UI Skills на macOS. -- `homepage` — необов’язковий URL, що показується як “Website” в UI Skills на macOS. -- `os` — необов’язковий список платформ (`darwin`, `linux`, `win32`). Якщо задано, Skill підходить лише для цих ОС. +- `always: true` — завжди включати навичку (пропустити інші gate). +- `emoji` — необов’язкове emoji, яке використовує macOS UI для Skills. +- `homepage` — необов’язковий URL, що показується як «Website» у macOS UI для Skills. +- `os` — необов’язковий список платформ (`darwin`, `linux`, `win32`). Якщо встановлено, навичка доступна лише на цих ОС. - `requires.bins` — список; кожен елемент має існувати в `PATH`. -- `requires.anyBins` — список; у `PATH` має існувати хоча б один елемент. -- `requires.env` — список; env-змінна має існувати **або** бути наданою в конфігурації. +- `requires.anyBins` — список; у `PATH` має існувати принаймні один елемент. +- `requires.env` — список; змінна env має існувати **або** бути надана в конфігурації. - `requires.config` — список шляхів `openclaw.json`, які мають бути truthy. -- `primaryEnv` — назва env-змінної, пов’язаної з `skills.entries..apiKey`. -- `install` — необов’язковий масив специфікацій інсталятора, який використовує UI Skills на macOS (brew/node/go/uv/download). +- `primaryEnv` — назва змінної env, пов’язаної з `skills.entries..apiKey`. +- `install` — необов’язковий масив специфікацій інсталятора, який використовує macOS UI для Skills (brew/node/go/uv/download). -Примітка про sandboxing: +Примітка щодо sandboxing: -- `requires.bins` перевіряється на **хості** під час завантаження Skill. +- `requires.bins` перевіряється на **host** під час завантаження навички. - Якщо агент працює в sandbox, бінарний файл також має існувати **всередині контейнера**. - Установіть його через `agents.defaults.sandbox.docker.setupCommand` (або через користувацький образ). + Встановіть його через `agents.defaults.sandbox.docker.setupCommand` (або через власний образ). `setupCommand` виконується один раз після створення контейнера. - Установлення пакетів також потребує мережевого виходу, записуваної кореневої FS і користувача root у sandbox. - Приклад: Skill `summarize` (`skills/summarize/SKILL.md`) потребує CLI `summarize` - усередині контейнера sandbox, щоб працювати там. + Для встановлення пакетів також потрібні вихід у мережу, коренева ФС з можливістю запису та користувач root у sandbox. + Приклад: навичці `summarize` (`skills/summarize/SKILL.md`) потрібен CLI `summarize` + у контейнері sandbox, щоб працювати там. Приклад інсталятора: @@ -244,27 +235,27 @@ metadata: Примітки: -- Якщо вказано кілька інсталяторів, gateway вибирає **один** бажаний варіант (brew, якщо доступний, інакше node). +- Якщо вказано кілька інсталяторів, Gateway вибирає **один** бажаний варіант (brew, якщо доступний, інакше node). - Якщо всі інсталятори мають тип `download`, OpenClaw показує кожен запис, щоб ви могли бачити доступні артефакти. - Специфікації інсталятора можуть містити `os: ["darwin"|"linux"|"win32"]`, щоб фільтрувати варіанти за платформою. -- Установлення через Node враховують `skills.install.nodeManager` у `openclaw.json` (типово: npm; варіанти: npm/pnpm/yarn/bun). - Це впливає лише на **установлення Skills**; runtime Gateway і далі має бути Node +- Встановлення через Node враховують `skills.install.nodeManager` у `openclaw.json` (типове значення: npm; варіанти: npm/pnpm/yarn/bun). + Це впливає лише на **встановлення навичок**; середовище виконання Gateway, як і раніше, має бути Node (Bun не рекомендується для WhatsApp/Telegram). -- Вибір інсталятора через Gateway орієнтується на пріоритети, а не лише на node: - коли специфікації встановлення змішують типи, OpenClaw надає перевагу Homebrew, якщо +- Вибір інсталятора через Gateway базується на пріоритетах, а не лише на node: + коли специфікації встановлення змішують різні типи, OpenClaw надає перевагу Homebrew, якщо увімкнено `skills.install.preferBrew` і існує `brew`, потім `uv`, потім - налаштований node manager, а потім інші резервні варіанти, як-от `go` або `download`. + налаштованому менеджеру node, а далі іншим запасним варіантам на кшталт `go` або `download`. - Якщо кожна специфікація встановлення має тип `download`, OpenClaw показує всі варіанти завантаження - замість зведення до одного бажаного інсталятора. -- Установлення Go: якщо `go` відсутній, а `brew` доступний, gateway спочатку встановлює Go через Homebrew і за можливості встановлює `GOBIN` у `bin` Homebrew. -- Установлення через download: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типово: auto, якщо виявлено archive), `stripComponents`, `targetDir` (типово: `~/.openclaw/tools/`). + замість того, щоб зводити їх до одного бажаного інсталятора. +- Встановлення Go: якщо `go` відсутній, а `brew` доступний, gateway спочатку встановлює Go через Homebrew і за можливості встановлює `GOBIN` у `bin` Homebrew. +- Встановлення через download: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типове значення: auto, якщо архів виявлено), `stripComponents`, `targetDir` (типове значення: `~/.openclaw/tools/`). -Якщо `metadata.openclaw` відсутнє, Skill завжди підходить (якщо тільки -його не вимкнено в конфігурації або не заблоковано через `skills.allowBundled` для комплектних Skills). +Якщо `metadata.openclaw` відсутній, навичка завжди доступна (якщо вона не +вимкнена в конфігурації або не заблокована `skills.allowBundled` для вбудованих навичок). ## Перевизначення конфігурації (`~/.openclaw/openclaw.json`) -Комплектні/керовані Skills можна вмикати/вимикати та постачати їм значення env: +Вбудовані/керовані навички можна вмикати або вимикати та передавати їм значення env: ```json5 { @@ -272,7 +263,7 @@ metadata: entries: { "image-lab": { enabled: true, - apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або plaintext-рядок + apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або plaintext string env: { GEMINI_API_KEY: "GEMINI_KEY_HERE", }, @@ -288,69 +279,69 @@ metadata: } ``` -Примітка: якщо назва Skill містить дефіси, беріть ключ у лапки (JSON5 дозволяє ключі в лапках). +Примітка: якщо назва навички містить дефіси, візьміть ключ у лапки (JSON5 дозволяє ключі в лапках). -Якщо ви хочете стандартну генерацію/редагування зображень усередині самого OpenClaw, використовуйте основний -інструмент `image_generate` з `agents.defaults.imageGenerationModel` замість -комплектного Skill. Приклади Skills тут наведено для користувацьких або сторонніх workflow. +Якщо вам потрібне стандартне генерування/редагування зображень усередині самого OpenClaw, використовуйте core-інструмент +`image_generate` з `agents.defaults.imageGenerationModel` замість +вбудованої навички. Наведені тут приклади навичок призначені для кастомних або сторонніх робочих процесів. Для нативного аналізу зображень використовуйте інструмент `image` з `agents.defaults.imageModel`. -Для нативної генерації/редагування зображень використовуйте `image_generate` з -`agents.defaults.imageGenerationModel`. Якщо ви вибираєте `openai/*`, `google/*`, -`fal/*` або іншу image-модель певного provider, додайте також auth/API-ключ -цього provider. +Для нативного генерування/редагування зображень використовуйте `image_generate` з +`agents.defaults.imageGenerationModel`. Якщо ви виберете `openai/*`, `google/*`, +`fal/*` або іншу специфічну для провайдера модель зображень, також додайте auth/API +ключ цього провайдера. -Ключі конфігурації за замовчуванням збігаються з **назвою Skill**. Якщо Skill визначає +Ключі конфігурації за замовчуванням відповідають **назві навички**. Якщо навичка визначає `metadata.openclaw.skillKey`, використовуйте цей ключ у `skills.entries`. Правила: -- `enabled: false` вимикає Skill, навіть якщо він комплектний/встановлений. -- `env`: вводиться **лише якщо** змінна ще не задана в процесі. -- `apiKey`: зручний варіант для Skills, які оголошують `metadata.openclaw.primaryEnv`. - Підтримує plaintext-рядок або об’єкт SecretRef (`{ source, provider, id }`). -- `config`: необов’язковий набір для користувацьких полів на рівні Skill; користувацькі ключі мають жити тут. -- `allowBundled`: необов’язковий allowlist лише для **комплектних** Skills. Якщо задано, - підходять лише комплектні Skills зі списку (керовані/робочого простору Skills не зачіпаються). +- `enabled: false` вимикає навичку, навіть якщо вона вбудована/встановлена. +- `env`: інʼєктується **лише якщо** змінна ще не встановлена в процесі. +- `apiKey`: зручний механізм для навичок, які оголошують `metadata.openclaw.primaryEnv`. + Підтримує plaintext string або об’єкт SecretRef (`{ source, provider, id }`). +- `config`: необов’язковий контейнер для кастомних полів для кожної навички; кастомні ключі мають бути саме тут. +- `allowBundled`: необов’язковий allowlist **лише** для вбудованих навичок. Якщо задано, доступними є лише + вбудовані навички зі списку (керовані/робочого простору навички не зачіпаються). -## Ін’єкція середовища (для кожного запуску агента) +## Інʼєкція середовища (для кожного запуску агента) Коли починається запуск агента, OpenClaw: -1. Зчитує метадані Skill. +1. Читає метадані навички. 2. Застосовує будь-які `skills.entries..env` або `skills.entries..apiKey` до `process.env`. -3. Будує system prompt з **придатними** Skills. +3. Будує system prompt із **доступними** навичками. 4. Відновлює початкове середовище після завершення запуску. -Це **обмежено запуском агента**, а не глобальним середовищем оболонки. +Це **обмежено запуском агента**, а не глобальним shell-середовищем. -Для комплектного backend `claude-cli` OpenClaw також матеріалізує той самий -придатний snapshot як тимчасовий plugin Claude Code і передає його через -`--plugin-dir`. Тоді Claude Code може використовувати власний нативний resolver Skills, тоді як -OpenClaw і далі володіє пріоритетами, allowlist для окремих агентів, фільтрацією та -ін’єкцією env/API-ключів `skills.entries.*`. Інші CLI-backend використовують +Для вбудованого backend `claude-cli` OpenClaw також матеріалізує той самий +доступний snapshot як тимчасовий plugin Claude Code і передає його через +`--plugin-dir`. Після цього Claude Code може використовувати власний нативний resolver навичок, тоді як +OpenClaw, як і раніше, керує пріоритетом, allowlist для кожного агента, gatekeeping та +інʼєкцією env/API key через `skills.entries.*`. Інші CLI-backend використовують лише каталог prompt. ## Snapshot сесії (продуктивність) -OpenClaw створює snapshot придатних Skills **під час старту сесії** й повторно використовує цей список для наступних ходів у тій самій сесії. Зміни в Skills або конфігурації набувають чинності в наступній новій сесії. +OpenClaw створює snapshot доступних навичок **коли починається сесія** і повторно використовує цей список для наступних ходів у тій самій сесії. Зміни в навичках або конфігурації набувають чинності в наступній новій сесії. -Skills також можуть оновлюватися посеред сесії, коли ввімкнено спостерігач Skills або коли з’являється новий придатний віддалений node (див. нижче). Розглядайте це як **гаряче перезавантаження**: оновлений список буде підхоплено на наступному ході агента. +Навички також можуть оновлюватися посеред сесії, коли увімкнено watcher навичок або коли з’являється новий доступний віддалений node (див. нижче). Думайте про це як про **hot reload**: оновлений список підхоплюється на наступному ході агента. -Якщо для цієї сесії змінюється фактичний allowlist Skills агента, OpenClaw -оновлює snapshot, щоб видимі Skills залишалися узгодженими з поточним +Якщо для цієї сесії змінюється ефективний allowlist навичок агента, OpenClaw +оновлює snapshot, щоб видимі навички залишалися узгодженими з поточним агентом. -## Віддалені macOS Node (Gateway на Linux) +## Віддалені macOS nodes (Linux gateway) -Якщо Gateway працює на Linux, але підключено **macOS Node** **з дозволеним `system.run`** (безпека Exec approvals не встановлена в `deny`), OpenClaw може вважати Skills лише для macOS придатними, коли потрібні бінарні файли присутні на цьому node. Агент має виконувати такі Skills через інструмент `exec` з `host=node`. +Якщо Gateway працює на Linux, але **macOS node** підключено **з дозволеним `system.run`** (налаштування безпеки Exec approvals не встановлено в `deny`), OpenClaw може вважати навички лише для macOS доступними, якщо потрібні бінарні файли присутні на цьому node. Агент має виконувати такі навички через інструмент `exec` із `host=node`. -Це спирається на те, що node повідомляє про підтримку команд і на перевірку бінарних файлів через `system.run`. Якщо macOS Node пізніше від’єднається, Skills залишаться видимими; виклики можуть завершуватися помилкою, доки node не перепідключиться. +Це спирається на те, що node повідомляє про підтримку команд, а також на перевірку бінарних файлів через `system.run`. Якщо macOS node пізніше відключиться, навички залишатимуться видимими; виклики можуть не працювати, доки node не перепідключиться. -## Спостерігач Skills (автооновлення) +## Watcher навичок (автооновлення) -За замовчуванням OpenClaw стежить за папками Skills і підвищує версію snapshot Skills, коли змінюються файли `SKILL.md`. Це налаштовується в `skills.load`: +За замовчуванням OpenClaw стежить за папками навичок і збільшує snapshot навичок, коли змінюються файли `SKILL.md`. Налаштовується це в `skills.load`: ```json5 { @@ -363,12 +354,12 @@ Skills також можуть оновлюватися посеред сесі } ``` -## Вплив на токени (список Skills) +## Вплив на токени (список навичок) -Коли Skills придатні, OpenClaw вводить у system prompt компактний XML-список доступних Skills (через `formatSkillsForPrompt` у `pi-coding-agent`). Вартість є детермінованою: +Коли навички доступні, OpenClaw інʼєктує компактний XML-список доступних навичок у system prompt (через `formatSkillsForPrompt` у `pi-coding-agent`). Вартість детермінована: -- **Базовий overhead (лише коли є ≥1 Skill):** 195 символів. -- **На кожен Skill:** 97 символів + довжина XML-escaped значень ``, `` і ``. +- **Базові накладні витрати (лише коли ≥1 навички):** 195 символів. +- **На одну навичку:** 97 символів + довжина XML-escaped значень ``, `` і ``. Формула (символи): @@ -378,29 +369,29 @@ total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(locati Примітки: -- XML-escaping розширює `& < > " '` до сутностей (`&`, `<` тощо), збільшуючи довжину. -- Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI — ~4 символи на токен, тож **97 символів ≈ 24 токени** на Skill плюс фактична довжина ваших полів. +- XML escaping перетворює `& < > " '` на сутності (`&`, `<` тощо), збільшуючи довжину. +- Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI — ~4 символи на токен, тож **97 символів ≈ 24 токени** на одну навичку плюс фактична довжина ваших полів. -## Життєвий цикл керованих Skills +## Життєвий цикл керованих навичок -OpenClaw постачає базовий набір Skills як **комплектні Skills** у складі -встановлення (npm-пакет або OpenClaw.app). `~/.openclaw/skills` існує для локальних -перевизначень (наприклад, закріплення/патчування Skill без зміни комплектної -копії). Skills робочого простору належать користувачу й перевизначають обидва варіанти у разі конфлікту назв. +OpenClaw постачається з базовим набором навичок як **вбудованими навичками** у складі +інсталяції (npm package або OpenClaw.app). `~/.openclaw/skills` існує для локальних +перевизначень (наприклад, pinning/patching навички без змінення вбудованої +копії). Навички робочого простору належать користувачу та перевизначають обидва варіанти в разі конфлікту назв. -## Довідка з конфігурації +## Довідник конфігурації -Див. [Конфігурація Skills](/uk/tools/skills-config), щоб переглянути повну схему конфігурації. +Див. [Skills config](/uk/tools/skills-config), щоб переглянути повну схему конфігурації. -## Шукаєте більше Skills? +## Шукаєте більше навичок? Перегляньте [https://clawhub.ai](https://clawhub.ai). --- -## Пов’язано +## Пов’язане -- [Створення Skills](/uk/tools/creating-skills) — створення користувацьких Skills -- [Конфігурація Skills](/uk/tools/skills-config) — довідка з конфігурації Skills -- [Slash-команди](/uk/tools/slash-commands) — усі доступні slash-команди +- [Creating Skills](/uk/tools/creating-skills) — створення кастомних навичок +- [Skills Config](/uk/tools/skills-config) — довідник конфігурації навичок +- [Slash Commands](/uk/tools/slash-commands) — усі доступні slash-команди - [Plugins](/uk/tools/plugin) — огляд системи plugin