diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md index fb766bf9a..78dd8d51f 100644 --- a/docs/uk/channels/slack.md +++ b/docs/uk/channels/slack.md @@ -1,47 +1,47 @@ --- read_when: - - Налаштування Slack або налагодження режиму Slack socket/HTTP + - Налаштування Slack або налагодження режиму сокета/HTTP для Slack summary: Налаштування Slack і поведінка під час виконання (режим сокетів + URL-адреси HTTP-запитів) title: Slack x-i18n: - generated_at: "2026-04-29T21:45:22Z" + generated_at: "2026-04-30T13:51:18Z" model: gpt-5.5 provider: openai - source_hash: 08024bd947ddeb00a1ab3aaa3864cf31817303bbc0523902acdc539fc662e127 + source_hash: 55beddb43a6b91c6853dcf053eab713322de4da5beced7c107d73e1c066fded6 source_path: channels/slack.md workflow: 16 --- -Production-ready для DM і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються. +Готово до production для DM і каналів через інтеграції застосунків Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються. - - Slack DM за замовчуванням використовують режим сполучення. + + DM у Slack типово використовують режим сполучення. - + Нативна поведінка команд і каталог команд. - - Міжканальна діагностика та інструкції з відновлення. + + Кросканальна діагностика та сценарії ремонту. ## Швидке налаштування - + - + У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - виберіть **from a manifest** і виберіть робочий простір для свого застосунку - - вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжте створення - - згенеруйте **App-Level Token** (`xapp-...`) із `connections:write` + - вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжте створення + - згенеруйте **App-Level Token** (`xapp-...`) з `connections:write` - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) - + Рекомендоване налаштування SecretRef: @@ -73,7 +73,7 @@ SLACK_BOT_TOKEN=xoxb-... - + ```bash openclaw gateway @@ -86,17 +86,17 @@ openclaw gateway - + У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - виберіть **from a manifest** і виберіть робочий простір для свого застосунку - - вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням + - вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL перед створенням - збережіть **Signing Secret** для перевірки запитів - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) - + Рекомендоване налаштування SecretRef: @@ -128,7 +128,7 @@ openclaw config patch --file ./slack.http.patch.json5 - + ```bash openclaw gateway @@ -142,7 +142,7 @@ openclaw gateway ## Налаштування транспорту Socket Mode -OpenClaw за замовчуванням задає для клієнта Slack SDK тайм-аут pong 15 секунд у Socket Mode. Перевизначайте параметри транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост: +OpenClaw за замовчуванням установлює для клієнта Slack SDK тайм-аут pong 15 секунд у Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост: ```json5 { @@ -159,11 +159,11 @@ OpenClaw за замовчуванням задає для клієнта Slack } ``` -Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути Slack websocket pong/server-ping, або запускаються на хостах із відомим виснаженням циклу подій. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами життєздатності транспорту. +Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути Slack websocket pong/server-ping, або працюють на хостах із відомим голодуванням циклу подій. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами життєздатності транспорту. -## Контрольний список маніфесту та scope +## Чекліст маніфесту та scope -Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` команди зі скісною рискою). +Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash-команди). Базовий маніфест (Socket Mode за замовчуванням): @@ -237,7 +237,7 @@ OpenClaw за замовчуванням задає для клієнта Slack } ``` -Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної команди зі скісною рискою. Потрібна публічна URL-адреса: +Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібен публічний URL: ```json { @@ -269,20 +269,20 @@ OpenClaw за замовчуванням задає для клієнта Slack ### Додаткові налаштування маніфесту -Відкрийте інші функції, які розширюють наведені вище стандартні параметри. +Показуйте інші функції, що розширюють наведені вище типові значення. - + - Кілька [нативних команд зі скісною рискою](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з такими нюансами: + Кілька [нативних slash-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з такими нюансами: - Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована. - - Одночасно можна зробити доступними не більше ніж 25 команд зі скісною рискою. + - Одночасно можна зробити доступними не більше 25 slash-команд. Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list): - + ```json "slash_commands": [ @@ -422,14 +422,14 @@ OpenClaw за замовчуванням задає для клієнта Slack - - Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача й піктограму), а не стандартну ідентичність застосунку Slack. + + Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку) замість типової ідентичності застосунку Slack. - Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`. + Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`. - - Якщо ви налаштовуєте `channels.slack.userToken`, типові scope для читання: + + Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є: - `channels:history`, `groups:history`, `im:history`, `mpim:history` - `channels:read`, `groups:read`, `im:read`, `mpim:read` @@ -444,36 +444,36 @@ OpenClaw за замовчуванням задає для клієнта Slack ## Модель токенів -- `botToken` + `appToken` потрібні для Socket Mode. +- `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`). +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext + рядки або обʼєкти SecretRef. +- Токени конфігурації перевизначають резервне значення env. +- Резервне значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням. +- `userToken` (`xoxp-...`) задається лише в конфігурації (без резервного значення env) і типово має поведінку лише для читання (`userTokenReadOnly: true`). Поведінка знімка стану: -- Перевірка облікового запису Slack відстежує для кожних облікових даних поля `*Source` і `*Status` - (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status` + для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`). - Стан має значення `available`, `configured_unavailable` або `missing`. - `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef - або інше неінлайнове джерело секрету, але поточний шлях команди/середовища виконання - не зміг отримати фактичне значення. + або інше неінлайнове джерело секретів, але поточна команда/шлях runtime + не змогли отримати фактичне значення. - У режимі HTTP включається `signingSecretStatus`; у Socket Mode - обов'язкова пара — це `botTokenStatus` + `appTokenStatus`. + обовʼязкова пара — це `botTokenStatus` + `appTokenStatus`. -Для дій/читання каталогу можна надавати перевагу токену користувача, якщо його налаштовано. Для записів токен бота залишається бажаним; записи з токеном користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний. +Для дій/читання каталогу токен користувача може мати пріоритет, якщо його налаштовано. Для записів пріоритетним залишається токен бота; записи через токен користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний. -## Дії та шлюзи +## Дії та гейти Діями Slack керує `channels.slack.actions.*`. Доступні групи дій у поточному інструментарії Slack: -| Група | За замовчуванням | +| Група | Типово | | ---------- | ------- | | messages | увімкнено | | reactions | увімкнено | @@ -481,60 +481,60 @@ OpenClaw за замовчуванням задає для клієнта Slack | memberInfo | увімкнено | | emojiList | увімкнено | -Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів. +Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних плейсхолдерах файлів, і повертає попередні перегляди зображень для зображень або метадані локальних файлів для інших типів файлів. ## Контроль доступу та маршрутизація - - `channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний список дозволених DM. + + `channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний allowlist для DM. - - `pairing` (за замовчуванням) + - `pairing` (типово) - `allowlist` - `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`) - `disabled` Прапорці DM: - - `dm.enabled` (за замовчуванням true) + - `dm.enabled` (типово true) - `channels.slack.allowFrom` - `dm.allowFrom` (застаріле) - - `dm.groupEnabled` (групові DM за замовчуванням false) - - `dm.groupChannels` (необов'язковий список дозволених MPIM) + - `dm.groupEnabled` (групові DM типово false) + - `dm.groupChannels` (необовʼязковий allowlist MPIM) Пріоритет для кількох облікових записів: - `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`. - - Іменовані облікові записи успадковують `channels.slack.allowFrom`, коли їхній власний `allowFrom` не задано. + - Іменовані облікові записи успадковують `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 `. - + `channels.slack.groupPolicy` керує обробкою каналів: - `open` - `allowlist` - `disabled` - Список дозволених каналів розміщується в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад `C12345678`) як ключі конфігурації. + Allowlist каналів розміщується в `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад `C12345678`) як ключі конфігурації. - Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження (навіть якщо задано `channels.defaults.groupPolicy`). + Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`). - Розпізнавання назви/ідентифікатора: + Розпізнавання імен/ID: - - записи списку дозволених каналів і записи списку дозволених DM розпізнаються під час запуску, коли доступ токена це дозволяє - - нерозпізнані записи назв каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації - - вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ідентифікатор; прямий збіг за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` + - записи allowlist каналів і записи allowlist DM розпізнаються під час запуску, коли доступ токена це дозволяє + - нерозпізнані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації + - вхідна авторизація та маршрутизація каналів типово орієнтовані на ID; пряме зіставлення за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` - Ключі на основі назви (`#channel-name` або `channel-name`) **не** збігаються за `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ідентифікатор, тому ключ на основі назви ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і ключ на основі назви здається робочим. + Ключі на основі імен (`#channel-name` або `channel-name`) **не** зіставляються за `groupPolicy: "allowlist"`. Пошук каналу типово орієнтований на ID, тому ключ на основі імені ніколи не буде успішно маршрутизований, і всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і ключ на основі імені здається робочим. - Завжди використовуйте ідентифікатор каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою → **Copy link** — ідентифікатор (`C...`) з'являється наприкінці URL. + Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою → **Copy link** — ID (`C...`) відображається в кінці URL. Правильно: @@ -569,19 +569,19 @@ OpenClaw за замовчуванням задає для клієнта Slack - - Повідомлення каналів за замовчуванням проходять шлюз згадок. + + Повідомлення каналів типово обмежені згадками. Джерела згадок: - явна згадка застосунку (`<@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.`; назви лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`): + Поканальні елементи керування (`channels.slack.channels.`; імена лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`): - `requireMention` - - `users` (список дозволених) + - `users` (allowlist) - `allowBots` - `skills` - `systemPrompt` @@ -589,22 +589,24 @@ OpenClaw за замовчуванням задає для клієнта Slack - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"` (застарілі ключі без префікса все ще зіставляються лише з `id:`) + `allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише коли бот-відправник явно вказаний у allowlist `users` цієї кімнати або коли принаймні один явний ID власника Slack з `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють наявність власника. Наявність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідний scope читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, створене ботом. + -## Ланцюжки, сеанси та теги відповідей +## Треди, сесії та теги відповідей -- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`. -- З типовим `session.dmScope=main` DM Slack згортаються в основний сеанс агента. -- Сеанси каналів: `agent::slack:channel:`. -- Відповіді в ланцюжках можуть створювати суфікси сеансу ланцюжка (`:thread:`), коли це застосовно. +- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`. +- За типового `session.dmScope=main` DM Slack згортаються до головної сесії агента. +- Сесії каналів: `agent::slack:channel:`. +- Відповіді в тредах можуть створювати суфікси сесій тредів (`:thread:`), коли це застосовно. - Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`. -- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень ланцюжка отримується під час запуску нового сеансу ланцюжка (за замовчуванням `20`; задайте `0`, щоб вимкнути). -- `channels.slack.thread.requireExplicitMention` (за замовчуванням `false`): коли `true`, пригнічує неявні згадки в ланцюжку, щоб бот відповідав лише на явні згадки `@bot` усередині ланцюжків, навіть якщо бот уже брав участь у ланцюжку. Без цього відповіді в ланцюжку за участю бота обходять шлюз `requireMention`. +- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду отримується під час запуску нової сесії треду (типово `20`; задайте `0`, щоб вимкнути). +- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в треді, щоб бот відповідав лише на явні згадки `@bot` у тредах, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять гейт `requireMention`. -Елементи керування ланцюжками відповідей: +Елементи керування тредами відповідей: -- `channels.slack.replyToMode`: `off|first|all|batched` (за замовчуванням `off`) +- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`) - `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel` - застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode` @@ -614,45 +616,45 @@ OpenClaw за замовчуванням задає для клієнта Slack - `[[reply_to:]]` -`replyToMode="off"` вимикає **всі** ланцюжки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Ланцюжки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку. +`replyToMode="off"` вимикає **всі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Треди Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline. -## Реакції підтвердження +## Ack-реакції `ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення. -Порядок розв'язання: +Порядок розпізнавання: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- резервне емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀") +- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀") Примітки: -- Slack очікує короткі коди (наприклад `"eyes"`). +- Slack очікує shortcodes (наприклад `"eyes"`). - Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально. -## Потокова передача тексту +## Потокове передавання тексту `channels.slack.streaming` керує поведінкою живого попереднього перегляду: -- `off`: вимкнути потокову передачу живого попереднього перегляду. -- `partial` (за замовчуванням): замінювати текст попереднього перегляду найновішим частковим виводом. +- `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`). +`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`). -- Для появи нативної потокової передачі тексту та стану ланцюжка асистента Slack має бути доступний ланцюжок відповіді. Вибір ланцюжка все ще дотримується `replyToMode`. -- Корені каналів і групових чатів все ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативна потокова передача недоступна. -- DM верхнього рівня Slack за замовчуванням залишаються поза ланцюжками, тому не показують попередній перегляд у стилі ланцюжка; використовуйте відповіді в ланцюжках або `typingReaction`, якщо хочете видимий прогрес там. -- Медіа та нетекстові корисні навантаження повертаються до звичайної доставки. -- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні тексти/блоки скидаються лише тоді, коли можуть редагувати попередній перегляд на місці. -- Якщо потокова передача завершується помилкою посеред відповіді, OpenClaw повертається до звичайної доставки для решти корисних навантажень. +- Для появи нативного потокового передавання тексту та стану треду асистента Slack має бути доступний тред відповіді. Вибір треду все ще дотримується `replyToMode`. +- Корені каналів і групових чатів усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне. +- DM Slack верхнього рівня типово залишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо хочете видимий прогрес там. +- Медіа та нетекстові payload повертаються до звичайної доставки. +- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні текстові/блокові payload скидаються лише тоді, коли можуть редагувати попередній перегляд на місці. +- Якщо потокове передавання не вдається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload. -Використовуйте чернетковий попередній перегляд замість нативної потокової передачі тексту Slack: +Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack: ```json5 { @@ -670,57 +672,57 @@ OpenClaw за замовчуванням задає для клієнта Slack Застарілі ключі: - `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`. -- булевий `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. +- boolean `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. - застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`. ## Резервна реакція набору тексту -`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли запуск завершується. Це найкорисніше поза відповідями в ланцюжках, які використовують типовий індикатор стану "набирає текст...". +`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в тредах, які використовують типовий індикатор стану "is typing...". -Порядок розв'язання: +Порядок розпізнавання: - `channels.slack.accounts..typingReaction` - `channels.slack.typingReaction` Примітки: -- Slack очікує короткі коди (наприклад `"hourglass_flowing_sand"`). +- Slack очікує shortcodes (наприклад `"hourglass_flowing_sand"`). - Реакція виконується за принципом best-effort, а очищення автоматично пробується після завершення відповіді або шляху помилки. ## Медіа, фрагментація та доставка - - Файлові вкладення Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів включають Slack `fileId`, щоб агенти могли отримати оригінальний файл через `download-file`. + + Файлові вкладення Slack завантажуються з приватних URL, розміщених Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне та ліміти розміру це дозволяють. Плейсхолдери файлів включають Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`. - Завантаження використовують обмежені тайм-аути простою та загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу. + Завантаження використовують обмежені тайм-аути бездіяльності та загальні тайм-аути. Якщо отримання файлу Slack зависає або зазнає невдачі, OpenClaw продовжує обробляти повідомлення і повертається до плейсхолдера файлу. - Типове обмеження розміру вхідних даних у середовищі виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. + Обмеження розміру вхідних даних runtime типово становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. - - - текстові фрагменти використовують `channels.slack.textChunkLimit` (за замовчуванням 4000) - - `channels.slack.chunkMode="newline"` вмикає поділ з пріоритетом абзаців - - надсилання файлів використовують API завантаження Slack і можуть включати відповіді в ланцюжках (`thread_ts`) - - обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення MIME-виду з медіаконвеєра + + - текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000) + - `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців + - надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`) + - обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із медіаконвеєра - + Бажані явні цілі: - - `user:` для DM + - `user:` для особистих повідомлень - `channel:` для каналів - DM Slack відкриваються через API розмов Slack під час надсилання до цілей користувачів. + Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до користувацьких цілей. -## Команди та поведінка slash +## Команди та поведінка slash-команд -Slash-команди з'являються в Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд: +Slash-команди з’являються у Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команд: - `enabled: false` - `name: "openclaw"` @@ -739,22 +741,22 @@ Slash-команди з'являються в Slack як одна налашто /help ``` -Нативні меню аргументів використовують адаптивну стратегію відображення, яка показує модальне вікно підтвердження перед надсиланням вибраного значення опції: +Меню нативних аргументів використовують адаптивну стратегію відображення, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції: - до 5 опцій: блоки кнопок - 6-100 опцій: статичне меню вибору -- більше ніж 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники параметрів інтерактивності +- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники опцій інтерактивності - перевищено обмеження Slack: закодовані значення опцій повертаються до кнопок ```txt /think ``` -Slash-сеанси використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до цільового сеансу розмови за допомогою `CommandTargetSessionKey`. +Slash-сесії використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно спрямовують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`. ## Інтерактивні відповіді -Slack може відображати створені агентом інтерактивні елементи керування відповіддю, але ця функція вимкнена за замовчуванням. +Slack може відображати створені агентом інтерактивні елементи керування відповідями, але ця функція типово вимкнена. Увімкніть її глобально: @@ -770,7 +772,7 @@ Slack може відображати створені агентом інтер } ``` -Або увімкніть її лише для одного облікового запису Slack: +Або ввімкніть її лише для одного облікового запису Slack: ```json5 { @@ -788,44 +790,44 @@ 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. Примітки: - Це UI, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок. -- Значення інтерактивних callback-ів є непрозорими токенами, згенерованими OpenClaw, а не необробленими значеннями, створеними агентом. -- Якщо згенеровані інтерактивні блоки перевищували б обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного корисного навантаження блоків. +- Значення інтерактивних callback-ів є згенерованими OpenClaw непрозорими токенами, а не сирими значеннями, створеними агентом. +- Якщо згенеровані інтерактивні блоки перевищили б обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків. -## Затвердження exec у Slack +## Підтвердження exec у Slack -Slack може діяти як нативний клієнт затверджень з інтерактивними кнопками та взаємодіями, замість повернення до вебінтерфейсу або термінала. +Slack може діяти як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала. -- Затвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу. -- Затвердження Plugin все ще можуть вирішуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє в Slack, а тип ідентифікатора затвердження є `plugin:`. -- Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть затверджувати або відхиляти запити через Slack. +- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації в особисті повідомлення/канали. +- Підтвердження Plugin усе ще можуть виконуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє у Slack і тип ідентифікатора підтвердження є `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 { @@ -835,7 +837,7 @@ Slack автоматично вмикає нативні затвердженн } ``` -Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або +Явна нативна для Slack конфігурація потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або увімкнути доставку в чат походження: ```json5 @@ -852,37 +854,37 @@ Slack автоматично вмикає нативні затвердженн } ``` -Спільне пересилання `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на затвердження exec також мають -маршрутизуватися до інших чатів або явних позаканальних цілей. Спільне пересилання `approvals.plugin` також -окреме; нативні кнопки Slack усе ще можуть вирішувати затвердження Plugin, коли ці запити вже потрапляють +Спільне перенаправлення `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити підтвердження exec також мають +маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне перенаправлення `approvals.plugin` також +окреме; нативні для Slack кнопки все ще можуть виконувати підтвердження Plugin, коли ці запити вже потрапляють у Slack. -`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Затвердження exec](/uk/tools/exec-approvals) для повної моделі пересилання затверджень. +`/approve` у тому самому чаті також працює в каналах Slack і особистих повідомленнях, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю перенаправлення підтверджень. ## Події та операційна поведінка - Редагування/видалення повідомлень зіставляються із системними подіями. -- Трансляції тредів (відповіді треду "Also send to channel") обробляються як звичайні повідомлення користувача. +- Трансляції гілок (відповіді в гілках "Also send to channel") обробляються як звичайні повідомлення користувача. - Події додавання/видалення реакцій зіставляються із системними подіями. - Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення зіставляються із системними подіями. -- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`. -- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути інжектовані в контекст маршрутизації. -- Початкове повідомлення треду та початкове наповнення контекстом історії треду фільтруються за налаштованими allowlist відправників, коли застосовно. -- Дії блоків і модальні взаємодії створюють структуровані системні події `Slack interaction: ...` з багатими полями корисного навантаження: - - дії блоків: вибрані значення, мітки, значення picker-а та метадані `workflow_*` - - події модальних `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними даними форми +- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`. +- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути додані в контекст маршрутизації. +- Початкове повідомлення гілки та заповнення контексту початковою історією гілки фільтруються налаштованими списками дозволених відправників, коли це застосовно. +- Дії блоків і модальні взаємодії випускають структуровані системні події `Slack interaction: ...` з насиченими полями payload: + - дії блоків: вибрані значення, мітки, значення вибирачів і метадані `workflow_*` + - події модальних `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введенням форми ## Довідник конфігурації Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack). - + -- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` -- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` -- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний; тримайте вимкненим, якщо не потрібно) +- режим/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` +- доступ до особистих повідомлень: `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` +- гілки/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress` - операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` @@ -892,12 +894,12 @@ Slack автоматично вмикає нативні затвердженн - Перевірте, по порядку: + Перевірте по черзі: - `groupPolicy` - - allowlist каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують за `groupPolicy: "allowlist"`, оскільки маршрутизація каналів за замовчуванням спершу використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу. + - список дозволених каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв мовчки не спрацьовують під `groupPolicy: "allowlist"`, тому що маршрутизація каналів типово насамперед спирається на ідентифікатор. Щоб знайти ідентифікатор: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ідентифікатором каналу. - `requireMention` - - allowlist `users` для окремого каналу + - поканальний список дозволених `users` Корисні команди: @@ -909,14 +911,14 @@ openclaw doctor - + Перевірте: - `channels.slack.dm.enabled` - `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`) - - затвердження pair-інгу / записи allowlist - - події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed` - зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без + - підтвердження сполучення / записи списку дозволених + - події особистих повідомлень Slack Assistant: докладні журнали зі згадкою `drop message_changed` + зазвичай означають, що Slack надіслав відредаговану подію гілки Assistant без відновлюваного людського відправника в метаданих повідомлення ```bash @@ -930,21 +932,21 @@ openclaw pairing list slack Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або `appTokenStatus: "configured_unavailable"`, обліковий запис Slack - налаштовано, але поточне runtime-середовище не змогло визначити значення, + налаштовано, але поточне середовище виконання не змогло визначити значення, підтримане SecretRef. - + Перевірте: - signing secret - - webhook path - - Slack Request URLs (Events + Interactivity + Slash Commands) + - шлях webhook + - URL запитів Slack (події + інтерактивність + Slash-команди) - унікальний `webhookPath` для кожного HTTP-облікового запису - Якщо `signingSecretStatus: "configured_unavailable"` з'являється у snapshots - облікових записів, HTTP-обліковий запис налаштовано, але поточне runtime-середовище не змогло + Якщо `signingSecretStatus: "configured_unavailable"` з’являється в знімках + облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло визначити signing secret, підтриманий SecretRef. @@ -952,84 +954,84 @@ openclaw pairing list slack Перевірте, що саме ви мали на увазі: - - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack + - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими у Slack - або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`) - Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів. + Також перевірте `commands.useAccessGroups` і списки дозволених каналів/користувачів. ## Довідник vision для вкладень -Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні та обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів для завантаження, а не обробляються як вхідні зображення. +Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й обмеження розміру це дозволяють. Файли зображень можна передавати через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст завантажуваних файлів, а не обробляються як вхідні зображення. ### Підтримувані типи медіа -| Тип медіа | Джерело | Поточна поведінка | Примітки | -| ------------------------------ | ------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й прикріплюються до ходу для обробки з підтримкою vision | Ліміт на файл: `channels.slack.mediaMaxMb` (за замовчуванням 20 MB) | -| Файли PDF | URL файлу Slack | Завантажуються й надаються як контекст файлу для інструментів на кшталт `download-file` або `pdf` | Вхідний Slack автоматично не перетворює PDF на image-vision input | -| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і надаються як контекст файлу | Бінарні файли не обробляються як вхідні зображення | -| Відповіді треду | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути гідратовані як контекст, коли відповідь не має прямого медіа | Стартери лише з файлами використовують placeholder вкладення | -| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення | +| Тип медіа | Джерело | Поточна поведінка | Примітки | +| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| Зображення 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 обмежена вісьмома файлами на повідомлення | -### Вхідний pipeline +### Вхідний конвеєр -Коли надходить повідомлення Slack з файловими вкладеннями: +Коли надходить повідомлення Slack із файловими вкладеннями: -1. OpenClaw завантажує файл із приватного URL Slack за допомогою bot token (`xoxb-...`). -2. Після успіху файл записується до сховища медіа. -3. Завантажені шляхи медіа та типи вмісту додаються до вхідного контексту. +1. OpenClaw завантажує файл із приватної URL-адреси Slack за допомогою токена бота (`xoxb-...`). +2. Файл успішно записується до сховища медіа. +3. Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту. 4. Шляхи моделі/інструмента з підтримкою зображень можуть використовувати вкладення зображень із цього контексту. 5. Файли, що не є зображеннями, залишаються доступними як метадані файлів або посилання на медіа для інструментів, які можуть їх обробляти. -### Успадкування вкладень кореня треду +### Успадкування вкладень кореня потоку -Коли повідомлення надходить у тред (має батьківський `thread_ts`): +Коли повідомлення надходить у потік (має батьківський `thread_ts`): -- Якщо сама відповідь не має прямого медіа, а включене кореневе повідомлення має файли, Slack може гідратувати кореневі файли як контекст стартера треду. -- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення. -- Кореневе повідомлення, яке має лише файли й не має тексту, представляється з placeholder вкладення, щоб fallback усе ще міг включити його файли. +- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може доповнити кореневі файли як контекст початку потоку. +- Вкладення безпосередньої відповіді мають пріоритет над вкладеннями кореневого повідомлення. +- Кореневе повідомлення, яке має лише файли й не має тексту, подається із заповнювачем вкладення, щоб резервний варіант усе ще міг включити його файли. ### Обробка кількох вкладень Коли одне повідомлення Slack містить кілька файлових вкладень: -- Кожне вкладення обробляється незалежно через медіаконвеєр. +- Кожне вкладення обробляється незалежно через конвеєр медіа. - Посилання на завантажені медіа агрегуються в контекст повідомлення. - Порядок обробки відповідає порядку файлів Slack у корисному навантаженні події. -- Збій завантаження одного вкладення не блокує інші. +- Помилка завантаження одного вкладення не блокує інші. ### Обмеження розміру, завантаження та моделі -- **Обмеження розміру**: Типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`. -- **Збої завантаження**: Файли, які Slack не може надати, прострочені URL, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються, а не повідомляються як непідтримувані формати. -- **Модель зору**: Аналіз зображень використовує активну модель відповіді, якщо вона підтримує зір, або модель зображень, налаштовану в `agents.defaults.imageModel`. +- **Обмеження розміру**: За замовчуванням 20 МБ на файл. Налаштовується через `channels.slack.mediaMaxMb`. +- **Помилки завантаження**: Файли, які Slack не може надати, прострочені URL-адреси, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість того, щоб повідомлятися як непідтримувані формати. +- **Модель бачення**: Аналіз зображень використовує активну модель відповіді, коли вона підтримує бачення, або модель зображень, налаштовану в `agents.defaults.imageModel`. ### Відомі обмеження -| Сценарій | Поточна поведінка | Обхідний шлях | -| --------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| Прострочений URL файлу Slack | Файл пропущено; помилка не показується | Повторно завантажте файл у Slack | -| Модель зору не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою зору | -| Дуже великі зображення (> 20 MB типово) | Пропущено відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє | -| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені в Slack, обробляються за принципом найкращих зусиль | Повторно поділіться безпосередньо в гілці OpenClaw | -| PDF-вкладення | Зберігаються як файловий/медійний контекст, не маршрутизуються автоматично через зір для зображень | Використовуйте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF | +| Сценарій | Поточна поведінка | Обхідний шлях | +| ------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | +| Прострочена URL-адреса файлу Slack | Файл пропущено; помилка не показується | Повторно завантажте файл у Slack | +| Модель бачення не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою бачення | +| Дуже великі зображення (> 20 МБ за замовчуванням) | Пропускаються відповідно до обмеження розміру | Збільште `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) ## Пов’язане - - Спаруйте користувача Slack із Gateway. + + Сполучіть користувача Slack із Gateway. Поведінка каналів і групових DM. @@ -1041,9 +1043,9 @@ Slack може прикріплювати завантажені медіа до Модель загроз і посилення захисту. - Структура конфігурації та пріоритетність. + Структура конфігурації та пріоритет. - + Каталог команд і поведінка. diff --git a/docs/uk/providers/openai.md b/docs/uk/providers/openai.md index 363bfb1da..1dc62f5cc 100644 --- a/docs/uk/providers/openai.md +++ b/docs/uk/providers/openai.md @@ -1,102 +1,102 @@ --- read_when: - Ви хочете використовувати моделі OpenAI в OpenClaw - - Ви хочете автентифікацію за підпискою Codex замість ключів API - - Вам потрібна суворіша поведінка виконання агентів GPT-5 -summary: Використовуйте OpenAI в OpenClaw за допомогою ключів API або підписки Codex + - Вам потрібна автентифікація через підписку Codex замість ключів API + - Вам потрібна суворіша поведінка виконання агента GPT-5 +summary: Використовуйте OpenAI через ключі API або підписку Codex в OpenClaw title: OpenAI x-i18n: - generated_at: "2026-04-28T11:23:27Z" + generated_at: "2026-04-30T13:51:27Z" model: gpt-5.5 provider: openai - source_hash: be0e2cd14990a53533c800cd8d305c9c50b0fa7131f6638e7b9d8dd9f2942fe8 + source_hash: 7e113f2418f82a8859f208f85efb55114bda7bc17beeb28f012b19e861609dad source_path: providers/openai.md workflow: 16 --- -OpenAI надає developer APIs для моделей GPT, а Codex також доступний як -кодувальний агент плану ChatGPT через клієнти Codex від OpenAI. OpenClaw тримає ці +OpenAI надає API для розробників для моделей GPT, а Codex також доступний як +агент для програмування в межах плану ChatGPT через клієнти Codex від OpenAI. OpenClaw тримає ці поверхні окремо, щоб конфігурація залишалася передбачуваною. OpenClaw підтримує три маршрути сімейства OpenAI. Префікс моделі вибирає -маршрут provider/auth; окреме налаштування runtime вибирає, хто виконує +маршрут провайдера/автентифікації; окреме налаштування середовища виконання вибирає, хто виконує вбудований цикл агента: -- **API key** — прямий доступ до OpenAI Platform з оплатою за використання (моделі `openai/*`) +- **Ключ API** — прямий доступ до OpenAI Platform з оплатою за використання (моделі `openai/*`) - **Підписка Codex через PI** — вхід ChatGPT/Codex із доступом за підпискою (моделі `openai-codex/*`) -- **Обв'язка app-server Codex** — нативне виконання app-server Codex (моделі `openai/*` плюс `agents.defaults.agentRuntime.id: "codex"`) +- **Оснастка app-server Codex** — нативне виконання app-server Codex (моделі `openai/*` плюс `agents.defaults.agentRuntime.id: "codex"`) -OpenAI явно підтримує використання OAuth за підпискою у зовнішніх інструментах і робочих процесах, таких як OpenClaw. +OpenAI явно підтримує використання OAuth підписки в зовнішніх інструментах і робочих процесах, таких як OpenClaw. -Provider, модель, runtime і канал — це окремі шари. Якщо ці мітки +Провайдер, модель, середовище виконання та канал — це окремі рівні. Якщо ці мітки змішуються між собою, прочитайте [Середовища виконання агентів](/uk/concepts/agent-runtimes), перш ніж змінювати конфігурацію. ## Швидкий вибір -| Мета | Використовуйте | Примітки | +| Мета | Використовуйте | Примітки | | --------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------- | -| Пряма оплата через API key | `openai/gpt-5.5` | Установіть `OPENAI_API_KEY` або запустіть onboarding для API key OpenAI. | +| Пряма оплата за ключем API | `openai/gpt-5.5` | Установіть `OPENAI_API_KEY` або запустіть онбординг ключа API OpenAI. | | GPT-5.5 з автентифікацією підписки ChatGPT/Codex | `openai-codex/gpt-5.5` | Типовий маршрут PI для OAuth Codex. Найкращий перший вибір для налаштувань із підпискою. | -| GPT-5.5 з нативною поведінкою app-server Codex | `openai/gpt-5.5` плюс `agentRuntime.id: "codex"` | Примусово використовує обв'язку app-server Codex для цього посилання на модель. | -| Генерація або редагування зображень | `openai/gpt-image-2` | Працює з `OPENAI_API_KEY` або OAuth OpenAI Codex. | +| GPT-5.5 з нативною поведінкою app-server Codex | `openai/gpt-5.5` плюс `agentRuntime.id: "codex"` | Примусово вмикає оснастку app-server Codex для цього посилання на модель. | +| Генерація або редагування зображень | `openai/gpt-image-2` | Працює з `OPENAI_API_KEY` або OpenAI Codex OAuth. | | Зображення з прозорим фоном | `openai/gpt-image-1.5` | Використовуйте `outputFormat=png` або `webp` і `openai.background=transparent`. | -## Мапа назв +## Карта назв -Назви схожі, але не взаємозамінні: +Назви подібні, але не взаємозамінні: -| Назва, яку ви бачите | Шар | Значення | +| Назва, яку ви бачите | Рівень | Значення | | ---------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------- | -| `openai` | Префікс provider | Прямий маршрут OpenAI Platform API. | -| `openai-codex` | Префікс provider | Маршрут OAuth/підписки OpenAI Codex через звичайний runner OpenClaw PI. | -| `codex` plugin | Plugin | Вбудований plugin OpenClaw, який надає нативний runtime app-server Codex і елементи керування чатом `/codex`. | -| `agentRuntime.id: codex` | Runtime агента | Примусово використати нативну обв'язку app-server Codex для вбудованих ходів. | -| `/codex ...` | Набір команд чату | Прив'язувати/керувати потоками app-server Codex із розмови. | -| `runtime: "acp", agentId: "codex"` | Маршрут сесії ACP | Явний запасний шлях, який запускає Codex через ACP/acpx. | +| `openai` | Префікс провайдера | Прямий маршрут API OpenAI Platform. | +| `openai-codex` | Префікс провайдера | Маршрут OAuth/підписки OpenAI Codex через звичайний runner PI OpenClaw. | +| `codex` plugin | Plugin | Вбудований Plugin OpenClaw, який надає нативне середовище виконання app-server Codex і елементи керування чатом `/codex`. | +| `agentRuntime.id: codex` | Середовище виконання агента | Примусово вмикає нативну оснастку app-server Codex для вбудованих ходів. | +| `/codex ...` | Набір команд чату | Прив’язуйте/керуйте потоками app-server Codex із розмови. | +| `runtime: "acp", agentId: "codex"` | Маршрут сесії ACP | Явний резервний шлях, який запускає Codex через ACP/acpx. | Це означає, що конфігурація може навмисно містити і `openai-codex/*`, і -plugin `codex`. Це коректно, коли ви хочете OAuth Codex через PI і також хочете, +Plugin `codex`. Це коректно, коли вам потрібен OAuth Codex через PI, а також потрібно, щоб були доступні нативні елементи керування чатом `/codex`. `openclaw doctor` попереджає про цю -комбінацію, щоб ви могли підтвердити, що вона навмисна; він її не переписує. +комбінацію, щоб ви могли підтвердити, що вона навмисна; він не переписує її. -GPT-5.5 доступна як через прямий доступ OpenAI Platform за API key, так і через +GPT-5.5 доступна як через прямий доступ за ключем API OpenAI Platform, так і через маршрути підписки/OAuth. Використовуйте `openai/gpt-5.5` для прямого трафіку `OPENAI_API_KEY`, `openai-codex/gpt-5.5` для OAuth Codex через PI або -`openai/gpt-5.5` з `agentRuntime.id: "codex"` для нативної обв'язки app-server -Codex. +`openai/gpt-5.5` з `agentRuntime.id: "codex"` для нативної оснастки +app-server Codex. -Увімкнення plugin OpenAI або вибір моделі `openai-codex/*` не -вмикає вбудований plugin app-server Codex. OpenClaw вмикає цей plugin лише -коли ви явно вибираєте нативну обв'язку Codex за допомогою +Увімкнення Plugin OpenAI або вибір моделі `openai-codex/*` не +вмикає вбудований Plugin app-server Codex. OpenClaw вмикає цей Plugin лише +коли ви явно вибираєте нативну оснастку Codex за допомогою `agentRuntime.id: "codex"` або використовуєте застаріле посилання на модель `codex/*`. -Якщо вбудований plugin `codex` увімкнено, але `openai-codex/*` все ще проходить +Якщо вбудований Plugin `codex` увімкнено, але `openai-codex/*` усе одно розв’язується через PI, `openclaw doctor` попереджає і залишає маршрут без змін. -## Покриття можливостей OpenClaw +## Покриття функцій OpenClaw -| Можливість OpenAI | Поверхня OpenClaw | Статус | +| Можливість OpenAI | Поверхня OpenClaw | Статус | | ------------------------- | ---------------------------------------------------------- | ------------------------------------------------------ | -| Chat / Responses | provider моделі `openai/` | Так | +| Чат / Responses | провайдер моделей `openai/` | Так | | Моделі підписки Codex | `openai-codex/` з OAuth `openai-codex` | Так | -| Обв'язка app-server Codex | `openai/` з `agentRuntime.id: codex` | Так | -| Серверний вебпошук | Нативний інструмент OpenAI Responses | Так, коли вебпошук увімкнено й provider не закріплено | +| Оснастка app-server Codex | `openai/` з `agentRuntime.id: codex` | Так | +| Серверний вебпошук | Нативний інструмент OpenAI Responses | Так, коли вебпошук увімкнено і провайдер не закріплено | | Зображення | `image_generate` | Так | | Відео | `video_generate` | Так | -| Перетворення тексту на мовлення | `messages.tts.provider: "openai"` / `tts` | Так | -| Пакетне перетворення мовлення на текст | `tools.media.audio` / розуміння медіа | Так | -| Потокове перетворення мовлення на текст | Voice Call `streaming.provider: "openai"` | Так | +| Перетворення тексту на мовлення | `messages.tts.provider: "openai"` / `tts` | Так | +| Пакетне перетворення мовлення на текст | `tools.media.audio` / розуміння медіа | Так | +| Потокове перетворення мовлення на текст | Voice Call `streaming.provider: "openai"` | Так | | Голос у реальному часі | Voice Call `realtime.provider: "openai"` / Control UI Talk | Так | -| Вбудовування | provider вбудовувань пам'яті | Так | +| Вбудовування | провайдер вбудовувань пам’яті | Так | -## Вбудовування пам'яті +## Вбудовування пам’яті -OpenClaw може використовувати OpenAI або сумісну з OpenAI кінцеву точку вбудовувань для -індексації `memory_search` і вбудовувань запитів: +OpenClaw може використовувати OpenAI або OpenAI-сумісну кінцеву точку вбудовувань для +індексування `memory_search` і вбудовувань запитів: ```json5 { @@ -111,25 +111,25 @@ OpenClaw може використовувати OpenAI або сумісну з } ``` -Для сумісних з OpenAI кінцевих точок, які потребують асиметричних міток вбудовування, задайте +Для OpenAI-сумісних кінцевих точок, які потребують асиметричних міток вбудовування, задайте `queryInputType` і `documentInputType` у `memorySearch`. OpenClaw передає -їх як специфічні для provider поля запиту `input_type`: вбудовування запитів використовують -`queryInputType`; індексовані фрагменти пам'яті та пакетна індексація використовують -`documentInputType`. Повний приклад див. у [довіднику конфігурації пам'яті](/uk/reference/memory-config#provider-specific-config). +їх як специфічні для провайдера поля запиту `input_type`: вбудовування запитів використовують +`queryInputType`; індексовані фрагменти пам’яті та пакетне індексування використовують +`documentInputType`. Повний приклад дивіться в [довіднику конфігурації пам’яті](/uk/reference/memory-config#provider-specific-config). ## Початок роботи Виберіть бажаний метод автентифікації та виконайте кроки налаштування. - - **Найкраще для:** прямого доступу API й оплати за використання. + + **Найкраще для:** прямого доступу до API та оплати за використання. - - Створіть або скопіюйте API key з [панелі OpenAI Platform](https://platform.openai.com/api-keys). + + Створіть або скопіюйте ключ API з [панелі OpenAI Platform](https://platform.openai.com/api-keys). - + ```bash openclaw onboard --auth-choice openai-api-key ``` @@ -149,16 +149,16 @@ OpenClaw може використовувати OpenAI або сумісну з ### Підсумок маршруту - | Посилання на модель | Конфігурація runtime | Маршрут | Auth | + | Посилання на модель | Конфігурація середовища виконання | Маршрут | Автентифікація | | ---------------------- | -------------------------- | --------------------------- | ---------------- | - | `openai/gpt-5.5` | пропущено / `agentRuntime.id: "pi"` | Прямий OpenAI Platform API | `OPENAI_API_KEY` | - | `openai/gpt-5.4-mini` | пропущено / `agentRuntime.id: "pi"` | Прямий OpenAI Platform API | `OPENAI_API_KEY` | - | `openai/gpt-5.5` | `agentRuntime.id: "codex"` | Обв'язка app-server Codex | app-server Codex | + | `openai/gpt-5.5` | omitted / `agentRuntime.id: "pi"` | Прямий API OpenAI Platform | `OPENAI_API_KEY` | + | `openai/gpt-5.4-mini` | omitted / `agentRuntime.id: "pi"` | Прямий API OpenAI Platform | `OPENAI_API_KEY` | + | `openai/gpt-5.5` | `agentRuntime.id: "codex"` | Оснастка app-server Codex | app-server Codex | - `openai/*` — це прямий маршрут OpenAI API key, якщо ви явно не примушуєте - використання обв'язки app-server Codex. Використовуйте `openai-codex/*` для OAuth Codex через - типовий runner PI або використовуйте `openai/gpt-5.5` з + `openai/*` — це прямий маршрут ключа API OpenAI, якщо ви явно не примушуєте + оснастку app-server Codex. Використовуйте `openai-codex/*` для OAuth Codex через + стандартний runner PI або використовуйте `openai/gpt-5.5` з `agentRuntime.id: "codex"` для нативного виконання app-server Codex. @@ -178,7 +178,7 @@ OpenClaw може використовувати OpenAI або сумісну з - **Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого API key. Codex cloud потребує входу ChatGPT. + **Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого ключа API. Хмара Codex потребує входу в ChatGPT. @@ -192,7 +192,7 @@ OpenClaw може використовувати OpenAI або сумісну з openclaw models auth login --provider openai-codex ``` - Для headless налаштувань або налаштувань, несприятливих до callback, додайте `--device-code`, щоб увійти через потік device-code ChatGPT замість callback браузера localhost: + Для headless або несумісних із callback налаштувань додайте `--device-code`, щоб увійти через потік коду пристрою ChatGPT замість callback браузера localhost: ```bash openclaw models auth login --provider openai-codex --device-code @@ -212,24 +212,19 @@ OpenClaw може використовувати OpenAI або сумісну з ### Підсумок маршруту - | Посилання на модель | Конфігурація runtime | Маршрут | Auth | + | Посилання на модель | Конфігурація середовища виконання | Маршрут | Автентифікація | |-----------|----------------|-------|------| - | `openai-codex/gpt-5.5` | пропущено / `runtime: "pi"` | OAuth ChatGPT/Codex через PI | Вхід Codex | - | `openai-codex/gpt-5.5` | `runtime: "auto"` | Все ще PI, якщо plugin явно не заявляє `openai-codex` | Вхід Codex | - | `openai/gpt-5.5` | `agentRuntime.id: "codex"` | Обв'язка app-server Codex | Auth app-server Codex | + | `openai-codex/gpt-5.5` | omitted / `runtime: "pi"` | OAuth ChatGPT/Codex через PI | Вхід Codex | + | `openai-codex/gpt-5.4-mini` | omitted / `runtime: "pi"` | OAuth ChatGPT/Codex через PI | Вхід Codex | + | `openai-codex/gpt-5.5` | `runtime: "auto"` | Все ще PI, якщо Plugin явно не заявляє `openai-codex` | Вхід Codex | + | `openai/gpt-5.5` | `agentRuntime.id: "codex"` | Оснастка app-server Codex | Автентифікація app-server Codex | - Продовжуйте використовувати id provider `openai-codex` для команд auth/profile. Префікс моделі - `openai-codex/*` також є явним маршрутом PI для OAuth Codex. - Він не вибирає й автоматично не вмикає вбудовану обв'язку app-server Codex. + Продовжуйте використовувати ідентифікатор провайдера `openai-codex` для команд автентифікації/профілю. Префікс + моделі `openai-codex/*` також є явним маршрутом PI для OAuth Codex. + Він не вибирає і не вмикає автоматично вбудовану оснастку app-server Codex. - - `openai-codex/gpt-5.4-mini` не є підтримуваним маршрутом OAuth Codex. Використовуйте - `openai/gpt-5.4-mini` з API key OpenAI або використовуйте - `openai-codex/gpt-5.5` з OAuth Codex. - - ### Приклад конфігурації ```json5 @@ -239,37 +234,37 @@ OpenClaw може використовувати OpenAI або сумісну з ``` - Onboarding більше не імпортує матеріали OAuth з `~/.codex`. Увійдіть через OAuth у браузері (типово) або через потік device-code вище — OpenClaw керує отриманими обліковими даними у власному сховищі auth агента. + Онбординг більше не імпортує OAuth-матеріал із `~/.codex`. Увійдіть через OAuth у браузері (за замовчуванням) або через потік коду пристрою вище — OpenClaw керує отриманими обліковими даними у власному сховищі автентифікації агентів. ### Індикатор статусу - Чат `/status` показує, яке середовище виконання моделі активне для поточного сеансу. - Типова обв'язка PI відображається як `Runtime: OpenClaw Pi Default`. Коли вибрано - вбудовану обв'язку app-server Codex, `/status` показує - `Runtime: OpenAI Codex`. Наявні сеанси зберігають свій записаний ідентифікатор обв'язки, тому використайте + Chat `/status` показує, яке середовище виконання моделі активне для поточного сеансу. + Стандартний PI harness відображається як `Runtime: OpenClaw Pi Default`. Коли вибрано + вбудований harness Codex app-server, `/status` показує + `Runtime: OpenAI Codex`. Наявні сеанси зберігають свій записаний ідентифікатор harness, тому використовуйте `/new` або `/reset` після зміни `agentRuntime`, якщо хочете, щоб `/status` відображав новий вибір PI/Codex. - ### Попередження doctor + ### Попередження Doctor - Якщо вбудований Plugin `codex` увімкнено, коли вибрано маршрут - `openai-codex/*` цієї вкладки, `openclaw doctor` попереджає, що модель - усе ще розв'язується через PI. Залиште конфігурацію без змін, якщо це - очікуваний маршрут автентифікації за підпискою. Перемикайтеся на `openai/` плюс - `agentRuntime.id: "codex"` лише тоді, коли потрібне нативне виконання - app-server Codex. + Якщо вбудований plugin `codex` увімкнено, а маршрут + `openai-codex/*` цієї вкладки вибрано, `openclaw doctor` попереджає, що модель + усе ще розв’язується через PI. Залиште конфігурацію без змін, коли це + очікуваний маршрут автентифікації через підписку. Перемикайтеся на `openai/` плюс + `agentRuntime.id: "codex"` лише тоді, коли потрібне нативне виконання Codex + app-server. ### Обмеження контекстного вікна - OpenClaw розглядає метадані моделі та обмеження контексту середовища виконання як окремі значення. + OpenClaw трактує метадані моделі та обмеження контексту середовища виконання як окремі значення. Для `openai-codex/gpt-5.5` через Codex OAuth: - Нативний `contextWindow`: `1000000` - - Типове обмеження середовища виконання `contextTokens`: `272000` + - Стандартне обмеження runtime `contextTokens`: `272000` - Менше типове обмеження на практиці має кращі характеристики затримки та якості. Перевизначте його за допомогою `contextTokens`: + Менше стандартне обмеження на практиці має кращі характеристики затримки та якості. Перевизначте його за допомогою `contextTokens`: ```json5 { @@ -284,45 +279,45 @@ OpenClaw може використовувати OpenAI або сумісну з ``` - Використовуйте `contextWindow`, щоб оголосити нативні метадані моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту середовища виконання. + Використовуйте `contextWindow`, щоб оголосити нативні метадані моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту runtime. ### Відновлення каталогу - OpenClaw використовує upstream-метадані каталогу Codex для `gpt-5.5`, коли вони - наявні. Якщо live-виявлення Codex пропускає рядок `openai-codex/gpt-5.5`, коли - обліковий запис автентифіковано, OpenClaw синтезує цей рядок моделі OAuth, щоб - запуски cron, під-агента та налаштованої типової моделі не завершувалися помилкою + OpenClaw використовує метадані upstream-каталогу Codex для `gpt-5.5`, коли вони + присутні. Якщо live-виявлення Codex пропускає рядок `openai-codex/gpt-5.5`, тоді як + обліковий запис автентифіковано, OpenClaw синтезує цей рядок OAuth-моделі, щоб + cron, sub-agent і запуски з налаштованою стандартною моделлю не завершувалися помилкою `Unknown model`. -## Нативна автентифікація app-server Codex +## Нативна автентифікація Codex app-server -Нативна обв'язка app-server Codex використовує посилання на моделі `openai/*` плюс -`agentRuntime.id: "codex"`, але її автентифікація все одно базується на обліковому записі. OpenClaw +Нативний harness Codex app-server використовує посилання на моделі `openai/*` плюс +`agentRuntime.id: "codex"`, але його автентифікація все одно базується на обліковому записі. OpenClaw вибирає автентифікацію в такому порядку: -1. Явний профіль автентифікації OpenClaw `openai-codex`, прив'язаний до агента. +1. Явний профіль автентифікації OpenClaw `openai-codex`, прив’язаний до агента. 2. Наявний обліковий запис app-server, наприклад локальний вхід Codex CLI ChatGPT. 3. Лише для локальних запусків stdio app-server: `CODEX_API_KEY`, потім - `OPENAI_API_KEY`, коли app-server повідомляє, що облікового запису немає, але - досі потребує автентифікації OpenAI. + `OPENAI_API_KEY`, коли app-server повідомляє, що облікового запису немає, але все ще потребує + автентифікації OpenAI. -Це означає, що локальний вхід за підпискою ChatGPT/Codex не замінюється лише тому, -що процес Gateway також має `OPENAI_API_KEY` для прямих моделей OpenAI -або embeddings. Резервне використання env API-ключа застосовується тільки до локального stdio-шляху без облікового запису; він -не надсилається до WebSocket-з'єднань app-server. Коли вибрано профіль Codex +Це означає, що локальний вхід через підписку ChatGPT/Codex не замінюється лише +тому, що процес gateway також має `OPENAI_API_KEY` для прямих моделей OpenAI +або embeddings. Резервне використання API-ключа з env застосовується лише до локального stdio-шляху без облікового запису; він +не надсилається до WebSocket-з’єднань app-server. Коли вибрано профіль Codex у стилі підписки, OpenClaw також не передає `CODEX_API_KEY` і `OPENAI_API_KEY` -дочірньому процесу spawned stdio app-server та надсилає вибрані облікові дані -через app-server login RPC. +у породжений дочірній процес stdio app-server і надсилає вибрані облікові дані +через login RPC app-server. ## Генерація зображень -Вбудований Plugin `openai` реєструє генерацію зображень через інструмент `image_generate`. -Він підтримує як генерацію зображень за API-ключем OpenAI, так і генерацію -зображень через Codex OAuth за тим самим посиланням на модель `openai/gpt-image-2`. +Вбудований plugin `openai` реєструє генерацію зображень через інструмент `image_generate`. +Він підтримує як генерацію зображень OpenAI за API-ключем, так і генерацію зображень через Codex OAuth +через те саме посилання на модель `openai/gpt-image-2`. | Можливість | API-ключ OpenAI | Codex OAuth | | ------------------------- | ---------------------------------- | ------------------------------------ | @@ -330,9 +325,9 @@ OpenClaw може використовувати OpenAI або сумісну з | Автентифікація | `OPENAI_API_KEY` | Вхід OpenAI Codex OAuth | | Транспорт | OpenAI Images API | Бекенд Codex Responses | | Макс. зображень на запит | 4 | 4 | -| Режим редагування | Увімкнено (до 5 референсних зображень) | Увімкнено (до 5 референсних зображень) | +| Режим редагування | Увімкнено (до 5 еталонних зображень) | Увімкнено (до 5 еталонних зображень) | | Перевизначення розміру | Підтримується, зокрема розміри 2K/4K | Підтримується, зокрема розміри 2K/4K | -| Співвідношення сторін / роздільність | Не пересилається до OpenAI Images API | Зіставляється з підтримуваним розміром, коли це безпечно | +| Співвідношення сторін / роздільна здатність | Не пересилається до OpenAI Images API | Зіставляється з підтримуваним розміром, коли це безпечно | ```json5 { @@ -348,21 +343,21 @@ OpenClaw може використовувати OpenAI або сумісну з Див. [Генерація зображень](/uk/tools/image-generation) щодо спільних параметрів інструмента, вибору провайдера та поведінки failover. -`gpt-image-2` є типовим для генерації зображень із тексту OpenAI та редагування -зображень. `gpt-image-1.5`, `gpt-image-1` і `gpt-image-1-mini` залишаються доступними як -явні перевизначення моделі. Використовуйте `openai/gpt-image-1.5` для виводу -PNG/WebP із прозорим фоном; поточний API `gpt-image-2` відхиляє +`gpt-image-2` є стандартним варіантом як для генерації зображень із тексту OpenAI, так і для +редагування зображень. `gpt-image-1.5`, `gpt-image-1` і `gpt-image-1-mini` залишаються придатними для використання як +явні перевизначення моделі. Використовуйте `openai/gpt-image-1.5` для виведення PNG/WebP +із прозорим фоном; поточний API `gpt-image-2` відхиляє `background: "transparent"`. Для запиту з прозорим фоном агенти мають викликати `image_generate` з `model: "openai/gpt-image-1.5"`, `outputFormat: "png"` або `"webp"` і `background: "transparent"`; старіший параметр провайдера `openai.background` -досі приймається. OpenClaw також захищає публічні маршрути OpenAI та -OpenAI Codex OAuth, переписуючи типові прозорі запити `openai/gpt-image-2` -на `gpt-image-1.5`; Azure і користувацькі OpenAI-сумісні endpoint зберігають -свої налаштовані імена deployment/моделі. +все ще приймається. OpenClaw також захищає публічні маршрути OpenAI та +OpenAI Codex OAuth, переписуючи стандартні прозорі запити `openai/gpt-image-2` +на `gpt-image-1.5`; Azure і власні OpenAI-сумісні endpoints зберігають +свої налаштовані назви deployment/model. -Той самий параметр доступний для headless-запусків CLI: +Той самий параметр доступний для headless CLI-запусків: ```bash openclaw infer image generate \ @@ -375,18 +370,19 @@ openclaw infer image generate \ Використовуйте ті самі прапорці `--output-format` і `--background` з `openclaw infer image edit`, коли починаєте з вхідного файлу. -`--openai-background` залишається доступним як специфічний для OpenAI псевдонім. +`--openai-background` залишається доступним як OpenAI-специфічний alias. Для встановлень Codex OAuth залишайте те саме посилання `openai/gpt-image-2`. Коли налаштовано -профіль OAuth `openai-codex`, OpenClaw розв'язує цей збережений access token OAuth -і надсилає запити зображень через бекенд Codex Responses. Він -не пробує спершу `OPENAI_API_KEY` і не виконує непомітний fallback на API-ключ для цього +OAuth-профіль `openai-codex`, OpenClaw розв’язує збережений OAuth +access token і надсилає запити зображень через бекенд Codex Responses. Він +спершу не пробує `OPENAI_API_KEY` і не виконує тихий fallback до API-ключа для цього запиту. Налаштуйте `models.providers.openai` явно з API-ключем, -користувацьким базовим URL або endpoint Azure, коли потрібен прямий маршрут OpenAI Images API. -Якщо цей користувацький endpoint зображень розміщено в довіреній LAN/приватній адресі, також задайте +власним базовим URL або Azure endpoint, коли потрібен прямий маршрут OpenAI Images API +натомість. +Якщо цей власний image endpoint розташований у довіреній LAN/приватній адресі, також задайте `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; OpenClaw залишає -приватні/внутрішні OpenAI-сумісні endpoint зображень заблокованими, якщо це opt-in не -вказано. +приватні/внутрішні OpenAI-сумісні image endpoints заблокованими, якщо цього opt-in +немає. Згенерувати: @@ -408,13 +404,13 @@ openclaw infer image generate \ ## Генерація відео -Вбудований Plugin `openai` реєструє генерацію відео через інструмент `video_generate`. +Вбудований plugin `openai` реєструє генерацію відео через інструмент `video_generate`. | Можливість | Значення | | ---------------- | --------------------------------------------------------------------------------- | -| Типова модель | `openai/sora-2` | +| Стандартна модель | `openai/sora-2` | | Режими | Текст-у-відео, зображення-у-відео, редагування одного відео | -| Референсні вхідні дані | 1 зображення або 1 відео | +| Еталонні вхідні дані | 1 зображення або 1 відео | | Перевизначення розміру | Підтримується | | Інші перевизначення | `aspectRatio`, `resolution`, `audio`, `watermark` ігноруються з попередженням інструмента | @@ -432,19 +428,19 @@ openclaw infer image generate \ Див. [Генерація відео](/uk/tools/video-generation) щодо спільних параметрів інструмента, вибору провайдера та поведінки failover. -## Внесок промпта GPT-5 +## Внесок у промпт GPT-5 -OpenClaw додає спільний внесок промпта GPT-5 для запусків сімейства GPT-5 у різних провайдерів. Він застосовується за ідентифікатором моделі, тож `openai-codex/gpt-5.5`, `openai/gpt-5.5`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні посилання GPT-5 отримують той самий overlay. Старіші моделі GPT-4.x — ні. +OpenClaw додає спільний внесок у промпт GPT-5 для запусків сімейства GPT-5 у різних провайдерів. Він застосовується за ідентифікатором моделі, тому `openai-codex/gpt-5.5`, `openai/gpt-5.5`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні посилання GPT-5 отримують той самий overlay. Старіші моделі GPT-4.x не отримують його. -Вбудована нативна обв'язка Codex використовує ту саму поведінку GPT-5 і overlay Heartbeat через інструкції розробника app-server Codex, тому сеанси `openai/gpt-5.x`, примусово пропущені через `agentRuntime.id: "codex"`, зберігають ті самі вказівки щодо доведення завдань до кінця та проактивного Heartbeat, навіть якщо Codex володіє рештою промпта обв'язки. +Вбудований нативний harness Codex використовує ту саму поведінку GPT-5 і overlay heartbeat через developer instructions Codex app-server, тому сеанси `openai/gpt-5.x`, примусово спрямовані через `agentRuntime.id: "codex"`, зберігають ті самі настанови щодо доведення до кінця та проактивного heartbeat, навіть хоча рештою harness-промпта володіє Codex. -Внесок GPT-5 додає тегований контракт поведінки для збереження persona, безпеки виконання, дисципліни інструментів, форми виводу, перевірок завершення та верифікації. Поведінка відповідей для конкретних каналів і silent-message залишається у спільному системному промпті OpenClaw та політиці outbound-доставки. Вказівки GPT-5 завжди ввімкнено для відповідних моделей. Дружній шар стилю взаємодії є окремим і налаштовуваним. +Внесок GPT-5 додає тегований контракт поведінки для сталості persona, безпеки виконання, дисципліни інструментів, форми виводу, перевірок завершення та верифікації. Канально-специфічна поведінка відповідей і silent-message залишається у спільному системному промпті OpenClaw і політиці вихідної доставки. Настанови GPT-5 завжди ввімкнені для відповідних моделей. Дружній шар interaction-style є окремим і налаштовуваним. | Значення | Ефект | | ---------------------- | ------------------------------------------- | -| `"friendly"` (типово) | Увімкнути дружній шар стилю взаємодії | -| `"on"` | Псевдонім для `"friendly"` | -| `"off"` | Вимкнути лише дружній шар стилю | +| `"friendly"` (стандартно) | Увімкнути дружній шар interaction-style | +| `"on"` | Alias для `"friendly"` | +| `"off"` | Вимкнути лише дружній style layer | @@ -468,25 +464,25 @@ OpenClaw додає спільний внесок промпта GPT-5 для з -Значення нечутливі до регістру під час виконання, тому `"Off"` і `"off"` обидва вимикають дружній шар стилю. +Значення не чутливі до регістру під час виконання, тому `"Off"` і `"off"` обидва вимикають дружній style layer. -Застарілий `plugins.entries.openai.config.personality` досі читається як fallback сумісності, коли спільний параметр `agents.defaults.promptOverlays.gpt5.personality` не задано. +Застарілий `plugins.entries.openai.config.personality` все ще читається як compatibility fallback, коли спільний параметр `agents.defaults.promptOverlays.gpt5.personality` не встановлено. ## Голос і мовлення - Вбудований Plugin `openai` реєструє синтез мовлення для поверхні `messages.tts`. + Вбудований plugin `openai` реєструє синтез мовлення для поверхні `messages.tts`. - | Параметр | Шлях конфігурації | Типово | + | Параметр | Шлях конфігурації | Стандартно | |---------|------------|---------| | Модель | `messages.tts.providers.openai.model` | `gpt-4o-mini-tts` | | Голос | `messages.tts.providers.openai.voice` | `coral` | - | Швидкість | `messages.tts.providers.openai.speed` | (не задано) | - | Інструкції | `messages.tts.providers.openai.instructions` | (не задано, лише `gpt-4o-mini-tts`) | + | Швидкість | `messages.tts.providers.openai.speed` | (не встановлено) | + | Інструкції | `messages.tts.providers.openai.instructions` | (не встановлено, лише `gpt-4o-mini-tts`) | | Формат | `messages.tts.providers.openai.responseFormat` | `opus` для голосових нотаток, `mp3` для файлів | | API-ключ | `messages.tts.providers.openai.apiKey` | Fallback до `OPENAI_API_KEY` | | Базовий URL | `messages.tts.providers.openai.baseUrl` | `https://api.openai.com/v1` | @@ -506,23 +502,23 @@ OpenClaw додає спільний внесок промпта GPT-5 для з ``` - Задайте `OPENAI_TTS_BASE_URL`, щоб перевизначити базовий URL TTS, не впливаючи на endpoint Chat API. + Задайте `OPENAI_TTS_BASE_URL`, щоб перевизначити базовий URL TTS без впливу на endpoint chat API. - - Вбудований Plugin `openai` реєструє пакетне перетворення мовлення на текст через + + Вбудований plugin `openai` реєструє пакетне speech-to-text через поверхню транскрипції media-understanding OpenClaw. - - Типова модель: `gpt-4o-transcribe` + - Стандартна модель: `gpt-4o-transcribe` - Endpoint: OpenAI REST `/v1/audio/transcriptions` - - Шлях введення: завантаження аудіофайлу multipart - - Підтримується OpenClaw скрізь, де транскрипція вхідного аудіо використовує - `tools.media.audio`, зокрема сегменти голосових каналів Discord і аудіовкладення - каналів + - Шлях введення: завантаження multipart audio file + - Підтримується OpenClaw скрізь, де транскрипція вхідного audio використовує + `tools.media.audio`, зокрема сегменти голосових каналів Discord і канальні + audio attachments - Щоб примусово використовувати OpenAI для транскрибування вхідного аудіо: + Щоб примусово використовувати OpenAI для транскрипції вхідного аудіо: ```json5 { @@ -542,52 +538,52 @@ OpenClaw додає спільний внесок промпта GPT-5 для з } ``` - Підказки щодо мови та промпта передаються в OpenAI, коли їх надано через - спільну конфігурацію аудіомедіа або запит транскрибування для окремого виклику. + Підказки щодо мови та промпту передаються до OpenAI, коли їх надано через + спільну конфігурацію аудіомедіа або запит транскрипції для окремого виклику. - Вбудований `openai` plugin реєструє транскрибування в реальному часі для Voice Call plugin. + Вбудований Plugin `openai` реєструє транскрипцію в реальному часі для Plugin Voice Call. - | Налаштування | Шлях конфігурації | Типове значення | + | Налаштування | Шлях конфігурації | Типово | |---------|------------|---------| | Модель | `plugins.entries.voice-call.config.streaming.providers.openai.model` | `gpt-4o-transcribe` | | Мова | `...openai.language` | (не задано) | | Промпт | `...openai.prompt` | (не задано) | | Тривалість тиші | `...openai.silenceDurationMs` | `800` | | Поріг VAD | `...openai.vadThreshold` | `0.5` | - | Ключ API | `...openai.apiKey` | Повертається до `OPENAI_API_KEY` | + | API-ключ | `...openai.apiKey` | Резервно використовує `OPENAI_API_KEY` | - Використовує WebSocket-з’єднання з `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей потоковий провайдер призначений для шляху транскрибування в реальному часі Voice Call; голос Discord наразі записує короткі сегменти й натомість використовує пакетний шлях транскрибування `tools.media.audio`. + Використовує WebSocket-з'єднання з `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей потоковий provider призначений для шляху транскрипції в реальному часі Voice Call; голос Discord наразі записує короткі сегменти й натомість використовує пакетний шлях транскрипції `tools.media.audio`. - Вбудований `openai` plugin реєструє голос у реальному часі для Voice Call plugin. + Вбудований Plugin `openai` реєструє голос у реальному часі для Plugin Voice Call. - | Налаштування | Шлях конфігурації | Типове значення | + | Налаштування | Шлях конфігурації | Типово | |---------|------------|---------| | Модель | `plugins.entries.voice-call.config.realtime.providers.openai.model` | `gpt-realtime-1.5` | | Голос | `...openai.voice` | `alloy` | | Температура | `...openai.temperature` | `0.8` | | Поріг VAD | `...openai.vadThreshold` | `0.5` | | Тривалість тиші | `...openai.silenceDurationMs` | `500` | - | Ключ API | `...openai.apiKey` | Повертається до `OPENAI_API_KEY` | + | API-ключ | `...openai.apiKey` | Резервно використовує `OPENAI_API_KEY` | - Підтримує Azure OpenAI через конфігураційні ключі `azureEndpoint` і `azureDeployment` для бекендових мостів реального часу. Підтримує двоспрямовані виклики інструментів. Використовує аудіоформат G.711 u-law. + Підтримує Azure OpenAI через конфігураційні ключі `azureEndpoint` і `azureDeployment` для бекенд-мостів реального часу. Підтримує двонапрямні виклики інструментів. Використовує аудіоформат G.711 u-law. - Control UI Talk використовує браузерні сесії OpenAI у реальному часі з виданим Gateway - ефемерним клієнтським секретом і прямим браузерним обміном WebRTC SDP з - OpenAI Realtime API. Жива перевірка для мейнтейнерів доступна через + Talk в Control UI використовує браузерні сесії OpenAI у реальному часі з + ефемерним клієнтським секретом, згенерованим Gateway, і прямим браузерним обміном WebRTC SDP з + OpenAI Realtime API. Підтримувачі можуть виконати live-перевірку за допомогою `OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts`; - гілка OpenAI видає клієнтський секрет у Node, генерує браузерну SDP-пропозицію - з фейковим медіа мікрофона, надсилає її в OpenAI та застосовує SDP-відповідь + гілка OpenAI створює клієнтський секрет у Node, генерує браузерну SDP-пропозицію + з фіктивним мікрофонним медіа, надсилає її до OpenAI й застосовує SDP-відповідь без журналювання секретів. @@ -596,30 +592,29 @@ OpenClaw додає спільний внесок промпта GPT-5 для з ## Кінцеві точки Azure OpenAI -Вбудований провайдер `openai` може спрямовуватися на ресурс Azure OpenAI для генерації -зображень шляхом перевизначення базової URL-адреси. У шляху генерації зображень OpenClaw -виявляє імена хостів Azure у `models.providers.openai.baseUrl` і автоматично перемикається -на форму запиту Azure. +Вбудований provider `openai` може націлюватися на ресурс Azure OpenAI для генерації +зображень через перевизначення базової URL-адреси. На шляху генерації зображень OpenClaw +виявляє імена хостів Azure у `models.providers.openai.baseUrl` і автоматично перемикається на +формат запиту Azure. Голос у реальному часі використовує окремий шлях конфігурації (`plugins.entries.voice-call.config.realtime.providers.openai.azureEndpoint`) -і не залежить від `models.providers.openai.baseUrl`. Див. акордеон **Голос у -реальному часі** у розділі [Голос і мовлення](#voice-and-speech) для його -налаштувань Azure. +і не залежить від `models.providers.openai.baseUrl`. Дивіться accordion **Realtime +voice** у розділі [Голос і мовлення](#voice-and-speech) щодо його налаштувань Azure. Використовуйте Azure OpenAI, коли: - У вас уже є підписка Azure OpenAI, квота або корпоративна угода -- Вам потрібні регіональне зберігання даних або засоби контролю відповідності, які надає Azure -- Ви хочете тримати трафік усередині наявного середовища Azure +- Вам потрібні регіональне розміщення даних або засоби контролю відповідності, які надає Azure +- Ви хочете тримати трафік у межах наявного тенанта Azure ### Конфігурація -Для генерації зображень Azure через вбудований провайдер `openai` спрямуйте -`models.providers.openai.baseUrl` на ваш ресурс Azure і встановіть `apiKey` як -ключ Azure OpenAI (не ключ OpenAI Platform): +Для генерації зображень Azure через вбудований provider `openai` вкажіть +`models.providers.openai.baseUrl` на ваш ресурс Azure і задайте `apiKey` як +ключ Azure OpenAI (а не ключ OpenAI Platform): ```json5 { @@ -634,7 +629,8 @@ OpenClaw додає спільний внесок промпта GPT-5 для з } ``` -OpenClaw розпізнає ці суфікси хостів Azure для маршруту генерації зображень Azure: +OpenClaw розпізнає ці суфікси хостів Azure для маршруту генерації зображень +Azure: - `*.openai.azure.com` - `*.services.ai.azure.com` @@ -643,24 +639,24 @@ OpenClaw розпізнає ці суфікси хостів Azure для мар Для запитів генерації зображень на розпізнаному хості Azure OpenClaw: - Надсилає заголовок `api-key` замість `Authorization: Bearer` -- Використовує шляхи в межах розгортання (`/openai/deployments/{deployment}/...`) +- Використовує шляхи, прив'язані до deployment (`/openai/deployments/{deployment}/...`) - Додає `?api-version=...` до кожного запиту -- Використовує типовий таймаут запиту 600 с для викликів генерації зображень Azure. - Значення `timeoutMs` для окремого виклику все одно перевизначають це типове значення. +- Використовує типовий тайм-аут запиту 600 с для викликів генерації зображень Azure. + Значення `timeoutMs` для окремих викликів усе ще перевизначають це типове значення. -Інші базові URL-адреси (публічний OpenAI, OpenAI-сумісні проксі) зберігають стандартну -форму запиту зображень OpenAI. +Інші базові URL-адреси (публічний OpenAI, проксі, сумісні з OpenAI) зберігають стандартний +формат запиту зображень OpenAI. -Маршрутизація Azure для шляху генерації зображень провайдера `openai` вимагає -OpenClaw 2026.4.22 або новішої версії. Попередні версії обробляють будь-який користувацький +Маршрутизація Azure для шляху генерації зображень provider `openai` потребує +OpenClaw 2026.4.22 або новішої версії. Раніші версії трактують будь-який власний `openai.baseUrl` як публічну кінцеву точку OpenAI і завершаться помилкою з -розгортаннями зображень Azure. +deployment зображень Azure. ### Версія API -Встановіть `AZURE_OPENAI_API_VERSION`, щоб закріпити конкретну preview- або GA-версію Azure +Задайте `AZURE_OPENAI_API_VERSION`, щоб закріпити конкретну preview- або GA-версію Azure для шляху генерації зображень Azure: ```bash @@ -669,66 +665,65 @@ export AZURE_OPENAI_API_VERSION="2024-12-01-preview" Типове значення — `2024-12-01-preview`, коли змінну не задано. -### Назви моделей є назвами розгортань +### Назви моделей є назвами deployment -Azure OpenAI прив’язує моделі до розгортань. Для запитів генерації зображень Azure, -маршрутизованих через вбудований провайдер `openai`, поле `model` в OpenClaw -має бути **назвою розгортання Azure**, яку ви налаштували в порталі Azure, а не +Azure OpenAI прив'язує моделі до deployment. Для запитів генерації зображень Azure, +маршрутизованих через вбудований provider `openai`, поле `model` в OpenClaw +має бути **назвою Azure deployment**, яку ви налаштували на порталі Azure, а не ідентифікатором публічної моделі OpenAI. -Якщо ви створюєте розгортання з назвою `gpt-image-2-prod`, яке обслуговує `gpt-image-2`: +Якщо ви створюєте deployment з назвою `gpt-image-2-prod`, який обслуговує `gpt-image-2`: ``` /tool image_generate model=openai/gpt-image-2-prod prompt="A clean poster" size=1024x1024 count=1 ``` -Те саме правило назв розгортань застосовується до викликів генерації зображень, маршрутизованих через -вбудований провайдер `openai`. +Те саме правило назви deployment застосовується до викликів генерації зображень, +маршрутизованих через вбудований provider `openai`. ### Регіональна доступність Генерація зображень Azure наразі доступна лише в частині регіонів (наприклад, `eastus2`, `swedencentral`, `polandcentral`, `westus3`, -`uaenorth`). Перевірте поточний список регіонів Microsoft перед створенням -розгортання та підтвердьте, що конкретна модель доступна у вашому регіоні. +`uaenorth`). Перевірте актуальний список регіонів Microsoft перед створенням +deployment і підтвердьте, що конкретна модель пропонується у вашому регіоні. ### Відмінності параметрів Azure OpenAI і публічний OpenAI не завжди приймають однакові параметри зображень. Azure може відхиляти параметри, які дозволяє публічний OpenAI (наприклад, певні -значення `background` у `gpt-image-2`), або надавати їх лише для конкретних версій -моделей. Ці відмінності походять від Azure і базової моделі, а не від +значення `background` для `gpt-image-2`), або надавати їх лише для конкретних версій +моделі. Ці відмінності походять від Azure і базової моделі, а не від OpenClaw. Якщо запит Azure завершується помилкою валідації, перевірте -набір параметрів, який підтримує ваше конкретне розгортання та версія API в +набір параметрів, який підтримує ваш конкретний deployment і версія API, на порталі Azure. -Azure OpenAI використовує нативний транспорт і сумісну поведінку, але не отримує -приховані заголовки атрибуції OpenClaw — див. акордеон **Нативні та OpenAI-сумісні -маршрути** у розділі [Розширена конфігурація](#advanced-configuration). +Azure OpenAI використовує нативний транспорт і compat-поведінку, але не отримує +приховані заголовки атрибуції OpenClaw — дивіться accordion **Native vs OpenAI-compatible +routes** у розділі [Розширена конфігурація](#advanced-configuration). Для трафіку chat або Responses в Azure (поза генерацією зображень) використовуйте -процес онбордингу або спеціальну конфігурацію провайдера Azure — одного лише -`openai.baseUrl` недостатньо, щоб підхопити форму API/автентифікації Azure. Існує окремий -провайдер `azure-openai-responses/*`; див. -акордеон серверної Compaction нижче. +процес onboarding або окрему конфігурацію provider Azure — самого `openai.baseUrl` +недостатньо, щоб застосувати формат API/auth Azure. Існує окремий +provider `azure-openai-responses/*`; дивіться accordion про серверну Compaction нижче. ## Розширена конфігурація - OpenClaw використовує WebSocket насамперед із резервним переходом на SSE (`"auto"`) для `openai/*` і `openai-codex/*`. + OpenClaw використовує WebSocket-first із резервним SSE (`"auto"`) як для `openai/*`, так і для `openai-codex/*`. У режимі `"auto"` OpenClaw: - - Повторює одну ранню невдачу WebSocket перед переходом на SSE - - Після збою позначає WebSocket як деградований приблизно на 60 секунд і використовує SSE під час паузи - - Додає стабільні заголовки ідентичності сесії та ходу для повторних спроб і повторних підключень + - Повторює одну ранню помилку WebSocket перед переходом на SSE + - Після помилки позначає WebSocket як деградований приблизно на 60 секунд і використовує SSE під час охолодження + - Додає стабільні заголовки ідентичності сесії та turn для повторів і перепідключень - Нормалізує лічильники використання (`input_tokens` / `prompt_tokens`) між варіантами транспорту | Значення | Поведінка | |-------|----------| - | `"auto"` (типово) | Спочатку WebSocket, резервний SSE | + | `"auto"` (типово) | Спочатку WebSocket, резервно SSE | | `"sse"` | Примусово лише SSE | | `"websocket"` | Примусово лише WebSocket | @@ -749,14 +744,14 @@ Azure OpenAI використовує нативний транспорт і с } ``` - Пов’язані документи OpenAI: + Пов'язані документи OpenAI: - [Realtime API з WebSocket](https://platform.openai.com/docs/guides/realtime-websocket) - [Потокові відповіді API (SSE)](https://platform.openai.com/docs/guides/streaming-responses) - OpenClaw вмикає прогрів WebSocket за замовчуванням для `openai/*` і `openai-codex/*`, щоб зменшити затримку першого ходу. + OpenClaw вмикає warm-up WebSocket за замовчуванням для `openai/*` і `openai-codex/*`, щоб зменшити затримку першого turn. ```json5 // Disable warm-up @@ -819,19 +814,19 @@ Azure OpenAI використовує нативний транспорт і с Підтримувані значення: `auto`, `default`, `flex`, `priority`. - `serviceTier` передається лише до нативних кінцевих точок OpenAI (`api.openai.com`) і нативних кінцевих точок Codex (`chatgpt.com/backend-api`). Якщо ви маршрутизуєте будь-якого з провайдерів через проксі, OpenClaw залишає `service_tier` без змін. + `serviceTier` передається лише до нативних кінцевих точок OpenAI (`api.openai.com`) і нативних кінцевих точок Codex (`chatgpt.com/backend-api`). Якщо ви маршрутизуєте будь-який provider через проксі, OpenClaw залишає `service_tier` без змін. - Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) потокова обгортка Pi-harness OpenAI plugin автоматично вмикає серверну Compaction: + Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) потокова обгортка Pi-harness Plugin OpenAI автоматично вмикає серверну Compaction: - - Примусово встановлює `store: true` (якщо сумісність моделі не задає `supportsStore: false`) + - Примусово задає `store: true` (якщо model compat не задає `supportsStore: false`) - Вставляє `context_management: [{ type: "compaction", compact_threshold: ... }]` - - Типове значення `compact_threshold`: 70% від `contextWindow` (або `80000`, коли недоступно) + - Типовий `compact_threshold`: 70% від `contextWindow` (або `80000`, коли недоступно) - Це застосовується до вбудованого шляху Pi harness і до хуків провайдера OpenAI, які використовуються вбудованими запусками. Нативний app-server harness Codex керує власним контекстом через Codex і налаштовується окремо через `agents.defaults.agentRuntime.id`. + Це застосовується до вбудованого шляху Pi harness і до хуків provider OpenAI, які використовують embedded runs. Нативний harness сервера застосунку Codex керує власним контекстом через Codex і налаштовується окремо за допомогою `agents.defaults.agentRuntime.id`. @@ -851,7 +846,7 @@ Azure OpenAI використовує нативний транспорт і с } ``` - + ```json5 { agents: { @@ -869,7 +864,7 @@ Azure OpenAI використовує нативний транспорт і с } ``` - + ```json5 { agents: { @@ -887,13 +882,13 @@ Azure OpenAI використовує нативний транспорт і с - `responsesServerCompaction` керує лише інʼєкцією `context_management`. Прямі моделі OpenAI Responses все одно примусово використовують `store: true`, якщо сумісність не задає `supportsStore: false`. + `responsesServerCompaction` керує лише впровадженням `context_management`. Прямі моделі OpenAI Responses все одно примусово використовують `store: true`, якщо compat не встановлює `supportsStore: false`. - - Для запусків сімейства GPT-5 на `openai/*` OpenClaw може використовувати суворіший вбудований контракт виконання: + + Для запусків родини GPT-5 на `openai/*` OpenClaw може використовувати суворіший вбудований контракт виконання: ```json5 { @@ -907,34 +902,34 @@ Azure OpenAI використовує нативний транспорт і с З `strict-agentic` OpenClaw: - Більше не вважає хід лише з планом успішним прогресом, коли доступна дія інструмента - - Повторює хід із підказкою діяти зараз + - Повторює хід із підказкою діяти негайно - Автоматично вмикає `update_plan` для суттєвої роботи - Показує явний заблокований стан, якщо модель продовжує планувати без дій - Обмежено лише запусками сімейства OpenAI і Codex GPT-5. Інші провайдери та старіші сімейства моделей зберігають стандартну поведінку. + Застосовується лише до запусків OpenAI і Codex родини GPT-5. Інші провайдери та старіші родини моделей зберігають типову поведінку. - - OpenClaw по-різному обробляє прямі кінцеві точки OpenAI, Codex і Azure OpenAI та загальні проксі `/v1`, сумісні з OpenAI: + + OpenClaw обробляє прямі кінцеві точки OpenAI, Codex і Azure OpenAI інакше, ніж загальні OpenAI-сумісні проксі `/v1`: **Нативні маршрути** (`openai/*`, Azure OpenAI): - - Зберігають `reasoning: { effort: "none" }` лише для моделей, які підтримують зусилля OpenAI `none` - - Пропускають вимкнене міркування для моделей або проксі, які відхиляють `reasoning.effort: "none"` - - За замовчуванням переводять схеми інструментів у суворий режим + - Зберігають `reasoning: { effort: "none" }` лише для моделей, які підтримують рівень зусилля OpenAI `none` + - Пропускають вимкнене reasoning для моделей або проксі, які відхиляють `reasoning.effort: "none"` + - Типово використовують суворий режим для схем інструментів - Додають приховані заголовки атрибуції лише на перевірених нативних хостах - - Зберігають формування запитів лише для OpenAI (`service_tier`, `store`, сумісність міркування, підказки кешу промптів) + - Зберігають формування запитів, специфічне для OpenAI (`service_tier`, `store`, reasoning-compat, підказки prompt-cache) **Проксі/сумісні маршрути:** - - Використовують менш сувору поведінку сумісності + - Використовують м’якшу compat-поведінку - Вилучають Completions `store` з ненативних payload `openai-completions` - - Приймають наскрізний JSON `params.extra_body`/`params.extraBody` для проксі Completions, сумісних з OpenAI - - Приймають `params.chat_template_kwargs` для проксі Completions, сумісних з OpenAI, таких як vLLM - - Не вмикають примусово суворі схеми інструментів або заголовки лише для нативних маршрутів + - Приймають наскрізний JSON `params.extra_body`/`params.extraBody` для OpenAI-сумісних проксі Completions + - Приймають `params.chat_template_kwargs` для OpenAI-сумісних проксі Completions, таких як vLLM + - Не примушують суворі схеми інструментів або лише нативні заголовки - Azure OpenAI використовує нативний транспорт і поведінку сумісності, але не отримує приховані заголовки атрибуції. + Azure OpenAI використовує нативний транспорт і compat-поведінку, але не отримує прихованих заголовків атрибуції. @@ -952,6 +947,6 @@ Azure OpenAI використовує нативний транспорт і с Спільні параметри інструмента відео та вибір провайдера. - Подробиці автентифікації та правила повторного використання облікових даних. + Відомості про автентифікацію та правила повторного використання облікових даних.