Nodes and media
Activación por voz
Las palabras de activación son una única lista global propiedad del Gateway; no hay listas personalizadas por nodo. Cualquier nodo o interfaz de usuario de una aplicación puede editar la lista; el Gateway conserva el cambio y lo transmite a todos los clientes conectados.
- macOS: interruptor local para activar o desactivar la activación por voz. Requiere macOS 26+; consulte Activación por voz (macOS) para obtener detalles sobre el entorno de ejecución/PTT.
- iOS: interruptor local para activar o desactivar la activación por voz en Settings.
- Android: interruptor local para activar o desactivar la activación por voz y editor de palabras de activación en Settings → Voice. Requiere el reconocimiento de voz en el dispositivo de Android.
Almacenamiento
Las palabras de activación y las reglas de enrutamiento residen en la base de datos de estado del Gateway, ~/.openclaw/state/openclaw.sqlite de forma predeterminada (se puede sustituir con OPENCLAW_STATE_DIR), en las tablas voicewake_triggers, voicewake_routing_config y voicewake_routing_routes. Los archivos heredados settings/voicewake.json y settings/voicewake-routing.json son únicamente entradas de migración para openclaw doctor --fix; el entorno de ejecución nunca los lee.
Protocolo
Lista de activadores
| Método | Parámetros | Resultado |
|---|---|---|
voicewake.get |
ninguno | { triggers: string[] } |
voicewake.set |
{ triggers: string[] } |
{ triggers: string[] } |
voicewake.set normaliza la entrada: elimina los espacios en blanco al principio y al final, descarta las entradas vacías, conserva un máximo de 32 activadores y trunca cada uno a 64 unidades de código UTF-16 sin dividir pares suplentes. Si el resultado está vacío, se utilizan los valores predeterminados integrados (openclaw, claude, computer).
Enrutamiento (del activador al destino)
| Método | Parámetros | Resultado |
|---|---|---|
voicewake.routing.get |
ninguno | { config: VoiceWakeRoutingConfig } |
voicewake.routing.set |
{ config: VoiceWakeRoutingConfig } |
{ config: VoiceWakeRoutingConfig } |
{ "version": 1, "defaultTarget": { "mode": "current" }, "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }], "updatedAtMs": 1730000000000}Cada target de ruta admite exactamente una de las siguientes opciones:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
Límites: un máximo de 32 rutas y texto del activador de hasta 64 caracteres. Los activadores de ruta se normalizan para detectar coincidencias y duplicados convirtiéndolos a minúsculas, eliminando la puntuación inicial y final de cada palabra y contrayendo los espacios en blanco ("Hey, Bot!!" y "hey bot" coinciden y se consideran duplicados); esta normalización es más estricta que la simple eliminación de espacios iniciales y finales utilizada para la lista global de activadores anterior.
Eventos
| Evento | Carga útil |
|---|---|
voicewake.changed |
{ triggers: string[] } |
voicewake.routing.changed |
{ config: VoiceWakeRoutingConfig } |
Ambos se transmiten a todos los clientes WebSocket con ámbito de lectura (la aplicación para macOS, WebChat y similares) y a todos los nodos conectados. Cada nodo también recibe ambos como una instantánea inicial inmediatamente después de conectarse.
Comportamiento de los clientes
- macOS: llama a
voicewake.set/voicewake.gety escuchavoicewake.changedpara mantenerse sincronizado con otros clientes. - iOS: llama a
voicewake.set/voicewake.gety escuchavoicewake.changedpara mantener ágil la detección local de palabras de activación. - Android: llama a
voicewake.set/voicewake.get, escuchavoicewake.changedy anunciavoiceWakemientras está habilitado. El reconocimiento permanece en el dispositivo y funciona únicamente en primer plano; se pausa mientras Talk, el dictado manual, la captura de notas de voz o la reproducción de mensajes por voz controlan el audio.