上下文插件
上下文来源(Context Providers)允许您输入“@”符号并看到一个菜单弹窗,其中包含可以作为上下文输入给大语言模型(LLM)的内容。每个上下文提来源都是一个插件,这意味着如果您想引用某个这里没有的信息来源,您可要求提供(或自己开发!)一个新的上下文来源。
上下文来源
你可以在配置文件中添加任何内建的上下文来源插件,如下所示:
@文件
引用当前工作区中的任何文件。
context:
- provider: file
@代码
引用项目中特定的函数或类。
context:
- provider: code
@Git差异
引用当前分支的所有更改。这在总结工作内容或提交前进行整体代码审查时非常有用。
context:
- provider: diff
@Open
引用当前已打开的文件。
context:
- provider: currentFile
引用所有已打开文件的内容。将 onlyPinned
设置为 true
以仅引用已固定的文件。
context:
- provider: open
params:
onlyPinned: true
@终端
引用IDE终端中运行的最后一个命令及其输出。
context:
- provider: terminal
@文档
引用任何文档站点的内容。
context:
- provider: docs
键入 @Docs
只会启用上下文插件。
您需要在配置文件中添加一个文档站点来使用。
@Web
参考来自网络的相关页面,页面内容根据您的输入自动确定。
选填设置 n
以限制返回的结果数量(默认为6)。
context:
- provider: web
params:
n: 5
@代码库
从你的代码库中引用最相关的片段。
context:
- provider: codebase
@文件夹
使用与 @Codebase
相同的检索机制,但仅针对单个文件夹。
context:
- provider: folder
@搜索
引用代码库搜索结果,类似于在 VS Code 搜索中获取的结果。
context:
- provider: search
@Url
引用给定 URL 转换后的 Markdown 内容。
context:
- provider: url
@Clipboard
引用最近的剪贴板内容
context:
- provider: clipboard
@Tree
引用当前工作区的结构
context:
- provider: tree
@Problems
从当前文件中查看问题
context:
- provider: problems
@Debugger
引用调试器中局部变量的内容
context:
- provider: debugger
params:
stackDepth: 3
使用该线程调用栈的前 n 层(默认为 3)。
@Repository Map
引用代码库的概览。默认情况下,代码库结构中会包含文件及其签名。
可以通过设置 includeSignatures
参数为 false
来排除签名。这对于大型代码库或需要显著减少上下文大小的情况可能是必要的。如果索引被禁用,签名将不会被包含。
context:
- provider: repo-map
params:
includeSignatures: false # 默认 true
提供文件列表以及这些文件中顶级类、函数和方法的调用签名。这有助于模型更好地理解特定代码与代码库其余部分的关系。
在出现的子菜单中,可以选择 整个代码库
, 或指定子文件夹来生成Repo结构。
@操作系统
引用当前操作系统的架构和平台信息
context:
- provider: os
模型上下文协议(Model Context Protocol)
MCP 模型上下文协议 是由 Anthropic 提出的一项标准,旨在统一提示词、上下文和工具调用。Buddy支持任何符合 MCP 协议的服务器,并通过 MCP 上下文来源实现。 其快速上手文档请看此处 来了解如何设置本地服务器,然后按如下方式配置:
mcpServers:
- name: 我的MCP服务器
command: uvx
args:
- mcp-server-sqlite
- --db-path
- /Users/NAME/test.db
之后,您可以通过输入 "@" 并在上下文提供器下拉菜单中看到 "MCP" 选项。
@Issue
在GitHub issue中引用对话。
context:
- provider: issue
params:
repos:
- owner: continuedev
repo: continue
githubToken: ghp_xxx
确保包含您自己的 GitHub个人访问令牌 ,以避免被速率限制。
@Database
从Sqlite、Postgres、MSSQL和MySQL数据库中引用数据表模式。
context:
- provider: 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
以及特定于每种数据库类型的必要连接参数。
可用的连接类型:
postgres
mysql
sqlite
@Postgres
引用数据表模式与示例
context:
- provider: 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。如果您希望包含所有模式的数据表,可以取消设置模式。
@Google
引用Google搜索的结果
context:
- provider: google
params:
serperApiKey: <YOUR_SERPER.DEV_API_KEY>
例如,如果你想搜索相关学习Python的方法,请输入“@Google python教程”。
你可以在 serper.dev 免费获取API密钥。
@Gitlab合并请求
引用该分支在 GitLab 上的开放合并请求(MR)。
context:
- provider: gitlab-mr
params:
token: "..."
你需要创建一个具有 read_api
权限范围的个人访问令牌
自托管GitLab
可以通过在配置中设置 domain
参数来指定通信的域名。默认情况下,该值设置为 gitlab.com
.
context:
- provider: gitlab-mr
params:
token: "..."
domain: "gitlab.example.com"
Filtering Comments
如果选择编辑某些代码,可以让上下文插件筛选其他文件的注释。要启用此功能,将 filterComments
设置为 true
.
@Jira
引用 Jira 问题中的对话
context:
- provider: jira
params:
domain: company.atlassian.net
token: ATATT...
请确保包含你自己的 Atlassian API 令牌, ,或者使用 email
和 token
(其中 token
设置为你的密码)进行基本身份验证。如果使用自己的 Atlassian API 令牌,则无需配置邮箱。
Jira 数据中心支持
此上下文插件支持 Jira API 版本 2 和 3。默认情况下会使用版本 3(因为云服务版本使用此版本),但如果使用的是 Jira 数据中心版本,则需要通过 apiVersion
属性将 API 版本设置为 2。
context:
- provider: jira
params:
apiVersion: "2"
问题查询
默认情况下,将使用以下查询来查找问题:
assignee = currentUser() AND resolution = Unresolved order by updated DESC
您可以通过设置 issueQuery
参数来覆盖此查询。
最大结果数
可以通过设置 maxResults
参数来限制返回的结果数量。默认值为 50
。
@Discord
引用 Discord 频道中的消息
context:
- provider: discord
params:
discordKey: "bot token"
guildId: "1234567890"
channels:
- id: "123456"
name: "example-channel"
- id: "678901"
name: "example-channel-2"
请确保包含您自己的 Bot Token,并将其加入相关服务器。如果需要更精细地控制搜索哪些频道,可以指定要搜索的频道 ID 列表。如果不想指定任何频道,只需包含服务器 ID(guildId),所有频道都将被包含在内。该插件仅读取文本频道。
@HTTP
HttpContextProvider 会向配置中传递的 URL 发起 POST 请求。服务器必须返回 200 OK 并附带一个 ContextItem 对象或 ContextItem 数组。
context:
- provider: http
params:
url: "https://api.example.com/v1/users"
接收URL应预期接收以下参数:
{
query: string,
fullInput: string
}
响应200 OK应为一个具有以下结构的JSON对象:
[
{
"name": "",
"description": "",
"content": ""
}
]
// 或者
{
"name": "",
"description": "",
"content": ""
}
@Commits
引用特定的git提交元数据和差异,或所有最近的提交。
context:
- provider: commit
params:
Depth: 50
LastXCommitsDepth: 10
Depth表示将加载到子菜单中的提交数量,默认为50。 LastXCommitsDepth表示将包含的最近提交数量,默认为10。
@Greptile
查询当前仓库/分支的Greptile索引
context:
- provider: greptile
params:
greptileToken: "..."
githubToken: "..."