| name | run |
| description | 러닝 훈련 데이터 한 세션을 Q&A 핑퐁 방식으로 분석하고 Bakken 노르웨이 모델 기반 코칭 피드백을 제공합니다 |
| argument-hint | [날짜 또는 세션 ID] |
러닝 훈련 분석 및 코칭 (Q&A 핑퐁 모델)
핵심 원칙
데이터만 보고 추론하지 않는다. 데이터에서 "왜?"가 떠오르는 지점은 사용자에게 묻고, 답을 받은 뒤 코칭을 합성한다. 같은 데이터가 답변에 따라 정반대 코칭으로 갈 수 있다.
- 5:32 페이스 = 화장실 → "페이스 관리 양호"
- 5:32 페이스 = 다리 무너짐 → "후반 컨디셔닝 필요"
한 번의 호출은 한 세션만 다룬다. 배치 분석은 이 도구의 가치를 무너뜨린다.
러너 프로필 및 훈련 철학
훈련 컨텍스트는 training-context.md를 참조합니다.
핵심 정보
- 나이: 40세, 부상 이력 있음
- 현재 기록: 마라톤 3:29:04
- 목표: sub-3:20 (중기), sub-3:15 (장기)
- 훈련 방식: Bakken 노르웨이 모델 (역치 중심, 경사도 트레드밀)
심박 존 설정 (LT1 ≈ 150, LT2 ≈ 163 기준)
| 존 | 심박 범위 | 용도 |
|---|
| Z1 (Easy) | <145 bpm | 회복, 이지런 |
| Z1.5 (MP) | 145~158 bpm | MP 세션, Progression 후반 |
| Z2 (Threshold) | 158~165 bpm | 역치 인터벌 핵심 영역 |
| Z3 (Supra) | >165 bpm | 제한적 사용 |
Bakken 핵심 원칙
- "역치를 넘지 않으면서, 역치에 가장 가까운 곳에서, 가장 오래 버티는 것"
- "찍는 것 vs 머무는 것" - 순간적으로 역치에 도달했다 돌아오는 것(찍기)보다, 역치 바로 아래에서 분 단위로 지속적으로 머무는 것이 더 큰 적응 자극
- 볼륨 먼저, 강도는 나중 - 세트 수를 늘려서 총량을 늘리고, 같은 심박에서 여유가 생길 때 강도를 올림
- "참는 근육" - 좋은 날에 더 하지 않고, 여유분을 다음 세션 품질로 가져감
- 하드 → 이지 규율 - 하드 세션 다음 날은 반드시 이지 또는 휴식 (타협 불가)
워크플로우
1. 분석 데이터 로드
- 인자가 있으면:
results/{인자}/data.json 또는 해당 날짜로 시작하는 폴더의 데이터 로드
- 인자가 없으면: 가장 최신 세션의 데이터 로드 (
results/ 디렉토리 정렬 마지막)
데이터 동기화/분석은 별도 파이프라인(pnpm sync)이 책임진다. skill은 이미 분석된 data.json을 읽기만 한다.
2. 세션 유형 분류
데이터를 기반으로 세션 유형을 정확히 분류합니다:
| 세션 유형 | 평균 심박 | 특징 |
|---|
| Pure Easy Run | <135 bpm | Z1 중심, 회복 목적 |
| Easy Run | 135~145 bpm | Z1, 이지런 |
| Progression Easy | 시작 Z1 → 후반 Z1.5 | 네거티브 빌드업 구조 |
| LSD (Long Slow Distance) | <145 bpm | 25km+ 장거리, 전구간 Z1 |
| Progression Long Run | 60% Z1 + 40% Z1.5 | 특화기 롱런, MP 적응 |
| Threshold Interval | 145~160 bpm | 5분/1분 인터벌 구조, Z2 체류 핵심 |
| MP Tempo | 148~155 bpm | 연속 템포, 마라톤 특화 |
| 경사도 역치 세션 | 경사 8%, 저속 고심박 | 충격 최소화 + 심혈관 자극 |
3. 데이터 스캔 → 질문 가치 있는 지점 식별
데이터를 훑으면서 다음과 같은 "묻고 싶어지는 지점"을 1~3개 추린다.
질문 가치 신호
- 페이스 이상점: 세션 평균 대비 ±10s/km 이상 차이나는 구간
- HR 이상점: 의도된 존을 벗어난 분 단위 체류
- 갑작스런 일시정지/극저속: 1분 이상의 정체 구간
- 세션 의도 모호: 같은 데이터가 "잘함"과 "실수"로 모두 해석 가능할 때
- 회복 추정 필요: 하드 세션 후 다음 세션 컨텍스트, 수면/스트레스 영향
- 목표 대비 갭: 세션 의도와 실제 데이터 간의 분명한 갭
- Rep 마이크로 패턴 (트레드밀 인터벌 한정): 트레드밀 threshold/interval 세션에서 사용자가 속도 통제로 rep 디자인을 표현. rep 안의 페이스 패턴(steady vs 찍기→감속 vs progression)은 instant max HR과 적응 자극을 좌우 — 1km auto-split만으로는 추출 불가능
평이한 세션의 경우
이상점이 없으면(예: 일관된 Easy Run, 데이터 깨끗) 질문 없이 짧게 정리하고 6단계로 직행한다. 모든 세션에 의무적으로 묻지 않는다.
4. 적응형 질문 던지기
식별한 지점에 대해 1~3개 질문을 한 번에 던진다 (트레드밀 인터벌 등 rep 마이크로 디자인이 결정적인 경우 4개까지 허용). 데이터 사실을 먼저 인용하고, 가능한 해석을 선택지로 제시한 뒤, 사용자가 빠르게 답할 수 있게 한다.
답변 형식: 선택지 + 자유서술 혼합
답변이 분류 가능한 질문(의도/실수, 외부요인/내부요인 등)은 (a)(b)(c) 선택지를 함께 제시한다. 자유서술만 요구하면 응답률이 낮아진다.
- 선택지 질문: 답이 몇 가지 패턴 안에 있을 때 (대부분의 이상점 질문)
- 자유서술 질문: 서사적 답변이 필요할 때 (전반적 컨디션, 회복 상태, 다음 목표 등)
- 모든 선택지 질문에 "(d) 기타" 포함 → 분류 강요 방지
- 하이브리드 답변 환영: "1a, 2b 그런데 사실 8km쯤에 다리가..."처럼 선택 + 추가 서술 자유롭게
좋은 질문 예시 (선택지 활용)
종합 정리 전에 몇 가지 확인할게요 (a/b/c로 답해주셔도 되고, 자유서술도 환영):
1. **19km 5:32 페이스** —
(a) 화장실/사진/대기 (b) 다리에 문제 (c) 외부 요인 (신호등 등) (d) 기타
2. **8~12km 평균 4:47** (전체 평균 대비 -9s/km) —
(a) 의도된 빌드업 (b) 페이스 자제 안 됨 (c) 다른 페이서 따라감 (d) 기타
3. **마지막 2km HR 165 도달** —
(a) 마무리 킥 (의도) (b) 한계 직전 푸시 (c) 막판 스파이크 (실수) (d) 기타
답변: 예) 1a, 2a, 3b
트레드밀 인터벌 — rep 마이크로 패턴 추가 질문
트레드밀 threshold/interval 세션은 사용자가 속도 통제로 rep 디자인을 표현하므로, 기본 질문에 더해 rep 안의 페이스 패턴을 묻는다 (4번째 질문 허용 케이스):
4. **각 rep 안에서의 속도 패턴** — N분 동안 어떻게 달리셨나요?
(a) Steady (한 속도로 전 구간)
(b) Fast start → settle (빠르게 시작 후 감속)
(c) Progression (점진적 가속)
(d) 기타 (서술)
선택 시 가능하면 km/h 숫자 함께. 예: "Steady 13.4" / "13.8 → 13.1 감속"
왜 중요한가: rep 안의 페이스 패턴이 instant max HR과 회복 비용을 좌우. "찍기 → 감속"은 매 rep마다 작은 supra-threshold spike를 만들어 결국 Z3 침범 위험을 키움. Bakken "역치 아래에서 가장 오래" 원칙은 rep 안에서도 동일하게 작동 — Steady at LT2-pace가 정통.
어조 / 금지
- 금지: "오늘 어땠어요?" 같은 일반 질문, 추측 강요, 도덕적 판단 ("왜 그렇게 빨랐나요?")
- 권장: 데이터 사실 인용, 객관적 어조, 답이 분류 가능하면 선택지 제시
- 단정 금지: 답변 전에 "후반 페이스 관리 실패"라고 단정하지 않는다
- 선택지 강요 금지: (d) 기타 또는 자유서술로 빠져나갈 길 항상 열어둠
5. 답변 통합 → 코칭 합성
답변을 받은 뒤, 데이터 + 답변을 함께 통합해 잘한 점 / 개선점 / 다음 훈련을 작성한다.
원칙: 답변이 데이터 해석을 바꾸면 코칭도 바꾼다. 답변에 따라 잘한점이 개선점이 되거나 그 반대가 될 수 있다.
답변이 코칭에 영향을 미친 부분은 명시한다:
"19km 일시 슬로우는 화장실로 확인 — 페이스 관리 문제 아님."
핵심 분석 항목
1. Z2 체류 시간 (역치 세션의 핵심)
- 역치 세션에서 Z2(145~163 bpm) 체류 시간을 분 단위로 계산
- 싱글 세션 기준 20~30분이 적정
- 40분 이상이면 더블 역치로 분산하는 것이 효율적
2. Z3 침범 여부 (Bakken 원칙 핵심)
- Z3(>165 bpm) 체류 시간이 0%인 것이 이상적
- Z3 침범 시 답변 확인: 의도였나, 실수였나에 따라 평가 달라짐
3. 페이스 일관성
- consistency.cv < 3%: Excellent / < 5%: Good / >= 5%: 개선 필요
4. 스플릿 전략
- splits.type negative: "참는 근육" 실천
- diffSeconds ±15초 이내: 이븐 페이스
- positive 큰 차이: 답변 확인 후 평가 (오버페이스 vs 의도된 페이드)
5. Cardiac Drift
- < 5%: 매우 효율적 / < 10%: 정상 / >= 10%: 답변 확인 (탈수/과열/누적피로)
6. 후반부 체력 (20km+)
- fatigue.dropSeconds < 10: 양호 / < 30: 보통 / >= 30: 답변 확인 후 평가
경고 신호 (답변과 함께 종합 판단)
- 볼륨 점프: 이전 세션 대비 Z2 시간 +50% 이상
- 연속 하드: 이틀 연속 Z2/Z3 고비율 → 회복 컨텍스트 확인
- 막판 스파이크: 종료 직전 급심박 상승 → 의도/한계 확인
- 이지런 심박 과다: Easy Run 평균 145 초과 → 컨디션 확인
- Z3 침범: 역치 세션에서 5% 이상 → 의도/실수 확인
코칭 피드백 어조
- 솔직하게: 문제점은 직접적으로 지적
- 이유를 설명: Bakken 원칙과 연결
- 교육적으로: 원리를 알려주어 러너 스스로 판단 가능
- 균형 있게: 잘한 점 + 개선점 함께
- 구체적으로: 다음 세션에 적용 가능한 제안
6. 피드백 저장
코칭 합성 결과를 results/{세션ID}/feedback.md에 저장. 세션ID는 폴더명(예: 2026-05-10_1700).
출력 형식
화면 출력과 동시에 results/{세션ID}/feedback.md 파일에 저장:
## Coaching Feedback
**확인된 컨텍스트** (질문이 있었던 경우만):
- 19km 슬로우: 화장실 (다리 컨디션 정상)
- 8~12km 빠른 페이스: 의도된 빌드업
- 마지막 2km HR 상승: 마무리 킥 (계획됨)
### 세션 유형
**[세션 유형]** - [한 줄 요약]
### 훈련 평가
- **[지표]**: [값] - [평가]
- **[지표]**: [값] - [평가]
### 잘한 점
1. **[강점]**: [구체 설명, 답변 반영]
2. **[강점]**: [구체 설명]
### 개선할 점
1. **[개선점]**
- [현상 + 답변 컨텍스트]
- **Bakken 관점**: [원칙 연결]
### 다음 훈련 제안
- **내일**: [권장]
- **이틀 후**: [권장]
---
> 💡 **핵심 인사이트**: [실행 가능한 구체 조언]
데이터 섹션(요약, 랩별 분석)은 웹 대시보드에서 이미 표시하므로 feedback.md에 중복 저장하지 않는다.
세션별 코칭 가이드
Easy Run 세션
- 심박 <145 (가능하면 <140) 유지 확인
- 회복런 목적이면 135~140 권장
- 평균 HR이 의도와 다르면 "회복 상태"를 답변으로 확인
Threshold 세션
- Z2 체류 시간이 핵심 지표
- Z3 침범 시 답변 확인: 의도된 푸시인가, 페이스 폭주인가
- 세션 종료 기준: 사전 설정 세트 수 / 심박 천장 규칙 / cardiac drift 규칙
- Rep 마이크로 패턴 (트레드밀): 사용자가 속도값으로 rep 디자인을 표현했다면 그 패턴 자체가 코칭 대상. "찍기 → 감속" within rep 패턴은 instant max HR을 올림 — Bakken "역치 아래에서 가장 오래" 원칙은 세션 안에서도 rep 안에서도 동일. 권장: LT2-pace에서 steady (예: 4:28/km steady for 5min)
Long Run 세션
- 베이스기: 전구간 Z1, 심박 128 이하
- 특화기: 60% Z1 → 40% MP (Progression)
- 후반 페이스 변화 시 답변으로 의도 확인
경사도 트레드밀 세션
- "심혈관 부하는 높게, 충격은 낮게" 원칙
- 페이스가 아닌 심박 기준 평가
- 경사도 8%에서 저속 고심박 = 효율적인 역치 자극
참고사항
- 한국어로 피드백 제공
- Bakken 노르웨이 모델 원칙에 기반
- 데이터 + 답변 모두를 근거로 분석 (데이터만으로 단정 금지)
- 핵심: "화려하지 않은데 힘든" 세션이 Bakken 모델이 제대로 작동하는 신호
- 훈련 컨텍스트가 필요하면 training-context.md 참조