用途
该技能用于读取用户已同步的 Apple Health(HealthKit)数据。所有命令均需指定 --provider healthkit。它只服务于 iOS 设备;如果配对设备不是 iPhone,则没有可用数据,可通过 device.list 返回的 platform 字段确认。数据虽同步自 Apple HealthKit,但来源不限于 iOS 设备,也可能来自与 Apple HealthKit 共享数据的其他来源或设备。
主要能力
按数据形态分为三类查询:
- query metrics:全天指标聚合,包括步数、距离、卡路里、心率、HRV、VO2max。只有 daily-metrics 一个领域,因此没有 --category。按 --interval 分桶,默认 daily。--start-date 必填,--end-date 默认今天。--list-fields 可读取已同步数据中的指标字段名。
- query samples:原始、未分桶的数据点,如日内心率/步数、GPS、睡眠阶段时间线。--fields 选择样本类型而非输出列。数据量大时可用 --output <path> 写入 CSV,仅打印摘要。
- query sessions:离散会话,--category 取 sleep 或 workout,分别返回每个睡眠会话一行或每次锻炼/活动一行。会话不分桶,没有 --interval。
辅助命令:
- status:返回各分类的记录数、最早与最晚时间;加 --check-missing-entries(需 --start-date)可得到每 30 分钟间隔的缺失报告。
- auth connect:按提示连接 Apple HealthKit 数据。
- auth disconnect:Apple Health 无法通过此 CLI 或聊天组件断开,需提示用户前往 Settings → Connectors → Apple Health 点击 Disconnect。
- delete:删除已存储记录,支持 --all、--device NODE_ID 或 --start-date/--end-date 范围。属破坏性且不可逆操作,需一次性审批;被拒绝时退出码 3 且不删除。删除记录数应报告 deleted.records,而非 total_rows。零条匹配是成功而非遗漏。设备上的记录可能在后续同步时重新出现。
使用方式
- 按数据形态选命令:趋势用 query metrics,个别样本才用 query samples,离散事件用 query sessions。
- 始终传 --provider healthkit 和 --start-date;--end-date 默认今天。相对时间(“今天”“上周”)使用当前日期上下文;日内窄窗口用样本时间边界。
- 多设备窗口(少见):返回信封会带 "multi_node": true,metrics 返回按设备的 node_groups,samples/sessions 每条记录加 node_id。不要跨设备求和或重复计数。
- 查询返回 { "coverage": {...}, "records": [...] }。当 coverage.complete 为 false 时,说明窗口内有天数未从设备同步,coverage.warning 会给出应执行的 backfill_data_source 命令;应先告知用户数据不完整并按提示补全后重查。
- 空结果通常表示该范围无数据,可扩大范围,或检查 status/coverage 并补全。
适用场景
用户询问其已同步的 HealthKit 数据、同步状态或来源时使用,例如全天指标与生命体征、睡眠会话、锻炼记录。
限制
数据由设备同步,无需登录;可用性取决于设备上的 Health 权限与同步。仅 iOS 设备有数据。删除操作破坏性且不可逆,需审批;不支持按分类或单条记录删除,一次删除不跨 provider。GPS 为原始经纬度,不应据此推断地点名称。字段集合无法读取时响应会带 degraded: true,所有 observed 为 null。