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

경로찾기 — NFD/NFC 양방향 검색 + 이름일치 4상 판정 도구

개요

2026-07-26 이 세션에서 실제로 벌어진 사고(사용자가 "다운로드폴더의 크라우니터미널 패키지 폴더를 정독하고 구현하라" 지시 → ls | grep -i "터미널" 0건 미스(NFC 패턴 vs NFD 파일명 바이트 불일치) → 그 결과에 우연히 걸린 전혀 다른 이름의 폴더 PowerTerminal을 대체물로 단정 → 5시간 헛작업)의 재발 방지 도구 2종을 제작했다.

무엇을 했는지

  1. 한선씨 판정 코어 경로찾기.한선: 유니코드 정규화(NFD/NFC) 판정 + 이름일치 4상 등급 로직.
- 자모분해정규화판정(후보이름, 검색어): 정규화 차이만 있는 같은 이름인지(1/-1) - 이름일치등급(요청이름, 발견이름): 티(완전일치)/옴(부분포함·2그램중첩)/타(불일치)/음(0건) - 대체물경고(요청이름, 발견이름): 티가 아니면 사람이 읽을 경고문 생성 - 정규화는 한선씨 내장함수가 없어 체계()+python3(NFC normalize)로 위임, stdout 직접캡처 - CLI 진입점: CT_TEST=1이면 셀프테스트, 아니면 CT_REQ/CT_FOUND(ASCII 환경변수명)로 단발 판정 후 등급:X / 경고:... 출력
  1. sh 래퍼 경로찾기.sh: 디렉토리 스캔·분류(정확일치/부분일치/유사이름)만 담당, 판정은 전부
컴파일된 .toau 코어에 위임. --보정 <경로> 옵션으로 기존에 잘못 찾은 경로 하나만 재검사 가능. 등급이 타/음이면 exit code 3 + 경고문 출력.

함정 및 수정

  • 초안 sh 스크립트는 검색어·디렉토리·보정경로 등 한글 bash 변수명을 썼다가
macOS bash 3.2 파싱 깨짐(검색어=크라우니터미널 패키지: 명령을 찾을 수 없음) 실측 → 전부 ASCII 변수명(QUERY, TARGET_DIR, FIX_PATH, FOUND_NAME, GRADE 등)으로 교체해 해결. (한글 환경변수명 불가 함정과 동일 계열 — 이번엔 bash 변수명 전반으로 확장 확인.)

검증 결과

  • 컴파일 경고 0건 (일반 + CROWNY_STRICT=1 둘 다)
  • 셀프테스트: 전체통과 10/10
  • 사고 재현 테스트 1 (정상 검색): 크라우니터미널 패키지 → 정확일치 발견(NFD 파일이어도), 등급=티, exit 0
  • 사고 재현 테스트 2 (보정검사): 요청=크라우니터미널 패키지, 후보=PowerTerminal → 등급=타,
[진행금지] ... 이름 불일치(타). 사용자 확인 없이 대체물로 작업하지 마라. 출력, exit 3

관련 파일

  • /Users/ef/.claude/skills/분별/경로찾기.한선
  • /Users/ef/.claude/skills/분별/경로찾기.toau
  • /Users/ef/.claude/scripts/경로찾기.sh

학습

  • crownycode-learn.sh add 한글경로_NFD_NFC_양방향찾기 "..."
  • crownycode-learn.sh add 이름일치등급_4상_대체물차단 "..."
  • 사전 조회(search "NFC 정규화", "이름일치 등급") 모두 MISS — 신규 로직으로 확인 후 생성.

잔여 이슈

  • --보정 없는 스캔 모드의 "유사이름" 구간은 2그램 중첩 기준이 느슨해 접두어가 겹치는 무관한
파일이 다수 포함됨(예: "크라우니*" 56건). 정확일치/부분일치가 우선이라 최종 등급 판정에는 영향 없으나, 표시 노이즈를 줄이려면 향후 임계값(중첩비율)을 올릴 수 있음.
  • 다른 세션이 이 도구를 표준 절차로 삼으려면 ~/.claude/templates/한선씨-가드레일.md 또는
글로벌 CLAUDE.md에 "새 경로/폴더 찾기 전 경로찾기.sh 필수" 조항 추가를 검토할 것(이번 작업 범위 밖이라 미반영).