Журнал · Rit.work

ReFold сжимает контекст LLM-агента, не удаляя его историю

ReFold отделяет полную историю LLM-агента от контекста модели, сворачивает повторы и завершённые шаги, но позволяет восстановить любой удалённый фрагмент.

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

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

Историю длинной сессии LLM-агента научились сокращать так, чтобы любой скрытый фрагмент можно было вернуть без повторного запуска задачи. В препринте University of California, Santa Barbara и Intel, который не прошёл рецензирование и опирается на замеры самих авторов, ReFold вдвое уменьшил память KV-кэша на сессию без заметного ухудшения результата. Для команд это способ дольше выполнять задачи в одном агентном цикле, не обучая отдельную модель для управления контекстом.

Полная история остаётся источником истины

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

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

ReFold разделяет неизменяемую историю и контекст, который видит модель. История хранит все ходы целиком, а отдельный слой формирует из неё сокращённое представление перед каждым запросом. Поэтому сжатие не уничтожает исходные данные.

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

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

Восстановление не ломает уже закэшированный префикс

Если переписывать раннюю часть контекста после каждого хода, сервер теряет пользу от кэша префикса. Этот кэш хранит уже вычисленные представления начала запроса и позволяет не обрабатывать одинаковую часть заново. Частые правки экономят токены, но возвращают вычислительные затраты.

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

Каждая заглушка содержит номер исходного шага. Если модели снова понадобился скрытый материал, она вызывает команду restore. Агентная среда перехватывает её, достаёт оригинал из полной истории и добавляет его в конец текущего контекста. Ранний префикс при этом не меняется.

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

Метод проверяли в mini-swe-agent с Qwen3.6-27B и Qwen3.6-35B-A3B. Набор задач охватывал SWE-bench Verified, SWE-bench Pro, Multi-SWE-bench и две версии Terminal-Bench; модели работали через vLLM с включённым кэшем префикса. Это задачи по репозиториям и терминалу, где агент много читает, ищет, редактирует и запускает команды.

Командам стоит отделить журнал событий от контекста модели

На полном окне ReFold сокращал расход токенов на 18–60%, а расчётную стоимость — до 45% без статистически заметного падения доли решённых задач. При ограниченном контексте метод предотвращал до 92% принудительных свёрток истории. Под конкурентной нагрузкой задачи выполнялись до 1,7 раза быстрее, а задержка в очереди сокращалась до 100%.

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

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

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

Источники

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

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

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

Rit.work

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

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

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