个人健康数据基础设施
从 10 年 Apple Health 到 AI 驱动的交叉分析
十年前,我并没有刻意开始一项健康计划。只是把手机放在口袋里,手表戴在手上,日子就这样过去。
直到最近,我第一次完整导出 iPhone「健康」App 的所有资料。解压缩后,是一个 1.3GB 的 XML 文件。十年、超过 300 万笔记录——步数、心率、睡眠、运动轨迹、自律神经指标。一段身体与时间共同书写的历史,横跨了我的创业、转型、离开舒适圈到重新开始。
那一刻我意识到:我们并不是没有资料,而是没有基础设施。
为什么需要自建分析系统?
主流穿戴装置各有封闭生态与专利算法,这造成两个根本问题。
第一是数据孤岛。 Apple Health 有它的判读逻辑,Fitbit 有它的算法。我同时佩戴两种装置,它们对同一晚的总睡眠时长高度一致(差距仅 2 分钟),但对深层睡眠的判读差了 21 分钟,REM 差了 15 分钟。该信谁?答案是:都不能全信,只能交叉比对看趋势。
第二是维度缺失。 手机 App 专注于让你看「今天」与「这周」,不擅长做跨越三五年的长趋势分析,更无法将运动量下滑、HRV 恶化与睡眠债累积进行多维度的交叉比对。而这些指标之间的关联,往往才是最重要的信号。
要看见全貌,需要的不是另一台穿戴装置,而是自己的分析基础设施。
十年的数字足迹
从 2015 年 8 月起,iPhone 就持续记录我的活动。2016 年 Apple Watch 加入后,心率与睡眠开始被更精细地量测。2023 年起,Fitbit 成为第二台穿戴装置,提供另一套独立的测量基线。
十年间的累积:步数记录 279,537 笔,步行与跑步距离 231,300 笔,心率记录超过 113 万笔,睡眠记录 29,532 笔。运动方面,跑步 1,420 次、骑车 435 次、游泳 19 次,留下 966 条 GPS 运动轨迹。
2023 年 9 月起,Apple Watch 开始记录更深层的指标——HRV(心率变异)7,710 笔、静止心率 753 笔、血氧饱和度 9,837 笔、腕部体温 439 笔、VO2Max 122 笔。这些才是穿戴装置真正有价值的数据:不是步数,而是自律神经系统的运作状态。
单看数字没有情绪。但当年度分布摊开来看,很多事就清楚了。
技术架构:三条资料管线
即时管线:Fitbit → MCP → Claude
通过 Anthropic 的 MCP(Model Context Protocol)协议,Fitbit API 直接接入 Claude Desktop。
运作方式: 我可以直接对 Claude 说「分析我最近一周的压力负荷」,Claude 通过 MCP 调用 Fitbit API,取得睡眠(含各阶段时长)、心率时序、活动摘要等原始 JSON,即时分析。拿到的是 API 回传的原始数据,不是 App 已经翻译过的摘要。
技术点: OAuth 2.0 验证,Token 自动刷新。全程本机运行,资料不经过第三方服务器。
深度管线:Apple Health → XML → 结构化分析
Apple 不提供个人用途的 Health API,唯一出口是从 iPhone 手动导出。
处理流程: 用 Python 串流解析 1.3GB 的 XML(不试图一次载入),先建立资料类型索引,再分类萃取各指标到独立 JSON——睡眠、HRV、静止心率、血氧等,最后建立日度与月度汇总。
解决痛点: Apple 的睡眠分 Core / Deep / REM 三阶段,Fitbit 分 Light / Deep / REM。Apple 的 Core 大致对应 Fitbit 的 Light,但算法判定标准不同。处理时只对齐趋势方向,不比较绝对数值。
自动化管线:CI/CD 持续部署
Mac 上的 crontab 每 10 分钟执行更新脚本,通过 Fitbit OAuth API 拉即时资料,git push 触发 GitHub Actions 自动 build,Cloudflare Pages 部署。健康仪表板永远保持最新状态,从资料产生到网站更新,全程无人工介入。
这不是炫技。我不想偶尔看一次图表。我希望它成为长期运作的基础设施。
数据真正说的话
当十年的曲线叠合起来,数字比感觉更诚实。
运动量的消长:从日日三铁到归零
2018 年,我开始参加三铁赛事,每年至少一场。同时加入「日日三铁」——每天从游泳、骑车、跑步中选一项执行的自律社群。我最常选跑步,门槛最低,穿上鞋就能出门。
开始这件事有两个原因。一个是私人的:做儿子的表率,让他看到父亲怎么管理自己的身体和纪律。另一个是从创业经历中学到的——健康是承载所有决策和执行力的硬件。几乎所有我认识的优秀 CEO 都有规律的运动习惯,甚至乐于挑战极限运动。那不是因为他们「有时间」,而是因为他们理解:身体的恢复周期不可被压缩。
GPS 轨迹的年度分布记录了这段历程:2021 年 93 条、2022 年 340 条、2023 年 294 条、2024 年 200 条、2025 年 39 条。2022 年几乎每天都有运动记录,是日日三铁执行最彻底的一年。
之后几年,工作转型、责任增加、生活结构改变。我并没有意识到自己正在放弃恢复周期。当运动被挤出日程,数据显示身体随即开始「负债」。
睡眠债:连续 33 个月未达标
结合 Fitbit(2023/05-2026/02,883 晚)和 Apple Watch(2023/09-2025/12,537 晚)的记录:33 个月,没有任何一个月的平均值达到建议的 7 小时。全期平均约 5 小时 50 分。
每天少一小时,三年就是超过一千小时的睡眠债。
趋势更值得在意:2023-2024 年约 6 小时上下,2025 年降到 5 小时 41 分,Q2 触底 5 小时 16 分。睡眠效率从 83% 滑落至 74%。不只是睡得少——躺得更久,但真正入睡的比例越来越低。身体在休息,神经系统还在运转。
HRV 与静止心率:最诚实的指标
HRV 从 2023 年的 42ms 下滑到 2025 年中的 31ms,降幅超过 25%。同时静止心率从 60 bpm 上升到 72 bpm。两条线同时指向同一件事:自律神经系统长期处于压力状态。
这不是情绪判断,是生理信号。而且这是 Apple Watch 独有的资料——如果只看 Fitbit,永远不会知道。这正是跨装置交叉分析的价值:单一 App 不会主动跳出的警告,在多维度对照下无所遁形。
经验教训:资料管线的脆弱性
在这次分析中,我发现 2022 年后的体重数据完全中断。原因非常平庸:智能体重计坏了,而我一直没有替换。
这是一个典型的数据教训——硬件故障是个人数据基础设施最大的威胁。 资料一旦断裂,那段时间的身体变化就成了永远的黑洞。不是不想记录,而是断了就没有再接回来。
同样的脆弱性也出现在 Apple Health 导出上:这是一个需要手动触发的流程,如果不定期导出,最新的资料就只存在于 iPhone 里,无法被外部分析。
认识到这种脆弱性,是建立可持续基础设施的第一步。
装置搭配的实务建议
26 个月的双装置重叠资料让我得出一套原则:总睡眠时长以 Fitbit 为主(覆盖率高,每月 25-31 晚),REM 睡眠参考 Apple Watch(加速度计对微动作侦测更精准),深层睡眠只看趋势不看绝对值(两装置算法差异最大的指标)。HRV、静止心率、血氧是 Apple Watch 独有的领先指标。
Fitbit 是日常追踪的主力,Apple Watch 是深度健康评估的辅助。两者互补,不是互相取代。
下一步:从观察到介入
这套系统的下一阶段不是增加图表,而是三件事:AI 异常侦测(当 HRV 连续三天低于基线,Claude 主动发出介入建议)、生活型态标注(记录介入行为的前后对照)、以及更多数据源整合(Oura Ring 体温、智能血压计、体脂计——每多一条管线,交叉分析的维度就多一层)。
从「看数据」进化到「用数据驱动行为改变」——这才是个人健康基础设施(Personal Health Infrastructure)的真正价值。
结语
十年的资料证明了两件事。
第一,身体一直在发出信号。HRV 下降、静止心率上升、睡眠效率崩塌、运动量归零——这些分散在不同装置里的信号,在各自的 App 里看起来都还「在范围内」。是自建的分析基础设施,让它们汇聚成一个无法忽视的趋势。
第二,我曾经做得到。1,420 次跑步、435 次骑车、每年一场三铁——2022 年的 340 条 GPS 轨迹证明日日三铁是可行的。衰退不是命运,而是结构。
健康不该只是「今天走了几步」。它应该是一套可被验证、可被修正、可被持续优化的个人系统。
十年的资料不是为了怀旧,而是提醒自己——趋势一旦看清,就没有再假装看不见的理由。
本文的健康数据分析仪表板可在 paulkuo.tw/health 查看。
技术细节:Fitbit MCP 设定、Apple Health XML 解析流程、Chart.js 可视化、CI/CD 自动化管线等,欢迎联系交流。
💬 留言讨论
加载中...