Voice Wake(全局唤醒词)

OpenClaw 把唤醒词作为单一的全局列表,由 Gateway 统一管理。

  • 没有针对单个 Node 的自定义唤醒词
  • 任何 Node 或应用的界面都可以编辑这个列表;修改会由 Gateway 保存并广播给所有设备。
  • 每个设备仍然保留自己的 Voice Wake 启用/禁用开关(本地体验和权限各不相同)。

存储位置(Gateway 主机)

唤醒词存储在 Gateway 机器上的:

  • ~/.openclaw/settings/voicewake.json

数据结构:

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

协议

方法

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

注意事项:

  • 触发词会被规范化处理(去除空格、丢弃空值)。空列表会回退到默认值。
  • 为了安全会强制执行限制(数量和长度上限)。

事件

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

谁会收到这个事件:

  • 所有 WebSocket 客户端(macOS 应用、WebChat 等)
  • 所有已连接的 Node(iOS/Android),并且在 Node 连接时也会推送一次”当前状态”。

客户端行为

macOS 应用

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

iOS Node

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

Android Node

  • 在设置中提供唤醒词编辑器。
  • 通过 Gateway WebSocket 调用 voicewake.set,这样编辑会同步到所有设备。