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

370 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 자기평가 시스템 감사 (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부터 시작해서 점진적으로 개선이 필요합니다.