Code Context Hologres是一个基于MCP(Model Context Protocol,模型上下文协议)的插件,为AI编程助手提供代码库级别的语义搜索能力。它使用阿里云百炼DashScope的向量嵌入模型将代码转化为向量,存储在Hologres实时数据仓库中,实现基于BM25稀疏向量与稠密向量的混合搜索,并通过RRF(倒数秩融合)重排序,精准定位相关代码。
通过Code Context Hologres,您可以:
使用自然语言搜索整个代码库中的相关代码片段。
无需逐文件浏览,AI助手即可自动获取相关代码上下文。
支持百万行级别的代码库,仅将相关片段加入AI上下文,大幅降低成本。
通过增量索引(基于Merkle树)自动检测文件变更,高效更新索引。
关于MCP协议的更多信息,请参见Model Context Protocol。
产品概述
Code Context Hologres提供以下核心能力:
能力 | 说明 |
语义搜索 | 使用自然语言查询代码,如"查找处理用户认证的函数" |
混合搜索 | 结合BM25稀疏向量与稠密向量,通过RRF重排序提升准确性 |
增量索引 | 基于Merkle树检测文件变更,仅重新索引变化部分 |
AST感知分块 | 基于AST(抽象语法树)的代码分块,保留代码语义结构 |
可扩展存储 | 基于Hologres向量数据库,支持百万行级别代码库 |
后台索引 | 索引在后台异步运行,不影响正常的代码搜索使用 |
支持的AI编程助手:Qwen Code、Claude Code,以及Cursor、VS Code、Windsurf等支持MCP的客户端。
支持的编程语言:TypeScript、JavaScript、Python、Java、C++、C#、Go、Rust、PHP、Ruby、Swift、Kotlin、Scala、Markdown。
支持的嵌入模型提供商:DashScope(阿里云百炼)、OpenAI、VoyageAI、Google Gemini、Ollama(本地部署)。本手册所有示例使用DashScope模型。
前提条件
环境要求
项目 | 要求 |
Node.js | >= 20.0.0且 < 24.0.0(不支持24.x) |
包管理器 | npm(推荐)或pnpm |
操作系统 | macOS、Linux、Windows |
Code Context Hologres与Node.js 24.0.0不兼容。如果您的Node.js版本 >= 24,请先降级。
阿里云百炼DashScope配置
您需要获取DashScope的API Key来使用嵌入模型。
可用的DashScope嵌入模型:
模型名称 | 向量维度 | 说明 | 批大小限制 |
text-embedding-v4 | 1024 | 最新推荐模型 | 10 |
text-embedding-v3 | 1024 | 支持多维度(1024/768/512) | 25 |
text-embedding-v2 | 1536 | 旧版模型 | 25 |
text-embedding-v1 | 1536 | 旧版模型 | 25 |
推荐使用text-embedding-v4模型,效果最佳。批大小(EMBEDDING_BATCH_SIZE)需设为10。
Hologres实例配置
您需要一个Hologres实例来存储向量数据。请记录以下信息:
信息项 | 说明 | 示例 |
实例地址(Endpoint) | Hologres实例的连接地址 |
|
端口 | 连接端口 |
|
数据库名称 | 已创建的数据库名称 |
|
AccessKey ID | 阿里云AccessKey ID | 在AccessKey管理获取 |
AccessKey Secret | 阿里云AccessKey Secret | 同上 |
Hologres实例版本需要为Hologres V4.0及以上版本。
AI编程助手安装
根据您使用的编程助手,完成对应安装:
Qwen Code:参考Qwen Code官方文档完成安装。
Claude Code:参考Claude Code文档完成安装。
安装
Code Context Hologres无需手动安装。MCP插件通过npx自动下载最新版本。
首次使用时,npx code-context-mcp-hologres@latest将自动从npm下载并运行。
您可以通过以下命令验证工具是否可用:
npx code-context-mcp-hologres@latest --help该命令将显示所有支持的环境变量和配置选项。
配置凭据
在Claude Code中配置
命令行方式
在终端中运行以下命令,将Code Context Hologres注册为Claude Code的MCP服务器:
claude mcp add code-context-hologres \
-e EMBEDDING_PROVIDER=DashScope \
-e DASHSCOPE_API_KEY=sk-your-dashscope-api-key \
-e EMBEDDING_MODEL=text-embedding-v4 \
-e EMBEDDING_BATCH_SIZE=10 \
-e HOLOGRES_HOST=your-hologres-instance.hologres.aliyuncs.com \
-e HOLOGRES_PORT=80 \
-e HOLOGRES_DATABASE=your-database-name \
-e HOLOGRES_USER=your-access-id \
-e HOLOGRES_PASSWORD=your-access-secret \
-- npx code-context-mcp-hologres@latest请将以下占位符替换为您的实际值:
占位符 | 替换为 |
| 您的百炼DashScope API Key |
| 您的Hologres实例地址 |
| 您的Hologres数据库名称 |
| 您的AccessKey ID |
| 您的AccessKey Secret |
JSON配置文件方式
您也可以通过编辑Claude Code的配置文件来添加MCP服务器。
创建或编辑~/.claude.json文件,添加以下内容:
{
"mcpServers": {
"code-context-hologres": {
"command": "npx",
"args": ["-y", "code-context-mcp-hologres@latest"],
"env": {
"EMBEDDING_PROVIDER": "DashScope",
"DASHSCOPE_API_KEY": "sk-your-dashscope-api-key",
"EMBEDDING_MODEL": "text-embedding-v4",
"EMBEDDING_BATCH_SIZE": "10",
"HOLOGRES_HOST": "your-hologres-instance.hologres.aliyuncs.com",
"HOLOGRES_PORT": "80",
"HOLOGRES_DATABASE": "your-database-name",
"HOLOGRES_USER": "your-access-id",
"HOLOGRES_PASSWORD": "your-access-secret"
}
}
}
}验证配置
运行以下命令确认MCP服务器已注册:
claude mcp list在输出中应能看到code-context-hologres服务器。
在Qwen Code中配置
命令行方式
在终端中运行以下命令:
qwen mcp add \
-t stdio \
-e EMBEDDING_PROVIDER=DashScope \
-e DASHSCOPE_API_KEY=sk-your-dashscope-api-key \
-e EMBEDDING_MODEL=text-embedding-v4 \
-e EMBEDDING_BATCH_SIZE=10 \
-e HOLOGRES_HOST=your-hologres-instance.hologres.aliyuncs.com \
-e HOLOGRES_PORT=80 \
-e HOLOGRES_DATABASE=your-database-name \
-e HOLOGRES_USER=your-access-id \
-e HOLOGRES_PASSWORD=your-access-secret \
code-context-hologres \
npx -y code-context-mcp-hologres@latestJSON配置文件方式
创建或编辑~/.qwen/settings.json文件,添加以下内容:
{
"mcpServers": {
"code-context-hologres": {
"type": "stdio",
"command": "npx",
"args": ["-y", "code-context-mcp-hologres@latest"],
"env": {
"EMBEDDING_PROVIDER": "DashScope",
"DASHSCOPE_API_KEY": "sk-your-dashscope-api-key",
"EMBEDDING_MODEL": "text-embedding-v4",
"EMBEDDING_BATCH_SIZE": "10",
"HOLOGRES_HOST": "your-hologres-instance.hologres.aliyuncs.com",
"HOLOGRES_PORT": "80",
"HOLOGRES_DATABASE": "your-database-name",
"HOLOGRES_USER": "your-access-id",
"HOLOGRES_PASSWORD": "your-access-secret"
}
}
}
}验证配置
在Qwen Code中查看MCP服务器列表,确认code-context-hologres已出现。
全局配置文件方式(通用)
如果您同时在多个MCP客户端中使用Code Context Hologres,可以通过全局配置文件统一管理凭据,无需在每个客户端重复设置环境变量。
创建~/.context/.env文件,写入以下内容:
# DashScope 嵌入模型配置
EMBEDDING_PROVIDER=DashScope
DASHSCOPE_API_KEY=sk-your-dashscope-api-key
EMBEDDING_MODEL=text-embedding-v4
EMBEDDING_BATCH_SIZE=10
# Hologres 数据库配置
HOLOGRES_HOST=your-hologres-instance.hologres.aliyuncs.com
HOLOGRES_PORT=80
HOLOGRES_DATABASE=your-database-name
HOLOGRES_USER=your-access-id
HOLOGRES_PASSWORD=your-access-secret使用全局配置文件后,MCP注册命令可以大幅简化:
Claude Code:
claude mcp add code-context-hologres -- npx code-context-mcp-hologres@latestQwen Code:
qwen mcp add \
-t stdio \
code-context-hologres \
npx -y code-context-mcp-hologres@latest环境变量优先级:进程环境变量(通过-e参数设置)> ~/.context/.env文件 > 默认值。
环境变量说明
DashScope嵌入模型配置
变量名 | 是否必填 | 默认值 | 说明 |
| 否 |
| 嵌入模型提供商。使用DashScope时设为 |
| 是(使用DashScope时) | 无 | 百炼DashScope API Key |
| 否 |
| 嵌入模型名称 |
| 否 |
| 嵌入批处理大小。 |
| 否 |
| DashScope API地址,一般无需修改 |
Hologres数据库配置
变量名 | 是否必填 | 默认值 | 说明 |
| 是 | 无 | Hologres实例地址 |
| 否 |
| 连接端口 |
| 是 | 无 | 数据库名称 |
| 是 | 无 | AccessKey ID |
| 是 | 无 | AccessKey Secret |
高级配置
变量名 | 是否必填 | 默认值 | 说明 |
| 否 |
| 启用混合搜索(BM25 + 稠密向量) |
| 否 | 无 | 额外文件扩展名,逗号分隔。如 |
| 否 | 无 | 额外忽略规则,逗号分隔。如 |
使用方式
基本工作流程
在项目的目录中打开AI编程助手(Qwen Code或Claude Code)。
让AI索引您的代码库。
查看索引状态,等待索引完成。
使用自然语言搜索代码。
索引代码库
索引代码库会将项目文件分块、生成向量嵌入,并存入Hologres。索引在后台异步运行,启动后会立即返回响应。
您只需用自然语言告诉AI:
> 索引这个代码库AI会自动调用index_codebase工具。该工具支持以下参数:
参数 | 是否必填 | 默认值 | 说明 |
| 是 | 无 | 代码库的绝对路径(AI会自动获取当前工作目录) |
| 否 |
| 是否强制重新索引 |
| 否 |
| 代码分割器: |
| 否 | 无 | 额外文件扩展名列表,如 |
| 否 | 无 | 额外忽略规则列表 |
示例:索引时包含额外的文件类型。
> 索引这个代码库,并包含 .vue 和 .svelte 文件示例:强制重新索引。
> 强制重新索引当前代码库查看索引状态
索引进度可以在后台运行时随时查看。AI会调用get_indexing_status工具。
> 查看索引状态可能的状态:
状态 | 说明 |
| 索引已完成,可以搜索。显示已索引文件数和代码块数 |
| 正在索引中,显示进度百分比 |
| 索引失败,显示错误信息,可重新运行索引 |
| 尚未索引,需先运行索引 |
搜索代码
使用自然语言查询即可搜索已索引的代码库。AI会调用search_code工具。
> 查找处理用户认证的函数search_code工具支持以下参数:
参数 | 是否必填 | 默认值 | 说明 |
| 是 | 无 | 代码库的绝对路径(AI自动获取) |
| 是 | 无 | 自然语言查询 |
| 否 |
| 返回结果数量(最大50) |
| 否 | 无 | 按文件扩展名过滤,如 |
更多搜索示例:
> 找到所有与数据库连接相关的代码> 搜索错误处理逻辑,只看 .py 文件> 查找与支付流程相关的代码片段> 搜索 Hologres 向量检索的实现代码索引进行中时也可以搜索,但结果可能不完整。索引完成后结果会更加准确。
清除索引
如果需要清除代码库的索引数据(例如切换了嵌入模型),可以:
> 清除当前代码库的索引AI会调用clear_index工具,删除Hologres中的索引数据。
完整使用示例(Claude Code)
$ cd /path/to/your-project
$ claude
> 索引这个代码库
code-context-hologres: Started background indexing for codebase '/path/to/your-project'
using AST splitter. Indexing is running in the background.
> 查看索引状态
code-context-hologres: Codebase '/path/to/your-project' is currently being indexed.
Progress: 45.2% (Processing files and generating embeddings...)
> 查看索引状态
code-context-hologres: Codebase '/path/to/your-project' is fully indexed and ready
for search. Statistics: 128 files, 1,536 chunks.
> 查找处理用户登录认证的函数
code-context-hologres: Found 5 results for query "用户登录认证":
1. Code snippet (TypeScript) [your-project]
Location: src/auth/login.ts:15-42
...完整使用示例(Qwen Code)
$ cd /path/to/your-project
$ qwen
> 索引这个代码库
code-context-hologres: Started background indexing for codebase '/path/to/your-project'
using AST splitter. Indexing is running in the background.
> 查看索引状态
code-context-hologres: Codebase '/path/to/your-project' is fully indexed and ready
for search. Statistics: 128 files, 1,536 chunks.
> 查找处理用户登录认证的函数
code-context-hologres: Found 5 results for query "用户登录认证":
1. Code snippet (TypeScript) [your-project]
Location: src/auth/login.ts:15-42
...高级配置
切换DashScope模型
您可以通过修改EMBEDDING_MODEL环境变量来切换DashScope嵌入模型。
例如,使用text-embedding-v3模型:
# 在 MCP 注册命令中修改
-e EMBEDDING_MODEL=text-embedding-v3或在~/.context/.env中修改:
EMBEDDING_MODEL=text-embedding-v3不同模型的向量维度可能不同(如text-embedding-v4为1024维,text-embedding-v2为1536维)。切换模型后,必须清除原有索引并重新索引。
自定义文件扩展名
默认情况下,Code Context Hologres支持常见的编程语言文件。如果您需要索引额外的文件类型(如.vue、.svelte、.astro),有两种方式:
方式一:通过环境变量CUSTOM_EXTENSIONS全局配置。
CUSTOM_EXTENSIONS=.vue,.svelte,.astro方式二:在索引时通过自然语言指定。
> 索引这个代码库,包含 .vue 和 .svelte 文件自定义忽略规则
Code Context Hologres会自动读取项目中的.gitignore、.contextignore文件以及~/.context/.contextignore全局忽略文件。您还可以通过以下方式添加额外的忽略规则:
方式一:通过环境变量CUSTOM_IGNORE_PATTERNS。
CUSTOM_IGNORE_PATTERNS=*.test.ts,__mocks__,*.generated.ts方式二:在索引时通过自然语言指定。
> 索引这个代码库,忽略 .test.ts 和 __mocks__ 目录代码分割器选择
Code Context Hologres支持两种代码分割器:
分割器 | 说明 | 推荐场景 |
| 基于AST的语义分块,保留代码结构 | 推荐使用,分块效果更好 |
| 基于字符数的分块 | 作为AST不可用时的备选方案 |
通常无需手动指定,系统默认使用ast分割器并自动回退。
混合搜索配置
Code Context Hologres默认启用混合搜索(BM25稀疏向量 + 稠密向量),搜索准确性更高。如果需要关闭混合搜索(仅使用稠密向量),可以设置:
HYBRID_MODE=false建议保持混合搜索开启(默认),以获得最佳搜索效果。
常见问题
Q1:索引时提示DASHSCOPE_API_KEY未配置怎么办?
请检查以下内容:
MCP注册命令中是否正确设置了
-e DASHSCOPE_API_KEY=sk-xxx。如果使用全局配置文件方式,检查
~/.context/.env文件是否存在且包含DASHSCOPE_API_KEY。API Key格式应以
sk-开头。
Q2:索引失败如何排查?
使用"查看索引状态"查看错误信息。
常见原因:Hologres连接失败(检查
HOLOGRES_HOST、HOLOGRES_USER、HOLOGRES_PASSWORD)、DashScope API Key无效或余额不足。索引失败后可以重新运行索引命令,无需手动清除。
Q3:支持多个项目/代码库吗?
支持。Code Context Hologres会自动检测当前工作目录,无需手动指定路径。您可以在不同项目的目录中分别使用索引和搜索功能,系统会自动管理每个代码库的独立索引。此外,后台同步机制(每5分钟)会自动检测文件变更并进行增量更新。
Q4:如何强制重新索引?
直接告诉AI"强制重新索引当前代码库"即可。或者在索引时指定force=true参数。
Q5:DashScope API调用频率限制怎么办?
text-embedding-v4的批大小限制为10,如果索引大型代码库时遇到频率限制,可以尝试减小EMBEDDING_BATCH_SIZE的值。
Q6:如何在Claude Code中重新连接MCP服务器?
如果MCP服务器断开连接或更新了配置,可以使用以下命令:
/mcp reconnect code-context-hologresQ7:如何切换到其他嵌入模型提供商?
修改EMBEDDING_PROVIDER环境变量即可。例如切换到Ollama(本地模型):
EMBEDDING_PROVIDER=Ollama
OLLAMA_HOST=http://127.0.0.1:11434
OLLAMA_MODEL=nomic-embed-text切换后需要清除原有索引并重新索引。
Q8:索引的代码块数量上限是多少?
单个代码库的索引上限为450,000个代码块。达到上限后索引会自动停止并提示。
注意事项
Node.js版本限制:仅支持Node.js 20.x和22.x,不支持24.x。
API Key安全性:切勿将API Key硬编码在代码中。建议使用全局配置文件
~/.context/.env或通过MCP客户端的环境变量机制传递。数据安全:向量数据存储在您的Hologres实例中,位于您的阿里云账号下,Code Context Hologres不会存储或传输您的代码内容。
模型切换:更改嵌入模型后,由于向量维度可能不同,必须清除索引并重新索引。
版本更新:更新MCP服务器版本后,在Claude Code中使用
/mcp reconnect code-context-hologres重连,或在Qwen Code中重启。首次索引时间:首次索引大型代码库可能需要较长时间,取决于代码库大小和DashScope API响应速度。索引在后台运行,期间可以开始搜索(结果可能不完整)。