Nodes and media
Comando de ubicación
Resumen rápido
location.getes un comando de nodo (mediantenode.invoke).- Desactivado de forma predeterminada.
- La configuración de la app de Android usa un selector: Desactivado / Mientras se usa.
- Interruptor independiente: Ubicación precisa.
Por qué un selector (y no solo un interruptor)
Los permisos del sistema operativo tienen varios niveles. Podemos exponer un selector dentro de la app, pero el sistema operativo sigue decidiendo la concesión real.
- iOS/macOS pueden exponer Mientras se usa o Siempre en los avisos/configuración del sistema.
- Actualmente, la app de Android solo admite ubicación en primer plano.
- La ubicación precisa es una concesión independiente (iOS 14+ "Precisa", Android "fine" frente a "coarse").
El selector en la IU controla el modo que solicitamos; la concesión real vive en la configuración del sistema operativo.
Modelo de configuración
Por dispositivo de nodo:
location.enabledMode:off | whileUsinglocation.preciseEnabled: bool
Comportamiento de la IU:
- Seleccionar
whileUsingsolicita permiso en primer plano. - Si el sistema operativo deniega el nivel solicitado, vuelve al nivel concedido más alto y muestra el estado.
Asignación de permisos (node.permissions)
Opcional. El nodo de macOS informa location mediante el mapa de permisos; iOS/Android pueden omitirlo.
Comando: location.get
Llamado mediante node.invoke.
Parámetros (sugeridos):
{
"timeoutMs": 10000,
"maxAgeMs": 15000,
"desiredAccuracy": "coarse|balanced|precise"
}
Carga útil de respuesta:
{
"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"
}
Errores (códigos estables):
LOCATION_DISABLED: el selector está desactivado.LOCATION_PERMISSION_REQUIRED: falta el permiso para el modo solicitado.LOCATION_BACKGROUND_UNAVAILABLE: la app está en segundo plano, pero solo se permite Mientras se usa.LOCATION_TIMEOUT: no se obtuvo una posición a tiempo.LOCATION_UNAVAILABLE: fallo del sistema / sin proveedores.
Comportamiento en segundo plano
- La app de Android deniega
location.getmientras está en segundo plano. - Mantén OpenClaw abierto al solicitar la ubicación en Android.
- Otras plataformas de nodo pueden diferir.
Integración con modelo/herramientas
- Superficie de herramienta: la herramienta
nodesañade la acciónlocation_get(se requiere nodo). - CLI:
openclaw nodes location get --node <id>. - Directrices para agentes: llamar solo cuando el usuario haya activado la ubicación y entienda el alcance.
Texto de UX (sugerido)
- Desactivado: "El uso compartido de ubicación está desactivado."
- Mientras se usa: "Solo cuando OpenClaw está abierto."
- Precisa: "Usa la ubicación GPS precisa. Desactívalo para compartir una ubicación aproximada."