Nodes and media
Команда определения местоположения
Кратко
location.get— команда Node, вызываемая черезnode.invokeилиopenclaw nodes location get.- По умолчанию отключено.
- В сторонних сборках для Android используется селектор: «Отключено» / «Во время использования» / «Всегда». В сборках для Play остаются варианты «Отключено» / «Во время использования».
- Точное местоположение включается отдельным переключателем.
Почему селектор, а не просто переключатель
Разрешения ОС на доступ к местоположению имеют несколько уровней. Точное местоположение также предоставляется ОС отдельно («Точное местоположение» в iOS 14+, «точное» и «приблизительное» в Android). Селектор в приложении задаёт запрашиваемый режим, но фактически предоставляемый уровень доступа по-прежнему определяет ОС.
Модель настроек
Для каждого устройства Node:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: логическое значение
Поведение интерфейса:
- При выборе
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 поведение может отличаться.
Интеграция с моделью и инструментами
- Инструмент агента: действие
location_getинструментаnodes(требуется Node). - CLI:
openclaw nodes location get --node <id>. - Рекомендации для агента: вызывать только в том случае, если пользователь включил передачу местоположения и понимает область предоставляемого доступа.
Предлагаемый текст интерфейса
- Отключено: «Передача местоположения отключена».
- Во время использования: «Только когда OpenClaw открыто».
- Всегда: «Разрешить запрашиваемые проверки местоположения, когда OpenClaw работает в фоновом режиме».
- Точное местоположение: «Использовать точное местоположение по GPS. Отключите этот параметр, чтобы передавать приблизительное местоположение».