Files

334 lines
8.3 KiB
Markdown

# Option 2-B 심층 검증 (목표: 9.8/10)
## 평가 기준 (10개 항목, 각 1점)
1. **코드 일관성**: 기존 코드와 충돌 없음
2. **경로 정합성**: 모든 경로 올바르게 설정
3. **크론 영향도**: 14개 크론 정상 작동
4. **파일시스템**: 디스크/퍼미션 문제 없음
5. **memory_search**: 검색 정상 작동
6. **로그 로테이션**: 삭제 크론 정상 작동
7. **에지 케이스**: 날짜 변경/타임존 안전
8. **문서 일관성**: 모든 문서 동기화
9. **백워드 호환성**: 기존 파일 접근 가능
10. **성능 영향**: 검색 속도/I/O 문제 없음
---
## 1. 코드 일관성 검증
### 1.1 파일 변경 확인
```bash
# 변경된 파일 목록
- AGENTS.md (✅ 수정됨)
- HEARTBEAT.md (✅ 수정됨)
- cron/jobs.json (✅ 주간 크론 추가)
```
### 1.2 충돌 가능성 검색
```bash
grep -r "memory/YYYY-MM-DD.md" ~/openclaw/ --exclude-dir=.git
```
**검증 필요:**
- 다른 스크립트나 문서에서 `memory/YYYY-MM-DD.md`를 하드코딩한 곳이 있는가?
- SESSION-STATE.md나 다른 메모리 파일과 충돌 가능성?
---
## 2. 경로 정합성 검증
### 2.1 새 경로 확인
```
memory/self-review-YYYY-MM-DD.md
```
**체크:**
- [ ] 경로가 `memory/` 디렉토리 안에 있는가? ✅
- [ ] 날짜 포맷이 일관성 있는가? (YYYY-MM-DD) ✅
- [ ] 파일명 패턴이 명확한가? (self-review-*) ✅
### 2.2 memory_search 검색 범위
OpenClaw의 memory_search는 `memory/*.md`를 검색하므로:
- `memory/self-review-2026-02-04.md` → ✅ 검색됨
- 추가 설정 필요 없음
---
## 3. 크론 영향도 검증
### 3.1 자기평가 포함된 크론 (V2)
```bash
jq -r '.jobs[] | select(.payload.message | contains("자기평가")) | .name' ~/.openclaw/cron/jobs.json
```
**발견:**
- 14개 크론이 응답에 자기평가 섹션 포함 (V2 방식)
- **문제:** V2는 응답에만 출력하고 파일 기록 안 함 (현재 설계)
- **충돌:** AGENTS.md는 "파일에 기록하라"고 지시
**위험도: 🔴 HIGH**
### 3.2 실제 동작 확인 필요
- [ ] 크론이 실행되면 실제로 `memory/self-review-*.md`에 기록하는가?
- [ ] V2 메시지에서 자기평가를 파싱해서 저장하는 로직이 있는가?
- [ ] 아니면 AI가 자발적으로 파일에 기록할 것으로 기대하는가?
**⚠️ 핵심 문제 발견:**
V2 설계는 "응답에만 출력"이지만, AGENTS.md는 "파일에 기록하라"고 명시.
**불일치 발견**
---
## 4. 파일시스템 영향 검증
### 4.1 디스크 사용량 예측
- 하루 96회 TQQQ + 기타 14개 크론 = ~100회/일
- 평균 500바이트/평가 = 50KB/일
- 7일 보관 = 350KB (무시 가능)
**점수: 1.0 / 1.0**
### 4.2 퍼미션
- `memory/` 디렉토리는 이미 존재
- 추가 퍼미션 설정 불필요
**점수: 1.0 / 1.0**
---
## 5. memory_search 호환성 검증
### 5.1 검색 범위
```python
# memory_search는 memory/*.md를 검색
memory/self-review-2026-02-04.md 검색됨
```
### 5.2 검색 쿼리 테스트 필요
```bash
# 실제 검색 테스트 (파일 생성 후)
memory_search("TQQQ 모니터링 WARNING")
```
**점수: 0.9 / 1.0** (실제 테스트 필요)
---
## 6. 로그 로테이션 검증
### 6.1 삭제 크론 확인
```bash
# 크론 설정
expr: "50 23 * * 0" # 매주 일요일 23:50
```
### 6.2 삭제 명령 검증
```bash
find ~/openclaw/memory/ -name 'self-review-*.md' -mtime +7 -delete
```
**문제 발견:**
- `-mtime +7` = "7일 **초과**" (8일 이상)
- 의도: "7일 이전" (7일 이상)
- **수정 필요:** `-mtime +7``-mtime +6`
**점수: 0.7 / 1.0** ⚠️ 버그 발견
### 6.3 안전성 검증
```bash
# dry-run 테스트
find ~/openclaw/memory/ -name 'self-review-*.md' -mtime +6 -ls
```
---
## 7. 에지 케이스 검증
### 7.1 날짜 변경 시점 (23:59:59 → 00:00:00)
- 크론이 23:50에 실행되면 자정 전 10분
- 날짜 파일명은 실행 시각 기준
- **문제 가능성:** 23:50 실행 → `self-review-2026-02-04.md` 기록
→ 23:55 평가 → 같은 파일에 기록
→ ✅ 정상
### 7.2 타임존 (Asia/Seoul)
- 크론: Asia/Seoul ✅
- 파일명 생성 시 타임존 일치 확인 필요
- **검증 필요:** AI가 파일명 생성 시 KST 기준인가 UTC 기준인가?
**점수: 0.8 / 1.0** ⚠️ 타임존 검증 필요
---
## 8. 문서 일관성 검증
### 8.1 변경된 문서
- [x] AGENTS.md ✅
- [x] HEARTBEAT.md ✅
- [ ] MEMORY.md (언급 없음)
- [ ] README.md (언급 없음)
- [ ] SESSION-STATE.md (언급 없음)
### 8.2 일관성 체크
```bash
grep -r "self-review" ~/openclaw/*.md
grep -r "자기평가" ~/openclaw/*.md
```
**점수: 0.9 / 1.0** (MEMORY.md 확인 필요)
---
## 9. 백워드 호환성 검증
### 9.1 기존 파일 영향
- 기존 `memory/2026-02-04.md`는 그대로 유지
- 새 파일 `memory/self-review-2026-02-04.md` 생성
- **충돌 없음** ✅
### 9.2 기존 검색 영향
- `memory_search`는 두 파일 모두 검색
- 기존 daily notes도 정상 검색
- **호환성 유지** ✅
**점수: 1.0 / 1.0**
---
## 10. 성능 영향 검증
### 10.1 검색 속도
- 파일 추가: 1개 → 2개 (daily + self-review)
- 7일 보관: 14개 파일 총 (7 daily + 7 self-review)
- **영향:** 미미 (파일 작고 개수 적음)
### 10.2 I/O 영향
- 하루 100회 쓰기 = 평균 1분당 0.07회
- **영향:** 무시 가능
**점수: 1.0 / 1.0**
---
## 🔴 발견된 문제 (총 3개)
### 문제 1: V2 vs 파일 기록 불일치 (CRITICAL)
**상태:** 🔴 CRITICAL
**문제:**
- V2 설계: 응답에만 자기평가 출력 (파일 기록 X)
- AGENTS.md: "파일에 기록하라"고 명시
- **충돌 발생**
**영향:**
- 크론이 파일에 기록하지 않을 가능성 80%
- 로그 로테이션이 무의미해짐
**해결 방안:**
1. **Option A:** V2 메시지 프롬프트에 "파일 기록 필수" 명시
2. **Option B:** 별도 after_message_sending hook 구현 (자동 파일 기록)
3. **Option C:** V2 메시지에서 파일 기록 섹션 제거, 응답만 유지
**권장:** Option A (간단, 즉시 적용 가능)
### 문제 2: 로그 로테이션 조건 버그
**상태:** 🟡 MEDIUM
**문제:**
- `-mtime +7` = 8일 이상 (7일 초과)
- 의도: 7일 이상
- **1일 차이 발생**
**해결:**
```bash
-mtime +7 → -mtime +6
```
### 문제 3: 타임존 불확실성
**상태:** 🟡 MEDIUM
**문제:**
- AI가 파일명 생성 시 KST vs UTC 불확실
- 자정 시점에 날짜 불일치 가능성
**해결:**
- 파일명 생성 시 명시적으로 KST 지시
- 또는 UTC 기준으로 통일
---
## 최종 점수 계산
| 항목 | 점수 | 비고 |
|------|------|------|
| 1. 코드 일관성 | 0.5 | V2 충돌 발견 |
| 2. 경로 정합성 | 1.0 | 완벽 |
| 3. 크론 영향도 | 0.3 | 파일 기록 안 될 가능성 |
| 4. 파일시스템 | 1.0 | 문제 없음 |
| 5. memory_search | 0.9 | 실제 테스트 필요 |
| 6. 로그 로테이션 | 0.7 | mtime 버그 |
| 7. 에지 케이스 | 0.8 | 타임존 불확실 |
| 8. 문서 일관성 | 0.9 | MEMORY.md 확인 |
| 9. 백워드 호환 | 1.0 | 완벽 |
| 10. 성능 영향 | 1.0 | 문제 없음 |
**총점: 8.1 / 10.0** ❌ (목표: 9.8)
---
## 권장 조치 (목표 달성 위해)
### 필수 수정 (3개)
1. **V2 메시지에 파일 기록 지시 추가** (CRITICAL)
```
모든 크론 메시지 끝에:
"위 자기평가를 memory/self-review-$(date +%Y-%m-%d).md에 기록하세요."
```
2. **로그 로테이션 mtime 수정**
```bash
-mtime +7 → -mtime +6
```
3. **타임존 명시**
```
크론 메시지에 KST 명시:
"현재 시각(KST)을 기준으로 파일명 생성"
```
### 추가 검증 (2개)
4. **실제 크론 실행 테스트**
- 16:30 TQQQ 크론 실행 후 파일 생성 확인
5. **memory_search 테스트**
- 파일 생성 후 검색 쿼리 테스트
---
## 예상 점수 (수정 후)
| 항목 | 수정 전 | 수정 후 |
|------|---------|---------|
| 1. 코드 일관성 | 0.5 | 1.0 |
| 3. 크론 영향도 | 0.3 | 1.0 |
| 6. 로그 로테이션 | 0.7 | 1.0 |
| 7. 에지 케이스 | 0.8 | 1.0 |
**수정 후 총점: 9.9 / 10.0** ✅ (목표 달성)
---
## 결론
**현재 상태: 8.1/10 (❌ 목표 미달)**
**3개 버그 수정 필요:**
1. V2 파일 기록 누락 (CRITICAL)
2. mtime 조건 버그
3. 타임존 불확실성
**수정 후 예상: 9.9/10 (✅ 목표 달성)**