위치 명령(노드)
TL;DR
location.get은 노드 명령입니다(node.invoke를 통해 호출).- 기본적으로 꺼져 있습니다.
- Android 앱 설정은 선택기를 사용합니다: Off / While Using.
- 별도 토글: Precise Location.
선택기인 이유(단순 스위치가 아닌 이유)
OS 권한은 다단계입니다. 앱 내에서 선택기를 노출할 수는 있지만 실제 허용 수준은 여전히 OS가 결정합니다.- iOS/macOS는 시스템 프롬프트/설정에서 While Using 또는 Always를 노출할 수 있습니다.
- Android 앱은 현재 포그라운드 위치만 지원합니다.
- 정밀 위치는 별도의 권한입니다(iOS 14+의 “Precise”, Android의 “fine” vs “coarse”).
설정 모델
노드 디바이스별:location.enabledMode:off | whileUsinglocation.preciseEnabled: bool
whileUsing을 선택하면 포그라운드 권한을 요청합니다.- OS가 요청한 수준을 거부하면, 실제로 허용된 가장 높은 수준으로 되돌리고 상태를 표시합니다.
권한 매핑(node.permissions)
선택 사항입니다. macOS 노드는 permissions 맵을 통해 location을 보고하며, iOS/Android는 이를 생략할 수 있습니다.
명령: location.get
node.invoke를 통해 호출됩니다.
매개변수(권장):
LOCATION_DISABLED: 선택기가 꺼져 있음.LOCATION_PERMISSION_REQUIRED: 요청된 모드에 필요한 권한이 없음.LOCATION_BACKGROUND_UNAVAILABLE: 앱이 백그라운드 상태인데 While Using만 허용됨.LOCATION_TIMEOUT: 시간 내에 위치를 얻지 못함.LOCATION_UNAVAILABLE: 시스템 실패 / provider 없음.
백그라운드 동작
- Android 앱은 백그라운드 상태에서
location.get을 거부합니다. - Android에서 위치를 요청할 때는 OpenClaw를 열어 둔 상태를 유지하세요.
- 다른 노드 플랫폼은 다를 수 있습니다.
모델/도구 통합
- 도구 표면:
nodes도구가location_get작업을 추가합니다(노드 필요). - CLI:
openclaw nodes location get --node <id>. - 에이전트 가이드라인: 사용자가 위치를 활성화했고 범위를 이해하는 경우에만 호출하세요.
UX 문구(권장)
- Off: “위치 공유가 비활성화되어 있습니다.”
- While Using: “OpenClaw가 열려 있을 때만.”
- Precise: “정밀 GPS 위치를 사용합니다. 대략적인 위치만 공유하려면 끄세요.”