Голосовое пробуждение (глобальные ключевые слова пробуждения)
OpenClaw обрабатывает ключевые слова пробуждения как единый глобальный список, принадлежащий шлюзу.
- Нет пользовательских ключевых слов пробуждения для каждого узла.
- Любой UI узла/приложения может редактировать список; изменения сохраняются шлюзом и транслируются всем.
- Каждое устройство по-прежнему сохраняет свой собственный переключатель Голосовое пробуждение включено/отключено (локальный UX + разрешения отличаются).
Хранение (хост шлюза)
Ключевые слова пробуждения хранятся на машине шлюза по адресу:
- ~/.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 и т.д.)
- Все подключенные узлы (iOS/Android), а также при подключении узла как начальный push "текущего состояния".
Поведение клиента
Приложение macOS
- Использует глобальный список для контроля триггеров VoiceWakeRuntime.
- Редактирование "Триггерных слов" в настройках голосового пробуждения вызывает voicewake.set, а затем полагается на трансляцию для синхронизации других клиентов.
Узел iOS
- Использует глобальный список для обнаружения триггеров VoiceWakeManager.
- Редактирование ключевых слов пробуждения в Настройках вызывает voicewake.set (через WS шлюза), а также сохраняет локальное обнаружение ключевых слов пробуждения отзывчивым.
Узел Android
- Предоставляет редактор ключевых слов пробуждения в Настройках.
- Вызывает voicewake.set через WS шлюза, чтобы правки синхронизировались везде.