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

Файл config.yaml

Koda использует файл конфигурации config.yaml для настройки моделей, контекстных провайдеров и других параметров.

Для переопределения параметров в отдельном проекте используйте файл .kodarc.json.

Расположение файла конфигурации:

  • 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

Файл .kodarc.json

Помимо глобального config.yaml, Koda читает файл .kodarc.json в корне каждого проекта рабочей области. Он позволяет переопределить часть параметров конфигурации для конкретного проекта, не затрагивая глобальные настройки других проектов.

Структура

Файл имеет формат JSON и использует те же свойства, что и config.yaml. Достаточно перечислить только те свойства, которые вы хотите переопределить для проекта.

.kodarc.json
{
  "models": [
    {
      "name": "Koda Models",
      "provider": "koda-chat-models",
      "model": "AUTODETECT",
      "roles": ["agent", "chat", "edit"]
    }
  ],
  "context": [
    { "provider": "code" },
    { "provider": "diff" },
    { "provider": "codebase" }
  ],
  "rules": ["Always use TypeScript"],
  "mergeBehavior": "merge"
}

Полный пример с промптами и MCP-серверами:

.kodarc.json
{
  "context": [
    { "provider": "codebase", "params": { "nFinal": 10 } },
    { "provider": "folder", "params": { "path": "./src" } }
  ],
  "rules": [
    {
      "name": "Code style",
      "rule": "Use strict type annotations"
    }
  ],
  "prompts": [
    {
      "name": "check",
      "description": "Check for mistakes in my code",
      "prompt": "Please read the highlighted code and check for any mistakes"
    }
  ],
  "mcpServers": [
    {
      "name": "Filesystem",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/NAME/Documents"]
    }
  ],
  "mergeBehavior": "merge"
}

Состав свойств и их параметры идентичны config.yaml:

Свойство Описание Раздел
models Языковые модели и их роли models
context Провайдеры контекста context
rules Системные правила для LLM rules
prompts Пользовательские промпты prompts
mcpServers MCP-серверы mcpServers
indexingOptions Тонкая настройка индексации indexingOptions
disableIndexing Полное отключение индексации disableIndexing

Объединение с глобальным конфигом

Способ объединения с глобальным конфигом задаётся свойством mergeBehavior:

Значение Поведение
merge Значение по умолчанию. Свойства проекта добавляются к глобальной конфигурации
overwrite Глобальная конфигурация полностью заменяется конфигурацией проекта

Несколько проектов в рабочей области

Если в рабочей области открыто несколько проектов, Koda прочитает .kodarc.json из корня каждого из них и применит их по очереди.

Ошибки в файле не ломают конфигурацию

Если .kodarc.json содержит некорректный JSON, этот файл пропускается с предупреждением, а конфигурация продолжает загружаться. Если параметры из проекта не применились, проверьте синтаксис JSON в этом файле.

Спецификация

Свойство Тип Обязательно Описание
name string Да Имя конфигурации/ассистента
version string Да Версия конфигурации (semver)
schema string Нет Версия схемы (например, v1)
models object[] Нет Список языковых моделей
context object[] Нет Поставщики контекста
rules object[] Нет Системные правила для LLM
prompts object[] Нет Пользовательские промпты
mcpServers object[] Нет MCP-серверы

models

Определяет языковые модели для разных режимов Koda.

Недоступно для SaaS-пользователей.

Свойство Тип Описание
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, agent, plan]
capabilities string[] Возможности: tool_use, image_input
defaultCompletionOptions object Опции завершения (см. ниже)
requestOptions object HTTP-опции (см. ниже)
embedOptions object Опции эмбеддингов
chatOptions object Опции чата
promptTemplates object Шаблоны: apply, edit. Используют синтаксис Handlebars

Koda поддерживает различные роли для моделей:

  • chat — для обычного чата
  • edit — для редактирования кода
  • agent — для агентского режима
  • plan — для режима планирования
  • autocomplete — для автодополнения кода
  • apply — для применения изменений кода
  • summarize — для суммаризации диалогов
  • nextEdit — для предсказания следующей правки (Next Edit Prediction)
  • embed — для создания эмбеддингов
  • rerank — для ранжирования результатов

Если роль не указана явно, модель используется для ролей chat, edit, agent и plan.

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"

indexingOptions

Тонкая настройка индексации кодовой базы: производительность и объём потребляемых ресурсов. Индексация включается по умолчанию; полностью отключить её можно параметром disableIndexing.

Свойство Тип Описание
concurrency number Максимум параллельных запросов эмбеддингов
batchSize number Файлов в одном батче индексации
chunksPerIteration number Максимум чанков на одну итерацию эмбеддингов
disabledIndexes string[] Какие индексы не строить (chunks, vectordb, sqliteFts, codeSnippets)
deleteBatchSize number Файлов в одной операции удаления из векторного хранилища
compactionThreshold number Порог компакции векторной таблицы за один проход
indexingOptions:
  concurrency: 4
  batchSize: 100
  disabledIndexes:
    - sqliteFts

disableIndexing

false

Полностью отключает индексацию кодовой базы и провайдер @codebase. Остальные провайдеры контекста продолжают работать.