HealthKit 摘要¶
OpenClaw 可以从已连接的 iPhone 或 iPad 节点请求当前日历日的只读摘要。设备在本地计算聚合数据,并且仅返回步数、睡眠时长、平均静息心率以及体能训练次数/时长。不支持单独的 HealthKit 样本、来源、元数据、临床记录、后台摄取和写入操作。
此功能默认关闭。它需要在 iOS 设备上单独同意,并在 Gateway 上获得授权。
前提条件¶
- 一台运行 OpenClaw iOS 应用且 HealthKit 能报告健康数据的 iPhone 或 iPad。
- 一个已连接并获得批准的 iOS 节点。参见 iOS 应用设置。
- 一个能够访问该 iOS 节点的当前 Gateway。
- 对于你期望看到的任何指标,需要有可读取的健康数据。Apple Watch 可以向 Apple Health 资料库贡献数据,但 HealthKit 摘要不需要 OpenClaw watchOS 应用。
启用访问¶
1. 授权 Gateway 命令¶
将 health.summary 添加到 openclaw.json 中现有的 gateway.nodes.commands.allow 数组。保留已有的任何命令:
health.summary 被归类为高隐私敏感命令,iOS 平台默认绝不允许。gateway.nodes.commands.deny 中的条目会覆盖 allow 条目。参见 节点命令策略。
2. 在 iOS 设备上启用共享¶
在 iOS 应用中:
- 打开 设置 -> 权限,在始终可见的 Apple 健康 部分中找到 Apple 健康摘要。
- 点按 启用 Apple 健康摘要。
- 阅读披露信息,然后在 Apple 的权限页面中选择 OpenClaw 可以读取哪些健康类别。
该开关记录你显式的 OpenClaw 共享选择。它并不表示 Apple 已授予所有请求的类别。
启用健康摘要会将 health.summary 添加到节点声明的命令面中。批准由此产生的节点配对更新:
然后验证所连接的 iOS 设备是否公开了有效的 health.summary 命令:
请求今日摘要¶
仅支持 today。它涵盖从本地午夜到请求时刻的时间段,使用 iOS 设备当前的日历和时区。
openclaw nodes invoke \
--node "<iOS device name>" \
--command health.summary \
--params '{"period":"today"}' \
--json
代理可以使用 nodes 工具调用同一命令:
{
"action": "invoke",
"node": "<iOS device name>",
"invokeCommand": "health.summary",
"invokeParamsJson": "{\"period\":\"today\"}"
}
摘要负载包含:
| 字段 | 含义 |
|---|---|
period |
始终为 today |
startISO |
本地日期开始时间,编码为 ISO 时间点 |
endISO |
请求时间,编码为 ISO 时间点 |
timeZoneIdentifier |
iOS 设备时区标识符 |
stepCount |
取整后的累计步数 |
sleepDurationMinutes |
去重后的睡眠时间,裁剪到今日范围内 |
restingHeartRateBpm |
平均静息心率 |
workoutCount |
今天开始的体能训练次数 |
workoutDurationMinutes |
这些体能训练的总时长 |
指标字段是可选的;当 HealthKit 没有返回可读值时,这些字段会被省略。睡眠阶段和重叠来源会在计算时长之前合并,因此同一分钟不会被重复计算。
隐私行为¶
- 聚合计算在 iOS 设备上进行。原始样本不会离开设备。
- 请求的聚合数据通过你的 Gateway 离开设备。当代理请求时,聚合数据会到达所配置的 AI 提供商,并可能保留在聊天记录中。通过 CLI 直接调用时,聚合数据将返回给 CLI 操作者。
- OpenClaw 仅请求读取权限。它不能添加或修改健康数据。
- OpenClaw 仅在调用
health.summary时读取 HealthKit。没有后台健康数据摄取。 - HealthKit 有意不透露读取权限是否被拒绝。某个指标缺失可能意味着访问被拒绝、没有匹配的样本或数据类型不可用。OpenClaw 无法区分这些情况。
- 该摘要用于个人健康和健身参考,不用于诊断或医疗建议。
若要停止共享,请返回 Apple 健康摘要 并点按 关闭摘要。随后,iOS 设备会从节点的命令面中移除健康功能和 health.summary 命令。你也可以从 gateway.nodes.commands.allow 中移除 health.summary,从 Gateway 一侧关闭此通道。
故障排除¶
命令未被节点声明¶
确认 iOS 应用中已启用 Apple 健康摘要,并且设备已连接。运行 openclaw nodes pending 并批准任何能力更新,然后再次检查 openclaw nodes describe --node "<iOS device name>"。
命令需要显式选择启用¶
将 health.summary 添加到 gateway.nodes.commands.allow。还要检查 gateway.nodes.commands.deny 不包含它;拒绝列表优先。
HEALTH_ACCESS_DISABLED¶
应用侧的共享开关已关闭。请在 iOS 设备上的 设置 -> 权限 -> Apple 健康 中启用 Apple 健康摘要。
摘要成功但指标缺失¶
打开 Apple 的“健康”应用,并确认今天存在数据。在 Apple 的“健康”设置中检查 OpenClaw 的访问权限,但不要将空结果视为访问被拒绝的证据:HealthKit 有意隐藏了这一区别。
较旧的时间范围失败¶
该命令仅接受 {"period":"today"}。不支持多天和历史摘要。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw