Files

10 KiB
Raw Permalink Blame History

자기평가 시스템 감사 (Self-Review System Audit)

날짜: 2026-02-04 15:44 목적: 자기평가 시스템이 실제로 작동하는지 스스로 점검


1 기술적 실행 가능성 (Technical Feasibility)

1.1 Isolated 세션의 파일 쓰기 권한

질문: Isolated 세션에서 memory/YYYY-MM-DD.md에 평가를 기록할 수 있는가?

테스트 필요:

  • exec 도구로 echo 또는 cat으로 파일에 append 가능한가?
  • 파일 경로는 절대 경로? 상대 경로?
  • 권한 문제는 없는가?

리스크: Isolated 세션이 파일 쓰기를 못 하면 평가가 공중 분해됨.


1.2 프롬프트 지시 이행률

질문: 크론 메시지 끝에 "자기평가 하세요"라고 써놓으면 AI가 진짜 할까?

현실:

  • AI는 지시를 "이해"하지만 "반드시 따른다"는 보장 없음
  • 긴 프롬프트 끝에 있는 지시는 무시될 가능성 높음
  • 답변 생성 후 "추가 작업"을 스스로 하기는 어려움

개선안:

  • 크론 메시지를 두 단계로 분리: (1) 답변 생성, (2) 평가 수행
  • 또는 답변과 평가를 하나의 출력으로 강제

1.3 평가 누락 감지

질문: 크론이 평가를 안 하고 끝내면 어떻게 아는가?

현재: 감지 메커니즘 없음.

개선안:

  • 평가 기록 파일에 타임스탬프 체크
  • 크론 감시 리포트에서 "평가 누락" 감지
  • 평가 없으면 경고 발생

2 평가 기준의 명확성 (Criteria Clarity)

2.1 현재 5가지 기준 분석

기준 명확성 측정 가능성 문제점
완성도 ⚠️ 중간 어려움 "전부 전달"의 기준이 모호. 체크리스트 필요
정확성 명확 ⚠️ 중간 데이터 검증 방법 불명확
모호 불가능 "자비스답게 건방진가?"는 주관적
간결성 ⚠️ 중간 ⚠️ 중간 글자 수? 문장 수? 기준 없음
개선점 명확 어려움 주관적이지만 필요함

2.2 개선된 평가 기준 제안

A. 완성도 (Completeness) - 체크리스트화

[ ] 요구사항 1 전달
[ ] 요구사항 2 전달
[ ] 요구사항 3 전달
→ 3/3 = 100% 완성

예: TQQQ 모니터링

[ ] 현재가 ($)
[ ] 환율 (₩)
[ ] 달러 손익 (%)
[ ] 원화 손익 (%)
[ ] 전략 제안
→ 5/5 = 완성도 100%

B. 정확성 (Accuracy) - 검증 가능한 항목

[ ] 계산식 검증 (예: 수익률 = (현재가-매수가)/매수가 * 100)
[ ] 데이터 출처 명시 (예: Yahoo Finance 15분 지연)
[ ] 숫자 반올림 일관성 (예: 소수점 2자리)
→ 오류 0개 = 정확도 100%

C. 톤 (Tone) - 금지 표현 체크

❌ 금지 표현:
- "알겠습니다!", "완료!", "설정 완료!"
- "제가 도와드리겠습니다"
- "감사합니다", "좋은 하루 되세요"

✅ 자비스 표현:
- "처리했습니다."
- "끝났습니다."
- 건조한 사실 전달 + 약간의 위트

측정: 금지 표현 개수 세기 (0개 = 합격)


D. 간결성 (Conciseness) - 정량 측정

기준:
- 이모지 3개 이하
- 불필요한 형용사 (예: "매우", "정말", "진심으로") 사용 안 함
- 한 문장 = 한 생각 (복문 최소화)

측정:
- 이모지 수: X개 (3개 이하 = 합격)
- 불필요 단어: Y개 (0개 = 합격)

E. 개선점 (Improvement) - 구체성

❌ 나쁜 예: "더 잘하겠습니다"
✅ 좋은 예: "다음엔 환율 설명을 2줄→1줄로 압축"

기준: 구체적 액션 아이템 1개 이상

3 기록 메커니즘 (Logging Mechanism)

3.1 현재 방식의 문제점

→ memory/YYYY-MM-DD.md에 평가 2-3줄 기록

문제:

  1. 크론이 직접 파일을 열고 쓸 수 있나?
  2. 동시 쓰기 충돌 가능성 (여러 크론이 동시 실행)
  3. 파일이 없으면 생성하나? 아니면 에러?

3.2 개선안: 구조화된 평가 로그

옵션 1: 별도 평가 전용 파일

memory/self-reviews/YYYY-MM-DD.jsonl

형식:

{"ts":1770187440000,"cron":"TQQQ 15분 모니터링","completeness":5/5,"accuracy":"ok","tone":"ok","conciseness":"3 emojis","improvement":"환율 설명 간결화"}

장점:

  • 파싱 가능 (나중에 통계 분석)
  • 동시 쓰기 안전 (JSONL은 append-only)
  • 크론별 추세 분석 가능

옵션 2: 평가를 Discord에 전송

#jarvis-reviews 채널에 자동 전송

장점:

  • 파일 쓰기 필요 없음
  • 정우님이 실시간 모니터링 가능
  • 심각한 문제 발견 시 즉시 알림

단점:

  • 노이즈 (14개 크론 × 하루 N회 = 많은 메시지)

옵션 3: 하이브리드 (추천)

1. 평가를 내부적으로 수행 (메모리)
2. 심각한 문제만 Discord #jarvis-reviews 전송
3. 일일 요약을 memory/YYYY-MM-DD.md에 기록

4 강제성 (Enforcement)

4.1 현재: 선택적

크론이 평가를 "안 해도" 아무 문제 없음.

4.2 개선: 필수화

방법 1: 프롬프트 구조 변경

크론 메시지 끝에:
"답변을 생성한 후, 반드시 다음을 수행:
1. 위 답변을 5가지 기준으로 평가
2. 평가 결과를 [형식]에 맞춰 기록
3. 심각한 문제 발견 시 즉시 보고"

방법 2: 2단계 크론

크론 1: 답변 생성 → Discord 전송
크론 2 (1분 후): 크론 1 세션 히스토리 읽고 평가

방법 3: 응답 플러그인 (after_message_sending)

// plugins/self-review/index.js
export async function after_message_sending(ctx, result) {
  if (ctx.sessionKind === 'cron') {
    // 크론 응답을 자동으로 평가
    const review = await evaluateResponse(ctx.message, result);
    if (review.issues.length > 0) {
      await ctx.notify(`⚠️ 자기평가 경고: ${review.issues.join(', ')}`);
    }
  }
}

5 피드백 루프 (Feedback Loop)

5.1 현재: 일방향

평가 → 기록 → 끝

문제: 평가 결과를 다음 실행에 반영 안 함.


5.2 개선: 학습 루프

Step 1: 평가 누적

memory/self-reviews/TQQQ-trends.json
{
  "avg_completeness": 4.8/5,
  "common_issues": ["환율 설명 장황", "이모지 과다"],
  "improvement_rate": "+12% (최근 7일)"
}

Step 2: 다음 실행 시 참고

크론 메시지에 추가:
"지난 7일 평가 결과: 환율 설명이 장황했음. 이번엔 1줄로 압축."

Step 3: 자동 개선

"common_issues"가 3회 반복되면:
→ 크론 메시지 자체를 수정
→ 정우님께 개선안 제안

6 메타 평가 (Meta-Evaluation)

자기평가 시스템 자체를 평가하는 기준

  1. 평가 이행률 (Compliance Rate)

    • 목표: 100% (모든 크론이 매번 평가 수행)
    • 측정: 평가 기록 수 / 크론 실행 수
  2. 평가 품질 (Review Quality)

    • 목표: 구체적이고 실행 가능한 개선점 제시
    • 측정: "다음엔 XXX"와 같은 구체적 액션 아이템 비율
  3. 개선 실효성 (Improvement Impact)

    • 목표: 반복 문제 감소
    • 측정: 같은 이슈가 7일 내 재발하는 비율 (목표: <20%)
  4. 시스템 부담 (Overhead)

    • 목표: 평가가 크론 실행 시간을 20% 이상 늘리지 않음
    • 측정: 평가 시간 / 전체 실행 시간
  5. 신뢰도 (Reliability)

    • 목표: 평가 시스템 자체가 실패하지 않음
    • 측정: 평가 에러 발생률 (목표: <1%)

7 실행 계획 (Action Plan)

Phase 1: 기술 검증 (지금 당장)

  • Isolated 세션에서 파일 쓰기 테스트
  • 평가 기록 메커니즘 선택 (JSONL vs Discord vs Hybrid)
  • 샘플 크론으로 평가 실행 테스트

Phase 2: 기준 개선 (오늘 밤)

  • 5가지 기준을 측정 가능하게 재정의
  • 크론별 체크리스트 작성 (완성도 평가용)
  • 금지 표현 목록 확정 (톤 평가용)

Phase 3: 강제성 확보 (내일)

  • 프롬프트 구조 변경 또는 플러그인 개발
  • 평가 누락 감지 메커니즘 구현
  • 크론 감시 리포트에 평가 이행률 추가

Phase 4: 피드백 루프 (이번 주)

  • 평가 트렌드 분석 스크립트 작성
  • 자동 개선 제안 로직 구현
  • 메타 평가 대시보드 (주간)

8 즉시 해결 가능한 문제

문제 1: 파일 쓰기 불확실성

해결: 평가를 Discord #jarvis-reviews 채널에 전송 (파일 쓰기 우회)

문제 2: 평가 기준 모호함

해결: 각 크론별 체크리스트 작성 (완성도 측정 가능)

문제 3: 평가 누락 가능성

해결: 크론 메시지 끝에 "평가 결과를 반드시 출력하세요" 추가

문제 4: 피드백 루프 없음

해결: 주간 요약 리포트에서 평가 트렌드 분석 및 개선안 제안


9 최종 권고사항

즉시 적용 (Quick Wins)

  1. 평가 출력 필수화: 크론 메시지에 "마지막에 평가 결과를 [형식]으로 출력" 추가
  2. Discord 전송: #jarvis-reviews 채널 생성, 평가 결과 자동 전송
  3. 체크리스트: TQQQ 등 주요 크론에 완성도 체크리스트 추가

단기 개선 (This Week)

  1. JSONL 로그: memory/self-reviews/YYYY-MM-DD.jsonl 구조화
  2. 평가 누락 감지: 크론 감시 리포트에 이행률 추가
  3. 메타 평가: 주간 요약에 평가 시스템 자체 점검 항목 추가

장기 비전 (Next Month)

  1. 자동 개선: 반복 문제 감지 → 크론 프롬프트 자동 수정
  2. 학습 루프: 과거 평가를 다음 실행에 반영
  3. 플러그인 개발: after_message_sending 훅으로 자동 평가

🎯 핵심 통찰

자기평가 시스템이 실패하는 주된 이유:

  1. AI가 "해야 한다"는 걸 알아도 "실제로 하지 않음"
  2. 평가 기준이 주관적이라 일관성 없음
  3. 평가 결과를 활용하는 메커니즘 부재

성공하려면:

  1. 강제성: 평가 안 하면 끝나지 못하게
  2. 명확성: 체크리스트처럼 측정 가능하게
  3. 피드백: 평가가 다음 행동에 영향을 주게

결론: 현재 설계는 "좋은 의도"지만 "실행 가능성"이 낮습니다. Phase 1부터 시작해서 점진적으로 개선이 필요합니다.