← 목록
기타 2026-07-27 4KB 읽기 4분

함정매칭 자동주입 — 크라우니 함정 지식 통합·자동경고

개요

크라우니 함정 지식이 가드레일(100함정)·feedback_*.md(374건)·학습DB로 분산돼 서브에이전트가 관련 함정을 못 보고 이미 아는 함정을 "신규 발견"으로 재발견하는 실패가 반복됐다(실측: 입력() 4096 절단을 TCP읽기 4095 절단과 별개로 재보고 — [[feedback_함정분산_재발견_가드레일통합]]). 이 구조적 문제를 막기 위해 작업 신호에 맞는 함정을 갑옷훅이 자동 매칭·주입하는 3종 도구를 만들었다.

무엇을 했는지

  1. ~/.claude/scripts/함정키워드.txt — 161개 구체적 기술어 화이트리스트(4096·TCP읽기·동안·배열·맵·bash·한글
변수 등). 코드/파일/작업/함수 같은 일반어는 제외. 인덱스 생성·매칭 양쪽이 공유하는 SSOT.
  1. ~/.claude/scripts/함정인덱스생성.sh — 가드레일(- **... 불릿 100개) + feedback_*.md(374개, frontmatter
description/name+본문 6000B)를 화이트리스트로 스캔해 ~/.crownycode/함정인덱스.psv (트리거키워드들|요약|출처) 생성. 멱등(재실행 시 전체 재생성) — 최종 449줄(가드레일 100 + memory 349건, 키워드 무매칭 항목은 제외).
  1. ~/.claude/scripts/함정매칭.sh — 작업텍스트(인자/stdin, 선택 파일경로)에서 화이트리스트 키워드를 추출 →
함정인덱스.psv와 겹침 스코어를 awk 단일패스로 계산 → 상위 3건(스코어≥1)만 `[함정경고] 요약 (매칭:.. / 출처:..)` 형식으로 출력. 무매칭이면 무출력·exit 0. 실측 14~21ms(<30ms 목표 충족).
  1. ~/.claude/scripts/크라우니갑옷.sh 결합 — 디자인 핸드오프 분기(B) 다음에 함정 매칭층(C) 추가.
TRAP_WARN=$(ctimeout 0.3 함정매칭.sh "$CMD")을 계산해 기존 3개 출구(CODE_HIT/HIT/MISS 분기)의 기존 주입 메시지 뒤에 덧붙임(대체 아님). 매칭 없으면 기존 동작 완전 동일. 백업: ~/.claude/scripts/.bak-함정주입/크라우니갑옷.sh.bak-20260727082318.

검증 결과

  • 인덱스: 449줄, grep '4096' 3건 히트(가드레일:233 ★VM read 계열 4096B 절단 포함).
  • 매칭 정확도(5케이스): stdin/command/훅 → 4096 함정 상위매칭 ✅ / 동안루프 카운터 → 무한루프 재선언 함정 ✅ /
bash 한글변수 → bash 한글변수 함정 3건 ✅ / TCP 서버 POST → TCP읽기 2인자 함정 top1 ✅ / "오늘 날씨 어때" → 무출력 exit0 ✅.
  • 갑옷훅 전체 지연: 직접 스크립트 비교(before~95ms, after~120ms) 델타 약 25~30ms — 목표(<50ms) 충족. 훅단
end-to-end(python3 JSON 왕복 포함)는 curl/브레인 조회 변동성으로 노이즈가 크지만 정상상태 델타는 동일 수준.
  • 핵심 통합검증 통과: "stdin JSON에서 command 추출하는 한선씨 훅 만들어줘" → 실제 크라우니갑옷훅.sh
(UserPromptSubmit JSON) 경유로 4096 함정이 자동 주입됨 — 재발견 구조 문제가 해소됐다.

관련 파일

  • /Users/ef/.claude/scripts/함정키워드.txt
  • /Users/ef/.claude/scripts/함정인덱스생성.sh
  • /Users/ef/.claude/scripts/함정매칭.sh
  • /Users/ef/.claude/scripts/크라우니갑옷.sh (수정, 백업=.bak-함정주입/)
  • /Users/ef/.crownycode/함정인덱스.psv (산출물, 재생성 가능)

잔여 이슈

  • crownycode-brain.sh learn "함정매칭" 함정매칭.sh거부(exit2, "컴파일실패") — 학습DB는 한선씨 코드만
받는 게이트라 bash+awk 스크립트는 등록 불가(예상된 결과, lookup MISS로 확인). 이 도구는 결정형 PSV 질의(awk 단일패스)로, 기존 관례상 "대용량 데이터 접근"에 해당해 bash 유지가 정직한 분리(참조: 읽기() 64KB 절단 함정 항목의 awk 우회 관례)로 판단했으나, 헌법상 한선씨 동반이 원칙이므로 필요 시 함정매칭.한선(버퍼찾기 기반) 포팅을 후속 과제로 남긴다.
  • 인덱스는 배치 생성 기준 소스 파일(가드레일/메모리) 갱신 시 수동 재실행 필요(자동 워처 없음).
  • 화이트리스트 161개는 현재 가드레일/메모리 말뭉치 기준 수작업 큐레이션 — 신규 함정 유형 추가 시 키워드
보강 필요(누락되면 그 함정은 매칭 안 됨, 인덱스 자체엔 안 잡히는 게 아니라 "매칭 트리거 부족"으로 무매칭).