- macOS: локальный переключатель включения и отключения голосовой активации. Требуется macOS 26+; подробности о среде выполнения и PTT см. в разделе Голосовая активация (macOS).
- iOS: локальный переключатель включения и отключения голосовой активации в Settings.
- Android: локальный переключатель включения и отключения голосовой активации и редактор фраз активации в Settings → Voice. Требуется встроенное распознавание речи на устройстве Android.
Хранение
Фразы активации и правила маршрутизации хранятся в базе данных состояния Gateway, по умолчанию~/.openclaw/state/openclaw.sqlite (можно переопределить с помощью OPENCLAW_STATE_DIR), в таблицах voicewake_triggers, voicewake_routing_config, voicewake_routing_routes. Устаревшие settings/voicewake.json и settings/voicewake-routing.json используются только как входные данные миграции openclaw doctor --fix — среда выполнения никогда их не считывает.
Протокол
Список триггеров
voicewake.set нормализует входные данные: удаляет пробелы по краям, отбрасывает пустые элементы, оставляет не более 32 триггеров и сокращает каждый до 64 кодовых единиц UTF-16, не разделяя суррогатные пары. Если результат пуст, используются встроенные значения по умолчанию (openclaw, claude, computer).
Маршрутизация (от триггера к цели)
target поддерживает ровно один из следующих вариантов:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
"Hey, Bot!!" и "hey bot" совпадают и считаются дубликатами). Эта нормализация строже простого удаления пробелов по краям, применяемого к приведённому выше глобальному списку триггеров.
События
Оба события рассылаются каждому клиенту WebSocket с областью доступа на чтение (приложению macOS, WebChat и аналогичным клиентам), а также каждому подключённому узлу. Узел также получает оба события в виде исходного моментального снимка сразу после подключения.
Поведение клиентов
- macOS: вызывает
voicewake.set/voicewake.getи отслеживаетvoicewake.changed, чтобы сохранять синхронизацию с другими клиентами. - iOS: вызывает
voicewake.set/voicewake.getи отслеживаетvoicewake.changed, чтобы локальное обнаружение фраз активации своевременно реагировало на изменения. - Android: вызывает
voicewake.set/voicewake.get, отслеживаетvoicewake.changedи при включении объявляетvoiceWake. Распознавание выполняется на устройстве и только на переднем плане; оно приостанавливается, пока аудио используется режимом Talk, ручной диктовкой, записью голосовой заметки или озвучиванием сообщения.