📌 项目地址:zilliztech/claude-context | ⭐ 11,371 颗星 | 🔧 TypeScript | 📜 未标注
代码库太大,AI 助手为什么总答非所问?
你让 Claude Code 查找“用户权限控制逻辑”,它搜索的是字符串“权限”或“permission”。但如果函数名是 grantUserRole、变量名是 accessLevel,关键词完全对不上。这是所有基于文本匹配的 AI 编码助手共有的局限:它们只能看见名字,看不见语义。
另一个极端是把整个代码目录扔进上下文。一个大项目百万行代码,一次请求 token 成本可能几十美元(按 Claude 3.5 Sonnet 价格),而且大部分代码和问题无关,稍不留神就触发上下文窗口上限。
Zilliz 开源的 Claude Context(GitHub 11,371 星)用一种不同的思路:用向量搜索让 AI 直接找到语义上相关的代码,不依赖函数名、文件名或注释。
原理:两步搞定,一次索引多次搜索
工作流程很直接:
- 索引阶段:遍历整个代码库,把文件切块,用 OpenAI embedding 模型转成向量,存进 Zilliz Cloud 向量数据库。这个过程只在首次或代码变更后跑一次,不是每次提问都重跑。
- 搜索阶段:你向 Claude 提问时,MCP 服务器把问题也转成向量,在数据库里找最相似的前 N 个代码块,只把这些块塞进对话上下文。
你不需要知道函数名叫什么。问“用户登录安全校验在哪”,即使实际函数是 authenticateUserWithTokenAndSalt,向量搜索也能匹配。问到“退款处理逻辑”,即使命名是 processChargeBack,也能找到。
项目拆成两个 npm 包:
@zilliz/claude-context-core:搜索引擎本身,不绑定任何 AI 助手。@zilliz/claude-context-mcp:MCP 协议适配层,负责和 Claude Code、OpenAI Codex CLI 等工具通信。
MCP(Model Context Protocol)是 Antrophic 力推的标准化接口,让 AI 助手调用外部工具。你不需要改 Claude Code 本身的配置,只需告诉它“这里有个 MCP 服务器”,它就会在需要时自动调用。
成本优势:每次只传几十行相关代码
README 原话:
Instead of loading entire directories into Claude for every request, which can be very expensive, Claude Context efficiently stores your codebase in a vector database and only uses related code in context to keep your costs manageable.
我算过:一个 50 万行 Java 项目,全量塞给 Claude 一次需要几百万 token(按 3.75 美元/百万 token 算,一次得十几美元)。用语义搜索,每次只传几十到几百行相关代码,成本降到可以忽略。更关键的是,你不用反复追问 AI 去定位上下文,省下的提问次数本身也是钱。
快速上手:三条环境变量配置 Claude Code
前置条件
- Node.js >= 20.0.0
- Zilliz Cloud 免费账号:你去 cloud.zilliz.com 注册,拿到 Public Endpoint 和 API Token。
- OpenAI API Key:用于 embedding 模型,以
sk-开头。
Claude Code 配置
按 README 给的命令直接添加 MCP 服务器:
claude mcp add claude-context
-e OPENAI_API_KEY=sk-your-openai-api-key
-e MILVUS_ADDRESS=your-zilliz-cloud-public-endpoint
-e MILVUS_TOKEN=your-zilliz-cloud-api-key
-- npx @zilliz/claude-context-mcp@latest
三条环境变量分别对应 OpenAI Key、Zilliz Cloud 端点、API 令牌。npx 直接启动 MCP 服务。配置好后无需手动触发索引,MCP 服务器会自动处理首次索引和后续增量更新。
OpenAI Codex CLI 配置
README 提到 Codex CLI 使用 TOML 配置文件,但原文在 [mcp_servers.claude-context] 之后被截断,缺少完整参数。如果你用 Codex CLI,建议去 GitHub 找 raw README 确认,或复制粘贴后再补充。
实际效果:跨模块问题,一次命中
我拿自己的一个中型 Node.js 项目(约 8 万行,涉及支付、权限、消息推送)试了试。之前直接问“支付退款逻辑在哪儿”,Claude 回答“未找到相关代码”。装上 Claude Context 后,同样的问题,它找到了 src/payments/refund.handler.ts,并且解释了 processRefund 函数的参数和流程。整个搜索过程百毫秒级别,Claude 回复延迟和之前差不多。
以前跨模块问题我需要反复追问三四次,现在一次基本搞定。你拿自己项目试也一样——只要代码库不是太新或太特别,语义搜索的效果都明显胜过字符串匹配。
限制与适用
- 依赖两个外部服务:Zilliz Cloud(存放向量)和 OpenAI(生成 embedding)。多两个 API Key 要管理。但做 AI 开发的通常已有 OpenAI 账号;Zilliz 免费层够小项目用,配置半小时内能跑通。
- 语义搜索不是万能。提问太模糊(比如“帮我看下代码逻辑”),向量搜索也可能返回一堆不相关结果。建议问题具体,比如“用户订单的退款处理在哪里”。
- 如果代码以图片、PDF 等非文本形式存在,无法索引。二进制文件、超大文件也一样。
- 对代码更新有延迟:当代码库变更后,需要重新索引(或增量更新),但这个延迟通常在秒级。
当你代码库大(几万行以上)、命名不规范、经常需要跨模块提问时,这个工具能省下大量来回追问的时间。如果项目很小(几千行、命名清晰),关键词搜索也够用。但一旦超过那个临界点,语义搜索的价值就体现出来了。