代码库碎片
索引任何GitHub存储库并立即搜索。不需要API密钥。在CPU上100%本地运行。
公开MCP服务器,以便Claude Code、Cursor或任何LLM客户端可以在语义上搜索您的代码库。
GitHub Repo → Clone → Chunk → Embed (local) → SQLite Index → MCP Server → LLM快速开始
# Install
git clone https://github.com/joinQuantish/codebase-rag
cd codebase-rag
bun install
# Index any repo (auto-embeds, no API key needed!)
bun run src/cli.ts index https://github.com/your-org/your-repo
# Search
bun run src/cli.ts search "place order" # keyword (~2ms)
bun run src/cli.ts vsearch "how does authentication work" # semantic (~28ms)
bun run src/cli.ts query "wallet encryption and key management" # hybrid (best)
# Start MCP server for Claude Code / Cursor
bun run src/cli.ts serve就这样 没有OpenAI密钥,没有GPU,没有外部服务。
运作原理
索引管道
- Git同步 --克隆或提取仓库,通过SHA256哈希检测更改的文件
- 文件过滤器 --选择代码文件(TS、Python、Rust、Go等),跳过node_modules/dist/binaries
- 代码分块器 --在函数/类边界上拆分文件,回退到具有重叠的60行窗口
- FTS5指数 --每个块都进入SQLite全文搜索,波特词干+BM25排名
- 矢量嵌入 --通过全MiniLM-L6-v2在本地嵌入块(22MB ONNX型号,在CPU上运行)
搜索模式
| 模式 | 命令 | 速度 | 最适合 |
|---|---|---|---|
| 关键字 | search | ~2ms | 函数名称,精确术语 |
| 语义 | vsearch | ~28ms | 概念性问题(“X是如何工作的”) |
| 混合动力 | query | ~30ms | 最佳整体精度 |
这三个都是开箱即用的,不需要API密钥。
嵌入
违约: 全迷你LM-L6-v2 通过 @huggingface/transformers (CPU上的ONNX运行时)
- 384维向量
- ~22MB量化模型(首次运行时自动下载)
- 每个块嵌入约4ms
- 缓存在
~/.cache/huggingface/
可选地切换到OpenAI以获得更高的质量:set OPENAI_API_KEY 有人是。
MCP服务器
两种模式: 标准 (当地)和 超文本传输协议 (远程/共享)。
选项A:本地(stdio)
用于个人使用Claude Code或Cursor。增添 ~/.claude.json:
{
"mcpServers": {
"codebase": {
"command": "bun",
"args": ["run", "/path/to/codebase-rag/src/server.ts"],
"env": {
"CODEBASE_RAG_DATA": "/path/to/codebase-rag/data"
}
}
}
}选项B:HTTP(远程)
与团队分享。启动服务器,任何人都可以连接:
# Start HTTP server
bun run src/cli.ts serve --http --port=3100从克劳德代码连接:
{
"mcpServers": {
"codebase": {
"type": "streamable-http",
"url": "https://your-server.example.com/mcp"
}
}
}终点:
| 路径 | 方法 | 描述 |
|---|---|---|
/mcp | POST/GET/DELETE | MCP协议(流式HTTP) |
/health | GET | 健康检查+索引统计数据(JSON) |
/ | GET | 服务器信息+连接说明 |
暴露的工具
| 工具 | 说明 |
|---|---|
search | 快速关键字搜索(FTS5+BM25) |
semantic_search | 向量相似性搜索 |
query | 混合搜索(关键字+语义,RRF融合)-- 推荐 |
stats | 指数统计 |
建筑
src/
cli.ts — CLI entry point
sync.ts — Git clone/pull + change detection
chunker.ts — Code-aware file splitting
indexer.ts — SQLite FTS5 + vector storage
embedder.ts — Local embeddings (HuggingFace) or OpenAI
search.ts — Search engine (keyword, semantic, hybrid)
server.ts — MCP server (stdio + HTTP transport)支持的语言
TypeScript、JavaScript、Python、Rust、Go、Java、Kotlin、C/C++、Ruby、PHP、Swift、C#、Solidity、SQL、Markdown、YAML、TOML、Shell、GraphQL、Protobuf、Terraform
重新索引
跑 index 同样,它只对内容哈希值发生变化的文件重新索引:
bun run src/cli.ts index https://github.com/your-org/your-repo
# ✅ Indexed 3 files, skipped 97 unchanged环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
OPENAI_API_KEY | 否 | 可选:使用OpenAI嵌入而不是本地嵌入 |
EMBEDDING_MODEL | 否 | 自定义HuggingFace模型(默认值: Xenova/all-MiniLM-L6-v2) |
EMBEDDING_BASE_URL | 否 | 自定义OpenAI兼容端点(Ollama,vLLM) |
CODEBASE_RAG_DATA | 否 | 数据目录(默认: ./data) |
自动同步(可选)
设置cron以按计划重新索引:
# Re-index every 15 minutes
*/15 * * * * cd /path/to/codebase-rag && bun run src/cli.ts index https://github.com/your-org/your-repo或者使用GitHub webhook在推送时触发。
堆栈
- 运行时:Bun
- 数据库:带FTS5的SQLite(bun:SQLite)
- 嵌入:HuggingFace Transformers.js(ONNX、CPU、本地)
- 主控程序:@modelcontextprotocol/sdk(stdio传输)
- 零外部基础设施 -单个SQLite文件,没有API密钥,没有GPU,没有Postgres/Pinecone
