Справочник config.yaml
Введение
Ассистенты Koda hub определяются с использованием спецификации config.yaml
. Ассистентов можно загружать из Hub или локально
- Koda Hub - YAML хранится в hub и автоматически синхронизируется с расширением
- Локально
- в вашей глобальной папке
.koda
(~/.continue
на Mac,%USERPROFILE%\.continue
) в.koda/assistants
. Имя файла будет использоваться как отображаемое имя ассистента, напримерMy Assistant.yaml
- в вашем рабочем пространстве в папке
/.koda/assistants
, с тем же соглашением об именовании
- в вашей глобальной папке
Config YAML заменяет config.json
, который устарел. Посмотрите Руководство по миграции.
Ассистент состоит из:
- Свойств верхнего уровня, которые определяют
name
,version
иschema
дляconfig.yaml
ассистента - Списков блоков, которые представляют собой компонуемые массивы строительных блоков кодингового ассистента, доступных ассистенту, таких как модели, документация и поставщики контекста.
Блок - это единственный автономный строительный блок кодинговых ассистентов, например, одна модель или один источник документации. В синтаксисе config.yaml
блок состоит из тех же свойств верхнего уровня, что и ассистенты (name
, version
и schema
), но имеет только ОДИН элемент под любым типом блока.
Примеры блоков и ассистентов можно найти на Koda hub.
Ассистенты могут либо явно определять блоки - см. Свойства ниже - либо импортировать и настраивать существующие блоки из hub.
Использование блоков
Блоки и ассистенты hub идентифицируются по slug в формате owner-slug/block-or-assistant-slug
, где владелец может быть пользователем или организацией.
Блоки можно импортировать в ассистента, добавив пункт uses
под типом блока. Это может быть наряду с другими пунктами uses
или явными блоками этого типа.
Обратите внимание, что локальные ассистенты не могут использовать блоки, которые требуют секретов уровня организации.
Например, следующий ассистент импортирует модель Anthropic и определяет Ollama DeepSeek.
models:
- uses: anthropic/claude-3.5-sonnet # импортированный блок модели
- model: deepseek-reasoner # явный блок модели
provider: ollama
Локальные блоки
Также возможно определять блоки локально в папке .continue
. Эта папка может находиться либо в корне вашего рабочего пространства (они будут автоматически применены ко всем ассистентам, когда вы находитесь в этом рабочем пространстве), либо в вашем домашнем каталоге в ~/.continue
(они будут применены глобально автоматически).
Поместите ваши YAML файлы в следующие папки:
Ассистенты:
.continue/assistants
- для ассистентов
Блоки:
.continue/rules
- для правил.continue/models
- для моделей.continue/prompts
- для промптов.continue/context
- для поставщиков контекста.continue/docs
- для документации.continue/data
- для данных.continue/mcpServers
- для MCP серверов
Вы можете найти множество примеров каждого из этих типов блоков на Continue Explore Page
Входы
Блокам можно передавать пользовательские входы, включая секреты 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
(обязательно)version
(обязательно)schema
(обязательно)models
context
rules
prompts
docs
mcpServers
data
name
Свойство name
определяет имя вашего проекта или конфигурации.
name: MyProject
version
Свойство version
определяет версию вашего проекта или конфигурации.
schema
Свойство schema
определяет версию схемы, используемую для config.yaml
, например 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
: Может использоваться для переопределения шаблонов промптов по умолчанию для различных ролей модели. Допустимые значения:edit
иapply
.chatOptions
: Если модель включает рольchat
, эти настройки применяются для режимов Chat и Agent:baseSystemMessage
: Может использоваться для переопределения системного промпта по умолчанию.
embedOptions
: Если модель включает рольembed
, эти настройки применяются для embeddings:maxChunkSize
: Максимальное количество токенов на чанк документа. Минимум 128 токенов.maxBatchSize
: Максимальное количество чанков на запрос. Минимум 1 чанк.
defaultCompletionOptions
: Опции завершения по умолчанию для настроек модели.contextLength
: Максимальная длина контекста модели, обычно в токенах.maxTokens
: Максимальное количество токенов для генерации в завершении.temperature
: Контролирует случайность завершения. Значения от0.0
(детерминированный) до1.0
(случайный).topP
: Кумулятивная вероятность для nucleus sampling.topK
: Максимальное количество токенов, рассматриваемых на каждом шаге.stop
: Массив стоп-токенов, которые завершат завершение.n
: Количество завершений для генерации.
requestOptions
: Опции HTTP-запросов, специфичные для модели.timeout
: Тайм-аут для каждого запроса к языковой модели.verifySsl
: Проверять ли SSL-сертификаты для запросов.caBundlePath
: Путь к пользовательскому пакету CA для HTTP-запросов.proxy
: Proxy URL для HTTP-запросов.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. Они объединяются в системное сообщение для всех запросов Chat, Edit и Agent. См. глубокое погружение в правила для подробностей.
Явные правила могут быть либо простым текстом, либо объектом со следующими свойствами:
name
(обязательно): Отображаемое имя/название для правилаrule
(обязательно): Текстовое содержимое правила
Пример
rules:
- uses: myprofile/my-mood-setter
with:
TONE: concise
- Always annotate Python functions with their parameter and return types
- Always write Google style docstrings for functions and classes
- name: Server-side components
rule: When writing Next.js React components, use server-side components where possible instead of client components.
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
(обязательно): Начальная страница для crawling - обычно корневая или вводная страница для документации
maxDepth
: Максимальная глубина ссылок для crawling. По умолчанию4
favicon
: URL для favicon сайта (по умолчанию/favicon.ico
изstartUrl
).useLocalCrawling
: Пропустить стандартный crawler и crawl только с использованием локального crawler.
Пример
docs:
- name: Continue
startUrl: https://docs.continue.dev/intro
favicon: https://docs.continue.dev/favicon.ico
mcpServers
Model Context Protocol - это стандарт, предложенный Anthropic для объединения промптов, контекста и использования инструментов. Continue поддерживает любой MCP сервер с поставщиком контекста MCP.
Свойства:
name
(обязательно): Имя MCP сервера.command
(обязательно): Команда, используемая для запуска сервера.args
: Необязательный массив аргументов для команды.env
: Необязательная карта переменных окружения для серверного процесса.
Пример:
mcpServers:
- name: My MCP Server
command: uvx
args:
- mcp-server-sqlite
- --db-path
- /Users/NAME/test.db
data
Места назначения, в которые будут отправляться данные разработки.
Свойства:
-
name
(обязательно): Отображаемое имя места назначения данных -
destination
(обязательно): Место назначения/конечная точка, которая будет получать данные. Может быть:- HTTP конечная точка, которая будет получать POST запрос с JSON blob
- file URL к директории, в которой события будут сброшены в файлы
.jsonl
-
schema
(обязательно): версия схемы JSON blob, которые будут отправлены -
events
: массив имен событий для включения. По умолчанию все события, если не указано. -
level
: предопределенный фильтр для полей событий. Опции включаютall
иnoCode
; последний исключает данные, такие как содержимое файлов, промпты и завершения. По умолчаниюall
-
apiKey
: api key для отправки с запросом (Bearer header) -
requestOptions
: Опции для POST запросов событий. Тот же формат, что и requestOptions модели.Пример:
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
Полный пример YAML конфигурации
Объединяя все вместе, вот полный пример файла конфигурации config.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
Использование якорей YAML для избежания дублирования конфигурации
Вы также можете использовать якоря узлов, чтобы избежать дублирования свойств. Для этого необходимо добавить заголовок версии YAML %YAML 1.1
, вот пример файла конфигурации config.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