跳到主要内容

Buddy 配置文件

Buddy 使用 config.yaml 文件进行相关的应用扩展配置

  • config.yaml 在全局 .buddy 文件夹中:Mac 上是 ~/.buddy,Windows 上是 %USERPROFILE%\.buddy
信息

关于如何使用YAML,请于此处参考 官方文档 >>

属性

以下是可以在 config.yaml 中设置的每个属性的详细信息。

除非明确标记为必填,否则所有层级的属性均为选填。

config.yaml 配置文件中的顶层属性包括:

name

name 属性用于指定项目或配置的名称。

config.yaml
name: AwesomeProject

version

version 属性用于指定项目或配置的版本号。

schema

schema 属性用于指定 config.yaml 文件所使用的模式版本,例如 v1

models

models 定义了配置中使用的大语言模型。这些模型用于实现诸如聊天、编辑和助理等功能。

属性:

  • name必填):用于在配置中唯一标识模型的名称。

  • provider必填):模型的提供商(例如 openrouteropenai)。

  • model必填):具体的模型名称(例如 anthropic/claude-3.7-sonnetopenai/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: 客户端证书密钥文件的密码(选填)。

示例

config.yaml
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 (必填): 上下文插件的标识符或名称(例如:codedocsweb)。
  • params: 选填参数,用于配置上下文插件行为。

示例:

config.yaml
context:
- provider: file
- provider: code
- provider: codebase
params:
nFinal: 10
- provider: docs
- provider: diff
- provider: folder
- provider: terminal

rules

LLM 应遵循的规则列表。这些规则会被插入到所有聊天请求的系统消息中。

示例

config.yaml
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:跳过默认获取信息,仅使用本地获取信息进行抓爬。

示例

config.yaml
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:选填服务器进程环境变量映射表。

示例:

config.yaml
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 相同。

    示例:

config.yaml
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 配置文件示例:

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 配置文件示例:

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 系列