# 자기평가 시스템 감사 (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 ``` **형식:** ```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)** ```javascript // 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부터 시작해서 점진적으로 개선이 필요합니다.