Помимо глобального 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:
Способ объединения с глобальным конфигом задаётся свойством mergeBehavior:
Значение
Поведение
merge
Значение по умолчанию. Свойства проекта добавляются к глобальной конфигурации
overwrite
Глобальная конфигурация полностью заменяется конфигурацией проекта
Несколько проектов в рабочей области
Если в рабочей области открыто несколько проектов, Koda прочитает .kodarc.json из корня каждого из них и применит их по очереди.
Ошибки в файле не ломают конфигурацию
Если .kodarc.json содержит некорректный JSON, этот файл пропускается с предупреждением, а конфигурация продолжает загружаться.
Если параметры из проекта не применились, проверьте синтаксис JSON в этом файле.
Правила, объединяемые в системное сообщение для всех режимов (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 componentsrule:Use Next.js server components where possibleif:${{ 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 Strictrule:Use strict type annotationsif:${{ glob("*.ts") or glob("*.tsx") }}
Применять только для определённой модели:
rules:-name:Detailed Explanationsrule:Provide detailed explanations with code examplesif:${{ contains(current.model.model, "gpt-4") }}
Комбинированное условие:
rules:-name:React Best Practicesrule:Use functional components with hooksif:${{ glob("*.tsx") and contains(current.model.model, "claude-3-7-sonnet") }}
Применять ко всем Python файлам кроме тестов:
rules:-name:Python Type Hintsrule:Add type hints to all function signaturesif:${{ glob("*.py") and not glob("*_test.py") }}
Пользовательские промпты, вызываемые из окна чата.
Свойство
Тип
Обязательно
Описание
name
string
Да
Имя промпта
description
string
Нет
Описание
prompt
string
Да
Текст промпта
prompts:-name:checkdescription:Check for mistakes in my codeprompt:|Please read the highlighted code and check for any mistakes:- Syntax errors- Logic errors- Security vulnerabilities-name:testdescription:Write unit testsprompt:Write comprehensive unit tests for the selected code using Jest
Внутри prompt доступны контекст-провайдеры (упоминаются в тексте через @) и встроенные переменные:
Тонкая настройка индексации кодовой базы: производительность и объём потребляемых ресурсов.
Индексация включается по умолчанию; полностью отключить её можно параметром disableIndexing.
Свойство
Тип
Описание
concurrency
number
Максимум параллельных запросов эмбеддингов
batchSize
number
Файлов в одном батче индексации
chunksPerIteration
number
Максимум чанков на одну итерацию эмбеддингов
disabledIndexes
string[]
Какие индексы не строить (chunks, vectordb, sqliteFts, codeSnippets)
deleteBatchSize
number
Файлов в одной операции удаления из векторного хранилища