WebChat (interface WebSocket do Gateway)
Status: a interface de chat SwiftUI do macOS/iOS se comunica diretamente com o WebSocket do Gateway.O que é
- Uma interface de chat nativa para o gateway (sem navegador embutido e sem servidor estático local).
- Usa as mesmas sessões e regras de roteamento que outros canais.
- Roteamento determinístico: as respostas sempre voltam para o WebChat.
Início rápido
- Inicie o gateway.
- Abra a interface do WebChat (app macOS/iOS) ou a aba de chat da Control UI.
- Verifique se um caminho de autenticação válido do gateway está configurado (segredo compartilhado por padrão, mesmo no loopback local).
Como funciona (comportamento)
- A interface se conecta ao WebSocket do Gateway e usa
chat.history,chat.sendechat.inject. chat.historyé limitado para estabilidade: o Gateway pode truncar campos de texto longos, omitir metadados pesados e substituir entradas grandes demais por[chat.history omitted: message too large].chat.historytambém é normalizado para exibição: tags de diretiva de entrega inline como[[reply_to_*]]e[[audio_as_voice]], cargas XML de chamada de ferramenta em texto simples (incluindo<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>e blocos truncados de chamada de ferramenta), e tokens de controle de modelo vazados em ASCII/largura total são removidos do texto visível, e entradas do assistente cujo texto visível inteiro seja apenas o token silencioso exatoNO_REPLY/no_replysão omitidas.chat.injectacrescenta uma nota do assistente diretamente à transcrição e a transmite para a interface (sem execução do agente).- Execuções abortadas podem manter saída parcial do assistente visível na interface.
- O Gateway persiste texto parcial abortado do assistente no histórico da transcrição quando existe saída em buffer, e marca essas entradas com metadados de aborto.
- O histórico é sempre buscado do gateway (sem monitoramento de arquivo local).
- Se o gateway estiver inacessível, o WebChat ficará somente leitura.
Painel de ferramentas de agentes da Control UI
- O painel Tools em
/agentsda Control UI tem duas visualizações separadas:- Disponível agora usa
tools.effective(sessionKey=...)e mostra o que a sessão atual pode realmente usar em runtime, incluindo ferramentas do core, de plugin e pertencentes ao canal. - Configuração da ferramenta usa
tools.cataloge permanece focado em perfis, substituições e semântica do catálogo.
- Disponível agora usa
- A disponibilidade em runtime é definida por sessão. Trocar de sessão no mesmo agente pode alterar a lista Disponível agora.
- O editor de configuração não implica disponibilidade em runtime; o acesso efetivo ainda segue a precedência
da política (
allow/deny, substituições por agente e por provedor/canal).
Uso remoto
- O modo remoto encapsula o WebSocket do gateway por SSH/Tailscale.
- Você não precisa executar um servidor WebChat separado.
Referência de configuração (WebChat)
Configuração completa: Configuration Opções do WebChat:gateway.webchat.chatHistoryMaxChars: contagem máxima de caracteres para campos de texto em respostaschat.history. Quando uma entrada da transcrição excede esse limite, o Gateway trunca campos de texto longos e pode substituir mensagens grandes demais por um marcador. O cliente também pode enviarmaxCharspor requisição para substituir esse padrão em uma única chamadachat.history.
gateway.port,gateway.bind: host/porta do WebSocket.gateway.auth.mode,gateway.auth.token,gateway.auth.password: autenticação WebSocket por segredo compartilhado.gateway.auth.allowTailscale: a aba de chat da Control UI no navegador pode usar cabeçalhos de identidade do Tailscale Serve quando ativado.gateway.auth.mode: "trusted-proxy": autenticação de proxy reverso para clientes de navegador atrás de uma origem de proxy fora de loopback com reconhecimento de identidade (consulte Trusted Proxy Auth).gateway.remote.url,gateway.remote.token,gateway.remote.password: destino do gateway remoto.session.*: armazenamento de sessão e padrões de chave principal.