Nodes and media
Polecenie lokalizacji
W skrócie
location.getto polecenie Node, wywoływane za pomocąnode.invokelubopenclaw nodes location get.- Domyślnie wyłączone.
- Zewnętrzne kompilacje dla systemu Android używają selektora: Wyłączone / Podczas używania / Zawsze. Kompilacje z Google Play nadal oferują opcje Wyłączone / Podczas używania.
- Dokładna lokalizacja ma osobny przełącznik.
Dlaczego selektor (a nie zwykły przełącznik)
Uprawnienia systemu operacyjnego do lokalizacji mają wiele poziomów. Dokładna lokalizacja również jest osobnym uprawnieniem systemowym (w systemie iOS 14+ „Dokładna”, w systemie Android „dokładna” i „przybliżona”). Selektor w aplikacji określa żądany tryb, ale ostatecznie to system operacyjny decyduje o faktycznie przyznanym uprawnieniu.
Model ustawień
Dla każdego urządzenia Node:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
Zachowanie interfejsu:
- Wybranie opcji
whileUsingpowoduje żądanie uprawnienia do lokalizacji na pierwszym planie. - Wybranie opcji
alwaysw zewnętrznej kompilacji dla systemu Android najpierw powoduje żądanie uprawnienia do lokalizacji na pierwszym planie, następnie wyświetla objaśnienie dostępu w tle i otwiera ustawienia aplikacji w systemie Android, aby można było osobno przyznać uprawnienie Allow all the time. - Kompilacje z Google Play nie deklarują uprawnienia do lokalizacji w tle ani nie wyświetlają opcji
always. - Jeśli system operacyjny odmówi przyznania żądanego poziomu, aplikacja powraca do najwyższego przyznanego poziomu i wyświetla stan.
Mapowanie uprawnień (node.permissions)
Opcjonalne. Node systemu macOS zgłasza location za pośrednictwem mapy permissions w node.list/node.describe; systemy iOS i Android mogą je pomijać.
Polecenie: location.get
Wywoływane za pomocą node.invoke lub pomocniczego polecenia CLI:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000Parametry:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}Flagi CLI są mapowane bezpośrednio: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Dane odpowiedzi:
{ "lat": 48.20849, "lon": 16.37208, "accuracyMeters": 12.5, "altitudeMeters": 182.0, "speedMps": 0.0, "headingDeg": 270.0, "timestamp": "2026-01-03T12:34:56.000Z", "isPrecise": true, "source": "gps|wifi|cell|unknown"}Błędy (stabilne kody):
LOCATION_DISABLED: selektor jest wyłączony.LOCATION_PERMISSION_REQUIRED: brakuje uprawnienia dla żądanego trybu.LOCATION_BACKGROUND_UNAVAILABLE: aplikacja działa w tle, ale przyznano uprawnienie tylko Podczas używania.LOCATION_TIMEOUT: nie udało się ustalić lokalizacji w wyznaczonym czasie.LOCATION_UNAVAILABLE: błąd systemu lub brak dostawców lokalizacji.
Działanie w tle
- Zewnętrzne kompilacje dla systemu Android akceptują wywołanie
location.getw tle tylko wtedy, gdy użytkownik wybrał opcjęAlways, a system Android przyznał uprawnienie do lokalizacji w tle. Istniejąca trwała usługa Node dodaje typ usługilocationi podczas działania informuje o ustawieniuLocation: Always. - Kompilacje z Google Play oraz tryb
While Usingodrzucają wywołanielocation.get, gdy aplikacja działa w tle. - Inne platformy Node mogą działać inaczej.
Integracja z modelem i narzędziami
- Narzędzie agenta: akcja
location_getnarzędzianodes(wymagany Node). - CLI:
openclaw nodes location get --node <id>. - Wytyczne dla agenta: wywołuj tylko wtedy, gdy użytkownik włączył lokalizację i rozumie zakres jej udostępniania.
Teksty interfejsu użytkownika (sugerowane)
- Wyłączone: „Udostępnianie lokalizacji jest wyłączone”.
- Podczas używania: „Tylko gdy aplikacja OpenClaw jest otwarta”.
- Zawsze: „Zezwalaj na żądane sprawdzanie lokalizacji, gdy aplikacja OpenClaw działa w tle”.
- Dokładna: „Używaj dokładnej lokalizacji GPS. Wyłącz, aby udostępniać przybliżoną lokalizację”.