config.yaml 参考
简介
Continue Hub 助手使用 config.yaml
规范定义。助手可以从中心或本地加载
- Continue Hub - YAML 存储在中心并自动同步到扩展程序
- 本地
- 在你的全局
.continue
文件夹中(Mac 上是~/.continue
,Windows 上是%USERPROFILE%\.continue
)的.continue/assistants
目录下。文件名称将用作助手的显示名称,例如My Assistant.yaml
- 在你的工作区中的
/.continue/assistants
文件夹下,使用相同的命名约定
- 在你的全局
Config YAML 替换了已弃用的config.json
。查看迁移指南。
一个助手由以下部分组成
- 顶级属性,指定助手的
name
、version
和config.yaml
schema
- 块列表,它们是助手可用的编码助手构建块的可组合数组,例如模型、文档和上下文提供程序。
块是编码助手的单个独立构建块,例如,一个模型或一个文档源。在 config.yaml
语法中,块包含与助手相同的顶级属性(name
、version
和 schema
),但在任何块类型下只有一个项目。
块和助手的示例可在Continue 中心找到。
助手可以显式定义块 - 参见下面的属性 - 或者导入并配置现有中心块。
使用块
Hub 块和助手通过 owner-slug/block-or-assistant-slug
格式的 slug 标识,其中 owner 可以是用户或组织(例如,如果你想使用OpenAI 4o 模型块,你的 slug 将是 openai/gpt-4o
)。这些块从https://hub.continue.dev 拉取。
可以通过在块类型下添加 uses
子句将块导入到助手。这可以与其他 uses
子句或该类型的显式块并列。
例如,以下助手导入了 Anthropic 模型并定义了一个 Ollama DeepSeek 模型。
models:
- uses: anthropic/claude-3.5-sonnet # an imported model block
- model: deepseek-reasoner # an explicit model block
provider: ollama
本地块
也可以在 .continue
文件夹中本地定义块。此文件夹可以位于工作区根目录(当你在此工作区时,这些块将自动应用于所有助手)或位于主目录的 ~/.continue
下(这些块将全局自动应用)。
将你的 YAML 文件放在以下文件夹中
助手
.continue/assistants
- 用于助手
块
.continue/rules
- 用于规则.continue/models
- 用于模型.continue/prompts
- 用于提示.continue/context
- 用于上下文提供程序.continue/docs
- 用于文档.continue/data
- 用于数据.continue/mcpServers
- 用于 MCP 服务器
你可以在Continue 探索页面上找到这些块类型的许多示例
利用 mustache 符号表示机密(${{ secrets.SECRET_NAME }}
)的本地块可以读取机密值
- 全局地,从位于全局
.continue
文件夹(~/.continue/.env
)中的.env
文件中读取 - 每个工作区,从位于当前工作区根目录的
.env
文件中读取。
输入
块可以接收用户输入,包括 Hub 机密和原始文本值。要创建一个具有输入的块,请使用 mustache 模板,如下所示
name: myprofile/custom-model
models:
- name: My Favorite Model
provider: anthropic
apiKey: ${{ inputs.ANTHROPIC_API_KEY }}
defaultCompletionOptions:
temperature: ${{ inputs.TEMP }}
然后可以像这样导入
name: myprofile/custom-assistant
models:
- uses: myprofile/custom-model
with:
ANTHROPIC_API_KEY: ${{ secrets.MY_ANTHROPIC_API_KEY }}
TEMP: 0.9
请注意,Hub 机密可以作为输入传递,使用类似的 mustache 格式:secrets.SECRET_NAME
。
覆盖
也可以使用 override
直接覆盖块属性。例如
name: myprofile/custom-assistant
models:
- uses: myprofile/custom-model
with:
ANTHROPIC_API_KEY: ${{ secrets.MY_ANTHROPIC_API_KEY }}
TEMP: 0.9
override:
roles:
- chat
属性
以下是可在 config.yaml
中设置的每个属性的详细信息。
所有级别的所有属性都是可选的,除非显式标记为必需。
config.yaml
配置文件中的顶级属性有
name
name
属性指定你的项目或配置的名称。
name: MyProject
version
version
属性指定你的项目或配置的版本。
schema
schema
属性指定用于 config.yaml
的 schema 版本,例如 v1
models
models
部分定义了你的配置中使用的语言模型。模型用于聊天、编辑和总结等功能。
属性
name
(必需):在你的配置中标识模型的唯一名称。provider
(必需):模型的提供程序(例如,openai
,ollama
)。model
(必需):特定的模型名称(例如,gpt-4
,starcoder
)。apiBase
:可用于覆盖每个模型指定的默认 API 基础地址roles
:指定此模型可以承担的角色数组,例如chat
、autocomplete
、embed
、rerank
、edit
、apply
、summarize
。默认值为[chat, edit, apply, summarize]
。请注意,目前尚未使用summarize
角色。capabilities
:表示模型功能的字符串数组,将覆盖 Continue 根据提供程序和模型进行的自动检测。支持的功能包括tool_use
和image_input
。promptTemplates
:可用于覆盖不同模型角色的默认提示模板。有效值包括chat
、edit
、apply
和autocomplete
。chat
属性必须是有效的模板名称,例如llama3
或anthropic
。chatOptions
:如果模型包含chat
角色,则这些设置适用于聊天和代理模式baseSystemMessage
:可用于覆盖聊天模式的默认系统提示。
embedOptions
:如果模型包含embed
角色,则这些设置适用于嵌入maxChunkSize
:每个文档块的最大 token 数。最小为 128 个 token。maxBatchSize
:每个请求的最大块数。最小为 1 个块。
defaultCompletionOptions
:模型设置的默认补全选项。contextLength
:模型的最大上下文长度,通常以 token 为单位。maxTokens
:在一次补全中生成的最大 token 数。temperature
:控制补全的随机性。取值范围从0.0
(确定性)到1.0
(随机性)。topP
:核采样中的累积概率。topK
:每一步考虑的最大 token 数。stop
:一个停止 token 数组,将终止补全。reasoning
:布尔值,用于启用 Anthropic Claude 3.7+ 模型的思维/推理。reasoningBudgetTokens
:Anthropic Claude 3.7+ 模型进行思维/推理的预算 token 数。
requestOptions
:特定于模型的 HTTP 请求选项。timeout
:向语言模型发出的每个请求的超时时间。verifySsl
:是否验证请求的 SSL 证书。caBundlePath
:HTTP 请求的自定义 CA bundle 路径。proxy
:HTTP 请求的代理 URL。headers
:HTTP 请求的自定义头部。extraBodyProperties
:要与 HTTP 请求正文合并的额外属性。noProxy
:应绕过指定代理的主机名列表。clientCertificate
:HTTP 请求的客户端证书。cert
:客户端证书文件路径。key
:客户端证书密钥文件路径。passphrase
:客户端证书密钥文件的可选密码。
示例
models:
- name: GPT-4o
provider: openai
model: gpt-4o
roles:
- chat
- edit
- apply
defaultCompletionOptions:
temperature: 0.7
maxTokens: 1500
- name: Codestral
provider: mistral
model: codestral-latest
roles:
- autocomplete
- name: My Model - OpenAI-Compatible
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
)name
:提供程序的可选名称
params
:配置上下文提供程序行为的可选参数。
context:
- provider: file
- provider: code
- provider: codebase
params:
nFinal: 10
- provider: docs
- provider: diff
- provider: http
name: Context Server 1
params:
url: "https://api.example.com/server1"
- provider: folder
- provider: terminal
示例
rules
LLM 应遵循的规则列表。这些规则被连接到所有聊天、编辑和代理请求的系统消息中。详见规则深度解析。
- 显式规则可以是简单文本或具有以下属性的对象
name
(必需):规则的显示名称/标题rule
(必需):规则的文本内容
rules:
- Always annotate Python functions with their parameter and return types
- name: TypeScript best practices
rule: Always use TypeScript interfaces to define shape of objects. Use type aliases sparingly.
globs: "**/*.{ts,tsx}"
- name: TypeScript test patterns
rule: In TypeScript tests, use Jest's describe/it pattern and follow best practices for mocking.
globs:
- "src/**/*.test.ts"
- "tests/**/*.ts"
- uses: myprofile/my-mood-setter
with:
TONE: concise
globs
(可选):当提供的上下文文件匹配此 glob 模式时,将包含此规则。这可以是一个单一模式(例如,"**/*.{ts,tsx}"
)或一个模式数组(例如,["src/**/*.ts", "tests/**/*.ts"]
)。
prompts
prompts:
- name: check
description: Check for mistakes in my code
prompt: |
Please read the highlighted code and check for any mistakes. You should look for the following, and be extremely vigilant:
- Syntax errors
- Logic errors
- Security vulnerabilities
可以从聊天窗口调用的自定义提示列表。每个提示都有名称、描述和实际提示文本。
docs
属性
- 要索引的文档站点列表。
name
(必需):文档站点的名称,显示在下拉菜单等位置。
startUrl
(必需):抓取的起始页 - 通常是文档的根页或介绍页maxDepth
:抓取最大链接深度。默认为4
favicon
:站点 favicon URL(默认是startUrl
的/favicon.ico
)。
params
:配置上下文提供程序行为的可选参数。
docs:
- name: Continue
startUrl: https://docs.continue.org.cn/intro
favicon: https://docs.continue.org.cn/favicon.ico
useLocalCrawling
:跳过默认抓取器,仅使用本地抓取器进行抓取。
mcpServers
属性
- 模型上下文协议(Model Context Protocol)是 Anthropic 提出的一个标准,旨在统一提示、上下文和工具使用。Continue 支持使用 MCP 上下文提供程序的任何 MCP 服务器。
name
(必需):MCP 服务器的名称。command
(必需):用于启动服务器的命令。args
:命令的可选参数数组。env
:服务器进程的可选环境变量映射。
params
:配置上下文提供程序行为的可选参数。
mcpServers:
- name: My MCP Server
command: uvx
args:
- mcp-server-sqlite
- --db-path
- /Users/NAME/test.db
connectionTimeout
:连接到服务器的可选超时时间(毫秒)。
data
属性
-
开发数据将被发送到的目标。
-
name
(必需):数据目标的显示名称destination
(必需):将接收数据的目标/端点。可以是- 将接收带有 JSON Blob 的 POST 请求的 HTTP 端点
-
一个指向目录的文件 URL,事件将转储到该目录下的
.jsonl
文件中 -
schema
(必需):要发送的 JSON blob 的 schema 版本 -
events
:要包含的事件名称数组。如果未指定,则默认为所有事件。 -
level
:事件字段的预定义过滤器。选项包括all
和noCode
;后者不包含文件内容、提示和补全等数据。默认为all
-
apiKey
:随请求发送的 API 密钥 (Bearer header)params
:配置上下文提供程序行为的可选参数。
data:
- name: Local Data Bank
destination: file:///Users/dallin/Documents/code/continuedev/continue-extras/external-data
schema: 0.2.0
level: all
- name: My Private Company
destination: https://mycompany.com/ingest
schema: 0.2.0
level: noCode
events:
- autocomplete
- chatInteraction
requestOptions
:事件 POST 请求的选项。格式与模型 requestOptions 相同。
完整 YAML 配置示例
name: MyProject
version: 0.0.1
schema: v1
models:
- uses: anthropic/claude-3.5-sonnet
with:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
override:
defaultCompletionOptions:
temperature: 0.8
- name: GPT-4
provider: openai
model: gpt-4
roles:
- chat
- edit
defaultCompletionOptions:
temperature: 0.5
maxTokens: 2000
requestOptions:
headers:
Authorization: Bearer YOUR_OPENAI_API_KEY
- name: Ollama Starcoder
provider: ollama
model: starcoder
roles:
- autocomplete
defaultCompletionOptions:
temperature: 0.3
stop:
- "\n"
rules:
- Give concise responses
- Always assume TypeScript rather than JavaScript
prompts:
- name: test
description: Unit test a function
prompt: |
Please write a complete suite of unit tests for this function. You should use the Jest testing framework. The tests should cover all possible edge cases and should be as thorough as possible. You should also include a description of each test case.
- uses: myprofile/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: My Private Company
destination: https://mycompany.com/ingest
schema: 0.2.0
level: noCode
events:
- autocomplete
- chatInteraction
综上所述,这是一个完整的 config.yaml
配置文件示例
使用 YAML 锚点避免配置重复
%YAML 1.1
---
name: MyProject
version: 0.0.1
schema: v1
model_defaults: &model_defaults
provider: openai
apiKey: my-api-key
apiBase: https://api.example.com/llm
models:
- name: mistral
<<: *model_defaults
model: mistral-7b-instruct
roles:
- chat
- edit
- name: qwen2.5-coder-7b-instruct
<<: *model_defaults
model: qwen2.5-coder-7b-instruct
roles:
- chat
- edit
- name: qwen2.5-coder-7b
<<: *model_defaults
model: qwen2.5-coder-7b
env:
useLegacyCompletionsEndpoint: false
roles:
- autocomplete