Voice Wake (Global Wake Words)

OpenClaw는 웨이크 워드를 Gateway가 소유한 단일 전역 목록으로 취급합니다.

  • Node별 사용자 지정 웨이크 워드는 없습니다.
  • 모든 node/앱 UI가 목록을 편집할 수 있습니다; 변경 사항은 Gateway에 의해 유지되고 모두에게 브로드캐스트됩니다.
  • 각 장치는 여전히 자체 Voice Wake 활성화/비활성화 토글을 유지합니다(로컬 UX + 권한이 다름).

저장소 (Gateway 호스트)

웨이크 워드는 Gateway 머신에 다음 위치에 저장됩니다:

  • ~/.openclaw/settings/voicewake.json

구조:

{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }

프로토콜

메서드

  • voicewake.get{ triggers: string[] }
  • voicewake.set 매개변수 { triggers: string[] }{ triggers: string[] }

참고:

  • 트리거는 정규화됩니다(트림, 빈 항목 삭제). 빈 목록은 기본값으로 폴백합니다.
  • 안전을 위해 제한이 적용됩니다(수/길이 제한).

이벤트

  • voicewake.changed 페이로드 { triggers: string[] }

수신자:

  • 모든 WebSocket 클라이언트(macOS 앱, WebChat 등)
  • 연결된 모든 node(iOS/Android), node 연결 시에도 초기 "현재 상태" 푸시로 제공

클라이언트 동작

macOS 앱

  • 전역 목록을 사용하여 VoiceWakeRuntime 트리거를 게이트합니다.
  • Voice Wake 설정에서 "Trigger words"를 편집하면 voicewake.set을 호출하고 브로드캐스트에 의존하여 다른 클라이언트와 동기화합니다.

iOS node

  • VoiceWakeManager 트리거 감지를 위해 전역 목록을 사용합니다.
  • Settings에서 Wake Words를 편집하면 voicewake.set을 호출하고(Gateway WS를 통해) 로컬 웨이크 워드 감지도 반응적으로 유지합니다.

Android node

  • Settings에서 Wake Words 편집기를 노출합니다.
  • Gateway WS를 통해 voicewake.set을 호출하여 편집 내용이 모든 곳에서 동기화되도록 합니다.