語音喚醒(全域喚醒詞)
OpenClaw 將喚醒詞視為一份由 Gateway 管理的全域清單。
- 沒有按節點自訂的喚醒詞。
- 任何節點/應用程式 UI 都可以編輯此清單;變更由 Gateway 持久化並廣播給所有連線端。
- macOS 和 iOS 各自保留本機的語音喚醒啟用/停用開關(本機 UX 和權限各不相同)。
- Android 目前停用語音喚醒,改在語音分頁中使用手動麥克風流程。
儲存位置(Gateway 主機)
喚醒詞儲存在 gateway 機器上:
~/.openclaw/settings/voicewake.json
結構:
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }
通訊協定
方法
voicewake.get→{ triggers: string[] }voicewake.set,參數{ triggers: string[] }→{ triggers: string[] }
注意:
- 觸發詞會標準化(去除前後空白、移除空值)。空清單退回預設值。
- 基於安全考量,數量與長度有上限。
事件
voicewake.changed,payload 為{ triggers: string[] }
接收對象:
- 所有 WebSocket 客戶端(macOS 應用程式、WebChat 等)
- 所有已連線的節點(iOS/Android),節點連線時也會收到初始的「目前狀態」推送。
客戶端行為
macOS 應用程式
- 使用全域清單控制
VoiceWakeRuntime的觸發。 - 在語音喚醒設定中編輯「觸發詞」會呼叫
voicewake.set,然後透過廣播讓其他客戶端保持同步。
iOS 節點
- 使用全域清單進行
VoiceWakeManager的觸發偵測。 - 在設定中編輯喚醒詞會呼叫
voicewake.set(透過 Gateway WS),同時維持本機喚醒詞偵測的即時性。
Android 節點
- Android 的 runtime/設定目前停用語音喚醒。
- Android 語音改用語音分頁中的手動麥克風擷取,而非喚醒詞觸發。