跳转至

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 数组。保留已有的任何命令:

{
  gateway: {
    nodes: {
      commands: { allow: ["health.summary"] },
    },
  },
}

health.summary 被归类为高隐私敏感命令,iOS 平台默认绝不允许。gateway.nodes.commands.deny 中的条目会覆盖 allow 条目。参见 节点命令策略。

2. 在 iOS 设备上启用共享

在 iOS 应用中:

  1. 打开 设置 -> 权限,在始终可见的 Apple 健康 部分中找到 Apple 健康摘要。
  2. 点按 启用 Apple 健康摘要。
  3. 阅读披露信息,然后在 Apple 的权限页面中选择 OpenClaw 可以读取哪些健康类别。

该开关记录你显式的 OpenClaw 共享选择。它并不表示 Apple 已授予所有请求的类别。

启用健康摘要会将 health.summary 添加到节点声明的命令面中。批准由此产生的节点配对更新:

openclaw nodes pending
openclaw nodes approve <requestId>

然后验证所连接的 iOS 设备是否公开了有效的 health.summary 命令:

openclaw nodes describe --node "<iOS device name>"

请求今日摘要

仅支持 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