에이전트 운영 회고 (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 정리가 누적 부채로 터진다.

이를 잡는 절차는 단순하다.

  1. 소스 폴더(~/Project/scripts/) 전체 파일 목록 스냅샷.
  2. 대상 인벤토리(이식 명세)에 포함된 항목 매핑.
  3. 미매핑 파일을 핵심 / 주변 / 진단·유틸 3 계층으로 분류.
  4. 주변 계층을 "구동 전 / 구동 후 / 후순위"로 재분류.

이 절차를 ~/Project/scripts/ 65 파일에 적용했을 때, 핵심 인벤토리는 이미 이식 완료 상태였으나 메모리 주변 10개가 미매핑으로 남아 있었다.

누락 10개 — 분류별

즉시 추가 — memcore v0.2

  1. decision-prepare.py — LLM 의사결정 요청 생성 (TOPIC_CLASSIFY, CONFLICT_RESOLVE, CHANGELOG_SUMMARIZE)
  2. decision-apply.py — LLM 응답을 bank/에 적용
  3. conflict-apply.py — W-tag 충돌 해결 적용
  4. memory-archive.sh — 처리된 memory/archived/
  5. memory-optimize.py — Reflect Phase 2 최적화
  6. memory-warning-report.py — daily audit Phase C 메모리 경고

우선순위 중

  1. recall-cleanup.py — recall TTL 정리
  2. session-cleanup.py — stale/orphan 세션 정리
  3. session-archive.py.deleted 세션 내용 수확
  4. 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 기반 분류기로 옮길 수 있을지가 다음 관찰 대상이다.


시리즈 색인

  1. OpenClaw 해부 — 에이전트와 cron 구조 분석
  2. Hermes로 옮길 것, 버릴 것 — 4 카테고리 분류표
  3. 이식할 가치가 있는 8개를 골라낸 코드 리뷰
  4. 이사 계획 — 11 카테고리로 묶은 이식 명세
  5. memcore — SQLite로 다시 짠 메모리 코어, 51 tests pass
  6. 전수조사로 발견한 누락 10개 — 스크립트 인벤토리 감사 패턴 (이 글)

시리즈 전체 안내: 시리즈 목차

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"