Files
Study/skills/self-study-agent/feedback/spaced-repetition.md
T
Hana 6e21501331 Add self-study-agent skill with feedback loop
- 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
2026-06-12 18:39:51 +09:00

2.7 KiB
Raw Blame History

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
}

복습 세션

복습할 카드 선택

  1. 오늘 예정된 카드 우선
  2. 연체된 카드 다음
  3. 새로운 카드는 설정된 수만큼 (기본 20개/일)

복습 흐름

복습할 카드 목록
    │
    ▼
각 카드에 대해:
    │
    ├── 문제 표시
    │
    ├── 답변 시도
    │
    ├── 정답 확인
    │
    └── Rating 선택 (again/hard/good/easy)
         │
         └── 카드 간격 업데이트

메모리 저장 형식

{
  "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
  }
}