Voice Wake (전역 Wake Words)
OpenClaw는 wake words를 Gateway가 소유하는 단일 전역 목록으로 취급합니다.- 노드별 커스텀 wake word는 없습니다.
- 어느 노드/앱 UI에서든 목록을 수정할 수 있으며, 변경 사항은 Gateway가 저장하고 모두에게 브로드캐스트합니다.
- macOS와 iOS는 로컬 Voice Wake enabled/disabled 토글을 유지합니다(로컬 UX와 권한이 다름).
- Android는 현재 Voice Wake를 끄고 Voice 탭의 수동 마이크 흐름을 사용합니다.
저장 위치(Gateway host)
Wake words는 gateway 머신의 다음 위치에 저장됩니다.~/.openclaw/settings/voicewake.json
프로토콜
메서드
voicewake.get→{ triggers: string[] }voicewake.setwith params{ triggers: string[] }→{ triggers: string[] }
- Triggers는 정규화됩니다(trim, 빈 항목 제거). 빈 목록이면 기본값으로 fallback합니다.
- 안전을 위해 개수/길이 제한이 적용됩니다.
이벤트
voicewake.changedpayload{ triggers: string[] }
- 모든 WebSocket client(macOS app, WebChat 등)
- 모든 연결된 node(iOS/Android), 그리고 node connect 시 초기 “현재 상태” push
클라이언트 동작
macOS app
- 전역 목록을 사용해
VoiceWakeRuntimetrigger를 제어합니다. - Voice Wake settings의 “Trigger words”를 수정하면
voicewake.set을 호출하고, 이후 브로드캐스트를 통해 다른 client와 동기화합니다.
iOS node
- 전역 목록을 사용해
VoiceWakeManagertrigger detection을 수행합니다. - Settings에서 Wake Words를 수정하면(Gateway WS 경유)
voicewake.set을 호출하고, 로컬 wake-word detection도 계속 반응성을 유지합니다.
Android node
- 현재 Android runtime / Settings에서는 Voice Wake가 비활성화되어 있습니다.
- Android 음성은 wake-word trigger 대신 Voice 탭의 수동 마이크 캡처를 사용합니다.