Files
openclaw-backups/skills/openclaw-self-healing/scripts/self-review-v3-analysis.md

14 KiB

자기평가 시스템 V3 - 이중삼중 검증 프레임워크

문제 진단 (V2의 한계)

현재 V2 시스템

✅/⚠️ 완성도: [X/Y]
✅/⚠️ 정확성: [OK/WARNING]
✅/⚠️ 톤: [Jarvis/ChatGPT]
✅/⚠️ 간결성: [X emojis]
💡 개선: [구체적 액션]

V2의 근본적 문제

1. 자기평가의 편향 (Self-Evaluation Bias)

  • AI가 자신의 출력을 평가하는 것은 근본적으로 편향됨
  • "내가 잘했다"고 생각하면 실제로 문제가 있어도 OK 판정
  • 주관적 기준(톤, 간결성)은 일관성 없이 평가됨

2. 검증 메커니즘 부재

  • 평가 결과를 검증하는 외부 시스템 없음
  • 잘못된 평가를 감지할 방법 없음
  • 평가 자체가 틀렸는지 알 수 없음

3. 객관적 지표 부족

  • "완성도 X/Y"가 무엇인지 모호
  • "정확성 OK"의 기준 불명확
  • 측정 가능한 메트릭 없음

4. 학습 루프 부재

  • 평가 결과가 다음 실행에 반영 안 됨
  • 같은 실수 반복 가능
  • 개선 방향 제시만 하고 실제 개선은 안 됨

업계 베스트 프랙티스 (2025 최신)

1. 이중 검증 시스템 (Dual Validation)

출처: Medium (Dec 2025), "AI agent evaluate another AI agent"

방식:

1차: Self-Evaluation (자기평가)
   ↓
2차: External Validation (외부 검증 - 다른 AI 또는 규칙 기반)
   ↓
3차: Audit (감사 - 인간 또는 더 강력한 모델)

예시:

  • Haiku 모델이 크론 실행 → 자기평가
  • Sonnet 모델이 평가 결과 재검증
  • 불일치 시 정우님께 보고

2. 객관적 메트릭 측정

출처: WEF 2025 AI Agents Framework, Galileo AI

측정 항목:

  • Task Success Rate: 요청된 작업을 완수했는가?
  • Completion Time: 예상 시간 내 완료했는가?
  • Error Frequency: 도구 호출 실패, API 에러 발생 횟수
  • Token Efficiency: 불필요한 토큰 낭비 없는가?
  • Baseline Error Rate: 과거 평균 대비 현재 성능

구체적 지표 예시:

{
  "taskSuccess": true,
  "completionTimeMs": 3427,
  "expectedTimeMs": 5000,
  "toolCallErrors": 0,
  "tokenUsage": 2847,
  "baselineTokenAvg": 3200,
  "errorRate": 0.0,
  "baselineErrorRate": 0.02
}

3. 다기준 평가 (Multi-Criteria)

출처: EMNLP 2025 ReviewEval, Medium AI Agent Evaluation

4대 축:

  1. Accuracy (정확성): 사실 확인, 데이터 검증
  2. Completeness (완성도): 요구사항 모두 충족했는가
  3. Relevance (관련성): 맥락에 맞는 응답인가
  4. Quality (품질): 톤, 스타일, 포맷팅

각 축을 1-5 점수로 정량화:

Accuracy: 5/5 (모든 데이터 검증됨)
Completeness: 4/5 (2/3 요구사항만 충족)
Relevance: 5/5 (맥락 완벽)
Quality: 3/5 (톤이 ChatGPT 같음)

4. Reflection 메커니즘

출처: Anthropic Research (Bloom), OpenAI Cookbook

CoT (Chain of Thought) Reflection:

1. 실행 (Do)
2. 자기평가 (Self-Evaluate)
3. 반성 (Reflect): "왜 이렇게 했나? 더 나은 방법은?"
4. 계획 (Plan Next): "다음엔 이렇게 개선"

예시:

## Reflection
**What I did:** TQQQ 시세 체크 후 -4.5% 보고
**What went well:** 정확한 데이터, 빠른 응답
**What went wrong:** 환율 영향 설명 누락
**Why:** 스크립트가 환율 데이터 미포함
**Next time:** get-exchange-rate.py 통합 확인

5. Red Teaming & Continuous Monitoring

출처: Microsoft Azure Agent Factory, PwC Multi-Agent Validation

사전 검증 (Pre-deployment):

  • Adversarial inputs 테스트
  • Edge case 시뮬레이션
  • Worst-case scenario 검증

실시간 모니터링 (Post-deployment):

  • Drift detection (성능 저하 감지)
  • Anomaly detection (비정상 행동 감지)
  • Compliance monitoring (정책 위반 감지)

V3 설계안: 3단계 검증 프레임워크

Architecture

┌─────────────────────────────────────────────────┐
│ Stage 1: Execution + Self-Evaluation (Haiku)   │
│  - 크론 실행                                      │
│  - 즉시 자기평가 (V2 형식 유지)                   │
│  - 객관적 메트릭 수집                             │
└──────────────┬──────────────────────────────────┘
               ↓
┌─────────────────────────────────────────────────┐
│ Stage 2: External Validation (Rule-Based)       │
│  - 메트릭 검증 (threshold 체크)                   │
│  - 포맷 검증 (이모지/구분선/헤더 카운트)           │
│  - 일관성 검증 (과거 평가와 비교)                  │
└──────────────┬──────────────────────────────────┘
               ↓
┌─────────────────────────────────────────────────┐
│ Stage 3: Periodic Audit (Weekly, Sonnet)        │
│  - 주간 평가 리뷰 (100개 평가 재검증)             │
│  - 패턴 분석 (반복 실수, 개선 트렌드)             │
│  - 보고서 생성 (정우님께 전달)                    │
└─────────────────────────────────────────────────┘

Stage 1: Execution + Self-Evaluation

크론 실행 직후 (Haiku 모델):

## 자기평가 (V2 유지)

✅ 완성도: 3/3 (TQQQ 시세, 환율, 변동률 모두 포함)
✅ 정확성: OK (Yahoo Finance 15분 지연 데이터)
⚠️ 톤: ChatGPT-like ("변동 감지했습니다" - 로봇 톤)
✅ 간결성: 2 emojis, 적절
💡 개선: "감지했습니다" → "보고합니다" 또는 "-4.5% 낙하 중"

## 객관적 메트릭

- Task Success: ✅ (모든 도구 호출 성공)
- Completion Time: 3.2s (baseline 4.1s 대비 빠름)
- Tool Errors: 0
- Token Usage: 847 (baseline 920)
- Format Violations: 1 (forbidden phrase detected)

Stage 2: External Validation (Rule-Based)

크론 완료 1분 후 (자동 스크립트):

// scripts/validate-self-review.js
const evaluation = parseSelfReview(cronOutput);

// 1. 메트릭 검증
if (evaluation.toolErrors > 2) {
  flag("HIGH_ERROR_RATE");
}
if (evaluation.completionTime > evaluation.baseline * 1.5) {
  flag("PERFORMANCE_DEGRADATION");
}

// 2. 포맷 검증
const formatViolations = detectFormatViolations(cronOutput);
if (formatViolations.length !== evaluation.formatViolations) {
  flag("INACCURATE_SELF_EVALUATION", {
    selfReported: evaluation.formatViolations,
    actual: formatViolations.length
  });
}

// 3. 일관성 검증
const recentEvals = loadRecentEvaluations(7); // 최근 7일
if (evaluation.tone === "Jarvis" && recentEvals.filter(e => e.tone === "ChatGPT").length > 5) {
  flag("INCONSISTENT_TONE_EVALUATION", "Self-reported Jarvis but recent history shows ChatGPT pattern");
}

// 4. 결과 기록
logValidationResult({
  cronId: cronId,
  timestamp: Date.now(),
  selfEvaluation: evaluation,
  validationFlags: flags,
  verdict: flags.length === 0 ? "PASS" : "FAIL"
});

검증 결과 예시:

{
  "cronId": "a98f06f7-...",
  "timestamp": 1738652420000,
  "selfEvaluation": {
    "completeness": "3/3",
    "accuracy": "OK",
    "tone": "ChatGPT-like",
    "conciseness": "2 emojis"
  },
  "validationFlags": [
    {
      "type": "INACCURATE_SELF_EVALUATION",
      "severity": "MEDIUM",
      "detail": "Self-reported 1 format violation, actual count is 3",
      "evidence": ["알겠습니다", "변동 감지했습니다", "---구분선 3개"]
    },
    {
      "type": "TONE_DRIFT",
      "severity": "LOW",
      "detail": "Self-reported ChatGPT-like but improvement suggestion is vague"
    }
  ],
  "verdict": "FAIL"
}

Stage 3: Periodic Audit (Weekly)

주간 크론 (일요일 밤, Sonnet 모델):

## 주간 자기평가 감사 보고서 (2026-02-01 ~ 2026-02-07)

### 전체 통계

- 총 크론 실행: 672회
- 자기평가 수행: 672회 (100%)
- External Validation 통과: 584회 (86.9%)
- External Validation 실패: 88회 (13.1%)

### 실패 원인 분석

**1. 부정확한 자기평가 (52회, 59%)**
- Self-reported "OK" but actual errors detected
- Self-reported "Jarvis" but forbidden phrases used
- 예시: "완료!" (forbidden) → self-eval said "✅ 톤: Jarvis"

**2. 포맷 위반 미감지 (28회, 32%)**
- Self-eval: "2 emojis" but actual: 5 emojis
- Self-eval: "1 separator" but actual: 4 separators

**3. 개선 제안 불이행 (8회, 9%)**
- Week 1: "다음엔 환율 포함" → Week 2: 여전히 누락
- Week 3: "ChatGPT 톤 수정" → Week 4: 동일 패턴 반복

### 권장 조치

**즉시 조치 (Critical):**
1. Self-evaluation 기준 명확화
   - "OK"의 정의: 0 tool errors, 0 data inaccuracies
   - "Jarvis"의 정의: 0 forbidden phrases, witty opening
2. Evaluation 전 체크리스트 강제 실행
   - Response Guard 규칙 재확인
   - 금지 표현 스캔 (알겠습니다, 완료, 처리)
   - 포맷 카운트 (이모지, 구분선, 헤더)

**중기 조치 (Important):**
1. Reflection 추가
   - "왜 이렇게 평가했나?" 질문 추가
   - 평가 근거 명시 (예: "OK - yf 스크립트 exit 0")
2. Feedback loop 구현
   - Validation 실패 시 다음 크론에 경고 주입
   - "지난번 당신은 X를 놓쳤습니다. 이번엔 체크하세요."

**장기 조치 (Nice to Have):**
1. LLM-as-Judge (Opus 모델로 일부 재평가)
2. Human-in-the-Loop (월 1회 정우님 리뷰)

구현 우선순위

Phase 1: 즉시 적용 (오늘)

1. Stage 2 구현 (External Validation 스크립트)

  • scripts/validate-self-review.js 생성
    • 메트릭 검증
    • 포맷 검증
    • 일관성 검증
  • 모든 self-evaluation 크론에 +1min 검증 크론 추가
  • 검증 결과 저장 (memory/validation-YYYY-MM-DD.jsonl)

2. 자기평가 체크리스트 강화

현재 V2 형식에 추가:

## 자기평가 체크리스트 (Pre-Flight)

Before evaluation, I checked:
- [ ] Forbidden phrases scan (알겠습니다, 완료, 처리 등)
- [ ] Emoji count (actual: X, limit: 3)
- [ ] Separator count (actual: Y, limit: 2)
- [ ] Header spacing (blank lines before/after)
- [ ] Tool errors (count: Z)

## 자기평가

✅ 완성도: X/Y [근거: ...]
✅ 정확성: OK [근거: ...]
...

Phase 2: 1주일 내 적용

3. Reflection 메커니즘 추가

## Reflection (What I Learned)

**What went well:**
- 빠른 응답 (3.2s)
- 정확한 데이터

**What went wrong:**
- 로봇 톤 사용 ("감지했습니다")
- 환율 설명 누락

**Root cause:**
- Response Guard 재확인 안 함
- 스크립트 출력 그대로 전달

**Next time:**
- 응답 전 30초 페르소나 체크
- 환율 데이터 필수 포함 확인

4. Stage 3 구현 (주간 감사 크론)

  • 일요일 밤 크론 생성 (Sonnet 모델)
  • 최근 7일 validation 결과 분석
  • 패턴 발견 및 보고서 생성
  • 정우님께 Discord 전송

Phase 3: 1개월 내 적용 (선택)

5. LLM-as-Judge (Opus 재평가)

  • 주간 감사 시 Validation FAIL 건 중 10개 샘플링
  • Opus 모델로 재평가 (Haiku 자기평가 vs Opus 평가 비교)
  • 정확도 측정

6. Dashboard (시각화)

  • memory/validation-*.jsonl → 그래프
  • Pass rate 트렌드
  • 주요 실패 원인 분포
  • 개선 효과 측정

예상 효과

정량적 개선

현재 (V2):

  • 자기평가 수행률: ~50% (AI가 가끔 까먹음)
  • 평가 정확도: 알 수 없음
  • 개선 반영률: 0%

V3 적용 후:

  • 자기평가 수행률: 100% (체크리스트 강제)
  • 평가 정확도: 90%+ (External Validation으로 검증)
  • 개선 반영률: 70%+ (Feedback loop)

정성적 개선

  1. 신뢰성 향상

    • "내가 잘했다"는 자기 주장 → "외부 검증 통과"라는 객관적 증거
    • 정우님이 크론 결과를 믿을 수 있음
  2. 학습 효과

    • 같은 실수 반복 방지
    • Reflection으로 근본 원인 파악
    • 주간 감사로 장기 트렌드 파악
  3. 자율성 증가

    • 자가 진단 → 자가 치료
    • 정우님 개입 없이 스스로 개선

리스크 & 대응

Risk 1: 토큰 폭증

문제: Stage 2 검증 크론 추가 → 크론 2배

대응:

  • Stage 2는 규칙 기반 (스크립트, LLM 불필요)
  • 토큰 사용 0
  • Stage 3는 주 1회만

Risk 2: False Positive

문제: External Validation이 잘못된 평가를 FAIL 처리

대응:

  • Validation 규칙을 점진적으로 튜닝
  • 첫 1주일은 log만 (알림 안 함)
  • 정확도 80% 이상 확인 후 알림 활성화

Risk 3: 복잡성 증가

문제: 시스템이 너무 복잡해짐

대응:

  • Phase 1만 먼저 적용 (1-2일 소요)
  • 효과 확인 후 Phase 2 결정
  • Phase 3는 선택사항

다음 단계

즉시 실행 (정우님 승인 후)

  1. 웹 검색 완료 (최신 방법론 조사)
  2. V3 설계 완료 (이 문서)
  3. scripts/validate-self-review.js 구현
  4. 14개 크론에 validation 크론 추가
  5. 체크리스트 강화된 V2.5 형식 배포
  6. 1주일 모니터링

정우님 결정 필요

  • Phase 1 진행 여부: 즉시 시작? 아니면 더 검토?
  • Phase 2/3 필요성: 주간 감사까지 갈 것인가?
  • 검증 실패 시 알림: Discord 알림? 아니면 로그만?

참고 자료

  1. Galileo AI (2025): Self-Evaluation in AI Agents With Chain of Thought
  2. WEF 2025: AI Agents in Action Framework
  3. Medium (Dec 2025): Self-Improving AI Agent That Learns From Feedback
  4. Microsoft Azure (Sep 2025): Top 5 Agent Observability Best Practices
  5. PwC: Validating Multi-Agent AI Systems
  6. n8n Blog: 15 Best Practices for Deploying AI Agents in Production
  7. Anthropic Research: Bloom - Self-Evaluation Framework
  8. OpenAI Cookbook: Self-Evolving Agents - Autonomous Retraining

작성: 2026-02-04 17:57 KST
버전: V3 Draft 1
상태: 정우님 리뷰 대기