Nodes and media
音声ウェイク
OpenClaw は ウェイクワードを Gateway が所有する単一のグローバルリストとして扱います。
- ノードごとのカスタムウェイクワードはありません。
- どのノード/アプリ UI でもリストを編集できます。変更は Gateway によって永続化され、全員にブロードキャストされます。
- macOS と iOS はローカルの Voice Wake の有効/無効トグルを保持します(ローカル UX と権限が異なるため)。
- Android は現在 Voice Wake をオフのままにしており、音声タブで手動マイクフローを使用します。
ストレージ(Gateway ホスト)
ウェイクワードは Gateway マシン上の次の場所に保存されます。
~/.openclaw/settings/voicewake.json
形式:
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }
プロトコル
メソッド
voicewake.get→{ triggers: string[] }- params
{ triggers: string[] }を指定したvoicewake.set→{ triggers: string[] }
注:
- トリガーは正規化されます(トリムされ、空は削除されます)。空のリストはデフォルトにフォールバックします。
- 安全のため制限が適用されます(数/長さの上限)。
ルーティングメソッド(トリガー → ターゲット)
voicewake.routing.get→{ config: VoiceWakeRoutingConfig }- params
{ config: VoiceWakeRoutingConfig }を指定したvoicewake.routing.set→{ config: VoiceWakeRoutingConfig }
VoiceWakeRoutingConfig の形式:
{
"version": 1,
"defaultTarget": { "mode": "current" },
"routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }],
"updatedAtMs": 1730000000000
}
ルートターゲットは、次のいずれか 1 つだけをサポートします。
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
イベント
voicewake.changedペイロード{ triggers: string[] }voicewake.routing.changedペイロード{ config: VoiceWakeRoutingConfig }
受信者:
- すべての WebSocket クライアント(macOS アプリ、WebChat など)
- 接続中のすべてのノード(iOS/Android)。また、ノード接続時にも初期の「現在の状態」プッシュとして送信されます。
クライアントの動作
macOS アプリ
- グローバルリストを使用して
VoiceWakeRuntimeトリガーを制御します。 - Voice Wake 設定で「トリガーワード」を編集すると
voicewake.setが呼び出され、その後ブロードキャストによって他のクライアントとの同期が保たれます。
iOS ノード
- グローバルリストを
VoiceWakeManagerのトリガー検出に使用します。 - 設定でウェイクワードを編集すると(Gateway WS 経由で)
voicewake.setが呼び出され、ローカルのウェイクワード検出も応答性を保ちます。
Android ノード
- Voice Wake は現在 Android ランタイム/設定で無効です。
- Android の音声機能は、ウェイクワードトリガーの代わりに音声タブの手動マイクキャプチャを使用します。