Файл config.yaml
Koda использует файл конфигурации config.yaml для настройки моделей, контекстных провайдеров и других параметров.
Расположение файла конфигурации:
Windows: %USERPROFILE%/.koda/config.yaml
Linux Linux / Apple MacOS: $HOME/.koda/config.yaml
Базовая структура
~/.koda/config.yaml name : Koda
version : 0.0.1
schema : v1
models :
- name : Koda Models
provider : koda-chat-models
model : AUTODETECT
roles : [ agent , chat , edit ]
context :
- provider : code
- provider : docs
- provider : diff
- provider : terminal
- provider : problems
- provider : folder
- provider : codebase
Спецификация
Свойство
Тип
Обязательно
Описание
name
string
Да
Имя конфигурации/ассистента
version
string
Да
Версия конфигурации (semver)
schema
string
Нет
Версия схемы (например, v1)
models
object[]
Нет
Список языковых моделей
context
object[]
Нет
Поставщики контекста
rules
object[]
Нет
Системные правила для LLM
prompts
object[]
Нет
Пользовательские промпты
mcpServers
object[]
Нет
MCP-серверы
models
Определяет языковые модели для разных режимов Koda.
Свойство
Тип
Описание
name
string
Отображаемое имя модели
provider
string
Поставщик: openai, anthropic, ollama, deepseek, openrouter
model
string
Имя модели (например gpt-4o, claude-3-5-sonnet)
apiKey
string
API-ключ поставщика
apiBase
string
Базовый URL API
roles
string[]
Роли модели. По умолчанию: [chat, edit, apply]
capabilities
string[]
Возможности: tool_use, image_input
defaultCompletionOptions
object
Опции завершения (см. ниже)
requestOptions
object
HTTP-опции (см. ниже)
embedOptions
object
Опции эмбеддингов
chatOptions
object
Опции чата
promptTemplates
object
Шаблоны: apply, edit. Используют синтаксис Handlebars
Koda поддерживает различные роли для моделей:
chat — для обычного чата
edit — для редактирования кода
agent — для агентского режима
autocomplete — для автодополнения кода
embed — для создания эмбеддингов
rerank — для ранжирования результатов
defaultCompletionOptions
Свойство
Тип
Описание
contextLength
number
Максимальная длина контекста в токенах
maxTokens
number
Максимум генерируемых токенов
temperature
number
Случайность: 0.0 (детерминированно) — 1.0 (случайно)
topP
number
Nucleus sampling порог
topK
number
Максимум токенов на шаг
stop
string[]
Стоп-токены
n
number
Количество генераций
requestOptions
Свойство
Тип
Описание
timeout
number
Тайм-аут запроса
verifySsl
boolean
Проверять SSL
caBundlePath
string\|string[]
Путь к CA-пакету
proxy
string
URL прокси
headers
string[]
Заголовки
extraBodyProperties
object
Доп. свойства тела
noProxy
string[]
Исключения из прокси
clientCertificate
object
Клиентский сертификат
clientCertificate
Свойство
Тип
Описание
cert
string
Путь к сертификату
key
string
Путь к ключу
passphrase
string
Парольная фраза
embedOptions
Свойство
Тип
Описание
Ограничения
maxChunkSize
number
Максимальный размер чанка в токенах
Минимум: 128
maxBatchSize
number
Максимальное количество чанков в батче
Минимум: 1
chatOptions
Свойство
Тип
Обязательно
Описание
baseSystemMessage
string
Нет
Базовое системное сообщение для модели
promptTemplates
Свойство
Тип
Обязательность
Описание
apply
string
Нет
Шаблон Handlebars для режима применения кода (apply)
edit
string
Нет
Шаблон Handlebars для режима редактирования кода (edit)
context
Провайдеры контекста, предоставляющие информацию для LLM.
Свойство
Тип
Обязательно
Описание
provider
string
Да
Имя поставщика (см. список ниже)
name
string
Нет
Отображаемое имя
params
object
Нет
Параметры для настройки поведения поставщика контекста
provider
Ниже представлен список встроенных провайдеров контекста.
Часть из них имеют дополнительные параметры для настройки.
Значение
Описание
Параметры
code
Выделенный код из редактора
—
codebase
Поиск по всей кодовой базе проекта
nFinal, nRetrieve
diff
Текущие изменения в git
—
terminal
Содержимое терминала
—
currentFile
Активный файл в редакторе
—
open
Открытые файлы в редакторе
onlyPinned
folder
Файлы в выбранной папке
path
file
Конкретный файл по пути
path
problems
Ошибки и предупреждения IDE
—
repo-map
Карта репозитория (структура проекта)
includeSignatures
debugger
Данные отладчика (переменные, стек вызовов)
stackDepth
search
Результаты поиска по проекту (ripgrep)
—
tree
Древовидная структура файлов
—
os
Информация об операционной системе
—
url
Содержимое веб-страницы по URL
—
http
Данные от HTTP-endpoint
url, headers, method, body, options
clipboard
Недавние копии из буфера обмена
—
commit
История git-коммитов
Depth, LastXCommitsDepth
Ниже перечислены параметры некоторых встроенных провайдеров, которые могут быть донастроены дополнительно.
codebase
Параметр
Тип
По умолчанию
Описание
nFinal
number
25
Количество финальных результатов
nRetrieve
number
2 × nFinal
Количество результатов для первоначального поиска
open
Параметр
Тип
По умолчанию
Описание
onlyPinned
boolean
false
Возвращать только закреплённые файлы
context :
- provider : open
params :
onlyPinned : true
folder
Параметр
Тип
По умолчанию
Описание
path
string
—
Путь к папке
context :
- provider : folder
params :
path : ./src/components
file
Параметр
Тип
По умолчанию
Описание
path
string
—
Путь к папке
context :
- provider : file
params :
path : src/utils/helpers.ts
repo-map
Параметр
Тип
По умолчанию
Описание
includeSignatures
boolean
true
Включать сигнатуры функций
context :
- provider : repo-map
params :
includeSignatures : false
debugger
Параметр
Тип
По умолчанию
Описание
stackDepth
number
3
Глубина стека вызовов
context :
- provider : debugger
params :
stackDepth : 5
http
Параметр
Тип
По умолчанию
Описание
url
string
—
URL endpoint
headers
object
—
Заголовки запроса: карта имя: значение
method
string
POST
HTTP метод
body
Record<string, any>
—
Тело запроса
options
any
—
Дополнительные опции
context :
- provider : http
name : Custom API
params :
url : https://api.example.com/context
headers :
Authorization : Bearer token
method : POST
body :
query : "some query"
commit
Параметр
Тип
По умолчанию
Описание
Depth
number
50
Глубина истории коммитов
LastXCommitsDepth
number
10
Количество последних коммитов
context :
- provider : commit
params :
Depth : 100
LastXCommitsDepth : 20
google
Параметр
Тип
По умолчанию
Описание
serperApiKey
string
—
API-ключ Serper
context :
- provider : google
params :
serperApiKey : ${{ secrets.SERPER_API_KEY }}
jira
Параметр
Тип
По умолчанию
Описание
domain
string
—
Домен Jira
email
string
—
Email пользователя
token
string
—
API-токен
issueQuery
string
—
JQL-запрос
apiVersion
string
—
Версия API
maxResults
number
—
Максимум результатов
requestOptions
object
—
Опции запроса
context :
- provider : jira
params :
domain : company.atlassian.net
email : developer@company.com
token : ${{ secrets.JIRA_TOKEN }}
maxResults : 50
gitlab-mr
Параметр
Тип
По умолчанию
Описание
domain
string
gitlab.com
Домен GitLab
token
string
—
Private Token
filterComments
boolean
—
Фильтровать комментарии по файлам
context :
- provider : gitlab-mr
params :
domain : gitlab.company.com
token : ${{ secrets.GITLAB_TOKEN }}
filterComments : true
issue
Параметр
Тип
По умолчанию
Описание
githubToken
string
—
GitHub токен
domain
string
—
Домен GitHub (для Enterprise)
repos
array
—
Список репозиториев [{owner, repo, type}]
context :
- provider : issue
params :
githubToken : ${{ secrets.GITHUB_TOKEN }}
repos :
- owner : myorg
repo : myrepo
type : open
greptile
Параметр
Тип
По умолчанию
Описание
GreptileToken
string
—
Токен Greptile
GithubToken
string
—
GitHub токен
context :
- provider : greptile
params :
GreptileToken : ${{ secrets.GREPTILE_TOKEN }}
GithubToken : ${{ secrets.GITHUB_TOKEN }}
postgres
Параметр
Тип
По умолчанию
Описание
host
string
—
Хост
port
number
5432
Порт
user
string
—
Пользователь
password
string
—
Пароль
database
string
—
Имя базы данных
schema
string
public
Схема
sampleRows
number
3
Количество примеров строк
context :
- provider : postgres
params :
host : localhost
port : 5432
user : developer
password : ${{ secrets.DB_PASSWORD }}
database : myapp
schema : public
sampleRows : 5
database
Параметр
Тип
По умолчанию
Описание
connections
array
—
Массив подключений
Структура connections:
Поле
Тип
Описание
name
string
Имя подключения
connection_type
string
Тип БД (sqlite, mysql, postgres)
connection
object
Параметры подключения
context :
- provider : database
params :
connections :
- name : main-db
connection_type : sqlite
connection :
database : /path/to/db.sqlite
discord
Параметр
Тип
По умолчанию
Описание
discordKey
string
—
Бот-токен Discord
guildId
string
—
ID сервера
context :
- provider : discord
params :
discordKey : ${{ secrets.DISCORD_BOT_TOKEN }}
guildId : "1234567890"
web
Параметр
Тип
По умолчанию
Описание
n
number
6
Количество результатов
context :
- provider : web
params :
n : 10
mcp
Параметр
Тип
По умолчанию
Описание
mcpId
string
—
ID MCP-сервера
serverName
string
—
Имя сервера
context :
- provider : mcp
params :
mcpId : my-mcp-server
serverName : My MCP Server
rules
Правила, объединяемые в системное сообщение для всех режимов (Chat, Edit, Agent).
Свойство
Тип
Обязательно
Описание
name
string
Нет
Отображаемое имя правила
rule
string
Да
Текст правила
uses
string
Нет
Slug пакета правила
with
Record<string, string>
Нет
Переменные для пакета
if
string
Нет
Условие применения правила
rules :
- Always use TypeScript
- Write Google-style docstrings
- name : Server-side components
rule : Use Next.js server components where possible
if : ${{ glob("*.tsx") and contains(current.model.model, "claude-3-7-sonnet") }}
Свойство
Тип
Обязательность
Описание
name
string
Нет
Отображаемое имя правила
rule
string
Да
Текст правила (инструкция для LLM)
if
string
Нет
Условие применения правила (шаблонное выражение)
Условные правила могут применяться с помощью выражений в синтаксисе if.
Доступные функции для if:
Функция
Описание
Пример
glob(pattern)
Проверка соответствия пути шаблону
glob("*.tsx")
contains(str, substr)
Проверка вхождения подстроки
contains(current.model.model, "claude")
and
Логическое И
expr1 and expr2
or
Логическое ИЛИ
expr1 or expr2
not
Логическое НЕ
not expr
Доступные переменные для if:
Переменная
Описание
current.model.model
Текущая модель (например, claude-3-7-sonnet)
activePaths (неявно)
Активные пути файлов в редакторе
Примеры условий
Применять только к TypeScript файлам:
rules :
- name : TypeScript Strict
rule : Use strict type annotations
if : ${{ glob("*.ts") or glob("*.tsx") }}
Применять только для определённой модели:
rules :
- name : Detailed Explanations
rule : Provide detailed explanations with code examples
if : ${{ contains(current.model.model, "gpt-4") }}
Комбинированное условие:
rules :
- name : React Best Practices
rule : Use functional components with hooks
if : ${{ glob("*.tsx") and contains(current.model.model, "claude-3-7-sonnet") }}
Применять ко всем Python файлам кроме тестов:
rules :
- name : Python Type Hints
rule : Add type hints to all function signatures
if : ${{ glob("*.py") and not glob("*_test.py") }}
prompts
Пользовательские промпты, вызываемые из окна чата.
Свойство
Тип
Обязательно
Описание
name
string
Да
Имя промпта
description
string
Нет
Описание
prompt
string
Да
Текст промпта
prompts :
- name : check
description : Check for mistakes in my code
prompt : |
Please read the highlighted code and check for any mistakes:
- Syntax errors
- Logic errors
- Security vulnerabilities
- name : test
description : Write unit tests
prompt : Write comprehensive unit tests for the selected code using Jest
Внутри prompt доступны контекст-провайдеры (упоминаются в тексте через @) и встроенные переменные:
Переменная
Описание
Пример использования
{{{ input }}}
Пользовательский ввод после команды
{{{ input }}}
{{{ code }}}
Выделенный код
{{ code }}
{{{ file }}}
Текущий файл
{{ file }}
mcpServers
Model Context Protocol серверы.
Свойство
Тип
Обязательно
Описание
name
string
Да
Имя сервера
command
string
Да
Команда запуска
args
string[]
Нет
Аргументы команды
env
object
Нет
Переменные окружения, карта переменная: значение
mcpServers :
- name : SQLite
command : uvx
args :
- mcp-server-sqlite
- --db-path
- /Users/NAME/test.db
- name : Filesystem
command : npx
args :
- -y
- @ modelcontextprotocol/server-filesystem
- /Users/NAME/Documents
config.yaml
настройка
yaml
configuration