Nodes and media

Голосовая активация

Фразы активации — это единый глобальный список, принадлежащий Gateway; отдельных пользовательских списков для каждого узла нет. Любой узел или интерфейс приложения может редактировать список; Gateway сохраняет изменение и рассылает его всем подключённым клиентам.

  • 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.get нет { triggers: string[] }
voicewake.set { triggers: string[] } { triggers: string[] }

voicewake.set нормализует входные данные: удаляет пробелы по краям, отбрасывает пустые элементы, оставляет не более 32 триггеров и сокращает каждый до 64 кодовых единиц UTF-16, не разделяя суррогатные пары. Если результат пуст, используются встроенные значения по умолчанию (openclaw, claude, computer).

Маршрутизация (от триггера к цели)

Метод Параметры Результат
voicewake.routing.get нет { config: VoiceWakeRoutingConfig }
voicewake.routing.set { config: VoiceWakeRoutingConfig } { config: VoiceWakeRoutingConfig }
json
{  "version": 1,  "defaultTarget": { "mode": "current" },  "routes": [{ "trigger": "фраза активации робота", "target": { "sessionKey": "agent:main:main" } }],  "updatedAtMs": 1730000000000}

Каждая цель маршрута target поддерживает ровно один из следующих вариантов:

  • { "mode": "current" }
  • { "agentId": "main" }
  • { "sessionKey": "agent:main:main" }

Ограничения: не более 32 маршрутов, текст триггера — не более 64 символов. Триггеры маршрутов нормализуются для сопоставления и выявления дубликатов: переводятся в нижний регистр, из каждого слова удаляются начальные и конечные знаки препинания, а последовательности пробельных символов сворачиваются ("Hey, Bot!!" и "hey bot" совпадают и считаются дубликатами). Эта нормализация строже простого удаления пробелов по краям, применяемого к приведённому выше глобальному списку триггеров.

События

Событие Полезная нагрузка
voicewake.changed { triggers: string[] }
voicewake.routing.changed { config: VoiceWakeRoutingConfig }

Оба события рассылаются каждому клиенту 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, ручной диктовкой, записью голосовой заметки или озвучиванием сообщения.

Связанные разделы

Was this useful?
On this page

On this page