openGym 减载周(Deload)机制揭秘:3 次卡滞自动触发 0.9 系数恢复,告别平台期
【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym
openGym 是一款自托管的健身与自重训练记录工具:规划训练计划、记录卧推/深蹲等动作(支持超级组、热身、有氧)、查看肌肉被训练、疲劳还是去训练状态,并支持从 FitNotes / Strong / Hevy 导入数据。它的进阶引擎内置了减载周(Deload)机制——连续 3 次训练卡在同一重量上时,自动按0.9 系数下调目标重量,帮你科学度过平台期。
什么是减载周?为什么需要它
增力训练遵循"超量恢复":重量不断上探 → 身体恢复不过来 → 力量停滞。传统的解法是人工安排减载周,但多数人要么忘了安排,要么不知道何时该减。
openGym 的答案是:把减载写进进阶策略里,由训练日志自动驱动。你只需要照常记录,引擎替你判断"该减了"。
源码里的三个关键常量:0.9 系数与触发次数
所有减载逻辑集中在 progression.js,核心常量一目了然:
| 常量 | 值 | 含义 |
|---|---|---|
DELOAD_FACTOR | 0.9 | 减载系数,目标 1RM 打九折(见 progression.js) |
DELOAD_AFTER | linear/double/time 为3,Greyskull 为 1 | 连续卡滞几次后触发减载 |
DELOAD_FACTOR_MIN / MAX | 0.5 / 0.95 | 用户可调系数的上下限 |
不同进阶策略对"卡滞"的容忍度不同:线性进阶(linear)和双重进阶(double)允许连续 3 次未达标,而 Greyskull(以力竭收尾)1 次失败就触发减载——因为它的最后一组本来就要做到力竭,失败意味着负荷明显超出当前能力。
卡滞是如何被检测的:stallCount 的判定逻辑
每次打开训练,引擎都会从日志"现场重算",没有任何缓存计数器,改错一组的记录立刻得到修正的下一步目标(见 progression.js 顶部注释)。
1. 先判定单次训练成败(readSession)
- 组完成且次数 ≥ 目标 →达标(hit)
- 组完成但次数不足、或组数没练够 →未达标(miss)
- 只统计计划内的组数,加练的"彩蛋组"不影响判定
2. 再数连续卡滞次数(stallCount)
从最近一次训练往回数,数未达标的场次。这里有两个巧妙的"逃生阀",避免误伤:
- 🔄重量一变,计数清零:减载后的较轻重量上偶发一次失误,不会立刻触发下一次减载(防止"减载螺旋")
- 📈双重进阶下,打破当前重量最佳即算进步:只要在爬坡次数,就不会被判为卡滞
0.9 系数如何恢复:Epley 公式 + 重量网格对齐
触发减载后,openGym 走的是更精细的Epley 1RM 估算路径(selectDeloadCandidate):
- 估 1RM:用 Epley 公式
重量 × (1 + 次数/30)估算卡滞目标的 1RM(epley1RM) - 打九折:目标 1RM × 0.9(deloadTarget1RM)
- 反向求解:反推出"什么重量 × 什么次数"最接近打折后的 1RM
- 对齐重量网格:结果必须落在杠铃片能装出的重量上,且绝不超过卡滞时的重量——所以 5 kg 起步的空杆不会掉到 2.5 kg,而是保持 5 kg、改为更少的次数
候选项按"1RM 误差最小 → 次数改动最小 → 负荷更大"的字典序排序,结果可预测、可解释。界面上每次给出的目标都会附带一句原因,例如:
Stalled 3 sessions — Epley deload to 47.5 kg for 8 reps. (连续 3 次卡滞 —— 按 Epley 公式减载到 47.5 kg × 8 次)
如何在 App 中使用:设置、开关与自定义系数
查看与建议来源:打开一次训练时,每个动作的目标重量都是引擎实时推算的,点开就能看到"为什么是这个数字"(见 session-start.js)。
手动安排减载日:在编辑训练计划中(RoutineEdit.jsx)打开"Deload routine"(减载训练日)开关——这类训练日按你自己填的组数/次数/重量开始,不计入自动进阶基线,但正常出现在历史和统计里,适合做每周/每四周的计划性减载。
自定义减载系数:在动作的进阶设置面板中(sheets.jsx)有"Deload 1RM (%)"步进器,默认 90%,以 5% 为步长,可在 50%–95% 之间调整,且每个动作独立设置——比如硬拉保守一点调到 85%,腿推激进一点保持 95%。
小结:把"平台期"交给算法
| 特性 | openGym 的做法 |
|---|---|
| 触发条件 | 连续 3 次(Greyskull 1 次)未达标 |
| 减载幅度 | 默认按 Epley 1RM 的 90%,可逐动作调整 |
| 安全保障 | 减载后重量变轻即重置计数,不会连续减载 |
| 数据基础 | 纯函数重算,无缓存状态,改记录即修正 |
不需要记忆任何公式,也不需要第三方教练——把训练照常练、如实记,openGym 的减载周机制会在你卡住时自动按下"恢复键"。更多背景可查看 CHANGELOG.md 中 "Deloads aim at an estimated 1RM" 的完整说明。
【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考