벡터(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
"어떤 선택을 했는가"보다 **"왜 그 선택을 했는가"**에 집중합니다.
처음부터 검색 서버를 만들지 않았다. 폴더 검색 → AnythingLLM → 자체 MCP 순으로 가장 싼 수단부터 썼고, 각 단계에서 "무엇이 안 되는가"가 구체적 문장으로 정리된 뒤에 다음 단계로 넘어갔다.
결정: 벡터 단독의 한계 세 가지(리포 하나만 인덱스 · 정확 토큰 약함 · 삭제 미반영)가 확인된 시점에 직접 구축으로 전환. 구축 범위는 그 세 가지를 푸는 데 필요한 만큼으로 한정.