6.9 KiB
6.9 KiB
| read_when | summary | title | x-i18n | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Статичний хост WebChat для loopback і використання Gateway WS для інтерфейсу чату | WebChat |
|
WebChat (інтерфейс Gateway WebSocket)
Статус: чат-інтерфейс SwiftUI для macOS/iOS напряму взаємодіє з Gateway WebSocket.
Що це таке
- Нативний чат-інтерфейс для gateway (без вбудованого браузера і без локального статичного сервера).
- Використовує ті самі сеанси та правила маршрутизації, що й інші канали.
- Детермінована маршрутизація: відповіді завжди повертаються до WebChat.
Швидкий старт
- Запустіть gateway.
- Відкрийте інтерфейс WebChat (застосунок macOS/iOS) або вкладку чату в Control UI.
- Переконайтеся, що налаштовано дійсний шлях автентифікації 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.*: сховище сеансів і типові значення основного ключа.