项目作品

VitalMatrix:从一条雪球帖子开始的个人健康管理之旅

8 min read
健康管理 / Polar / Oura / Zone2 / HRV / 开源项目

起源:一条改变我的帖子

故事要从雪球说起。

某天刷雪球时,看到 @大道无形我有型 分享的一个训练方法:

Zone2 55分钟 + Zone4-5 1-2分钟

据说这种训练方式对降低血脂和坏胆固醇(LDL)特别有效。作为一个久坐的程序员,看到这个方法时,我立刻意识到:这正是我需要的

不是那种"收藏 = 学会"的自我安慰,而是真的想要执行。

于是我做了第一件事:买了一条 Polar 心率带


从执行到系统化

Polar 心率带到手后,我开始按照 Zone2 的方法训练。但很快我发现一个问题:

数据太分散了。

Polar 的 app 只能看训练数据,而我想知道的是:

  • 今天的训练对身体恢复有什么影响?
  • 睡眠质量和训练强度有什么关系?
  • 我的 HRV(心率变异性)趋势如何?

这些问题,单靠 Polar 无法回答。

于是我开始构建 VitalMatrix——一个整合多源健康数据的个人管理系统。


数据来源:三驾马车

Polar:训练的核心

Polar 心率带提供了最精准的心率数据,这是 Zone2 训练的基础。

系统从 Polar 获取:

  • 训练记录:每次运动的时长、类型、心率曲线
  • 心率区间分布:Zone1-5 各区间的时间占比
  • 训练负荷(TRIMP):量化每次训练的强度
  • 夜间恢复心率:评估身体的恢复状态

Oura:睡眠与恢复

训练只是健康的一部分,恢复同样重要

在调研了各种睡眠监测设备后,我选择了 Oura Ring,原因很简单:

  • 佩戴无感:戒指比手表舒服太多,睡觉时几乎感觉不到
  • 续航惊人:5-7 天充电一次,不用天天惦记
  • 数据丰富:睡眠阶段、HRV、血氧、体温变化一应俱全
  • 口碑出色:在量化自我(Quantified Self)社区评价很高

Oura 提供的数据:

  • 睡眠质量:深睡、浅睡、REM 各阶段时长
  • HRV 趋势:心率变异性是恢复状态的金标准
  • 准备度评分:综合评估今天是否适合高强度训练
  • 压力指标:白天的压力水平监测
  • 血氧饱和度:夜间血氧的变化趋势

饮食:被忽视的变量

训练和睡眠都到位了,但还有一个关键变量:吃了什么

系统集成了 AI 视觉识别,拍张照就能分析:

  • 食物种类识别
  • 营养成分估算(碳水、蛋白质、脂肪)
  • 热量计算

虽然精度不如手动记录,但胜在低摩擦。毕竟,能坚持用的工具才是好工具。


技术实现

架构概览

┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│   Polar     │  │    Oura     │  │   饮食拍照   │
│  心率带     │  │   戒指      │  │   AI识别    │
└──────┬──────┘  └──────┬──────┘  └──────┬──────┘
       │                │                │
       └────────────────┼────────────────┘
                        ▼
              ┌─────────────────┐
              │   VitalMatrix   │
              │    后端服务      │
              │  FastAPI + PG   │
              └────────┬────────┘
                       │
          ┌────────────┼────────────┐
          ▼            ▼            ▼
    ┌──────────┐ ┌──────────┐ ┌──────────┐
    │   Web    │ │  小程序   │ │   API    │
    │  管理台   │ │  移动端   │ │  MCP    │
    └──────────┘ └──────────┘ └──────────┘

技术栈

模块技术选型
后端FastAPI + Python 3.10
数据库PostgreSQL + SQLAlchemy
缓存Redis
前端React + Vite + TailwindCSS
小程序微信原生 + ECharts
AI 服务DeepSeek / Qwen / Gemini Vision

核心功能

每日健康建议

系统综合训练数据和恢复状态,生成个性化的建议:

  • 今天 HRV 较低,建议进行轻度恢复性训练
  • 连续 3 天高强度训练,建议休息一天
  • 睡眠质量下降,关注压力管理

风险标记

系统会自动标记 9 种潜在风险信号:

  • 训练过度(连续高负荷)
  • 恢复不足(HRV 持续走低)
  • 睡眠紊乱(深睡比例异常)
  • ...

趋势可视化

7 天滚动趋势图,一眼看清:

  • 训练时长变化
  • Zone2 占比
  • TRIMP 累积
  • HRV 波动

为什么要自己做?

市面上有很多健康管理 app,为什么还要自己造轮子?

1. 数据所有权

所有健康数据存储在自己的服务器上,不担心隐私泄露,不担心服务下线数据丢失。

2. 长期积累

我的目标是积累 足够长时间 的个人健康数据——5年、10年甚至更久。商业服务很难保证这种持续性。

3. 自由探索

有了原始数据,我可以自由地探索各种假设:

  • Zone2 训练真的能降低我的静息心率吗?
  • 睡眠和训练恢复之间的量化关系是什么?
  • 饮食对 HRV 有什么影响?

这些问题,只有自己掌握数据才能回答。

4. 低成本

除了硬件(Polar 心率带 + Oura 戒指),软件部分几乎零成本。部署在自己的服务器上,长期运行的成本可以忽略不计。


下一步:Pattern Discovery

目前系统已经跑了一段时间,数据在持续积累。下一步我想做的是:

发现健康和不健康的 Pattern

比如:

  • 什么样的训练模式让我的 HRV 提升最快?
  • 哪些饮食习惯会导致睡眠质量下降?
  • 压力大的时期,什么样的恢复策略最有效?

这些问题的答案,藏在数据里。我需要做的就是持续记录、持续分析。


写在最后

回想起来,这一切都始于雪球上的一条帖子。

Zone2 55分钟 + Zone4-5 1-2分钟

一个简单的训练方法,却让我开始认真对待自己的健康,并最终构建了一套完整的数据系统。

健康管理的本质,其实就是两件事:

  1. 持续记录——你无法改善你不测量的东西
  2. 长期坚持——短期数据没有意义,趋势才有价值

VitalMatrix 就是帮我做好这两件事的工具。

项目已在 GitHub 开源,如果你也想掌控自己的健康数据:

https://github.com/anon019/VitalMatrix

希望这个项目能陪伴我,也陪伴你,走向更健康的未来。