- node ごとのカスタム wake word はありません
- どの node / app UI からでも リストを編集でき、変更は gateway に保存されたうえで全体へブロードキャストされます
- macOS と iOS にはローカルの Voice Wake enabled / disabled toggle が残っています(ローカル UX と権限モデルが異なるため)
- Android は現状 Voice Wake を無効にしており、Voice タブの手動 mic フローを使います
保存場所(gateway host)
wake word は gateway マシン上の次のファイルに保存されます。~/.openclaw/settings/voicewake.json
protocol
method
voicewake.get→{ triggers: string[] }voicewake.setに{ triggers: string[] }を渡す →{ triggers: string[] }
- trigger は正規化されます(trim し、空文字は削除)。空リストになった場合はデフォルトへ戻ります
- 安全性のため、件数と長さには上限があります
event
voicewake.changedpayload{ triggers: string[] }
- すべての WebSocket client(macOS app、WebChat など)
- 接続中のすべての node(iOS / Android)。さらに node 接続時には、初期状態として現在値も push されます
client 挙動
macOS app
- グローバルリストを
VoiceWakeRuntimeの trigger 判定に使います - Voice Wake 設定で “Trigger words” を編集すると
voicewake.setを呼び、その後は broadcast によって他 client との同期を保ちます
iOS node
- グローバルリストを
VoiceWakeManagerの trigger 検出に使います - Settings で Wake Words を編集すると、Gateway WS 経由で
voicewake.setを呼び出し、同時にローカルの wake-word 検出もすぐ反映されるようにします
Android node
- Voice Wake は現在の Android runtime / Settings では無効です
- Android の voice は wake word trigger ではなく、Voice タブの手動 mic capture を使います