Files
Study/skills/self-study-agent/feedback/self-testing.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

156 lines
4.1 KiB
Markdown

# F1: 자기 평가 (Self-Testing)
## 개요
메모리에 있는 지식으로 문제를 생성하고, 메모리에서만 답변하여 테스트하는 루프입니다.
## 루프 구조
```
최대 20회 반복:
1. 문제 생성
2. 답변 시도 (메모리만 사용)
3. 피드백 생성 (에이전트 자체)
4. 메모리 업데이트
5. 적응 (난이도/유형 조절)
종료 조건:
- 정답률 95% 이상
- 또는 20회 완료
```
## Step 1: 문제 생성
### 문제 유형과 비중
| 유형 | 비중 | 설명 | 예시 |
|------|------|------|------|
| **직접 회상** | 40% | 정의, 개념, 사실 묻기 | "Rust의 Ownership이란?" |
| **적용 질문** | 30% | 실제 상황에서의 활용 | "이 상황에서 Ownership을 어떻게 사용?" |
| **변형 질문** | 20% | 같은 내용 다른 표현 (암기 방지) | "Ownership의 장단점은?" |
| **연결 질문** | 10% | 개념 간 관계 묻기 | "Ownership과 Borrowing의 관계는?" |
### 난이도 분포
| 난이도 | 비중 | 기준 |
|--------|------|------|
| **쉬움** | 30% | 단순 회상, 정의, 사실 |
| **보통** | 40% | 적용, 분석 |
| **어려움** | 30% | 종합, 평가, 창의적 사고 |
### 문제 생성 규칙
1. 메모리에서 주제 관련 지식 추출
2. 각 개념/팩트에 대해 문제 생성
3. 유형별 비중 준수
4. 난이도별 비중 준수
5. 이전 오답 유형 고려 (약한 유형 비중 증가)
### 문제 생성 프롬프트
```
메모리에 있는 "{topic}" 관련 지식으로 문제를 생성하십시오.
문제 유형: {type} (직접 회상/적용/변형/연결)
난이도: {difficulty} (쉬움/보통/어려움)
규칙:
- 메모리에서만 답변할 수 있어야 함
- 명확하고 구체적인 문제
- 부분 정답 가능하도록 설계
- 관련 개념과 연결된 문제 선호
문제:
```
## Step 2: 답변 시도
### 규칙
1. **메모리에서만 정보 꺼냄** — 외부 소스 접근 금지
2. **생각하는 과정 표시** — 어떤 지식을 기반으로 답변하는지
3. **확신도 표시** — 0-100% 확신도
### 답변 형식
```json
{
"question_id": "q_001",
"user_answer": "사용자의 답변",
"confidence": 85,
"thinking_process": "메모리에서 X 개념과 Y 팩트를 기반으로 답변"
}
```
## Step 3: 피드백 생성
### 피드백 생성 규칙
에이전트가 직접 피드백을 생성합니다:
1. **정답 여부 판단**
- 핵심 키워드 포함 여부
- 개념적 정확성
- 부분 정답 처리
2. **피드백 내용**
- 정답: "맞습니다. {설명}"
- 오답: "틀렸습니다. 정답은 {정답}입니다. {왜 그런지 설명}"
- 부분 정답: "부분적으로 맞습니다. {맞은 부분}은 정확하지만, {틀린 부분}은..."
3. **관련 개념 링크**
- 틀린 문제의 관련 개념 자동 식별
- "이 문제는 {개념A}, {개념B}와 연결되어 있습니다"
4. **추가 학습 제안**
- "이 부분을 더 공부하려면 {추천 자료}를 확인하세요"
### 피드백 형식
```json
{
"question_id": "q_001",
"is_correct": false,
"partial_credit": 0.5,
"feedback": "틀렸습니다. 정답은 'Rust의 Ownership은 메모리 안전성을 보장하는 시스템으로, 각 값에 대해 하나의 소유자가 존재합니다'입니다.",
"explanation": "Ownership은 Rust의 핵심 개념으로...",
"related_concepts": ["Borrowing", "Lifetimes", "Move Semantics"],
"source_reference": "https://doc.rust-lang.org/book/ch04-01.html",
"suggested_review": "Rust Book Chapter 4.1을 다시 읽어보세요"
}
```
## Step 4: 메모리 업데이트
### 정답 시
```json
{
"concept_id": "concept_001",
"confidence": 0.85,
"last_reviewed": "timestamp",
"next_review": "FSRS 알고리즘으로 계산",
"correct_count": 5,
"total_count": 6
}
```
### 오답 시
```json
{
"concept_id": "concept_001",
"confidence": 0.4,
"last_reviewed": "timestamp",
"next_review": "1일 후 (간격 초기화)",
"correct_count": 2,
"total_count": 6,
"weak_points": ["관련 개념1", "관련 개념2"],
"review_notes": "추가 학습 필요"
}
```
## Step 5: 적응
`feedback/adaptation.md` 참조