Nodes and media

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

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

  • macOS: локальний перемикач увімкнення/вимкнення голосової активації. Потрібна macOS 26+; подробиці про виконання/PTT див. у розділі Голосова активація (macOS).
  • iOS: локальний перемикач увімкнення/вимкнення голосової активації в налаштуваннях.
  • 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": "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.set/voicewake.get, прослуховує voicewake.changed і оголошує voiceWake, коли функцію ввімкнено. Розпізнавання відбувається лише на пристрої та лише на передньому плані; воно призупиняється, коли Talk, ручне диктування, запис голосової нотатки або озвучення повідомлення використовує аудіо.

Пов’язані матеріали

Was this useful?
On this page

On this page