nodes/location-command.md
TL;DR
location.getto polecenie węzła (przeznode.invoke).- Domyślnie wyłączone.
- Ustawienia używają selektora: Wył. / Podczas użycia / Zawsze.
- Oddzielny przełącznik: Dokładna lokalizacja.
Dlaczego selektor (a nie tylko przełącznik)
Uprawnienia systemowe są wielopoziomowe. Możemy udostępnić selektor w aplikacji, ale to system operacyjny decyduje o faktycznym przyznaniu.- iOS/macOS: użytkownik może wybrać Podczas użycia lub Zawsze w monitach/ustawieniach systemu. Aplikacja może poprosić o podniesienie poziomu, ale system może wymagać przejścia do Ustawień.
- Android: lokalizacja w tle jest osobnym uprawnieniem; na Androidzie 10+ często wymaga to przepływu przez Ustawienia.
- Dokładna lokalizacja jest osobnym przyznaniem (iOS 14+ „Precise”, Android „fine” vs „coarse”).
Model ustawień
Na urządzenie węzła:location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
- Wybranie
whileUsingżąda uprawnienia na pierwszym planie. - Wybranie
alwaysnajpierw zapewniawhileUsing, a następnie żąda uprawnienia w tle (lub kieruje użytkownika do Ustawień, jeśli jest to wymagane). - Jeśli system odmówi żądanego poziomu, następuje powrót do najwyższego przyznanego poziomu i wyświetlenie statusu.
Mapowanie uprawnień (node.permissions)
Opcjonalne. Węzeł macOS raportujelocation poprzez mapę uprawnień; iOS/Android mogą to pominąć.
Polecenie: location.get
Wywoływane przez node.invoke.
Parametry (sugerowane):
LOCATION_DISABLED: selektor jest wyłączony.LOCATION_PERMISSION_REQUIRED: brak uprawnienia dla żądanego trybu.LOCATION_BACKGROUND_UNAVAILABLE: aplikacja jest w tle, ale dozwolone jest tylko „Podczas użycia”.LOCATION_TIMEOUT: brak ustalenia lokalizacji w czasie.LOCATION_UNAVAILABLE: błąd systemu / brak dostawców.
Zachowanie w tle (przyszłość)
Cel: model może żądać lokalizacji nawet wtedy, gdy węzeł działa w tle, ale tylko gdy:- Użytkownik wybrał Zawsze.
- System operacyjny przyznaje lokalizację w tle.
- Aplikacja ma prawo działać w tle dla lokalizacji (tryb pracy w tle iOS / usługa pierwszoplanowa Android lub specjalne zezwolenie).
- Gateway wysyła powiadomienie push do węzła (ciche push lub dane FCM).
- Węzeł krótko się wybudza i żąda lokalizacji od urządzenia.
- Węzeł przekazuje ładunek do Gateway.
- iOS: wymagane uprawnienie „Zawsze” + tryb lokalizacji w tle. Ciche push mogą być dławione; należy oczekiwać sporadycznych niepowodzeń.
- Android: lokalizacja w tle może wymagać usługi pierwszoplanowej; w przeciwnym razie należy oczekiwać odmowy.
Integracja modelu/narzędzi
- Powierzchnia narzędzia: narzędzie
nodesdodaje akcjęlocation_get(wymagany węzeł). - CLI:
openclaw nodes location get --node <id>. - Wytyczne dla agenta: wywoływać tylko wtedy, gdy użytkownik włączył lokalizację i rozumie zakres.
Teksty UX (sugerowane)
- Wył.: „Udostępnianie lokalizacji jest wyłączone.”
- Podczas użycia: „Tylko gdy OpenClaw jest otwarty.”
- Zawsze: „Zezwól na lokalizację w tle. Wymaga uprawnienia systemowego.”
- Dokładna: „Użyj dokładnej lokalizacji GPS. Wyłącz, aby udostępniać lokalizację przybliżoną.”