为了让 Hermes 帮我健身,我做了 Somvia

我平时练 CrossFit 和 HYROX,也会自己跑步。CrossFit 包含力量、体操和有氧训练,HYROX 则需要交替完成跑步和不同的体能项目。我想在继续练这两项的同时,把跑步练好,但不太会安排几种训练的频率和强度,因此产生了想要让 Hermes 帮我规划训练的想法。

为什么要把数据接给 Hermes

我自己部署了一个 AI 助理 Hermes,平时通过微信和它交流。它是 Nous Research 开发的开源 Agent,可以接入不同的大模型,调用工具,也能保存长期记忆。

工作、日程、读到的东西、生活里的想法,我都会跟它聊,身体状况和训练目标也不例外。它已经知道我的不少情况,所以我也希望它能帮我分析训练、制定训练计划。

不过,真要让它分析一次训练,我还是得先把记录发给它。通过平时的聊天,它已经了解我的训练目标和身体感受。但 Apple Watch 记录的心率、配速和睡眠数据,它还读不到。我得在手机里找到对应的记录,截图发过去,要比较几次训练,还得逐次翻找。

我希望聊到哪次训练,Hermes 就能自己去查,需要比较历史记录时也能接着找,不用每次由我整理后再发给它。

于是我做了 Somvia。它读取 Apple 健康里的数据,整理成 Agent 可以查询的记录,再通过 MCP 接给 Hermes。MCP 是 Agent 调用外部工具的一种接口,Hermes 通过它查询我的训练和身体数据。

用 Hermes 分析训练

我先在 Somvia 里授权读取 Apple 健康,开启同步,再把 App 提供的 MCP 地址和 API key 配置到 Hermes 里。同步后的数据会保存在 Somvia 服务端,Hermes 通过这个连接查询。

*Hermes 使用这里的 MCP 地址和 API key 连接。其他支持相应连接方式的 Agent 也可以使用。*
*Hermes 使用这里的 MCP 地址和 API key 连接。其他支持相应连接方式的 Agent 也可以使用。*

接好之后,我继续在微信里和 Hermes 聊训练。它可以通过 MCP 查询训练列表、读取某次训练的分段和曲线,也能查询睡眠和身体指标,不用我先截图发过去。

有一次训练,第一轮我跑了大约 900 米,接着做弓步、滑雪机、药球和雪橇。轮到第二轮跑步时,跑了约 600 米就难以继续。我把这些情况告诉 Hermes,让它结合训练记录,帮我评估应该怎么调整训练。

它整理了连续的一组记录:16 次训练里,功能力量类 6 次、混合心肺类 5 次、跑步 4 次,还有 1 次高强度间歇训练。结合这些记录和我补充的训练内容,它把基础有氧、跑步训练的频率,以及做完其他动作后能否继续维持跑步,列为优先调整的方向。

*这组记录中的训练类型,按 Apple 健康里的分类统计。*
*这组记录中的训练类型,按 Apple 健康里的分类统计。*

它没有建议我停掉 CrossFit 或 HYROX,而是给出了一份包含这两项的训练计划:每周两次 CrossFit、一次 HYROX,再安排一次低强度有氧跑和一次跑步质量训练,另外留出恢复时间。两次跑步的目的不同,前者以能轻松交谈的强度为主,后者安排阈值跑或间歇。

计划里还考虑了几种训练怎么搭配。如果接下来有 HYROX,而 CrossFit 又包含大量前蹲、弓步或重雪橇,它建议减少这些动作的重量或次数,给后续训练留出恢复余地。对于训练中跑不动的问题,它建议在内容和时长相近的训练中观察后半程的表现,看看调整后的安排有没有帮助。

记录每次训练的具体内容

我的 CrossFit 和 HYROX 训练每次安排都不一样,动作、重量、组数都会变。要按上面的建议调整训练,就得知道具体练了什么。我自己也想把这些内容和完成情况记下来,方便之后回看。

比如,有一次做的是 80 公斤前蹲,4 组、每组 8 次,还有 40 公斤的前架分腿蹲。另一次则有肩推、借力挺,以及用 55 公斤杠铃 unbroken 完成的下蹲翻 + 前蹲 + 借力挺。它们在手表里都叫「功能力量训练」,只看名称、时长和心率,之后很难分清各自练了什么。

为此,我在 Somvia 里加了训练备注,可以在每次训练下面填写动作、重量、组数和身体感受。前面那次跑步中途难以继续的训练,我就记下了两轮的跑步距离、弓步、滑雪机和雪橇等内容。Hermes 通过 MCP 查询这次训练时,会把备注和数据一起读出来。

记录也可以在微信里完成:把训练内容发给 Hermes,让它保存为这次训练的备注。它通过 MCP 写入后,App 里能看到,下次查询这次训练时也会一起读到。

除了每次练了什么,我还希望它持续考虑我的训练目标。比如,我想提高跑步能力,同时继续练 CrossFit 和 HYROX。Somvia 的健康记忆用来保存这类长期信息,也支持伤病与用药情况、训练偏好。

备注和记忆都可以自己在 App 里填写,也可以明确让 Agent 保存。Agent 会先复述要写入的内容,再通过 MCP 记录。之后讨论训练计划时,它可以查询这些背景。它们保存在 Somvia 里,换一个获授权的 Agent 也能读取,不必重新说明。工作、日程和其他生活里的事情,仍然可以继续和 Hermes 聊,由它自己的记忆保存。

训练负荷与恢复评分

有了记录和备注,还需要考虑训练强度和恢复情况。同样练一个小时,轻松跑和高强度间歇带来的负荷不同。因此,Somvia 也会根据已有的心率、配速或功率数据估算每次训练的负荷,再计算近期和长期训练负荷,方便观察当前训练量和平时的差异。

身体状态则可以结合恢复评分来看。它综合心率变异性、静息心率、睡眠和训练负荷,其中,心率变异性和静息心率会与自己的日常基线比较。App 里能看到具体指标和平时的差异。睡眠评分还会考虑睡眠时长、入睡是否规律、夜间醒来的情况、睡眠分期和夜间生理指标。

单次训练也有心率区间、有氧和无氧训练效果的估算。数据满足条件时,还可以估算阈值心率、阈值配速,或计算持续跑中的心率漂移。这些内容都可以直接在 App 里查看。

这些计算完全在 iPhone 上完成,结果同样通过 MCP 提供给 Agent。和 Hermes 讨论恢复情况时,它可以查询评分和相关的身体指标。调整训练计划时,也可以读取训练负荷,结合具体训练和备注分析,不用每次从原始数据重新算起。

评分需要足够的有效记录,手表佩戴情况、心率变异性和睡眠数据是否完整都会影响结果。已有历史记录可以用来建立个人基线,数据不足时,App 会提示。

如果只想在 App 里查看记录和评分,也可以保持默认的关闭上传状态。连接远程 Agent 才需要开启同步,选中的数据会上传到 Somvia 服务端,供获授权的客户端查询。Agent 读取后,还会涉及所用 AI 服务的数据处理方式。

现在练完以后,我会补充训练内容和感受,需要留到以后参考的就记下来,打开微信跟 Hermes 聊的时候,它自己去查数据,再讨论下一次怎么练时,训练记录、备注和评分都能一起用上。

如果你也想让自己的 AI 助手用上 Apple 健康里的数据,可以去 App Store 试试 Somvia。

相关阅读:少数派的《让 Agent 读懂你的身体:数据获取篇》,介绍了自己动手让 Agent 获取健康数据的方法。

← 返回