chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-29 21:07:57 +00:00
parent 0316e2f85d
commit fc0ab82a25
4 changed files with 728 additions and 582 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,28 @@
---
read_when:
- Налаштування Slack або налагодження сокетного/HTTP-режиму Slack
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
summary: Налаштування Slack і поведінка під час виконання (режим сокетів + URL-адреси HTTP-запитів)
title: Slack
x-i18n:
generated_at: "2026-04-29T15:39:26Z"
generated_at: "2026-04-29T21:05:37Z"
model: gpt-5.5
provider: openai
source_hash: e888211dc4729da87c2f2d269dca691aec280b5f09ceb3416f5ea16d7930cdd3
source_hash: f4a991fccb938c133303624c8151bd15094cd4254ee9c9bd71649f1430aaa57c
source_path: channels/slack.md
workflow: 16
---
Готове до production-використання для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
Готовий до production для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
<CardGroup cols={3}>
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
Slack DM за замовчуванням використовують режим pairing.
DM у Slack за замовчуванням використовують режим сполучення.
</Card>
<Card title="Slash commands" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
</Card>
<Card title="Channel troubleshooting" icon="wrench" href="/uk/channels/troubleshooting">
Кросканальна діагностика та playbook-и відновлення.
Міжканальна діагностика та інструкції з відновлення.
</Card>
</CardGroup>
@ -34,29 +34,37 @@ x-i18n:
<Step title="Create a new Slack app">
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть workspace для вашого app
- вставте [приклад manifest](#manifest-and-scope-checklist) нижче й продовжте створення
- згенеруйте **App-Level Token** (`xapp-...`) із `connections:write`
- установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Configure OpenClaw">
```json5
Рекомендоване налаштування SecretRef:
```bash
export SLACK_APP_TOKEN=xapp-...
export SLACK_BOT_TOKEN=xoxb-...
cat > slack.socket.patch.json5 <<'JSON5'
{
channels: {
slack: {
enabled: true,
mode: "socket",
appToken: "xapp-...",
botToken: "xoxb-...",
appToken: { source: "env", provider: "default", id: "SLACK_APP_TOKEN" },
botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },
},
},
}
JSON5
openclaw config patch --file ./slack.socket.patch.json5 --dry-run
openclaw config patch --file ./slack.socket.patch.json5
```
Env fallback (лише для облікового запису за замовчуванням):
Резервний варіант через env (лише обліковий запис за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@ -81,33 +89,41 @@ openclaw gateway
<Step title="Create a new Slack app">
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть workspace для вашого app
- вставте [приклад manifest](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL перед створенням
- збережіть **Signing Secret** для перевірки запитів
- установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`)
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Configure OpenClaw">
```json5
Рекомендоване налаштування SecretRef:
```bash
export SLACK_BOT_TOKEN=xoxb-...
export SLACK_SIGNING_SECRET=...
cat > slack.http.patch.json5 <<'JSON5'
{
channels: {
slack: {
enabled: true,
mode: "http",
botToken: "xoxb-...",
signingSecret: "your-signing-secret",
botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },
signingSecret: { source: "env", provider: "default", id: "SLACK_SIGNING_SECRET" },
webhookPath: "/slack/events",
},
},
}
JSON5
openclaw config patch --file ./slack.http.patch.json5 --dry-run
openclaw config patch --file ./slack.http.patch.json5
```
<Note>
Використовуйте унікальні шляхи Webhook для HTTP із кількома обліковими записами
Використовуйте унікальні шляхи webhook для HTTP з кількома обліковими записами
Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
</Note>
</Step>
@ -126,7 +142,7 @@ openclaw gateway
## Налаштування транспорту Socket Mode
OpenClaw за замовчуванням встановлює тайм-аут pong клієнта Slack SDK на 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний workspace або host:
OpenClaw за замовчуванням встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
```json5
{
@ -143,13 +159,13 @@ OpenClaw за замовчуванням встановлює тайм-аут po
}
```
Використовуйте це лише для workspace-ів Socket Mode, які журналюють тайм-аути websocket pong/server-ping Slack або працюють на host-ах із відомим starvation event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout`це очікування server pings від Slack. Повідомлення та події app залишаються станом застосунку, а не сигналами життєздатності транспорту.
Використовуйте це лише для робочих просторів Socket Mode, де в журналах є тайм-аути Slack websocket pong/server-ping, або для хостів із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout`очікування server ping від Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами життєздатності транспорту.
## Контрольний список manifest і scope
## Контрольний список маніфесту та scope
Базовий manifest Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash command).
Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash command).
Базовий manifest (Socket Mode за замовчуванням):
Базовий маніфест (Socket Mode за замовчуванням):
```json
{
@ -221,7 +237,7 @@ OpenClaw за замовчуванням встановлює тайм-аут po
}
```
Для режиму **HTTP Request URLs** замініть `settings` варіантом HTTP і додайте `url` до кожної slash command. Потрібна публічна URL-адреса:
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash command. Потрібен публічний URL:
```json
{
@ -251,19 +267,19 @@ OpenClaw за замовчуванням встановлює тайм-аут po
}
```
### Додаткові налаштування manifest
### Додаткові налаштування маніфесту
Увімкніть інші функції, що розширюють наведені вище стандартні значення.
Увімкніть інші функції, що розширюють наведені вище типові налаштування.
<AccordionGroup>
<Accordion title="Optional native slash commands">
Замість однієї налаштованої команди можна використовувати кілька [нативних slash commands](#commands-and-slash-behavior) з нюансами:
Можна використовувати кілька [нативних slash commands](#commands-and-slash-behavior) замість однієї налаштованої команди з певними нюансами:
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
- Одночасно можна зробити доступними не більше ніж 25 slash commands.
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
Замініть наявний розділ `features.slash_commands` на підмножину [доступних команд](/uk/tools/slash-commands#command-list):
<Tabs>
<Tab title="Socket Mode (default)">
@ -407,9 +423,9 @@ OpenClaw за замовчуванням встановлює тайм-аут po
</Accordion>
<Accordion title="Optional authorship scopes (write operations)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (користувацьке ім’я та піктограму) замість стандартної ідентичності Slack app.
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача й іконку), а не типову ідентичність Slack app.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте іконку emoji, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Optional user-token scopes (read operations)">
@ -421,34 +437,34 @@ OpenClaw за замовчуванням встановлює тайм-аут po
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (якщо ви залежите від читання пошуку Slack)
- `search:read` (якщо ви залежите від читання через пошук Slack)
</Accordion>
</AccordionGroup>
## Модель токенів
- `botToken` + `appToken` потрібні для Socket Mode.
- Режим HTTP потребує `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
рядки або об’єкти SecretRef.
- Токени з config перевизначають env fallback.
- Env fallback `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
- `userToken` (`xoxp-...`) задається лише в config (без env fallback) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
- `botToken` + `appToken` є обов’язковими для Socket Mode.
- HTTP-режим потребує `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають рядки відкритого тексту
або об’єкти SecretRef.
- Токени конфігурації перевизначають резервне значення з env.
- Резервне значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до стандартного облікового запису.
- `userToken` (`xoxp-...`) налаштовується лише в конфігурації (без резервного значення env) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
Поведінка status snapshot:
Поведінка знімка стану:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус має значення `available`, `configured_unavailable` або `missing`.
- Стан: `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше неінлайнове джерело секретів, але поточна команда/шлях виконання
не змогли отримати фактичне значення.
- У режимі HTTP додається `signingSecretStatus`; у Socket Mode
або інше не inline-джерело секретів, але поточний шлях команди/середовища виконання
не зміг отримати фактичне значення.
- У HTTP-режимі включено `signingSecretStatus`; у Socket Mode
обов’язкова пара — `botTokenStatus` + `appTokenStatus`.
<Tip>
Для дій/читання каталогу можна надавати перевагу токену користувача, якщо його налаштовано. Для записів токен бота залишається пріоритетним; записи з токеном користувача дозволені лише тоді, коли `userTokenReadOnly: false` і токен бота недоступний.
Для дій/читання каталогу може надаватися перевага токену користувача, якщо його налаштовано. Для записів перевага й надалі надається токену бота; записи з токеном користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний.
</Tip>
## Дії та шлюзи
@ -465,15 +481,15 @@ OpenClaw за замовчуванням встановлює тайм-аут po
| memberInfo | увімкнено |
| emojiList | увімкнено |
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файла для інших типів файлів.
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів.
## Керування доступом і маршрутизація
## Контроль доступу й маршрутизація
<Tabs>
<Tab title="DM policy">
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` є канонічним списком дозволених DM.
- `pairing` (типово)
- `pairing` (за замовчуванням)
- `allowlist`
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`)
- `disabled`
@ -486,15 +502,15 @@ OpenClaw за замовчуванням встановлює тайм-аут po
- `dm.groupEnabled` (групові DM типово false)
- `dm.groupChannels` (необов’язковий список дозволених MPIM)
Пріоритетність для кількох облікових записів:
Пріоритет для кількох облікових записів:
- `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, коли їхній власний `allowFrom` не задано.
- Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу.
Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` досі читаються для сумісності. `openclaw doctor --fix` мігрує їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу.
Зв’язування в DM використовує `openclaw pairing approve slack <code>`.
Pairing у DM використовує `openclaw pairing approve slack <code>`.
</Tab>
@ -505,28 +521,28 @@ OpenClaw за замовчуванням встановлює тайм-аут po
- `allowlist`
- `disabled`
Список дозволених каналів міститься в `channels.slack.channels` і має використовувати стабільні ID каналів.
Список дозволених каналів розміщується в `channels.slack.channels` і має використовувати стабільні ідентифікатори каналів.
Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), виконання повертається до `groupPolicy="allowlist"` і записує попередження (навіть якщо `channels.defaults.groupPolicy` задано).
Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
Розв’язання імен/ID:
Розпізнавання імен/ідентифікаторів:
- записи списку дозволених каналів і записи списку дозволених DM розв’язуються під час запуску, коли доступ токена це дозволяє
- нерозв’язані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- записи списку дозволених каналів і списку дозволених DM розпізнаються під час запуску, коли доступ токена це дозволяє
- нерозпізнані записи назв каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- вхідна авторизація й маршрутизація каналів типово орієнтуються насамперед на ідентифікатор; пряме зіставлення за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Mentions and channel users">
Повідомлення каналів типово обмежуються згадками.
Повідомлення каналів типово проходять через шлюз згадок.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`)
- неявна поведінка відповіді в гілці боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
- неявна поведінка треду відповіді боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
Налаштування для кожного каналу (`channels.slack.channels.<id>`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
Керування для окремих каналів (`channels.slack.channels.<id>`; імена лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (список дозволених)
@ -540,21 +556,21 @@ OpenClaw за замовчуванням встановлює тайм-аут po
</Tab>
</Tabs>
## Гілки, сесії та теги відповідей
## Треди, сеанси й теги відповідей
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
- З типовим `session.dmScope=main` DM Slack згортаються в основну сесію агента.
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:<threadTs>`), коли це застосовно.
- З типовим `session.dmScope=main` DM Slack згортаються до основного сеансу агента.
- Сеанси каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в треді можуть створювати суфікси сеансів треду (`: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.dm.replyToMode`
- застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode`
Підтримуються ручні теги відповідей:
@ -562,19 +578,19 @@ OpenClaw за замовчуванням встановлює тайм-аут po
- `[[reply_to:<id>]]`
<Note>
`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
`replyToMode="off"` вимикає **всі** відповіді в тредах у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги досі враховуються в режимі `"off"`. Треди Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline.
</Note>
## Реакції підтвердження
`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок розв’язання:
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
@ -583,22 +599,22 @@ OpenClaw за замовчуванням встановлює тайм-аут po
## Потокове передавання тексту
`channels.slack.streaming` керує поведінкою live-попереднього перегляду:
`channels.slack.streaming` керує поведінкою живого попереднього перегляду:
- `off`: вимкнути потокове передавання live-попереднього перегляду.
- `off`: вимкнути потокове передавання живого попереднього перегляду.
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
- `block`: додавати фрагментовані оновлення попереднього перегляду.
- `progress`: показувати текст статусу прогресу під час генерації, а потім надсилати фінальний текст.
- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, маршрутизувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
- `progress`: показувати текст стану прогресу під час генерації, потім надіслати фінальний текст.
- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
- Щоб з’явилися нативне потокове передавання тексту та статус гілки помічника Slack, має бути доступна гілка відповіді. Вибір гілки все ще відповідає `replyToMode`.
- Для появи нативного потокового передавання тексту й стану треду асистента Slack має бути доступний тред відповіді. Вибір треду й надалі дотримується `replyToMode`.
- Корені каналів і групових чатів усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне.
- DM Slack верхнього рівня типово залишаються поза гілкою, тому вони не показують попередній перегляд у стилі гілки; використовуйте відповіді в гілках або `typingReaction`, якщо хочете бачити прогрес там.
- Медіа та нетекстові payload-и повертаються до звичайної доставки.
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні тексти/блоки скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
- Якщо потокове передавання завершується помилкою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload-ів.
- DM Slack верхнього рівня типово лишаються поза тредом, тому вони не показують попередній перегляд у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо хочете бачити прогрес там.
- Медіа й нетекстові payloads повертаються до звичайної доставки.
- Фінали медіа/помилок скасовують очікувані редагування попереднього перегляду; відповідні текстові/блокові фінали скидаються лише тоді, коли можуть редагувати попередній перегляд на місці.
- Якщо потокове передавання переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payloads.
Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
@ -617,13 +633,13 @@ OpenClaw за замовчуванням встановлює тайм-аут po
Застарілі ключі:
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується в `channels.slack.streaming.mode`.
- boolean `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`.
- boolean `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...".
Порядок розв’язання:
@ -633,25 +649,25 @@ OpenClaw за замовчуванням встановлює тайм-аут po
Примітки:
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція виконується за принципом best-effort, а очищення виконується автоматично після завершення відповіді або шляху помилки.
- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху помилки.
## Медіа, фрагментація та доставка
## Медіа, фрагментація й доставка
<AccordionGroup>
<Accordion title="Inbound attachments">
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й ліміти розміру це дозволяють. Заповнювачі файлів містять `fileId` Slack, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
Завантаження використовують обмежені тайм-аути простою та загальні тайм-аути. Якщо отримання файла Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файла.
Завантаження використовують обмежені тайм-аути простою й загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
Типове обмеження розміру вхідних даних у середовищі виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Outbound text and files">
- текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців
- надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
- ліміт вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли його налаштовано; інакше надсилання каналом використовує типові значення MIME-kind з медіаконвеєра
- `channels.slack.chunkMode="newline"` вмикає розділення з пріоритетом абзаців
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення MIME-kind з медіаконвеєра
</Accordion>
@ -661,14 +677,14 @@ OpenClaw за замовчуванням встановлює тайм-аут po
- `user:<id>` для DM
- `channel:<id>` для каналів
DM Slack відкриваються через API розмов Slack під час надсилання до цілей користувачів.
DM Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди та поведінка slash
## Команди й поведінка slash
Slash-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
Slash-команди з’являються в Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд:
- `enabled: false`
- `name: "openclaw"`
@ -679,30 +695,30 @@ Slash-команди з’являються в Slack або як одна на
/openclaw /help
```
Нативні команди потребують [додаткових налаштувань manifest](#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.
- Нативний авторежим команд для Slack **вимкнено**, тому `commands.native: "auto"` не вмикає нативні команди Slack.
```txt
/help
```
Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції:
Меню аргументів нативних команд використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції:
- до 5 опцій: блоки кнопок
- 6-100 опцій: статичне меню вибору
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники опцій інтерактивності
- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок
- перевищені обмеження Slack: закодовані значення опцій повертаються до кнопок
```txt
/think
```
Slash-сесії використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до сесії цільової розмови за допомогою `CommandTargetSessionKey`.
Slash-сеанси використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільового сеансу розмови за допомогою `CommandTargetSessionKey`.
## Інтерактивні відповіді
Slack може рендерити інтерактивні елементи керування відповідями, створені агентом, але цю функцію типово вимкнено.
Slack може рендерити інтерактивні елементи керування відповідями, створеними агентом, але ця функція типово вимкнена.
Увімкніть її глобально:
@ -718,7 +734,7 @@ Slack може рендерити інтерактивні елементи ке
}
```
Або увімкніть її лише для одного облікового запису Slack:
Або ввімкніть це лише для одного облікового запису Slack:
```json5
{
@ -736,44 +752,44 @@ Slack може рендерити інтерактивні елементи ке
}
```
Коли ввімкнено, агенти можуть видавати директиви відповідей лише для Slack:
Коли ввімкнено, агенти можуть надсилати директиви відповідей лише для Slack:
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
These directives compile into Slack Block Kit and route clicks or selections back through the existing Slack interaction event path.
Ці директиви компілюються у Slack Block Kit і маршрутизують натискання або вибір назад через наявний шлях подій взаємодії Slack.
Notes:
Примітки:
- This is Slack-specific UI. Other channels do not translate Slack Block Kit directives into their own button systems.
- The interactive callback values are OpenClaw-generated opaque tokens, not raw agent-authored values.
- If generated interactive blocks would exceed Slack Block Kit limits, OpenClaw falls back to the original text reply instead of sending an invalid blocks payload.
- Це інтерфейс, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок.
- Значення інтерактивних callback є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
- Якщо згенеровані інтерактивні блоки перевищили б обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
## Exec approvals in Slack
## Підтвердження exec у Slack
Slack can act as a native approval client with interactive buttons and interactions, instead of falling back to the Web UI or terminal.
Slack може діяти як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до вебінтерфейсу або термінала.
- Exec approvals use `channels.slack.execApprovals.*` for native DM/channel routing.
- Plugin approvals can still resolve through the same Slack-native button surface when the request already lands in Slack and the approval id kind is `plugin:`.
- Approver authorization is still enforced: only users identified as approvers can approve or deny requests through Slack.
- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
- Підтвердження Plugin можуть і надалі оброблятися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє в Slack і тип ідентифікатора підтвердження є `plugin:`.
- Авторизація затверджувачів і надалі застосовується: лише користувачі, визначені як затверджувачі, можуть підтверджувати або відхиляти запити через Slack.
This uses the same shared approval button surface as other channels. When `interactivity` is enabled in your Slack app settings, approval prompts render as Block Kit buttons directly in the conversation.
When those buttons are present, they are the primary approval UX; OpenClaw
should only include a manual `/approve` command when the tool result says chat
approvals are unavailable or manual approval is the only path.
Тут використовується та сама спільна поверхня кнопок підтвердження, що й в інших каналах. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
має додавати ручну команду `/approve` лише тоді, коли результат інструмента каже, що підтвердження
в чаті недоступні або ручне підтвердження є єдиним шляхом.
Config path:
Шлях конфігурації:
- `channels.slack.execApprovals.enabled`
- `channels.slack.execApprovals.approvers` (optional; falls back to `commands.ownerAllowFrom` when possible)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, default: `dm`)
- `channels.slack.execApprovals.approvers` (необов’язково; за можливості повертається до `commands.ownerAllowFrom`)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
- `agentFilter`, `sessionFilter`
Slack auto-enables native exec approvals when `enabled` is unset or `"auto"` and at least one
approver resolves. Set `enabled: false` to disable Slack as a native approval client explicitly.
Set `enabled: true` to force native approvals on when approvers resolve.
Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і принаймні один
затверджувач визначається. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтверджень.
Установіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли затверджувачі визначаються.
Default behavior with no explicit Slack exec approval config:
Типова поведінка без явної конфігурації підтверджень exec для Slack:
```json5
{
@ -783,8 +799,8 @@ Default behavior with no explicit Slack exec approval config:
}
```
Explicit Slack-native config is only needed when you want to override approvers, add filters, or
opt into origin-chat delivery:
Явна нативна для Slack конфігурація потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або
ввімкнути доставку до початкового чату:
```json5
{
@ -800,54 +816,54 @@ opt into origin-chat delivery:
}
```
Shared `approvals.exec` forwarding is separate. Use it only when exec approval prompts must also
route to other chats or explicit out-of-band targets. Shared `approvals.plugin` forwarding is also
separate; Slack-native buttons can still resolve plugin approvals when those requests already land
in Slack.
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити підтвердження exec також мають
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також є
окремим; нативні для Slack кнопки все одно можуть обробляти підтвердження Plugin, коли ці запити вже потрапляють
у Slack.
Same-chat `/approve` also works in Slack channels and DMs that already support commands. See [Exec approvals](/uk/tools/exec-approvals) for the full approval forwarding model.
`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals), щоб переглянути повну модель переспрямування підтверджень.
## Events and operational behavior
## Події та операційна поведінка
- Message edits/deletes are mapped into system events.
- Thread broadcasts ("Also send to channel" thread replies) are processed as normal user messages.
- Reaction add/remove events are mapped into system events.
- Member join/leave, channel created/renamed, and pin add/remove events are mapped into system events.
- `channel_id_changed` can migrate channel config keys when `configWrites` is enabled.
- Channel topic/purpose metadata is treated as untrusted context and can be injected into routing context.
- Thread starter and initial thread-history context seeding are filtered by configured sender allowlists when applicable.
- Block actions and modal interactions emit structured `Slack interaction: ...` system events with rich payload fields:
- block actions: selected values, labels, picker values, and `workflow_*` metadata
- modal `view_submission` and `view_closed` events with routed channel metadata and form inputs
- Редагування/видалення повідомлень зіставляються із системними подіями.
- Трансляції потоків (відповіді в потоці з параметром "Also send to channel") обробляються як звичайні повідомлення користувача.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень зіставляються із системними подіями.
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли `configWrites` увімкнено.
- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути додані до контексту маршрутизації.
- Початкове повідомлення потоку та початкове наповнення контексту історії потоку фільтруються за налаштованими allowlist відправників, коли це застосовно.
- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з багатими полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними даними форми
## Configuration reference
## Довідник конфігурації
Primary reference: [Configuration reference - Slack](/uk/gateway/config-channels#slack).
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
<Accordion title="High-signal Slack fields">
<Accordion title="Поля Slack з високою інформативністю">
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- DM access: `dm.enabled`, `dmPolicy`, `allowFrom` (legacy: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- compatibility toggle: `dangerouslyAllowNameMatching` (break-glass; keep off unless needed)
- channel access: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- threading/history: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- ops/features: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
- режим/автентифікація: `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`
- операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
</Accordion>
## Troubleshooting
## Усунення несправностей
<AccordionGroup>
<Accordion title="No replies in channels">
Check, in order:
<Accordion title="Немає відповідей у каналах">
Перевірте по черзі:
- `groupPolicy`
- channel allowlist (`channels.slack.channels`)
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- per-channel `users` allowlist
- allowlist `users` для окремого каналу
Useful commands:
Корисні команди:
```bash
openclaw channels status --probe
@ -857,15 +873,15 @@ openclaw doctor
</Accordion>
<Accordion title="DM messages ignored">
Check:
<Accordion title="Повідомлення DM ігноруються">
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (or legacy `channels.slack.dm.policy`)
- pairing approvals / allowlist entries
- Slack Assistant DM events: verbose logs mentioning `drop message_changed`
usually mean Slack sent an edited Assistant-thread event without a
recoverable human sender in message metadata
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- підтвердження сполучення / записи allowlist
- події DM Slack Assistant: докладні журнали із згадкою `drop message_changed`
зазвичай означають, що Slack надіслав подію відредагованого потоку Assistant без
відновлюваного людського відправника в метаданих повідомлення
```bash
openclaw pairing list slack
@ -873,125 +889,124 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket mode not connecting">
Validate bot + app tokens and Socket Mode enablement in Slack app settings.
<Accordion title="Socket mode не підключається">
Перевірте токени бота й застосунку, а також увімкнення Socket Mode у налаштуваннях застосунку Slack.
If `openclaw channels status --probe --json` shows `botTokenStatus` or
`appTokenStatus: "configured_unavailable"`, the Slack account is
configured but the current runtime could not resolve the SecretRef-backed
value.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточне середовище виконання не змогло визначити значення, підкріплене SecretRef.
</Accordion>
<Accordion title="HTTP mode not receiving events">
Validate:
<Accordion title="HTTP-режим не отримує події">
Перевірте:
- signing secret
- webhook path
- Slack Request URLs (Events + Interactivity + Slash Commands)
- unique `webhookPath` per HTTP account
- секрет підпису
- шлях Webhook
- URL запитів Slack (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
If `signingSecretStatus: "configured_unavailable"` appears in account
snapshots, the HTTP account is configured but the current runtime could not
resolve the SecretRef-backed signing secret.
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
визначити секрет підпису, підкріплений SecretRef.
</Accordion>
<Accordion title="Native/slash commands not firing">
Verify whether you intended:
<Accordion title="Нативні/slash-команди не спрацьовують">
Перевірте, що саме ви мали намір використовувати:
- native command mode (`channels.slack.commands.native: true`) with matching slash commands registered in Slack
- or single slash command mode (`channels.slack.slashCommand.enabled: true`)
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Also check `commands.useAccessGroups` and channel/user allowlists.
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
</Accordion>
</AccordionGroup>
## Attachment vision reference
## Довідка щодо vision для вкладень
Slack can attach downloaded media to the agent turn when Slack file downloads succeed and size limits permit. Image files can be passed through the media understanding path or directly to a vision-capable reply model; other files are retained as downloadable file context rather than treated as image input.
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст завантажуваного файлу, а не обробляються як вхідне зображення.
### Supported media types
### Підтримувані типи медіа
| Media type | Source | Current behavior | Notes |
| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| JPEG / PNG / GIF / WebP images | Slack file URL | Downloaded and attached to the turn for vision-capable handling | Per-file cap: `channels.slack.mediaMaxMb` (default 20 MB) |
| PDF files | Slack file URL | Downloaded and exposed as file context for tools such as `download-file` or `pdf` | Slack inbound does not convert PDFs into image-vision input automatically |
| Other files | Slack file URL | Downloaded when possible and exposed as file context | Binary files are not treated as image input |
| Thread replies | Thread starter files | Root-message files can be hydrated as context when the reply has no direct media | File-only starters use an attachment placeholder |
| Multi-image messages | Multiple Slack files | Each file is evaluated independently | Slack processing is capped at eight files per message |
| Тип медіа | Джерело | Поточна поведінка | Примітки |
| ------------------------------ | ------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються та прикріплюються до ходу для обробки з підтримкою vision | Обмеження на файл: `channels.slack.mediaMaxMb` (типово 20 MB) |
| Файли PDF | URL файлу Slack | Завантажуються та надаються як файловий контекст для інструментів, як-от `download-file` або `pdf` | Вхідні дані Slack не перетворюють PDF автоматично на вхідні дані image-vision |
| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
| Відповіді в потоці | Файли початкового повідомлення потоку | Файли кореневого повідомлення можуть бути завантажені як контекст, коли відповідь не має прямих медіа | Початкові повідомлення лише з файлами використовують placeholder вкладення |
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
### Inbound pipeline
### Вхідний конвеєр
When a Slack message with file attachments arrives:
Коли надходить повідомлення Slack із файловими вкладеннями:
1. OpenClaw downloads the file from Slack's private URL using the bot token (`xoxb-...`).
2. The file is written to the media store on success.
3. Downloaded media paths and content types are added to the inbound context.
4. Image-capable model/tool paths can use image attachments from that context.
5. Non-image files remain available as file metadata or media references for tools that can handle them.
1. OpenClaw завантажує файл із приватного URL Slack за допомогою токена бота (`xoxb-...`).
2. У разі успіху файл записується до сховища медіа.
3. Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту.
4. Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти.
### Thread-root attachment inheritance
### Успадкування вкладень кореня потоку
When a message arrives in a thread (has a `thread_ts` parent):
Коли повідомлення надходить у потоці (має батьківський `thread_ts`):
- If the reply itself has no direct media and the included root message has files, Slack can hydrate the root files as thread-starter context.
- Direct reply attachments take precedence over root-message attachments.
- A root message that has only files and no text is represented with an attachment placeholder so the fallback can still include its files.
- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може завантажити кореневі файли як контекст початкового повідомлення потоку.
- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється placeholder вкладення, щоб fallback усе одно міг включити його файли.
### Multi-attachment handling
### Обробка кількох вкладень
When a single Slack message contains multiple file attachments:
Коли одне повідомлення Slack містить кілька файлових вкладень:
- Each attachment is processed independently through the media pipeline.
- Downloaded media references are aggregated into the message context.
- Processing order follows Slack's file order in the event payload.
- A failure in one attachment's download does not block others.
- Кожне вкладення обробляється незалежно через конвеєр медіа.
- Посилання на завантажені медіа агрегуються в контекст повідомлення.
- Порядок обробки відповідає порядку файлів Slack у payload події.
- Помилка завантаження одного вкладення не блокує інші.
### Size, download, and model limits
### Обмеження розміру, завантаження та моделі
- **Size cap**: Default 20 MB per file. Configurable via `channels.slack.mediaMaxMb`.
- **Download failures**: Files that Slack cannot serve, expired URLs, inaccessible files, oversize files, and Slack auth/login HTML responses are skipped instead of being reported as unsupported formats.
- **Vision model**: Image analysis uses the active reply model when it supports vision, or the image model configured at `agents.defaults.imageModel`.
- **Обмеження розміру**: типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
- **Помилки завантаження**: файли, які Slack не може надати, прострочені URL, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість повідомлення про непідтримувані формати.
- **Модель vision**: аналіз зображень використовує активну модель відповіді, коли вона підтримує vision, або модель зображень, налаштовану в `agents.defaults.imageModel`.
### Known limits
### Відомі обмеження
| Сценарій | Поточна поведінка | Обхідний шлях |
| ------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Прострочена URL-адреса файлу Slack | Файл пропущено; помилка не відображається | Повторно завантажте файл у Slack |
| Модель зору не налаштовано | Вкладення із зображеннями зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зору |
| Дуже великі зображення (> 20 МБ за замовчуванням) | Пропускаються відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені у Slack, обробляються за принципом найкращих зусиль | Повторно поділіться безпосередньо в треді OpenClaw |
| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через зір для зображень | Використайте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF |
| Сценарій | Поточна поведінка | Обхідний шлях |
| ------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Прострочена URL-адреса файлу Slack | Файл пропущено; помилка не показується | Повторно завантажте файл у Slack |
| Модель зору не налаштована | Вкладення зображень зберігаються як медіапосилання, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зору |
| Дуже великі зображення (> 20 MB за замовчуванням) | Пропускаються відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщених у Slack, обробляються з найкращими зусиллями | Поділіться ними напряму в гілці OpenClaw |
| PDF-вкладення | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через зоровий аналіз зображень | Використайте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF |
### Пов’язана документація
- [Конвеєр розуміння медіа](/uk/nodes/media-understanding)
- [Інструмент PDF](/uk/tools/pdf)
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зору для вкладень Slack
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорового аналізу вкладень Slack
- Регресійні тести: [#51353](https://github.com/openclaw/openclaw/issues/51353)
- Перевірка наживо: [#51354](https://github.com/openclaw/openclaw/issues/51354)
- Жива перевірка: [#51354](https://github.com/openclaw/openclaw/issues/51354)
## Пов’язане
<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="Groups" icon="users" href="/uk/channels/groups">
<Card title="Групи" icon="users" href="/uk/channels/groups">
Поведінка каналів і групових приватних повідомлень.
</Card>
<Card title="Channel routing" icon="route" href="/uk/channels/channel-routing">
Спрямовуйте вхідні повідомлення агентам.
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
Маршрутизуйте вхідні повідомлення до агентів.
</Card>
<Card title="Security" icon="shield" href="/uk/gateway/security">
<Card title="Безпека" icon="shield" href="/uk/gateway/security">
Модель загроз і посилення захисту.
</Card>
<Card title="Configuration" icon="sliders" href="/uk/gateway/configuration">
Структура конфігурації та пріоритетність.
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
Структура конфігурації та пріоритети.
</Card>
<Card title="Slash commands" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Каталог команд і поведінка.
</Card>
</CardGroup>

View File

@ -2,23 +2,23 @@
read_when:
- Ви хочете читати або редагувати конфігурацію неінтерактивно
sidebarTitle: Config
summary: Довідник CLI для `openclaw config` (get/set/unset/file/schema/validate)
summary: Довідка CLI для `openclaw config` (get/set/patch/unset/file/schema/validate)
title: Конфігурація
x-i18n:
generated_at: "2026-04-28T11:06:26Z"
generated_at: "2026-04-29T21:05:31Z"
model: gpt-5.5
provider: openai
source_hash: 3e90f979a102a6c54f8458f8a2c7f36bec5b1e82ea4bdd30e9c3a4b1d903cf11
source_hash: f1f55c4b932d469cb9112d9f55b66f0ff88dbe066250651df7a0a753060a223d
source_path: cli/config.md
workflow: 16
---
Помічники конфігурації для неінтерактивних змін у `openclaw.json`: отримання/задання/скасування/файл/схема/перевірка значень за шляхом і виведення активного файла конфігурації. Запустіть без підкоманди, щоб відкрити майстер налаштування (так само, як `openclaw configure`).
Помічники конфігурації для неінтерактивних правок в `openclaw.json`: отримуйте/встановлюйте/застосовуйте patch/скидайте/виводьте файл/схему/перевіряйте значення за шляхом і друкуйте активний файл конфігурації. Запустіть без підкоманди, щоб відкрити майстер налаштування (те саме, що `openclaw configure`).
## Кореневі параметри
## Кореневі опції
<ParamField path="--section <section>" type="string">
Повторюваний фільтр розділу керованого налаштування, коли ви запускаєте `openclaw config` без підкоманди.
Повторюваний фільтр розділів керованого налаштування, коли ви запускаєте `openclaw config` без підкоманди.
</ParamField>
Підтримувані керовані розділи: `workspace`, `model`, `web`, `gateway`, `daemon`, `channels`, `plugins`, `skills`, `health`.
@ -38,6 +38,7 @@ openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
openclaw config set secrets.providers.vaultfile --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json
openclaw config patch --file ./openclaw.patch.json5 --dry-run
openclaw config unset plugins.entries.brave.config.webSearch.apiKey
openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN --dry-run
openclaw config validate
@ -46,20 +47,20 @@ openclaw config validate --json
### `config schema`
Виводить згенеровану схему JSON для `openclaw.json` у stdout як JSON.
Друкує згенеровану схему JSON для `openclaw.json` у stdout як JSON.
<AccordionGroup>
<Accordion title="What it includes">
- Поточна коренева схема конфігурації, а також кореневе рядкове поле `$schema` для інструментів редактора.
<Accordion title="Що вона містить">
- Поточну кореневу схему конфігурації, а також кореневе рядкове поле `$schema` для інструментів редактора.
- Метадані документації полів `title` і `description`, які використовує Control UI.
- Вкладені об’єкти, вузли з wildcard (`*`) і елементи масивів (`[]`) успадковують ті самі метадані `title` / `description`, коли існує відповідна документація полів.
- Гілки `anyOf` / `oneOf` / `allOf` також успадковують ті самі метадані документації, коли існує відповідна документація полів.
- Метадані схем живих Plugin + каналів у режимі найкращої спроби, коли runtime-маніфести можна завантажити.
- Чиста резервна схема навіть тоді, коли поточна конфігурація недійсна.
- Вкладені об’єкти, wildcard-вузли (`*`) і вузли елементів масиву (`[]`) успадковують ті самі метадані `title` / `description`, коли існує відповідна документація поля.
- Гілки `anyOf` / `oneOf` / `allOf` також успадковують ті самі метадані документації, коли існує відповідна документація поля.
- Best-effort метадані схеми живих plugin + каналів, коли можна завантажити маніфести середовища виконання.
- Чисту резервну схему навіть тоді, коли поточна конфігурація недійсна.
</Accordion>
<Accordion title="Related runtime RPC">
`config.schema.lookup` повертає один нормалізований шлях конфігурації з поверхневим вузлом схеми (`title`, `description`, `type`, `enum`, `const`, поширені межі), відповідними метаданими підказок UI та зведеннями безпосередніх дочірніх елементів. Використовуйте це для деталізації за шляхом у Control UI або власних клієнтах.
<Accordion title="Пов’язаний RPC середовища виконання">
`config.schema.lookup` повертає один нормалізований шлях конфігурації з неглибоким вузлом схеми (`title`, `description`, `type`, `enum`, `const`, типові межі), відповідними метаданими UI-підказки й короткими описами безпосередніх дочірніх елементів. Використовуйте це для деталізації за шляхом у Control UI або власних клієнтах.
</Accordion>
</AccordionGroup>
@ -67,7 +68,7 @@ openclaw config validate --json
openclaw config schema
```
Передайте це у файл, коли хочете перевірити або провалідувати схему іншими інструментами:
Спрямуйте вивід у файл, коли потрібно переглянути або перевірити його іншими інструментами:
```bash
openclaw config schema > openclaw.schema.json
@ -82,7 +83,7 @@ openclaw config get agents.defaults.workspace
openclaw config get agents.list[0].id
```
Використовуйте індекс списку агентів, щоб звернутися до конкретного агента:
Використовуйте індекс списку агентів, щоб націлитися на конкретного агента:
```bash
openclaw config get agents.list
@ -91,7 +92,7 @@ openclaw config set agents.list[1].tools.exec.node "node-id-or-name"
## Значення
Значення за можливості розбираються як JSON5; інакше вони вважаються рядками. Використовуйте `--strict-json`, щоб вимагати розбору JSON5. `--json` залишається підтримуваним як застарілий псевдонім.
Значення розбираються як JSON5, коли це можливо; інакше вони обробляються як рядки. Використовуйте `--strict-json`, щоб вимагати розбору JSON5. `--json` залишається підтримуваним як застарілий alias.
```bash
openclaw config set agents.defaults.heartbeat.every "0m"
@ -99,13 +100,13 @@ openclaw config set gateway.port 19001 --strict-json
openclaw config set channels.whatsapp.groups '["*"]' --strict-json
```
`config get <path> --json` виводить сире значення як JSON замість тексту, відформатованого для термінала.
`config get <path> --json` друкує необроблене значення як JSON замість тексту, відформатованого для термінала.
<Note>
Присвоєння об’єкта типово замінює цільовий шлях. Захищені шляхи мап/списків, які зазвичай містять додані користувачем записи, як-от `agents.defaults.models`, `models.providers`, `models.providers.<id>.models`, `plugins.entries` і `auth.profiles`, відхиляють заміни, які видалили б наявні записи, якщо ви не передасте `--replace`.
Присвоєння об’єкта за замовчуванням замінює цільовий шлях. Захищені шляхи map/list, які зазвичай містять додані користувачем записи, як-от `agents.defaults.models`, `models.providers`, `models.providers.<id>.models`, `plugins.entries` і `auth.profiles`, відмовляються від замін, які вилучили б наявні записи, якщо ви не передасте `--replace`.
</Note>
Використовуйте `--merge`, коли додаєте записи до таких мап:
Використовуйте `--merge`, коли додаєте записи до таких map:
```bash
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
@ -119,12 +120,12 @@ openclaw config set models.providers.ollama.models '[{"id":"llama3.2","name":"Ll
`openclaw config set` підтримує чотири стилі присвоєння:
<Tabs>
<Tab title="Value mode">
<Tab title="Режим значення">
```bash
openclaw config set <path> <value>
```
</Tab>
<Tab title="SecretRef builder mode">
<Tab title="Режим побудовника SecretRef">
```bash
openclaw config set channels.discord.token \
--ref-provider default \
@ -132,8 +133,8 @@ openclaw config set models.providers.ollama.models '[{"id":"llama3.2","name":"Ll
--ref-id DISCORD_BOT_TOKEN
```
</Tab>
<Tab title="Provider builder mode">
Режим конструктора провайдера працює лише зі шляхами `secrets.providers.<alias>`:
<Tab title="Режим побудовника provider">
Режим побудовника provider націлюється лише на шляхи `secrets.providers.<alias>`:
```bash
openclaw config set secrets.providers.vault \
@ -145,7 +146,7 @@ openclaw config set models.providers.ollama.models '[{"id":"llama3.2","name":"Ll
```
</Tab>
<Tab title="Batch mode">
<Tab title="Пакетний режим">
```bash
openclaw config set --batch-json '[
{
@ -167,12 +168,68 @@ openclaw config set models.providers.ollama.models '[{"id":"llama3.2","name":"Ll
</Tabs>
<Warning>
Присвоєння SecretRef відхиляються на непідтримуваних runtime-змінних поверхнях (наприклад, `hooks.token`, `commands.ownerDisplaySecret`, токени webhook для прив’язки потоків Discord і JSON облікових даних WhatsApp). Див. [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface).
Присвоєння SecretRef відхиляються на непідтримуваних runtime-mutable поверхнях (наприклад `hooks.token`, `commands.ownerDisplaySecret`, токени Webhook прив’язки потоків Discord і JSON облікових даних WhatsApp). Див. [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface).
</Warning>
Пакетний розбір завжди використовує пакетне навантаження (`--batch-json`/`--batch-file`) як джерело істини. `--strict-json` / `--json` не змінюють поведінку пакетного розбору.
Пакетний розбір завжди використовує пакетне payload (`--batch-json`/`--batch-file`) як джерело істини. `--strict-json` / `--json` не змінюють поведінку пакетного розбору.
Режим шляху/значення JSON залишається підтримуваним як для SecretRefs, так і для провайдерів:
## `config patch`
Використовуйте `config patch`, коли хочете вставити або передати через pipe patch у формі конфігурації замість запуску багатьох команд `config set` на основі шляхів. Вхідні дані — це об’єкт JSON5. Об’єкти рекурсивно об’єднуються, масиви й скалярні значення замінюють цільове значення, а `null` видаляє цільовий шлях.
```bash
openclaw config patch --file ./openclaw.patch.json5 --dry-run
openclaw config patch --file ./openclaw.patch.json5
```
Також можна передати patch через stdin, що корисно для скриптів віддаленого налаштування:
```bash
ssh openclaw-host 'openclaw config patch --stdin --dry-run' < ./openclaw.patch.json5
ssh openclaw-host 'openclaw config patch --stdin' < ./openclaw.patch.json5
```
Приклад patch:
```json5
{
channels: {
slack: {
enabled: true,
mode: "socket",
botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },
appToken: { source: "env", provider: "default", id: "SLACK_APP_TOKEN" },
groupPolicy: "open",
requireMention: false,
},
discord: {
enabled: true,
token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" },
dmPolicy: "disabled",
dm: { enabled: false },
groupPolicy: "allowlist",
},
},
agents: {
defaults: {
model: { primary: "openai/gpt-5.5" },
models: {
"openai/gpt-5.5": { params: { fastMode: true } },
},
},
},
}
```
Використовуйте `--replace-path <path>`, коли один об’єкт або масив має стати точно наданим значенням замість рекурсивного застосування patch:
```bash
openclaw config patch --file ./discord.patch.json5 --replace-path 'channels.discord.guilds["123"].channels'
```
`--dry-run` запускає перевірки схеми та розв’язуваності SecretRef без запису. Exec-backed SecretRefs за замовчуванням пропускаються під час dry-run; додайте `--allow-exec`, коли ви навмисно хочете, щоб dry-run виконував команди provider.
Режим шляху/значення JSON залишається підтримуваним як для SecretRefs, так і для providers:
```bash
openclaw config set channels.discord.token \
@ -184,12 +241,12 @@ openclaw config set secrets.providers.vaultfile \
--strict-json
```
## Прапорці конструктора провайдера
## Прапорці побудовника provider
Цілі конструктора провайдера мають використовувати `secrets.providers.<alias>` як шлях.
Цілі побудовника provider мають використовувати `secrets.providers.<alias>` як шлях.
<AccordionGroup>
<Accordion title="Common flags">
<Accordion title="Спільні прапорці">
- `--provider-source <env|file|exec>`
- `--provider-timeout-ms <ms>` (`file`, `exec`)
@ -220,7 +277,7 @@ openclaw config set secrets.providers.vaultfile \
</Accordion>
</AccordionGroup>
Приклад посиленого exec-провайдера:
Приклад захищеного exec provider:
```bash
openclaw config set secrets.providers.vault \
@ -234,9 +291,9 @@ openclaw config set secrets.providers.vault \
--provider-timeout-ms 5000
```
## Пробний запуск
## Dry run
Використовуйте `--dry-run`, щоб перевірити зміни без запису в `openclaw.json`.
Використовуйте `--dry-run`, щоб перевірити зміни без запису `openclaw.json`.
```bash
openclaw config set channels.discord.token \
@ -261,31 +318,31 @@ openclaw config set channels.discord.token \
```
<AccordionGroup>
<Accordion title="Dry-run behavior">
- Режим конструктора: виконує перевірки розв’язності SecretRef для змінених посилань/провайдерів.
- Режим JSON (`--strict-json`, `--json` або пакетний режим): виконує перевірку схеми, а також перевірки розв’язності SecretRef.
- Перевірка політик також виконується для відомих непідтримуваних цільових поверхонь SecretRef.
- Перевірки політик оцінюють повну конфігурацію після зміни, тож записи батьківських об’єктів (наприклад, встановлення `hooks` як об’єкта) не можуть обійти перевірку непідтримуваних поверхонь.
- Перевірки exec SecretRef типово пропускаються під час пробного запуску, щоб уникнути побічних ефектів команд.
- Використовуйте `--allow-exec` з `--dry-run`, щоб явно ввімкнути перевірки exec SecretRef (це може виконати команди провайдера).
- `--allow-exec` працює лише з пробним запуском і дає помилку, якщо використовується без `--dry-run`.
<Accordion title="Поведінка dry-run">
- Режим побудовника: запускає перевірки розв’язуваності SecretRef для змінених refs/providers.
- Режим JSON (`--strict-json`, `--json` або пакетний режим): запускає перевірку схеми та перевірки розв’язуваності SecretRef.
- Перевірка політики також виконується для відомих непідтримуваних цільових поверхонь SecretRef.
- Перевірки політики оцінюють повну конфігурацію після зміни, тому записи батьківських об’єктів (наприклад встановлення `hooks` як об’єкта) не можуть обійти перевірку непідтримуваних поверхонь.
- Перевірки exec SecretRef за замовчуванням пропускаються під час dry-run, щоб уникнути побічних ефектів команд.
- Використовуйте `--allow-exec` з `--dry-run`, щоб явно ввімкнути перевірки exec SecretRef (це може виконати команди provider).
- `--allow-exec` призначений лише для dry-run і завершується помилкою, якщо використаний без `--dry-run`.
</Accordion>
<Accordion title="--dry-run --json fields">
`--dry-run --json` виводить машинозчитуваний звіт:
<Accordion title="Поля --dry-run --json">
`--dry-run --json` друкує машинозчитуваний звіт:
- `ok`: чи пройшов пробний запуск
- `ok`: чи пройшов dry-run
- `operations`: кількість оцінених присвоєнь
- `checks`: чи виконувалися перевірки схеми/розв’язності
- `checks.resolvabilityComplete`: чи перевірки розв’язності виконалися до завершення (false, коли exec-посилання пропущено)
- `refsChecked`: кількість посилань, фактично розв’язаних під час пробного запуску
- `skippedExecRefs`: кількість exec-посилань, пропущених через те, що `--allow-exec` не встановлено
- `errors`: структуровані помилки схеми/розв’язності, коли `ok=false`
- `checks`: чи виконувалися перевірки схеми/розв’язуваності
- `checks.resolvabilityComplete`: чи перевірки розв’язуваності виконалися до завершення (false, коли exec refs пропущені)
- `refsChecked`: кількість refs, фактично розв’язаних під час dry-run
- `skippedExecRefs`: кількість exec refs, пропущених через те, що `--allow-exec` не було встановлено
- `errors`: структуровані помилки схеми/розв’язуваності, коли `ok=false`
</Accordion>
</AccordionGroup>
### Форма виводу JSON
### Форма JSON-виводу
```json5
{
@ -311,7 +368,7 @@ openclaw config set channels.discord.token \
```
<Tabs>
<Tab title="Success example">
<Tab title="Приклад успіху">
```json
{
"ok": true,
@ -328,7 +385,7 @@ openclaw config set channels.discord.token \
}
```
</Tab>
<Tab title="Failure example">
<Tab title="Приклад помилки">
```json
{
"ok": false,
@ -356,10 +413,10 @@ openclaw config set channels.discord.token \
<AccordionGroup>
<Accordion title="Якщо dry-run завершується помилкою">
- `config schema validation failed`: форма конфігурації після зміни недійсна; виправте шлях/значення або форму об’єкта provider/ref.
- `Config policy validation failed: unsupported SecretRef usage`: поверніть ці облікові дані до відкритого тексту/рядкового вводу й використовуйте SecretRefs лише на підтримуваних поверхнях.
- `SecretRef assignment(s) could not be resolved`: зазначений provider/ref наразі неможливо розв’язати (відсутня змінна середовища, недійсний вказівник на файл, помилка exec-провайдера або невідповідність provider/source).
- `Dry run note: skipped <n> exec SecretRef resolvability check(s)`: dry-run пропустив exec-посилання; перезапустіть із `--allow-exec`, якщо вам потрібна перевірка розв’язуваності exec.
- `config schema validation failed`: форма вашої конфігурації після зміни недійсна; виправте шлях/значення або форму об’єкта provider/ref.
- `Config policy validation failed: unsupported SecretRef usage`: перемістіть ці облікові дані назад до введення відкритим текстом/рядком і використовуйте SecretRefs лише на підтримуваних поверхнях.
- `SecretRef assignment(s) could not be resolved`: указаний provider/ref наразі неможливо розв’язати (відсутня змінна середовища, недійсний вказівник на файл, помилка exec-провайдера або невідповідність provider/source).
- `Dry run note: skipped <n> exec SecretRef resolvability check(s)`: dry-run пропустив exec-посилання; повторіть запуск із `--allow-exec`, якщо вам потрібна перевірка розв’язності exec.
- Для пакетного режиму виправте записи з помилками й повторно запустіть `--dry-run` перед записом.
</Accordion>
@ -367,13 +424,13 @@ openclaw config set channels.discord.token \
## Безпека запису
`openclaw config set` та інші засоби запису конфігурації, що належать OpenClaw, перевіряють повну конфігурацію після зміни перед збереженням її на диск. Якщо нове корисне навантаження не проходить перевірку схеми або схоже на руйнівне перезаписування, активна конфігурація залишається без змін, а відхилене корисне навантаження зберігається поруч як `openclaw.json.rejected.*`.
`openclaw config set` та інші засоби запису конфігурації, що належать OpenClaw, перевіряють повну конфігурацію після зміни перед її збереженням на диск. Якщо нове навантаження не проходить перевірку схеми або схоже на руйнівне перезаписування, активна конфігурація лишається без змін, а відхилене навантаження зберігається поруч як `openclaw.json.rejected.*`.
<Warning>
Шлях активної конфігурації має бути звичайним файлом. Макети `openclaw.json` із символічними посиланнями не підтримуються для запису; натомість використовуйте `OPENCLAW_CONFIG_PATH`, щоб указати безпосередньо на справжній файл.
Активний шлях конфігурації має бути звичайним файлом. Макети з `openclaw.json` як символьним посиланням не підтримуються для запису; натомість використовуйте `OPENCLAW_CONFIG_PATH`, щоб указати безпосередньо на справжній файл.
</Warning>
Для невеликих змін віддавайте перевагу записам через CLI:
Для невеликих змін надавайте перевагу записам через CLI:
```bash
openclaw config set gateway.reload.mode hybrid --dry-run
@ -381,7 +438,7 @@ openclaw config set gateway.reload.mode hybrid
openclaw config validate
```
Якщо запис відхилено, перевірте збережене корисне навантаження й виправте повну форму конфігурації:
Якщо запис відхилено, перевірте збережене навантаження й виправте повну форму конфігурації:
```bash
CONFIG="$(openclaw config file)"
@ -389,13 +446,13 @@ ls -lt "$CONFIG".rejected.* 2>/dev/null | head
openclaw config validate
```
Прямі записи через редактор усе ще дозволені, але запущений Gateway вважає їх ненадійними, доки вони не пройдуть перевірку. Недійсні прямі зміни можуть бути відновлені з останньої відомої справної резервної копії під час запуску або гарячого перезавантаження. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config).
Прямі зміни через редактор усе ще дозволені, але запущений Gateway вважає їх ненадійними, доки вони не пройдуть перевірку. Недійсні прямі зміни можна відновити з останньої справної резервної копії під час запуску або гарячого перезавантаження. Див. [усунення несправностей Gateway](/uk/gateway/troubleshooting#gateway-restored-last-known-good-config).
Відновлення всього файла призначене для глобально пошкодженої конфігурації, наприклад помилок розбору, помилок схеми на кореневому рівні, помилок застарілої міграції або змішаних помилок Plugin і кореня. Якщо перевірка не проходить лише під `plugins.entries.<id>...`, OpenClaw залишає активний `openclaw.json` на місці й повідомляє про локальну проблему Plugin замість відновлення `.last-good`. Це запобігає тому, щоб зміни схеми Plugin або розбіжність `minHostVersion` відкотили непов’язані користувацькі налаштування, як-от моделі, провайдери, профілі автентифікації, канали, експозиція Gateway, інструменти, пам’ять, браузер або конфігурація cron.
Відновлення всього файла призначене для глобально пошкодженої конфігурації, як-от помилки розбору, помилки схеми на кореневому рівні, помилки міграції застарілої конфігурації або змішані помилки Plugin і кореня. Якщо перевірка не проходить лише під `plugins.entries.<id>...`, OpenClaw залишає активний `openclaw.json` на місці й повідомляє про локальну для Plugin проблему замість відновлення `.last-good`. Це запобігає відкату непов’язаних налаштувань користувача, таких як моделі, провайдери, профілі автентифікації, канали, експозиція gateway, інструменти, пам’ять, браузер або конфігурація cron, через зміни схеми Plugin чи розбіжність `minHostVersion`.
## Підкоманди
- `config file`: вивести шлях активного файла конфігурації (розв’язаний із `OPENCLAW_CONFIG_PATH` або типового розташування). Шлях має вказувати на звичайний файл, а не на символічне посилання.
- `config file`: вивести шлях до активного файла конфігурації (розв’язаний із `OPENCLAW_CONFIG_PATH` або типового розташування). Шлях має вказувати на звичайний файл, а не на символьне посилання.
Перезапустіть gateway після змін.
@ -408,10 +465,10 @@ openclaw config validate
openclaw config validate --json
```
Після успішного проходження `openclaw config validate` ви можете скористатися локальним TUI, щоб вбудований агент порівняв активну конфігурацію з документацією, поки ви перевіряєте кожну зміну з того самого термінала:
Після успішного проходження `openclaw config validate` можна використати локальний TUI, щоб вбудований агент порівняв активну конфігурацію з документацією, поки ви перевіряєте кожну зміну з того самого термінала:
<Note>
Якщо перевірка вже завершується помилкою, почніть з `openclaw configure` або `openclaw doctor --fix`. `openclaw chat` не обходить захист від недійсної конфігурації.
Якщо перевірка вже завершується помилкою, почніть із `openclaw configure` або `openclaw doctor --fix`. `openclaw chat` не обходить захист від недійсної конфігурації.
</Note>
```bash
@ -427,7 +484,7 @@ openclaw chat
!openclaw doctor
```
Типовий цикл відновлення:
Типовий цикл виправлення:
<Steps>
<Step title="Порівняйте з документацією">
@ -436,11 +493,11 @@ openclaw chat
<Step title="Застосуйте цільові зміни">
Застосуйте цільові зміни за допомогою `openclaw config set` або `openclaw configure`.
</Step>
<Step title="Повторно перевірте">
<Step title="Повторіть перевірку">
Повторно запускайте `openclaw config validate` після кожної зміни.
</Step>
<Step title="Doctor для проблем часу виконання">
Якщо перевірка проходить успішно, але середовище виконання досі несправне, запустіть `openclaw doctor` або `openclaw doctor --fix`, щоб отримати допомогу з міграцією та відновленням.
<Step title="Doctor для проблем виконання">
Якщо перевірка проходить, але середовище виконання все ще несправне, запустіть `openclaw doctor` або `openclaw doctor --fix`, щоб отримати допомогу з міграцією та виправленням.
</Step>
</Steps>

View File

@ -1,39 +1,39 @@
---
read_when:
- Вам потрібен недорогий постійно увімкнений Linux-хост для Gateway
- Вам потрібен віддалений доступ до Control UI без запуску власного VPS
summary: Запуск Gateway OpenClaw на exe.dev (VM + HTTPS-проксі) для віддаленого доступу
- Вам потрібен недорогий Linux-хост для Gateway, який завжди ввімкнений
- Вам потрібен віддалений доступ до інтерфейсу керування без запуску власного VPS
summary: Запустіть OpenClaw Gateway на exe.dev (VM + HTTPS-проксі) для віддаленого доступу
title: exe.dev
x-i18n:
generated_at: "2026-04-27T07:08:18Z"
model: gpt-5.4
generated_at: "2026-04-29T21:05:44Z"
model: gpt-5.5
provider: openai
source_hash: 98bc90ff26ce1773bd0e05f975fcc3427039e90ce50eca21bb2e8232f7ac730f
source_hash: b571f9b29bb2cca0f311db4188c922b2f70ee91cb48b233cf9922e57a7f05340
source_path: install/exe-dev.md
workflow: 15
workflow: 16
---
Мета: Gateway OpenClaw, запущений на VM exe.dev, доступний із вашого ноутбука за адресою: `https://<vm-name>.exe.xyz`
Мета: OpenClaw Gateway працює на VM exe.dev і доступний з вашого ноутбука через: `https://<vm-name>.exe.xyz`
Ця сторінка передбачає використання типового образу **exeuntu** від exe.dev. Якщо ви вибрали інший дистрибутив, підберіть відповідні пакети самостійно.
Ця сторінка передбачає стандартний образ **exeuntu** від exe.dev. Якщо ви вибрали інший дистрибутив, зіставте пакети відповідно.
## Швидкий шлях для початківців
1. [https://exe.new/openclaw](https://exe.new/openclaw)
2. Заповніть ваш ключ або токен автентифікації за потреби
3. Натисніть "Agent" поруч із вашою VM і дочекайтеся, поки Shelley завершить налаштування
4. Відкрийте `https://<vm-name>.exe.xyz/` і пройдіть автентифікацію за допомогою налаштованого спільного секрету (у цьому посібнику типово використовується автентифікація за токеном, але автентифікація за паролем теж працює, якщо ви перемкнете `gateway.auth.mode`)
5. Підтвердіть усі незавершені запити на прив’язку пристроїв за допомогою `openclaw devices approve <requestId>`
2. За потреби введіть свій ключ/токен автентифікації
3. Натисніть "Агент" поруч із вашою VM і дочекайтеся, поки Shelley завершить підготовку
4. Відкрийте `https://<vm-name>.exe.xyz/` і автентифікуйтеся за допомогою налаштованого спільного секрету (цей посібник за замовчуванням використовує автентифікацію токеном, але автентифікація паролем також працює, якщо перемкнути `gateway.auth.mode`)
5. Підтвердьте всі очікувані запити на сполучення пристроїв за допомогою `openclaw devices approve <requestId>`
## Що вам знадобиться
## Що потрібно
- обліковий запис exe.dev
- доступ `ssh exe.dev` до віртуальних машин [exe.dev](https://exe.dev) (необовязково)
- Обліковий запис exe.dev
- Доступ `ssh exe.dev` до віртуальних машин [exe.dev](https://exe.dev) (необов'язково)
## Автоматизоване встановлення за допомогою Shelley
## Автоматизоване встановлення із Shelley
Shelley, агент [exe.dev](https://exe.dev), може миттєво встановити OpenClaw за нашим
запитом. Використаний запит наведено нижче:
Shelley, агент [exe.dev](https://exe.dev), може миттєво встановити OpenClaw за допомогою нашого
промпта. Використаний промпт наведено нижче:
```
Set up OpenClaw (https://docs.openclaw.ai/install) on this VM. Use the non-interactive and accept-risk flags for openclaw onboarding. Add the supplied auth or token as needed. Configure nginx to forward from the default port 18789 to the root location on the default enabled site config, making sure to enable Websocket support. Pairing is done by "openclaw devices list" and "openclaw devices approve <request id>". Make sure the dashboard shows that OpenClaw's health is OK. exe.dev handles forwarding from port 8000 to port 80/443 and HTTPS for us, so the final "reachable" should be <vm-name>.exe.xyz, without port specification.
@ -43,7 +43,7 @@ Set up OpenClaw (https://docs.openclaw.ai/install) on this VM. Use the non-inter
## 1) Створіть VM
На вашому пристрої:
З вашого пристрою:
```bash
ssh exe.dev new
@ -56,7 +56,7 @@ ssh <vm-name>.exe.xyz
```
<Tip>
Зробіть цю VM **stateful**. OpenClaw зберігає `openclaw.json`, `auth-profiles.json` для кожного агента, сесії та стан каналів/провайдерів у `~/.openclaw/`, а також робочий простір у `~/.openclaw/workspace/`.
Залишайте цю VM **stateful**. OpenClaw зберігає `openclaw.json`, `auth-profiles.json` для кожного агента, сесії та стан каналів/провайдерів у `~/.openclaw/`, а робочу область у `~/.openclaw/workspace/`.
</Tip>
## 2) Встановіть передумови (на VM)
@ -68,7 +68,7 @@ sudo apt-get install -y git curl jq ca-certificates openssl
## 3) Встановіть OpenClaw
Запустіть скрипт встановлення OpenClaw:
Запустіть інсталяційний скрипт OpenClaw:
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
@ -76,7 +76,7 @@ curl -fsSL https://openclaw.ai/install.sh | bash
## 4) Налаштуйте nginx для проксіювання OpenClaw на порт 8000
Відредагуйте `/etc/nginx/sites-enabled/default`, додавши
Відредагуйте `/etc/nginx/sites-enabled/default` так:
```
server {
@ -108,23 +108,88 @@ server {
}
```
Перезаписуйте заголовки forwarding замість збереження ланцюжків, наданих клієнтом.
OpenClaw довіряє метаданим forwarded IP лише від явно налаштованих проксі,
а ланцюжки `X-Forwarded-For` у стилі append вважаються ризиком для безпеки.
Перезаписуйте заголовки пересилання замість збереження ланцюжків, наданих клієнтом.
OpenClaw довіряє метаданим пересланої IP-адреси лише від явно налаштованих проксі,
а ланцюжки `X-Forwarded-For` у стилі додавання вважаються ризиком посилення захисту.
## 5) Отримайте доступ до OpenClaw і надайте дозволи
## 5) Отримайте доступ до OpenClaw і надайте привілеї
Відкрийте `https://<vm-name>.exe.xyz/` (див. вивід Control UI з onboarding). Якщо з’явиться запит на автентифікацію, вставте
налаштований спільний секрет із VM. У цьому посібнику використовується автентифікація за токеном, тож отримайте `gateway.auth.token`
командою `openclaw config get gateway.auth.token` (або згенеруйте його за допомогою `openclaw doctor --generate-gateway-token`).
Якщо ви змінили Gateway на автентифікацію за паролем, використовуйте `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`.
Підтверджуйте пристрої командами `openclaw devices list` і `openclaw devices approve <requestId>`. Якщо сумніваєтеся, використовуйте Shelley у вашому браузері!
Відкрийте `https://<vm-name>.exe.xyz/` (див. вивід Control UI під час онбордингу). Якщо з'явиться запит на автентифікацію, вставте
налаштований спільний секрет із VM. Цей посібник використовує автентифікацію токеном, тому отримайте `gateway.auth.token`
за допомогою `openclaw config get gateway.auth.token` (або згенеруйте його за допомогою `openclaw doctor --generate-gateway-token`).
Якщо ви змінили Gateway на автентифікацію паролем, натомість використовуйте `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`.
Підтверджуйте пристрої за допомогою `openclaw devices list` і `openclaw devices approve <requestId>`. Якщо сумніваєтеся, скористайтеся Shelley у браузері!
## Налаштування віддалених каналів
Для віддалених хостів віддавайте перевагу одному виклику `config patch` замість багатьох SSH-викликів `config set`. Зберігайте реальні токени в середовищі VM або `~/.openclaw/.env`, а в `openclaw.json` розміщуйте лише SecretRefs.
На VM зробіть так, щоб середовище сервісу містило потрібні йому секрети:
```bash
cat >> ~/.openclaw/.env <<'EOF'
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
DISCORD_BOT_TOKEN=...
OPENAI_API_KEY=sk-...
EOF
```
На локальній машині створіть файл патча та передайте його у VM через pipe:
```json5
// openclaw.remote.patch.json5
{
secrets: {
providers: {
default: { source: "env" },
},
},
channels: {
slack: {
enabled: true,
mode: "socket",
botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },
appToken: { source: "env", provider: "default", id: "SLACK_APP_TOKEN" },
groupPolicy: "open",
requireMention: false,
},
discord: {
enabled: true,
token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" },
dmPolicy: "disabled",
dm: { enabled: false },
groupPolicy: "allowlist",
},
},
agents: {
defaults: {
model: { primary: "openai/gpt-5.5" },
models: {
"openai/gpt-5.5": { params: { fastMode: true } },
},
},
},
}
```
```bash
ssh <vm-name>.exe.xyz 'openclaw config patch --stdin --dry-run' < ./openclaw.remote.patch.json5
ssh <vm-name>.exe.xyz 'openclaw config patch --stdin' < ./openclaw.remote.patch.json5
ssh <vm-name>.exe.xyz 'openclaw gateway restart && openclaw health'
```
Використовуйте `--replace-path`, коли вкладений allowlist має стати точно значенням патча, наприклад під час заміни allowlist каналу Discord:
```bash
ssh <vm-name>.exe.xyz 'openclaw config patch --stdin --replace-path "channels.discord.guilds[\"123\"].channels"' < ./discord.patch.json5
```
## Віддалений доступ
Віддалений доступ забезпечується автентифікацією [exe.dev](https://exe.dev). За
замовчуванням HTTP-трафік із порту 8000 переспрямовується на `https://<vm-name>.exe.xyz`
з автентифікацією за email.
Віддалений доступ обробляється автентифікацією [exe.dev](https://exe.dev). За
замовчуванням HTTP-трафік із порту 8000 пересилається до `https://<vm-name>.exe.xyz`
з автентифікацією через email.
## Оновлення
@ -137,7 +202,7 @@ openclaw health
Посібник: [Оновлення](/uk/install/updating)
## Повязане
## Пов'язане
- [Віддалений Gateway](/uk/gateway/remote)
- [Віддалений gateway](/uk/gateway/remote)
- [Огляд встановлення](/uk/install)