docs/docs/uk/web/webchat.md
2026-04-23 06:21:45 +00:00

6.9 KiB
Raw Blame History

read_when summary title x-i18n
Налагодження або налаштування доступу до WebChat
Статичний хост WebChat для loopback і використання Gateway WS для інтерфейсу чату WebChat
generated_at model provider source_hash source_path workflow
2026-04-23T06:20:01Z gpt-5.4 openai 2588be04e9ae38149bdf284bf4d75b6784d63899026d2351c4e0e7efdf05ff39 web/webchat.md 15

WebChat (інтерфейс Gateway WebSocket)

Статус: чат-інтерфейс SwiftUI для macOS/iOS напряму взаємодіє з Gateway WebSocket.

Що це таке

  • Нативний чат-інтерфейс для gateway (без вбудованого браузера і без локального статичного сервера).
  • Використовує ті самі сеанси та правила маршрутизації, що й інші канали.
  • Детермінована маршрутизація: відповіді завжди повертаються до WebChat.

Швидкий старт

  1. Запустіть gateway.
  2. Відкрийте інтерфейс WebChat (застосунок macOS/iOS) або вкладку чату в Control UI.
  3. Переконайтеся, що налаштовано дійсний шлях автентифікації gateway (типово shared-secret, навіть для loopback).

Як це працює (поведінка)

  • Інтерфейс підключається до Gateway WebSocket і використовує chat.history, chat.send та chat.inject.
  • chat.history обмежений для стабільності: Gateway може обрізати довгі текстові поля, пропускати важкі метадані та замінювати надто великі записи на [chat.history omitted: message too large].
  • chat.history також нормалізується для відображення: вбудовані теги директив доставки, такі як [[reply_to_*]] і [[audio_as_voice]], текстові XML-payload викликів інструментів (включно з <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> і обрізаними блоками викликів інструментів), а також витоки ASCII/повноширинних керівних токенів моделі прибираються з видимого тексту, а записи асистента, у яких увесь видимий текст складається лише з точного тихого токена NO_REPLY / no_reply, пропускаються.
  • chat.inject безпосередньо додає примітку асистента до transcript і транслює її в UI (без запуску агента).
  • Перервані запуски можуть залишати частковий вивід асистента видимим в UI.
  • Gateway зберігає частковий текст асистента від перерваних запусків в історії transcript, коли існує буферизований вивід, і позначає такі записи метаданими переривання.
  • Історія завжди отримується з gateway (без локального відстеження файлів).
  • Якщо gateway недоступний, WebChat доступний лише для читання.

Панель інструментів агентів у Control UI

  • Панель Tools у /agents в Control UI має два окремі подання:
    • Доступно зараз використовує tools.effective(sessionKey=...) і показує, що поточний сеанс реально може використовувати під час виконання, включно з інструментами core, Plugin і каналів.
    • Конфігурація інструментів використовує tools.catalog і залишається зосередженою на профілях, перевизначеннях і семантиці каталогу.
  • Доступність під час виконання прив’язана до сеансу. Перемикання сеансів того самого агента може змінити список Доступно зараз.
  • Редактор конфігурації не означає доступність під час виконання; фактичний доступ і далі підпорядковується пріоритету політик (allow/deny, перевизначення для окремого агента та провайдера/каналу).

Віддалене використання

  • Віддалений режим тунелює Gateway WebSocket через SSH/Tailscale.
  • Вам не потрібно запускати окремий сервер WebChat.

Довідник із конфігурації (WebChat)

Повна конфігурація: Конфігурація

Параметри WebChat:

  • gateway.webchat.chatHistoryMaxChars: максимальна кількість символів для текстових полів у відповідях chat.history. Коли запис transcript перевищує це обмеження, Gateway обрізає довгі текстові поля й може замінювати надто великі повідомлення заповнювачем. Клієнт також може надсилати maxChars на рівні запиту, щоб перевизначити це типове значення для одного виклику chat.history.

Пов’язані глобальні параметри:

  • gateway.port, gateway.bind: хост/порт WebSocket.
  • gateway.auth.mode, gateway.auth.token, gateway.auth.password: автентифікація WebSocket через shared-secret.
  • gateway.auth.allowTailscale: вкладка чату browser Control UI може використовувати заголовки ідентичності Tailscale Serve, якщо це ввімкнено.
  • gateway.auth.mode: "trusted-proxy": автентифікація через reverse proxy для browser-клієнтів за identity-aware non-loopback проксі-джерелом (див. Trusted Proxy Auth).
  • gateway.remote.url, gateway.remote.token, gateway.remote.password: ціль віддаленого gateway.
  • session.*: сховище сеансів і типові значення основного ключа.