# /compact в Claude Code: как работает сжатие контекста

# /compact в Claude Code: как работает сжатие контекста

> Как использовать /compact в Claude Code: что переживает compaction, что теряется, как сохранить CLAUDE.md, skills и важный контекст.

Source: https://okhlopkov.com/claude-code-compaction-kak-rabotaet/

У Claude Code есть скрытая механика, о которой мало кто задумывается, пока не потеряет из-за неё час работы. Compaction — автоматическое сжатие контекста, когда разговор подходит к лимиту токенов. Я столкнулся с этим, когда мой агент на 200-й минуте сессии "забыл" критическое правило из начала диалога. Стал разбираться — и вот что выяснил. Коротко: как использовать /compact в Claude Code /compact сжимает длинную историю сессии в структурированное summary, чтобы разговор снова помещался в context window. После этого Claude Code заново подгружает часть стартового контекста с диска. Главное: корневой CLAUDE.md переживает compaction , а старые решения, nested CLAUDE.md , path-specific rules, skills и тонкие предпочтения могут быть сжаты, обрезаны или потеряны. Поэтому важные правила надо держать не в начале длинного чата, а в durable файлах: CLAUDE.md , skills, задачах, заметках проекта. Что такое compaction и зачем оно нужно Claude Code работает в терминале и ведёт длинные сессии. В отличие от ChatGPT, где каждое сообщение — отдельный запрос, Claude Code накапливает контекст: файлы, которые прочитал, команды, которые выполнил, результаты grep и diff. Всё это складывается в один огромный промпт. Проблема: у моделей есть лимит контекстного окна. У Claude Sonnet — 200K токенов, у Opus — до 1M. Но даже миллион токенов заканчивается, если агент активно работает с кодовой базой. Compaction — это механизм, который сжимает историю разговора, когда контекст приближается к ~95% лимита. По сути, Claude Code берёт всю текущую беседу, отправляет её в отдельный вызов модели с промптом "сожми это в ключевые факты" и заменяет полную историю на сжатое саммари. Ты этого не видишь — просто в какой-то момент агент начинает работать с "памятью" о прошлом, а не с полной записью. Что сохраняется, а что теряется По моему опыту, compaction хорошо сохраняет: Текущую задачу и её контекст — над чем работаем прямо сейчас Имена файлов, которые недавно редактировались Последние ошибки и их решения Общую архитектуру проекта А вот что регулярно теряется: Инструкции из начала сессии — "не трогай этот файл", "используй такой формат" Промежуточные решения — почему выбрали подход А вместо Б Конкретные code snippets, которые обсуждались 50 сообщений назад Тонкие стилистические правила — "не добавляй emoji", "пиши без Co-Authored-By" Это логично: compaction оптимизирует под "что делать дальше", а не "почему мы делали то, что делали". Контекст принятия решений — первая жертва сжатия. Кастомный compaction prompt Claude Code позволяет переопределить промпт сжатия. Это, мб, самая недооценённая настройка. В settings.json (путь: ~/.claude/settings.json ) есть параметр: { "compactPrompt": "Preserve ALL rules from CLAUDE.md verbatim. Keep file paths, error messages, and architectural decisions. Summarize tool outputs but keep their conclusions." } Я тестировал разные варианты. Дефолтный промпт — generic "summarize the conversation". Он нормально работает для коротких сессий, но для агентов, которые крутятся часами, нужно быть точнее. Мой текущий вариант: { "compactPrompt": "When compacting, you MUST preserve:\n1. All rules and constraints from CLAUDE.md and system prompt — copy them verbatim\n2. Current task context and progress\n3. File paths that were modified\n4. Specific error messages and their solutions\n5. User corrections and preferences stated during the session\n\nYou MAY summarize:\n- Tool call outputs (keep conclusions, drop raw output)\n- File contents that were read (keep what was learned, drop the text)\n- Exploratory steps that led nowhere" } Разница заметна. После переключения на кастомный промпт мои агенты перестали "забывать" правила из CLAUDE.md в длинных сессиях. CLAUDE.md vs compaction: что куда класть Главный инсайт, который я вынес за три месяца: не полагайся на compaction для критических правил . Всё, что агент обязан помнить всегда, должно жить в CLAUDE.md. CLAUDE.md загружается в каждую сессию как системный промпт. Compaction его не трогает — он вне истории разговора. Это единственное место, которое гарантированно переживёт любое сжатие. Моя стратегия: CLAUDE.md — архитектурные правила, стиль кода, запреты, credential paths, naming conventions. Всё, что актуально для любой сессии Контекст разговора — текущая задача, промежуточные результаты, обсуждения. Это ок потерять при compaction Файлы в проекте — TODO.md, ARCHITECTURE.md, notes. Агент может их перечитать, если compaction потёр контекст Правило: если ты ловишь себя на том, что повторяешь одну и ту же инструкцию агенту — вынеси её в CLAUDE.md. Это не для compaction, это для тебя. Как понять, что compaction произошёл В терминале Claude Code показывает компактный индикатор — строку вроде [context compacted] . Но если ты отвлёкся, легко пропустить. Более надёжный способ — следить за cost counter в правом нижнем углу. Резкий скачок стоимости (compaction — это отдельный API call) + сброс счётчика контекста = compaction только что случился. Ещё один признак: агент начинает переспрашивать вещи, которые вы уже обсуждали. "В каком файле находится конфиг?" — хотя вы этот файл редактировали 20 минут назад. Это верный сигнал, что контекст сжался и детали потерялись. Когда compaction создаёт проблемы Реальный кейс из моей практики. У меня есть server-agent — Claude Code, который крутится 24/7 на VPS и отвечает в Telegram. Агент получает сообщение, обрабатывает, ждёт следующее. Сессия может длиться часами. Проблема: после compaction агент "забывал" access control rules. У меня есть матрица доступа — какие файлы можно читать из какого чата. Эти правила были в начале промпта, но после сжатия модель их теряла и начинала отвечать на запросы, которые должна была блокировать. Решение: я перенёс все security rules в CLAUDE.md (точнее, в CLAUDE.local.md, который загружается поверх основного). Теперь они в системном промпте, а не в истории — compaction их не затрагивает. Практические советы ■ Настрой compactPrompt под свой workflow. Если работаешь с данными — проси сохранять SQL queries. Если пишешь статьи — проси сохранять стилистические правила ■ Держи сессии короткими , если задача позволяет. Новая сессия = чистый контекст + полный CLAUDE.md. Иногда лучше, чем длинная сессия с двумя compactions ■ Используй файлы как внешнюю память. Попроси агента записать ключевые решения в TODO.md или NOTES.md в проекте. После compaction он сможет их перечитать ■ CLAUDE.md — для всего критического. Правила, которые должны работать всегда — только туда. Не надейся, что compaction их сохранит. Подробнее о настройке CLAUDE.md я писал в гайде по настройке Claude Code ■ Тестируй compaction намеренно. Запусти длинную сессию, дождись сжатия, проверь — помнит ли агент правила из начала. Это сэкономит часы дебага потом Compaction — не баг, это необходимый компромисс. Контекстные окна растут, но пока они конечны, сжатие будет частью работы с AI-агентами. Лучше понимать, как оно работает, чем удивляться, когда агент "забудет" важное правило на 200-й минуте. Что переживает /compact Источник контекста Что происходит после compaction System prompt / output style Остаётся Корневой CLAUDE.md Заново читается и возвращается в сессию Nested CLAUDE.md Подгружается, когда Claude снова читает файлы в нужной директории История разговора Заменяется summary Skills Могут быть перенесены, но ограничены budget и могут обрезаться MCP/tool outputs Обычно остаются только выводы, не полный сырой output Когда запускать /compact вручную Лучший момент — граница между задачами: закончил debug, смержил PR, собрал план и переходишь к реализации. Хуже всего — ждать auto-compaction посреди сложной задачи. Если ты понял, что пошёл не туда, лучше использовать rewind/откат к более раннему состоянию, а не compact: compaction сохранит summary плохой ветки, а rewind её отбросит. PreCompact и PostCompact hooks В Claude Code есть события hooks вокруг сжатия: PreCompact и PostCompact . Для long-running агентов это можно использовать как страховку: перед compact записывать checkpoint с текущей задачей, изменёнными файлами, тестами, ограничениями пользователя и открытыми вопросами.

