ab79a2a72b
- Replace static pipeline diagram with self-driving loop (check memory → decide → execute → repeat) - Remove detailed memory structure JSON schemas from all files - Remove honcho-specific storage strategy from skill (storage is caller's responsibility) - Add auto_repeat section to config.yaml (enabled, max_sessions_per_chat, stop_conditions) - Add rule 8 (auto-repeat) and rule 9 (termination conditions) to execution rules - Add session transition logic to adaptation.md (due cards → review, incomplete → study)
2.4 KiB
2.4 KiB
F2: 간격 반복 (Spaced Repetition)
FSRS 알고리즘
기본 원리
간격 반복은 정보를 점점 더 긴 간격으로 반복하여 장기 기억을 강화하는 기법입니다.
FSRS 파라미터
w = [0.4, 0.6, 2.4, 5.8, 4.93, 0.94, 0.86, 0.01, 1.49, 0.14, 0.94, 2.18, 0.05, 0.34, 1.26, 0.29, 2.61]
간격 계산
새 카드:
- 최초 학습 후: 1일
- 첫 번째 복습 후: 3-7일 (난이도 기반)
- 두 번째 복습 후: 7-30일
- 이후: 지수적 증가 (최대 365일)
Rating별 간격:
| Rating | 의미 | 간격 조정 |
|---|---|---|
again |
잊어버림 | 간격 초기화 (1일) |
hard |
노력해서 회상 | 간격 × 1.2 |
good |
정확히 회상 | 간격 × FSRS 공식 |
easy |
쉽게 회상 | 간격 × 1.3 × FSRS 공식 |
안정성(Stability) 계산
new_stability = stability * exp(
(w6 - w7 * delta) * (w8 - w9 * (rating-1)) * w10 +
(1 - w11) * exp(w12 - w13 * (rating-1))
)
단, again일 때:
new_stability = w14 * max(stability * w15, 1) * min(new_stability, w16 * stability)
간격(Interval) 계산
interval = stability * target_retention
interval = max(min_interval, min(interval, max_interval))
카드 관리
카드 생성
학습 세션에서 추출된 각 개념/팩트에 대해 자동 생성:
{
"id": "card_001",
"concept_id": "concept_001",
"front": "Rust의 Ownership이란?",
"back": "메모리 안전성을 보장하는 시스템으로, 각 값에 대해 하나의 소유자가 존재합니다",
"difficulty": 0.6,
"interval_days": 0,
"due_date": "timestamp",
"reps": 0,
"lapses": 0
}
카드 업데이트
복습 후 FSRS 알고리즘에 따라 업데이트:
{
"id": "card_001",
"interval_days": 7,
"due_date": "7일 후 timestamp",
"reps": 3,
"lapses": 0,
"stability": 2.5,
"retrievability": 0.85
}
복습 세션
복습할 카드 선택
- 오늘 예정된 카드 우선
- 연체된 카드 다음
- 새로운 카드는 설정된 수만큼 (기본 20개/일)
복습 흐름
복습할 카드 목록
│
▼
각 카드에 대해:
│
├── 문제 표시
│
├── 답변 시도
│
├── 정답 확인
│
└── Rating 선택 (again/hard/good/easy)
│
└── 카드 간격 업데이트
카드 데이터와 통계를 메모리에 저장합니다.