定位命令(节点)

简要说明

  • location.get 是一个节点命令(通过 node.invoke 调用)。
  • 默认关闭。
  • Android 应用设置使用选择器:关闭 / 使用中。
  • 精确定位是独立的开关。

为什么用选择器而不是简单开关

系统权限是分层级的。应用内可以提供选择器,但实际授权由系统决定。

  • iOS/macOS 在系统提示/设置中可能显示使用期间始终
  • Android 应用目前只支持前台定位。
  • 精确定位是独立的授权(iOS 14+ 的”精确定位”,Android 的”精确”与”粗略”)。

应用内选择器控制请求模式;实际授权在系统设置中。

设置模型

按节点设备:

  • location.enabledModeoff | whileUsing
  • location.preciseEnabled:布尔值

界面行为:

  • 选择 whileUsing 时请求前台定位权限。
  • 如果系统拒绝了请求的权限级别,回退到已授予的最高级别并显示状态。

权限映射(node.permissions)

可选。macOS 节点通过 permissions 映射报告 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
  • 在 Android 上请求定位时,请保持 OpenClaw 处于前台。
  • 其他节点平台行为可能不同。

模型/工具集成

  • 工具接口:nodes 工具添加 location_get 动作(需要节点)。
  • CLI:openclaw nodes location get --node <id>
  • Agent 使用原则:仅在用户已启用定位并理解其范围时调用。

界面文案(建议)

  • 关闭:“位置共享已禁用。”
  • 使用中:“仅在 OpenClaw 打开时共享。”
  • 精确:“使用精确 GPS 定位。关闭后共享大致位置。”