跳到主要内容
此功能已弃用。@Codebase 上下文提供程序已弃用,取而代之的是一种更集成的代码库感知方法。请参阅我们的关于使代理模式感知代码库和文档的指南以获取推荐方法。

迁移指南

如果您当前正在使用 @Codebase@Folder 上下文提供程序,请迁移到我们代码库和文档感知指南中概述的新方法。新方法提供了
  • 与 Continue 的代理模式功能更好地集成
  • 更智能的上下文选择
  • 改进的性能和准确性

旧版文档

以下是 @Codebase 上下文提供程序的原始文档,保留供参考 Continue 会索引您的代码库,以便以后可以自动从您的整个工作区中提取最相关的上下文。这是通过基于嵌入的检索和关键字搜索的组合完成的。默认情况下,所有嵌入都使用 transformers.js 在本地计算,并存储在 ~/.continue/index 中。
注意:transformers.js 不能在 JetBrains IDE 中使用。但是,您可以从此处的列表中选择不同的嵌入模型。

如何使用 @Codebase 和 @Folder 上下文提供程序

目前,代码库检索功能作为“codebase”和“folder”上下文提供程序提供。您可以通过在输入框中键入 @Codebase@Folder,然后提出问题来使用它们。输入框的内容将与代码库(或文件夹)其余部分的嵌入进行比较,以确定相关文件。

@Codebase 上下文提供程序何时有用

以下是一些可能有用的常见用例
  • 提出关于代码库的高级问题
    • “如何向服务器添加新端点?”
    • “我们是否在任何地方使用 VS Code 的 CodeLens 功能?”
    • “是否已经有代码用于将 HTML 转换为 Markdown?”
  • 使用现有示例作为参考生成代码
    • “使用与现有组件相同的模式生成一个带有日期选择器的新 React 组件”
    • “使用 Python 的 argparse 为此项目编写一个 CLI 应用程序草稿”
    • “在 bar 类中实现 foo 方法,遵循 baz 的其他子类中看到的模式。”
  • 使用 @Folder 提问有关特定文件夹的问题,增加相关结果的可能性
    • “这个文件夹的主要目的是什么?”
    • “我们如何使用 VS Code 的 CodeLens API?”
    • 或上述任何示例,但使用 @Folder 而不是 @Codebase

@Codebase 上下文提供程序何时无用

以下是用例,它没有用处
  • 当您需要 LLM 查看代码库中的所有文件时
    • “找到所有调用 foo 函数的地方”
    • “审查我们的代码库并查找任何拼写错误”
  • 重构任务
    • “向 bar 函数添加一个新参数并更新用法”

如何配置 @Codebase 上下文提供程序设置

有几个选项允许您配置 @codebase 上下文提供程序的行为,这些选项与 @folder 上下文提供程序相同
config.yaml
name: My Config
version: 0.0.1
schema: v1

context:
  - provider: codebase
    params:
      nRetrieve: 25
      nFinal: 5
      useReranking: true

nRetrieve

从向量数据库中初始检索的结果数量(默认值:25)

nFinal

重新排名后使用的最终结果数量(默认值:5)

useReranking

是否使用重新排名,这将允许最初选择 nRetrieve 个结果,然后将使用 LLM 选择前 nFinal 个结果(默认值:true)

如何在索引期间忽略文件

Continue 遵守 .gitignore 文件,以确定哪些文件不应被索引。如果您想排除其他文件,可以将其添加到 .continueignore 文件中,该文件遵循与 .gitignore 完全相同的规则。 Continue 还支持一个全局 .continueignore 文件,该文件将适用于所有工作区,可以在 ~/.continue/.continueignore 创建。 如果您想确切了解 Continue 索引了哪些文件,元数据存储在 ~/.continue/index/index.sqlite 中。您可以使用 DB Browser for SQLite 等工具查看此文件中的 tag_catalog 表。 如果您需要强制刷新索引,请使用 cmd/ctrl + shift + p + “重新加载窗口”重新加载 VS Code 窗口。