chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 23:32:40 +00:00
parent 92de6e4d6c
commit cb837b9910
5 changed files with 687 additions and 687 deletions

View File

@ -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-запитів.
<CardGroup cols={3}>
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Для приватних повідомлень Slack за замовчуванням використовується режим сполучення.
<Card title="Прив’язка" icon="link" href="/uk/channels/pairing">
Для особистих повідомлень Slack режим прив’язки використовується за замовчуванням.
</Card>
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
Вбудована поведінка команд і каталог команд.
</Card>
<Card title="Усунення проблем каналів" icon="wrench" href="/uk/channels/troubleshooting">
Діагностика між каналами та сценарії виправлення.
<Card title="Усунення проблем із каналами" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та інструкції з відновлення.
</Card>
</CardGroup>
@ -34,8 +34,8 @@ x-i18n:
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку 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-...`)
</Step>
@ -55,7 +55,7 @@ x-i18n:
}
```
Резервне значення через змінні середовища (лише для облікового запису за замовчуванням):
Резервний варіант через змінні середовища (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@ -80,7 +80,7 @@ openclaw gateway
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку 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
```
<Note>
Використовуйте унікальні шляхи webhook для багатьох HTTP-облікових записів
Використовуйте унікальні шляхи Webhook для багатокористувацького HTTP
Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
Для кожного облікового запису задавайте окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
</Note>
</Step>
@ -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
}
```
### Додаткові параметри маніфесту
### Додаткові налаштування маніфесту
Показують різні можливості, які розширюють наведені вище параметри за замовчуванням.
Описано різні можливості, які розширюють наведені вище значення за замовчуванням.
<AccordionGroup>
<Accordion title="Необов’язкові нативні slash-команди">
<Accordion title="Необов’язкові вбудовані слеш-команди">
Замість однієї налаштованої команди з нюансами можна використовувати кілька [нативних 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):
<Tabs>
<Tab title="Socket Mode (за замовчуванням)">
@ -385,9 +385,9 @@ openclaw gateway
</Accordion>
<Accordion title="Необов’язкові scope авторства (операції запису)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб у вихідних повідомленнях використовувалася identity активного агента (власне ім’я користувача та піктограма) замість identity застосунку Slack за замовчуванням.
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні ім’я користувача та іконку) замість типової ідентичності застосунку Slack.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте іконку emoji, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Необов’язкові scope токена користувача (операції читання)">
Якщо ви налаштовуєте `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`.
<Tip>
Для дій/читання каталогу токен користувача може мати пріоритет, якщо його налаштовано. Для запису пріоритетним лишається токен бота; запис через токен користувача дозволяється лише коли `userTokenReadOnly: false`, а токен бота недоступний.
Для дій/читання каталогів може надаватися перевага токену користувача, якщо його налаштовано. Для запису перевага все одно надається bot token; запис через user token дозволений лише коли `userTokenReadOnly: false`, а bot token недоступний.
</Tip>
## Дії та обмеження
@ -434,8 +434,8 @@ openclaw gateway
Доступні групи дій у поточному інструментарії Slack:
| Група | За замовчуванням |
| ---------- | ---------------- |
| Група | Типово |
| ---------- | ------- |
| messages | enabled |
| reactions | enabled |
| pins | enabled |
@ -447,29 +447,29 @@ openclaw gateway
## Керування доступом і маршрутизація
<Tabs>
<Tab title="Політика приватних повідомлень">
`channels.slack.dmPolicy` керує доступом до приватних повідомлень (застаріле: `channels.slack.dm.policy`):
<Tab title="Політика DM">
`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 <code>`.
Прив’язка в DM використовує `openclaw pairing approve slack <code>`.
</Tab>
@ -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`
</Tab>
<Tab title="Згадки та користувачі каналів">
Повідомлення в каналах за замовчуванням обробляються лише за наявності згадки.
Повідомлення в каналах типово проходять через обмеження за згадками.
Джерела згадок:
- явна згадка застосунку (`<@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.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
Керування для кожного каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `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:`)
</Tab>
</Tabs>
## Треди, сесії та теги відповідей
## Треди, сесії та теги відповіді
- Приватні повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- Із типовим `session.dmScope=main` приватні повідомлення Slack згортаються в основну сесію агента.
- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- Із типовим `session.dmScope=main` DM у Slack згортаються в основну сесію агента.
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в треді можуть створювати суфікси сесій треду (`:thread:<threadTs>`), коли це застосовно.
- Відповіді в тредах можуть створювати суфікси сесій тредів (`:thread:<threadTs>`), коли це застосовно.
- Типове значення `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:<id>]]`
Примітка: `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.<accountId>.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, а очищення автоматично намагається виконатися після завершення відповіді або шляху помилки.
## Медіа, розбиття на частини та доставка
## Медіа, розбиття на частини та доставлення
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
Файлові вкладення Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
Типове обмеження розміру вхідних даних у runtime — `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Вихідний текст і файли">
- текстові частини використовують `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 із медіапайплайна
</Accordion>
<Accordion title="Цілі доставки">
<Accordion title="Цілі доставлення">
Бажані явні цілі:
- `user:<id>` для приватних повідомлень
- `user:<id>` для DM
- `channel:<id>` для каналів
Приватні повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
DM у Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди та поведінка 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 параметрів: блоки кнопок
- 6100 параметрів: статичне меню вибору
- понад 100 параметрів: зовнішній вибір з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів інтерактивності
- перевищено ліміти Slack: закодовані значення параметрів повертаються до кнопок
- до 5 параметрів: button blocks
- 6-100 параметрів: static select menu
- понад 100 параметрів: external select з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів interactivity
- перевищено ліміти Slack: закодовані значення параметрів повертаються до buttons
```txt
/think
```
Сесії slash-команд використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільової сесії розмови через `CommandTargetSessionKey`.
Сесії слеш-команд використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільової сесії розмови через `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).
<Accordion title="Ключові поля Slack">
<Accordion title="Високосигнальні поля 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`
</Accordion>
@ -809,12 +809,12 @@ Slack автоматично вмикає нативні підтверджен
<AccordionGroup>
<Accordion title="Немає відповідей у каналах">
Перевірте по порядку:
Перевірте по черзі:
- `groupPolicy`
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- allowlist `users` для конкретного каналу
- allowlist `users` для кожного каналу
Корисні команди:
@ -826,14 +826,14 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення в приватних повідомленнях ігноруються">
<Accordion title="Повідомлення DM ігноруються">
Перевірте:
- `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
</Accordion>
<Accordion title="Socket Mode не підключається">
Перевірте токени бота й застосунку та ввімкнення Socket Mode в налаштуваннях застосунку Slack.
<Accordion title="Socket mode не підключається">
Перевірте bot token + app token і те, що Socket Mode увімкнено в налаштуваннях застосунку Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштований, але поточне середовище виконання не змогло визначити значення,
яке використовує SecretRef.
налаштовано, але поточний runtime не зміг визначити значення,
що надходить через SecretRef.
</Accordion>
<Accordion title="HTTP-режим не отримує події">
<Accordion title="HTTP mode не отримує події">
Перевірте:
- 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.
</Accordion>
<Accordion title="Нативні/slash-команди не спрацьовують">
Перевірте, що саме ви планували використовувати:
<Accordion title="Вбудовані/slash-команди не спрацьовують">
Перевірте, що саме ви хотіли використати:
- режим нативних команд (`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
## Пов’язане
<CardGroup cols={2}>
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
Зіставити користувача Slack із Gateway.
<Card title="Прив’язка" icon="link" href="/uk/channels/pairing">
Прив’яжіть користувача Slack до Gateway.
</Card>
<Card title="Групи" icon="users" href="/uk/channels/groups">
Поведінка каналів і групових приватних повідомлень.
Поведінка каналів і групових DM.
</Card>
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
Маршрутизація вхідних повідомлень до агентів.
@ -895,7 +895,7 @@ openclaw pairing list slack
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
Структура конфігурації та пріоритетність.
</Card>
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
Каталог команд і поведінка.
</Card>
</CardGroup>

View File

@ -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 <gatewayWsUrl>`: URL WebSocket Gateway (типово з конфігурації).
- `--token <token>`: токен Gateway (якщо потрібен).
- `--timeout <ms>`: тайм-аут запиту (мс).
- `--expect-final`: очікувати фінальну відповідь Gateway.
- `--browser-profile <name>`: вибрати профіль браузера (типовий береться з конфігурації).
- `--json`: машиночитаний вивід (де підтримується).
- `--expect-final`: чекати на фінальну відповідь Gateway.
- `--browser-profile <name>`: вибрати профіль браузера (типовий із конфігурації).
- `--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 <targetId>
openclaw browser close <targetId>
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)

View File

@ -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, вбудовані в плагін, є придатними лише тоді, коли плагін-власник увімкнено.
Це дозволяє плагінам інструментів надавати глибші робочі інструкції, не вбудовуючи всі
ці вказівки безпосередньо в опис кожного інструмента.
```
<available_skills>
<skill>
@ -186,32 +182,32 @@ OpenClaw може ін’єктувати блок попередження в P
</available_skills>
```
Це зберігає базовий 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)

View File

@ -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.
<AccordionGroup>
<Accordion title="Порти та доступність">
<Accordion title="Порти та досяжність">
- Сервіс керування прив’язується до 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.
</Accordion>
<Accordion title="Політика SSRF">
- Навігація браузера та відкриття вкладок захищені від 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` залишається підтримуваним як застарілий псевдонім.
</Accordion>
<Accordion title="Поведінка профілів">
<Accordion title="Поведінка профілю">
- `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.<name>.userDataDir`, коли профіль existing-session має підключатися до нестандартного профілю користувача Chromium (Brave, Edge тощо).
</Accordion>
</AccordionGroup>
## Використання 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.<name>.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=<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_API_KEY>` на ваш реальний токен Browserless.
- Виберіть регіональний ендпойнт, який відповідає вашому обліковому запису Browserless (див. їхню документацію).
- Замініть `<BROWSERLESS_API_KEY>` на ваш справжній токен 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/<kind>/<id>` або
підключається. Fallback до WebSocket немає.
- **Прямі кінцеві точки WebSocket** — `ws://host[:port]/devtools/<kind>/<id>` або
`wss://...` зі шляхом `/devtools/browser|page|worker|shared_worker|service_worker/<id>`.
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).
- Замініть `<BROWSERBASE_API_KEY>` на ваш реальний API key Browserbase.
- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тому
з [Overview dashboard](https://www.browserbase.com/overview).
- Замініть `<BROWSERBASE_API_KEY>` на ваш справжній 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 типово виділяються з діапазону **1880018899**.
- Видалення профілю переміщує його локальний каталог даних до Trash.
Усі ендпойнти керування приймають `?profile=<name>`; CLI використовує `--browser-profile`.
Усі кінцеві точки керування приймають `?profile=<name>`; 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.
<Accordion title="Обмеження функції existing-session">
Порівняно з керованим профілем `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` досі потребують шляху керованого браузера.
</Accordion>
## Гарантії ізоляції
- **Виділений каталог даних користувача**: ніколи не торкається профілю вашого особистого браузера.
- **Виділені порти**: уникає `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 "<name>" is not reachable at <cdpUrl>`
- Блокування 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) — ризики керування браузером і посилення захисту

View File

@ -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 агента проєкту**: `<workspace>/.agents/skills`
6. **Skills робочого простору**: `<workspace>/skills`
1. **Додаткові папки навичок**: налаштовуються через `skills.load.extraDirs`
2. **Вбудовані навички**: постачаються разом з інсталяцією (npm package або OpenClaw.app)
3. **Керовані/локальні навички**: `~/.openclaw/skills`
4. **Персональні навички агента**: `~/.agents/skills`
5. **Навички агента проєкту**: `<workspace>/.agents/skills`
6. **Навички робочого простору**: `<workspace>/skills`
Якщо назви Skills конфліктують, пріоритет такий:
Якщо назва навички конфліктує, пріоритет такий:
`<workspace>/skills` (найвищий) → `<workspace>/.agents/skills``~/.agents/skills``~/.openclaw/skills`комплектні Skills`skills.load.extraDirs` (найнижчий)
`<workspace>/skills` (найвищий) → `<workspace>/.agents/skills``~/.agents/skills``~/.openclaw/skills`вбудовані навички`skills.load.extraDirs` (найнижчий)
## Skills для окремого агента vs спільні Skills
## Навички для окремого агента vs спільні навички
У конфігураціях **multi-agent** кожен агент має власний робочий простір. Це означає:
У конфігураціях **з кількома агентами** кожен агент має власний робочий простір. Це означає:
- **Skills для окремого агента** розміщуються в `<workspace>/skills` лише для цього агента.
- **Skills агента проєкту** розміщуються в `<workspace>/.agents/skills` і застосовуються до
цього робочого простору перед звичайною папкою `skills/` робочого простору.
- **Персональні Skills агента** розміщуються в `~/.agents/skills` і застосовуються до всіх
робочих просторів на цій машині.
- **Спільні Skills** розміщуються в `~/.openclaw/skills` (керовані/локальні) і видимі
**всім агентам** на цій самій машині.
- **Спільні папки** також можна додати через `skills.load.extraDirs` (найнижчий
пріоритет), якщо ви хочете мати спільний набір Skills для кількох агентів.
- **Навички для окремого агента** знаходяться в `<workspace>/skills` лише для цього агента.
- **Навички агента проєкту** знаходяться в `<workspace>/.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 записує лише в `<workspace>/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 <skill-slug>`
- Оновити всі встановлені Skills:
- Оновити всі встановлені навички:
- `openclaw skills update --all`
- Синхронізувати (сканування + публікація оновлень):
- Синхронізація (сканування + публікація оновлень):
- `clawhub sync --all`
Вбудована команда `openclaw skills install` встановлює в активний каталог `skills/`
робочого простору. Окремий CLI `clawhub` також встановлює в `./skills` у
поточному робочому каталозі (або повертається до налаштованого робочого простору OpenClaw).
OpenClaw підхоплює це як `<workspace>/skills` у наступній сесії.
Нативна команда `openclaw skills install` встановлює в активний каталог `skills/`
робочого простору. Окремий CLI `clawhub` також встановлює в `./skills` у вашому
поточному робочому каталозі (або використовує налаштований робочий простір OpenClaw як запасний варіант).
OpenClaw підхопить це як `<workspace>/skills` у наступній сесії.
## Примітки щодо безпеки
- Ставтеся до сторонніх Skills як до **недовіреного коду**. Читайте їх перед увімкненням.
- Для недовірених вхідних даних і ризикованих інструментів віддавайте перевагу sandboxed-запускам. Див. [Sandboxing](/uk/gateway/sandboxing).
- Виявлення Skills у робочому просторі та додаткових каталогах приймає лише корені Skills і файли `SKILL.md`, чий розв’язаний realpath залишається в межах налаштованого кореня.
- Установлення залежностей Skill через Gateway (`skills.install`, initial setup і UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Результати рівня `critical` блокують за замовчуванням, якщо викликач явно не задасть небезпечне перевизначення; підозрілі результати все одно лише попереджають.
- `openclaw skills install <slug>` працює інакше: він завантажує папку 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 <slug>` відрізняється: ця команда завантажує папку навички 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: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }`.
## Фільтрація (фільтри під час завантаження)
## 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.<name>.apiKey`.
- `install` — необов’язковий масив специфікацій інсталятора, який використовує UI Skills на macOS (brew/node/go/uv/download).
- `primaryEnv` — назва змінної env, пов’язаної з `skills.entries.<name>.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/<skillKey>`).
замість того, щоб зводити їх до одного бажаного інсталятора.
- Встановлення Go: якщо `go` відсутній, а `brew` доступний, gateway спочатку встановлює Go через Homebrew і за можливості встановлює `GOBIN` у `bin` Homebrew.
- Встановлення через download: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типове значення: auto, якщо архів виявлено), `stripComponents`, `targetDir` (типове значення: `~/.openclaw/tools/<skillKey>`).
Якщо `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.<key>.env` або `skills.entries.<key>.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 значень `<name>`, `<description>` і `<location>`.
- **Базові накладні витрати (лише коли ≥1 навички):** 195 символів.
- **На одну навичку:** 97 символів + довжина XML-escaped значень `<name>`, `<description>` і `<location>`.
Формула (символи):
@ -378,29 +369,29 @@ total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(locati
Примітки:
- XML-escaping розширює `& < > " '` до сутностей (`&amp;`, `&lt;` тощо), збільшуючи довжину.
- Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI — ~4 символи на токен, тож **97 символів ≈ 24 токени** на Skill плюс фактична довжина ваших полів.
- XML escaping перетворює `& < > " '` на сутності (`&amp;`, `&lt;` тощо), збільшуючи довжину.
- Кількість токенів залежить від 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