Nodes and media
Команда визначення місцезнаходження
Коротко
location.get— це команда Node, яку викликають черезnode.invokeабоopenclaw nodes location get.- За замовчуванням вимкнено.
- Сторонні збірки Android використовують селектор: Вимкнено / Під час використання / Завжди. У збірках Play залишаються варіанти Вимкнено / Під час використання.
- Точне місцезнаходження вмикається окремим перемикачем.
Чому селектор, а не просто перемикач
Дозволи ОС на доступ до місцезнаходження мають кілька рівнів. Точне місцезнаходження також є окремим дозволом ОС («Precise» в iOS 14+, «fine» і «coarse» в Android). Селектор у застосунку визначає запитуваний режим, але фактично наданий дозвіл усе одно визначає ОС.
Модель налаштувань
Для кожного пристрою Node:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
Поведінка інтерфейсу:
- Вибір
whileUsingзапитує дозвіл на доступ під час використання. - Вибір
alwaysу сторонній збірці Android спочатку запитує дозвіл на доступ під час використання, пояснює фоновий доступ, а потім відкриває налаштування застосунку Android для окремого дозволу Allow all the time. - Збірки Android Play не оголошують дозвіл на фоновий доступ до місцезнаходження й не показують
always. - Якщо ОС відхиляє запитаний рівень, застосунок повертається до найвищого наданого рівня та показує стан.
Відповідність дозволів (node.permissions)
Необов’язково. Node для macOS повідомляє location через мапу permissions у node.list/node.describe; iOS/Android можуть не передавати це значення.
Команда: location.get
Викликається через node.invoke або допоміжну команду CLI:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000Параметри:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}Прапорці CLI мають пряму відповідність: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Дані відповіді:
{ "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"}Помилки (стабільні коди):
LOCATION_DISABLED: селектор вимкнено.LOCATION_PERMISSION_REQUIRED: немає дозволу для запитаного режиму.LOCATION_BACKGROUND_UNAVAILABLE: застосунок працює у фоновому режимі, але надано дозвіл лише на доступ під час використання.LOCATION_TIMEOUT: не вдалося вчасно визначити місцезнаходження.LOCATION_UNAVAILABLE: системна помилка або немає постачальників даних.
Поведінка у фоновому режимі
- Сторонні збірки Android приймають фонові запити
location.getлише тоді, коли користувач вибравAlways, а Android надав дозвіл на фоновий доступ до місцезнаходження. Наявна постійна служба Node додає тип службиlocationі показуєLocation: Always, поки вона активна. - Збірки Android Play і режим
While Usingвідхиляютьlocation.get, коли застосунок працює у фоновому режимі. - На інших платформах Node поведінка може відрізнятися.
Хост Node для Linux
Вбудований Plugin Linux Node додає location.get до служби CLI openclaw node, зокрема на хостах без графічного інтерфейсу, де немає настільного застосунку Linux. Визначення місцезнаходження за замовчуванням вимкнено. Увімкніть його в записі Plugin, а потім перезапустіть службу Node:
{ plugins: { entries: { "linux-node": { config: { location: { enabled: true }, }, }, }, },}Установіть GeoClue2 та його демонстраційну програму where-am-i (geoclue-2-demo у Debian і Ubuntu). Політика GeoClue та агент авторизації хоста мають дозволяти доступ користувачу служби Node.
Plugin використовує where-am-i замість послідовності викликів busctl. GeoClue прив’язує створення клієнта, властивості, запуск, оновлення та зупинення до одного клієнтського з’єднання D-Bus; демонстраційна програма зберігає цей життєвий цикл цілісним, тоді як окремі підпроцеси busctl — ні. Жодної залежності npm не додається.
Linux зіставляє coarse, balanced і precise з рівнями точності GeoClue 4, 6 і 8. Значення maxAgeMs перевіряється за повернутою часовою позначкою. Демонстраційна програма GeoClue не вказує вибраного постачальника даних, тому source має значення unknown; isPrecise має значення true лише тоді, коли повідомлена точність становить 100 метрів або краща.
Linux використовує ті самі стабільні помилки: LOCATION_DISABLED, LOCATION_TIMEOUT і LOCATION_UNAVAILABLE.
Інтеграція з моделлю та інструментами
- Інструмент агента: дія
location_getінструментаnodes(потрібен Node). - CLI:
openclaw nodes location get --node <id>. - Рекомендації для агента: викликати лише тоді, коли користувач увімкнув доступ до місцезнаходження та розуміє його обсяг.
Текст інтерфейсу (рекомендований)
- Вимкнено: «Надання даних про місцезнаходження вимкнено».
- Під час використання: «Лише коли OpenClaw відкрито».
- Завжди: «Дозволити запитувані перевірки місцезнаходження, коли OpenClaw працює у фоновому режимі».
- Точне: «Використовувати точне місцезнаходження за GPS. Вимкніть перемикач, щоб надавати приблизне місцезнаходження».