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

作用
启用后,索引系统:
- 使用 Tree-sitter 解析您的代码以识别语义块(函数、类、方法)
- 使用 AI 模型创建每个代码块的嵌入
- 将向量存储在 Qdrant 数据库中以进行快速相似性搜索
- 为 Kilo Code 提供
codebase_search
工具以进行智能代码发现
这使得自然语言查询(如“用户身份验证逻辑”或“数据库连接处理”)能够查找整个项目中的相关代码。
主要优点
- 语义搜索:通过含义查找代码,而不仅仅是关键字
- 增强 AI 理解:Kilo Code 可以更好地理解和使用您的代码库
- 跨项目发现:搜索所有文件,而不仅仅是打开的文件
- 模式识别:查找相似的实现和代码模式
设置要求
嵌入提供商
选择以下选项之一来生成嵌入:
OpenAI(推荐)
- 需要 OpenAI API 密钥
- 支持所有 OpenAI 嵌入模型
- 默认:
text-embedding-3-small
- 每批处理多达 100,000 个 token
Gemini
- 需要 Google AI API 密钥
- 支持 Gemini 嵌入模型,包括
gemini-embedding-001
- OpenAI 的经济高效替代方案
- 用于代码理解的高质量嵌入
Ollama(本地)
- 需要本地 Ollama 安装
- 无 API 成本或互联网依赖
- 支持任何 Ollama 兼容的嵌入模型
- 需要 Ollama 基本 URL 配置
向量数据库
Qdrant 是存储和搜索嵌入所必需的:
- 本地:
http://localhost:6333
(推荐用于测试) - 云:Qdrant Cloud 或自托管实例
- 身份验证:安全部署的可选 API 密钥
设置 Qdrant
快速本地设置
使用 Docker:
docker run -p 6333:6333 qdrant/qdrant
使用 Docker Compose:
version: '3.8'
services:
qdrant:
image: qdrant/qdrant
ports:
- '6333:6333'
volumes:
- qdrant_storage:/qdrant/storage
volumes:
qdrant_storage:
生产部署
用于团队或生产:
- Qdrant Cloud - 托管服务
- 在 AWS、GCP 或 Azure 上自托管
- 带有网络访问的本地服务器,用于团队共享
配置
- 打开 Kilo Code 设置( 图标)
- 导航到 代码库索引 部分
- 使用切换开关启用 “启用代码库索引”
- 配置您的嵌入提供商:
- OpenAI:输入 API 密钥并选择模型
- Gemini:输入 Google AI API 密钥并选择嵌入模型
- Ollama:输入基本 URL 并选择模型
- 设置 Qdrant URL 和可选的 API 密钥
- 配置 最大搜索结果(默认:20,范围:1-100)
- 单击 保存 开始初始索引
启用/禁用切换
代码库索引功能包含一个方便的切换开关,允许您:
- 启用:开始索引您的代码库并使搜索工具可用
- 禁用:停止索引、暂停文件监视并禁用搜索功能
- 保留设置:关闭时您的配置仍会保存
此切换对于在密集开发工作期间或处理敏感代码库时暂时禁用索引很有用。
理解索引状态
界面显示带有颜色指示器的实时状态:
- 待机(灰色):未运行,等待配置
- 索引中(黄色):当前正在处理文件
- 已索引(绿色):最新且可供搜索
- 错误(红色):失败状态,需要注意
文件处理方式
智能代码解析
- Tree-sitter 集成:使用 AST 解析识别语义代码块
- 语言支持:Tree-sitter 支持的所有语言
- Markdown 支持:完全支持 markdown 文件和文档
- 回退:对于不支持的文件类型,基于行的分块
- 块大小:
- 最小:100 个字符
- 最大:1,000 个字符
- 智能拆分大型函数
自动文件过滤
索引器自动排除:
- 二进制文件和图像
- 大文件(>1MB)
- Git 仓库(
.git
文件夹) - 依赖项(
node_modules
、vendor
等) - 与
.gitignore
和.kilocode
模式匹配的文件
增量更新
- 文件监视:监视工作区中的更改
- 智能更新:仅重新处理修改过的文件
- 基于哈希的缓存:避免重新处理未更改的内容
- 分支切换:自动处理 Git 分支更改
最佳实践
模型选择
对于 OpenAI:
text-embedding-3-small
:性能和成本的最佳平衡text-embedding-3-large
:更高精度,成本高 5 倍text-embedding-ada-002
:旧模型,成本较低
对于 Ollama:
mxbai-embed-large
:最大和最高质量的嵌入模型。nomic-embed-text
:性能和嵌入质量的最佳平衡。all-minilm
:紧凑型模型,质量较低但性能更快。
安全注意事项
- API 密钥:安全地存储在 VS Code 的加密存储中
- 代码隐私:仅发送少量代码片段用于嵌入
- 本地处理:所有解析均在本地进行
- Qdrant 安全:在生产环境部署时使用身份验证
当前限制
- 文件大小:每个文件最大 1MB
- 单个工作区:一次一个工作区
- 依赖项:需要外部服务(嵌入提供商 + Qdrant)
- 语言覆盖:仅限于 Tree-sitter 支持的语言以实现最佳解析
使用搜索功能
索引后,Kilo Code 可以使用 codebase_search
工具查找相关代码:
示例查询:
- “用户身份验证如何处理?”
- “数据库连接设置”
- “错误处理模式”
- “API 端点定义”
该工具为 Kilo Code 提供:
- 相关代码片段(最多达到您配置的最大结果限制)
- 文件路径和行号
- 相似度分数
- 上下文信息
搜索结果配置
您可以通过调整 最大搜索结果 设置来控制返回的搜索结果数量:
- 默认:20 个结果
- 范围:1-100 个结果
- 性能:较低的值可提高响应速度
- 全面性:较高的值提供更多上下文,但可能会减慢响应速度
隐私与安全
- 代码保留在本地:仅发送少量代码片段用于嵌入
- 嵌入是数字的:不是人类可读的表示
- 安全存储:API 密钥在 VS Code 存储中加密
- 本地选项:使用 Ollama 进行完全本地处理
- 访问控制:尊重现有文件权限
未来增强
计划的改进:
- 附加嵌入提供商
- 多工作区索引
- 增强的过滤和配置选项
- 团队共享功能
- 与 VS Code 本机搜索集成