Перейти к основному содержимому

Понимание контекста и управление сеансами в Claude Code

Если вы пользуетесь Claude Code достаточно долго, вы наверняка замечали: чем дольше длится сеанс, тем медленнее становятся ответы. Дело не в том, что ИИ деградирует — настоящая причина в разрастании контекста (context bloat). Вот что происходит за кулисами и что с этим можно сделать.

1. Что на самом деле означает «контекст»

В терминах ИИ контекст — это просто набор информации, с которым модель работает при ответе на ваш запрос. Современные большие языковые модели (LLM) являются бессервисными общими сервисами — они не хранят никакой встроенной памяти о вас или вашем проекте между вызовами.

На практике это означает следующее: каждый раз, когда вы отправляете сообщение, Claude Code должен собрать ваш текущий запрос вместе со всей историей разговора и отправить всё это модели. Чем длиннее история, тем тяжелее каждый пакет данных.

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

2. Почему одно только сжатие вас не спасёт

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

  • Это дорого. Сам процесс сжатия обычно съедает 20% и более бюджета входных токенов. При работе с большой кодовой базой это значительная часть времени и затрат, которые уходят на суммирование вместо реальной работы.
  • Он ошибается при смене направления. Сжатие предсказывает, что будет актуально, на основе предыдущего контекста — это не настоящая смена задачи. Если вы внезапно переключаетесь на совершенно другую задачу в середине сеанса (скажем, с переписывания API-маршрутов на исправление выравнивания кнопок), сжатое резюме всё ещё тянет за собой устаревшие предположения, и модель начинает путаться.

3. Решение: одна задача — один сеанс

Принцип предельно прост: давайте ИИ одну задачу за раз. Deep Code делает это легко с помощью двух команд:

Ввод команды /clear для начала новой задачи
  • /clear — начать с чистого листа. Эта команда очищает текущий разговор и открывает новый сеанс. Никакой накопленной истории, никаких устаревших ссылок на файлы — ИИ сосредоточен исключительно на том, что перед ним прямо сейчас.
Ввод команды /resume для просмотра прошлых сеансов
  • /resume — продолжить с того места, где остановились. Нужно вернуться к вчерашнему сеансу рефакторинга? /resume выводит список всех прошлых сеансов для проекта, каждый с кратким однострочным описанием. Перемещайтесь стрелками, нажмите Enter на нужном сеансе или ESC, чтобы выйти.

Итоги

Вот что мы рассмотрели:

  • Контекст — это ваша история разговора — и она отправляется модели с каждым сообщением. Чем длиннее сеанс, тем тяжелее пакет данных и тем медленнее ответы.
  • Автоматическое сжатие помогает, но не является панацеей. Оно расходует токены на суммирование и с трудом справляется при переключении задач в середине сеанса.
  • Решение простое: одна задача — один сеанс. Используйте /clear, чтобы очистить историю и начать заново. Используйте /resume, чтобы вернуться к предыдущему сеансу, когда нужно продолжить с того места, где вы остановились.

Тем не менее, у /resume есть свои недостатки — вы получаете только однострочное описание для каждого сеанса, нет возможности просмотреть содержание разговора перед восстановлением, а переключение между сеансами неудобно. Если вы сталкиваетесь с этими ограничениями, обратите внимание на панель истории задач — визуальный интерфейс, который позволяет просматривать полные истории разговоров, копировать сообщения и переключаться между задачами одним нажатием.