6e21501331
- SKILL.md: Main skill definition with 20-iteration feedback loop - config.yaml: Pipeline parameters (loop, sources, questions, adaptation) - pipeline/: 5-step learning pipeline (topic selection → source discovery → extraction → synthesis → report) - feedback/: 4 feedback mechanisms (self-testing, spaced repetition, interleaving, adaptation) - Learning science principles: active recall, spaced repetition, desirable difficulty, interleaving, delayed feedback
141 lines
2.7 KiB
Markdown
141 lines
2.7 KiB
Markdown
# 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))
|
||
```
|
||
|
||
## 카드 관리
|
||
|
||
### 카드 생성
|
||
|
||
학습 세션에서 추출된 각 개념/팩트에 대해 자동 생성:
|
||
|
||
```json
|
||
{
|
||
"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 알고리즘에 따라 업데이트:
|
||
|
||
```json
|
||
{
|
||
"id": "card_001",
|
||
"interval_days": 7,
|
||
"due_date": "7일 후 timestamp",
|
||
"reps": 3,
|
||
"lapses": 0,
|
||
"stability": 2.5,
|
||
"retrievability": 0.85
|
||
}
|
||
```
|
||
|
||
## 복습 세션
|
||
|
||
### 복습할 카드 선택
|
||
|
||
1. 오늘 예정된 카드 우선
|
||
2. 연체된 카드 다음
|
||
3. 새로운 카드는 설정된 수만큼 (기본 20개/일)
|
||
|
||
### 복습 흐름
|
||
|
||
```
|
||
복습할 카드 목록
|
||
│
|
||
▼
|
||
각 카드에 대해:
|
||
│
|
||
├── 문제 표시
|
||
│
|
||
├── 답변 시도
|
||
│
|
||
├── 정답 확인
|
||
│
|
||
└── Rating 선택 (again/hard/good/easy)
|
||
│
|
||
└── 카드 간격 업데이트
|
||
```
|
||
|
||
## 메모리 저장 형식
|
||
|
||
```json
|
||
{
|
||
"cards": [
|
||
{
|
||
"id": "card_001",
|
||
"front": "...",
|
||
"back": "...",
|
||
"interval_days": 7,
|
||
"due_date": "2024-01-15",
|
||
"reps": 3,
|
||
"lapses": 0,
|
||
"stability": 2.5
|
||
}
|
||
],
|
||
"stats": {
|
||
"total_cards": 100,
|
||
"due_today": 15,
|
||
"due_this_week": 45,
|
||
"overdue": 5,
|
||
"retention_rate": 0.88
|
||
}
|
||
}
|
||
```
|