@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中设置,并且对于代码库、文档和文件夹上下文提供者都是相同的:
{
"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 系列中的模型在代码库检索期间会自动使用仓库地图,这使得模型能够理解代码库的结构并利用它来回答问题。目前,仓库地图仅包含代码库中的文件路径。