Перейти к содержимому

Управление контекстом

Контекст — это вся информация, которую Kodik знает в ходе разговора. Понимание того, как он формируется, помогает получать более точные и последовательные ответы.

Каждая языковая модель имеет окно контекста — максимальный объём токенов (примерно 3/4 слова на токен), который она может держать в памяти одновременно. Этот объём включает системный промпт, историю разговора, содержимое упомянутых файлов, информацию об открытых вкладках и результаты вызовов инструментов.

Системный промпт собирается с учётом семейства модели: модели Claude получают сокращённый набор инструкций (им требуется меньше указаний, что освобождает контекст для вашего кода), модели GPT, Kimi и Gemini — дополнения, подобранные под эти семейства, а все остальные модели используют инструкции по умолчанию. Правила, память, ограничения режимов и язык ответа включаются для каждого семейства; различается только общая часть инструкций, поэтому итог System в меню использования контекста зависит от выбранной модели.

Когда контекст заполняется, качество ответов начинает снижаться задолго до достижения формального лимита — практически это заметно уже при ~200–300K токенов, даже у моделей с большим окном.

При каждом запросе Kodik собирает окружение из нескольких источников:

Активные вкладки редактора (<active_tabs>) — файлы, открытые в видимых панелях редактора в данный момент. Медиа- и бинарные файлы исключаются автоматически.

Открытые вкладки (<opened_tabs>) — файлы, открытые в редакторе, но не находящиеся в фокусе. Дублирование с активными вкладками исключается.

Упоминания (<user_mentions>) — файлы, папки и диапазоны строк, явно указанные через @ Упоминания. Файлы, заблокированные через .kodikignore, не включаются.

Терминальный контекст (<terminal_context>) — вывод терминала, прикреплённый через @terminal:<имя>.

Правила и инструкции — содержимое файлов из .kodik/rules, глобальных правил и AGENTS.md добавляется в системный промпт.

Память — записи из .kodik/memories включаются в системный промпт.

Вы можете исключить открытые файлы из контекста через интерфейс вкладки Context в панели Kodik. Исключение вкладки также убирает текущий выбранный диапазон строк из автоматического контекста чата.

По умолчанию Kodik автоматически сжимает историю разговора при приближении к лимиту. Подробнее — на странице Авто-сжатие.

Перед каждым обращением к провайдеру, включая продолжения после инструментов, Kodik рассчитывает бюджет окончательного запроса: сообщения, изображения, схемы инструментов, резерв на ответ и запас безопасности. Совместимый показатель токенов от провайдера позволяет уточнить эту оценку. Когда запрос приближается к доступному входному бюджету, Kodik создаёт контрольное резюме старых завершённых обменов и дословно сохраняет недавний хвост в пределах токенового бюджета.

Если провайдер сообщает о переполнении контекста, Kodik повторяет исходный запрос только после успешного сжатия. У самого сжатия есть ограниченное число повторов; если безопасное резюме создать не удалось, ход завершается ошибкой лимита контекста, а слишком большой запрос не отправляется снова. Автоматическое сжатие и сжатие при смене модели — необязательные функции, а сжатие после бездействия по умолчанию выключено. Обязательный переход с модели с большим контекстным окном на модель с меньшим — защитное исключение: даже если выключены Automatic summarization или Summarize on model switch, Kodik создаёт контрольное резюме прежней моделью с большим окном и не отправляет ход новой модели, если это не удалось.

Также доступен ручной вызов через /compact.

Что стоит включать явно:

  • Файлы, непосредственно относящиеся к задаче — через @Упоминания
  • Диапазоны строк для точного указания проблемного места
  • Вывод терминала с ошибкой или результатом сборки

Что стоит исключать:

  • Открытые, но нерелевантные вкладки — через панель Context
  • Файлы, которые не должны попадать к агенту — через .kodikignore

Правила и инструкции (.kodik/rules) занимают постоянное место в системном промпте, поэтому их стоит держать краткими и актуальными.

Контекст текущего разговора не переносится автоматически в новую сессию. Для преемственности используйте:

  • Начинайте свежую сессию при переходе к несвязанным задачам — это очищает контекст и снижает вероятность путаницы.
  • Используйте MCP серверы для подключения внешних баз знаний.
  • Скриншоты можно передавать как контекст для моделей с поддержкой изображений.