벡터(bge-m3) + BM25 RRF 하이브리드 · Roslyn 구문 청킹 · 해시 매니페스트 증분 인덱싱 Claude Code 스킬 · MCP · Codex · git 훅 연동 · Windows/macOS/Linux 현직 레거시 파악 업무의 도구 진화 4단계 끝에 직접 구축해 범용 도구로 분리(MIT)

기간 | 2026 (현직 프로젝트 중 구축 → 2026-09 범용 분리) 역할 | 문제 진단 · 설계 · 구현 · 검증 · 범용화 (1인) 분류 | AI Developer Tool · Search Infrastructure · LLM Engineering


📑 목차


📌 한눈에 보기

항목 내용
풀어야 할 문제 레거시 프로젝트 코드 다수·신규 개발 프로젝트·스펙 및 프로토콜 문서를 AI 에이전트가 폴더째 읽지 않고 "어디에 무슨 내용이 있나"를 빠르고 일관되게 찾게 하는 것
도구 진화 4단계 ① 폴더 검색(grep·파일 읽기) — 소요 시간 길고 정확도 불안정 → ② AnythingLLM 프로젝트 전용 로컬 RAG — 노트북 사양으로 응답 지연 → ③ LLM 생성을 빼고 임베더·벡터스토어에 직접 접근하는 MCP 서버 자체 제작 — 벡터 단독 한계(리포 하나만 인덱스 · 정확 토큰 약함 · 삭제 미반영 stale 청크) → ④ greplet
일반 RAG 대비 차별점 ① 인덱스가 코드를 따라간다 — 해시 매니페스트 증분 + 커밋 훅, 지운 파일의 청크가 남지 않음 ② 위치로 답한다 — 모든 결과가 파일 :: 심볼 (L시작-끝) 형태, 에이전트는 그 위치만 연다 ③ 찾기만 한다 — 요약·해석·검증은 Serena·legacy-spec-agent에 넘기는 역할 분담 전제, 검색이 틀려도 다음 단계에서 걸러짐. 반대로 리포 하나에 문서 몇 개인 환경이면 쓸 이유가 약하다고 README에 명시
산출물 C# Extractor(Roslyn·PdfPig) · Node/TS 인덱서(Express·LanceDB·Ollama) · 관리 UI · CLI 2종(PowerShell·Node) · MCP 서버 2종(stdio 번들·Bearer 원격) · Claude Code/Codex 스킬 · git post-commit 훅 · 설계 문서
검색 모드 hybrid(벡터+BM25 RRF, 기본) · vector · fts(BM25 단독, Ollama 없이 동작)
검증 증분 시나리오 통합 테스트(추가→수정→삭제 시 청크 집합·매니페스트 검증) · MCP smoke 테스트 2종 · 정확 토큰 fts 검색 1위 확인
규모·공개 약 3,160줄 · MIT · 실사용하며 디벨롭 · 2026-09 공개 · github.com/HoonStyle/greplet

🏗️ 시스템 아키텍처

[Claude Code 스킬 / Codex / MCP / CLI / post-commit 훅]
                 │  HTTP (127.0.0.1:7802)
                 ▼
        indexer (Node/TS, Express)
      ┌──────────┼──────────────┐
  Extractor    Ollama         LanceDB
  (C#/Roslyn   bge-m3        벡터 + FTS(BM25)
   PdfPig)     임베딩         RRF 하이브리드

주요 기술: TypeScript · C# (Roslyn, PdfPig) · LanceDB · Ollama bge-m3 · MCP(Model Context Protocol) · Express · PowerShell


🧠 핵심 의사결정 6개

"어떤 선택을 했는가"보다 **"왜 그 선택을 했는가"**에 집중합니다.


Decision 1 · 기성 도구를 먼저 쓰고, 한계가 구체화된 뒤에만 직접 만들었다

처음부터 검색 서버를 만들지 않았다. 폴더 검색 → AnythingLLM → 자체 MCP 순으로 가장 싼 수단부터 썼고, 각 단계에서 "무엇이 안 되는가"가 구체적 문장으로 정리된 뒤에 다음 단계로 넘어갔다.

결정: 벡터 단독의 한계 세 가지(리포 하나만 인덱스 · 정확 토큰 약함 · 삭제 미반영)가 확인된 시점에 직접 구축으로 전환. 구축 범위는 그 세 가지를 푸는 데 필요한 만큼으로 한정.