macOS companion app
WebChat (macOS)
La aplicación de la barra de menús de macOS integra la interfaz de WebChat como una vista nativa de SwiftUI. Se conecta al Gateway y utiliza de forma predeterminada la sesión principal del agente seleccionado (main, o global cuando session.scope es global).
La ventana de chat completa es una vista dividida nativa:
- Barra lateral de sesiones: lista de sesiones con búsqueda, secciones de sesiones fijadas y recientes, indicadores de mensajes no leídos y menús contextuales para fijar o desfijar, copiar la clave de sesión y eliminar. Un botón de la barra de herramientas (o Cmd-N) crea una sesión nueva real mediante
sessions.create. - Barra de herramientas de la ventana: anillo de uso del contexto (tokens y coste de la sesión, con una acción compacta), selector del nivel de razonamiento, selector de modelo y menú de acciones de sesión (nueva sesión, actualizar, copiar la clave de sesión, exportar la transcripción, compactar y borrar el historial).
- Transcripción y editor: los mensajes del asistente se muestran como texto sin formato con un avatar y los mensajes del usuario, como burbujas con el color de énfasis. Al escribir
/, se abre el autocompletado de comandos con barra diagonal proporcionado porcommands.list, con navegación mediante las teclas de flecha, Tab, Return y Escape. Haz clic con el botón derecho en un mensaje para copiarlo.
El panel de chat rápido anclado a la barra de menús conserva el diseño compacto de una sola columna con selectores en línea.
- Modo local: se conecta directamente al WebSocket del Gateway local.
- Modo remoto: reenvía el puerto de control del Gateway mediante SSH y utiliza ese túnel como plano de datos.
Inicio y depuración
-
Manual: menú Lobster -> "Open Chat".
-
Apertura automática para pruebas:
bash dist/OpenClaw.app/Contents/MacOS/OpenClaw --chat(
--webchatse acepta como alias heredado). -
Registros:
./scripts/clawlog.sh(subsistemaai.openclaw, categoríaWebChatSwiftUI).
Cómo está conectado
- Plano de datos: métodos WS del Gateway
chat.history,chat.send,chat.abort,chat.injecty eventoschat,agent,presence,tick,health. chat.historydevuelve una transcripción normalizada para su visualización: las etiquetas de directivas en línea se eliminan del texto visible; se eliminan las cargas útiles XML de llamadas a herramientas en texto sin formato (<tool_call>,<function_call>,<tool_calls>,<function_calls>, incluidos los bloques truncados) y los tokens de control del modelo filtrados; se omiten las filas del asistente que contienen únicamente tokens de silencio, como exactamenteNO_REPLY/no_reply; y las filas demasiado grandes pueden sustituirse por un marcador de posición truncado.- Sesión: utiliza de forma predeterminada la sesión principal indicada anteriormente; la interfaz puede cambiar entre sesiones.
- La incorporación utiliza una sesión específica para mantener separada la configuración de la primera ejecución.
- Caché sin conexión: la aplicación mantiene una pequeña caché de solo lectura de las sesiones de chat y transcripciones recientes de cada Gateway (
~/Library/Application Support/OpenClaw/chat-cache.sqlite): al abrirse desde cero, muestra inmediatamente la última transcripción conocida y se actualiza cuando responde el Gateway; además, los chats recientes siguen disponibles para su consulta mientras no haya conexión (el envío permanece deshabilitado hasta que se restablece la conexión).
Superficie de seguridad
- El modo remoto solo reenvía el puerto de control WebSocket del Gateway mediante SSH.
Limitaciones conocidas
- La interfaz está optimizada para sesiones de chat, no como un entorno aislado completo de navegador.
Contenido relacionado
Was this useful?