Nodes and media

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

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

  • macOS: локальный переключатель включения и отключения голосовой активации. Требуется macOS 26+; сведения о работе функции и режиме PTT см. в разделе Голосовая активация (macOS).
  • iOS: локальный переключатель включения и отключения голосовой активации в настройках.
  • 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": "robot wake", "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 и не обрабатывает обновления слов активации.

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

Was this useful?
On this page

On this page