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

date
Sep 21, 2026
slug
hermes-somvia
status
Published
summary
我把 Apple 健康里的数据接给日常使用的 AI 助理 Hermes,让它结合训练记录、备注和身体状态,帮我分析训练、制定计划。这也是我开发 Somvia 的原因。
tags
AI
AI Agent
实际案例
type
Post
我平时练 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 获取健康数据的方法。