Журнал · Rit.work

Как сжать историю программного агента и сохранить точные действия

LOHA хранит старые ответы инструментов в сжатом виде, оставляет недавний текст дословно и сокращает контекст программного агента на 43–57%.

Rit.work
Студия разработки
28 сентября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Историю программного агента научились сокращать, не удаляя старые ответы инструментов полностью. В препринте Peking University, который не прошёл рецензирование и содержит замеры самих авторов, объём контекста на вызов модели уменьшился на 43–57%. Такой подход может повысить пропускную способность долгих сценариев, но пока снижает долю решённых задач.

Старые наблюдения сжимают, недавние оставляют текстом

Когда агент исправляет ошибку в репозитории, он читает файлы, ищет символы, запускает тесты и получает журналы ошибок. Эти ответы инструментов постепенно заполняют контекст — набор токенов, который модель получает при каждом следующем вызове. В траекториях CoderForge на них приходилось в среднем 69% токенов.

Обычная очистка истории удаляет старые ответы или заменяет их краткими пересказами. Это работает, пока агенту нужен общий смысл. Для точного изменения кода ему может понадобиться исходная строка целиком, включая пробелы, кавычки и имя функции.

Схема LOHA разделяет эти потребности. Системная инструкция, описание задачи и все реплики самого агента остаются обычным текстом. Старые ответы инструментов превращаются в короткие последовательности непрерывных представлений — мягкие токены (soft tokens), которые модель читает напрямую.

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

Такое разделение важнее самого алгоритма сжатия. Сжатая память отвечает на вопрос, что агент уже видел, а недавний текст даёт точные строки для команд и правок. Если нужная деталь осталась только в сжатой части, агент может повторно запросить файл через уже доступные инструменты.

Якорь удерживает исходное поведение модели

Подключить сжатые представления к готовой модели недостаточно. Модель должна научиться их читать, но после настройки не должна потерять способность рассуждать, выбирать инструменты и формировать корректные вызовы.

ACD решает обе задачи через дистилляцию. Замороженная исходная модель читает полную текстовую историю и задаёт распределение вероятностей для следующего токена. Настраиваемая модель получает сжатую версию той же истории и учится воспроизводить эти прогнозы.

Второй компонент служит якорем: на обычном текстовом входе настроенная модель должна отвечать близко к исходной. Без этого требования обучение чтению новой формы контекста меняло поведение и на тех запросах, где сжатия вообще не было.

Авторы не переобучали модель целиком. Они настраивали адаптер между кодировщиком и моделью, низкоранговые добавки к слоям и коэффициенты нормализации. Обучение шло офлайн на 35 140 успешных траекториях CoderForge: агент не взаимодействовал со средой заново, а учился на записанных историях.

Экономия окупается только в длинных и параллельных запусках

Метод проверяли на SWE-bench Verified через OpenHands с Qwen3-4B-Instruct-2507 и созданной на её основе SWE-Master-4B-RL. Это тест агентов, которые исправляют ошибки в репозиториях, поэтому результаты прямо относятся к программной разработке, но не характеризуют произвольные бизнес-сценарии с инструментами.

При окне из трёх недавних наблюдений доля решённых задач снизилась на 2,4 процентного пункта у Qwen3 и на 5,7 пункта у SWE-Master. Сжатие здесь не бесплатно: чем меньше исходного текста остаётся у модели, тем чаще она теряет детали, нужные для следующего действия.

Преимущество проявилось при ограниченном контексте и параллельной работе. Под жёстким лимитом сжатый агент решил больше задач, чем та же настроенная модель с полной историей, потому что длинные траектории перестали обрываться. На одном GPU при одновременном запуске нескольких траекторий пропускная способность выросла в 1,9 раза относительно настроенного агента с полной историей.

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

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

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу