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 помнит всегда.
Отсюда практика, которую предлагает оригинал курса: по умолчанию считайте агента 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, а то, что должно жить дольше, записывайте в файлы.
Проверь себя
Вы выполнили /clear посреди работы. Что из этого агент увидит в новой session?
CLAUDE.md
--continue
/clear
стирает историю, которую хранит harness. Модель stateless и ничего не учит между запросами.
CLAUDE.md
лежит в environment и загружается в начале каждой session.
Вы открыли новую session и ещё ничего не написали. Сколько места занято в context window?
CLAUDE.md
, описания skills
CLAUDE.md
и описания skills. Это видно в
/context
.
Агент наконец сделал миграцию правильно после долгих объяснений. Завтра вы будете делать ещё три таких. Что сделать сейчас?
claude --continue
и продолжить тот же разговор
CLAUDE.md
или в документ в репозитории
Длинная session подошла к пределу context window. Что сделает Claude Code?
CLAUDE.md
.
Источники
- Anthropic, How Claude Code works
- Anthropic, Explore the context window
- Anthropic, Commands
- По мотивам AI Coding Crash Course, AI Hero
Текст подготовлен с помощью LLM и может содержать неточности.