code-context
为AI编程工具装上"代码记忆":向量检索让Claude/Cursor理解整个代码库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为AI编程工具装上"代码记忆":向量检索让Claude/Cursor理解整个代码库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Claude Context 系统架构## 背景故事:为什么需要代码级别的语义搜索?大语言模型在编程辅助上已经非常强大,但有一个根本限制:上下文窗口有限。当你的代码库达到数万行时,把整个目录塞进 prompt 根本不现实——不仅 token 成本飙升,模型的有效信息密度也会急剧下降。传统的做法是让 AI 逐个目录探索,但这需要多轮对话,效率低下。Zilliz Cloud 的团队本身是做向量数据库(Milvus)的,他们在实际开发中发现这个问题后,决定用自家产品来解决:将代码库向量化后存进向量数据库,AI 需要什么代码就精准检索什么代码。这就是 Claude Context 的起源。## 核心原理:像搜索引擎一样检索代码Claude Context 的工作原理可以类比为"给代码库建了一个 Google"。具体流程如下:**第一步:索引(Index)**当你运行 claude 命令并输入 Index this codebase 时,Claude Context 会遍历整个代码库,基于 AST(抽象语法树)对代码进行智能分块(chunking)。它不是简单按行数切分,而是根据函数、类、模块等代码结构来划分,确保每个 chunk 的语义完整性。分块后的文本通过 OpenAI 的 text-embedding-3-small 模型(或 VoyageAI 等其他 embedding provider)转成向量,存入 Milvus/Zilliz Cloud 向量数据库。同时还会建立 BM25 倒排索引,用于关键词精确匹配。**第二步:检索(Search)**当你用自然语言提问"找到处理用户认证的函数"时,Claude Context 会同时做两件事:向量相似度搜索(找到语义相近的代码)+ BM25 关键词搜索(找到包含 auth、login 等关键词的代码)。两个结果合并后排序,返还给 AI agent。这就是它所说的"混合搜索"(Hybrid Search)。第三步:注入上下文检索到的相关代码片段作为上下文注入到 AI agent 的 prompt 中,让 AI 在有完整背景的情况下生成代码或解答问题。评测数据显示,相比直接加载整个目录,Claude Context 在等效检索质量下可节省约 40% 的 token 消耗。
图2:MCP 效率对比——在等效检索质量下节省约 40% token## 技术架构:Monorepo 下的四大核心模块Claude Context 采用 pnpm workspaces monorepo 结构,主仓库下有 4 个子包:| 模块 | 技术栈 | 职责 ||------|--------|------|| @zilliz/claude-context-core | TypeScript + tree-sitter + LangChain | 核心索引引擎,向量化 + 混合检索 || @zilliz/claude-context-mcp | TypeScript + @modelcontextprotocol/sdk | MCP 协议服务器,AI agent 集成 || vscode-extension | TypeScript + VS Code API | VS Code 语义代码搜索插件 || chrome-extension | — | Chrome 扩展(开发中) |**核心依赖解析:**代码分析引擎 tree-sitter 是关键——它是一个用于解析编程语言语法树的库,Claude Context 借助它理解代码结构,从而实现比纯字符切分更智能的分块策略。LangChain 被用于 embedding 流程的编排,faiss-node 则用于可选的本地 FAISS 索引(如果你不想用云端 Milvus 的话)。支持的编程语言极为广泛:TypeScript、JavaScript、Python、Java、C++、C#、Go、Rust、PHP、Ruby、Swift、Kotlin、Scala 等,覆盖了绝大多数主流开发场景。**嵌入模型可选:**不强制绑定 OpenAI,可以换成 VoyageAI(voyage-code-3)或通过 Ollama 完全本地化部署。这意味着企业用户可以在不暴露代码的前提下使用语义搜索。
图3:Claude Context 与 Claude Code 集成示意## 使用方式:从零到跑起来只要 5 分钟Claude Context 有三种使用场景,满足不同用户需求:**场景一:MCP 插件(最推荐)**Claude Code、Cursor、Windsurf、VS Code 等主流 AI 编程工具都支持 MCP 协议。以 Claude Code 为例,只需要一行命令即可完成配置:bashclaude mcp add claude-context \ -e OPENAI_API_KEY=sk-xxx \ -e MILVUS_ADDRESS=https://xxx.zillizcloud.com \ -e MILVUS_TOKEN=xxx \ -- npx @zilliz/claude-context-mcp@latest配置完成后,在 Claude Code 中输入 Index this codebase,工具会自动完成代码库的向量化索引。然后就可以用自然语言检索了:Find functions that handle user authentication。**场景二:VS Code 插件(适合纯 IDE 用户)**直接从 VS Code Marketplace 搜索"Semantic Code Search"安装,无需命令行配置,在 IDE 内直接享受语义搜索功能。
**图4:VS Code 插件界面****场景三:Core SDK 集成(适合二次开发)**如果你想在自有产品中集成代码索引能力,可以直接引入 @zilliz/claude-context-core 包,配合 Milvus 向量数据库实现完全私有化部署:typescriptimport { Context, MilvusVectorDatabase, OpenAIEmbedding } from '@zilliz/claude-context-core';const context = new Context({ embedding, vectorDatabase });await context.indexCodebase('./your-project');const results = await context.semanticSearch('./your-project', 'vector database operations', 5);## 增量索引:代码变了怎么办?代码库是动态的,每次改动都重新索引整个项目成本太高。Claude Context 使用 Merkle 树(Merkle tree)来追踪文件变化——只有被修改过的文件才会重新分块和向量化,未变化的文件保持原有索引。这让增量更新几乎可以瞬间完成,非常适合大型项目的日常开发流程。## 局限与争议:硬币的另一面Claude Context 也有一些不可忽视的局限性:1. 云端向量数据库是硬性依赖默认配置需要 Zilliz Cloud(或自建 Milvus)。虽然 Core 包支持 FAISS 做本地索引,但 FAISS 在大规模代码库上的表现和扩展性不如专用向量数据库。这增加了部署复杂度,不适合纯离线场景。2. Embedding 模型成本索引阶段需要调用 embedding API(OpenAI/VoyageAI),代码库越大、chunk 越多,成本越高。1 万个文件的代码库可能产生数千个 chunk,每次索引都是一次 API 调用成本。3. 不支持 LLM 推理本地化虽然 embedding 可以换成本地 Ollama,但搜索结果的排序和上下文组装仍然依赖外部 AI agent。用户无法在完全不联网的情况下获得完整体验。4. 与 Context7 等竞品的差异Context7 的做法是实时抓取 GitHub 最新文件,而 Claude Context 是基于本地索引。前者适合探索新项目,后者适合深度维护已有代码库。两者定位不同,不是简单的替代关系。## 行业意义:AI 编程工具的基础设施层Claude Context 的出现代表着 AI 编程工具生态正在走向"分层"。底层是模型能力(Claude、GPT),中间层是工具协议(MCP),而 Claude Context 填补的正是代码记忆层——让 AI 不再是"失忆的访客",而是"了解项目全貌的专家"。从 GitHub Stars 增长曲线来看,Claude Context 在 2025 年中推出后快速攀升至万星俱乐部,成为 MCP 生态中最受欢迎的工具之一。它的成功也反向推动了 MCP 协议的普及——越来越多的 AI 工具开始支持 MCP,Claude Context 本身就是最好的推广案例。如果你经常使用 Claude Code 或 Cursor 开发中型以上项目,Claude Context 值得一试。它解决的问题真实存在,集成成本极低,收益却是持续性的——每次对话都能从更精准的代码上下文中受益。