Сергей Смирнов, ИИ-инженер и основатель LLMStart.ru, опубликовал разбор проблемы управления памятью в корпоративном ИИ-консультанте, который его команда сделала для компании Айтон. Бот помогает пользователям работать в «1С:Управление нашей фирмой»: принимает текстовые вопросы и скриншоты, ищет ответы в базе знаний, при необходимости подключает субагента для поиска актуальной информации в интернете. На каждый вопрос агент делает 2–4 тяжёлых поисковых запроса — и именно это стало корнем проблемы.
Когда команда разобрала более 300 реальных сессий, интуитивная картина рассыпалась. Казалось бы, контекст должен забиваться историей переписки — вопросами и ответами. На деле один шаг диалога потребляет в среднем около 2000 токенов, и 93% из них приходится на результаты поисковых вызовов, а не на реплики пользователя. Системный промпт фиксирован (1513 токенов), вопрос пользователя весит в среднем 45 токенов, ответ агента — около 109. Зато один поход в базу знаний стоит порядка 950–1050 токенов, а за шаг агент делает их два-три.
| Элемент контекста | Среднее (avg) | Медиана (p50) | 95-й перцентиль (p95) |
|---|---|---|---|
| Системный промпт | 1 513 | 1 513 | 1 513 |
| Вопрос пользователя | 45 | 48 | 70 |
| Ответ агента | 109 | 33 | 446 |
| Результат поиска по базе | 950 | 1 051 | 1 447 |
| Результат вызова эксперта | 622 | 688 | 1 115 |
| Вызовы инструментов на цикл | 2 | 2 | 5 |
Дальше срабатывает эффект снежного кома. Агент хранит всю историю сессии и тащит за собой не только предыдущие реплики, но и все поисковые выдачи, которые он запрашивал раньше. На 5-м шаге диалога доля устаревших результатов поиска составляет 65%, на 15-м — уже 83%, на 30-м — 88%, на 50-м — 90%. К середине типичного диалога пользователь, скорее всего, обсуждает уже другую тему, но агент продолжает тащить данные из первых запросов. Без оптимизации самые длинные сессии упираются в 200 тысяч токенов на 19-м шаге.
К 15-му циклу диалога доля устаревших данных в контексте достигает 83%, к 50-му — 90%.
Здесь важен более широкий контекст: заявленное окно в миллион токенов не означает, что модель одинаково хорошо работает со всем его объёмом. Anthropic называет это явление context rot — «гниение контекста». Специализированный бенчмарк MRCR v2 (усложнённый вариант теста «найди иголку в стоге сена») прячет в огромный текст 8 фактов и проверяет, сколько из них модель найдёт без ошибок. По данным обзора yage.ai за март 2026 года, на окне в 1 миллион токенов Claude Opus 4.6 находит 76% скрытых фактов, тогда как Gemini 3.1 Pro — только 24,5%. Более старые модели показывают 16–18%. Разрыв трёхкратный при одинаковом заявленном размере окна.
Для разработчиков реальных продуктов это означает конкретный риск: стратегия «залить всё в контекст и пусть модель разберётся» делает качество бота заложником одного провайдера. Если завтра нужно сменить модель — например, из-за цены или доступности — бот деградирует. Управление контекстом на уровне архитектуры снимает эту зависимость: если команда сама контролирует, что лежит в «голове» агента, смена провайдера становится технической задачей, а не катастрофой для продукта.
Стек проекта: Python и FastAPI на бэкенде, LangChain для управления агентом, Qdrant как векторная база данных, Langfuse для аналитики, OpenRouter как провайдер. Основная модель — Gemini 3.1 Pro, для лёгких задач (краткий пересказ, промежуточные шаги) используется более дешёвая Gemini 3 Flash. Именно разница в стоимости моделей делает оптимизацию контекста экономически значимой: чем меньше токенов отправляется в дорогую модель, тем ниже операционные расходы при том же качестве ответов.


