Skip to content

代码库索引

代码库索引通过 AI 嵌入实现对整个项目的语义代码搜索。它不是搜索精确的文本匹配,而是理解你查询的含义,帮助 VJSP 找到相关代码,即使你不知道特定的函数名称或文件位置。

作用

启用后,索引系统:

  1. 使用 Tree-sitter 解析你的代码以识别语义块(函数、类、方法)

  2. 使用 AI 模型创建每个代码块的嵌入

  3. 将向量存储在 Qdrant 数据库中以进行快速相似性搜索

  4. 为 VJSP 提供 codebase_search 工具以进行智能代码发现

这使得自然语言查询(如“用户身份验证逻辑”或“数据库连接处理”)能够查找整个项目中的相关代码。

主要优点

  • 语义搜索:通过含义查找代码,而不仅仅是关键字

  • 增强 AI 理解:VJSP 可以更好地理解和使用你的代码库

  • 跨项目发现:搜索所有文件,而不仅仅是打开的文件

  • 模式识别:查找相似的实现和代码模式

Qdrant 向量数据库配置

Qdrant 是嵌入向量存储与检索的核心工具,支持以下两种配置方式:

方式 1:本地向量数据库

  • 默认地址http://localhost:6333

  • 身份验证:支持配置 API 密钥,为安全部署可选配置

方式 2:VJSP 官网申请专属向量数据库

ⓘ API 密钥申请说明

Qdrant 专属 URL 与 API 密钥,需通过VJSP 官网控制台申请。申请完成后,将相关信息复制至「代码库索引」对应配置项即可,获取方式可查看对应帮助文档

配置

  1. 打开 VJSP 对话右下角索引就绪图标

  2. 使用切换开关启用 “启用代码库索引”

  3. 配置你的嵌入提供商

  4. 设置 Qdrant URL 和可选的 API 密钥

  5. 配置 最大搜索结果(默认:50,范围:1-100)

  6. 单击 保存 开始初始索引

启用/禁用切换

代码库索引功能包含一个方便的切换开关,允许你:

  • 启用:开始索引你的代码库并使搜索工具可用

  • 禁用:停止索引、暂停文件监视并禁用搜索功能

  • 保留设置:关闭时你的配置仍会保存

此切换对于在密集开发工作期间或处理敏感代码库时暂时禁用索引很有用。

理解索引状态

界面显示带有颜色指示器的实时状态:

  • 待机(灰色):未运行,等待配置

  • 索引中(黄色):当前正在处理文件

  • 已索引(绿色):最新且可供搜索

  • 错误(红色):失败状态,需要注意

文件处理方式

智能代码解析

  • Tree-sitter 集成:使用 AST 解析识别语义代码块

  • 语言支持:Tree-sitter 支持的所有语言

  • Markdown 支持:完全支持 markdown 文件和文档

  • 回退:对于不支持的文件类型,基于行的分块

  • 块大小

    • 最小:100 个字符

    • 最大:1,000 个字符

    • 智能拆分大型函数

自动文件过滤

索引器自动排除:

  • 二进制文件和图像

  • 大文件(>1MB)

  • Git 仓库(.git 文件夹)

  • 依赖项(node_modulesvendor 等)

  • .gitignore.vjsp 模式匹配的文件

增量更新

  • 文件监视:监视工作区中的更改

  • 智能更新:仅重新处理修改过的文件

  • 基于哈希的缓存:避免重新处理未更改的内容

  • 分支切换:自动处理 Git 分支更改

当前限制

  • 文件大小:每个文件最大 1MB

  • 单个工作区:一次一个工作区

  • 依赖项:需要外部服务(嵌入提供商 + Qdrant)

  • 语言覆盖:仅限于 Tree-sitter 支持的语言以实现最佳解析

使用搜索功能

索引后,VJSP 可以使用 codebase_search 工具查找相关代码:

示例查询:

  • “用户身份验证如何处理?”

  • “数据库连接设置”

  • “错误处理模式”

  • “API 端点定义”

该工具为 VJSP 提供:

  • 相关代码片段(最多达到你配置的最大结果限制)

  • 文件路径和行号

  • 相似度分数

  • 上下文信息

搜索结果配置

你可以通过调整 最大搜索结果 设置来控制返回的搜索结果数量:

  • 默认:50 个结果

  • 范围:10-200 个结果

  • 性能:较低的值可提高响应速度

  • 全面性:较高的值提供更多上下文,但可能会减慢响应速度

隐私与安全

  • 代码保留在本地:仅发送少量代码片段用于嵌入

  • 嵌入是数字的:不是人类可读的表示

  • 安全存储:API 密钥在 VS Code 和 IDEA 存储中加密

  • 访问控制:尊重现有文件权限