---
read_when:
    - Изменение поведения или значений по умолчанию для слов голосовой активации
    - Добавление новых платформ Node, которым требуется синхронизация фразы активации
summary: Глобальные слова активации голосом (управляемые Gateway) и их синхронизация между узлами
title: Голосовая активация
x-i18n:
    generated_at: "2026-07-13T19:55:53Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: a8a8c7a8bb2ee5bbc57d9141cd8f2176246cc61952b0ed42257f83af2c777427
    source_path: nodes/voicewake.md
    workflow: 16
---

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

- **macOS**: локальный переключатель включения и отключения голосовой активации. Требуется macOS 26+; сведения о работе функции и режиме PTT см. в разделе [Голосовая активация (macOS)](/ru/platforms/mac/voicewake).
- **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` и не обрабатывает обновления слов активации.

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

- [Режим разговора](/ru/nodes/talk)
- [Аудио и голосовые заметки](/ru/nodes/audio)
- [Анализ мультимедиа](/ru/nodes/media-understanding)
