开篇
每个编码智能体的demo看起来都很魔幻......直到你把它对准真实的代码库。然后它就会:
- 上下文窗口瞬间爆满
- 对过时的代码产生幻觉
- 慢到你还不如直接grep
我在用大型Rust/Python/TS代码库构建AI工作流时撞上了这堵墙,所以我做了一个自己真正想要的工具:基于AST的超轻量嵌入式MCP。
它叫cocoindex-code,已经帮我节省了约70%的Token消耗,等待时间也大幅缩短。
如果你在用Claude、Codex、Cursor或其他支持MCP的编码智能体,这篇文章就是为你写的。
核心思路:AST + 增量索引
常见的"代码RAG"方案,往往像一个基建工程:搭向量DB、写ETL、处理Schema漂移、调优分块策略......然后祈祷它们能保持同步。
cocoindex-code采取完全相反的方法:
- 嵌入式MCP:在本地作为MCP服务器运行,无需额外维护数据库。
- 基于AST的索引:通过Tree-sitter解析代码结构,按函数、类、代码块等有意义的单元进行切分,而不是随机的200行窗口。
- 增量更新:基于Rust开发的CocoIndex引擎,只对变更的文件重新索引。
- 实用的多语言支持:Python、JS/TS、Rust、Go、Java、C/C++、C#、SQL、Shell等。
你向智能体提问,它只拉取真正需要的代码,不会撑爆上下文窗口。
开箱即用的功能
只需添加这个MCP,你就能获得:
- 语义代码搜索工具 :
search(query, limit, offset, refresh_index)作为MCP工具提供。 - 立即节省Token:只有相关的代码块进入Prompt,不再传整个文件。
- 极快速度:增量索引 + Rust引擎,更新几乎是瞬时完成。
- 本地嵌入模型默认可用 :使用
sentence-transformers/all-MiniLM-L6-v2,无需API Key。 - 可选升级:支持切换到任意LiteLLM兼容的嵌入模型(OpenAI、Gemini、Mistral、Voyage、Ollama等)。
从"普通编码智能体"到"真正理解代码库的智能体",只需约1分钟。
1分钟接入(Claude / Codex / OpenCode)
首先安装uv:
bash
curl -LsSf https://astral.sh/uv/install.sh | sh
Claude
bash
claude mcp add cocoindex-code \
-- uvx --prerelease=explicit --with \
"cocoindex>=1.0.0a16" \
cocoindex-code@latest
Codex
bash
codex mcp add cocoindex-code \
-- uvx --prerelease=explicit --with \
"cocoindex>=1.0.0a16" \
cocoindex-code@latest
OpenCode
bash
opencode mcp add
# MCP server name: cocoindex-code
# type: local
# command:
# uvx --prerelease=explicit --with cocoindex>=1.0.0a16 cocoindex-code@latest
就这么简单。把智能体指向你的仓库,代码库的语义搜索就作为MCP工具可用了。
search MCP工具详解
接入后,MCP会暴露一个search工具:
python
search(
query: str, # 自然语言或代码片段
limit: int = 10, # 1-100
offset: int = 0, # 分页
refresh_index: bool = True # 查询前重新索引
)
每个结果包含:文件路径、语言、代码内容、起止行号、相似度分数。
最实用的场景:
- "X的实现在哪?"------当仓库里有五个同名函数时。
- "把所有涉及JWT刷新的认证逻辑都找出来"
- "找到和这个堆栈跟踪匹配的代码"
索引是增量更新的,所以重构后可以立即对新代码使用智能体,无需重新跑离线任务。
支持的语言
C, C++, C#, CSS/SCSS, Go, HTML, Java, JavaScript/TypeScript/TSX, JSON/YAML/TOML, Kotlin, Markdown/MDX, Pascal, PHP, Python, R, Ruby, Rust, Scala, Solidity, SQL, Swift, XML
__pycache__、node_modules、target、dist等噪音目录会自动排除。根路径从.cocoindex_code/、.git/或当前目录自动发现,通常不需要设置任何环境变量。
嵌入模型:免费开始,按需升级
默认使用本地SentenceTransformers模型:
sbert/sentence-transformers/all-MiniLM-L6-v2- 无需API Key,无费用,完全本地运行
需要更强的语义理解时,可通过COCOINDEX_CODE_EMBEDDING_MODEL切换到任意LiteLLM兼容模型:Ollama、OpenAI、Gemini、Mistral、Voyage、Cohere、AWS Bedrock、Nebius等。
先用免费的本地模型起步,需要时再升级。
大型/企业级代码库
底层使用CocoIndex------一个基于Rust的索引引擎,专为大规模增量数据工作流设计。
团队用法:
- 团队成员共享索引,避免每台机器重复索引
- 分支去重,减少无谓的重复工作
- 可作为CocoIndex平台上更大规模数据/索引基础设施的一部分运行
试试看
如果觉得有用,希望你能:
- 给仓库加个Star :
cocoindex-code和cocoindex - 在你的主力项目上试试(不是玩具项目,是真实的那个)
- 在GitHub上提反馈或想法
我特别想知道:
- 现有"代码RAG"工具失败的仓库场景
- 你希望更好支持的语言或框架
- 你想让编码智能体10倍上下文感知能力的工作流
试过的朋友,欢迎在评论区告诉我你用在了什么技术栈上,我想在后续文章中展示真实案例。