KB 대량 확장 루프 (kb-bulk-loop) — 루프 지시문 겸 설계서
selflearn.py(주1회·1건)의 대량 1회성 버전. /loop 세션이 오케스트레이터, 데이터·상태는 전부 파일.
매 반복 이 파일 전체를 다시 읽는다. 컴팩트된 기억과 이 파일이 충돌하면 이 파일이 이긴다.
불변핵심 (수정 금지 규칙)
- KB 원본(
kb/*.md)은 이 루프가 직접 수정 금지. 산출물은 learn_candidates.json pending 적재까지. KB 반영은 페페가 devplan furniture-learn.html에서 승인해야만 일어난다 (최종 게이트).
- 게이트 기준 =
kb/00-peppe-factory-profile.md (페페 공장 확정사양). 매 반복 파일에서 재독, 요약 기억 사용 금지.
- 중복 방지: 주제 key가
learn_history.json 또는 기존 learn_candidates.json에 있으면 조사 없이 skip.
- 1반복 = 주제 1건. 조사 병렬 금지 (비용·품질 억제 — selflearn과 동일 철학).
- 실패 3연속 → 루프 중단 + notify-done에 실패 명시.
- 파일 갱신은 selflearn.py와 같은
.lock 규약 (주1회 schtasks furniture_selflearn과 큐 공유 — 락으로 충돌 방지, 벌크가 큐를 비우면 주간 작업은 그냥 no-op).
상태 파일 (전부 이 디렉터리)
| 파일 |
역할 |
learn_topics.json |
작업 큐. 소진 = 완료 조건 |
loop_state.json |
{done, skipped, failed, streak_fail, last_key} — 루프 진행 카운터 |
learn_candidates.json |
산출: pending append (module·key·요약·출처·게이트결과) |
learn_history.json |
reject 이력 = 재조사 방지 |
반복 절차 (매 wake)
- 이 파일 +
loop_state.json + learn_topics.json 재독.
- 종료 판정: 큐 비었거나
streak_fail>=3 → notify-done 발송, ScheduleWakeup 생략 (루프 끝).
- 큐 head 주제 1건 → 중복 게이트(기계적 key 대조). 중복이면 skip 기록 후 7로.
- 조사: 서브에이전트(신선한 컨텍스트, WebSearch/WebFetch만)에 위임. 반환 = "사실 요약 + 출처 URL"만. 원문 덤프를 메인 컨텍스트에 반입 금지.
- 적대검증: 별도 서브에이전트 — 조사 결과 refute 시도 + KB-00 충돌 체크. refuted →
learn_history.json에 reject 기록.
- 통과분만
learn_candidates.json에 pending append.
loop_state.json·learn_topics.json 갱신 (.lock 규약).
- 5건마다 notify-step(done/전체). 실패 건은 즉시 notify-step에 실패 명시.
- ScheduleWakeup 90~270초 (연속 작업 = 캐시 유지 구간).
실행 / 재개
- 시작: 터미널 또는 VS Code 익스텐션 세션에서
/loop C:\dev\user_brief\projects\furniture-expert\kb-bulk-loop.md 읽고 반복 절차대로 다음 1건 실행
- 세션이 죽거나 컴팩트가 몇 번 일어나도 무관 — 진실은 전부 위 파일. 같은 명령으로 재개.
- 사전 준비(별도 승인 후): 주제큐 대량 적재 (예: 모듈 01~09 × 5주제 ≈ 45건, KB DIGEST 기반 생성).
- 완료 후: 페페가 devplan furniture-learn.html에서 승인/거부.
원칙 매핑 (설계 근거)
| 세션 원칙 |
이 설계에서 |
| 데이터는 컨텍스트 밖 |
조사 원문은 서브에이전트 안에서 소멸, 메인엔 요약만 |
| 불변핵심 파일 고정 |
이 파일 상단 + KB-00, 매 반복 재독 |
| 신선 컨텍스트 |
조사·검증 각각 별도 서브에이전트 |
| 검증 게이트 3중 |
기계적 중복제거 → 적대검증 → 페페 승인 |
| 세션 = 소모품 |
loop_state.json에서 무조건 재개 가능 |
| 원격 감시 |
notify-step 5건 단위 + 실패 즉시 |