Saltar al contenido principal
Las palabras de activación son una lista global propiedad del Gateway; no hay listas personalizadas por nodo. Cualquier nodo o interfaz de app puede editar la lista; el Gateway conserva el cambio y lo transmite a todos los clientes conectados.
  • macOS: interruptor local para activar/desactivar Voice Wake. Requiere macOS 26+; consulta Activación por voz (macOS) para detalles de runtime/PTT.
  • iOS: interruptor local para activar/desactivar Voice Wake en Configuración.
  • Android: Voice Wake se desactiva forzosamente en runtime. La pestaña Voz usa captura manual del micrófono en lugar de activadores por palabra de activación.

Almacenamiento

Las palabras de activación y las reglas de enrutamiento viven en la base de datos de estado del Gateway, ~/.openclaw/state/openclaw.sqlite de forma predeterminada (se puede sobrescribir con OPENCLAW_STATE_DIR), en las tablas voicewake_triggers, voicewake_routing_config, voicewake_routing_routes. Los archivos heredados settings/voicewake.json y settings/voicewake-routing.json son solo entradas de migración para openclaw doctor --fix; el runtime nunca los lee.

Protocolo

Lista de activadores

MétodoParámetrosResultado
voicewake.getninguno{ triggers: string[] }
voicewake.set{ triggers: string[] }{ triggers: string[] }
voicewake.set normaliza la entrada: recorta espacios en blanco, elimina entradas vacías, conserva como máximo 32 activadores y trunca cada uno a 64 caracteres. Un resultado vacío vuelve a los valores predeterminados integrados (openclaw, claude, computer).

Enrutamiento (activador a destino)

MétodoParámetrosResultado
voicewake.routing.getninguno{ 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 uno de estos:
  • { "mode": "current" }
  • { "agentId": "main" }
  • { "sessionKey": "agent:main:main" }
Límites: como máximo 32 rutas, texto del activador de como máximo 64 caracteres. Los activadores de ruta se normalizan para coincidencia y detección de duplicados convirtiendo a minúsculas, quitando la puntuación inicial/final de cada palabra y colapsando los espacios en blanco ("Hey, Bot!!" y "hey bot" coinciden y cuentan como duplicados); esta es una normalización más estricta que el recorte simple usado para la lista global de activadores anterior.

Eventos

EventoCarga útil
voicewake.changed{ triggers: string[] }
voicewake.routing.changed{ config: VoiceWakeRoutingConfig }
Ambos se transmiten a todos los clientes WebSocket con ámbito de lectura (app de macOS, WebChat y similares) y a todos los nodos conectados. Un nodo también recibe ambos como envío de instantánea inicial justo después de conectarse.

Comportamiento del cliente

  • macOS: llama a voicewake.set/voicewake.get y escucha voicewake.changed para mantenerse sincronizado con otros clientes.
  • iOS: llama a voicewake.set/voicewake.get y escucha voicewake.changed para mantener ágil la detección local de palabras de activación.
  • Android: existen VoiceWakeMode (Off/Foreground/Always) y código de sincronización con el Gateway, pero la app fuerza el modo a Off al iniciar; Voice Wake no está disponible actualmente desde Configuración de Android.

Relacionado