Агент должен помнить контекст между вызовами инструментов, но часто забывает
Агент выполняет задачу пошагово: вызывает инструмент, получает результат, добавляет результат в контекст, вызывает следующий инструмент. С каждым вызовом история растёт, и свободное место в окне контекста сокращается. На какой-то момент окно переполняется, и модель должна выбрать, какую часть истории оставить, а какую выбросить.
Классическая ошибка: модель оставляет все результаты инструментов и выкидывает исходную задачу. На шаге пять агент уже не помнит, зачем он вообще начинал вызывать инструменты, и начинает ходить кругами, повторяя те же операции.
Сжатие и переиндексирование истории
Решение в том, чтобы сжимать историю по ходу. После каждого-второго вызова инструмента модель пересказывает, что произошло, в компактном виде: исходная задача, что уже сделано, что осталось. Это занимает ещё несколько токенов, но сохраняет ясность цели.
Второй подход — не добавлять в контекст всю историю, а только последние результаты и итоговое резюме. Полная история хранится отдельно, в базе, а в окне контекста только работающий набор данных. Когда модели нужна информация из ранних шагов, она может явно запросить из базы.
Интересное наблюдение: модели, которые получают явную инструкцию регулярно проверять исходную задачу, справляются заметно лучше. Проверка занимает рабочее время, но предотвращает дрейф в сторону от цели.