Nodes and media
Sprachaktivierung
OpenClaw behandelt Wake Words als eine einzige globale Liste, die dem Gateway gehört.
- Es gibt keine benutzerdefinierten Wake Words pro Node.
- Jede Node-/App-UI kann die Liste bearbeiten; Änderungen werden vom Gateway gespeichert und an alle übertragen.
- macOS und iOS behalten lokale Schalter zum Aktivieren/Deaktivieren von Voice Wake bei (lokale UX und Berechtigungen unterscheiden sich).
- Android lässt Voice Wake derzeit deaktiviert und verwendet einen manuellen Mikrofonablauf im Voice-Tab.
Speicherung (Gateway-Host)
Wake Words und Routing-Regeln werden in der Gateway-Zustandsdatenbank gespeichert:
~/.openclaw/state/openclaw.sqlite
Die aktiven Tabellen sind:
voicewake_triggersvoicewake_routing_configvoicewake_routing_routes
Alte Dateien settings/voicewake.json und settings/voicewake-routing.json sind
nur Eingaben für Doctor-Migrationen; zur Laufzeit werden die SQLite-Tabellen gelesen und geschrieben.
Protokoll
Methoden
voicewake.get→{ triggers: string[] }voicewake.setmit Parametern{ triggers: string[] }→{ triggers: string[] }
Hinweise:
- Trigger werden normalisiert (gekürzt, leere Einträge entfernt). Leere Listen fallen auf Standardwerte zurück.
- Grenzwerte werden aus Sicherheitsgründen erzwungen (Obergrenzen für Anzahl/Länge).
Routing-Methoden (Trigger → Ziel)
voicewake.routing.get→{ config: VoiceWakeRoutingConfig }voicewake.routing.setmit Parametern{ config: VoiceWakeRoutingConfig }→{ config: VoiceWakeRoutingConfig }
Form von VoiceWakeRoutingConfig:
{ "version": 1, "defaultTarget": { "mode": "current" }, "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }], "updatedAtMs": 1730000000000}Routenziele unterstützen genau eines von:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
Ereignisse
voicewake.changed-Payload{ triggers: string[] }voicewake.routing.changed-Payload{ config: VoiceWakeRoutingConfig }
Wer sie empfängt:
- Alle WebSocket-Clients (macOS-App, WebChat usw.)
- Alle verbundenen Nodes (iOS/Android), außerdem beim Verbinden einer Node als anfänglicher Push des „aktuellen Zustands“.
Client-Verhalten
macOS-App
- Verwendet die globale Liste, um
VoiceWakeRuntime-Trigger zu steuern. - Das Bearbeiten von „Trigger words“ in den Voice-Wake-Einstellungen ruft
voicewake.setauf und verlässt sich anschließend auf die Übertragung, um andere Clients synchron zu halten.
iOS-Node
- Verwendet die globale Liste für die Trigger-Erkennung von
VoiceWakeManager. - Das Bearbeiten von Wake Words in den Einstellungen ruft
voicewake.setauf (über den Gateway-WS) und hält außerdem die lokale Wake-Word-Erkennung reaktionsschnell.
Android-Node
- Voice Wake ist derzeit in Android-Laufzeit/Einstellungen deaktiviert.
- Android-Voice verwendet im Voice-Tab eine manuelle Mikrofonaufnahme statt Wake-Word-Triggern.
Verwandt
Was this useful?