Buddy 配置文件
Buddy 使用 config.yaml
文件进行相关的应用扩展配置
config.yaml
在全局.buddy
文件夹中:Mac 上是~/.buddy
,Windows 上是%USERPROFILE%\.buddy
。
关于如何使用YAML,请于此处参考 官方文档 >>
属性
以下是可以在 config.yaml
中设置的每个属性的详细信息。
除非明确标记为必填,否则所有层级的属性均为选填。
config.yaml
配置文件中的顶层属性包括:
name
name
属性用于指定项目或配置的名称。
name: AwesomeProject
version
version
属性用于指定项目或配置的版本号。
schema
schema
属性用于指定 config.yaml
文件所使用的模式版本,例如 v1
。
models
models
定义了配置中使用的大语言模型。这些模型用于实现诸如聊天、编辑和助理等功能。
属性:
-
name
(必填):用于在配置中唯一标识模型的名称。 -
provider
(必填):模型的提供商(例如openrouter
、openai
)。 -
model
(必填):具体的模型名称(例如anthropic/claude-3.7-sonnet
、openai/chatgpt-4o
)。 -
apiBase
:可用于覆盖每个模型默认指定的 API 端点地址。 -
roles
:一个数组,指定该模型可以使用的职能,例如chat
(聊天)、autocomplete
(自动补全)、embed
(向量嵌入)、rerank
(重排序)、edit
(编辑)、apply
(应用)。默认值为[chat, edit, apply]
。 -
capabilities
:表示模型能力的字符串数组,将覆盖 Buddy 基于提供商和模型的自动检测。支持的能力包括tool_use
(工具调用)和image_input
(图片输入)。 -
embedOptions
:如果模型包含embed
职能,则以下设置适用于嵌入:maxChunkSize
:每个文档块的最大 token 数。最小为 128 token。maxBatchSize
:每个请求的最大块数。最小为 1 块。
-
defaultCompletionOptions
:模型设置的默认补全选项。属性:
contextLength
: 模型的最大上下文长度,通常以 token 为单位。maxTokens
: 生成补全内容时的最大 token 数量。temperature
: 控制补全结果的随机性,取值范围从0.0
(确定性)到1.0
(随机)。topP
: 用于核心采样的累积概率。topK
: 每一步考虑的最大 token 数量。stop
: 一组停止 token,用于终止补全/输出生成过程。n
: 生成补全结果数量。
-
requestOptions
: 模型特定的 HTTP 请求选项。属性:
timeout
: 每个请求到大语言模型的超时时间。verifySsl
: 是否验证 HTTP 请求的 SSL 证书。caBundlePath
: 自定义 CA 证书包的路径,用于 HTTP 请求。proxy
: HTTP 请求的代理 URL。headers
: HTTP 请求的自定义头部。extraBodyProperties
: 合并到 HTTP 请求体中的额外属性。noProxy
: 应绕过指定代理的主机名列表。clientCertificate
: HTTP 请求的客户端证书。cert
: 客户端证书文件的路径。key
: 客户端证书密钥文件的路径。passphrase
: 客户端证书密钥文件的密码(选填)。
示例
models:
- name: Claude 3.7 Sonnet
provider: openrouter
model: anthropic/claude-3.7-sonnet
apiKey: sk-123
roles:
- chat
- edit
- apply
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4096
- name: "Mistral: Codestral 2501"
provider: openrouter
model: mistralai/codestral-2501
apiKey: sk-123
roles:
- autocomplete
- name: 313模型 - 兼容OpenAI
provider: openai
apiBase: http://my-endpoint/v1
model: my-custom-model
capabilities:
- tool_use
- image_input
roles:
- chat
- edit
context
context
部分定义了上下文插件,为大语言模型提供额外的信息或上下文。每个上下文插件都可以通过特定参数进行配置。
属性:
provider
(必填): 上下文插件的标识符或名称(例如:code
、docs
、web
)。params
: 选填参数,用于配置上下文插件行为。
示例:
context:
- provider: file
- provider: code
- provider: codebase
params:
nFinal: 10
- provider: docs
- provider: diff
- provider: folder
- provider: terminal
rules
LLM 应遵循的规则列表。这些规则会被插入到所有聊天请求的系统消息中。
示例
rules:
- uses: rule/my-mood-setter
with:
MOOD: sad
- 始终为 Python 函数标注参数和返回类型
- 始终为函数和类编写 Google 风格的文档字符串
### `prompts`
一个可以在聊天窗口中调用的自定义提示词列表。每个提示词包含名称、描述以及实际的提示文本。
```yaml title="config.yaml"
prompts:
- name: check
description: 检查代码中的错误
prompt: |
请阅读高亮显示的代码并检查是否存在错误。您需要特别关注以下几点:
- 语法错误
- 逻辑错误
- 安全漏洞
需要索引的文档站点列表。
属性:
name
(必填):文档站点名称,显示在下拉菜单等处。startUrl
(必填):获取信息起始页面 - 通常是文档的根目录或介绍页。maxDepth
:获取信息的最大链接深度。默认为4
。favicon
:站点图标的 URL(默认为startUrl
下的/favicon.ico
)。useLocalCrawling
:跳过默认获取信息,仅使用本地获取信息进行抓爬。
示例
docs:
- name: Openrouter
startUrl: https://docs.openrouter.co/intro
favicon: https://docs.openrouter.co/favicon.ico
mcpServers
模型上下文协议(Model Context Protocol) 是由Anthropic提出的一项标准,旨在统一提示词、上下文和工具调用。Buddy支持任何提供MCP上下文的MCP服务器。
属性:
name
(必填):MCP服务器的名称。command
(必填):用于启动服务器的命令。args
:选填命令参数数组。env
:选填服务器进程环境变量映射表。
示例:
mcpServers:
- name: 我的MCP服务器
command: uvx
args:
- mcp-server-sqlite
- --db-path
- /Users/NAME/test.db
data
开发数据将被发送到的目标地址。
属性:
-
name
(必填):数据目标显示名称 -
destination
(必填):接收数据目标/端点,可以是以下之一:- 一个将接收带有 JSON 数据的 POST 请求的 HTTP 端点
- 一个文件 URL,指向事件将被转储为
.jsonl
文件的目录
-
schema
(必填):要发送 JSON 数据的模式版本 -
events
:要包含的事件名称数组。如果未指定,则默认为所有事件。 -
level
:事件字段的预定义过滤器。选项包括all
(全部)和noCode
(排除代码相关数据,如文件内容、提示词和补全)。默认为all
。 -
apiKey
:随请求发送的 API 密钥(Bearer 头) -
requestOptions
:事件 POST 请求的选项。格式与 model requestOptions 相同。示例:
data:
- name: 本地数据仓
destination: file:///Users/edal/Documents/code/buddy/buddy-extras/external-data
schema: 0.4.0
level: all
- name: 我的私人信息
destination: https://mycompany.com/ingest
schema: 0.2.0
level: noCode
events:
- autocomplete
- chatInteraction
完整的 YAML 配置示例
将所有内容整合在一起,以下是一个完整的 config.yaml
配置文件示例:
name: AwesomeProject
version: 0.0.1
schema: v1
models:
- name: "Anthropic: Claude 3.7 Sonnet"
provider: openrouter
model: anthropic/claude-3.7-sonnet
apiKey: sk-123
- name: "Mistral: Codestral 2501"
provider: openrouter
model: mistralai/codestral-2501
apiKey: sk-123
roles:
- autocomplete
defaultCompletionOptions:
temperature: 0.3
stop:
- "\n"
rules:
- 提供简洁的回复
- 始终假设使用 TypeScript 而非 JavaScript
prompts:
- name: test
description: 单元测试一个函数
prompt: |
请为这个函数编写一套完整的单元测试。您应该使用 Jest 测试框架。测试应覆盖所有可能的边缘情况,并尽可能全面。同时,请为每个测试用例添加描述说明。
- uses: project/my-favorite-prompt
context:
- provider: diff
- provider: file
- provider: codebase
- provider: code
- provider: docs
params:
startUrl: https://docs.example.com/introduction
rootUrl: https://docs.example.com
maxDepth: 3
mcpServers:
- name: DevServer
command: npm
args:
- run
- dev
env:
PORT: "3000"
data:
- name: 我的开发数据
destination: https://mydevdata.com/ingest
schema: 0.2.0
level: noCode
events:
- autocomplete
- chatInteraction
使用 YAML 锚点避免配置重复
您也可以使用节点锚点来避免属性的重复定义。为此,需要添加 YAML 版本头 %YAML 1.1
,以下是一个使用锚点的 config.yaml
配置文件示例:
%YAML 1.1
---
name: AwesomeProject
version: 0.0.1
schema: v1
model_defaults: &model_defaults
provider: openrouter
apiKey: sk-123
models:
- name: DeepSeek Chat
<<: *model_defaults
model: deepseek/deepseek-chat-v3-0324
roles:
- chat
- edit
- name: Claude 3.7 Sonnet
<<: *model_defaults
model: anthropic/claude-3.7-sonnet
roles:
- chat
- edit
- name: Mistral: Codestral 2501
<<: *model_defaults
model: mistralai/codestral-2501
env:
useLegacyCompletionsEndpoint: false
roles:
- autocomplete
职能
Buddy中的模型可以配置为各种不同的职能 (roles)。
chat
: 用于扩展侧边栏中的聊天对话autocomplete
: 用于编辑器中的代码自动补全建议edit
: 根据提示词生成代码进行编辑apply
: 用于如何将生成内容应用到文件embed
: 用于生成向量搜索所需的嵌入(@Codebase 和 @Docs 上下文插件使用)rerank
: 用于对向量搜索结果进行重新排序
这些职能可以在 config.yaml
的模型配置块中通过 roles
指定。
当前支持助理模式的模型
Claude 3.5/3.7 Sonnet
OpenAI 系列
Gemini 系列
qwen3 系列
llama-3 系列