diff --git a/docs/uk/providers/openai.md b/docs/uk/providers/openai.md
index 22be0a908..9e47b031b 100644
--- a/docs/uk/providers/openai.md
+++ b/docs/uk/providers/openai.md
@@ -1,64 +1,65 @@
---
read_when:
- Ви хочете використовувати моделі OpenAI в OpenClaw
- - Ви хочете автентифікацію за підпискою Codex замість API-ключів
+ - Ви хочете використовувати автентифікацію за підпискою Codex замість API-ключів
- Вам потрібні суворіші правила виконання агента GPT-5
summary: Використовуйте OpenAI через API-ключі або підписку Codex в OpenClaw
title: OpenAI
x-i18n:
- generated_at: "2026-04-24T02:21:50Z"
+ generated_at: "2026-04-24T02:37:02Z"
model: gpt-5.4
provider: openai
- source_hash: f9bb65b29be2b69a85663b17a68560c557ffb5303ac7afa2b27548a27397af46
+ source_hash: 8337990d0de692b32746b05ab344695fc5a54ab3855993ac7795fabf38d4d19d
source_path: providers/openai.md
workflow: 15
---
OpenAI надає API для розробників для моделей GPT. OpenClaw підтримує три маршрути сімейства OpenAI. Префікс моделі визначає маршрут:
-- **API key** — прямий доступ до OpenAI Platform з оплатою за використання (моделі `openai/*`)
-- **Codex subscription through PI** — вхід через ChatGPT/Codex з доступом за підпискою (моделі `openai-codex/*`)
+- **API-ключ** — прямий доступ до OpenAI Platform з оплатою за використання (моделі `openai/*`)
+- **Підписка Codex через PI** — вхід через ChatGPT/Codex з доступом за підпискою (моделі `openai-codex/*`)
- **Codex app-server harness** — нативне виконання через Codex app-server (`openai/*` моделі плюс `agents.defaults.embeddedHarness.runtime: "codex"`)
-OpenAI явно підтримує використання OAuth за підпискою у зовнішніх інструментах і робочих процесах, таких як OpenClaw.
+OpenAI прямо підтримує використання OAuth-підписки в зовнішніх інструментах і робочих процесах, таких як OpenClaw.
GPT-5.5 наразі доступна в OpenClaw через маршрути підписки/OAuth:
-`openai-codex/gpt-5.5` з виконавцем PI або `openai/gpt-5.5` з
-Codex app-server harness. Прямий доступ за API key для `openai/gpt-5.5`
-підтримується, щойно OpenAI увімкне GPT-5.5 у публічному API; до того часу використовуйте
-модель з доступом через API, таку як `openai/gpt-5.4`, для конфігурацій `OPENAI_API_KEY`.
+`openai-codex/gpt-5.5` з PI runner або `openai/gpt-5.5` з
+Codex app-server harness. Прямий доступ за API-ключем для `openai/gpt-5.5`
+підтримуватиметься, щойно OpenAI увімкне GPT-5.5 у публічному API; до того
+часу використовуйте модель, доступну через API, наприклад `openai/gpt-5.4`, для конфігурацій
+`OPENAI_API_KEY`.
-## Покриття можливостей OpenClaw
+## Покриття функцій OpenClaw
-| Можливість OpenAI | Поверхня OpenClaw | Статус |
-| ------------------------ | ----------------------------------------------------- | ------------------------------------------------------ |
-| Chat / Responses | постачальник моделей `openai/` | Так |
-| Моделі підписки Codex | `openai-codex/` з OAuth `openai-codex` | Так |
-| Codex app-server harness | `openai/` з `embeddedHarness.runtime: codex` | Так |
-| Server-side web search | нативний інструмент OpenAI Responses | Так, коли увімкнено web search і не закріплено постачальника |
-| Images | `image_generate` | Так |
-| Videos | `video_generate` | Так |
-| Text-to-speech | `messages.tts.provider: "openai"` / `tts` | Так |
-| Batch speech-to-text | `tools.media.audio` / розуміння медіа | Так |
-| Streaming speech-to-text | Voice Call `streaming.provider: "openai"` | Так |
-| Realtime voice | Voice Call `realtime.provider: "openai"` | Так |
-| Embeddings | постачальник embedding для пам’яті | Так |
+| Можливість OpenAI | Поверхня OpenClaw | Статус |
+| ------------------------- | -------------------------------------------------------- | ------------------------------------------------------- |
+| Chat / Responses | постачальник моделей `openai/` | Так |
+| Моделі за підпискою Codex | `openai-codex/` з OAuth `openai-codex` | Так |
+| Codex app-server harness | `openai/` з `embeddedHarness.runtime: codex` | Так |
+| Пошук у вебі на боці сервера | нативний інструмент OpenAI Responses | Так, коли вебпошук увімкнено і постачальника не зафіксовано |
+| Зображення | `image_generate` | Так |
+| Відео | `video_generate` | Так |
+| Перетворення тексту на мовлення | `messages.tts.provider: "openai"` / `tts` | Так |
+| Пакетне перетворення мовлення на текст | `tools.media.audio` / розуміння медіа | Так |
+| Потокове перетворення мовлення на текст | Voice Call `streaming.provider: "openai"` | Так |
+| Голос у реальному часі | Voice Call `realtime.provider: "openai"` / Control UI Talk | Так |
+| Вбудовування | постачальник вбудовувань пам’яті | Так |
## Початок роботи
-Виберіть бажаний метод автентифікації та виконайте кроки налаштування.
+Виберіть бажаний спосіб автентифікації й виконайте кроки налаштування.
-
+
**Найкраще для:** прямого доступу до 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
```
@@ -69,25 +70,25 @@ Codex app-server harness. Прямий доступ за API key для `openai/
openclaw onboard --openai-api-key "$OPENAI_API_KEY"
```
-
+
```bash
openclaw models list --provider openai
```
- ### Підсумок маршрутів
+ ### Підсумок маршруту
- | Model ref | Маршрут | Автентифікація |
- |-----------|---------|----------------|
- | `openai/gpt-5.4` | прямий API OpenAI Platform | `OPENAI_API_KEY` |
- | `openai/gpt-5.4-mini` | прямий API OpenAI Platform | `OPENAI_API_KEY` |
- | `openai/gpt-5.5` | майбутній прямий маршрут API, щойно OpenAI увімкне GPT-5.5 в API | `OPENAI_API_KEY` |
+ | Посилання на модель | Маршрут | Автентифікація |
+ |-----------|-------|------|
+ | `openai/gpt-5.4` | Прямий API OpenAI Platform | `OPENAI_API_KEY` |
+ | `openai/gpt-5.4-mini` | Прямий API OpenAI Platform | `OPENAI_API_KEY` |
+ | `openai/gpt-5.5` | Майбутній прямий маршрут API, щойно OpenAI увімкне GPT-5.5 в API | `OPENAI_API_KEY` |
- `openai/*` — це прямий маршрут OpenAI API за API key, якщо ви явно не примусите
- Codex app-server harness. Сама GPT-5.5 наразі доступна лише через підписку/OAuth;
- використовуйте `openai-codex/*` для Codex OAuth через стандартний виконавець PI.
+ `openai/*` — це прямий маршрут OpenAI за API-ключем, якщо ви явно не примусите
+ використання Codex app-server harness. Сама GPT-5.5 наразі доступна лише через підписку/OAuth;
+ використовуйте `openai-codex/*` для Codex OAuth через стандартний PI runner.
### Приклад конфігурації
@@ -100,13 +101,13 @@ Codex app-server harness. Прямий доступ за API key для `openai/
```
- OpenClaw **не** надає `openai/gpt-5.3-codex-spark`. Реальні запити до OpenAI API відхиляють цю модель, і поточний каталог Codex також її не надає.
+ OpenClaw **не** надає `openai/gpt-5.3-codex-spark`. Живі запити до OpenAI API відхиляють цю модель, і поточний каталог Codex також її не надає.
-
- **Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого API key. Codex cloud потребує входу через ChatGPT.
+
+ **Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого API-ключа. Codex cloud вимагає входу через ChatGPT.
@@ -120,34 +121,34 @@ Codex app-server harness. Прямий доступ за API key для `openai/
openclaw models auth login --provider openai-codex
```
- Для headless або несумісних зі зворотним викликом середовищ додайте `--device-code`, щоб увійти через потік device-code ChatGPT замість callback браузера localhost:
+ Для headless-середовищ або конфігурацій, де незручно використовувати callback, додайте `--device-code`, щоб увійти через потік коду пристрою ChatGPT замість callback локального браузера:
```bash
openclaw models auth login --provider openai-codex --device-code
```
-
+
```bash
openclaw config set agents.defaults.model.primary openai-codex/gpt-5.5
```
-
+
```bash
openclaw models list --provider openai-codex
```
- ### Підсумок маршрутів
+ ### Підсумок маршруту
- | Model ref | Маршрут | Автентифікація |
- |-----------|---------|----------------|
+ | Посилання на модель | Маршрут | Автентифікація |
+ |-----------|-------|------|
| `openai-codex/gpt-5.5` | ChatGPT/Codex OAuth через PI | вхід Codex |
| `openai/gpt-5.5` + `embeddedHarness.runtime: "codex"` | Codex app-server harness | автентифікація Codex app-server |
- Продовжуйте використовувати ідентифікатор постачальника `openai-codex` для команд
- auth/profile. Префікс моделі `openai-codex/*` також є явним маршрутом PI для Codex OAuth.
+ Продовжуйте використовувати ідентифікатор постачальника `openai-codex` для команд автентифікації/профілю. Префікс моделі
+ `openai-codex/*` також є явним маршрутом PI для Codex OAuth.
### Приклад конфігурації
@@ -159,29 +160,29 @@ Codex app-server harness. Прямий доступ за API key для `openai/
```
- Онбординг більше не імпортує OAuth-матеріали з `~/.codex`. Увійдіть через OAuth у браузері (типово) або через потік device-code вище — OpenClaw керує отриманими обліковими даними у власному сховищі auth агента.
+ Початкове налаштування більше не імпортує матеріали OAuth з `~/.codex`. Увійдіть через OAuth у браузері (типовий варіант) або через потік коду пристрою, вказаний вище — OpenClaw керує отриманими обліковими даними у власному сховищі автентифікації агента.
- ### Індикатор статусу
+ ### Індикатор стану
Chat `/status` показує, який вбудований harness активний для поточної
- сесії. Стандартний harness PI відображається як `Runner: pi (embedded)` і не
- додає окремого значка. Коли вибрано вбудований Codex app-server harness,
+ сесії. Стандартний PI harness відображається як `Runner: pi (embedded)` і
+ не додає окремий індикатор. Коли вибрано вбудований Codex app-server harness,
`/status` додає ідентифікатор не-PI harness поруч із `Fast`, наприклад
- `Fast · codex`. Наявні сесії зберігають записаний ідентифікатор harness, тож використайте
+ `Fast · codex`. Наявні сесії зберігають записаний для них ідентифікатор harness, тому використовуйте
`/new` або `/reset` після зміни `embeddedHarness`, якщо хочете, щоб `/status`
відображав новий вибір PI/Codex.
### Обмеження вікна контексту
- OpenClaw розглядає метадані моделі та ліміт контексту середовища виконання як окремі значення.
+ OpenClaw розглядає метадані моделі та обмеження контексту під час виконання як окремі значення.
Для `openai-codex/gpt-5.5` через Codex OAuth:
- Нативний `contextWindow`: `1000000`
- - Стандартний ліміт `contextTokens` середовища виконання: `272000`
+ - Стандартне обмеження `contextTokens` під час виконання: `272000`
- Менший стандартний ліміт на практиці має кращі характеристики затримки та якості. Перевизначте його через `contextTokens`:
+ Менше стандартне обмеження на практиці дає кращі характеристики затримки й якості. Перевизначте його через `contextTokens`:
```json5
{
@@ -196,7 +197,7 @@ Codex app-server harness. Прямий доступ за API key для `openai/
```
- Використовуйте `contextWindow`, щоб оголосити нативні метадані моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту середовища виконання.
+ Використовуйте `contextWindow`, щоб оголосити нативні метадані моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту під час виконання.
@@ -205,18 +206,18 @@ Codex app-server harness. Прямий доступ за API key для `openai/
## Генерація зображень
Вбудований Plugin `openai` реєструє генерацію зображень через інструмент `image_generate`.
-Він підтримує як генерацію зображень OpenAI за API key, так і генерацію зображень
-через Codex OAuth через той самий ідентифікатор моделі `openai/gpt-image-2`.
+Він підтримує як генерацію зображень OpenAI за API-ключем, так і генерацію зображень
+через Codex OAuth, використовуючи те саме посилання на модель `openai/gpt-image-2`.
-| Можливість | API key OpenAI | Codex OAuth |
-| ------------------------ | ---------------------------------- | ----------------------------------- |
-| Model ref | `openai/gpt-image-2` | `openai/gpt-image-2` |
-| Автентифікація | `OPENAI_API_KEY` | вхід через OpenAI Codex OAuth |
-| Транспорт | OpenAI Images API | бекенд Codex Responses |
-| Максимум зображень на запит | 4 | 4 |
-| Режим редагування | Увімкнено (до 5 еталонних зображень) | Увімкнено (до 5 еталонних зображень) |
-| Перевизначення розміру | Підтримується, включно з розмірами 2K/4K | Підтримується, включно з розмірами 2K/4K |
-| Співвідношення сторін / роздільність | Не передається до OpenAI Images API | За потреби зіставляється з підтримуваним розміром |
+| Можливість | API-ключ OpenAI | Codex OAuth |
+| ------------------------- | ---------------------------------- | ------------------------------------ |
+| Посилання на модель | `openai/gpt-image-2` | `openai/gpt-image-2` |
+| Автентифікація | `OPENAI_API_KEY` | вхід через OpenAI Codex OAuth |
+| Транспорт | OpenAI Images API | бекенд Codex Responses |
+| Макс. кількість зображень на запит | 4 | 4 |
+| Режим редагування | Увімкнено (до 5 еталонних зображень) | Увімкнено (до 5 еталонних зображень) |
+| Перевизначення розміру | Підтримується, зокрема розміри 2K/4K | Підтримується, зокрема розміри 2K/4K |
+| Співвідношення сторін / роздільна здатність | Не передається до OpenAI Images API | Зіставляється з підтримуваним розміром, коли це безпечно |
```json5
{
@@ -232,27 +233,27 @@ Codex app-server harness. Прямий доступ за API key для `openai/
Див. [Генерація зображень](/uk/tools/image-generation) для спільних параметрів інструмента, вибору постачальника та поведінки failover.
-`gpt-image-2` є стандартним для генерації тексту в зображення OpenAI та
-редагування зображень. `gpt-image-1` залишається доступною як явне перевизначення моделі, але нові
-робочі процеси OpenAI для зображень мають використовувати `openai/gpt-image-2`.
+`gpt-image-2` — це стандартне значення і для генерації зображень з тексту OpenAI, і для редагування зображень. `gpt-image-1` залишається доступною як явне перевизначення моделі, але нові робочі процеси OpenAI для зображень мають використовувати `openai/gpt-image-2`.
-Для інсталяцій Codex OAuth зберігайте той самий ідентифікатор `openai/gpt-image-2`. Коли
-налаштовано OAuth-профіль `openai-codex`, OpenClaw знаходить цей збережений токен доступу OAuth
-і надсилає запити на зображення через бекенд Codex Responses. Він
-не спочатку пробує `OPENAI_API_KEY` і не виконує тихий відкат до API key для цього
-запиту. Явно налаштуйте `models.providers.openai` з API key,
-власним base URL або endpoint Azure, якщо вам потрібен прямий маршрут OpenAI Images API.
-Якщо цей користувацький endpoint для зображень розташований у довіреній LAN/приватній адресі, також встановіть
-`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; OpenClaw зберігає
-блокування приватних/внутрішніх OpenAI-сумісних endpoint для зображень, якщо не задано цей явний дозвіл.
+Для установок із Codex OAuth зберігайте те саме посилання `openai/gpt-image-2`. Коли
+налаштовано OAuth-профіль `openai-codex`, OpenClaw визначає цей збережений токен
+доступу OAuth і надсилає запити на зображення через бекенд Codex Responses. Він
+не намагається спочатку використати `OPENAI_API_KEY` і не виконує тихий перехід на API-ключ для цього
+запиту. Явно налаштуйте `models.providers.openai` з API-ключем,
+власною базовою URL-адресою або Azure endpoint, якщо хочете використовувати прямий маршрут
+OpenAI Images API.
+Якщо цей власний endpoint зображень перебуває в довіреній LAN/приватній адресі, також задайте
+`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; OpenClaw і далі
+блокує приватні/внутрішні OpenAI-сумісні endpoint зображень, якщо цей явний дозвіл
+не задано.
-Генерація:
+Згенерувати:
```
/tool image_generate model=openai/gpt-image-2 prompt="A polished launch poster for OpenClaw on macOS" size=3840x2160 count=1
```
-Редагування:
+Відредагувати:
```
/tool image_generate model=openai/gpt-image-2 prompt="Preserve the object shape, change the material to translucent glass" image=/path/to/reference.png size=1024x1536
@@ -262,11 +263,11 @@ Codex app-server harness. Прямий доступ за API key для `openai/
Вбудований Plugin `openai` реєструє генерацію відео через інструмент `video_generate`.
-| Можливість | Значення |
-| --------------- | --------------------------------------------------------------------------------- |
-| Стандартна модель | `openai/sora-2` |
-| Режими | Текст у відео, зображення у відео, редагування одного відео |
-| Еталонні входи | 1 зображення або 1 відео |
+| Можливість | Значення |
+| ---------------- | --------------------------------------------------------------------------------- |
+| Стандартна модель | `openai/sora-2` |
+| Режими | Текст у відео, зображення у відео, редагування одного відео |
+| Вхідні еталони | 1 зображення або 1 відео |
| Перевизначення розміру | Підтримується |
| Інші перевизначення | `aspectRatio`, `resolution`, `audio`, `watermark` ігноруються з попередженням інструмента |
@@ -284,13 +285,13 @@ Codex app-server harness. Прямий доступ за API key для `openai/
Див. [Генерація відео](/uk/tools/video-generation) для спільних параметрів інструмента, вибору постачальника та поведінки failover.
-## Внесок до підказки GPT-5
+## Внесок у prompt GPT-5
-OpenClaw додає спільний внесок до підказки GPT-5 для запусків сімейства GPT-5 у всіх постачальників. Він застосовується за ідентифікатором моделі, тож `openai-codex/gpt-5.5`, `openai/gpt-5.4`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні ідентифікатори GPT-5 отримують той самий шар. Старіші моделі GPT-4.x — ні.
+OpenClaw додає спільний внесок у prompt GPT-5 для запусків сімейства GPT-5 у різних постачальників. Він застосовується за ідентифікатором моделі, тому `openai-codex/gpt-5.5`, `openai/gpt-5.4`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні посилання GPT-5 отримують той самий overlay. Старіші моделі GPT-4.x — ні.
-Вбудований нативний Codex harness використовує ту саму поведінку GPT-5 і шар Heartbeat через інструкції розробника Codex app-server, тому сесії `openai/gpt-5.x`, примусово спрямовані через `embeddedHarness.runtime: "codex"`, зберігають ті самі настанови щодо доведення виконання до кінця та проактивного Heartbeat, хоча рештою підказки harness керує Codex.
+Вбудований нативний Codex harness використовує ту саму поведінку GPT-5 і overlay Heartbeat через інструкції розробника Codex app-server, тому сесії `openai/gpt-5.x`, примусово спрямовані через `embeddedHarness.runtime: "codex"`, зберігають ті самі вказівки щодо доведення дій до завершення та проактивного Heartbeat, навіть попри те, що рештою prompt harness керує Codex.
-Внесок GPT-5 додає тегований контракт поведінки для збереження персони, безпеки виконання, дисципліни використання інструментів, форми виводу, перевірок завершення та верифікації. Специфічна для каналу поведінка відповідей і тихих повідомлень залишається в спільній системній підказці OpenClaw і політиці вихідної доставки. Настанови GPT-5 завжди ввімкнені для відповідних моделей. Рівень дружнього стилю взаємодії є окремим і налаштовуваним.
+Внесок GPT-5 додає тегований контракт поведінки для збереження persona, безпеки виконання, дисципліни використання інструментів, форми виводу, перевірок завершення та верифікації. Специфічна для каналів поведінка відповіді та тихих повідомлень залишається у спільному системному prompt OpenClaw і політиці вихідної доставки. Вказівки GPT-5 завжди ввімкнені для відповідних моделей. Рівень дружнього стилю взаємодії є окремим і налаштовуваним.
| Значення | Ефект |
| ---------------------- | ------------------------------------------ |
@@ -299,7 +300,7 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
| `"off"` | Вимкнути лише рівень дружнього стилю |
-
+
```json5
{
agents: {
@@ -320,11 +321,11 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
-Значення нечутливі до регістру під час виконання, тому і `"Off"`, і `"off"` вимикають рівень дружнього стилю.
+Значення під час виконання не чутливі до регістру, тому і `"Off"`, і `"off"` вимикають дружній стиль.
-Застаріле `plugins.entries.openai.config.personality` усе ще читається як сумісний fallback, коли спільне налаштування `agents.defaults.promptOverlays.gpt5.personality` не задано.
+Застарілий `plugins.entries.openai.config.personality` усе ще читається як сумісний запасний варіант, коли спільне налаштування `agents.defaults.promptOverlays.gpt5.personality` не задано.
## Голос і мовлення
@@ -333,15 +334,15 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
Вбудований 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.responseFormat` | `opus` для голосових нотаток, `mp3` для файлів |
- | API key | `messages.tts.providers.openai.apiKey` | Використовує `OPENAI_API_KEY` як fallback |
- | Base URL | `messages.tts.providers.openai.baseUrl` | `https://api.openai.com/v1` |
+ | API-ключ | `messages.tts.providers.openai.apiKey` | Використовується `OPENAI_API_KEY` як запасний варіант |
+ | Базова URL-адреса | `messages.tts.providers.openai.baseUrl` | `https://api.openai.com/v1` |
Доступні моделі: `gpt-4o-mini-tts`, `tts-1`, `tts-1-hd`. Доступні голоси: `alloy`, `ash`, `ballad`, `cedar`, `coral`, `echo`, `fable`, `juniper`, `marin`, `onyx`, `nova`, `sage`, `shimmer`, `verse`.
@@ -358,21 +359,21 @@ 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` реєструє пакетне перетворення мовлення на текст через
поверхню транскрибування розуміння медіа OpenClaw.
- - Стандартна модель: `gpt-4o-transcribe`
+ - Типова модель: `gpt-4o-transcribe`
- Endpoint: OpenAI REST `/v1/audio/transcriptions`
- - Шлях введення: multipart-завантаження аудіофайлу
+ - Шлях вхідних даних: multipart-вивантаження аудіофайлу
- Підтримується в OpenClaw всюди, де транскрибування вхідного аудіо використовує
- `tools.media.audio`, зокрема для сегментів голосових каналів Discord і
- аудіовкладень каналів
+ `tools.media.audio`, зокрема у сегментах голосових каналів Discord і
+ аудіовкладеннях каналів
Щоб примусово використовувати OpenAI для транскрибування вхідного аудіо:
@@ -394,25 +395,25 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
}
```
- Підказки щодо мови та prompt передаються до OpenAI, коли їх задано у
- спільній конфігурації аудіомедіа або в запиті на транскрибування для конкретного виклику.
+ Підказки щодо мови та prompt передаються до OpenAI, коли вони задані
+ у спільній конфігурації аудіомедіа або в запиті транскрибування для конкретного виклику.
Вбудований Plugin `openai` реєструє транскрибування в реальному часі для Plugin Voice Call.
- | Налаштування | Шлях конфігурації | Типово |
+ | Налаштування | Шлях конфігурації | Типове значення |
|---------|------------|---------|
| Модель | `plugins.entries.voice-call.config.streaming.providers.openai.model` | `gpt-4o-transcribe` |
| Мова | `...openai.language` | (не задано) |
| Prompt | `...openai.prompt` | (не задано) |
| Тривалість тиші | `...openai.silenceDurationMs` | `800` |
| Поріг VAD | `...openai.vadThreshold` | `0.5` |
- | API key | `...openai.apiKey` | Використовує `OPENAI_API_KEY` як fallback |
+ | API-ключ | `...openai.apiKey` | Використовується `OPENAI_API_KEY` як запасний варіант |
- Використовує WebSocket-з’єднання з `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей streaming provider призначений для шляху транскрибування в реальному часі в Voice Call; голосові канали Discord наразі записують короткі сегменти та натомість використовують пакетний шлях транскрибування `tools.media.audio`.
+ Використовує WebSocket-з’єднання з `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей постачальник потокової обробки призначений для шляху транскрибування в реальному часі у Voice Call; голос у Discord наразі записує короткі сегменти й натомість використовує пакетний шлях транскрибування `tools.media.audio`.
@@ -420,17 +421,17 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
Вбудований Plugin `openai` реєструє голос у реальному часі для Plugin Voice Call.
- | Налаштування | Шлях конфігурації | Типово |
+ | Налаштування | Шлях конфігурації | Типове значення |
|---------|------------|---------|
| Модель | `plugins.entries.voice-call.config.realtime.providers.openai.model` | `gpt-realtime-1.5` |
| Голос | `...openai.voice` | `alloy` |
| Temperature | `...openai.temperature` | `0.8` |
| Поріг VAD | `...openai.vadThreshold` | `0.5` |
| Тривалість тиші | `...openai.silenceDurationMs` | `500` |
- | API key | `...openai.apiKey` | Використовує `OPENAI_API_KEY` як fallback |
+ | API-ключ | `...openai.apiKey` | Використовується `OPENAI_API_KEY` як запасний варіант |
- Підтримує Azure OpenAI через ключі конфігурації `azureEndpoint` і `azureDeployment`. Підтримує двонаправлений виклик інструментів. Використовує аудіоформат G.711 u-law.
+ Підтримує Azure OpenAI через ключі конфігурації `azureEndpoint` і `azureDeployment`. Підтримує двонапрямлені виклики інструментів. Використовує аудіоформат G.711 u-law.
@@ -438,29 +439,28 @@ OpenClaw додає спільний внесок до підказки GPT-5 д
## Endpoint Azure OpenAI
-Вбудований постачальник `openai` може звертатися до ресурсу Azure OpenAI для
-генерації зображень шляхом перевизначення base URL. На шляху генерації
-зображень OpenClaw виявляє імена хостів Azure у `models.providers.openai.baseUrl` і автоматично
-перемикається на формат запиту Azure.
+Вбудований постачальник `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.
+часі** в розділі [Голос і мовлення](#voice-and-speech) для налаштувань Azure.
Використовуйте Azure OpenAI, коли:
-- У вас уже є підписка Azure OpenAI, квота або корпоративна угода
-- Вам потрібна регіональна локалізація даних або засоби контролю відповідності, які надає Azure
-- Ви хочете зберігати трафік у межах наявного тенанта Azure
+- У вас уже є підписка, квота або корпоративна угода Azure OpenAI
+- Вам потрібні регіональне зберігання даних або засоби відповідності вимогам, які надає Azure
+- Ви хочете, щоб трафік залишався в межах наявного орендаря Azure
### Конфігурація
-Для генерації зображень Azure через вбудований постачальник `openai`, вкажіть
-`models.providers.openai.baseUrl` на ваш ресурс Azure і встановіть `apiKey` у
+Для генерації зображень через Azure за допомогою вбудованого постачальника `openai` вкажіть
+`models.providers.openai.baseUrl` на ваш ресурс Azure і задайте `apiKey` як
ключ Azure OpenAI (а не ключ OpenAI Platform):
```json5
@@ -476,8 +476,7 @@ Azure.
}
```
-OpenClaw розпізнає такі суфікси хостів Azure для маршруту Azure генерації
-зображень:
+OpenClaw розпізнає такі суфікси хостів Azure для маршруту генерації зображень Azure:
- `*.openai.azure.com`
- `*.services.ai.azure.com`
@@ -486,49 +485,48 @@ OpenClaw розпізнає такі суфікси хостів Azure для м
Для запитів генерації зображень на розпізнаному хості Azure OpenClaw:
- Надсилає заголовок `api-key` замість `Authorization: Bearer`
-- Використовує шляхи в межах deployment (`/openai/deployments/{deployment}/...`)
+- Використовує шляхи з прив’язкою до deployment (`/openai/deployments/{deployment}/...`)
- Додає `?api-version=...` до кожного запиту
-Інші base URL (публічний OpenAI, OpenAI-сумісні проксі) зберігають стандартну
+Інші базові URL-адреси (публічний OpenAI, OpenAI-сумісні проксі) зберігають стандартну
форму запиту OpenAI для зображень.
Маршрутизація Azure для шляху генерації зображень постачальника `openai`
-потребує OpenClaw 2026.4.22 або новішої версії. Раніші версії обробляють будь-який
-власний `openai.baseUrl` як публічний endpoint OpenAI і завершуються помилкою при роботі з deployment
-зображень Azure.
+потребує OpenClaw 2026.4.22 або новішої версії. Раніші версії обробляють будь-який користувацький
+`openai.baseUrl` як публічний endpoint OpenAI і завершуються помилкою при роботі з deployment зображень Azure.
### Версія API
-Встановіть `AZURE_OPENAI_API_VERSION`, щоб зафіксувати конкретну preview- або GA-версію Azure
+Установіть `AZURE_OPENAI_API_VERSION`, щоб зафіксувати конкретну preview- або GA-версію Azure
для шляху генерації зображень Azure:
```bash
export AZURE_OPENAI_API_VERSION="2024-12-01-preview"
```
-Типове значення — `2024-12-01-preview`, якщо змінну не встановлено.
+Типове значення — `2024-12-01-preview`, якщо змінну не задано.
-### Назви моделей — це назви deployment
+### Імена моделей — це імена deployment
Azure OpenAI прив’язує моделі до deployment. Для запитів генерації зображень Azure,
маршрутизованих через вбудований постачальник `openai`, поле `model` в OpenClaw
-має бути **назвою deployment Azure**, яку ви налаштували в порталі Azure, а не
-публічним ідентифікатором моделі OpenAI.
+має бути **іменем deployment Azure**, яке ви налаштували в порталі Azure, а не
+ідентифікатором публічної моделі OpenAI.
-Якщо ви створили deployment під назвою `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
```
-Те саме правило назв deployment застосовується до викликів генерації зображень,
+Те саме правило імен deployment застосовується до викликів генерації зображень,
маршрутизованих через вбудований постачальник `openai`.
### Регіональна доступність
-Генерація зображень Azure наразі доступна лише в частині регіонів
+Генерація зображень Azure наразі доступна лише в обмеженій кількості регіонів
(наприклад, `eastus2`, `swedencentral`, `polandcentral`, `westus3`,
`uaenorth`). Перевірте актуальний список регіонів Microsoft перед створенням
deployment і підтвердьте, що конкретна модель доступна у вашому регіоні.
@@ -536,21 +534,21 @@ deployment і підтвердьте, що конкретна модель до
### Відмінності параметрів
Azure OpenAI і публічний OpenAI не завжди приймають однакові параметри зображень.
-Azure може відхиляти опції, які дозволяє публічний OpenAI (наприклад, певні
-значення `background` у `gpt-image-2`) або надавати їх лише для конкретних
-версій моделі. Ці відмінності походять від Azure та базової моделі, а не від
-OpenClaw. Якщо запит Azure завершується помилкою валідації, перевірте
-набір параметрів, який підтримує ваш конкретний deployment і версія API в
+Azure може відхиляти параметри, які дозволяє публічний OpenAI (наприклад, певні
+значення `background` для `gpt-image-2`), або надавати їх лише для конкретних версій
+моделі. Ці відмінності походять від Azure та базової моделі, а не від
+OpenClaw. Якщо запит Azure завершується помилкою валідації, перевірте набір
+параметрів, який підтримує ваш конкретний deployment і версія API, у
порталі Azure.
-Azure OpenAI використовує нативний транспорт і сумісну поведінку, але не отримує
-приховані заголовки атрибуції OpenClaw — див. акордеон **Нативні та OpenAI-сумісні
+Azure OpenAI використовує нативний транспорт і поведінку compat, але не отримує
+приховані заголовки атрибуції OpenClaw — див. акордеон **Нативні маршрути та OpenAI-сумісні
маршрути** в розділі [Розширена конфігурація](#advanced-configuration).
-Для трафіку chat або Responses на Azure (окрім генерації зображень) використовуйте
-процес онбордингу або окрему конфігурацію постачальника Azure — одного лише
-`openai.baseUrl` недостатньо, щоб увімкнути форму API/автентифікації Azure. Існує окремий
+Для трафіку chat або Responses на Azure (поза генерацією зображень) використовуйте
+потік початкового налаштування або окрему конфігурацію постачальника Azure — одного лише
+`openai.baseUrl` недостатньо, щоб отримати форму API/автентифікації Azure. Існує окремий
постачальник `azure-openai-responses/*`; див.
акордеон Server-side Compaction нижче.
@@ -558,18 +556,18 @@ Azure OpenAI використовує нативний транспорт і с
## Розширена конфігурація
-
- OpenClaw використовує спочатку WebSocket з fallback на SSE (`"auto"`) як для `openai/*`, так і для `openai-codex/*`.
+
+ OpenClaw використовує WebSocket-first із запасним переходом на SSE (`"auto"`) як для `openai/*`, так і для `openai-codex/*`.
У режимі `"auto"` OpenClaw:
- Повторює одну ранню помилку WebSocket перед переходом на SSE
- Після помилки позначає WebSocket як деградований приблизно на 60 секунд і використовує SSE під час охолодження
- - Додає стабільні заголовки ідентичності сесії та ходу для повторних спроб і повторних підключень
+ - Додає стабільні заголовки ідентичності сесії та ходу для повторних спроб і перепідключень
- Нормалізує лічильники використання (`input_tokens` / `prompt_tokens`) між варіантами транспорту
| Значення | Поведінка |
|-------|----------|
- | `"auto"` (типово) | Спочатку WebSocket, fallback на SSE |
+ | `"auto"` (типово) | Спочатку WebSocket, потім запасний перехід на SSE |
| `"sse"` | Примусово лише SSE |
| `"websocket"` | Примусово лише WebSocket |
@@ -591,8 +589,8 @@ Azure OpenAI використовує нативний транспорт і с
```
Пов’язана документація OpenAI:
- - [Realtime API with WebSocket](https://platform.openai.com/docs/guides/realtime-websocket)
- - [Streaming API responses (SSE)](https://platform.openai.com/docs/guides/streaming-responses)
+ - [Realtime API з WebSocket](https://platform.openai.com/docs/guides/realtime-websocket)
+ - [Потокові відповіді API (SSE)](https://platform.openai.com/docs/guides/streaming-responses)
@@ -600,7 +598,7 @@ Azure OpenAI використовує нативний транспорт і с
OpenClaw типово вмикає прогрів WebSocket для `openai/*` і `openai-codex/*`, щоб зменшити затримку першого ходу.
```json5
- // Disable warm-up
+ // Вимкнути прогрів
{
agents: {
defaults: {
@@ -616,13 +614,13 @@ Azure OpenAI використовує нативний транспорт і с
-
- OpenClaw надає спільний перемикач Fast mode для `openai/*` і `openai-codex/*`:
+
+ OpenClaw надає спільний перемикач швидкого режиму для `openai/*` і `openai-codex/*`:
- **Chat/UI:** `/fast status|on|off`
- - **Config:** `agents.defaults.models["/"].params.fastMode`
+ - **Конфігурація:** `agents.defaults.models["/"].params.fastMode`
- Коли ввімкнено, OpenClaw зіставляє fast mode з пріоритетною обробкою OpenAI (`service_tier = "priority"`). Наявні значення `service_tier` зберігаються, а fast mode не переписує `reasoning` або `text.verbosity`.
+ Якщо ввімкнено, OpenClaw зіставляє швидкий режим із пріоритетною обробкою OpenAI (`service_tier = "priority"`). Наявні значення `service_tier` зберігаються, а швидкий режим не переписує `reasoning` або `text.verbosity`.
```json5
{
@@ -637,13 +635,13 @@ Azure OpenAI використовує нативний транспорт і с
```
- Перевизначення сесії мають пріоритет над конфігурацією. Очищення перевизначення сесії в UI Sessions повертає сесію до налаштованого типового значення.
+ Перевизначення сесії мають вищий пріоритет за конфігурацію. Очищення перевизначення сесії в UI Sessions повертає сесію до налаштованого типового значення.
- API OpenAI надає пріоритетну обробку через `service_tier`. Встановіть її для кожної моделі в OpenClaw:
+ API OpenAI надає пріоритетну обробку через `service_tier`. Задайте її для кожної моделі в OpenClaw:
```json5
{
@@ -666,16 +664,16 @@ Azure OpenAI використовує нативний транспорт і с
- Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) обгортка потоку Pi-harness Plugin OpenAI автоматично вмикає server-side Compaction:
+ Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) stream wrapper Pi-harness Plugin `openai` автоматично вмикає Server-side Compaction:
- - Примусово встановлює `store: true` (якщо сумісність моделі не задає `supportsStore: false`)
- - Впроваджує `context_management: [{ type: "compaction", compact_threshold: ... }]`
- - Типовий `compact_threshold`: 70% від `contextWindow` (або `80000`, коли значення недоступне)
+ - Примусово задає `store: true` (якщо сумісність моделі не встановлює `supportsStore: false`)
+ - Вставляє `context_management: [{ type: "compaction", compact_threshold: ... }]`
+ - Типове значення `compact_threshold`: 70% від `contextWindow` (або `80000`, якщо значення недоступне)
Це застосовується до вбудованого шляху Pi harness і до хуків постачальника OpenAI, які використовуються вбудованими запусками. Нативний Codex app-server harness керує власним контекстом через Codex і налаштовується окремо через `agents.defaults.embeddedHarness.runtime`.
-
+
Корисно для сумісних endpoint, таких як Azure OpenAI Responses:
```json5
@@ -710,7 +708,7 @@ Azure OpenAI використовує нативний транспорт і с
}
```
-
+
```json5
{
agents: {
@@ -728,7 +726,7 @@ Azure OpenAI використовує нативний транспорт і с
- `responsesServerCompaction` керує лише впровадженням `context_management`. Прямі моделі OpenAI Responses однаково примусово встановлюють `store: true`, якщо сумісність не задає `supportsStore: false`.
+ `responsesServerCompaction` керує лише вставленням `context_management`. Прямі моделі OpenAI Responses все одно примусово використовують `store: true`, якщо compat не задає `supportsStore: false`.
@@ -747,32 +745,32 @@ Azure OpenAI використовує нативний транспорт і с
```
З `strict-agentic` OpenClaw:
- - Більше не вважає хід лише з планом успішним прогресом, коли доступна дія з інструментом
+ - Більше не вважає хід лише з планом успішним прогресом, коли доступна дія через інструмент
- Повторює хід із вказівкою діяти негайно
- Автоматично вмикає `update_plan` для суттєвої роботи
- - Показує явний заблокований стан, якщо модель продовжує планувати без дії
+ - Показує явний стан блокування, якщо модель продовжує планувати без дії
- Обмежено лише запусками сімейства GPT-5 OpenAI та Codex. Інші постачальники й старіші сімейства моделей зберігають типову поведінку.
+ Обмежено лише запуском OpenAI і Codex сімейства GPT-5. Інші постачальники й старіші сімейства моделей зберігають типову поведінку.
-
- OpenClaw по-різному обробляє прямі endpoint OpenAI, Codex і Azure OpenAI та загальні OpenAI-сумісні проксі `/v1`:
+
+ OpenClaw по-різному обробляє прямі endpoint OpenAI, Codex і Azure OpenAI порівняно із загальними OpenAI-сумісними проксі `/v1`:
**Нативні маршрути** (`openai/*`, Azure OpenAI):
- Зберігають `reasoning: { effort: "none" }` лише для моделей, які підтримують OpenAI `none` effort
- Пропускають вимкнений reasoning для моделей або проксі, які відхиляють `reasoning.effort: "none"`
- Типово використовують строгий режим для схем інструментів
- Додають приховані заголовки атрибуції лише на перевірених нативних хостах
- - Зберігають формування запитів, специфічне для OpenAI (`service_tier`, `store`, сумісність reasoning, підказки кешу prompt)
+ - Зберігають формування запитів, характерне лише для OpenAI (`service_tier`, `store`, reasoning-compat, підказки prompt-cache)
- **Маршрути проксі/сумісності:**
- - Використовують м’якшу сумісну поведінку
- - Не примушують строгі схеми інструментів або заголовки лише для нативних маршрутів
+ **Проксі/сумісні маршрути:**
+ - Використовують м’якшу compat-поведінку
+ - Не примушують строгі схеми інструментів або нативні заголовки
- Azure OpenAI використовує нативний транспорт і сумісну поведінку, але не отримує прихованих заголовків атрибуції.
+ Azure OpenAI використовує нативний транспорт і compat-поведінку, але не отримує приховані заголовки атрибуції.
@@ -781,15 +779,15 @@ Azure OpenAI використовує нативний транспорт і с
- Вибір постачальників, ідентифікаторів моделей і поведінки failover.
+ Вибір постачальників, посилань на моделі та поведінки failover.
Спільні параметри інструмента зображень і вибір постачальника.
- Спільні параметри інструмента відео і вибір постачальника.
+ Спільні параметри інструмента відео та вибір постачальника.
-
+
Докладніше про автентифікацію та правила повторного використання облікових даних.
diff --git a/docs/uk/web/control-ui.md b/docs/uk/web/control-ui.md
index a1cc0058f..1dfbd0c2f 100644
--- a/docs/uk/web/control-ui.md
+++ b/docs/uk/web/control-ui.md
@@ -1,14 +1,14 @@
---
read_when:
- Ви хочете керувати Gateway з браузера
- - Ви хочете доступ до Tailnet без SSH-тунелів
-summary: Вебінтерфейс керування для Gateway (чат, вузли, конфігурація)
+ - Ви хочете доступ Tailnet без SSH-тунелів
+summary: Браузерний інтерфейс керування для Gateway (чат, Node, конфігурація)
title: Інтерфейс керування
x-i18n:
- generated_at: "2026-04-24T01:39:17Z"
+ generated_at: "2026-04-24T02:37:00Z"
model: gpt-5.4
provider: openai
- source_hash: 931a87479844fc5c06f2c373d3e7447c140bf6d17a5614197209e7a5f3f896bd
+ source_hash: edf6beb9c485720b6811d9d348bbb4752cf6aae929a9fbc62fc8c4770e762490
source_path: web/control-ui.md
workflow: 15
---
@@ -16,7 +16,7 @@ x-i18n:
Інтерфейс керування — це невеликий односторінковий застосунок **Vite + Lit**, який обслуговується Gateway:
- за замовчуванням: `http://:18789/`
-- необов’язковий префікс: встановіть `gateway.controlUi.basePath` (наприклад, `/openclaw`)
+- необов’язковий префікс: установіть `gateway.controlUi.basePath` (наприклад, `/openclaw`)
Він взаємодіє **безпосередньо з WebSocket Gateway** на тому самому порту.
@@ -35,14 +35,14 @@ x-i18n:
- заголовки ідентифікації Tailscale Serve, коли `gateway.auth.allowTailscale: true`
- заголовки ідентифікації trusted-proxy, коли `gateway.auth.mode: "trusted-proxy"`
-Панель налаштувань інформаційної панелі зберігає токен для поточної сесії вкладки браузера
-та вибрану URL-адресу gateway; паролі не зберігаються. Під час первинного налаштування зазвичай
-генерується токен gateway для автентифікації зі спільним секретом при першому підключенні, але
+Панель налаштувань на інформаційній панелі зберігає токен для поточної сесії вкладки браузера
+і вибрану URL-адресу gateway; паролі не зберігаються. Onboarding зазвичай
+генерує токен gateway для автентифікації зі спільним секретом під час першого підключення, але
автентифікація паролем також працює, коли `gateway.auth.mode` має значення `"password"`.
## Сполучення пристрою (перше підключення)
-Коли ви підключаєтеся до Інтерфейсу керування з нового браузера або пристрою, Gateway
+Коли ви підключаєтеся до Control UI з нового браузера або пристрою, Gateway
вимагає **одноразове підтвердження сполучення** — навіть якщо ви перебуваєте в тій самій Tailnet
з `gateway.auth.allowTailscale: true`. Це захід безпеки для запобігання
несанкціонованому доступу.
@@ -52,133 +52,142 @@ x-i18n:
**Щоб підтвердити пристрій:**
```bash
-# List pending requests
+# Перелічити запити, що очікують
openclaw devices list
-# Approve by request ID
+# Підтвердити за ID запиту
openclaw devices approve
```
-Якщо браузер повторно намагається виконати сполучення зі зміненими даними автентифікації (роль/області доступу/публічний
-ключ), попередній запит у стані очікування замінюється, і створюється новий `requestId`.
+Якщо браузер повторно намагається пройти сполучення зі зміненими даними автентифікації (роль/області доступу/публічний
+ключ), попередній запит, що очікує, замінюється, і створюється новий `requestId`.
Перед підтвердженням знову виконайте `openclaw devices list`.
-Якщо браузер уже сполучений і ви змінюєте його доступ із читання на
-доступ запису/адміністратора, це розглядається як підвищення рівня підтвердження, а не як тихе
-повторне підключення. OpenClaw залишає попереднє підтвердження активним, блокує ширше повторне підключення
+Якщо браузер уже сполучений і ви змінюєте його з доступу лише для читання на
+доступ для запису/адміністратора, це вважається підвищенням рівня підтвердження, а не
+тихим повторним підключенням. OpenClaw зберігає попереднє підтвердження активним, блокує ширше повторне підключення
і просить вас явно підтвердити новий набір областей доступу.
Після підтвердження пристрій запам’ятовується і не потребуватиме повторного підтвердження, якщо
-ви не відкличете його через `openclaw devices revoke --device --role `. Див.
+ви не відкличете його за допомогою `openclaw devices revoke --device --role `. Див.
[CLI Devices](/uk/cli/devices) для ротації токенів і відкликання.
**Примітки:**
-- Прямі локальні браузерні підключення через local loopback (`127.0.0.1` / `localhost`)
- підтверджуються автоматично.
-- Підключення браузера через Tailnet і LAN однаково вимагають явного підтвердження, навіть якщо
- вони ініційовані з тієї самої машини.
-- Кожен профіль браузера генерує унікальний ідентифікатор пристрою, тому зміна браузера або
+- Прямі локальні browser-з’єднання через local loopback (`127.0.0.1` / `localhost`) автоматично
+ підтверджуються.
+- Browser-підключення через Tailnet і LAN усе одно потребують явного підтвердження, навіть якщо
+ вони походять з тієї самої машини.
+- Кожен профіль браузера генерує унікальний ID пристрою, тому зміна браузера або
очищення даних браузера вимагатиме повторного сполучення.
## Особиста ідентичність (локально в браузері)
-Інтерфейс керування підтримує особисту ідентичність для кожного браузера (відображуване ім’я та
+Control UI підтримує персональну ідентичність для кожного браузера (відображуване ім’я та
аватар), яка додається до вихідних повідомлень для атрибуції в спільних сесіях. Вона
зберігається в сховищі браузера, прив’язана до поточного профілю браузера і не
-синхронізується з іншими пристроями та не зберігається на сервері поза звичайними
-метаданими авторства в стенограмі повідомлень, які ви фактично надсилаєте. Очищення даних сайту або
+синхронізується з іншими пристроями та не зберігається на сервері поза межами звичайних
+метаданих авторства в транскрипті для повідомлень, які ви фактично надсилаєте. Очищення даних сайту або
зміна браузера скидає її до порожнього значення.
-## Кінцева точка конфігурації runtime
+## Endpoint конфігурації середовища виконання
-Інтерфейс керування отримує свої налаштування runtime з
-`/__openclaw/control-ui-config.json`. Ця кінцева точка захищена тією самою
+Control UI отримує свої runtime-налаштування з
+`/__openclaw/control-ui-config.json`. Доступ до цього endpoint захищений тією самою
автентифікацією gateway, що й решта HTTP-поверхні: неавтентифіковані браузери не можуть
-отримати її, а успішне отримання вимагає або вже дійсний токен/пароль gateway,
-ідентичність Tailscale Serve, або ідентичність trusted-proxy.
+отримати його, а успішне отримання вимагає або вже дійсного токена/пароля gateway,
+ідентифікації Tailscale Serve, або ідентичності trusted-proxy.
## Підтримка мов
-Інтерфейс керування може локалізуватися під час першого завантаження відповідно до локалі вашого браузера.
-Щоб змінити це пізніше, відкрийте **Overview -> Gateway Access -> Language**. Перемикач
-локалі розташовано в картці Gateway Access, а не в розділі Appearance.
+Control UI може локалізуватися під час першого завантаження на основі локалі вашого браузера.
+Щоб змінити її пізніше, відкрийте **Overview -> Gateway Access -> Language**. Засіб
+вибору локалі розташовано в картці Gateway Access, а не в розділі Appearance.
- Підтримувані локалі: `en`, `zh-CN`, `zh-TW`, `pt-BR`, `de`, `es`, `ja-JP`, `ko`, `fr`, `tr`, `uk`, `id`, `pl`, `th`
- Неанглійські переклади ліниво завантажуються в браузері.
-- Вибрана локаль зберігається в сховищі браузера і використовується повторно під час майбутніх відвідувань.
+- Вибрана локаль зберігається в сховищі браузера й повторно використовується під час наступних відвідувань.
- Відсутні ключі перекладу повертаються до англійської.
## Що він уміє робити (зараз)
- Спілкуватися з моделлю через Gateway WS (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`)
-- Передавати виклики інструментів + картки живого виводу інструментів у Chat (події агента)
-- Канали: статус вбудованих, а також bundled/external plugin каналів, QR-вхід і конфігурація для кожного каналу (`channels.status`, `web.login.*`, `config.patch`)
-- Екземпляри: список присутності + оновлення (`system-presence`)
-- Сесії: список + перевизначення моделі/мислення/швидкого режиму/детального режиму/трасування/міркування для кожної сесії (`sessions.list`, `sessions.patch`)
-- Dreams: статус Dreaming, перемикач увімкнення/вимкнення та читач Dream Diary (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`)
-- Завдання Cron: список/додавання/редагування/запуск/увімкнення/вимкнення + історія запусків (`cron.*`)
+- Підключатися до OpenAI Realtime безпосередньо з браузера через WebRTC. Gateway
+ випускає короткоживучий секрет клієнта Realtime за допомогою `talk.realtime.session`; браузер
+ надсилає аудіо з мікрофона безпосередньо до OpenAI і передає виклики інструмента
+ `openclaw_agent_consult` назад через `chat.send` для більшої налаштованої
+ моделі OpenClaw.
+- Потоково передавати виклики інструментів + картки виводу інструментів у реальному часі в Chat (події агента)
+- Канали: статус вбудованих, bundled і external Plugin-каналів, QR-вхід і конфігурація для кожного каналу (`channels.status`, `web.login.*`, `config.patch`)
+- Інстанси: список присутності + оновлення (`system-presence`)
+- Сесії: список + перевизначення model/thinking/fast/verbose/trace/reasoning для кожної сесії (`sessions.list`, `sessions.patch`)
+- Dreams: статус Dreaming, перемикач увімкнення/вимкнення і читач Dream Diary (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`)
+- Завдання Cron: перелік/додавання/редагування/запуск/увімкнення/вимкнення + історія запусків (`cron.*`)
- Skills: статус, увімкнення/вимкнення, встановлення, оновлення API-ключів (`skills.*`)
-- Вузли: список + можливості (`node.list`)
-- Підтвердження exec: редагування списків дозволів gateway або вузла + політика запитів для `exec host=gateway/node` (`exec.approvals.*`)
+- Node: список + обмеження (`node.list`)
+- Підтвердження exec: редагування списків дозволів gateway або node + політика запиту для `exec host=gateway/node` (`exec.approvals.*`)
- Конфігурація: перегляд/редагування `~/.openclaw/openclaw.json` (`config.get`, `config.set`)
- Конфігурація: застосування + перезапуск із валідацією (`config.apply`) і пробудження останньої активної сесії
-- Записи конфігурації включають захист base-hash, щоб запобігти перезапису паралельних змін
-- Записи конфігурації (`config.set`/`config.apply`/`config.patch`) також попередньо перевіряють активне розв’язання SecretRef для посилань у надісланому корисному навантаженні конфігурації; нерозв’язані активні надіслані посилання відхиляються до запису
-- Схема конфігурації + рендеринг форм (`config.schema` / `config.schema.lookup`,
- включно з полями `title` / `description`, відповідними підказками UI, негайними
- зведеннями дочірніх елементів, метаданими документації для вузлів nested object/wildcard/array/composition,
- а також схемами plugin і каналів, коли вони доступні); редактор Raw JSON
- доступний лише тоді, коли знімок має безпечний raw round-trip
-- Якщо знімок не може безпечно пройти raw round-trip, Інтерфейс керування примусово вмикає режим Form і вимикає режим Raw для цього знімка
-- У редакторі Raw JSON дія "Reset to saved" зберігає форму, створену в raw (форматування, коментарі, структуру `$include`), замість повторного рендерингу сплощеного знімка, тож зовнішні редагування зберігаються під час скидання, коли знімок може безпечно пройти round-trip
-- Структуровані значення об’єктів SecretRef відображаються в текстових полях форми лише для читання, щоб запобігти випадковому пошкодженню під час перетворення об’єкта на рядок
+- Записи конфігурації містять захист на основі базового хеша, щоб запобігти перезапису одночасних змін
+- Записи конфігурації (`config.set`/`config.apply`/`config.patch`) також попередньо перевіряють розв’язання активних SecretRef для посилань у надісланому payload конфігурації; невирішені активні надіслані посилання відхиляються до запису
+- Схема конфігурації + рендеринг форми (`config.schema` / `config.schema.lookup`,
+ зокрема поле `title` / `description`, відповідні підказки UI, підсумки
+ безпосередніх дочірніх елементів, метадані документації для вузлів nested object/wildcard/array/composition,
+ а також схеми Plugin і каналів, коли вони доступні); редактор Raw JSON
+ доступний лише тоді, коли знімок має безпечне повне raw-перетворення
+- Якщо знімок не може безпечно пройти повне raw-перетворення, Control UI примусово використовує режим Form і вимикає режим Raw для цього знімка
+- У редакторі Raw JSON дія "Reset to saved" зберігає форму, створену в raw-режимі (форматування, коментарі, макет `$include`), замість повторного рендерингу сплощеного знімка, тож зовнішні зміни зберігаються після скидання, коли знімок може безпечно пройти повне raw-перетворення
+- Значення структурованих об’єктів SecretRef відображаються лише для читання в текстових полях форми, щоб запобігти випадковому пошкодженню під час перетворення об’єкта на рядок
- Налагодження: знімки status/health/models + журнал подій + ручні RPC-виклики (`status`, `health`, `models.list`)
- Журнали: live tail журнальних файлів gateway із фільтрацією/експортом (`logs.tail`)
- Оновлення: запуск оновлення пакета/git + перезапуск (`update.run`) зі звітом про перезапуск
Примітки до панелі завдань Cron:
-- Для ізольованих завдань доставка за замовчуванням налаштована на оголошення підсумку. Ви можете перемкнути на none, якщо хочете лише внутрішні запуски.
-- Поля каналу/цілі з’являються, коли вибрано announce.
-- Режим Webhook використовує `delivery.mode = "webhook"` із `delivery.to`, встановленим на дійсну URL-адресу HTTP(S) Webhook.
-- Для завдань основної сесії доступні режими доставки webhook і none.
-- Розширені елементи керування редагуванням включають delete-after-run, очищення перевизначення агента, точні/зміщені параметри cron,
- перевизначення моделі/мислення агента та перемикачі доставки best-effort.
-- Валідація форми виконується вбудовано з помилками на рівні полів; недійсні значення вимикають кнопку збереження, доки їх не буде виправлено.
-- Встановіть `cron.webhookToken`, щоб надсилати окремий bearer token; якщо його не вказано, webhook надсилається без заголовка автентифікації.
-- Застарілий резервний варіант: збережені застарілі завдання з `notify: true` усе ще можуть використовувати `cron.webhook`, доки їх не буде мігровано.
+- Для ізольованих завдань доставка за замовчуванням оголошує підсумок. Ви можете перемкнути на none, якщо хочете лише внутрішні запуски.
+- Поля channel/target з’являються, коли вибрано announce.
+- Режим Webhook використовує `delivery.mode = "webhook"` із `delivery.to`, установленим на дійсну URL-адресу HTTP(S) Webhook.
+- Для завдань main-session доступні режими доставки webhook і none.
+- Розширені елементи редагування включають видалення після запуску, очищення перевизначення агента, точні/з відтермінуванням параметри cron,
+ перевизначення model/thinking для агента та перемикачі доставки з найкращими зусиллями.
+- Валідація форми є вбудованою з помилками на рівні полів; некоректні значення вимикають кнопку збереження, доки їх не буде виправлено.
+- Установіть `cron.webhookToken`, щоб надсилати окремий bearer-токен; якщо його не вказано, webhook надсилається без заголовка автентифікації.
+- Застарілий запасний варіант: збережені legacy-завдання з `notify: true` усе ще можуть використовувати `cron.webhook`, доки їх не буде мігровано.
## Поведінка чату
-- `chat.send` є **неблокувальним**: він негайно підтверджує через `{ runId, status: "started" }`, а відповідь передається потоком через події `chat`.
+- `chat.send` є **неблокувальним**: він одразу підтверджується з `{ runId, status: "started" }`, а відповідь передається потоком через події `chat`.
- Повторне надсилання з тим самим `idempotencyKey` повертає `{ status: "in_flight" }` під час виконання та `{ status: "ok" }` після завершення.
-- Відповіді `chat.history` обмежені за розміром для безпеки UI. Коли записи стенограми надто великі, Gateway може обрізати довгі текстові поля, пропускати великі блоки метаданих і замінювати надто великі повідомлення заповнювачем (`[chat.history omitted: message too large]`).
-- Зображення assistant/generated зберігаються як керовані посилання на медіа й повертаються через автентифіковані URL-адреси медіа Gateway, тому перезавантаження не залежать від того, чи збережуться в історії чату необроблені корисні навантаження зображень base64.
-- `chat.history` також прибирає з видимого тексту assistant вбудовані теги директив лише для відображення (наприклад, `[[reply_to_*]]` і `[[audio_as_voice]]`), XML-корисні навантаження викликів інструментів у форматі plain-text (зокрема `...`, `...`, `...`, `...` і обрізані блоки викликів інструментів), а також витеклі ASCII/full-width токени керування моделлю, і пропускає записи assistant, увесь видимий текст яких складається лише з точного тихого токена `NO_REPLY` / `no_reply`.
-- `chat.inject` додає примітку assistant до стенограми сесії та транслює подію `chat` для оновлень лише в UI (без запуску агента, без доставки в канал).
-- Перемикачі моделі та мислення в заголовку чату негайно змінюють активну сесію через `sessions.patch`; це сталі перевизначення сесії, а не параметри надсилання лише на один хід.
+- Відповіді `chat.history` обмежені за розміром для безпеки UI. Коли записи транскрипту надто великі, Gateway може обрізати довгі текстові поля, пропускати важкі блоки метаданих і замінювати надто великі повідомлення заповнювачем (`[chat.history omitted: message too large]`).
+- Зображення assistant/згенеровані зберігаються як керовані посилання на медіа і повертаються через автентифіковані URL-адреси медіа Gateway, тож перезавантаження не залежить від того, чи залишаються в відповіді історії чату raw-payload зображень base64.
+- `chat.history` також прибирає inline-теги директив лише для відображення з видимого тексту assistant (наприклад, `[[reply_to_*]]` і `[[audio_as_voice]]`), XML-payload звичайного тексту викликів інструментів (зокрема `...`, `...`, `...`, `...` і обрізані блоки викликів інструментів), а також витеклі токени керування моделлю ASCII/full-width, і пропускає записи assistant, увесь видимий текст яких — це лише точний тихий токен `NO_REPLY` / `no_reply`.
+- `chat.inject` додає примітку assistant до транскрипту сесії та транслює подію `chat` для оновлень лише UI (без запуску агента, без доставки через канал).
+- Засоби вибору model і thinking у заголовку чату негайно застосовують зміни до активної сесії через `sessions.patch`; це постійні перевизначення сесії, а не параметри надсилання лише для одного ходу.
+- Режим Talk використовує зареєстрованого постачальника голосу в реальному часі. Налаштуйте OpenAI за допомогою
+ `talk.provider: "openai"` разом із `talk.providers.openai.apiKey`, або повторно використайте
+ конфігурацію постачальника Realtime для Voice Call. Браузер ніколи не отримує стандартний
+ API-ключ OpenAI; він отримує лише ефемерний секрет клієнта Realtime.
- Зупинка:
- Натисніть **Stop** (викликає `chat.abort`)
- - Поки запуск активний, звичайні подальші повідомлення ставляться в чергу. Натисніть **Steer** на повідомленні в черзі, щоб вставити це подальше повідомлення в поточний хід.
- - Введіть `/stop` (або окремі фрази скасування, як-от `stop`, `stop action`, `stop run`, `stop openclaw`, `please stop`), щоб перервати поза смугою
- - `chat.abort` підтримує `{ sessionKey }` (без `runId`) для переривання всіх активних запусків цієї сесії
-- Часткове збереження після переривання:
+ - Поки виконання активне, звичайні наступні повідомлення ставляться в чергу. Натисніть **Steer** на повідомленні в черзі, щоб вставити це наступне повідомлення в поточний хід.
+ - Введіть `/stop` (або окремі фрази скасування, як-от `stop`, `stop action`, `stop run`, `stop openclaw`, `please stop`), щоб перервати поза основним потоком
+ - `chat.abort` підтримує `{ sessionKey }` (без `runId`) для переривання всіх активних запусків у цій сесії
+- Збереження часткового виводу після переривання:
- Коли запуск перервано, частковий текст assistant усе ще може відображатися в UI
- - Gateway зберігає частковий текст assistant у стенограмі, якщо існує буферизований вивід
- - Збережені записи містять метадані переривання, щоб споживачі стенограми могли відрізнити часткові результати переривання від звичайного завершеного виводу
+ - Gateway зберігає частковий текст assistant у історії транскрипту після переривання, коли існує буферизований вивід
+ - Збережені записи містять метадані переривання, щоб споживачі транскрипту могли відрізнити частковий вивід після переривання від звичайного завершення
## Hosted embeds
-Повідомлення assistant можуть вбудовано відображати hosted web content за допомогою shortcode `[embed ...]`.
+Повідомлення assistant можуть відображати hosted web content вбудовано за допомогою shortcode `[embed ...]`.
Політика sandbox для iframe керується параметром
`gateway.controlUi.embedSandbox`:
- `strict`: вимикає виконання скриптів усередині hosted embeds
-- `scripts`: дозволяє інтерактивні embeds, зберігаючи ізоляцію походження; це
- значення за замовчуванням, і його зазвичай достатньо для самодостатніх browser games/widgets
-- `trusted`: додає `allow-same-origin` на додачу до `allow-scripts` для same-site
- документів, яким навмисно потрібні ширші привілеї
+- `scripts`: дозволяє інтерактивні embeds, зберігаючи ізоляцію джерела; це
+ значення за замовчуванням і зазвичай його достатньо для самодостатніх browser-ігор/віджетів
+- `trusted`: додає `allow-same-origin` поверх `allow-scripts` для same-site
+ документів, яким навмисно потрібні розширені привілеї
Приклад:
@@ -192,19 +201,19 @@ openclaw devices approve
}
```
-Використовуйте `trusted` лише тоді, коли вбудованому документу справді потрібна
-поведінка same-origin. Для більшості згенерованих агентом ігор та інтерактивних полотен `scripts` —
+Використовуйте `trusted`, лише коли вбудованому документу справді потрібна поведінка
+same-origin. Для більшості згенерованих агентом ігор та інтерактивних canvas `scripts` —
безпечніший вибір.
Абсолютні зовнішні URL-адреси embed `http(s)` за замовчуванням залишаються заблокованими. Якщо ви
-свідомо хочете, щоб `[embed url="https://..."]` завантажував сторонні сторінки, встановіть
+свідомо хочете, щоб `[embed url="https://..."]` завантажував сторонні сторінки, установіть
`gateway.controlUi.allowExternalEmbedUrls: true`.
-## Доступ через Tailnet (рекомендовано)
+## Доступ Tailnet (рекомендовано)
### Інтегрований Tailscale Serve (бажано)
-Тримайте Gateway на loopback і дозвольте Tailscale Serve проксувати його через HTTPS:
+Залишайте Gateway на loopback і дозвольте Tailscale Serve проксіювати його через HTTPS:
```bash
openclaw gateway --tailscale serve
@@ -214,22 +223,22 @@ openclaw gateway --tailscale serve
- `https:///` (або ваш налаштований `gateway.controlUi.basePath`)
-За замовчуванням запити Serve до Інтерфейсу керування/WebSocket можуть автентифікуватися через заголовки ідентичності Tailscale
+За замовчуванням запити Control UI/WebSocket Serve можуть проходити автентифікацію через заголовки ідентичності Tailscale
(`tailscale-user-login`), коли `gateway.auth.allowTailscale` має значення `true`. OpenClaw
перевіряє ідентичність, визначаючи адресу `x-forwarded-for` через
-`tailscale whois` і зіставляючи її із заголовком, і приймає такі запити лише тоді, коли
-запит потрапляє на loopback із заголовками Tailscale `x-forwarded-*`. Встановіть
-`gateway.auth.allowTailscale: false`, якщо хочете вимагати явні облікові дані зі спільним секретом
-навіть для трафіку Serve. Тоді використовуйте `gateway.auth.mode: "token"` або
+`tailscale whois` і звіряючи її із заголовком, і приймає їх лише тоді, коли
+запит надходить на loopback із заголовками Tailscale `x-forwarded-*`. Установіть
+`gateway.auth.allowTailscale: false`, якщо хочете вимагати явні облікові дані
+зі спільним секретом навіть для трафіку Serve. Тоді використовуйте `gateway.auth.mode: "token"` або
`"password"`.
Для цього асинхронного шляху ідентичності Serve невдалі спроби автентифікації для тієї самої IP-адреси клієнта
-та області автентифікації серіалізуються перед записами до обмеження частоти. Тому одночасні хибні повторні спроби
+та області автентифікації серіалізуються перед записами обмеження частоти. Тому одночасні невдалі повторні спроби
з того самого браузера можуть показувати `retry later` у другому запиті
-замість двох звичайних невідповідностей, що паралельно змагаються.
+замість двох звичайних невідповідностей, що змагаються паралельно.
Автентифікація Serve без токена припускає, що хост gateway є довіреним. Якщо на цьому хості
може виконуватися недовірений локальний код, вимагайте автентифікацію токеном/паролем.
-### Прив’язка до tailnet + токен
+### Прив’язати до tailnet + токен
```bash
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
@@ -239,19 +248,19 @@ openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
- `http://:18789/` (або ваш налаштований `gateway.controlUi.basePath`)
-Вставте відповідний спільний секрет у налаштування UI (він надсилається як
+Вставте відповідний спільний секрет у налаштування UI (надсилається як
`connect.params.auth.token` або `connect.params.auth.password`).
-## Незахищений HTTP
+## Небезпечний HTTP
Якщо ви відкриваєте інформаційну панель через звичайний HTTP (`http://` або `http://`),
-браузер працює в **незахищеному контексті** й блокує WebCrypto. За замовчуванням
-OpenClaw **блокує** підключення Інтерфейсу керування без ідентичності пристрою.
+браузер працює в **незахищеному контексті** і блокує WebCrypto. За замовчуванням
+OpenClaw **блокує** підключення Control UI без ідентичності пристрою.
Задокументовані винятки:
- сумісність незахищеного HTTP лише для localhost з `gateway.controlUi.allowInsecureAuth=true`
-- успішна автентифікація оператора Інтерфейсу керування через `gateway.auth.mode: "trusted-proxy"`
+- успішна автентифікація оператора Control UI через `gateway.auth.mode: "trusted-proxy"`
- аварійний варіант `gateway.controlUi.dangerouslyDisableDeviceAuth=true`
**Рекомендоване виправлення:** використовуйте HTTPS (Tailscale Serve) або відкрийте UI локально:
@@ -273,12 +282,12 @@ OpenClaw **блокує** підключення Інтерфейсу керув
`allowInsecureAuth` — це лише локальний перемикач сумісності:
-- Він дозволяє сесіям Інтерфейсу керування на localhost продовжувати роботу без ідентичності пристрою
- у незахищених HTTP-контекстах.
+- Він дозволяє сесіям localhost Control UI продовжуватися без ідентичності пристрою в
+ незахищених контекстах HTTP.
- Він не обходить перевірки сполучення.
-- Він не послаблює вимоги до ідентичності віддалених пристроїв (не localhost).
+- Він не послаблює вимоги до віддаленої (не-localhost) ідентичності пристрою.
-**Лише для аварійних випадків:**
+**Лише для аварійного використання:**
```json5
{
@@ -290,40 +299,40 @@ OpenClaw **блокує** підключення Інтерфейсу керув
}
```
-`dangerouslyDisableDeviceAuth` вимикає перевірки ідентичності пристрою в Інтерфейсі керування і є
-серйозним зниженням рівня безпеки. Після аварійного використання швидко поверніть попереднє значення.
+`dangerouslyDisableDeviceAuth` вимикає перевірки ідентичності пристрою в Control UI і є
+серйозним зниженням рівня безпеки. Швидко поверніть налаштування назад після аварійного використання.
Примітка щодо trusted-proxy:
-- успішна автентифікація trusted-proxy може допускати **операторські** сесії Інтерфейсу керування без
+- успішна автентифікація trusted-proxy може допускати **операторські** сесії Control UI без
ідентичності пристрою
-- це **не** поширюється на сесії Інтерфейсу керування з роллю вузла
-- reverse proxy через loopback на тому самому хості все одно не задовольняють автентифікацію trusted-proxy; див.
+- це **не** поширюється на сесії Control UI з роллю node
+- reverse-proxy на тій самій машині через loopback усе одно не задовольняють автентифікацію trusted-proxy; див.
[Автентифікація Trusted Proxy](/uk/gateway/trusted-proxy-auth)
-Див. [Tailscale](/uk/gateway/tailscale) для інструкцій із налаштування HTTPS.
+Див. [Tailscale](/uk/gateway/tailscale) для вказівок щодо налаштування HTTPS.
## Політика безпеки вмісту
-Інтерфейс керування постачається зі суворою політикою `img-src`: дозволені лише ресурси **того самого походження** та URL `data:`. Віддалені URL `http(s)` і URL з відносним протоколом відхиляються браузером і не ініціюють мережевих запитів.
+Control UI постачається із суворою політикою `img-src`: дозволено лише ресурси **того самого джерела** та URL-адреси `data:`. Віддалені URL-адреси з `http(s)` і протокольно-відносні URL-адреси зображень відхиляються браузером і не спричиняють мережевих запитів.
Що це означає на практиці:
- Аватари та зображення, що обслуговуються за відносними шляхами (наприклад `/avatars/`), як і раніше відображаються.
-- Вбудовані URL `data:image/...` як і раніше відображаються (це корисно для корисних навантажень усередині протоколу).
-- Віддалені URL аватарів, що надходять із метаданих каналу, видаляються в допоміжних функціях аватарів Інтерфейсу керування і замінюються вбудованим логотипом/значком, тому скомпрометований або зловмисний канал не може змусити браузер оператора виконувати довільні віддалені запити зображень.
+- Вбудовані URL-адреси `data:image/...` як і раніше відображаються (це корисно для payload усередині протоколу).
+- Віддалені URL-адреси аватарів, які надходять із метаданих каналів, видаляються в helper-функціях аватарів Control UI і замінюються вбудованим логотипом/бейджем, тож скомпрометований або зловмисний канал не може змусити браузер оператора виконувати довільні віддалені запити зображень.
-Щоб отримати таку поведінку, нічого змінювати не потрібно — вона завжди ввімкнена і не налаштовується.
+Вам не потрібно нічого змінювати, щоб отримати таку поведінку — вона завжди ввімкнена й не налаштовується.
## Автентифікація маршруту аватара
-Коли налаштовано автентифікацію gateway, кінцева точка аватара Інтерфейсу керування вимагає той самий токен gateway, що й решта API:
+Коли налаштовано автентифікацію gateway, endpoint аватарів у Control UI вимагає той самий токен gateway, що й решта API:
-- `GET /avatar/` повертає зображення аватара лише автентифікованим викликачам. `GET /avatar/?meta=1` повертає метадані аватара за тим самим правилом.
-- Неавтентифіковані запити до будь-якого з цих маршрутів відхиляються (так само, як і до сусіднього маршруту assistant-media). Це запобігає витоку ідентичності агента через маршрут аватара на хостах, які інакше захищені.
-- Сам Інтерфейс керування пересилає токен gateway як bearer-заголовок під час отримання аватарів і використовує автентифіковані blob URL, тож зображення все одно відображається в інформаційних панелях.
+- `GET /avatar/` повертає зображення аватара лише автентифікованим викликам. `GET /avatar/?meta=1` повертає метадані аватара за тим самим правилом.
+- Неавтентифіковані запити до будь-якого з цих маршрутів відхиляються (узгоджено із сусіднім маршрутом assistant-media). Це запобігає витоку ідентичності агента через маршрут аватара на хостах, які в іншому разі захищені.
+- Сам Control UI пересилає токен gateway як bearer-заголовок під час отримання аватарів і використовує автентифіковані blob URL, тож зображення все одно відображається в інформаційних панелях.
-Якщо ви вимкнете автентифікацію gateway (не рекомендується на спільних хостах), маршрут аватара також стане неавтентифікованим, відповідно до решти gateway.
+Якщо ви вимкнете автентифікацію gateway (не рекомендовано на спільних хостах), маршрут аватара також стане неавтентифікованим, узгоджено з рештою gateway.
## Збирання UI
@@ -333,7 +342,7 @@ Gateway обслуговує статичні файли з `dist/control-ui`.
pnpm ui:build
```
-Необов’язкова абсолютна база (коли вам потрібні фіксовані URL ресурсів):
+Необов’язкова абсолютна база (коли потрібні фіксовані URL-адреси ресурсів):
```bash
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
@@ -345,16 +354,16 @@ OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
pnpm ui:dev
```
-Потім вкажіть у UI URL вашого Gateway WS (наприклад, `ws://127.0.0.1:18789`).
+Потім укажіть для UI URL-адресу вашого Gateway WS (наприклад, `ws://127.0.0.1:18789`).
## Налагодження/тестування: dev server + віддалений Gateway
-Інтерфейс керування — це статичні файли; ціль WebSocket налаштовується і може
-відрізнятися від HTTP-походження. Це зручно, коли ви хочете мати dev server Vite
-локально, але Gateway працює деінде.
+Control UI — це статичні файли; ціль WebSocket можна налаштувати, і вона може
+відрізнятися від HTTP origin. Це зручно, коли ви хочете локальний dev server Vite,
+але Gateway працює деінде.
1. Запустіть dev server UI: `pnpm ui:dev`
-2. Відкрийте URL такого вигляду:
+2. Відкрийте URL-адресу на кшталт:
```text
http://localhost:5173/?gatewayUrl=ws://:18789
@@ -368,20 +377,20 @@ http://localhost:5173/?gatewayUrl=wss://:18789#token=