ボイスウェイク(グローバルウェイクワード)

OpenClaw はウェイクワードを Gateway が管理する単一のグローバルリストとして扱います。

  • ノードごとのカスタムウェイクワードはありません
  • 任意のノード/アプリ UI でリストを編集できます。変更は Gateway によって永続化され、全員にブロードキャストされます。
  • macOS と iOS はローカルのボイスウェイク有効/無効トグルを保持します(ローカル UX とパーミッションは異なります)。
  • Android は現在ボイスウェイクをオフにしており、Voice タブで手動マイクフローを使用します。

ストレージ(Gateway ホスト)

ウェイクワードは Gateway マシンに保存されます。

  • ~/.openclaw/settings/voicewake.json

形式:

{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }

プロトコル

メソッド

  • voicewake.get{ triggers: string[] }
  • voicewake.set(パラメータ { triggers: string[] })→ { triggers: string[] }

補足:

  • トリガーは正規化されます(トリミング、空文字の除去)。空のリストはデフォルトにフォールバックします。
  • 安全性のためカウント/長さの上限が適用されます。

イベント

  • voicewake.changed ペイロード { triggers: string[] }

受信先:

  • すべての WebSocket クライアント(macOS アプリ、WebChat など)
  • 接続中のすべてのノード(iOS/Android)。ノード接続時に初期状態として「現在の状態」もプッシュされます。

クライアントの動作

macOS アプリ

  • グローバルリストを使用して VoiceWakeRuntime のトリガーを制御します。
  • ボイスウェイク設定の「Trigger words」を編集すると voicewake.set が呼ばれ、ブロードキャストで他のクライアントと同期されます。

iOS ノード

  • VoiceWakeManager のトリガー検出にグローバルリストを使用します。
  • 設定の Wake Words を編集すると、Gateway WS 経由で voicewake.set が呼ばれ、ローカルのウェイクワード検出も応答性を維持します。

Android ノード

  • Android のランタイム/設定ではボイスウェイクは現在無効です。
  • Android の音声はウェイクワードトリガーの代わりに Voice タブで手動マイクキャプチャを使用します。