에이전트 운영 회고 (6/7) — 전수조사로 발견한 누락 10개: 스크립트 인벤토리 감사
부제: 65 스크립트를 전수 대조하면 메모리 주변 10개가 드러난다
핵심 요약
~/Project/scripts/65 파일 전수 대조 결과, 앞서 정리한 인벤토리에 메모리 주변 10개 스크립트가 누락되어 있었음을 확인.- 메모리 핵심 파이프라인(retain/dialectic/decay/lint/entities/topics/prefetch/bank_migrate) 10개는 이식 완료.
- Hermes 구동 전 처리 우선순위 3개: 벡터 임베딩 / decisions 큐 / archive·housekeeping.
이 글은 마이그레이션 과정에서 "핵심만 이식하고 주변을 빠뜨리는" 실수를 탐지하는 전수 대조 감사 패턴과, 그 결과 드러난 10개의 누락 스크립트 분류를 정리한다.
전수 대조 감사 — 작동 원리
마이그레이션 인벤토리는 보통 "필요해 보이는 것"을 기준으로 만들어진다. 그러면 핵심 파이프라인은 올라가지만 housekeeping·archive·cleanup 계열이 탈락한다. 잠시는 시스템이 돌아가도 며칠 뒤 archive·TTL·stale 정리가 누적 부채로 터진다.
이를 잡는 절차는 단순하다.
- 소스 폴더(
~/Project/scripts/) 전체 파일 목록 스냅샷. - 대상 인벤토리(이식 명세)에 포함된 항목 매핑.
- 미매핑 파일을 핵심 / 주변 / 진단·유틸 3 계층으로 분류.
- 주변 계층을 "구동 전 / 구동 후 / 후순위"로 재분류.
이 절차를 ~/Project/scripts/ 65 파일에 적용했을 때, 핵심 인벤토리는 이미 이식 완료 상태였으나 메모리 주변 10개가 미매핑으로 남아 있었다.
누락 10개 — 분류별
즉시 추가 — memcore v0.2
decision-prepare.py— LLM 의사결정 요청 생성 (TOPIC_CLASSIFY,CONFLICT_RESOLVE,CHANGELOG_SUMMARIZE)decision-apply.py— LLM 응답을bank/에 적용conflict-apply.py— W-tag 충돌 해결 적용memory-archive.sh— 처리된memory/→archived/memory-optimize.py— Reflect Phase 2 최적화memory-warning-report.py— daily audit Phase C 메모리 경고
우선순위 중
recall-cleanup.py— recall TTL 정리session-cleanup.py— stale/orphan 세션 정리session-archive.py—.deleted세션 내용 수확monthly-review.py— 월간 메모리 리뷰 데이터 수집
진단·유틸 (후순위)
reflect-trace.py, section-extract.py, source-ingest.py, skill-candidate-stage.py. 구동 차단 요소는 아니며 관측·수집 계열로 분리.
결정 트리 — 구동 전후 분할
감사 결과를 바탕으로 네 가지 설계 축이 결정됐다.
- (a) 벡터 임베딩: 필수. DB 확장 시 의미 검색 유지.
- (b) sync 주기: 30분 → 24시간 완화는 듀얼 실행 기간 한정. Hermes가 primary가 되는 시점에
sync_turn실시간으로 복귀. - (c) heartbeat escalation: Hermes 구동 후 이식.
- (d) docs-snapshot: Hermes용으로 별도 구성.
우선순위 테이블 — Hermes 구동 전후
| # | 작업 | 시점 | 예상 |
|---|---|---|---|
| 1 | 벡터 임베딩 레이어 (sqlite-vss 또는 별도 .ann + bge-m3 / Hermes auxiliary_client) |
구동 전 | 2~3h |
| 2 | memcore.decisions (LLM 결정 큐) |
구동 전 | 2h |
| 3 | memcore.archive + housekeeping |
구동 전 | 1~2h |
| 4 | Hermes 실제 구동 검증 | 구동 시점 | — |
| 5 | memcore.heartbeat (proactive 1310→300) |
구동 후 | 2h |
| 6 | Daily Audit → Hermes cron | 구동 후 | 1h |
이식 완료 기준선 (변경 없음)
감사 기준선을 흔들지 않은 항목. 누락 리스트와 함께 기록해야 자기검열이 한쪽으로 쏠리지 않는다.
memcore.dialectic(U-tag 3-phase)memcore.decay(confidence 감쇠)memcore.lint(Retain 태그 validator)memcore.entities(stale 감지)memcore.topics(registry + M2M)memcore.ingest(retain-extract / merge 통합)memcore.prefetch(FTS5 하이브리드)memcore.bank_migrate(READ-ONLY,--incremental)MemcoreProvider어댑터 (Hermes MemoryProvider 구현)- LaunchAgent 자동 sync (daily 03:30)
- 데이터 이관: 38 files → 236 sections + 4 entities + 15 topics + 498 links (0 errors)
- 테스트 51/51 passed
한계와 적용 가능 범위
전수 대조 감사는 다음 조건에서 효과적이다.
- 소스 트리가 한 폴더 또는 한 리포지토리에 집중되어 있을 때 (분산 시 파일 목록 스냅샷이 커진다).
- 이식 대상이 스크립트·유틸리티 단위일 때 (함수·클래스 단위 이식은 AST 기반 도구가 더 적합).
- 미매핑 파일을 수동 분류할 수 있는 도메인 지식이 있을 때 (없으면 진단·유틸과 주변 계층 구분이 흐려진다).
제한은 명확하다. 대조는 "파일이 있다/없다"만 잡지 의미적 누락(기능은 옮겼으나 제약·설정·기본값이 다른 경우)은 잡지 못한다. 이는 별도의 동작 기반 검증(테스트·샘플 입력 비교)이 필요하다.
정리
인벤토리는 한 번에 완성되지 않는다. 핵심만 선별한 목록은 항상 주변 계층을 탈락시킨다. "스크립트 폴더 전체를 한 번 더 훑어라"라는 한 줄 절차가 마이그레이션 감사에서 가장 저렴하고 강력한 안전망이다.
열린 질문: 전수 대조를 자동화할 수 있는 지점은 어디까지인가. 파일 목록 대조는 스크립트로 가능하지만, 3 계층 분류와 구동 전후 분할은 현재 사람이 판단한다. 이 경계를 LLM 기반 분류기로 옮길 수 있을지가 다음 관찰 대상이다.
시리즈 색인
- OpenClaw 해부 — 에이전트와 cron 구조 분석
- Hermes로 옮길 것, 버릴 것 — 4 카테고리 분류표
- 이식할 가치가 있는 8개를 골라낸 코드 리뷰
- 이사 계획 — 11 카테고리로 묶은 이식 명세
- memcore — SQLite로 다시 짠 메모리 코어, 51 tests pass
- 전수조사로 발견한 누락 10개 — 스크립트 인벤토리 감사 패턴 (이 글)
시리즈 전체 안내: 시리즈 목차
댓글
댓글 쓰기