Context providers
上下文提供者允许您输入“@”并看到一个内容下拉列表,这些内容都可以作为上下文提供给LLM。每个上下文提供者都是一个插件,这意味着如果您想引用一些您在这里看不到的信息源,您可以请求(或构建!)一个新的上下文提供者。
举个例子,假设你正在解决一个新的GitHub问题。你输入'@Issue'并选择你正在处理的那个。现在,Continue可以看到问题的标题和内容。你也知道这个问题与文件'readme.md'和'helloNested.py'有关,所以你输入'@readme'和'@hello'来查找并选择它们。现在,这3个“上下文项”与你的其他输入一起显示。

内置上下文提供者
要使用任何内置的上下文提供者,请打开config.json并将其添加到contextProviders列表中。
@File
引用当前工作区中的任何文件。
{
"contextProviders": [
{
"name": "file"
}
]
}
@Code
从整个项目中引用特定的函数或类。
{
"contextProviders": [
{
"name": "code"
}
]
}
@Git Diff
引用您对当前分支所做的所有更改。如果您想总结您的工作或在提交之前请求对您的工作进行一般审查,这将非常有用。
{
"contextProviders": [
{
"name": "diff"
}
]
}
@Current File
引用当前打开的文件。
{
"contextProviders": [
{
"name": "currentFile"
}
]
}
@Terminal
参考你在IDE终端中运行的最后一个命令及其输出。
{
"contextProviders": [
{
"name": "terminal"
}
]
}
@Docs
引用任何文档站点的内容。
{
"contextProviders": [
{
"name": "docs"
}
]
}
请注意,这将仅启用@Docs上下文提供者。
要使用它,您需要将文档站点添加到您的config.json中。有关更多信息,请参阅文档页面。
@Open
引用所有打开文件的内容。将onlyPinned设置为true以仅引用固定的文件。
{
"contextProviders": [
{
"name": "open",
"params": {
"onlyPinned": true
}
}
]
}
@Web
参考来自网络的相关页面,根据您的输入自动确定。
{
"contextProviders": [
{
"name": "web"
}
]
}
@Codebase
从你的代码库中引用最相关的代码片段。
{
"contextProviders": [
{
"name": "codebase"
}
]
}
了解更多关于索引和检索的信息这里.
@Folder
使用与@Codebase相同的检索机制,但仅针对单个文件夹。
{
"contextProviders": [
{
"name": "folder"
}
]
}
@Search
参考代码库搜索的结果,就像你从VS Code搜索中得到的结果一样。
{
"contextProviders": [
{
"name": "search"
}
]
}
此上下文提供者由ripgrep提供支持。
@Url
引用给定URL的Markdown转换内容。
{
"contextProviders": [
{
"name": "url"
}
]
}
@Tree
参考您当前工作区的结构。
{
"contextProviders": [
{
"name": "tree"
}
]
}
@Google
参考Google搜索的结果。
{
"contextProviders": [
{
"name": "google",
"params": {
"serperApiKey": "<your serper.dev api key>"
}
}
]
}
例如,如果您想搜索并讨论学习Python的方法,请键入“@Google python tutorial”。
注意:您可以在serper.dev免费获取API密钥。
@Issue
在GitHub问题中引用对话。
{
"contextProviders": [
{
"name": "issue",
"params": {
"repos": [
{
"owner": "continuedev",
"repo": "continue"
}
],
"githubToken": "ghp_xxx"
}
}
]
}
确保包含您自己的GitHub个人访问令牌,以避免被限速。
@Gitlab Merge Request
在GitLab 上引用此分支的开放 MR。
{
"contextProviders": [
{
"name": "gitlab-mr",
"params": {
"token": "..."
}
}
]
}
您需要创建一个具有read_api范围的个人访问令牌。
使用自托管的GitLab
您可以通过在配置中设置domain参数来指定要与之通信的域。默认情况下,这设置为gitlab.com。
{
"contextProviders": [
{
"name": "gitlab-mr",
"params": {
"token": "...",
"domain": "gitlab.example.com"
}
}
]
}
过滤评论
如果您选择了一些代码进行编辑,您可以让上下文提供者过滤掉其他文件的注释。要启用此功能,请将filterComments设置为true。
@Jira
在Jira问题中引用对话。
{
"contextProviders": [
{
"name": "jira",
"params": {
"domain": "company.atlassian.net",
"token": "ATATT..."
}
}
]
}
请确保包含您自己的Atlassian API Token,或者使用您的email和token,并将token设置为您的密码以进行基本身份验证。如果您使用自己的Atlassian API Token,请不要配置您的电子邮件。
Jira 数据中心支持
此上下文提供者支持Jira API版本2和3。默认情况下,它将使用版本3,因为这是云版本所使用的,但如果您使用的是Jira的数据中心版本,则需要使用apiVersion属性将API版本设置为2。
{
"contextProviders": [
{
"name": "jira",
"params": {
"apiVersion": "2"
}
}
]
}
问题查询
默认情况下,将使用以下查询来查找问题:
assignee = currentUser() AND resolution = Unresolved order by updated DESC
您可以通过设置issueQuery参数来覆盖此查询。
@Discord
引用Discord频道中的消息。
{
"contextProviders": [
{
"name": "discord",
"params": {
"discordKey": "bot token",
"guildId": "1234567890",
"channels": [
{
"id": "123456",
"name": "example-channel"
},
{
"id": "678901",
"name": "example-channel-2"
}
]
}
}
]
}
确保包含您自己的Bot Token,并将其加入您的相关服务器。如果您希望对搜索的频道进行更精细的控制,可以指定要搜索的频道ID列表。如果您不想指定任何频道,只需包含公会ID(服务器ID),所有频道都将被包含。提供者仅读取文本频道。
@Postgres
引用表的模式和一些示例行
{
"contextProviders": [
{
"name": "postgres",
"params": {
"host": "localhost",
"port": 5436,
"user": "myuser",
"password": "catsarecool",
"database": "animals",
"schema": "public",
"sampleRows": 3
}
}
]
}
唯一必需的设置是用于创建数据库连接的设置:host、port、user、password 和 database。
默认情况下,schema过滤器设置为public,sampleRows设置为3。如果您想包含所有模式中的表,可以取消设置模式。
@Database
参考来自Sqlite、Postgres、MSSQL和MySQL数据库的表结构。
{
"contextProviders": [
{
"name": "database",
"params": {
"connections": [
{
"name": "examplePostgres",
"connection_type": "postgres",
"connection": {
"user": "username",
"host": "localhost",
"database": "exampleDB",
"password": "yourPassword",
"port": 5432
}
},
{
"name": "exampleMssql",
"connection_type": "mssql",
"connection": {
"user": "username",
"server": "localhost",
"database": "exampleDB",
"password": "yourPassword"
}
},
{
"name": "exampleSqlite",
"connection_type": "sqlite",
"connection": {
"filename": "/path/to/your/sqlite/database.db"
}
}
]
}
}
]
}
每个连接应包括一个唯一的名称、connection_type,以及特定于每种数据库类型的必要连接参数。
可用的连接类型:
postgresmysqlsqlite
@Debugger
在调试器中引用局部变量的内容。目前仅在VS Code中可用。
{
"contextProviders": [
{
"name": "debugger",
"params": {
"stackDepth": 3
}
}
]
}
使用该线程调用栈的顶部n层(默认为3)。
@Repository Map
参考你的代码库的概述。
{
"contextProviders": [
{
"name": "repo-map"
}
]
}
提供文件列表以及这些文件中顶级类、函数和方法的调用签名。这有助于模型更好地理解特定代码片段与代码库其余部分的关系。
在出现的子菜单中,您可以选择Entire codebase,或指定一个子文件夹来生成存储库地图。
这个上下文提供者受到了Aider的仓库地图的启发。
@Operating System
参考您当前操作系统的架构和平台。
{
"contextProviders": [
{
"name": "os"
}
]
}
模型上下文协议
模型上下文协议是由Anthropic提出的一个标准,旨在统一提示、上下文和工具使用。Continue支持任何带有MCP上下文提供者的MCP服务器。阅读他们的快速入门,了解如何设置本地服务器,然后像这样配置你的config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/Users/NAME/test.db"]
}
}
]
}
}
然后你将能够输入“@”并在上下文提供者下拉菜单中看到“MCP”。
@HTTP
HttpContextProvider 向配置中传入的 URL 发出 POST 请求。服务器必须返回 200 OK 以及一个 ContextItem 对象或一组 ContextItems。
{
"contextProviders": [
{
"name": "http",
"params": {
"url": "https://api.example.com/v1/users"
}
}
]
}
接收URL应预期接收以下参数:
{
query: string,
fullInput: string
}
响应200 OK应该是一个具有以下结构的JSON对象:
[
{
"name": "",
"description": "",
"content": ""
}
]
// OR
{
"name": "",
"description": "",
"content": ""
}
请求上下文提供者
没有看到你想要的内容?创建一个问题 这里 来请求一个新的上下文提供者。