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
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
# F4: 적응 로직 (Adaptation)
|
||||
|
||||
## 개요
|
||||
|
||||
자기 평가 결과를 분석하여 다음 세션의 전략과 파라미터를 자동 조절합니다.
|
||||
|
||||
## 메트릭 정의
|
||||
|
||||
### 핵심 메트릭
|
||||
|
||||
| 메트릭 | 계산 방법 | 목표 |
|
||||
|--------|-----------|------|
|
||||
| **정답률** | 정답 수 / 전체 문제 수 | ≥ 0.85 |
|
||||
| **유형별 정답률** | 유형별 정답 수 / 유형별 문제 수 | ≥ 0.70 |
|
||||
| **주제별 정답률** | 주제별 정답 수 / 주제별 문제 수 | ≥ 0.70 |
|
||||
| **난이도별 정답률** | 난이도별 정답 수 / 난이도별 문제 수 | 0.6-0.8 |
|
||||
| **간격 유지율** | 예정된 복습 수행 비율 | ≥ 0.80 |
|
||||
| **개념 연결도** | 연결된 개념 비율 | ≥ 0.30 |
|
||||
|
||||
### 메트릭 수집
|
||||
|
||||
각 자기 평가 루프 후 메트릭 계산:
|
||||
|
||||
```json
|
||||
{
|
||||
"session_id": "session_001",
|
||||
"iteration": 5,
|
||||
"metrics": {
|
||||
"accuracy": 0.75,
|
||||
"type_accuracy": {
|
||||
"direct_recall": 0.85,
|
||||
"application": 0.70,
|
||||
"variation": 0.65,
|
||||
"connection": 0.80
|
||||
},
|
||||
"topic_accuracy": {
|
||||
"rust_async": 0.80,
|
||||
"ownership": 0.70
|
||||
},
|
||||
"difficulty_accuracy": {
|
||||
"easy": 0.95,
|
||||
"medium": 0.75,
|
||||
"hard": 0.55
|
||||
},
|
||||
"concepts_mastered": 8,
|
||||
"concepts_total": 12
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 적응 로직
|
||||
|
||||
### 1. 정답률 기반 적응
|
||||
|
||||
```
|
||||
if 정답률 < 0.5 and 연속 3회:
|
||||
→ 난이도 하향
|
||||
→ 학습 속도 감소
|
||||
→ 쉬운 문제 비중 증가
|
||||
|
||||
if 정답률 > 0.9 and 연속 5회:
|
||||
→ 난이도 상향
|
||||
→ 새로운 주제 탐색
|
||||
→ 어려운 문제 비중 증가
|
||||
```
|
||||
|
||||
### 2. 유형별 적응
|
||||
|
||||
```
|
||||
for each 유형 in [직접 회상, 적용, 변형, 연결]:
|
||||
if 유형별 정답률 < 0.5:
|
||||
→ 해당 유형 문제 비중 증가 (+0.1)
|
||||
elif 유형별 정답률 > 0.9:
|
||||
→ 해당 유형 문제 비중 감소 (-0.05)
|
||||
```
|
||||
|
||||
### 3. 난이도 적응
|
||||
|
||||
```
|
||||
if 쉬운 문제 정답률 > 0.95:
|
||||
→ 보통 문제 비중 증가
|
||||
|
||||
if 보통 문제 정답률 > 0.85:
|
||||
→ 어려운 문제 비중 증가
|
||||
|
||||
if 어려운 문제 정답률 < 0.4:
|
||||
→ 어려운 문제 비중 감소
|
||||
→ 보통 문제 비중 증가
|
||||
```
|
||||
|
||||
### 4. 주제별 적응
|
||||
|
||||
```
|
||||
for each 주제 in 메모리:
|
||||
if 주제별 정답률 < 0.6:
|
||||
→ 해당 주제 재학습 세션 추가
|
||||
elif 주제별 정답률 > 0.9:
|
||||
→ 해당 주제 심화 탐색
|
||||
```
|
||||
|
||||
## 파라미터 조절
|
||||
|
||||
### 문제 생성 파라미터
|
||||
|
||||
```json
|
||||
{
|
||||
"type_distribution": {
|
||||
"direct_recall": 0.4,
|
||||
"application": 0.3,
|
||||
"variation": 0.2,
|
||||
"connection": 0.1
|
||||
},
|
||||
"difficulty_distribution": {
|
||||
"easy": 0.3,
|
||||
"medium": 0.4,
|
||||
"hard": 0.3
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 적응 예시
|
||||
|
||||
```
|
||||
원래: direct_recall=0.4, application=0.3, variation=0.2, connection=0.1
|
||||
적용 질문 정답률 0.45 (낮음):
|
||||
→ direct_recall=0.35, application=0.35, variation=0.2, connection=0.1
|
||||
|
||||
어려운 문제 정답률 0.35 (낮음):
|
||||
→ easy=0.35, medium=0.45, hard=0.20
|
||||
```
|
||||
|
||||
## 적응 이력
|
||||
|
||||
적응 변경 시 메모리에 기록:
|
||||
|
||||
```json
|
||||
{
|
||||
"adaptation_log": [
|
||||
{
|
||||
"timestamp": "2024-01-10T10:00:00Z",
|
||||
"trigger": "low_accuracy_variation",
|
||||
"changes": {
|
||||
"type_distribution.variation": {"old": 0.2, "new": 0.25}
|
||||
},
|
||||
"reason": "변형 질문 정답률 0.45 (기준 미달)"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 메모리 저장 형식
|
||||
|
||||
```json
|
||||
{
|
||||
"current_strategy": {
|
||||
"type_distribution": {...},
|
||||
"difficulty_distribution": {...},
|
||||
"interleaving_ratio": 0.3
|
||||
},
|
||||
"adaptation_history": [...],
|
||||
"metrics_history": [
|
||||
{
|
||||
"iteration": 1,
|
||||
"accuracy": 0.60
|
||||
},
|
||||
{
|
||||
"iteration": 5,
|
||||
"accuracy": 0.75
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user