3,583 papers
arXiv:2606.23525 82 22 июня 2026 г. FREE

SELFCOMPACT: рубрика для умного сжатия контекста в длинных диалогах

КЛЮЧЕВАЯ СУТЬ
Парадокс: сжатие контекста по таймеру хуже, чем вообще не сжимать. Если модель решает «схлопнуться» в середине вывода — она стирает частично проверенные факты и стартует заново с испорченной картиной. SELFCOMPACT даёт возможность модели самой решать когда сжимать — через явный список условий, который называется рубрикой. Фишка: рубрика переводит размытое «пора?» в набор проверяемых вопросов — завершился ли подвопрос, есть ли устоявшиеся факты, не в середине ли ты вывода. Модель выносит вердикт СЖАТИЕ или ПРОДОЛЖАЮ — и сжимает только на завершённых этапах, не в середине.
Адаптировать под запрос

TL;DR

Контекст гниёт. Когда диалог с AI затягивается, старые ошибочные рассуждения, отброшенные гипотезы и нерелевантные поиски накапливаются в памяти модели — и тянут её назад. Модель начинает повторять уже опровергнутые пути и хуже отвечает, даже если правильный ответ уже был найден ранее. Это явление называют «гниением контекста» (context rot).

Главная находка: сжимать контекст нужно не по расписанию («каждые 10 сообщений»), а по смыслу. Если попросить модель суммировать разговор в середине рассуждения — она сотрёт именно то, что ещё не успела использовать. Результат хуже, чем если бы не сжимала вообще. Момент имеет значение больше, чем периодичность.

SELFCOMPACT решает это через рубрику — короткий список условий, по которым модель сама решает: «сейчас сжать» или «продолжить». Рубрика задаёт два триггера «сжать» (подзадача завершена, разговор сходится к ответу) и два запрета «продолжить» (я в середине цепочки рассуждений, я завис и хожу по кругу). Инструмент без рубрики работает хаотично — модели либо сжимают слишком часто, либо не используют инструмент совсем.


🔬

Схема метода

Каждые N шагов (токенов / вызовов инструментов):

ШАГ 1: ПРОВЕРКА РУБРИКИ
  → Модель получает рубрику и выносит вердикт: СЖАТЬ или ПРОДОЛЖИТЬ

ШАГ 2а (если СЖАТЬ):
  → Модель создаёт резюме всей истории
  → История заменяется резюме, работа продолжается

ШАГ 2б (если ПРОДОЛЖИТЬ):
  → Рубрика и вердикт убираются из контекста
  → Работа продолжается без изменений

Оба шага — в одном чате, одной моделью, без внешних инструментов

🚀

Пример применения

Задача: Артём запускает SaaS-продукт для B2B-сегмента (управление задачами для малого бизнеса). Он провёл с Claude часовую сессию: исследовал конкурентов, анализировал ценообразование, обсуждал позиционирование — и разговор уже 40 сообщений. Нужно продолжать, но ответы стали хуже: модель возвращается к вариантам, от которых уже отказались.

Промпт:

Оцени наш разговор по рубрике и реши — нужно ли сейчас сделать сводку.

СЖАТЬ, если выполнено хотя бы одно условие:
— Мы завершили отдельный блок (анализ конкурентов / ценообразование / 
  позиционирование) и зафиксировали чёткий вывод
— Мы уже сходимся к финальному решению, осталось уточнить детали

ПРОДОЛЖИТЬ, если:
— Мы в середине рассуждения и мысль не завершена
— Мы застряли и ходим по кругу — сжатие не поможет

Ответь одним словом: СЖАТЬ или ПРОДОЛЖИТЬ.

Если СЖАТЬ — составь резюме в таком формате:
✅ Что решено (факты, выводы, цифры — точно)
🔄 Что сейчас исследуем (текущий вопрос)
❓ Что осталось открытым (следующие шаги)

После резюме продолжи работу с того места, где остановились.

Результат: Если рубрика говорит «ПРОДОЛЖИТЬ» — модель просто продолжает. Ни токена лишнего. Если «СЖАТЬ» — появится резюме в трёх блоках: что уже решено (сохранятся конкретные цифры и выводы), что сейчас в работе, что ещё открыто. После резюме модель продолжит с актуального вопроса, не возвращаясь к отброшенным вариантам.


🧠

Почему это работает

Слабость LLM: плохая память о своём же контексте. Модель не ведёт внутренний журнал «что уже решено». Она каждый раз переваривает весь разговор заново. Когда старых ошибочных цепочек накапливается много — они буквально вытесняют свежие правильные мысли. Проблема не в длине, а в качестве: 10 релевантных сообщений работают лучше 40 смешанных.

Сильная сторона LLM: оценка по критериям. Попроси модель «скажи когда нам стоит сделать паузу» — она не справится. Но дай ей конкретные критерии («задача завершена / мы в середине рассуждения») — и она точно их применяет. От расплывчатого вопроса к структурированной рубрике — принципиальный переход.

Как метод использует это: Рубрика переводит абстрактный вопрос «хороший момент для паузы?» в набор проверяемых условий. Модель не угадывает — она сверяется со списком. Два условия «когда жать», два «когда не жать» — достаточно, чтобы попасть в правильный момент. Инструмент без рубрики хаотичен; рубрика без инструмента бесполезна. Вместе — работает.

Рычаги управления: - Частота проверки — в исследовании каждые N токенов/вызовов. В ручном режиме: раз в 8-10 сообщений или после завершения смыслового блока - Формат резюме — можно добавить блок «что убрали и почему» для полной прозрачности - Условия рубрики — можно расширить под свой контекст (например, добавить «завершена ли итерация правок») - Кто вызывает — в исследовании модель сама; в ручном режиме — вы явно вставляете промпт-проверку


📋

Шаблон промпта

Оцени наш разговор по рубрике и реши — нужно ли сейчас сделать сводку.

СЖАТЬ, если выполнено хотя бы одно:
— Мы завершили отдельный блок работы и есть чёткий вывод
— Мы уже сходимся к решению, осталось уточнить детали

ПРОДОЛЖИТЬ, если:
— Мы в середине рассуждения, мысль не завершена
— Мы застряли и повторяемся — сжатие не поможет

Ответь: СЖАТЬ или ПРОДОЛЖИТЬ.

Если СЖАТЬ — составь резюме:
✅ Что решено: {что зафиксировать — факты, выводы, цифры}
🔄 Сейчас в работе: {текущий открытый вопрос}
❓ Открытые вопросы: {что ещё нужно разобрать}

После резюме продолжи с {текущей задачи}.

Плейсхолдеры: - {что зафиксировать} — уточни если нужно что именно сохранять (например: «ключевые числа», «принятые решения») - {текущий открытый вопрос} — что сейчас исследуется - {текущей задачи} — с какого вопроса продолжать после сводки

🚀 Быстрый старт — вставь в чат:

Вот шаблон SELFCOMPACT для умного сжатия контекста. 
Адаптируй под мою задачу: {твоя задача, например: 
"анализ бизнес-модели маркетплейса"}.

[вставить шаблон выше]

LLM спросит о типе задачи и логических блоках, на которые она делится — потому что условия рубрики «СЖАТЬ/ПРОДОЛЖИТЬ» должны соответствовать структуре именно твоей работы.


⚠️

Ограничения

⚠️ Короткие диалоги: Для разговоров до 15-20 сообщений рубрика не нужна — контекст ещё не засорился, проверка добавит токены впустую.

⚠️ Застревание в петле: Если модель ходит по кругу, рубрика скажет «ПРОДОЛЖИТЬ» (так и задумано — сжатие не поможет застрявшей модели). Проблему петли нужно решать иначе: сменить подход или начать новый чат.

⚠️ Качество резюме: Метод работает настолько хорошо, насколько хорошо модель умеет суммировать. Если в резюме потерялась важная деталь — это не исправить. Проверяй блок ✅ перед тем как продолжать.

⚠️ Ручной режим требует дисциплины: В оригинале модель сама вставляет рубрику периодически. В ручном режиме ты должен помнить вставить промпт-проверку. Помогает привычка: проверять каждые 10 сообщений или при смене смыслового блока.


🔍

Как исследовали

Команда Джонса Хопкинса поставила простой вопрос: что если дать модели инструмент «сжать контекст» — она воспользуется им разумно? Ответ оказался «нет»: одни модели давили кнопку сжатия каждые два шага, другие игнорировали её совсем. Это и стало точкой входа для рубрики.

Тестировали на семи моделях семейства Qwen и трёх поисковых агентах (MiniMax, GLM, MiMo) — шесть бенчмарков: олимпиадная математика (IMO-Answerbench, HMMT) и сложный агентный поиск (BrowseComp). Сравнивали три режима: без сжатия, фиксированный интервал (каждые 30% контекста), и SELFCOMPACT с рубрикой.

Самый показательный результат — в математике на Qwen3.5-9B: без сжатия 25%, фиксированный интервал 33%, SELFCOMPACT 41%. Почти двойной разрыв между «не сжимать» и «сжимать умно». Но вот что интересно: был и «оракульный» тест — модели дали знать когда ответ уже правильный и сжимать не нужно. Оракул дал 52.9%. Это значит, что SELFCOMPACT ещё далёк от потолка — принцип правильный, потенциал не исчерпан.

В поисковых задачах SELFCOMPACT оказался дешевле базового варианта, несмотря на дополнительные вызовы. Стоимость на вопрос упала на 33-67% — потому что сжатый контекст дешевле обрабатывать на каждом следующем шаге.


💡

Адаптации и экстраполяции

📌

🔧 Техника: «Резюме после каждого блока задачи»

Если работаешь по структурированному плану (исследуешь 5 вопросов подряд) — вставляй рубрику не по времени, а после каждого закрытого пункта. Модель сама скажет «СЖАТЬ» — и ты начнёшь следующий пункт с чистым, сфокусированным контекстом.

Мы завершили пункт {N} нашего плана.

Прежде чем переходить к пункту {N+1}:
Оцени: нужно ли зафиксировать итог в резюме или 
контекст ещё достаточно чистый?

Если резюме нужно — составь сводку по пункту {N} 
(ключевые факты, решения, открытые вопросы), 
затем переходи к {N+1}.

📌

🔧 Техника: «Зеркало для длинного проекта»

Экстраполяция на многосессионную работу (несколько отдельных чатов). В конце каждой сессии — вместо того чтобы просто закрыть чат — запускаешь рубрику и сохраняешь резюме. В начале следующей сессии вставляешь его в системный промпт или первое сообщение. SELFCOMPACT превращается в протокол передачи контекста между сессиями.

Мы заканчиваем сессию по задаче {название задачи}.

Составь сводку для следующей сессии:

✅ РЕШЕНО ОКОНЧАТЕЛЬНО: [список с деталями]
🔄 В ПРОЦЕССЕ: [что не дорешали сегодня]
❓ ОТКРЫТЫЕ ВОПРОСЫ: [что нужно разобрать дальше]
🚫 НЕ ДЕЛАТЬ: [что уже проверили и отбросили]

Блок «🚫 НЕ ДЕЛАТЬ» — самый важный: 
он не даст нам повторить ошибочные пути в следующий раз.

🔗

Ресурсы

Self-Compacting Language Model Agents (2026, preprint, под рецензией)

Авторы: Tianjian Li, Jingyu Zhang, William Jurayj, Xi Wang, Chuanyang Jin (Johns Hopkins University), Mehrdad Farajtabar (Apple), Eric Nalisnick, Daniel Khashabi

Контакт: tli104@jhu.edu, danielk@jhu.edu

Связанные работы упомянутые в статье: - ReasoningCache (Wu et al., 2026) — scaffold для сжатия рассуждений - Claude /compact command (Anthropic, 2025) — пользовательский триггер сжатия - Cursor AI compaction (Cursor Research, 2026) — фиксированный порог в IDE


📋 Дайджест исследования

Ключевая суть

Парадокс: сжатие контекста по таймеру хуже, чем вообще не сжимать. Если модель решает «схлопнуться» в середине вывода — она стирает частично проверенные факты и стартует заново с испорченной картиной. SELFCOMPACT даёт возможность модели самой решать когда сжимать — через явный список условий, который называется рубрикой. Фишка: рубрика переводит размытое «пора?» в набор проверяемых вопросов — завершился ли подвопрос, есть ли устоявшиеся факты, не в середине ли ты вывода. Модель выносит вердикт СЖАТИЕ или ПРОДОЛЖАЮ — и сжимает только на завершённых этапах, не в середине.

Принцип работы

Контекст длинного чата не нейтрален. Ошибочное предположение из сообщения №5 тянет рассуждение в сообщении №50 — модель не перечёркивает старые выводы, она на них опирается. Это context rot — гниение контекста. Длинный чат с накопленными ошибками хуже, чем короткий чистый. SELFCOMPACT работает как чекпоинт в игре: не «сохрани всё», а «сохрани только то, что точно доказано». Рабочие гипотезы, тупики, опровергнутые ветки — не входят в чекпоинт. Без рубрики одни модели в тестах сжимали слишком часто и теряли прогресс, другие не сжимали вообще. Рубрика даёт единообразное поведение.

Почему работает

LLM хорошо оценивает своё состояние — но только если дать явные критерии. Вопрос «пора сжать?» — размытый, модель угадывает и угадывает плохо. Вопрос «завершился ли текущий подвопрос полностью?» — конкретный, с конкретным ответом да или нет. Рубрика бьёт в слабое место LLM точечно: заменяет интуицию на чеклист там, где интуиция врёт. Момент сжатия критичнее самого факта сжатия — это главная находка исследования.

Когда применять

Длинные многошаговые задачи: исследование потенциального партнёра, анализ договора по блокам, разбор сложного кейса, написание структурного документа в несколько итераций — особенно когда чат уже длинный и накоплены тупики или устаревшие гипотезы. НЕ подходит для одношаговых запросов — «переведи текст», «суммаризируй статью». Там нет накапливаемого контекста и рубрика просто лишний шум.

Мини-рецепт

1. Вставь рубрику в начало задачи: три вопроса — завершилась ли подзадача полностью, есть ли факты которые больше не изменятся, не в середине ли ты вывода прямо сейчас.
2. Задай два вердикта: СЖАТИЕ (все три условия выполнены одновременно) и ПРОДОЛЖАЮ (хотя бы одно условие не выполнено — продолжай без изменений).
3. Задай формат чекпоинта: блок «УСТАНОВЛЕНО ТОЧНО» — только верифицированные факты. Тупики, рабочие гипотезы, опровергнутые версии — не входят.
4. Попроси модель объяснять вердикт: «напиши почему СЖАТИЕ или ПРОДОЛЖАЮ» — видишь логику и ловишь ошибки суммаризации до того как двинулся дальше.
5. Проверяй блок «УСТАНОВЛЕНО ТОЧНО» вручную перед тем как идти дальше — плохое суммари на чекпоинте хуже его отсутствия.

Примеры

[ПЛОХО] : Исследуй эту компанию по нескольким направлениям. Когда контекст станет длинным — сожми его и продолжай.
[ХОРОШО] : Ты исследуешь компанию поэтапно. После каждого завершённого блока проверь рубрику: — Подвопрос решён полностью? (да/нет) — Есть факты которые больше не изменятся? (да/нет) — Ты завершил этап, а не в середине вывода? (да/нет) Если все три «да» — создай блок: УСТАНОВЛЕНО ТОЧНО: [только подтверждённые факты] ОТКРЫТЫЕ ВОПРОСЫ: [что ещё нужно проверить] Продолжай от этого блока. Если хотя бы одно «нет» — напиши ПРОДОЛЖАЮ и работай дальше без изменений. Первый этап: проверь юридическую историю компании.
Источник: Self-Compacting Language Model Agents
ArXiv ID: 2606.23525 | Сгенерировано: 2026-06-28 21:30

Проблемы LLM

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

Методы

МетодСуть
Рубрика — условия для сжатияПеред каждым сжатием модель проверяет список условий. Все три выполнены сжимай. Хоть одно нет продолжай без изменений. Условия: 1) текущий подвопрос решён полностью; 2) есть факты, которые больше не изменятся; 3) я завершил этап, а не в середине вывода. Почему работает: без явных условий одни модели сжимают слишком часто, другие вообще не сжимают. Список условий убирает угадывание. Синтаксис: условия СЖАТИЯ / условия ПРОДОЛЖЕНИЯ + УСТАНОВЛЕНО / ОТКРЫТЫЕ ВОПРОСЫ. Когда применять: длинные многошаговые задачи с промежуточными итогами. Когда нет: одношаговые запросы — рубрика избыточна
📖 Простыми словами

Self-CompactingLanguageModelAgents

arXiv: 2606.23525

Проблема в том, что длинный чат с нейронкой — это не актив, а балласт. LLM не умеют просто «игнорировать» старые сообщения: каждое слово в истории переписки давит на модель, заставляя её подстраиваться под контекст. Если в пятом сообщении ты или сама модель допустили ошибку или зашли в тупик, к пятидесятому сообщению этот мусор превратится в бетонное основание. Это называют гниением контекста: модель начинает тупить не потому, что она слабая, а потому, что она якорится на собственных старых косяках и тащит их за собой до победного конца.

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

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

Представь, что ты проверяешь бизнес-партнера: сначала копаешь юридическую чистоту, потом финансы, потом отзывы. В обычном чате хвосты от юридической проверки будут мешать анализу отзывов, создавая шум. Но с этим методом модель после каждого этапа делает контрольный срез, удаляет лишнее и переходит к следующему шагу с «чистой головой». Принцип универсален: он спасет любой сложный процесс — от написания кода до планирования путешествия, где накопленные ошибки обычно убивают результат.

Короче: длинный контекст — это не круто, это опасно. Если не чистить историю, модель неизбежно начнет галлюцинировать или выдавать посредственные ответы просто потому, что ей лень продираться сквозь мусор. SELFCOMPACT превращает нейронку из забывчивого профессора в эффективного менеджера, который вовремя выбрасывает черновики. Либо ты заставляешь модель фильтровать базар, либо она рано или поздно начнет кормить тебя чепухой, опираясь на ошибку столетней давности.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с