用 AI 生成个性化训练计划:从目标设定到周期化执行
以 AI智能健身助手 v0.1 为例,拆解训练计划生成的完整链路:目标设定、体测评估、计划生成与反馈闭环。
目录

很多人把”练不出来”归因于不够努力,但更常见的原因是计划本身不成立:目标模糊、负荷随意、没有反馈。这篇文章以 AI智能健身助手 v0.1 为例,拆解一条训练计划从设定到执行的完整链路。
先把目标翻译成可计算的量
“变强一点""瘦下来”都不是目标。目标要翻译成可度量、有 deadline 的量,例如:
- 12 周内深蹲 1RM 从 80kg 提升到 95kg;
- 体脂率从 22% 降到 18%,同时保持体重不掉超过 2kg。
有了量化目标,才能谈强度分配。力量训练里最常用的是用 1RM(一次重复最大重量) 来标定负荷:
其中 是完成的重量, 是该重量下的重复次数。这是 Epley 公式,简单但足够稳。AI 助手的第一步,就是把你的测试组数据换算成 1RM,再按百分比区间安排每周负荷。
计划的意义不是让你每次都力竭,而是让”下一次训练”总在能力边缘附近,而不是能力之外。
周期化:把 12 周拆成可执行的节奏
线性加重对新手有效,但对多数人来说,波浪式的周期更抗疲劳。v0.1 采用最简单的三段结构:
flowchart LR
A[目标设定] --> B[体测评估]
B --> C[计划生成]
C --> D[执行与记录]
D --> E[反馈调整]
E --> C
每一轮”生成 → 执行 → 反馈”都是一个闭环。AI 的价值不在一次生成多完美的计划,而在根据你的完成质量持续修正。
负荷计算的最小实现
换算与排程的核心逻辑其实很小,用 Python 十几行就能跑通原型:
from dataclasses import dataclass
@dataclass
class TrainingSet:
weight: float # 完成重量 kg
reps: int # 完成次数
def epley_1rm(s: TrainingSet) -> float:
"""Epley 公式估算 1RM"""
return s.weight * (1 + s.reps / 30)
def week_load(one_rm: float, pct: float, sets: int, reps: int) -> float:
"""一周某动作的总负荷(吨位)"""
return one_rm * pct * sets * reps
bench = TrainingSet(weight=60, reps=8)
rm = epley_1rm(bench)
print(f"估算 1RM: {rm:.1f} kg")
print(f"本周 70% 强度 4x8 总负荷: {week_load(rm, 0.70, 4, 8) / 1000:.2f} t")
计划生成器在此基础上做三件事:按动作池分配百分比区间、控制单周负荷增幅不超过 5%、在连续两周完成度低于 90% 时自动降档。
一周计划的样例输出
| 星期 | 动作 | 强度 (%1RM) | 组数 × 次数 |
|---|---|---|---|
| 周一 | 深蹲 | 72% | 4 × 6 |
| 周三 | 卧推 | 70% | 4 × 8 |
| 周五 | 硬拉 | 75% | 3 × 5 |
| 周六 | 辅助训练 | — | 3 × 12 |
辅助训练不计入主项吨位,但会记录 RPE,用于判断疲劳是否堆积。
反馈闭环:让计划跟着人走
计划发出去只是开始。每次训练后记录两个数字就够了:完成度和主观疲劳(RPE)。连续两周完成度低于 90%,降档 5%;RPE 持续高于 9,先砍辅助项再动主项。
这套规则很朴素,但它让”坚持”变成一个可维护的系统——而系统,恰恰是忍耐最可靠的形态。
小结
- 目标先量化,再谈强度;
- 1RM 与百分比是计划的原材料;
- 周期化的本质是管理疲劳,不是排列组合;
- 反馈闭环比完美的初始计划更重要。
下一篇文章聊聊数据接入:把训练记录变成 AI 可以消费的结构化输入。




