定位命令(节点)
简要说明
location.get是一个节点命令(通过node.invoke调用)。- 默认关闭。
- Android 应用设置使用选择器:关闭 / 使用中。
- 精确定位是独立的开关。
为什么用选择器而不是简单开关
系统权限是分层级的。应用内可以提供选择器,但实际授权由系统决定。
- iOS/macOS 在系统提示/设置中可能显示使用期间或始终。
- Android 应用目前只支持前台定位。
- 精确定位是独立的授权(iOS 14+ 的”精确定位”,Android 的”精确”与”粗略”)。
应用内选择器控制请求模式;实际授权在系统设置中。
设置模型
按节点设备:
location.enabledMode:off | whileUsinglocation.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 定位。关闭后共享大致位置。”