Skip to main content

@Codebase

Continue 会索引你的代码库,以便之后能够自动从整个工作区中提取最相关的上下文。这是通过结合基于嵌入的检索和关键词搜索来实现的。默认情况下,所有嵌入都是使用 transformers.js 在本地计算的,并存储在 ~/.continue/index 中。

transformers.js cannot be used in JetBrains

目前,transformers.js 不能在 JetBrains IDE 中使用。但是,您可以从 此处的列表 中选择不同的嵌入模型。

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

以下是一些常见的使用场景,这些场景中它可能会很有用:

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

以下是一些不适用的情况:

  • 当你需要LLM查看代码库中的每一个文件时
    • "找到所有调用foo函数的地方"
    • "审查我们的代码库并找出任何拼写错误"
  • 重构
    • "向bar函数添加一个新参数并更新使用情况"

配置

有一些选项可以让你配置代码库上下文提供者的行为。这些可以在config.json中设置,并且对于代码库、文档和文件夹上下文提供者都是相同的:

config.json
{
"contextProviders": [
{
"name": "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 窗口。

仓库地图

Claude 3、Llama 3.1/3.2、Gemini 1.5 和 GPT-4o 系列中的模型在代码库检索期间会自动使用仓库地图,这使得模型能够理解代码库的结构并利用它来回答问题。目前,仓库地图仅包含代码库中的文件路径。