Voice Wake(语音唤醒)(全局唤醒词)
OpenClaw 将唤醒词视为由 Gateway(网关)拥有的单个全局列表。
- 没有每个节点的自定义唤醒词。
- 任何节点/应用 UI 都可以编辑该列表;更改由 Gateway(网关)持久化并广播给所有人。
- 每个设备仍然保留自己的 Voice Wake 启用/禁用切换(本地 UX + 权限不同)。
存储(Gateway 主机)
唤醒词存储在 Gateway(网关)机器上:
- ~/.openclaw/settings/voicewake.json
结构:
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }
协议
方法
- voicewake.get → { triggers: string[] }
- voicewake.set,参数 { triggers: string[] } → { triggers: string[] }
注意事项:
- Triggers 被标准化(修剪、删除空值)。空列表回退到默认值。
- 出于安全考虑强制执行限制(计数/长度上限)。
事件
- voicewake.changed payload { triggers: string[] }
谁接收它:
- 所有 WebSocket 客户端(macOS app、WebChat 等)
- 所有连接的节点(iOS/Android),以及在节点连接时作为初始"当前状态"推送。
客户端行为
macOS app
- 使用全局列表来门控 VoiceWakeRuntime 触发器。
- 在 Voice Wake 设置中编辑"Trigger words(触发词)"会调用 voicewake.set,然后依赖广播使其他客户端保持同步。
iOS node(iOS 节点)
- 使用全局列表进行 VoiceWakeManager 触发器检测。
- 在设置中编辑 Wake Words(唤醒词)会调用 voicewake.set(通过 Gateway WS),同时也保持本地唤醒词检测的响应性。
Android node(Android 节点)
- 在设置中公开 Wake Words(唤醒词)编辑器。
- 通过 Gateway WS 调用 voicewake.set,以便编辑在所有地方同步。