Code Context Hologres用户手册

更新时间:
复制为 MD 格式

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 HologresNode.js 24.0.0不兼容。如果您的Node.js版本 >= 24,请先降级。

阿里云百炼DashScope配置

您需要获取DashScopeAPI Key来使用嵌入模型。

  1. 注册阿里云账号

  2. 开通百炼服务。

  3. 在百炼控制台创建API Key。Key格式以sk-开头。

可用的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实例的连接地址

hgpostcn-cn-xxx.hologres.aliyuncs.com

端口

连接端口

80(默认)

数据库名称

已创建的数据库名称

mydb

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 CodeMCP服务器:

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

请将以下占位符替换为您的实际值:

占位符

替换为

sk-your-dashscope-api-key

您的百炼DashScope API Key

your-hologres-instance.hologres.aliyuncs.com

您的Hologres实例地址

your-database-name

您的Hologres数据库名称

your-access-id

您的AccessKey ID

your-access-secret

您的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@latest

JSON配置文件方式

创建或编辑~/.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@latest

Qwen Code

qwen mcp add \
    -t stdio \
    code-context-hologres \
    npx -y code-context-mcp-hologres@latest
说明

环境变量优先级:进程环境变量(通过-e参数设置)> ~/.context/.env文件 > 默认值。

环境变量说明

DashScope嵌入模型配置

变量名

是否必填

默认值

说明

EMBEDDING_PROVIDER

OpenAI

嵌入模型提供商。使用DashScope时设为DashScope

DASHSCOPE_API_KEY

是(使用DashScope时)

百炼DashScope API Key

EMBEDDING_MODEL

text-embedding-v4

嵌入模型名称

EMBEDDING_BATCH_SIZE

10

嵌入批处理大小。text-embedding-v4建议设为10

DASHSCOPE_BASE_URL

https://dashscope.aliyuncs.com/compatible-mode/v1

DashScope API地址,一般无需修改

Hologres数据库配置

变量名

是否必填

默认值

说明

HOLOGRES_HOST

Hologres实例地址

HOLOGRES_PORT

80

连接端口

HOLOGRES_DATABASE

数据库名称

HOLOGRES_USER

AccessKey ID

HOLOGRES_PASSWORD

AccessKey Secret

高级配置

变量名

是否必填

默认值

说明

HYBRID_MODE

true

启用混合搜索(BM25 + 稠密向量)

CUSTOM_EXTENSIONS

额外文件扩展名,逗号分隔。如.vue,.svelte

CUSTOM_IGNORE_PATTERNS

额外忽略规则,逗号分隔。如*.test.ts,__mocks__

使用方式

基本工作流程

  1. 在项目的目录中打开AI编程助手(Qwen CodeClaude Code)。

  2. AI索引您的代码库。

  3. 查看索引状态,等待索引完成。

  4. 使用自然语言搜索代码。

索引代码库

索引代码库会将项目文件分块、生成向量嵌入,并存入Hologres。索引在后台异步运行,启动后会立即返回响应。

您只需用自然语言告诉AI:

> 索引这个代码库

AI会自动调用index_codebase工具。该工具支持以下参数:

参数

是否必填

默认值

说明

path

代码库的绝对路径(AI会自动获取当前工作目录)

force

false

是否强制重新索引

splitter

ast

代码分割器:ast(AST感知)或langchain(基于字符)

customExtensions

额外文件扩展名列表,如[".vue", ".svelte"]

ignorePatterns

额外忽略规则列表

示例:索引时包含额外的文件类型。

> 索引这个代码库,并包含 .vue 和 .svelte 文件

示例:强制重新索引。

> 强制重新索引当前代码库

查看索引状态

索引进度可以在后台运行时随时查看。AI会调用get_indexing_status工具。

> 查看索引状态

可能的状态:

状态

说明

indexed

索引已完成,可以搜索。显示已索引文件数和代码块数

indexing

正在索引中,显示进度百分比

indexfailed

索引失败,显示错误信息,可重新运行索引

not_found

尚未索引,需先运行索引

清除索引

如果需要清除代码库的索引数据(例如切换了嵌入模型),可以:

> 清除当前代码库的索引

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-v41024维,text-embedding-v21536维)。切换模型后,必须清除原有索引并重新索引。

自定义文件扩展名

默认情况下,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的语义分块,保留代码结构

推荐使用,分块效果更好

langchain

基于字符数的分块

作为AST不可用时的备选方案

通常无需手动指定,系统默认使用ast分割器并自动回退。

常见问题

Q1:索引时提示DASHSCOPE_API_KEY未配置怎么办?

请检查以下内容:

  1. MCP注册命令中是否正确设置了-e DASHSCOPE_API_KEY=sk-xxx

  2. 如果使用全局配置文件方式,检查~/.context/.env文件是否存在且包含DASHSCOPE_API_KEY

  3. API Key格式应以sk-开头。

Q2:索引失败如何排查?

  1. 使用"查看索引状态"查看错误信息。

  2. 常见原因:Hologres连接失败(检查HOLOGRES_HOSTHOLOGRES_USERHOLOGRES_PASSWORD)、DashScope API Key无效或余额不足。

  3. 索引失败后可以重新运行索引命令,无需手动清除。

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-hologres

Q7:如何切换到其他嵌入模型提供商?

修改EMBEDDING_PROVIDER环境变量即可。例如切换到Ollama(本地模型):

EMBEDDING_PROVIDER=Ollama
OLLAMA_HOST=http://127.0.0.1:11434
OLLAMA_MODEL=nomic-embed-text

切换后需要清除原有索引并重新索引。

Q8:索引的代码块数量上限是多少?

单个代码库的索引上限为450,000个代码块。达到上限后索引会自动停止并提示。

注意事项

  1. Node.js版本限制:仅支持Node.js 20.x22.x,不支持24.x。

  2. API Key安全性:切勿将API Key硬编码在代码中。建议使用全局配置文件~/.context/.env或通过MCP客户端的环境变量机制传递。

  3. 数据安全:向量数据存储在您的Hologres实例中,位于您的阿里云账号下,Code Context Hologres不会存储或传输您的代码内容。

  4. 模型切换:更改嵌入模型后,由于向量维度可能不同,必须清除索引并重新索引。

  5. 版本更新:更新MCP服务器版本后,在Claude Code中使用/mcp reconnect code-context-hologres重连,或在Qwen Code中重启。

  6. 首次索引时间:首次索引大型代码库可能需要较长时间,取决于代码库大小和DashScope API响应速度。索引在后台运行,期间可以开始搜索(结果可能不完整)。

相关资源