跳到主要内容

上下文插件

上下文来源(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

唯一必需的设置是用于创建数据库连接的参数:hostportuserpassword 以及 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 令牌, ,或者使用 emailtoken(其中 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应预期接收以下参数:

POST参数
{
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: "..."