Перейти к тексту

Claude Code: работа с coding-агентом2. Как устроен coding-агент

Session и context window: модель ничего не помнит

Засчитывается, когда отвечены все вопросы квиза

Зачем это нужно

Вчера вы час объясняли агенту, как в проекте устроены миграции, и он наконец сделал всё правильно. Сегодня вы открываете новую session, просите добавить ещё одну миграцию — и агент снова делает её по-своему. Он не «забыл»: он никогда и не помнил. Пока вы не понимаете, где на самом деле живёт память агента, вы будете повторять одни и те же объяснения и удивляться, почему агент ведёт себя то умно, то беспомощно.

Как это устроено

Context — всё, что модель видит в одном запросе: инструкции, ваши сообщения, прочитанные файлы, вывод команд, результаты tool calls. Документация Claude Code описывает context window именно так: это ваша история разговора, содержимое файлов, вывод команд, CLAUDE.md, auto memory, загруженные skills и системные инструкции.

Context никогда не начинается с нуля. Ещё до вашего первого сообщения Claude Code кладёт в него system prompt со списком tools и правилами работы, ваш CLAUDE.md (вместо него может загружаться AGENTS.md), первые строки auto memory, имена MCP tools и описания skills. Разные harness отправляют модели очень разный объём такого текста, и всё это занимает место ещё до того, как вы что-то попросили.

У context window есть предел — максимальное число токенов, которое модель принимает в одном запросе. Оригинал курса подчёркивает: запрос сверх лимита модель не обработает. Claude Code не даёт до этого дойти: когда context подходит к пределу, он автоматически делает compaction — заменяет историю сжатым пересказом. Пересказ сохраняет ваши запросы и ключевые фрагменты кода, но подробные инструкции из начала разговора могут потеряться.

Session — это и есть накопленная история: несколько turns, в каждом — несколько запросов к модели, и в каждый следующий запрос уходит вся история целиком. Session можно очистить (/clear), сжать (/compact) или оставить и вернуться к ней позже: claude --continue или claude --resume открывают её под тем же session ID и дописывают новые сообщения к старым.

Главное здесь — кто что помнит. Модель stateless: она обрабатывает один запрос и не хранит ничего между запросами. Помнит harness, то есть Claude Code: он сохраняет историю session и каждый раз отправляет её модели целиком. Но и он помнит только в пределах session. Документация говорит прямо: каждая новая session начинается со свежего context window, без истории прошлых sessions.

Состояние, которое переживает всё, лежит в environment: файлы на диске, git, CLAUDE.md. Модель не помнит ничего, harness помнит одну session, environment помнит всегда.

Что переживает /clearМодель не хранит ничего между запросами. Claude Code хранит историю только в пределах session и теряет её после /clear. Файлы, git и CLAUDE.md в environment остаются и попадают в context следующей session.один запрос/clearМодель: statelessClaude Code:история однойsessionНовая session:история пустаEnvironment:файлы, git,CLAUDE.md

Отсюда практика, которую предлагает оригинал курса: по умолчанию считайте агента stateless и сохраняйте важное в кодовую базу. Решение о том, как делать миграции, — в CLAUDE.md или в документ рядом с кодом. План большой задачи — в файл. Тогда /clear ничего не ломает: следующая session прочитает то, что вы записали. Claude Code сам загружает CLAUDE.md в начале каждой session, а auto memory сохраняет заметки, которые Claude делает по ходу работы.

Практика

Откройте Claude Code в любом своём репозитории и выполните /context. Вы увидите цветную сетку использования context window по категориям и список загруженных файлов памяти. Обратите внимание: вы ещё ничего не написали, а место уже занято — это system prompt, tools и ваш CLAUDE.md.

Теперь попросите агента запомнить что-нибудь только в разговоре («в этом проекте тесты запускаем через pnpm test:unit»), выполните /clear и спросите, как запускать тесты. Агент этого не знает. Добавьте ту же строку в CLAUDE.md, снова /clear — и вопрос снимается.

Подводные камни

  • Compaction теряет детали. Правило, которое вы дали в начале длинной session, может не пережить автоматический пересказ. Постоянные правила держите в CLAUDE.md, а не в истории разговора.
  • --continue не бесплатен. Возобновлённая session тянет за собой всю историю — вместе с неудачными попытками и лишними файлами. Если задача новая, новая session почти всегда лучше.
  • Memory system — не первое решение. Оригинал советует относиться к самодельным системам памяти с подозрением: обычно достаточно записать нужное в репозиторий.

Вывод: модель не помнит ничего, Claude Code помнит одну session, а то, что должно жить дольше, записывайте в файлы.

Проверь себя

Источники

Текст подготовлен с помощью LLM и может содержать неточности.