WebChat (interfejs Gateway WebSocket)
Status: interfejs czatu SwiftUI na macOS/iOS komunikuje się bezpośrednio z Gateway WebSocket.Co to jest
- Natywny interfejs czatu dla gateway (bez osadzonej przeglądarki i bez lokalnego serwera statycznego).
- Używa tych samych sesji i zasad routingu co inne kanały.
- Deterministyczny routing: odpowiedzi zawsze wracają do WebChat.
Szybki start
- Uruchom gateway.
- Otwórz interfejs WebChat (aplikacja macOS/iOS) albo kartę czatu w Control UI.
- Upewnij się, że skonfigurowano prawidłową ścieżkę uwierzytelniania gateway (domyślnie współdzielony sekret, nawet na loopback).
Jak to działa (zachowanie)
- Interfejs łączy się z Gateway WebSocket i używa
chat.history,chat.sendorazchat.inject. chat.historyjest ograniczane dla stabilności: Gateway może przycinać długie pola tekstowe, pomijać ciężkie metadane i zastępować zbyt duże wpisy komunikatem[chat.history omitted: message too large].chat.historyjest także normalizowane do wyświetlania: inline tagi dyrektyw dostarczania takie jak[[reply_to_*]]i[[audio_as_voice]], ładunki XML wywołań narzędzi w postaci zwykłego tekstu (w tym<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>oraz obcięte bloki wywołań narzędzi), a także wyciekłe tokeny sterujące modelem w ASCII/pełnoszerokie są usuwane z widocznego tekstu, a wpisy asystenta, których cały widoczny tekst jest dokładnie cichym tokenemNO_REPLY/no_reply, są pomijane.chat.injectdopisuje notatkę asystenta bezpośrednio do transkryptu i rozsyła ją do interfejsu (bez uruchamiania agenta).- Przerwane uruchomienia mogą pozostawiać częściowe dane wyjściowe asystenta widoczne w interfejsie.
- Gateway utrwala częściowy tekst asystenta z przerwanych uruchomień w historii transkryptu, gdy istnieje buforowane wyjście, i oznacza te wpisy metadanymi przerwania.
- Historia jest zawsze pobierana z gateway (bez lokalnego obserwowania plików).
- Jeśli gateway jest nieosiągalny, WebChat działa tylko do odczytu.
Panel narzędzi agentów w Control UI
- Panel Tools w
/agentsw Control UI ma dwa oddzielne widoki:- Available Right Now używa
tools.effective(sessionKey=...)i pokazuje, czego bieżąca sesja faktycznie może używać w runtime, w tym narzędzi rdzenia, pluginów i narzędzi należących do kanałów. - Tool Configuration używa
tools.catalogi pozostaje skupiony na profilach, nadpisaniach i semantyce katalogu.
- Available Right Now używa
- Dostępność runtime jest ograniczona do sesji. Przełączanie sesji na tym samym agencie może zmienić listę Available Right Now.
- Edytor konfiguracji nie implikuje dostępności runtime; efektywny dostęp nadal podlega pierwszeństwu polityk
(
allow/deny, nadpisania dla agenta oraz dostawcy/kanału).
Użycie zdalne
- Tryb zdalny tuneluje Gateway WebSocket przez SSH/Tailscale.
- Nie musisz uruchamiać osobnego serwera WebChat.
Dokumentacja konfiguracji (WebChat)
Pełna konfiguracja: Konfiguracja Opcje WebChat:gateway.webchat.chatHistoryMaxChars: maksymalna liczba znaków dla pól tekstowych w odpowiedziachchat.history. Gdy wpis transkryptu przekroczy ten limit, Gateway przycina długie pola tekstowe i może zastąpić zbyt duże wiadomości placeholderem. Klient może też wysłaćmaxCharsdla pojedynczego żądania, aby nadpisać tę wartość domyślną dla jednego wywołaniachat.history.
gateway.port,gateway.bind: host/port WebSocket.gateway.auth.mode,gateway.auth.token,gateway.auth.password: uwierzytelnianie WebSocket współdzielonym sekretem.gateway.auth.allowTailscale: karta czatu przeglądarkowego Control UI może używać nagłówków tożsamości Tailscale Serve, gdy opcja jest włączona.gateway.auth.mode: "trusted-proxy": uwierzytelnianie reverse proxy dla klientów przeglądarkowych za proxy uwzględniającym tożsamość ze źródłem spoza loopback (zobacz Trusted Proxy Auth).gateway.remote.url,gateway.remote.token,gateway.remote.password: docelowy zdalny gateway.session.*: przechowywanie sesji i domyślne klucze główne.