训练复盘与渐进追踪
贯穿训练全周期的反馈回路:体测→规划→日常训练→复盘→调整→训练→复盘→...
本skill串联已有模块,不替代它们:
- 课后"感觉弱"的深度诊断 → 用 training-feedback-adjustment
- 阶段结束体测对比 → 用 member-phase-evaluation
- 训练前恢复评估 → 用 recovery-check
- 本skill负责:每次课后的结构化记录 + 跨课追踪 + 周汇总
核心原则(借鉴Lzheng,适配教练场景)
- 体感先于数字 — 会员说"这个动作别扭"比RPE数字重要。先问感受,再看数据。
- 重复问题必须追问 — 同一个问题连续出现2次,不能说"下次注意",必须问根因(重量?休息?动作本身?)。
- 没数据不硬编 — 记录不全标"待补全",不猜。
- 微调不重写 — 复盘产出的是下次课的微调指令,不是重写整个方案。
模块一:单次训练复盘(每次课后)
触发
- 教练说"今天XX练完了"、"复盘一下"
- 会员在飞书发"练完了"、"今天好累"等
- 教练转发会员课后反馈
流程
Step 1:拉取本次训练记录
import sys; sys.path.insert(0, '/root/.hermes/profiles/coach/knowledge')
import coach_feishu as cf
cf.bind_member('会员名', 'system')
c = cf.CoachFeishu()
# 拉最近的训练记录(含本次)
logs = c.get_my_training_logs(limit=10)
# 按训练日期排序,取本次和上一次同类训练
Step 2:问3个体感问题(如果会员没主动说)
发给会员(或由教练转发):
快速复盘,回复数字/文字即可:
1. 整体RPE?(1-10)
2. 哪个动作最有感觉?哪个最别扭?
3. 有没有哪里不舒服?(没有就说"没有")
会员已主动提供足够信息时跳过。
Step 3:对比上次同类训练
从训练记录中找到上次同部位/同动作的记录,对比:
- 重量变化(↑加了 / →持平 / ↓降了)
- 次数变化(完成度)
- RPE变化(↑更累 / →持平 / ↓更轻松)
- 会员反馈变化(上次别扭的这次好了没)
Step 4:判断+微调
| 情况 | 判断 | 微调方向 |
|---|---|---|
| RPE稳定 + 有感觉 + 无不适 | ✅ 保持 | 下次可试探+2.5-5kg |
| RPE偏高(≥8) + 能完成 | ⚠️ 观察 | 保持重量,观察1-2次 |
| RPE偏高 + 某动作别扭 | 🔧 调整 | 降该动作重量10%,加节奏控制 |
| RPE偏低(≤4) + 太轻松 | 📈 加量 | 下次+2.5-5kg 或+1-2组 |
| 同一问题连续2次出现 | ❓ 追问 | 必须问根因,不重复"下次注意" |
| 有疼痛/不适 | 🛑 警告 | 停该动作,建议教练关注 |
Step 5:写入复盘记录
把微调结论写入飞书训练计划表的对应记录备注字段:
# 更新训练计划表中下次课的备注
# 备注格式:"[复盘微调] {日期} {结论}"
同时更新训练阶段方案表的「核心策略」字段(追加,不覆盖):
# 读现有核心策略 → 追加一行复盘结论 → PUT回去
输出格式
📊 {会员名} {日期} 训练复盘
本次训练:{部位}分化
━━━━━━━━━━━━━━━━━━━━━━━━
体感反馈:
• 整体RPE:{X}/10
• 最有感觉:{动作}
• 最别扭:{动作}({原因})
• 不适:{有/无}
对比上次{同部位}训练:
• {动作1}:{重量变化},{RPE变化}
• {动作2}:{重量变化},{RPE变化}
下次调整:
✅ {动作} → 保持/加量/降重
🔧 {动作} → 具体调整方案
❓ {动作} → 需要教练确认{问题}
复盘已写入训练计划表。
模块二:周训练趋势汇总(每周一次)
触发
- cron每周日晚自动触发
- 教练说"这周总结一下"、"看看XX这周练得怎么样"
流程
Step 1:拉取本周所有训练记录
# 拉最近7天的训练记录
logs = c.get_my_training_logs(limit=20)
# 按日期过滤本周
Step 2:统计关键指标
- 训练完成率(计划几次,实际来了几次)
- 各部位训练量(总组数)
- RPE趋势(本周平均 vs 上周平均)
- 重量渐进(哪些动作加了,哪些没动)
- 重复问题(本周出现2次以上的问题)
Step 3:生成周报
输出格式
📋 {会员名} {X月X日-X日} 周训练报告
训练完成:{X}/{计划}次({完成率}%)
━━━━━━━━━━━━━━━━━━━━━━━━
📊 各部位训练量:
• 胸:{X}组(目标{Y}组)
• 背:{X}组(目标{Y}组)
• 腿:{X}组(目标{Y}组)
• 肩/臂:{X}组
📈 渐进情况:
• {动作}:{重量}→{重量} ✅
• {动作}:持平 ➡️
• {动作}:↓降了 ⚠️
💡 重复问题(出现2次+):
• {问题描述} → 建议:{根因分析+调整方向}
🎯 下周建议:
1. {具体建议}
2. {具体建议}
3. {具体建议}
Step 4:判断是否需要调整阶段方案
| 触发条件 | 动作 |
|---|---|
| 连续2周RPE持续偏高(≥8) | 建议降低阶段方案强度 |
| 某动作连续2周停滞 | 建议换变体或调整训练变量 |
| 训练完成率<60% | 建议调整频率或时间安排 |
| 重复问题无改善 | 升级给教练人工判断 |
| 整体渐进正常 | 保持当前方案 |
需要调整时,生成建议但不直接改方案,等教练确认。
模块三:阶段过渡检查(衔接member-phase-evaluation)
触发
- cron检测:某会员的训练阶段方案到了计划结束日期±3天
- 教练说"XX该评估了"
流程
- 读取当前阶段方案的结束日期
- 汇总该阶段的训练完成情况(总次数、各部位总量、渐进幅度)
- 提醒教练:该安排体测+阶段评估了
- 教练安排体测后 → 调用
member-phase-evaluation做正式评估
本模块不做正式评估,只做"该评估了"的提醒和训练数据预汇总,避免和member-phase-evaluation重叠。
输出格式
⏰ {会员名} 阶段过渡提醒
当前阶段:{方案名称}({开始日期} ~ {结束日期})
距离结束:{X}天
📊 本阶段训练概况:
• 完成:{X}/{计划}次
• 主要动作渐进:{摘要}
• 待解决问题:{从周报汇总}
👉 建议:安排体测 + 阶段评估
体测后调用 member-phase-evaluation 做正式验收。
数据流(与已有表的关系)
┌─────────────────┐
│ 体测记录表 │ ← 体测数据(起点/终点)
│ tblM1vihl9o... │
└────────┬────────┘
│
┌────────▼────────┐
训练阶段方案表 ◄────│ 阶段评估表 │ ← 阶段验收结论
tblvI30e9oBInF5C │ tblCin0aaP0... │
│ └─────────────────┘
│ ▲
│ 核心策略字段 │ 模块三:阶段过渡提醒
│ (追加复盘微调) │
▼ │
┌─────────────────┐ │
│ 日常训练计划表 │ ◄───────┘
│ tbluIBp9vPq... │
│ 备注字段: │
│ [复盘微调]结论 │
└─────────────────┘
▲
│ 模块一:单次复盘写入
│ 模块二:周汇总读取
│
┌────┴────────────┐
│ 教练/会员反馈 │
│ 体感 + RPE │
└─────────────────┘
使用规则
- 先查再写 — 写入前必须读取当前记录,确认没有重复。
- 追加不覆盖 — 核心策略字段只能追加,不能整段重写(会抹掉历史)。
- 日期用
date确认 — 不用会话元数据日期。 - 教练评分/决策不代填 — AI给数据结论,教练做判断。
- 关联字段格式 —
[record_id],不是纯字符串。 - 毫秒时间戳 — 日期字段用毫秒时间戳写入。
- 验证写入 — 写完必须读回验证,用raw API分页全量拉取。