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)
130 lines
3.8 KiB
Markdown
130 lines
3.8 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: 메모리 업데이트
|
|
|
|
정답 시에는 해당 개념의 신뢰도를 높이고 간격을 늘립니다. 오답 시에는 신뢰도를 낮추고 간격을 초기화하며 약점을 기록합니다. 결과를 메모리에 저장합니다.
|
|
|
|
## Step 5: 적응
|
|
|
|
`feedback/adaptation.md` 참조
|