3,583 papers
arXiv:2608.22752 71 24 авг. 2026 г. FREE

Compaction Cliff: почему AI-агент забывает правила безопасности при долгой работе

КЛЮЧЕВАЯ СУТЬ
После пяти раундов сжатия истории выживает только 10% правил безопасности — а начиналось со 100%. Метод показывает как формулировать правило, чтобы оно не растворилось в истории при автоматическом сжатии контекста. Правило теряется не из-за длины текста, а из-за формулировки — если написано как факт ('у клиента аллергия на пенициллин'), модель сжимает его вместе с фоновым мусором. Если как приказ с явным маркером ('никогда не...') — распознаёт как критичное и сохраняет буквально.
Адаптировать под запрос

TL;DR

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

Авторы измерили это на реальных агентах: после одного раунда сжатия выживает 53% правил, после пяти раундов — всего 10%. Причина в формулировке: правила безопасности в реальности чаще пишут не как приказ ("никогда не делай X"), а как обычный факт ("у пациента аллергия на пенициллин") — и именно такие факты модель не распознаёт как что-то критичное, поэтому пересказывает их вместе с остальным мусором, теряя нужную формулировку.

Решение авторов — Knowledge Triage: перед сжатием классифицировать каждый кусок памяти на один из 5 типов (правило, процедура, факт, предпочтение, эпизод) и сжимать каждый тип по своей политике: правила — без искажений, процедуры — можно переписать если логика сохраняется, факты и предпочтения — можно сжимать, эпизоды — можно выбросить целиком.


🔬

Схема метода

ШАГ 1: Классификатор читает каждый элемент памяти → метка типа
        (Правило / Процедура / Факт / Предпочтение / Эпизод)

ШАГ 2: Применяется операция под тип:
        - Сжатие → правила не трогать, эпизоды сократить до заглушки
        - Разбиение на части → правило дублируется во все части, где оно действует
        - Поиск во внешней памяти → правило подтягивается первым, независимо от релевантности

ШАГ 3: Верификатор проверяет — все ли правила выжили → 
        если нет, помечает результат как небезопасный и восстанавливает потерянное

Это инженерная система (классификатор + алгоритмы), работающая на уровне кода. Но принцип, который из неё можно выдернуть в обычный чат — ниже.


🚀

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

Задача: Предприниматель настроил кастомного GPT-ассистента для проверки договоров с системной инструкцией: "Клиент — ИП на упрощёнке, никогда не предлагай схемы с вычетом НДС". После 40-50 сообщений в чате (обсуждение разных договоров, вопросов, правок) ассистент начинает предлагать схемы с НДС — правило "потерялось" где-то в истории.

Что делать вместо надежды, что модель "запомнит":

В начале диалога:

ПРАВИЛО [НЕ ИЗМЕНЯТЬ, СОХРАНЯТЬ БУКВАЛЬНО]: 
Клиент — ИП на УСН. Никогда не предлагай и не упоминай схемы 
с вычетом НДС ни в каком виде.

---

Каждые 15-20 сообщений (или перед тем как попросить сжать историю):

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

Результат: Модель либо подтвердит правило точной формулировкой (значит помнит), либо ошибётся — и вы сразу увидите, что пора закрепить его снова. Это не даёт 100% гарантии (в чате нет верификатора из статьи), но резко снижает шанс, что правило "размылось" в общей истории разговора.


🧠

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

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

Обычные факты и правила, сформулированные как факт ("у клиента упрощёнка"), не несут такого сигнала — модель не отличает их от фонового контекста и сжимает вместе со всем остальным.

Рычаги управления: - Формулировка правила (декларативная → императивная с маркером "НЕ ИЗМЕНЯТЬ") — резко повышает шанс, что модель распознает его как критичное при любом сжатии. - Периодическое напоминание — просите модель повторить правило раз в N сообщений, это работает как ручная проверка вместо автоматического верификатора из статьи. - Явное разделение при запросе суммаризации — указывайте отдельно, что сохранить дословно, что можно пересказать.


📋

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

В начале длинного диалога / при настройке ассистента:

ПРАВИЛО [КРИТИЧНО, СОХРАНЯТЬ БУКВАЛЬНО, НЕ ПЕРЕФОРМУЛИРОВАТЬ]:
{текст правила, сформулированный как запрет: "никогда не..."}

Остальная информация в этом диалоге (детали задачи, предпочтения, 
история обсуждения) может быть сжата или пересказана своими словами 
при необходимости.

---

Перед сжатием контекста или просьбой "подведи итог диалога":

Прежде чем сжимать историю разговора, повтори мне слово в слово 
все правила, отмеченные как КРИТИЧНО, которые действуют в этом 
диалоге. Остальное можешь сжать.

Подставляй в {текст правила} — реальный запрет или ограничение для конкретной задачи (юридическое, медицинское, финансовое или любое другое, где ошибка дорого стоит).

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

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

Модель уточнит, что за правило и в каком контексте оно работает — потому что от этого зависит, насколько жёсткую формулировку и как часто напоминать.


⚠️

Ограничения

⚠️ Это не готовый промпт-инструмент, а диагностика проблемы. Полноценный Knowledge Triage — это классификатор, верификатор и алгоритмы на коде. В обычном чате доступен только принцип: явная формулировка + периодическое напоминание, без гарантий, которые даёт система из статьи.

⚠️ Не работает, если сжатие происходит незаметно и вы не контролируете момент. Если это встроенная автофункция агента (как /compact в Claude Code), у вас нет доступа к моменту сжатия — единственное что остаётся, это профилактика через явную формулировку правил заранее.

⚠️ Метод не спасает от накопленной ошибки. Даже с чёткой формулировкой правило может "стереться" за много раундов сжатия — метод снижает риск, но не убирает его полностью в ручном режиме без верификатора.


🔗

Ресурсы

The Compaction Cliff in Long-Running AI Agent Memory, Saber Zerhoudi, Jelena Mitrović, Michael Granitzer (University of Passau, IT:U Linz), CIKM'26. Датасет AgentArtifactCorpus (396,934 артефакта из 54,628 репозиториев на GitHub) на HuggingFace, код на GitHub (searchsim-org/cikm26-knowledge-triage).


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

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

После пяти раундов сжатия истории выживает только 10% правил безопасности — а начиналось со 100%. Метод показывает как формулировать правило, чтобы оно не растворилось в истории при автоматическом сжатии контекста. Правило теряется не из-за длины текста, а из-за формулировки — если написано как факт ('у клиента аллергия на пенициллин'), модель сжимает его вместе с фоновым мусором. Если как приказ с явным маркером ('никогда не...') — распознаёт как критичное и сохраняет буквально.

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

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

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

Модель хуже видит середину длинного текста — внимание размазывается по всей истории, и сжатие первым делом срезает то, что не выглядит как явная команда. 53% правил выживают после одного раунда сжатия, 10% — после пяти. Причина не в объёме текста, а в том что правила в реальности чаще пишут как факт, а не как запрет — и факт для модели выглядит как обычный фон, который можно пересказать своими словами.

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

Длинные рабочие диалоги с AI-агентом → критичные ограничения (юридические, медицинские, финансовые), которые нельзя нарушить после 40+ сообщений. НЕ подходит для коротких диалогов до 10-15 сообщений — там сжатие ещё не срабатывает, риска нет.

Мини-рецепт

1. Переформулируй правило как приказ: не 'у клиента упрощёнка', а 'никогда не предлагай схемы с НДС'
2. Добавь маркер критичности: оберни фразой 'ПРАВИЛО [НЕ ИЗМЕНЯТЬ, СОХРАНЯТЬ БУКВАЛЬНО]'
3. Проверяй раз в 15-20 сообщений: попроси модель повторить правило слово в слово
4. Разделяй явно при запросе сжатия: укажи что сохранить буквально, а что можно пересказать своими словами

Примеры

[ПЛОХО] : Клиент — ИП на упрощёнке (после 45 сообщений модель забыла контекст и предложила схему с вычетом НДС)
[ХОРОШО] : ПРАВИЛО [КРИТИЧНО, НЕ ПЕРЕФОРМУЛИРОВАТЬ]: Клиент — ИП на УСН. Никогда не предлагай и не упоминай схемы с вычетом НДС. — и каждые 20 сообщений: Повтори правило, отмеченное как КРИТИЧНО, слово в слово, прежде чем мы продолжим
Источник: The Compaction Cliff in Long-Running AI Agent Memory
ArXiv ID: 2608.22752 | Сгенерировано: 2026-08-25 05:26
📖 Простыми словами

The Compaction Cliff in Long-RunningAIAgentMemory

arXiv: 2608.22752

Когда диалог с AI-агентом затягивается, его контекст переполняется, и система включает сжатие памяти. Она просто пересказывает старые сообщения своими словами, чтобы освободить место под новые. И вот тут кроется главная засада: алгоритм сжатия уравнивает жесткие правила безопасности и обычный фоновый трёп. Для него факт «погода хорошая» и запрет «никогда не делай X» имеют одинаковый вес.

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

В реальности уже через 40–50 сообщений наступает обрыв сжатия (compaction cliff). Ассистент напрочь забывает установку вроде «клиент на упрощёнке, никакого НДС» и начинает выдавать опасную ерунду. Чтобы правила выживали при чистке памяти, критически важны императивные маркеры («строго запрещено», «критично») и разделение контекста: базовые инструкции обязаны лежать в неприкасаемом буфере, который вообще нельзя ужимать.

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

Короче: никогда не позволяй модели сжимать правила собственной безопасности. Инструкции и история диалога должны жить раздельно. Либо ты жестко защищаешь системные ограничения, либо твой умный ассистент через 50 реплик начнёт сливать клиентов и нарушать собственные регламенты.

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

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

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