334 lines
8.3 KiB
Markdown
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 (✅ 목표 달성)**
|