主题
08 - 业内其他主流本地代码索引方案补遗
除了前面 5 个项目(code-review-graph、GitNexus、code-graph-rag-mcp、Semble、BitFun)之外,业内还有不少值得关注的本地代码索引方案,特别是 Serena(24K stars) 和 Claude Context(Zilliz,9K stars) 这两个名气最大的。本章把这些方案分类整理出来。
1. 业内方案全景图
按"实现路线"重新分类整个市场:
本地代码索引方案
│
┌──────────┬───────────┬──┴────────┬──────────┬─────────────┐
▼ ▼ ▼ ▼ ▼ ▼
LSP 派 向量 RAG 派 图谱派 混合检索派 AST 结构派 Grep 加速派
│ │ │ │ │ │
Serena Claude code- Semble ast-grep MCP BitFun
oraios/ Context review- Minishlab ast-grep/ flashgrep
serena Zilliz graph ──────── ast-grep-mcp ─────────
───────── ───────── ───────── code- ───────── probe
code- GitNexus graph- Tree-sitter probelabs
context- abhigyan- rag-mcp query 工具
engine patwari er77/ ─────────
elara-labs ───────── ───────── ast-grep
───────── code-graph- code- Skills
code- rag-mcp index-
memory er77/ mcp
───────── ───────── johnhuang-
claude- 316/
context- code-
local index-mcp
tazhate/ ─────────
───────── codeindex-
zxfgds/ mcp
mcp-code- lexandro
indexer (Go)
─────────
Sourcegraph
Cody2. Serena — LSP 派的王者(24,367 stars)
GitHub: oraios/serena ⭐ 24K+核心定位: "为你的 Coding Agent 装一个 IDE"。通过 Language Server Protocol (LSP) 让 AI 在符号级别操作代码,而不是字符串级别。 License: MIT
2.1 核心特性
Serena 与前 5 个项目最大的不同是:它不建额外的索引,而是直接借用每种语言的官方 LSP(Language Server Protocol)。LSP 是 VSCode/JetBrains 等 IDE 用了多年的成熟方案,能精准做:
- "go to definition"
- "find references"
- "call hierarchy"
- "rename symbol"
- "diagnostics"
38+ MCP 工具,分四大类:
| 类别 | 代表工具 |
|---|---|
| 符号级导航 | 跳转定义、查找引用、符号搜索、调用层次 |
| 语义搜索 | 按意义找代码而非字符串匹配 |
| 精确编辑 | 替换符号体、前后插入、跨文件 rename,不破坏周围代码 |
| 安全保障 | 删除前引用检查、编辑后诊断验证 |
2.2 语言覆盖
52 种编程语言(业内最广),通过各自的 LSP 实现:
- Python(Pyright)
- TypeScript/JavaScript(typescript-language-server)
- Go(gopls)
- Rust(rust-analyzer)
- Java(jdtls)
- C/C++(clangd)
- ……
2.3 关键工程
- 持久化 daemon:LSP 进程常驻,跨请求保温,避免冷启动
- 52 种语言"开箱即用":无需为每种语言写 Tree-sitter 抽取规则
- HTTP / stdio 双模式:可远程或本地
- 多 Context:内置
claude-code/desktop-app/ide等预设
2.4 配置文件
~/.serena/
├── serena_config.yml # 全局配置(自动创建)
└── projects/
└── <project>/
└── project.yml # 项目级配置2.5 安装
bash
# 推荐方式:uvx 启动(无需全局安装)
claude mcp add serena -s user -- uvx --from serena serena
# 或者
codex mcp add serena -- uvx --from serena serena2.6 适用场景
✅ 强推:
- 跨文件重构、rename
- 引用查找、call hierarchy
- 任何语言的精准符号级操作
- 已经在用 LSP 工具链的项目
⚠️ 慎用:
- 不依赖语义/向量检索 → 找不到"意图相关"代码
- LSP 启动慢的语言(Java/Scala)首次响应略慢
2.7 与前 5 个项目对比
| 维度 | Serena | code-review-graph / GitNexus |
|---|---|---|
| 索引方式 | LSP(IDE 派) | Tree-sitter(自建图) |
| 语言数 | 52 | 11–23 |
| rename / refs | LSP 原生精准 | 基于图近似 |
| 爆炸半径分析 | 没有现成工具 | 强项 |
| 维护成本 | 几乎为零(LSP 帮你处理) | 需要为每种语言写规则 |
结论:Serena 与 code-review-graph 是互补的——前者强符号级编辑,后者强图谱分析。两者可以同时挂在同一个 Claude Code 里。
3. Claude Context (Zilliz) — 向量 RAG 派的代表(9K+ stars)
GitHub: zilliztech/claude-context ⭐ 9K+核心定位: 把 codebase 语义索引到 Milvus 向量数据库,让 AI 助手用语义搜索(而非文件遍历)理解整个代码库。 License: MIT
3.1 五大核心组件
| 组件 | 实现 |
|---|---|
| 代码分割器 | AST 或 LangChain 切块,默认 2500 行 chunk,300 行 overlap |
| 嵌入提供商 | OpenAI / VoyageAI / Gemini / Ollama 四选一 |
| 向量数据库 | Milvus / Zilliz Cloud,支持 BM25 + 密集向量混合搜索 |
| 文件同步器 | Merkle DAG 比对,仅索引变更文件(存 ~/.context/merkle/) |
| MCP 服务器 | 暴露 4 工具:index_codebase、search_code、clear_index、get_indexing_status |
3.2 嵌入 provider 矩阵
| Provider | 默认模型 | 备注 |
|---|---|---|
| OpenAI | text-embedding-3-small | 默认,质量稳定 |
| VoyageAI | voyage-code-3 | 专为代码训练,README 中标注"code-optimized" |
| Gemini | gemini-embedding-001 | 多语言强 |
| Ollama | nomic-embed-text | 完全本地,零数据外发 |
3.3 安装
bash
# 推荐:通过 npm 启动 MCP
claude mcp add claude-context -- npx -y @zilliz/claude-context-mcp
# 必需环境变量
OPENAI_API_KEY=sk-...
EMBEDDING_PROVIDER=OpenAI
MILVUS_TOKEN=your-zilliz-cloud-api-key # 或本地 Milvus URL3.4 关键设计亮点
a) Merkle DAG 增量
不像普通的 mtime/hash 单点比对,Claude Context 把整个目录看成一棵 Merkle 树:
- 改一个文件 → 该文件及其所有祖先的哈希变化
- 同步时只需要从根开始 diff 即可定位所有变更
- 远超
git status+ 单文件 hash 的简单方案
b) 混合检索
每次查询同时跑:
- BM25:精确关键词匹配(标识符、API 名)
- 密集向量:语义匹配
两路结果在 Milvus 内部 RRF 融合。
3.5 与 Semble 的对比
| 维度 | Claude Context (Zilliz) | Semble |
|---|---|---|
| 向量库 | Milvus(重量级) | 内存/文件(轻量) |
| 嵌入 | 云 API 为主(OpenAI/Gemini/VoyageAI) | Model2Vec 本地静态 |
| 增量 | Merkle DAG | 250ms 全量重建 |
| 依赖 | 要装 Milvus 或开 Zilliz 账户 | 零依赖 |
| 跨机器共享索引 | ✅(Milvus 当后端) | ❌ |
| 企业 / 团队适配 | ✅ | 个人用更合适 |
结论:Claude Context 是"企业级方案",Semble 是"个人轻量方案"。
3.6 实测收益
- 相比"directory dump"减少约 40% token
- 比纯 grep 能找到"命名不同但语义相同"的代码(如查"用户认证"找到
verifySignature())
4. Probe — AST 感知的 Rust 极速搜索(probelabs/probe)
GitHub: probelabs/probe核心定位: 把 ripgrep 的速度 + Tree-sitter 的 AST 智能 + Elasticsearch 风格的查询语法全揉一起,零设置、零依赖、纯离线。 技术栈: Rust
4.1 三大杀手锏
- AST 感知:返回完整语义块(整个函数 / 类),不是 grep 那种"半行片段"
- 零设置:不建索引也能跑(首次搜索时即时跑 AST 解析),可选预建索引加速
- Elasticsearch 风格查询:
"async" AND "fetch" NOT "test"
field:function "validateUser"
required:term excluded:legacy4.2 MCP 工具
通过 npx -y @probelabs/probe mcp 启动,提供 3 工具:
| 工具 | 作用 |
|---|---|
search_code | Elasticsearch 风格语义搜索,带 session 缓存 |
query_code | Tree-sitter pattern matching |
extract_code | 提取代码块,带 file path + 行号 |
4.3 关键特性
- Token 感知:
--max-tokens直接限制返回大小;session 去重避免重复返回 - 完全离线:不需要 API 调用
- BM25/TF-IDF + SIMD 加速评分
- 支持 13+ 种语言
4.4 与 BitFun / flashgrep 的对比
| 维度 | Probe | BitFun (flashgrep) |
|---|---|---|
| 核心算法 | AST 感知 + BM25/TF-IDF + SIMD | trigram 倒排索引 |
| 是否需要索引 | 可有可无 | 必须先建索引 |
| 返回粒度 | 完整函数 / 类 | grep 行 |
| 超大仓库 | 好 | 极佳 |
| 集成 | NPX MCP + Rust SDK + CLI | BitFun 桌面端 |
结论:Probe 更"AI 友好"(返回语义块),flashgrep 更"暴力快"(单纯加速 grep)。
5. ast-grep MCP — AST 结构化搜索
GitHub: ast-grep/ast-grep-mcp核心定位: 用 AST pattern matching 找代码,而不是字符串。让 AI 能写出"所有没处理错误的 async 函数"这种结构化查询。
5.1 能做什么
经典查询示例:
yaml
# 找所有没处理错误的 async 函数
rule:
pattern: async function $NAME($$$) { $$$ }
not:
has:
pattern: try { $$$ } catch { $$$ }可以找到:
- 所有未处理错误的 async 函数
- 使用某个 React Hook 的所有组件
- 参数超过 3 个的函数
- 类方法里的
console.log - 特定上下文里的代码(如 useEffect 里的 setState)
5.2 集成方式
- MCP Server:
ast-grep-mcp暴露 4 个工具,主要是dump_syntax_tree、pattern match、自定义sgconfig.yaml - Claude Code Skill:ast-grep/agent-skill 教 Claude 写规则
- Cursor / Claude Desktop 都支持
5.3 与 Tree-sitter 派的关系
ast-grep 本质上是 Tree-sitter 的命令行/规则 DSL,与 code-review-graph 等"用 Tree-sitter 自建图"是互补的:
- code-review-graph:建持久化图,做关系查询
- ast-grep:实时 AST 模式匹配,做"代码体检""规则巡检"
适合用 ast-grep 写自动 lint / refactor 规则,让 AI 沿着规则做。
6. code-index-mcp (johnhuang316) — Python MCP 中坚
GitHub: johnhuang316/code-index-mcp ⭐ ~900+ 技术栈: Python 核心定位: 智能代码索引与分析的 MCP 服务器,支持 10+ 种语言。
6.1 特性
- Python 实现,
uvx code-index-mcp一行启动 - 10+ 语言,AST + 关键字混合
- 高级搜索(按名字、按类型)
- 项目结构分析(类、函数、依赖)
6.2 安装
bash
# 推荐 uvx
uvx code-index-mcp
# 或 pip
pip install code-index-mcp6.3 与 code-graph-rag-mcp(er77)的对比
| 维度 | code-index-mcp (johnhuang316) | code-graph-rag-mcp (er77) |
|---|---|---|
| 语言 | Python | Node.js (24+) |
| 工具数 | 中等 | 26 方法 |
| 嵌入 | 简单 | 多 provider |
| MCP 标准化程度 | 良好 | 高(含 batch_index、bus diagnostics) |
| Stars | ~900 | ~100 |
7. 其他值得关注的方案
7.1 code-context-engine(elara-labs)
- GitHub: elara-labs/code-context-engine
- 号称 94% token 节省
- 一键自动检测编辑器(Claude Code / Cursor / VS Code / Gemini CLI)
- 全文 + 语义搜索,
.gitignore感知
7.2 code-memory(kapillamba4)
- GitHub: kapillamba4/code-memory
- BM25 + 密集向量
- Git 历史集成(按 git commit 时序检索代码)
- AST 感知,零遥测、无 API Key
- 号称 50% token 节省
7.3 claude-context-local(tazhate)
- GitHub: tazhate/claude-context-local
- AST chunking + 混合语义/词法搜索
- 9+ 语言
- 轻量(~200MB RAM),多项目搜索
7.4 codeindex-mcp(lexandro)
- GitHub: lexandro/codeindex-mcp
- Go 实现,单二进制 17MB,零运行时依赖
- Bleve 全文搜索
- 自动 file watcher + glob 搜索
7.5 mcp-code-indexer(zxfgds)
- GitHub: zxfgds/mcp-code-indexer
- Python,向量化语义搜索
- 多项目并行
- 集成 Claude Desktop + VSCode
8. 企业 / 远程方案:Sourcegraph Cody
商业 + 开源的代码搜索平台,与本调研其他项目"纯本地"路线不同,Cody 走的是"本地 + 远程仓库联邦"路线。
8.1 核心能力
- Agentic Context Fetching:mini-Agent 自动收集上下文
- 工具:代码搜索 + 文件获取 + 终端命令 + 网络 + MCP + OpenCtx
- 迭代式 review loops,确保上下文完整
8.2 MCP 集成
Cody 已支持 Anthropic MCP:
- 内置 MCP servers:Postgres / Filesystem / Google Drive / Git / SQLite / Brave Search
- Agentic 工具调用:自动调用 MCP 工具收集上下文
- MCP 完全本地运行,显式 opt-in
8.3 与纯本地方案的差异
| 维度 | Cody | code-review-graph / GitNexus |
|---|---|---|
| 索引位置 | 本地 + 远程仓库(Sourcegraph 平台) | 纯本地 |
| 多仓库联邦 | ✅ | 有限 |
| 企业权限 | ✅ | ❌ |
| 完全离线 | ❌(需远程查询时) | ✅ |
适合"几十个微服务仓库分布在不同 GitHub Org,又需要跨仓库语义搜索"的企业团队。
9. 加上这些项目后的完整对比表
按"流派 + 关键差异"重新归纳:
9.1 LSP 派(新增)
| 项目 | Stars | 语言数 | 特色 |
|---|---|---|---|
| Serena | 24K+ | 52 | LSP 原生,38+ MCP 工具,符号级精准编辑 |
9.2 知识图谱派
| 项目 | Stars | 语言数 | 特色 |
|---|---|---|---|
| code-review-graph | 17K | 23+ | 28 工具,5 prompt,crg-daemon |
| GitNexus | — | 11 | Skills + Hooks + Web UI |
9.3 向量 RAG / 混合检索派
| 项目 | Stars | 嵌入方式 | 向量库 |
|---|---|---|---|
| Claude Context (Zilliz) | 9K+ | OpenAI/VoyageAI/Gemini/Ollama | Milvus/Zilliz Cloud |
| code-graph-rag-mcp (er77) | ~100 | 多 provider | sqlite-vec |
| Semble | ~2K | Model2Vec 静态 | 内存 |
| code-index-mcp (johnhuang316) | ~900 | 简单 | 简单 |
| code-context-engine | ~76 | 多 | 多 |
| code-memory | ~30 | BM25+密集 | 本地 |
| claude-context-local | ~0 | AST chunking | 本地 |
| mcp-code-indexer | — | 向量化 | 本地 |
9.4 AST 结构化派(新增)
| 项目 | 特色 |
|---|---|
| ast-grep MCP | AST pattern matching,规则巡检 |
| Probe | AST + Elasticsearch query + 离线 |
9.5 Grep 加速派
| 项目 | 特色 |
|---|---|
| BitFun / flashgrep | trigram 倒排索引,Chromium 36.1× 加速 |
| codeindex-mcp (Go) | Bleve 全文索引,17MB 静态二进制 |
9.6 企业远程派
| 项目 | 特色 |
|---|---|
| Sourcegraph Cody | 本地+远程联邦,MCP 集成 |
10. 推荐组合更新版
加上 Serena 后,业内最强组合变成:
┌────────────────────────────────────────────────┐
│ AI Coding Agent │
│ (Claude Code / Codex / Cursor) │
└────────────────────────┬────────────────────────┘
│ MCP
┌──────────┬──────────┼──────────┬──────────┐
▼ ▼ ▼ ▼ ▼
LSP 派 图谱派 RAG 派 AST 派 Grep 加速
───── ───── ───── ───── ─────
Serena code- Semble ast-grep flashgrep
(精准重构) review- 或 (规则 (大仓库
graph Claude 巡检) 加速)
(PR 评审 Context
影响分析) (企业向量)实际配置示例(个人版):
bash
# 1. Serena —— 跨文件 rename、refs(LSP 派)
claude mcp add serena -s user -- uvx --from serena serena
# 2. code-review-graph —— PR 评审、影响分析(图谱派)
pip install code-review-graph && code-review-graph install
# 3. Semble —— 极速语义搜索(向量派)
claude mcp add semble -s user -- uvx --from "semble[mcp]" semble实际配置示例(企业版,可远程协作):
- Serena(精准编辑)
- Claude Context (Zilliz)(团队共享 Milvus 索引)
- Sourcegraph Cody(跨仓库联邦)
11. 选型补充建议
11.1 如果你之前在 7 选型表里没选好,看看这里
| 你的场景 | 加 1 个项目 |
|---|---|
| 我想要最广的语言支持(52 种) | Serena(LSP 派) |
| 我想要精准的跨文件重构 / refs | Serena(LSP 原生) |
| 我想要团队共享索引(不只是个人) | Claude Context (Zilliz) + Milvus |
| 我想要自动代码规则巡检 | ast-grep MCP |
| 我想要零设置零依赖的语义搜索 | Probe |
| 我想要单二进制零运行时部署 | codeindex-mcp (Go) |
| 我有几十个微服务仓库散落各 Git 仓库 | Sourcegraph Cody |
| 我用 Git commit 时序做"哪个版本动了这段代码" | code-memory |
11.2 5 大项目 + 这一章项目的"职责矩阵"
| 任务 | 最佳工具 |
|---|---|
| "跳到 X 的定义" | Serena(LSP) |
| "X 被谁调用" | Serena(LSP refs)/ code-review-graph(图) |
| "改 X 影响哪些测试" | code-review-graph / GitNexus(爆炸半径) |
| "PR 评审" | code-review-graph(slash 命令)/ GitNexus(Skill) |
| "找加密用户密码的代码" | Semble(语义) / Claude Context |
| "全仓库找字符串/常量" | flashgrep / Probe(速度) |
| "找所有 async 没 try/catch 的函数" | ast-grep MCP(AST 规则) |
| "跨 50 个仓库语义搜索" | Sourcegraph Cody(联邦) |
| "团队 50 人共享索引" | Claude Context (Zilliz Cloud) |
| "Chromium 级超大仓库" | flashgrep / Probe |
12. 总结:业内现状
到 2026 年中,业内本地代码索引方案明显进入"百花齐放"阶段:
| 现状 | 含义 |
|---|---|
| MCP 成为事实标准 | 几乎所有新项目都先做 MCP server |
| LSP 派强势崛起 | Serena 24K stars,把"AI + IDE 能力"打通 |
| 企业向量库 vs 个人本地嵌入 | Claude Context vs Semble 两种路线并存 |
| 图谱 + 向量混合是默认 | code-graph-rag-mcp 等代表 |
| Rust 工具链占据底层 | flashgrep / Probe 都是 Rust |
| Python 占据上层 | code-review-graph / Semble / code-index-mcp |
| Skills 化趋势 | Claude Code 的 Skills 体系催生了大批"专项工作流" |
预测方向:
- LSP + 图谱 + 向量 + Grep 加速四派会出现"全栈方案"(已经初见 BitFun)
- 标准化的 "代码索引 MCP 接口"可能很快出现
- 静态嵌入(Model2Vec 等)会替代大部分本地 Transformer
- 团队共享 + 本地优先并存
13. 参考链接
- Serena: https://github.com/oraios/serena
- Claude Context (Zilliz): https://github.com/zilliztech/claude-context
- Probe: https://github.com/probelabs/probe
- ast-grep MCP: https://github.com/ast-grep/ast-grep-mcp
- code-index-mcp: https://github.com/johnhuang316/code-index-mcp
- code-context-engine: https://github.com/elara-labs/code-context-engine
- code-memory: https://github.com/kapillamba4/code-memory
- claude-context-local: https://github.com/tazhate/claude-context-local
- codeindex-mcp (Go): https://github.com/lexandro/codeindex-mcp
- mcp-code-indexer: https://github.com/zxfgds/mcp-code-indexer
- Sourcegraph Cody: https://sourcegraph.com/docs/cody/capabilities/agentic-context-fetching
- MCP 协议: https://modelcontextprotocol.io/