Инженерное руководство
Анатомия контекста в AI IDE:
Почему больше токенов — это хуже, и как работает Reagent
Разбираем структуру запросов Cursor, Windsurf и Cline: системные промпты, KV-кэш и хирургическое сжатие с MCP Memo Recall.
1. Сколько весит системный промпт от вашей IDE?
Когда вы открываете чат в Cursor или запускаете агентный цикл в Cline, модель не просто ждёт ваш вопрос. IDE автоматически оборачивает запрос огромной сервисной обвязкой.
Фактический замер: Стандартный скрытый системный промпт от Cursor / Windsurf занимает от 30 до 55 КБ чистыми (это примерно 8,000 – 14,000 токенов).
В него входят: спецификации всех доступных IDE-инструментов, правила форматирования дифов, инструкции по навигации по проекту и внутренние системные промпты.
Почему не стоит раздувать кастомные правила (.cursorrules)?
Многие разработчики добавляют в файлы .cursorrules целые спецификации библиотек или гайды на 50 страниц. Это критическая ошибка:
- Начальный оверхед: Если ваш системный промпт + правила весят 50k токенов, каждый элементарный вопрос («поправь опечатку») будет оплачиваться так, будто вы скормили модели полкниги.
- Размытие внимания модели: Чем длиннее системные правила, тем выше вероятность, что модель проигнорирует вашу конкретную команду из текущего сообщения.
- Рекомендация Reagent: Оставляйте в правилах только ключевые директивы архитектуры (до 100 строк), а детальные инструкции храните в документации и вызывайте через контекст по мере необходимости.
2. Сколько токенов тратит IDE и почему «Больше не значит лучше»?
В ходе агентной сессии IDE делает десятки вспомогательных шагов: поиск файлов, выполнение тестов, просмотр каталогов, применение патчей. К 15-му шагу диалог разрастается до 250,000 – 350,000 токенов.
Миф: «Чем больше контекстное окно у модели, тем умнее она решит мою задачу».
Реальность: При раздувании контекста свыше 100k токенов качество кода катастрофически падает.
Три фатальные проблемы гигантского контекста:
-
Эффект «Lost in the Middle» (Потеря в середине): Исследования архитектуры трансформеров доказывают: модели отлично видят системный промпт (начало) и последний вопрос (конец), но слепнут в отношении середины контекста. Модель начинает галлюцинировать старыми версиями функций, которые были удалены 10 шагов назад.
-
Квадратичный рост задержки (TTFT): Время генерации первого токена вырастает с 3 секунд до 45–60 секунд. Вы проводите больше времени в ожидании ответа, чем в написании кода.
-
Поломка синтаксиса Tool Calls: Огромные простыни логов тестов в истории ломают генерацию JSON-схем для применения дифов, приводя к бесконечным ошибкам «Failed to parse tool call».
3. Почему в настройках IDE нужно ОТКЛЮЧИТЬ встроенное сжатие?
Важно: В настройках вашей IDE (Cursor / Cline) обязательно отключите авто-сжатие контекста (Summarize conversation / Auto-context trimming) и доверьте оптимизацию Reagent.
Встроенные алгоритмы в IDE созданы примитивно:
- Грубая обрезка (FIFO Truncation): IDE просто стирает первые 10 сообщений диалога. В результате модель забывает первоначальную задачу и ломает логику проекта.
- Сжатие дешёвой моделью: IDE вызывает слабую модель для пересказа диалога, которая выкидывает важные сигнатуры функций, типы и контекст ошибок.
Как поступает Reagent: Мы используем собственный движок CMPR V1 (Context Compare 200 KiB). Мы никогда не удаляем саму структуру диалога. Мы находим мусорные простыни (гигантские diff на 10,000 строк, дампы npm test, стектрейсы сборщика) и сворачиваем их в компактные 512-байтовые капсулы.
4. Для чего нужен MCP Memo Recall?
Когда Reagent компактифицирует старый шум, он не удаляет его бесследно. Оригинальный контент сохраняется в изолированную капсулу памяти сессии (например, memo-7a3b9f12).
Через протокол Model Context Protocol (MCP) агент в IDE получает нативный инструмент memo_recall(capsule_id).
Если на 20-м шаге модель вдруг решит сравнить текущий код с логом падения теста из шага 3, она самостоятельно вызывает инструмент memo_recall("memo-7a3b9f12") и мгновенно получает точный фрагмент назад.
Результат: Контекст остаётся лёгким (200 KiB), а память агента — безграничной и доступной по требованию!
5. Prompt Caching: Как Reagent сохраняет 90% скидку на кэш
У современных моделей (Anthropic Claude 3.5/3.7, DeepSeek V3/R1) есть механизм Prompt Caching. Если префикс запроса уже был обработан сервером провайдера, последующие токены считываются из серверного KV-кэша со скидкой до 90%.
Главная угроза наивных прокси: Если прокси каждый раз динамически вырезает случайные фрагменты или вставляет текущую дату/таймстемп в середину запроса, кэш провайдера сбивается на 100%, приводя к огромным переплатам.
Детерминированный подход Reagent:
- ID каждой капсулы формируется строго детерминированно через SHA-256 от содержимого:
memo-sha256(content).
- Никаких случайных чисел или динамических таймстемпов в сообщениях.
- Системный промпт и стабильный префикс диалога остаются байт-в-байт неизменными от шага к шагу.
Благодаря этому вы получаете двойную экономию: Reagent сначала срезает до 76% физического объёма шума, а оставшиеся токены залетают в KV-кэш провайдера с дополнительной 90% скидкой!