SOTA Sync
全部文章
记忆与上下文2026-04-21

Claude Context:让整个代码库成为 Claude Code 的上下文窗口

Zilliz 开源 claude-context,一个专为 Claude Code 和 AI 编程 agent 设计的代码搜索 MCP 插件,GitHub 已积累 6100 Stars。核心思路:用向量数据库的语义搜索替代把整个 /src 目录塞进 context 窗口的粗暴方案。对大型代码库,全量载入既贵(token 消耗)又慢(预处理);claude-context 改为建立一次索引,之后每次请求只拉取语义相关的代码片段,支持 BM25 精确匹配和向量相似度的混合检索。技术细节:用 Merkle tree 做增量索引(只重新索引变更文件),AST 感知切块(不在函数中间截断),支持 OpenAI、VoyageAI、Ollama、Gemini 等多种 embedding 方案,后端集成 Zilliz Cloud 或本地 Milvus。通过 MCP 协议接入,兼容 Claude Code、Cursor、Cline 等主流 AI 编程工具。

#问题:大型代码库 + Claude Code 的上下文困境

让 Claude Code 理解一个大型代码库,最直接的方式是把整个 /src 目录加入 context。这在小项目上可行,但在真实工程场景下面临两个问题:

  1. 成本 :把几千个文件全塞进 context 窗口,每次请求消耗大量 token
  2. 质量 :无关代码越多,Claude 越难专注在真正相关的部分,输出质量下降

claude-context 的方案是:先建索引,用时再搜索——只把语义相关的代码片段拉进 context。

#混合检索:BM25 + 向量双路并行

claude-context 使用混合检索策略,同时运行两条搜索路径:

  • BM25(关键词精确匹配) :适合已知函数名、变量名、API 名称的精确查找
  • 稠密向量相似度(Dense Vector Search) :适合语义相关代码的模糊查询,比如「找所有处理认证的地方」

两路结果通过 Reciprocal Rank Fusion(RRF)合并排序,返回综合相关性最高的代码片段。

#增量索引:Merkle Tree 加速重建

全量索引大型代码库一次不贵,贵在每次代码变更后的重建。claude-context 用 Merkle tree 做文件变更追踪:

  • 每个文件计算内容 hash,形成树状校验结构
  • 代码更新时只对内容变更的文件重新索引
  • 其余文件跳过,显著缩短增量更新时间

对于活跃开发中的仓库,这让索引保持最新的成本降到可接受范围。

#AST 感知切块:不在函数中间截断

传统 RAG 切块通常按固定字符数截断,可能把一个函数从中间切开,导致每个 chunk 的语义不完整。claude-context 使用 AST(抽象语法树)感知切块:

  • 解析代码结构,识别函数、类、模块边界
  • 在语义边界处切块,不截断表达式或函数体
  • 每个 chunk 包含完整的语义单元

这保证 Claude 拿到的每段代码都是能独立理解的逻辑单元,而不是碎片。

#Embedding 与后端配置

支持多种 embedding 方案,可按成本和精度选择:

Embedding 方案说明
OpenAI精度高,有调用成本
VoyageAI代码专用 embedding,适合技术代码库
Ollama本地运行,零 API 成本
GeminiGoogle 生态集成

向量数据库后端支持两种部署方式:

  • Zilliz Cloud :托管服务,零运维
  • 本地 Milvus :自部署,数据不出本地

#MCP 接入与兼容性

claude-context 通过标准 MCP 协议暴露代码搜索能力,兼容:

  • Claude Code
  • Cursor
  • Cline
  • 其他支持 MCP 的 AI 编程工具

安装后,agent 可以通过 MCP 工具调用发起语义代码搜索,不需要修改 agent 逻辑本身。