Инженерное руководство

Анатомия контекста в 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 страниц. Это критическая ошибка:

2. Сколько токенов тратит IDE и почему «Больше не значит лучше»?

В ходе агентной сессии IDE делает десятки вспомогательных шагов: поиск файлов, выполнение тестов, просмотр каталогов, применение патчей. К 15-му шагу диалог разрастается до 250,000 – 350,000 токенов.

Миф: «Чем больше контекстное окно у модели, тем умнее она решит мою задачу».
Реальность: При раздувании контекста свыше 100k токенов качество кода катастрофически падает.

Три фатальные проблемы гигантского контекста:

  1. Эффект «Lost in the Middle» (Потеря в середине): Исследования архитектуры трансформеров доказывают: модели отлично видят системный промпт (начало) и последний вопрос (конец), но слепнут в отношении середины контекста. Модель начинает галлюцинировать старыми версиями функций, которые были удалены 10 шагов назад.
  2. Квадратичный рост задержки (TTFT): Время генерации первого токена вырастает с 3 секунд до 45–60 секунд. Вы проводите больше времени в ожидании ответа, чем в написании кода.
  3. Поломка синтаксиса Tool Calls: Огромные простыни логов тестов в истории ломают генерацию JSON-схем для применения дифов, приводя к бесконечным ошибкам «Failed to parse tool call».

3. Почему в настройках IDE нужно ОТКЛЮЧИТЬ встроенное сжатие?

Важно: В настройках вашей IDE (Cursor / Cline) обязательно отключите авто-сжатие контекста (Summarize conversation / Auto-context trimming) и доверьте оптимизацию Reagent.

Встроенные алгоритмы в 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:

Благодаря этому вы получаете двойную экономию: Reagent сначала срезает до 76% физического объёма шума, а оставшиеся токены залетают в KV-кэш провайдера с дополнительной 90% скидкой!