学会动作以后,每天坚持只需要按一下开始
放下手机 · 闭眼跟练 · 全程语音引导 · 自动排休息日
名字取自「闻鼓而进,闻金而退」——鼓声响起即前进。在这里,语音就是鼓声:听见指令就行动,闻鼓起练!
零基础请先跟视频学会动作。
每个动作开始前虽然有语音要点提示,但文字无法替代视觉学习。建议先去 B 站搜索动作名称(猫牛流动、死虫式、臀桥、俯卧撑等),跟着视频反复跟练,把动作刻进肌肉记忆。
学会以后,这个 App 才是它真正的价值所在。
你是不是也这样:
- 跟着视频练,每隔几十秒抬头看屏幕确认节奏,注意力全在看视频上
- 自己练,数着次数想着下一组做什么,脑子比身体还累
- 办了健身卡,去了三次就吃灰
- 久坐腰痛,好两天又犯两天,知道该运动但就是坚持不下来
问题不在毅力,在于「坚持」这件事被设计得太反人性了。
这个 App 把训练简化成两个动作:打开 → 按开始。剩下的全部交给语音。
- 全程语音播报动作名称、次数、要点,不用看屏幕
- 语音节拍计数,不用自己数
- 动作顺序、组间休息、时长全部自动编排,不用记
- 开始以后手机往旁边一放,闭眼跟练就行
- 自动判断今天是抗阻日还是放松日,不用自己算隔了几天
- 训练完自动打卡记录,周统计一目了然
18 分钟,不用想任何事,跟着语音做完就行。
肌肉群恢复需要 48 小时。抗阻动作隔天做,拉伸动作每天坚持。
App 会自动判断:如果昨天完成了完整抗阻训练,今天就是放松日(只做拉伸,约 12 分钟);否则今天正常抗阻。晨练和晚练各自独立判定,互不影响。
也可以手动切换模式,系统建议优先,手动选择仅本次生效。
这个 App 没有服务器,没有账号,没有云同步。
你的训练记录、个人设置、动作参数调整,全部存在浏览器的 localStorage 里。数据只存在于你的设备上,不会通过网络发送到任何地方。
这意味着:
- 没有注册,没有登录 — 打开就用,不需要输入任何个人信息
- 训练数据不上传 — 打卡记录、抗阻 / 放松标记、每周统计,都只在本地
- 没有追踪,没有广告 — 不收集任何使用数据,不埋任何分析脚本
- 清除浏览器数据 = 清除全部记录 — 换设备或清缓存后需要重新开始,因为没有云端备份
- 可随时手动清除 — 在设置页点「重置」即可清除本页所有数据
如果你希望跨设备同步,那这个 App 不适合你。它被设计成一个纯粹本地的小工具,简单、私密、不联网。
- 全程语音引导 — TTS 中文播报动作名称、次数、要点提示,语音节拍计数,放下手机就能练
- 两套训练方案 — 晨练 18 分钟(7 个动作)、晚练 20 分钟(8 个动作),覆盖热身 / 抗阻 / 拉伸完整流程
- 隔天抗阻 — 自动判断抗阻日 / 放松日,肌肉群 48 小时恢复,拉伸每天坚持
- 参数可调 — 每个动作的次数、时长、休息时间都能在设置里改,适配不同体能水平
- 结束提醒音效 — 每个阶段结束前 5 秒滴滴提醒,最后 1 秒高音长嘀,不用盯时间
- 环境音 — 内置轻节拍 / 晨曦和弦 / 雨声三种氛围音,训练时自动播放(可选)
- 本地打卡 — 自动记录每次训练数据,区分抗阻 / 放松,统计每周抗阻运动时长
- PWA 离线可用 — 添加到手机主屏幕,断网也能用,像原生 App 一样全屏运行
- 零后端零追踪 — 无服务器、无注册、无登录、无数据上传、无分析脚本,训练记录只存在你的设备上
- 自动匹配时段 — 可设置按时间段自动进入对应训练,早上打开直接进晨练
git clone https://github.com/touchren/exercise-helper.git
cd exercise-helper
# 用任意静态文件服务器
python3 -m http.server 8080浏览器打开 http://localhost:8080 即可。
- 手机浏览器访问你的部署地址
- 按开始,确认语音播报正常
- 添加到主屏幕(iOS:Safari 分享 → 添加到主屏幕;Android:Chrome 菜单 → 添加到主屏幕)
- 从主屏幕打开,全屏体验
- 选择「晨练助手」或「晚练助手」
- 点击「开始」
- 关掉静音,调大音量
- 放下手机,跟着语音练
iOS 用户注意:手机侧边静音键打开时,网页 TTS 会被静音。训练前请关闭静音。
唤醒脊柱、激活核心、温和拉伸。3 个抗阻动作(死虫式 / 臀桥 / 俯卧撑)计入每周有效运动时长,合计约 8 分钟。
| 序号 | 动作 | 类型 | 规格 | 休息 |
|---|---|---|---|---|
| 1 | 猫牛流动 | 热身 | 8 次循环 | — |
| 2 | 死虫式 | 抗阻 | 10 次/侧 × 3 组 | 组间 30 秒 |
| 3 | 仰卧单膝抱胸 | 拉伸 | 30 秒/侧 | — |
| 4 | 臀桥 | 抗阻 | 10 次 × 3 组 | 组间 30 秒 |
| 5 | 婴儿式 | 拉伸 | 30 秒 | — |
| 6 | 俯卧撑 | 抗阻 | 10 次 × 3 组 | 组间 30 秒 |
| 7 | 狮身人面式 | 拉伸 | 60 秒 | 训练结束 |
强化后链、拉伸胸肩、巩固核心。3 个抗阻动作(单杠离心下放 / 自重深蹲 / 鸟狗式)合计约 8 分钟。
| 序号 | 动作 | 类型 | 规格 | 休息 |
|---|---|---|---|---|
| 1 | 猫牛流动 | 热身 | 8 次循环 | — |
| 2 | 靠墙天使 | 激活 | 15 次 × 1 组 | — |
| 3 | 单杠离心下放 | 抗阻 | 3 次 × 3 组 | 组间 45 秒 |
| 4 | 门框胸肩拉伸 | 拉伸 | 20 秒 → 休息 15 秒 → 40 秒 | — |
| 5 | 自重深蹲 | 抗阻 | 12 次 × 3 组 | 组间 45 秒 |
| 6 | 站立股四头肌拉伸 | 拉伸 | 30 秒/侧 | — |
| 7 | 鸟狗式 | 抗阻 | 10 次/侧 × 3 组 | 组间 30 秒 |
| 8 | 婴儿式 | 拉伸 | 40 秒 | 训练结束 |
抗阻动作最后一组做完后不设休息时间,直接接拉伸动作。
exercise-helper/
├── index.html ← 选择页(首页 / 闻鼓而动入口)
├── app.js ← 选择页逻辑(卡片渲染、自动匹配、时间段设置)
├── workouts.js ← 运动注册表(名称、路径、时间段默认值)
├── storage.js ← 选择页 localStorage 配置
├── styles.css ← 选择页样式
├── sw.js ← Service Worker(选择页)
├── manifest.json ← PWA 清单
├── icon.svg ← 应用图标
├── morning/ ← 晨练训练页
│ ├── workout-data.js ← 动作定义 + 步骤序列构建器
│ ├── engine.js ← 训练状态机 + 计时编排
│ ├── audio.js ← TTS + 音效 + 环境音
│ ├── storage.js ← 设置 + 打卡记录
│ ├── settings.js ← 设置页交互
│ ├── records.js ← 记录页交互
│ ├── app.js ← UI 控制器、屏幕导航、Wake Lock
│ └── ... ← index.html / styles.css / sw.js / manifest.json
├── evening/ ← 晚练训练页(结构同 morning/)
├── .gitignore ← Git 忽略文件
└── README.md ← 项目说明
| 关注点 | 方案 | 为什么 |
|---|---|---|
| 框架 | 无框架,Vanilla JS | 零构建、零依赖,静态文件直接部署 |
| 语音 | Web Speech API | 浏览器原生,免费,中文支持好 |
| 音效 | Web Audio API | 动态生成,不需要音频文件 |
| 离线 | Service Worker + PWA | 首次加载后断网可用,可安装到主屏幕 |
| 存储 | localStorage | 零配置,数据 100% 本地,不联网不追踪 |
| 屏幕常亮 | Wake Lock API + canvas 兜底 | HTTP 下也能用 |
打开设置页,可以直接调整:
- 每个动作的次数 / 时长
- 组间休息时间
- 结束提醒提前秒数
- 语音速度 / 音量
- 环境音类型 / 音量
所有修改保存在本地,不影响其他用户。
- 在
workouts.js添加一条记录:
{
id: 'noon',
name: '午间拉伸',
subtitle: '全程8分钟 · 放松肩颈',
description: '午休时放松肩颈和腰背',
path: './noon/',
schedule: { enabled: false, start: '12:00', end: '14:00' }
}- 复制
morning/目录,修改workout-data.js中的动作定义 - 完成
python3 -m http.server 8080
# 或 nginx / caddy / 任意静态服务器# 用 caddy
docker run -d --name caddy -p 80:80 \
-v /path/to/exercise-helper:/usr/share/caddy \
-v /path/to/Caddyfile:/etc/caddy/Caddyfile \
caddy:latestFork 本仓库,开启 GitHub Pages,即可免费获得一个在线地址。
Q: iOS 上语音没有声音? A: 检查手机侧边静音键是否打开。iOS 的静音开关会同时静音网页 TTS。关闭静音后重新开始训练。
Q: 可以离线使用吗? A: 可以。首次加载后 Service Worker 会缓存所有资源,之后断网也能正常使用。
Q: 数据会上传到服务器吗? A: 不会。这个 App 没有服务器。所有设置和训练记录都存在浏览器的 localStorage 里,数据只存在于你的设备上,不会通过网络发送到任何地方。没有注册、没有登录、没有云同步。清除浏览器数据或换设备后记录会丢失,因为没有云端备份。
Q: 和跟着视频练有什么区别? A: 视频跟练适合学动作,这个 App 适合学会了以后坚持。视频需要一直抬头看屏幕确认节奏,注意力被打断;语音引导让你全程闭眼专注动作本身,开始以后不用碰手机,节奏由系统控制。一个用来学,一个用来练。
Q: 动作标准吗? A: 动作清单参考了柳叶刀腰痛系列研究的建议(稳定训练 + 力量训练 + 牵伸训练的组合),由 AI 辅助细化。但这个 App 不适合用来学习标准动作。 建议先去 B 站搜索各动作名称,跟着视频反复练习标准姿势,学会以后再用这个 App 日常坚持。动作要点会在训练前语音播报。
《柳叶刀》2018 年发表的腰痛系列研究对 41 项随机对照试验的网络荟萃分析显示:
- 稳定训练 + 力量训练的组合是缓解腰痛最有效的运动干预方式(P-score 96%)
- 有氧运动、力量训练、牵伸训练单独使用也显著优于不运动
- 推荐非药物干预作为一线方案:教育 + 自我管理 + 恢复正常活动 + 运动
来源:The Lancet, 2018, Comparative effectiveness of exercise interventions for low back pain
2024 年柳叶刀发表的 WalkBack 随机对照试验证实:
- 规律运动可显著降低腰痛复发风险(风险比 0.72)
- 干预组腰痛复发的中位天数为 208 天,对照组仅 112 天
基于上述研究,两套训练方案均采用「稳定 + 力量 + 牵伸」的组合模式:
- 抗阻动作(死虫式 / 臀桥 / 俯卧撑 / 单杠离心下放 / 自重深蹲 / 鸟狗式)对应力量训练和核心稳定
- 拉伸动作(猫牛流动 / 仰卧单膝抱胸 / 婴儿式 / 狮身人面式 / 门框胸肩拉伸 / 站立股四头肌拉伸)对应牵伸训练
- 每周 3 次以上、每次约 8 分钟抗阻,即可达到柳叶刀建议的有效运动量
欢迎提交 Issue 和 PR。
- 发现 Bug → 提 Issue
- 有新动作想法 → 提 Issue 讨论
- 想贡献代码 → Fork → 修改 → 提 PR
MIT
以下为 AI 辅助生成的训练清单原文,供参考。
早起12分钟温和训练(实际约18分钟,取较高值)
执行逻辑:热身→抗阻→拉伸→抗阻→拉伸→抗阻→拉伸收尾
3个抗阻动作(计入每周有效运动时长):死虫式、臀桥、俯卧撑
4个拉伸放松(脊柱养护):猫牛流动、仰卧单膝抱胸、婴儿式、狮身人面式
抗阻动作最后一组做完以后不设休息时间,直接接上拉伸动作
序号 标准名称 训练规格 休息时间 核心动作要点
1 猫牛流动(Cat-Cow) 6-8次循环 开始训练 四点跪撑,双手在肩正下方、双膝在髋正下方;全程用鼻子拱背呼气、塌腰吸气;缓慢活动整条脊柱,幅度适中不猛甩
2 死虫式(Dead Bug) 8-10次/侧 × 3组 组间45秒 全程仰卧,腰背完全贴紧地面;对侧手脚同步缓慢伸展、收回;腰椎不许拱起,动作匀速不甩动
3 仰卧单膝抱胸 每侧保持25-30秒 不休息 仰卧,双手轻抱单膝拉向胸口;对侧腿自然伸直贴地;温和牵拉下腰背,请勿暴力猛拉
4 臀桥(Glute Bridge) 8-10次 × 3组 组间45秒 仰卧屈膝,脚跟踩地与肩同宽;收紧臀部向上顶髋至肩-髋-膝呈一条斜线;顶峰停留1秒;臀部发力,请勿用腰顶起
5 婴儿式(Balasana) 静态保持30秒 不休息 跪姿,双膝分开,臀部缓慢坐向脚跟;上身前趴,额头贴垫;放松腰背、髋部及大腿前侧
6 俯卧撑 8-10次 × 3组 组间45秒 手略宽于肩,手肘斜向后45°,身体从头到脚保持一条直线;下放吸气2秒,推起呼气;杜绝塌腰、撅屁股
7 狮身人面式 静态保持20-30秒 训练结束 俯卧,手肘落在肩膀正下方,前臂贴地;骨盆贴紧垫子,胸口向前上方打开;不刻意挤压腰椎
饭后半小时后20分钟锻炼
执行逻辑:热身→激活→抗阻→拉伸→抗阻→拉伸→抗阻→拉伸收尾
3个抗阻动作(计入每周有效运动时长):单杠离心下放、自重深蹲、鸟狗式
抗阻动作最后一组做完以后不设休息时间,直接接上拉伸动作
序号 标准名称 训练规格 休息时间 核心动作要点
1 猫牛流动(Cat-Cow) 6-8次循环 开始训练 四点跪撑,全程用鼻子拱背呼气、塌腰吸气;缓慢活动整条脊柱
2 靠墙天使 15次 × 1组 不休息 后背贴墙,手臂90度贴墙滑动;下背贴墙,不耸肩不挺腰
3 单杠离心下放 3-5次 × 3组 组间45秒 跳上单杠,缓慢下放3-5秒;核心收紧,不塌腰不晃荡
4 门框胸肩拉伸 20秒→休息15秒→40秒 不休息 前臂贴门框,手肘与肩同高;胸口打开,不耸肩不挺腰
5 自重深蹲 10-12次 × 3组 组间45秒 双脚与肩同宽,臀部后坐;腰背挺直,膝盖与脚尖同向
6 站立股四头肌拉伸 每侧保持30秒 不休息 同侧手抓脚踝,膝盖向后;骨盆中立,不前倾不歪胯
7 鸟狗式 8-10次/侧 × 3组 组间30秒 对侧手脚同步伸展,至与背部齐平;骨盆不歪斜,核心收紧
8 婴儿式(Balasana) 静态保持40秒 训练结束 双膝与髋同宽,臀部坐向脚跟;额头贴垫,放松腰背髋部