<div align="center">
<img src="https://raw.githubusercontent.com/mrsladoje/sweet-search/HEAD/assets/sweet-search-banner-pixelated.svg" alt="sweet-search — local code search for AI coding agents" width="100%" />
🍬 AI 코딩 에이전트를 위한 로컬 코드 검색 🍬<br>
Claude Code, Codex 및 친구들을 위해 제작된 여섯 가지 빠르고 목적에 맞는 도구들 👀
오늘날 모든 코딩 에이전트는 반사적으로 grep과 Read를 찾습니다. sweet-search가 이 통념에 도전합니다 😎
npm
GitHub stars
license
node
platforms
inference
video
</div>
✨ 주요 특징 (Highlights)
<table>
<tr>
<td width="50%" valign="top">
💰 에이전트 실행 비용 5–33% 절감<br>
<sub style="font-size: small;">200개의 실제 엔지니어링 작업에서 · 5개 harness + 모델 설정 · 동일한 해결 횟수(481 대 481)</sub>
</td>
<td width="50%" valign="top">
⚡ 시간 절약<br>
<sub style="font-size: small;">고전적인 grep 및 읽기 방식보다 빠른 검색 속도 · 코드 질문당 모델 시간 최대 34% 감소</sub>
</td>
</tr>
<tr>
<td width="50%" valign="top">
🔄 한 번 인덱싱하고 잊어버리세요<br>
<sub style="font-size: small;">단일 명령어로 GPU 가속화 · 편집할 때마다 업데이트되며, 커밋되지 않은 변경 사항 포함</sub>
</td>
<td width="50%" valign="top">
🔒 100% 로컬 환경 지원<br>
<sub style="font-size: small;">API 키 없음 · 클라우드 연결 없음 · Docker 불필요 · 코드는 절대 기기를 벗어나지 않음</sub>
</td>
</tr>
</table>
📚 목차 (Table of Contents)
<table>
<tr>
<td width="22%" valign="top">
시작하기 (GET STARTED)
🚀 빠른 시작<br>
<sub style="font-size: small;">검색 가능한 리포지토리를 위한 세 가지 명령어</sub>
🖥️ 호환성<br>
<sub style="font-size: small;">OS · harness · 언어 · 하드웨어</sub>
⭐ 별점 부탁드립니다? 🥺🙏<br>
<sub style="font-size: small;">정말 도움이 됩니다</sub>
</td>
<td width="27%" valign="top">
아키텍처 (THE ARCHITECTURE)
🧰 여섯 가지 도구<br>
<sub style="font-size: small;">search · grep · find · semantic · trace · read</sub>
</td>
</tr>
</table>
🧠 시스템 프롬프트 (The System Prompt)
<sub style="display: block;">검색 및 작업 완료에 최적화됨</sub>
| 인덱싱 (INDEXING) | 🗂️ 인덱스 (The Index) <br> <sub style="font-size: 0.9em;">candle · fused kernels · cAST 청킹</sub> | [🔄 증분 인덱싱 (Incremental Indexing)] <br> <sub style="font-size: 0.9em;">reconcile 데몬이 작업 트리를 추적합니다.</sub> |
| 결과물 (THE RECEIPTS) | 📊 벤치마크 (Benchmarks) <br> <sub style="font-size: 0.9em;">에이전트 비용 절감 · 엔진 속도 · 전체 코퍼스 MRR</sub> | [🧭 경쟁사 대비 (The Competition)] <br> <sub style="font-size: 0.9em;">동료들과 비교한 정직한 장점 및 트레이드오프</sub> |
| 선행 기술 및 감사의 말씀 (Prior Art & Acknowledgements) | <sub style="font-size: 0.9em;">우리가 서 있는 기반</sub> |
🚀 빠른 시작 (Quickstart)
npm install -g sweet-search
d cd your-repo
...
끝입니다. 그 이후부터는 작업하는 동안 인덱스가 스스로 업데이트됩니다. <br>
제거 방법 (😢):
sweet-search uninstall
sweet-search uninstall --all
<details>
<summary><b>설정 옵션 및 세부 정보</b></summary>
<br/>
sweet-search init --wizard
sweet-search init --skip-models
sweet-search init --li-model edge
...
- Footprint — 모델은
~/.cache/sweet-search/models/에 저장되며 온디바이스 전용으로 실행됩니다:
- CPU 전용: 수백 MB (INT8)
- GPU: +~1.2 GB (FP32), 도움되지 않을 경우 건너뜀
- M3+ Mac: Neural Engine을 위한 선택적 +~3.2 GB CoreML 캐스케이드
- 어떤 에이전트들 — 플래그를 사용하여 선택합니다:
init만 단독 실행 → Claude Code
--codex / --opencode → 해당 에이전트만; Claude Code도 유지하려면 --claude 추가
--agents / --gemini / --cursor → 각각 AGENTS.md / GEMINI.md / Cursor 규칙을 작성해야 합니다.
- 인덱싱,
.sweet-search/, 그리고 --mcp는 모든 선택에 대해 동일합니다.
- Claude Code — 사용자의
CLAUDE.md는 그대로 유지되며, 모든 내용은 .claude/ 폴더에 저장됩니다:
agents/sweet-search.md: 메인 에이전트로, settings.json에서 선택됩니다. Claude Code 고유의 프롬프트(grep 우선 조언 제외)와 우리의 가이드가 포함되어 있습니다.
agents/general-purpose.md, agents/Plan.md: 내장 서브에이전트를 대체합니다; Explore는 사용 불가합니다.
rules/sweet-search.md: 짧은 상기 사항이며, gitignore 처리됩니다 (로컬 메모리 폴더 이름을 지정함).
/sweet-index 스킬.
- 초기화 후 새 세션을 시작하세요.
- 이미 다른 메인 에이전트를 선택한 경우? init 명령이 기존 설정을 유지하고, 전체 가이드를
rules/에 넣으며 sweet-search 출력 스타일을 추가하고 경고 메시지를 표시합니다.
- Codex — 우리의 가이드와 테스트된 기본 지침은
.codex/config.toml에 있습니다:
- Codex는 프로젝트를 신뢰하기 전까지는
.codex/ 폴더를 무시합니다; init 명령이 방법을 알려줍니다.
- opencode — 우리의 가이드, 테스트된 프롬프트 및 도구 설명 플러그인은
.opencode/에 있습니다:
- 기존의
opencode.json / .jsonc 파일은 주석을 유지하며 제자리에서 편집됩니다.
- Prewarm hook (Claude Code, Codex): 세션이 시작될 때 검색 데몬을 시작합니다. 이것 없이도 검색은 작동합니다.
- 검색 데몬(Search daemon): 첫 번째 검색이 이를 시작합니다.
sweet-search daemon start|status|stop|restart 명령으로 관리할 수 있습니다.
- 인덱싱되는 내용:
.gitignore를 준수합니다; node_modules, 빌드 디렉터리, 난독화된 파일 및 1MB가 넘는 파일은 건너뜁니다; 추가 규칙은 .sweet-search-ignore에 추가하세요. ss-grep은 추적되는 공급업체 코드, 라이선스 및 데이터 파일도 커버합니다.
MCP 및 기타 통합
CLI는 기본 접점 표면입니다. MCP 서버를 등록하려면 sweet-search init --mcp를 실행하거나, 직접 .mcp.json에 추가할 수 있습니다:
{
"mcpServers": {
"sweet-search": {
...
- MCP server: 8개의 도구(
search, trace, read, read-semantic, index, health, repo-map, vocab-prewarm), 2개의 리소스, 2개의 프롬프트를 갖추고 있습니다. 모든 검색 도구는 읽기 전용(read-only)이며 반복 실행해도 동일한 결과를 보장하는 속성(idempotent)을 가집니다.
- 하위 에이전트용 Repo map:
repo-map 도구는 PageRank 순위를 매긴 심볼 개요를 반환하며, 이는 위임된 에이전트를 브리핑하기에 적합하고 모든 토큰 예산에 맞습니다.
- 어휘 사전 예열(Vocabulary prewarm): 인덱스는 저장소의 실제 식별자를 채굴하여 코드 커뮤니티(Leiden)를 감지하며, 데몬은 코드가 변경됨에 따라 이 두 가지 모두 최신 상태로 유지합니다. 이들은 세 가지 검색 모드를 모두 예열하므로, 세션의 첫 번째 의미론적 쿼리(semantic query)는 이미 캐시가 채워진(cache-warm) 상태입니다.
- 커밋된 파일은 포터블하게 유지됩니다: init은 커밋 설정 파일 내에 기계별 절대 경로를 절대로 작성하지 않습니다. 모든 명령어 주입(instruction injection)은 마커로 구분되며 되돌릴 수 있습니다.
Init 플래그
| Flag | 동작 방식 (Behavior) |
|---|
--skip-models | 현재 모델을 다운로드하지 않습니다. 첫 번째 sweet-search index 실행 시 다운로드됩니다. 검색에는 항상 모델이 필요합니다. |
| ... | |
제거 플래그 및 정리
| Flag | 동작 방식 (Behavior) |
|---|
--all | 이 기계에서 sweet-search를 제거합니다: init가 실행된 모든 저장소, 공유 모델 캐시, 그리고 npm 패키지까지 모두 제거됩니다. |
| ... | |
sweet-search uninstall은 현재 저장소에서 Sweet Search의 규칙(rule), 메인 에이전트 및 하위 에이전트 파일과 그 설정 항목, 출력 스타일, AGENTS/GEMINI/Cursor 명령어 블록, 프로젝트 훅(hook) 및 스킬, MCP 등록 정보, 강제/알림 아티팩트, 그리고 .sweet-search/ 디렉토리를 제거합니다. 공유 모델 캐시는 다른 저장소를 위해 유지됩니다. 이는 사용자가 작성한 콘텐츠를 보존합니다. 일반적인 Codex [features] hooks = true 플래그는 다른 도구들이 공유할 수 있으므로 그대로 남아 있으며, 그렇지 않으면 비어 있는 설정 파일은 {}로 남을 수 있습니다.
🖥️ 호환성
<table>
<tr><td valign="top"><b>💻 플랫폼</b></td><td>✅ 최상급 지원: macOS (Apple Silicon, Intel) · Linux x64/arm64 (glibc) · WSL2를 통한 Windows<br/>☑️ 지원됨: musl/Alpine · 기타 CPU (느림)<br/>모든 곳에서 Node ≥ 22<br/><sub> </sub><br/><details><summary>최상급 지원이 더 빠른 이유</summary>npm 패키지는 사용자의 OS 및 CPU에 맞춰 <b style="font-weight: bold;">미리 컴파일된 Rust 엔진</b>을 배포합니다. 이 엔진은 모든 주요 경로(hot path)에서 실행됩니다:<ul style="list-style-type: none; padding-left: 0;"><li style="margin-bottom: 5px;">🧠 <b style="font-weight: bold;">임베딩 추론 (Embedding inference)</b>: Metal, CUDA, CoreML</li><li style="margin-bottom: 5px;">🧭 <b style="font-weight: bold;">벡터 검색 (Vector search)</b>: 바이너리 HNSW + 재점수화(rescoring)</li><li style="margin-bottom: 5px;">🧮 <b style="font-weight: bold;">MaxSim 재순위 지정 (rerank)</b>: WASM보다 9–21배 빠르고, JS보다 80–200배 빠름</li><li style="margin-bottom: 5px;">🔎 <b style="font-weight: bold;"><code style="background-color: #eee; padding: 2px 4px; border-radius: 3px;">ss-grep</code></b>: 정규 표현식 엔진 및 희소 N-그램 인덱스</li><li style="margin-bottom: 5px;">🔤 <b style="font-weight: bold;">토크나이저 (Tokenizer)</b>, 근접 중복 감지, SQLite 확장 기능</li><li style="margin-bottom: 5px;">🚀 <b style="font-weight: bold;"><code style="background-color: #eee; padding: 2px 4px; border-radius: 3px;">sweet-search</code></b> CLI 자체</li></ul>🐢 <b style="font-weight: bold;">지원되는 플랫폼</b>은 WASM/JS 폴백(fallback)을 사용합니다. 어디서든 실행할 수 있지만, 속도는 느립니다.<br/>📦 <b style="font-weight: bold;">제로 설정 (Zero setup)</b>: <code style="background-color: #eee; padding: 2px 4px; border-radius: 3px;">npm install</code>이 적절한 바이너리를 선택합니다.<br/>🪟 <b style="font-weight: bold;">네이티브 Windows</b>: 아직 지원하지 않습니다.</details></td></tr></table>
WSL2 사용.</details></td></tr>
<tr><td valign="top"><b style="font-size: 1.2em;">🤖 지원 에이전트(Harnesses)</b></td><td>✅ <b style="color: green;">Claude Code</b> · <b style="color: blue;">Codex</b> · <b style="color: orange;">opencode</b> <i>(튜닝 및 벤치마크 완료됨)</i><br/>☑️ Cursor · 모든 MCP 클라이언트(any MCP client) · 셸이 있는 모든 에이전트에서도 작동함 <i>(작동 가능)</i></td></tr>
<tr><td valign="top"><b style="font-size: 1.2em;">🗣️ 언어(Languages)</b></td><td><sub style="font-family: monospace;">JavaScript · TypeScript · Python · Go · Rust · Java · C · C++ · C# · Ruby · PHP · Kotlin · Swift · Scala · Dart · Elixir · Erlang · Haskell · Clojure · F# · OCaml · ReScript · Elm · Julia · R · Perl · Lua · Groovy · Objective-C · Zig · Nim · Crystal · CoffeeScript · Haxe · Pascal · Tcl · Vala · Fortran · COBOL · Assembly · Solidity · TLA+ · CodeQL · Zeek · Spicy · Emacs Lisp · Vim script · Shell · PowerShell · SQL · GraphQL · Protobuf</sub><br/><sub> </sub><br/><details><summary>📄 웹, 설정, 빌드, 셰이더, 템플릿 및 문서 파일 추가 지원</summary><ul style="list-style: none; padding-left: 0;"><li style="margin-bottom: 5px"><sub><b style="color: blue;">웹(Web)</b>: HTML · Vue · Svelte · Razor · ASP.NET pages · CSS · SCSS · Sass · Less</sub></li><li style="margin-bottom: 5px"><sub><b style="color: blue;">데이터 및 설정(Data & config)</b>: JSON · YAML · TOML · XML · INI · properties · HCL · Nix</sub></li><li style="margin-bottom: 5px"><sub><b style="color: blue;">빌드(Build)</b>: Dockerfile · Makefile · CMake · Gradle · Meson · Ninja · Jam · Starlark · Earthfile · just · M4 · AWK · sed · SystemRDL</sub></li><li style="margin-bottom: 5px"><sub><b style="color: blue;">셰이더(Shaders)</b>: GLSL · HLSL · Metal · WGSL · Cg · ShaderLab</sub></li><li style="margin-bottom: 5px"><sub><b style="color: blue;">템플릿(Templates)</b>: Jinja · EJS · Pug · Haml · Slim · Stylus</sub></li><li style="margin-bottom: 5px"><sub><b style="color: blue;">문서(Docs)</b>: Markdown · reStructuredText · 일반 텍스트 · Jupyter</sub></li></ul></details></td></tr>
<tr><td valign="top"><b style="font-size: 1.2em;">🔋 하드웨어(Hardware)</b></td><td>✅ 최신 중급 또는 그 이상의 장비<br/>⚠️ 저사양 장비(RAM 8GB 이하)에서는 권장하지 않음<ul style="list-style: disc; margin-top: 5px;"><li style="margin-bottom: 5px">이 경우, sweet-search는 벤치마크되지 않은 더 작은 모델을 사용합니다.</li></ul></td></tr>
</table>
📊 벤치마크(Benchmarks)
sweet-search를 네 가지 방식으로 측정합니다. 실제 에이전트에게 얼마나 도움이 되는지부터 순수한 엔진 처리량까지 다양하게 측정합니다:
<table style="width: 100%; border-collapse: collapse;">
<tr style="border-bottom: 2px solid #ccc;">
<td width="50%" valign="top">
🤖 ① Code-retrieval<br>
<sub>저장소(repo)를 검색할 때 코딩 에이전트가 동일한 정확도에서 더 저렴하게 작동하나요?</sub>
</td>
<td width="50%" valign="top">
🛠️ ② Task-completion<br>
<sub>더 저렴하고 밀도가 높은 컨텍스트가 다단계 엔지니어링 작업 전반에 걸쳐 **복리 효과(compound)**를 내나요? 200개의 SWE-rebench 태스크.</sub>
</td>
</tr>
<tr>
<td width="50%" valign="top">
📄 ③ Academic IR<br>
<sub>표준 학술 코드 검색 스위트(GCSN, M2CRB, CoSQA 등)를 이용한 전체 코퍼스 MRR@10.</sub>
</td>
<td width="50%" valign="top">
⚡ ④ Engine speed<br>
<sub>순수 시스템 수치: grep 처리량(throughput), 쿼리 지연 시간(latency), MaxSim 재순위 지정 커널(rerank kernels), 벡터 검색.</sub>
</td>
</tr>
</table>
<a id="bench-code-retrieval"></a>
🤖 1. Code-retrieval benchmark
다양한 코드 검색 태스크에서 네이티브(native) 대비 sweet을 비교하며, 이는 *에이전트 기반 루프(agents-in-the-loop)*를 통해 평가되었습니다.
<div align="center">
<img src="https://raw.githubusercontent.com/mrsladoje/sweet-search/HEAD/assets/code-retrieval-stats.svg" alt="홀드아웃 결과, sweet-search 대 네이티브, 200개 질문, 3회 반복. Claude Code (Sonnet 5.5 High): 정확도 +2.4%, 청구 비용 -7.6%. Claude Code (Opus 5.5 Medium 및 High): 정확도 +0.2%와 −0.5% (유의미하지 않음), 청구 비용 −9.5%, 도구 호출(tool calls) −22.8%. opencode (Sol 6.1): 정확도 −2.8%, 청구 비용 −50.2%. Codex (Sol 6.1): 정확도 −2.5%, 청구 비용 −7.7%, 도구 호출 동일. 모델 시간, 토큰 및 턴을 추정: Sonnet −8.4%, Opus medium −13.6%, Opus high −12.8%, opencode −34.4%, Codex +8.0%." width="100%" />
<br>
<br>