Nodes and media

Команда местоположения

Кратко

  • location.get — команда узла (через node.invoke).
  • По умолчанию отключена.
  • В настройках Android-приложения используется селектор: Отключено / При использовании.
  • Отдельный переключатель: Точная геолокация.

Почему селектор (а не просто переключатель)

Разрешения ОС имеют несколько уровней. Мы можем показывать селектор внутри приложения, но фактическое разрешение всё равно определяет ОС.

  • iOS/macOS могут показывать При использовании или Всегда в системных запросах/настройках.
  • Android-приложение сейчас поддерживает только геолокацию на переднем плане.
  • Точная геолокация — это отдельное разрешение (iOS 14+ «Точная», Android «точная» и «приблизительная»).

Селектор в UI управляет запрашиваемым нами режимом; фактическое разрешение хранится в настройках ОС.

Модель настроек

Для каждого устройства-узла:

  • location.enabledMode: off | whileUsing
  • location.preciseEnabled: bool

Поведение UI:

  • Выбор whileUsing запрашивает разрешение на геолокацию на переднем плане.
  • Если ОС отклоняет запрошенный уровень, вернуться к максимальному выданному уровню и показать статус.

Сопоставление разрешений (node.permissions)

Необязательно. Узел macOS сообщает location через карту разрешений; iOS/Android могут не включать его.

Команда: location.get

Вызывается через node.invoke.

Параметры (рекомендуемые):

json
{  "timeoutMs": 10000,  "maxAgeMs": 15000,  "desiredAccuracy": "coarse|balanced|precise"}

Полезная нагрузка ответа:

json
{  "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, когда находится в фоне.
  • Держите OpenClaw открытым при запросе геолокации на Android.
  • Другие платформы узлов могут отличаться.

Интеграция с моделью/инструментами

  • Поверхность инструмента: инструмент nodes добавляет действие location_get (узел обязателен).
  • CLI: openclaw nodes location get --node <id>.
  • Рекомендации для агента: вызывать только если пользователь включил геолокацию и понимает область действия.

Текст UX (рекомендуемый)

  • Отключено: «Передача геолокации отключена.»
  • При использовании: «Только когда OpenClaw открыт.»
  • Точная: «Использовать точную GPS-геолокацию. Отключите этот параметр, чтобы передавать приблизительную геолокацию.»

Связанное

Was this useful?
On this page

On this page