# 스킬 품질 평가 + 자기학습 시스템 — 최종 설계서

**버전**: v1.2 (최종 확정)
**날짜**: 2026-03-25
**근거 미팅**: `memory/meetings/2026-03-24-skill-eval-system-design.md` (R3~R4)
**상태**: 설계 확정, 구현 대기

---

## 1. 설계 철학

**한 줄 요약**: AI가 스스로 평가하고, 스스로 개선하고, 그 개선을 축적하여 전문성을 키우는 시스템.

**핵심 원칙**:
- "결과입니다, 확인해주세요" → 금지. AI가 먼저 자가 검증 후 보고.
- 빠른 구현 우선. rubric 84개 선작성 같은 인간 병목 배제.
- 학습은 축적되되, 편향 복리 누적은 TTL로 차단.

**기각된 접근법** (R3~R4에서 탈락):
- 사용 빈도 로깅 Phase 0 → 기각 (업무 의존 변수, 측정 불가)
- 84개 중 일부만 관리 → 기각 (전부 필요)
- rubric.md + golden-examples.md 84개 선작성 → 기각 (인간 병목, "빠르게"와 충돌)
- Meta-Skill Evaluator → 보류 (순환 참조 미해결)
- 월간 학습 감사 → 기각 (누가 하나? TTL로 대체)
- Tier 시스템 (A/B/C 빈도 차등) → 기각 (챔피언 모델 도입으로 분류 불필요)
- 매번 2개 생성 Pairwise → 기각 (초회만 강화 프로세스, 이후 챔피언 비교)
- 시간 기반 챔피언 갱신 (30일 고정) → 기각 (성과 기반으로 대체)

---

## 2. 2축 평가 체계 (오딘)

**사업용 스킬 (Business Skills)** — Output Quality 중심
- 대상: ThreadAuto 카드뉴스/영상, 네이버 블로그, 티스토리, InsuWiki 콘텐츠, InsuRo, InfoKeyword, MediScan, 집필 관련
- 평가자: AI 자가 평가 + 온라인 전문가 비교 + 제이회장님 피드백
- 특징: 제이회장님의 Passive Feedback이 최종 ground truth

**시스템용 스킬 (System Skills)** — Process Efficiency 중심
- 대상: dispatch, task-timer, skill-creator, agent-meeting, 3docs, QC, 개발 워크플로우 전반
- 평가자: AI 자가 평가 + Cross-model 검증 (Venus/Atlas)
- 특징: AI가 제이회장님보다 더 잘 아는 영역. 자율 학습 + GitHub 벤치마킹.

---

## 3. Champion/Challenger 모델 (제이회장님 제안 + 로키 보완)

84개 스킬 전부에 동일하게 적용. Tier 시스템을 대체.

### 3-1. 초회 챔피언 선정 — 강화 프로세스 (제이회장님 확정)

초회에 투자해서 높은 기준선을 잡고, 이후는 가볍게 유지하는 구조.

**사업용 스킬 초회**:
1. A, B 두 개 생성 (다른 전략/온도/프롬프트 변형)
2. 평가 축 기준으로 비교 → 더 나은 쪽 선택
3. **온라인 전문가 벤치마킹** (WebSearch 자동) → 전문가 아웃풋과 비교
4. 부족한 점 / 개선사항 도출
5. 개선점 반영한 최종 아웃풋 생성
6. **Delta 검증**: 개선 전 선택본 vs 최종본 점수 비교. 역행 시 개선 전 선택본이 챔피언 (fallback)
7. 검증 통과한 최종 아웃풋 = **초회 챔피언 등극**
8. 개선사항을 learnings에 저장 (다음 실행부터 바로 적용)

**시스템용 스킬 초회**:
1. A, B 두 개 생성
2. 평가 축 기준으로 비교 → 더 나은 쪽 선택
3. **Cross-model 검증** (Venus/Atlas) → 온라인 벤치마킹 대신
4. 부족한 점 / 개선사항 도출
5. 개선점 반영한 최종 아웃풋 생성
6. **Delta 검증**: 역행 시 fallback
7. 초회 챔피언 등극
8. 개선사항 learnings 저장

**벤치마킹 실패 처리 (graceful degradation)**:
- WebSearch 결과가 부실할 때 (결과 0건, 관련성 낮음)
- → A/B 선택본을 그대로 챔피언으로 세움
- 억지 벤치마킹으로 오염되는 것보다 나음

### 3-2. 일상 실행 (두 번째부터)

- 새 아웃풋 1개만 생성 (챌린저) — 이미 learnings 반영된 상태
- 저장된 챔피언과 비교 (평가 축 기준, 순서 랜덤)
- 챌린저가 나으면 → 챔피언 교체 + "어떤 점이 개선됐는가" learnings 저장
- 챔피언이 나으면 → 버림
- 토큰: 1배 + 비교 판정 소량

### 3-3. 평가 축 (로키 보완 — 스킬당 3~5줄)

84개 full rubric은 기각 유지. 대신 스킬별 **"뭘 기준으로 비교할지" 3~5줄**만 정의.

예시:
- **satori-cardnews**: 훅 강도 / 시각 밸런스 / CTA 명확성 / 정보 밀도 / 가독성
- **blog-dominance**: 키워드 적합성 / 구조 완성도 / 전문성 깊이 / CTA 자연스러움
- **systematic-debugging**: 원인 특정 정확도 / 재현 경로 명확성 / 수정 안전성

AI가 자동 생성 가능. 제이회장님 검토 불필요. 84개 x 3~5줄 = 한 시간이면 전부 생성.

### 3-4. 비교 순서 랜덤화 (로키 보완)

챔피언을 항상 먼저 보여주면 위치 편향(Position Bias) 발생.
매 비교 시 챔피언/챌린저 순서를 랜덤으로 섞음. 구현 1줄.

### 3-5. 챔피언 갱신 — 성과 기반 (로키 보완 + 아누 종합)

시간 기반(30일 고정) 대신 **성과 기반 갱신**:

- **안정 (5연속 방어)**: 건드리지 않음. 제이회장님 수동 트리거 시에만 재초기화.
- **불안정 (3연속 교체)**: 자동 재초기화 (초회 강화 프로세스 재실행). 기준이 흔들리는 신호.
- **30일 최대 안전망**: 30일간 한 번도 실행 안 된 스킬만 해당. 사용 중인 스킬은 성과 기반만 적용.
- **재초기화 횟수 상한**: 스킬당 **월 2회**까지. 초과 시 수동 개입 플래그 발생. 무한 재초기화 방지.
- 만료/교체된 챔피언은 `champions-archive/`에 보존 (삭제 안 함)

### 3-6. 토픽이 다른 경우의 비교 방식

카드뉴스처럼 매번 토픽이 다른 스킬:
- **내용**이 아니라 **"만드는 방식의 질"**을 비교
- 평가 축(3-3)이 이 기준이 됨
- "이번 아웃풋이 챔피언 수준의 퀄리티를 달성했는가?" 기준 비교

### 3-7. Learnings 스킬별 격리

- learnings는 스킬별로 격리 적용 (카드뉴스 학습이 블로그에 오염되면 안 됨)
- source tagging에 `skill_name` 필드 포함
- 참조 시 "같은 스킬의 learning만 주입"하는 필터 적용

---

## 4. 사업용 스킬 — 3겹 평가 파이프라인

### 4-1. Champion/Challenger (매 실행, 1차 평가)
- 위 Section 3 적용
- 챌린저가 챔피언을 이기지 못하면: 챔피언 수준에 도달할 때까지 개선 시도 (max 2회)

### 4-2. 온라인 전문가 벤치마킹 (초회 + 주기적, 2차 평가)
- **실행 시점**: 초회 챔피언 선정 / 재초기화(3연패) / 주기적 갱신
- **일상 실행에서는 실행하지 않음** (챔피언이 이미 벤치마킹 거친 고품질 기준선)
- 온라인에서 같은 주제의 전문가 아웃풋 검색/수집 (WebSearch 자동)
- AI가 자기 아웃풋과 전문가 아웃풋을 비교 → 부족한 점 식별
- 부족점 원인 분석 → 개선된 아웃풋 재생성
- 주의: 외부 소스를 곧바로 truth로 쓰지 않음. "참고 자료"로만 활용 (로키 보안 지적)
- 벤치마킹 실패 시 graceful degradation (3-1 참조)

### 4-3. Passive Feedback Loop (로키 제안, 3차 / 최종 보정)
- 제이회장님께 아웃풋 전달 (기존 워크플로우 그대로)
- 제이회장님이 수정한 부분을 diff로 자동 감지
- diff = 학습 데이터 (가장 순수한 ground truth)
- 제이회장님 추가 작업 0. 기존 워크플로우 변경 없음.
- 순환 참조 완전 제거 (평가자가 인간)

---

## 5. 시스템용 스킬 — 자율 학습 파이프라인

### 5-1. Champion/Challenger + 자가 평가
- Section 3의 Champion/Challenger 동일 적용 (초회: cross-model 검증)
- 추가: 실행 효율성(토큰, 시간, 오류율) 자체 평가
- 개선 사항 learnings에 기록

### 5-2. Cross-model 검증 (프로메테우스/제이회장님)
- Venus(Gemini) + Atlas(GPT)로 편향 차단
- 불일치 시 다수결(2/3). 전원 불일치 시 제이회장님 판단 대기.
- 우선순위 위계: 제이회장님 > cross-model 합의 > AI 자가평가

### 5-3. GitHub 학습 패턴
- 외부 고품질 스킬 벤치마킹 (기존 패턴 유지)
- Claude Code 업데이트 반영
- 학습 출처 반드시 source tagging

---

## 6. 전체 자가 리뷰 플로우

### 6-1. 초회 플로우 (챔피언 미존재 시)
```
A, B 두 개 생성
  → 평가 축 기준 비교 → 나은 쪽 선택
  → 온라인 전문가 벤치마킹 (사업용) 또는 Cross-model 검증 (시스템용)
  → 부족점 도출 → 개선점 반영 → 최종 아웃풋 생성
  → Delta 검증 (역행 시 fallback)
  → 초회 챔피언 등극
  → 개선사항 learnings 저장
```

### 6-2. 일상 플로우 (챔피언 존재 시)
```
스킬 실행
  → 아웃풋 생성 (챌린저, learnings 반영)
  → 챔피언과 비교 (평가 축 기준, 순서 랜덤)
  → 챔피언 미달이면 개선 재생성 (max 2회)
  → 보고
  → 챌린저가 챔피언을 이겼으면 챔피언 교체
  → 비교 결과에서 learnings 추출/저장
```
※ 온라인 벤치마킹은 일상 플로우에 포함하지 않음. 초회/재초기화/주기적 갱신 시에만 실행.

---

## 7. 학습 축적 사이클 (제이회장님 핵심 비전)

```
초회 챔피언 선정에서 첫 learnings 생성
  → 다음 실행 시 참조 → learnings 반영된 챌린저 생성
  → 챔피언과 비교 → 개선점 추출
  → learnings 축적 (스킬별 격리, source tagging)
  → 또 실행 → 또 비교 → 또 개선
  → 챔피언 수준 점진 상승
  → 전문성 축적 (복리 성장)
```

---

## 8. 안전장치 (프로메테우스 + 로키)

### 8-1. TTL 90일 + Archive (learnings)
- 90일 지난 학습 항목 → `learnings-archive.jsonl`로 자동 이동
- 아카이브 항목은 일상 실행 시 참조 안 함 (성능 보호)
- 필요 시 수동 복원 가능
- 아카이브에서 반복 패턴 발견 시 정규 학습으로 승격 가능
- 목적: 편향 복리 누적 차단 + 데이터 보존

### 8-2. 챔피언 성과 기반 갱신
- 안정(5연속 방어): 유지 / 불안정(3연속 교체): 재초기화
- 30일 미사용 시에만 시간 기반 만료
- 재초기화 상한: 스킬당 월 2회. 초과 시 수동 개입 플래그.
- 교체/만료 챔피언은 `champions-archive/`에 보존

### 8-3. Source Tagging (프로메테우스)
- 모든 학습 항목에 출처 태그 + skill_name 필수
- 태그 종류: `self-review` / `cross-model` / `jay-feedback` / `online-expert` / `github-learn` / `champion-battle`
- `jay-feedback` 항목은 immutable (파일 시스템 레벨 보호)

### 8-4. max_retry=2 (프로메테우스)
- 자가 리뷰 후 재생성은 최대 2회
- 무한 재생성 방지. 2회 후에도 미달이면 그대로 보고 + "개선 실패" 플래그.

### 8-5. Delta 검증 (프로메테우스)
- "개선했다"고 주장할 때 v1→v2 구체적 차이점 명시 필수
- 초회 챔피언 선정에서도 동일 적용 (역행 시 fallback)
- 개선 환각(Improvement Hallucination) 방지

### 8-6. 비교 순서 랜덤화 (로키)
- 챔피언/챌린저 제시 순서를 매번 랜덤
- 위치 편향(Position Bias) 차단

### 8-7. 우선순위 위계 (프로메테우스 + 제이회장님)
1. 제이회장님 판단 (최우선)
2. Cross-model 합의 (Venus + Atlas)
3. AI 자가 평가 (최하위)

### 8-8. learnings.jsonl — Append-only + 스킬 격리 (로키)
- 수정/삭제 불가, 추가만 가능
- 참조 시 같은 skill_name의 learning만 주입 (크로스 오염 방지)
- 오염 학습의 영구 전파 방지

### 8-9. 벤치마킹 실패 처리 (로키)
- WebSearch 결과가 부실하면 (결과 0건, 관련성 낮음)
- A/B 선택본을 그대로 챔피언으로 세움 (graceful degradation)
- 억지 벤치마킹 오염 방지

---

## 9. 파일 구조 (구현 시)

```
scripts/
  output-review.py          # 자가 리뷰 파이프라인 메인 (~100줄)

memory/skill-learning/
  learnings.jsonl            # 활성 학습 축적 (append-only, TTL 90일, 스킬별 격리)
  learnings-archive.jsonl    # TTL 만료 학습 아카이브
  champions/
    {skill-name}.json        # 현재 챔피언 (아웃풋 + 메타데이터 + 전적)
  champions-archive/
    {skill-name}/             # 교체/만료된 챔피언 히스토리

memory/skill-feedback/
  {skill-name}/
    corrections.jsonl        # 제이회장님 피드백 (immutable)
    passive-diffs.jsonl      # Passive Feedback diff 기록

skills/shared/
  skill-registry.json        # 84개 스킬 분류 (business/system)
  eval-axes.json             # 84개 스킬별 평가 축 3~5줄
```

---

## 10. MVP 타임라인

**Week 1**:
- output-review.py (Champion/Challenger 모드 + 초회 강화 프로세스) 구현
- eval-axes.json (84개 스킬 평가 축 자동 생성)
- learnings.jsonl 구조 + TTL 아카이브 로직 + 스킬 격리 필터
- skill-registry.json (84개 business/system 분류)

**Week 2**:
- 사업용 파일럿 2개 (ThreadAuto 카드뉴스, 블로그)
- 초회 챔피언 선정 (강화 프로세스: A/B → 벤치마킹 → 개선 → 등극)
- Passive Feedback diff 감지 로직

**Week 3**:
- 시스템용 파일럿 2개 (초회: cross-model 검증)
- Cross-model 연동 (Venus/Atlas)

**Week 4**:
- 결과 검증 → 전체 확산 판단
- 성과 기반 갱신 로직 (5연승/3연패) 검증

---

## 11. 리스크 & 완화

**초회 챔피언 품질 과대평가**
- 5단계 거쳤으니 "충분히 좋겠지"라는 신뢰가 생기지만, 벤치마크가 부실했을 수 있음
- 완화: Delta 검증(역행 시 fallback) + 벤치마킹 실패 시 graceful degradation

**챔피언 고착화 (Stagnation)**
- 완화: 성과 기반 갱신 (불안정 시 자동 재초기화)
- 안정 상태도 제이회장님이 수동 트리거 가능

**재초기화 비용 누적**
- 불안정 스킬이 자주 재초기화되면 비용 증가
- 완화: 스킬당 월 2회 상한. 초과 시 수동 개입 플래그.

**"둘 다 나쁜" 초기 문제**
- 완화: 온라인 벤치마킹이 절대 품질 기준 역할
- 벤치마킹 실패 시: cross-model에 "전문가 수준인가?" 절대 평가 추가

**판정자(LLM) 편향**
- 완화: 비교 순서 랜덤화 + 평가 축 명시 + cross-model 검증
- verbosity bias 등 알려진 편향에 대한 판정 프롬프트 보정

**Passive Feedback 데이터 부족**
- 제이회장님이 안 보시는 스킬은 학습 데이터 없음
- 완화: 자주 확인하시는 사업용 스킬부터 적용

**편향 복리 누적**
- 완화: TTL 90일(초기 3개월은 60일)이 1차 방어선
- 스킬별 learnings 격리가 2차 방어선

**외부 소스 주입 (온라인 전문가 비교)**
- 완화: 외부 소스는 "참고"만. truth로 직접 반영 금지.
- 학습 저장 시 source: online-expert 태깅
- 벤치마킹 실패 시 강제 적용 안 함 (graceful degradation)

---

## 12. 설계 합의 기록

**Round 4 참여자**: 오딘, 헤르메스, 프로메테우스, 로키(DA), 아누(종합), 제이회장님(직접 참여)

**채택 내역**:
- **오딘**: 2축 분리 (Business/System)
- **헤르메스**: output-review.py 경량 구현 + skill-creator eval 트리거 전용 발견
- **프로메테우스**: TTL + source tagging + max_retry=2 + delta 검증 + 우선순위 위계
- **로키(DA)**: Champion 진화 + Passive Feedback + 평가 축 최소화 + 순서 랜덤 + 성과 기반 갱신 + graceful degradation + 재초기화 상한 + learnings 격리
- **아누**: 사업용/시스템용 초회 분리 + TTL archive + 전체 종합
- **제이회장님**: Champion/Challenger 모델 제안 + 초회 강화 프로세스 확정 + 학습 축적 비전 + Tier 폐지 + cross-model 지시 + 성과 기반 갱신 승인

**전원 합의**: 위 설계대로 구현 진행.
