Nodes and media

Ativação por voz

OpenClaw trata palavras de ativação como uma única lista global pertencente ao Gateway.

  • Não há palavras de ativação personalizadas por nó.
  • Qualquer interface de nó/app pode editar a lista; as alterações são persistidas pelo Gateway e transmitidas para todos.
  • macOS e iOS mantêm alternâncias locais para Voice Wake ativado/desativado (a UX local + permissões diferem).
  • No momento, o Android mantém o Voice Wake desativado e usa um fluxo manual de microfone na aba Voz.

Armazenamento (host do Gateway)

Palavras de ativação e regras de roteamento são armazenadas no banco de dados de estado do gateway:

  • ~/.openclaw/state/openclaw.sqlite

As tabelas ativas são:

  • voicewake_triggers
  • voicewake_routing_config
  • voicewake_routing_routes

Arquivos legados settings/voicewake.json e settings/voicewake-routing.json são apenas entradas de migração do doctor; em tempo de execução, a leitura e a escrita usam as tabelas SQLite.

Protocolo

Métodos

  • voicewake.get{ triggers: string[] }
  • voicewake.set com parâmetros { triggers: string[] }{ triggers: string[] }

Observações:

  • Os gatilhos são normalizados (espaços removidos nas extremidades, vazios descartados). Listas vazias retornam aos padrões.
  • Limites são aplicados por segurança (limites de contagem/comprimento).

Métodos de roteamento (gatilho → destino)

  • voicewake.routing.get{ config: VoiceWakeRoutingConfig }
  • voicewake.routing.set com parâmetros { config: VoiceWakeRoutingConfig }{ config: VoiceWakeRoutingConfig }

Formato de VoiceWakeRoutingConfig:

json
{  "version": 1,  "defaultTarget": { "mode": "current" },  "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }],  "updatedAtMs": 1730000000000}

Os destinos de rota oferecem suporte a exatamente um dos seguintes:

  • { "mode": "current" }
  • { "agentId": "main" }
  • { "sessionKey": "agent:main:main" }

Eventos

  • payload de voicewake.changed { triggers: string[] }
  • payload de voicewake.routing.changed { config: VoiceWakeRoutingConfig }

Quem o recebe:

  • Todos os clientes WebSocket (app macOS, WebChat etc.)
  • Todos os nós conectados (iOS/Android), e também ao conectar um nó como um envio inicial de "estado atual".

Comportamento do cliente

App macOS

  • Usa a lista global para controlar os gatilhos de VoiceWakeRuntime.
  • Editar "Palavras de gatilho" nas configurações de Voice Wake chama voicewake.set e então depende da transmissão para manter outros clientes sincronizados.

Nó iOS

  • Usa a lista global para a detecção de gatilhos de VoiceWakeManager.
  • Editar Palavras de ativação nas Configurações chama voicewake.set (pelo WS do Gateway) e também mantém a detecção local de palavras de ativação responsiva.

Nó Android

  • Voice Wake está atualmente desativado no runtime/Configurações do Android.
  • A voz no Android usa captura manual de microfone na aba Voz em vez de gatilhos por palavra de ativação.

Relacionado

Was this useful?
On this page

On this page