Nodes and media

Команда місцезнаходження

Коротко

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

Чому селектор (а не просто перемикач)

Дозволи ОС мають кілька рівнів. Ми можемо показати селектор у застосунку, але фактичний дозвіл усе одно визначає ОС.

  • iOS/macOS можуть показувати Під час використання або Завжди в системних запитах/Налаштуваннях.
  • Застосунок Android наразі підтримує лише геолокацію на передньому плані.
  • Точна геолокація є окремим дозволом (iOS 14+ «Точна», Android «fine» проти «coarse»).

Селектор в UI задає режим, який ми запитуємо; фактичний дозвіл зберігається в налаштуваннях ОС.

Модель налаштувань

Для кожного пристрою Node:

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

Поведінка UI:

  • Вибір whileUsing запитує дозвіл на геолокацію на передньому плані.
  • Якщо ОС відхиляє запитаний рівень, повернутися до найвищого наданого рівня та показати стан.

Зіставлення дозволів (node.permissions)

Необов’язково. Node macOS повідомляє location через мапу дозволів; iOS/Android можуть його не вказувати.

Команда: location.get

Викликається через node.invoke.

Параметри (рекомендовано):

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

Корисне навантаження відповіді:

{
  "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.
  • Інші платформи Node можуть відрізнятися.

Інтеграція з моделлю/інструментами

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

Текст UX (рекомендовано)

  • Вимкнено: «Передавання геолокації вимкнено.»
  • Під час використання: «Лише коли OpenClaw відкрито.»
  • Точна: «Використовувати точну GPS-геолокацію. Вимкніть перемикач, щоб ділитися приблизною геолокацією.»

Пов’язане