From 089dc0be427acb49a8047ba78f4ba0edd718c98d Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 24 Apr 2026 02:38:55 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/providers/openai.md | 364 ++++++++++++++++++------------------ docs/uk/web/control-ui.md | 269 +++++++++++++------------- 2 files changed, 320 insertions(+), 313 deletions(-) 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=