Контекст-провайдеры¶
Это источники дополнительных данных, которые добавляют релевантную информацию в запросы к AI через символ @. Такими источниками могут быть файлы, директории, терминал и пр.
Пример:
Типы контекст-провайдеров¶
Встроенные провайдеры¶
Koda поставляется с набором встроенных провайдеров:
| Провайдер | Команда | Описание |
|---|---|---|
| File | @file |
Добавить файл проекта |
| Code | @code |
Выделенный код из редактора |
| Codebase | @codebase |
Поиск по кодовой базе |
| Diff | @diff |
Изменения git |
| Terminal | @terminal |
Содержимое терминала |
| Problems | @problems |
Ошибки и предупреждения |
| Folder | @folder |
Файлы в папке |
| URL | @url |
Контент веб-страницы |
| Search | @search |
Поиск по проекту |
File — добавление файла¶
Как использовать:
- Введите @ в чате
- Начните вводить
filesили имя файла - Выберите файл из списка нажатием ⏎ Enter или кликом мыши
- Допишите вопрос
Примеры:
@src/utils/auth.ts Проверь на уязвимости
@package.json Какие зависимости устарели?
@README.md Улучши документацию
К одному запросу можно добавлять множество файлов!
Например, если спросить:
то модель проанализирует импорты, зависимости между этими файлами и общие типы.Code — выделенный в редакторе код¶
- Выделите код в редакторе
- Нажмите Ctrl/⌘ + L — выделение добавится к запросу
- Перейдите в панель Koda и допишите вопрос
Codebase — поиск по кодовой базе¶
Как использовать:
- Введите
@codebase - Добавьте поисковый запрос
- Koda найдёт релевантный код и добавит в контекст
- Ответит на вопрос
Примеры:
@codebase Где используется аутентификация?
@codebase Как обрабатываются ошибки API?
@codebase Найди все GraphQL мутации
Индексация кодовой базы¶
Koda автоматически индексирует файлы проекта в фоновом режиме и при изменениях.
Это индекс используется для @Codebase.
Увидеть статус индексации можно так:
- Открыть Настройки
- Перейти на вкладку Индексация
Настройка индексации¶
Какие директории и файлы индексируются:
Индексация уважает .gitignore и .kodaignore — исключённые там директории и файлы не попадают в индекс.
Подробнее — на странице .kodaignore.
Отключение индексации:
Тонкая настройка (производительность):
indexingOptions:
concurrency: 4 # параллельные запросы эмбеддингов
batchSize: 100 # файлов в одном батче
chunksPerIteration: 50 # чанков на итерацию эмбеддингов
disabledIndexes: # какие индексы не строить
- sqliteFts
Полный список параметров — в разделе indexingOptions справочника конфигурации.
Diff Provider¶
Изменения git¶
Синтаксис:
Автоматическое добавление:
- Сделайте изменения в файлах
- Введите
@diffв чате - Текущие изменения добавятся
Примеры:
Когда использовать:
- Анализ изменений
- Генерация commit message
- Код-ревью
- Проверка перед коммитом
Статус изменений¶
Diff provider показывает:
- Изменённые файлы
- Добавленные строки
- Удалённые строки
- Несогласованности
Пример вывода:
Изменения в 3 файлах:
+ 45 строк
- 12 строк
Файлы:
- src/auth.ts (+20, -5)
- src/types.ts (+15, -3)
- src/utils.ts (+10, -4)
Terminal Provider¶
Содержимое терминала¶
Синтаксис:
Автоматическое добавление:
- Выполните команду в терминале
- Введите
@terminalв чате - Последняя команда и вывод добавятся
Примеры:
@terminal Почему эта команда не работает?
@terminal Как исправить эту ошибку?
@terminal Что означает этот вывод?
Когда использовать:
- Отладка команд
- Анализ ошибок
- Объяснение вывода
- Поиск решения проблем
В IntelliJ (OpenIDE, GigaIDE) провайдер читает встроенный терминал IDE, включая новый терминал с вкладками.
Если открытых терминалов несколько, берётся выбранный, а если терминалов нет вовсе — контекст будет пустым.
Несколько команд¶
Можно запросить историю команд:
Покажет:
- Последние 10 команд
- Их вывод
- Статус выполнения
Problems Provider¶
Ошибки и предупреждения¶
Синтаксис:
Автоматическое добавление:
- Откройте файл с ошибками
- Введите
@problemsв чате - Проблемы из редактора добавятся
Примеры:
@problems Как исправить эти ошибки TypeScript?
@problems Почему здесь предупреждение?
@problems Какие проблемы в файле?
Когда использовать:
- Исправление ошибок компиляции
- Анализ предупреждений линтера
- Типизация кода
- Рефакторинг
Типы проблем¶
Problems provider показывает:
- Errors — ошибки компиляции
- Warnings — предупреждения
- Info — информационные сообщения
- Hints — подсказки
Пример вывода:
Проблемы в src/auth.ts:
❌ Ошибка 2345: Тип 'string' не assignable to 'number'
⚠️ Предупреждение 6133: Переменная 'x' не используется
ℹ️ Info: Файл не отформатирован
Folder Provider¶
Файлы в папке¶
Синтаксис:
Как использовать:
- Введите
@folder - Укажите путь к папке
- Добавьте вопрос
Примеры:
@folder src/components Какие компоненты здесь есть?
@folder src/api Как организованы API вызовы?
@folder tests Какие тесты написаны?
Когда использовать:
- Обзор структуры папки
- Поиск файлов в директории
- Анализ организации кода
- Онбординг в проекте
Структура папки¶
Вывод:
Папка: src/components/
├── Button/
│ ├── Button.tsx
│ ├── Button.test.tsx
│ └── index.ts
├── Input/
│ ├── Input.tsx
│ └── Input.test.tsx
└── Form/
├── Form.tsx
├── Form.test.tsx
└── types.ts
Всего: 3 компонента, 8 файлов
URL Provider¶
Контент веб-страниц¶
Синтаксис:
Как использовать:
- Введите
@url - Добавьте URL страницы
- Добавьте вопрос
Примеры:
@url https://react.dev/reference/react/useEffect Как использовать useEffect?
@url https://docs.python.org/3/library/asyncio.html Объясни async/await
Когда использовать:
- Вопросы по документации
- Анализ статей
- Извлечение информации
- Ссылки на ресурсы
Ограничения¶
| Параметр | Значение |
|---|---|
| Макс. размер страницы | ~1 MB |
| Поддержка JavaScript | ❌ Нет |
| Требуется интернет | ✅ Да |
Search Provider¶
Поиск по проекту¶
Синтаксис:
Как использовать:
- Введите
@search - Добавьте поисковый запрос
- Добавьте вопрос
Примеры:
@search authenticate Где используется аутентификация?
@search useEffect Найди все хуки useEffect
@search API endpoints Найди все API endpoints
Когда использовать:
- Поиск по тексту
- Поиск функций/классов
- Поиск паттернов
- Анализ кодовой базы
Типы поиска¶
Полнотекстовый поиск:
- Поиск по содержимому файлов
- Регистрозависимый
- Поддержка regex
Семантический поиск:
- Поиск по смыслу
- Векторные эмбеддинги
- Более релевантные результаты
Комбинирование провайдеров¶
Несколько провайдеров в одном запросе¶
Можно использовать несколько провайдеров одновременно:
Примеры:
@code @diff Проверь изменения на ошибки
@folder src/components @problems Найди проблемы в компонентах
Цепочки провайдеров¶
Используйте провайдеры последовательно:
1. @codebase Где используется аутентификация?
2. @file src/auth.ts Покажи эту функцию
3. @code Как оптимизировать?
Преимущество:
- Постепенное углубление в тему
- Контекст сохраняется между запросами
- Более точные ответы
Настройка провайдеров¶
Параметры провайдеров¶
Некоторые провайдеры поддерживают параметры в секции context файла config.yaml.
Полный список провайдеров и их параметров приведён в разделе context справочника конфигурации.
Решение проблем¶
Провайдер не работает¶
Причины:
- Провайдер отключен
- Ошибка в конфигурации
- Нет доступа к ресурсам
Решения:
- Проверьте конфигурацию:
- Перезагрузите конфигурацию:
- Нажмите Reload Config
- Или перезапустите IDE
- Проверьте логи:
- Откройте Developer Tools
- Ищите ошибки провайдеров
Недостаточно контекста¶
Причины:
- Провайдер не нашёл данные
- Неправильный запрос
- Ограничения провайдера
Решения:
- Уточните запрос
- Используйте другой провайдер:
- Комбинируйте провайдеры:
Лучшие практики¶
1. Используйте правильный провайдер¶
✅ Хорошо:
❌ Плохо:
2. Комбинируйте провайдеры¶
✅ Хорошо:
❌ Плохо:
3. Уточняйте запросы¶
✅ Хорошо: @codebase authentication JWT token
❌ Плохо: @codebase auth
4. Следите за размером контекста¶
Ограничения:
- Файлы: ~100 KB
- Код: ~10 KB
- Документы: ~50 KB
При больших файлах:
- Используйте
@codeдля участков - Разбейте на части
- Суммаризуйте