← 목록
기타 2026-07-04 5KB 읽기 5분

근거소스커넥터 — cells.json·docs·history 통합근거인덱스 (WS④ 확장)

개요

근거DB통합.한선(WS2, 학습.dat↔all_patterns.dat 2-way 병합)을 확장하여, 감사에서 "미연결"로 잡힌 세 소스 — cells.json(7곳 분산), docs.crowny.org(CrownyDoc/projects 마크다운), history/.jsonl(세션 대화로그) — 를 순수 한선씨로 근거DB에 연결했다.

무엇을 했는지

신규 파일: /Users/ef/crowny-butler/libs/근거소스커넥터.한선

포맷별 파서 3종 + 통합 인덱스/조회 함수:

  • 소스적재_json(경로, 최대건수) — pretty-print cells.json 전용. 각 셀은
{"id":N,"s":[27개 슬롯]} 구조이며 s[16]이 제목. 고정 라인오프셋 대신 대괄호 뎁스 카운터로 슬롯 경계를 추적(실측: evidenceLog류 슬롯이 [38]처럼 서브배열로 등장해 셀당 라인수가 32/34로 갈리는 걸 확인 → 뎁스==1일 때만 슬롯 카운트, 뎁스>1(중첩) 내부 줄은 문자열화조차 안 함). intent키 = 제목.
  • 소스적재_md(디렉토리, 최대건수)파일목록()(ls, opcode255, 결과 4095B
캡 문자열 1개)을 줄단위로 나눠 .md 파일명만 채택, 읽기()로 존재 확인. intent키 = 파일명(날짜-슬러그).
  • 소스적재_history(경로, 최대건수) — jsonl 한 줄=완결 오브젝트(중첩 없음)
이므로 버퍼 줄 스캔 후 그 줄만 문자열화해 "category"/"workdir" 마커 추출. intent키 = 카테고리:작업디렉토리.
  • 통합근거인덱스(소스들, 태그들) — N개 소스 배열(배열의 배열) + 병렬
태그 배열을 받아 병합인덱스를 N-way로 일반화(기존 2-way 병합인덱스 확장).
  • 근거조회통합(인덱스, 키워드, 태그목록) / 근거보고통합(...) — 태그별
건수 카운트맵 + 표본 5건을 반환. 소스 구성이 바뀌어도(cells/docs/history/ 학습DB/주DB 어떤 조합이든) 재사용 가능.

VM 함정 회피(전부 실측 반영): 읽기() 64KB 조용한 절단, 문자열풀 480000 캡, 배열 하드캡 4095 — 전부 버퍼파일읽기+버퍼바이트읽기(정수 스캔)로 줄 경계를 잡고, 실제 필요한 슬롯/필드 줄만 1회 문자열화. 각 소스 최대건수/최대스캔 바이트 clamp로 "앞부분 샘플"만 본다(전량 파싱 금지).

수용검증 실측 결과 (컴파일+실행, stderr 경고 0건)

═══ 근거소스커넥터 — cells.json·docs·history 통합근거인덱스 검증 ═══
[적재] cells 샘플: 1500건 (/Users/ef/.claude/knowledge/cells.json)
[적재] docs 샘플: 104건 (/Users/ef/CrownyDoc/projects)
[적재] history 샘플: 1140건 (/Users/ef/.claude/knowledge/history/2026-07-04.jsonl)
[통합] 통합근거인덱스 총 intent 키: 409
─── 근거조회통합 실행(공통 키워드) ───
intent 크라우니: 총 3건 / cells 2건 / docs 1건 / history 0건
  근거: CAF7 크라우니어 구현 완료 [cells]
  근거: 2026-04-15-크라우니솔루션-랜딩-네트워크.md [docs]
  근거: 크라우니뱅크 서비스 구축 [cells]

intent 서버: 총 3건 / cells 1건 / docs 2건 / history 0건
  근거: 웹서버v2 [cells]
  근거: 2026-04-16-crowny-network-통합서버.md [docs]
  근거: 2026-04-16-포커스서버-한선씨-풀파리티.md [docs]

intent 셀코어: 총 2건 / cells 2건 / docs 0건 / history 0건
  근거: 셀코어 v2.0 15모듈 라이브러리 완성 [cells]
  근거: 셀코어 업데이트 [cells]
═══ 검증 완료 ═══

python으로 교차검증: cells.json 첫 1500건 중 제목에 "크라우니" 포함 2건 (CAF7 크라우니어 구현 완료, 크라우니뱅크 서비스 구축), docs 첫 104개 파일명 중 1건 — 한선씨 파서 결과와 정확히 일치.

history 경로 별도 검증(키워드 "crownyc"/"general"로 임시 확인, 원본 검증 스크립트는 손대지 않음): crownyc 6건(history 4건), general 26건(history 26건) — history 소스 태깅도 정상 작동 확인.

관련 파일

  • /Users/ef/crowny-butler/libs/근거소스커넥터.한선 (신규, 이 문서의 본체)
  • /Users/ef/crowny-butler/libs/근거DB통합.한선 (기존 WS2, 참조/미변경)
  • 학습DB 등록: intent 근거소스커넥터_cells_docs_history_통합
(별칭 근거소스커넥터) — crownycode-learn.sh add 완료

잔여 이슈

  • cells.json은 .claude/knowledge/cells.json 한 곳만 연결했다. 나머지
6곳(crowny-int/crowny-balance/CrownyDoc/.data/crowny-mind/CrownyTVM/ CrownyOS/apps)은 s[27]-포맷이 아니라 각각 다른 스키마(domain+evidenceLog, 키가 사용자명인 맵 등)라 소스적재_json을 그대로 재사용할 수 없음 — 포맷별 분기 추가가 후속 과제.
  • 소스적재_md파일목록()(ls 4095B 캡) 한계로 CrownyDoc/projects
2550개 파일 중 앞부분 104개만 본다. 전체 커버하려면 알파벳 파티션별 여러 번 호출하거나 opcode255를 페이지네이션 가능하게 확장 필요.
  • 소스적재_history는 파일 1개만 받는다(디렉토리 전체 순회는 상위 호출부
책임). history/
.jsonl 전체(81개 파일, 3-29~7-04)를 자동 순회하려면 파일목록()으로 파일 리스트를 얻어 반복 호출하는 래퍼가 필요.