Skip to content

Voice Wake(全局唤醒词)

OpenClaw 将唤醒词视为由 Gateway 管理的单一全局列表

  • 不支持每个节点自定义唤醒词。
  • 任何节点/应用的 UI 均可编辑列表;更改由 Gateway 持久化并广播给所有端。
  • macOS 和 iOS 保留本地的 Voice Wake 启用/禁用开关(本地 UX 和权限有所不同)。
  • Android 目前保持 Voice Wake 关闭,在 Voice 标签页使用手动麦克风流程。

存储(Gateway 主机)

唤醒词存储在网关主机的:

  • ~/.openclaw/settings/voicewake.json

数据结构:

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

协议

方法

  • voicewake.get{ triggers: string[] }
  • voicewake.set(参数 { triggers: string[] })→ { triggers: string[] }

注意:

  • Triggers 会被规范化(去除空白,丢弃空条目)。空列表回退到默认值。
  • 出于安全考虑,会强制执行限制(条目数量/长度上限)。

事件

  • voicewake.changed 载荷:{ triggers: string[] }

接收方:

  • 所有 WebSocket 客户端(macOS 应用、WebChat 等)
  • 所有已连接节点(iOS/Android),以及节点连接时作为"当前状态"的初始推送。

客户端行为

macOS 应用

  • 使用全局列表控制 VoiceWakeRuntime 触发器。
  • 在 Voice Wake 设置中编辑"触发词"会调用 voicewake.set,然后依赖广播保持其他客户端同步。

iOS 节点

  • 使用全局列表进行 VoiceWakeManager 触发词检测。
  • 在设置中编辑唤醒词会通过 Gateway WS 调用 voicewake.set,同时保持本地唤醒词检测响应。

Android 节点

  • Android 运行时/设置中目前禁用了 Voice Wake。
  • Android 语音使用 Voice 标签页中的手动麦克风捕获,而非唤醒词触发。