Кратко
location.get— команда Node, вызываемая черезnode.invokeилиopenclaw nodes location get.- По умолчанию отключено.
- В сторонних сборках для Android используется селектор: Off / While Using / Always. В сборках Play доступны только Off / While Using.
- Precise Location — отдельный переключатель.
Почему селектор, а не просто переключатель
Разрешения ОС на доступ к местоположению имеют несколько уровней. Точное местоположение также предоставляется отдельным разрешением ОС (в iOS 14+ — «Precise», в Android — «fine» и «coarse»). Селектор в приложении определяет запрашиваемый режим, но фактически предоставляемый уровень по-прежнему определяет ОС.Модель настроек
Для каждого устройства 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:
--location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Полезная нагрузка ответа:
LOCATION_DISABLED: селектор выключен.LOCATION_PERMISSION_REQUIRED: отсутствует разрешение для запрошенного режима.LOCATION_BACKGROUND_UNAVAILABLE: приложение работает в фоновом режиме, но предоставлен доступ только While Using.LOCATION_TIMEOUT: данные о местоположении не получены вовремя.LOCATION_UNAVAILABLE: системный сбой или отсутствие поставщиков данных.
Поведение в фоновом режиме
- Сторонние сборки для Android принимают фоновый запрос
location.get, только если пользователь выбралAlwaysи Android предоставил фоновый доступ к местоположению. Существующая постоянная служба Node добавляет тип службыlocationи уведомляет обLocation: Always, пока он активен. - Сборки Android Play и режим
While Usingотклоняютlocation.getпри работе в фоновом режиме. - На других платформах Node поведение может отличаться.
Хост Node для Linux
Встроенный плагин Linux Node добавляетlocation.get в службу CLI openclaw node, включая безэкранные хосты без приложения Linux для настольных систем. По умолчанию доступ к местоположению отключён. Включите его в записи плагина, затем перезапустите службу Node:
where-am-i (geoclue-2-demo в Debian и Ubuntu). Пользователь службы Node должен быть допущен политикой GeoClue хоста и агентом авторизации.
Плагин использует 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>. - Рекомендации для агента: вызывайте только в том случае, если пользователь включил доступ к местоположению и понимает его область действия.
Тексты интерфейса (рекомендуемые)
- Off: «Передача местоположения отключена».
- While Using: «Только когда OpenClaw открыт».
- Always: «Разрешить запрашиваемые проверки местоположения, когда OpenClaw работает в фоновом режиме».
- Precise: «Использовать точное местоположение по GPS. Выключите этот параметр, чтобы передавать приблизительное местоположение».