- 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 등)와 연결된 모든 Node에 브로드캐스트됩니다. 또한 Node는 연결 직후 두 이벤트를 초기 스냅샷 푸시로 받습니다.
클라이언트 동작
- macOS:
voicewake.set/voicewake.get을 호출하고 다른 클라이언트와 동기화된 상태를 유지하기 위해voicewake.changed을 수신합니다. - iOS:
voicewake.set/voicewake.get을 호출하고 로컬 웨이크 워드 감지가 즉시 반응하도록voicewake.changed을 수신합니다. - Android:
voicewake.set/voicewake.get을 호출하고,voicewake.changed을 수신하며, 활성화된 동안voiceWake을 알립니다. 인식은 기기 내에서 포그라운드 상태일 때만 수행됩니다. Talk, 수동 받아쓰기, 음성 메모 캡처 또는 메시지 음성 기능이 오디오를 사용 중일 때는 일시 중지됩니다.