Перейти к содержанию

Файл 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