語音喚醒(全域喚醒詞)

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 語音改用語音分頁中的手動麥克風擷取,而非喚醒詞觸發。