$ sudo teach IT

Реальная работа редко укладывается в один заход. Вы разбирали сложный баг, ушли на созвон, вернулись — и обнаружили, что закрыли терминал. Или ведёте параллельно две задачи и каждый раз переключаетесь между ними, пересказывая агенту, на чём остановились. Или собираетесь попробовать рискованный подход и боитесь испортить разговор, в котором уже накоплено полезное понимание.

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

Что уже умеем / что добавим

Вы умеете управлять контекстом внутри одного разговора: измерять его через /context, очищать через /clear, сжимать через /compact. Теперь поднимемся уровнем выше — к самим разговорам: как их находить, возобновлять, называть и ветвить.

Что вы узнаете в рамках статьи

  • Как устроены сессии и где Claude Code их хранит
  • Чем claude --continue отличается от claude --resume
  • Как пользоваться выбором сессий и его горячими клавишами
  • Зачем называть сессии и как возобновлять их по имени
  • Как ответвить разговор через /branch и чем это отличается от возврата

Ключевые термины

  • Сессия — сохранённый разговор, привязанный к рабочей директории. Записывается на диск по мере работы.
  • claude --continue — запуск с возобновлением последней интерактивной сессии в текущей директории.
  • claude --resume — запуск с открытием выбора сессий; с аргументом возобновляет сессию по имени или идентификатору.
  • /resume — та же операция изнутри активной сессии: переключение на другой разговор.
  • /branch — создание копии текущего разговора в этой точке с переключением в неё; оригинал остаётся нетронутым.
  • /rename — присвоение имени текущей сессии, чтобы находить и возобновлять её по нему.

Где живут сессии и что восстанавливается

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

Хранятся сессии в формате JSONL по пути ~/.claude/projects/<проект>/<идентификатор-сессии>.jsonl, где <проект> — путь вашей рабочей директории с заменёнными на дефис символами. Знать это наизусть не нужно, но полезно понимать: сессии привязаны к директории, и в другом проекте вы своих разговоров по умолчанию не увидите.

При возобновлении восстанавливается не только переписка:

  • История разговора целиком, вместе с вызовами инструментов и их результатами.
  • Модель, на которой сессия работала.
  • Режим разрешений, в котором она находилась, — с рядом исключений, зависящих от способа возобновления.

Восстанавливается не всё. Настройки, переданные флагами при первом запуске, при возобновлении нужно передавать снова — например, дополнительные директории, добавленные через --add-dir. А вот обычные файлы настроек перечитываются при запуске, поэтому их передавать не требуется.

Два способа вернуться

Различие простое: --continue не спрашивает, --resume спрашивает.

# Вернуться к последней сессии в этой директории — без вопросов
claude --continue

# Открыть список сессий и выбрать нужную
claude --resume

# Сразу открыть сессию по имени
claude --resume auth-refactor
  • -continue подходит, когда вы работаете над одной задачей и просто продолжаете вчерашнее. Команда возьмёт самую свежую интерактивную сессию текущей директории.
  • -resume нужен, когда сессий несколько. Без аргумента открывается интерактивный выбор; с аргументом — сразу возобновляется сессия с таким именем или идентификатором.

Изнутри активной сессии работает /resume: он переключает вас на другой разговор, не выходя в терминал.

# Внутри сессии: открыть список и переключиться
> /resume

# Внутри сессии: переключиться сразу на нужную
> /resume payments-fix

Одна оговорка про /resume: если имя совпадает более чем с одной сессией, команда сообщит об ошибке — тогда вызовите её без аргумента и выберите вручную.

Выбор сессий и горячие клавиши

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

Полезные клавиши:

  • Стрелки вверх и вниз — перемещение по списку, Enter — возобновить выбранную.
  • Пробел — предпросмотр содержимого сессии, не открывая её.
  • Ctrl+R — переименовать выделенную сессию прямо из списка.
  • Ctrl+B — показать только сессии текущей ветки git.
  • Ctrl+W — расширить список на все рабочие деревья репозитория.
  • Ctrl+A — показать сессии всех проектов на этой машине.
  • Любой печатный символ или / — режим поиска по списку.
  • Esc — выйти из поиска или из выбора.

Ctrl+B стоит запомнить отдельно: если вы ведёте задачи по веткам, фильтр по текущей ветке мгновенно отсекает всё постороннее.

Имена вместо угадывания

Без имени сессия получает автоматически сгенерированный заголовок — короткую сводку вашего первого сообщения. Это лучше, чем ничего, но в списке из десяти похожих заголовков искать неудобно.

Назвать сессию можно в трёх местах:

# При запуске
claude -n auth-refactor

# Внутри сессии
> /rename auth-refactor

# Из списка сессий — клавишей Ctrl+R

Имя появляется на строке приглашения и позволяет возвращаться напрямую: claude --resume auth-refactor. Практика, которая себя оправдывает: относиться к сессиям как к веткам и давать имя каждой рабочей линии сразу при старте. Тогда переключение между задачами стоит одной команды, а не разглядывания списка.

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

Ответвление разговора

/branch решает задачу, которая возникает регулярно: у вас есть разговор с накопленным пониманием задачи, и вы хотите попробовать альтернативный подход, не рискуя тем, что есть.

> /branch try-streaming-approach

Команда копирует разговор до текущей точки и переключает вас в копию. Оригинал остаётся на диске без изменений и виден в списке сессий — вернуться к нему можно через /resume по имени или идентификатору. В подтверждении Claude Code печатает оба идентификатора: новой ветки и оригинала. Если имя не указать, ветка будет названа по первому сообщению разговора.

Из командной строки то же самое делается сочетанием флагов:

claude --continue --fork-session

Разница между двумя способами есть, и она практическая. /branch копирует запись разговора и переключает текущий процесс на неё, поэтому разрешения, выданные «на эту сессию», продолжают действовать. Форк через --fork-session запускает отдельный процесс, который стартует без этих разрешений, и подтверждать их придётся заново.

Сравните с тем, что вы уже знаете: --continue и --resume продолжают ту же сессию, дописывая сообщения в существующий разговор. /branch и --fork-session создают новый разговор с собственным идентификатором, оставляя исходный нетронутым. Первое — продолжение, второе — развилка.

Частые ошибки

  • Начинать новую сессию вместо возобновления вчерашней. Заново объяснять контекст задачи дороже, чем набрать claude --continue. Разговоры сохраняются автоматически, терять их незачем.
  • Не называть сессии. Через неделю список автоматических заголовков становится нечитаемым. Имя, заданное сразу через n или /rename, экономит время при каждом возврате.
  • Искать сессию не в той директории. Сессии привязаны к рабочей директории, и по умолчанию список показывает только текущее рабочее дерево. Расширьте область клавишей Ctrl+W или Ctrl+A.
  • Путать ветвление с возобновлением. /branch создаёт копию с новым идентификатором, а -continue продолжает существующую сессию. Если нужен эксперимент без риска — это ветвление, а не продолжение.

Наиболее частые вопросы

  • Нужно ли что-то делать перед закрытием терминала? — Нет. Сессия пишется на диск непрерывно, поэтому специально сохранять её не требуется.
  • Можно ли открыть одну сессию в двух терминалах? — Технически да, но без ветвления сообщения из обоих смешаются в одну запись. Для параллельной работы используйте ветвление.
  • Что происходит с оригиналом после /branch? — Ничего. Он остаётся на диске без изменений и доступен в списке сессий как отдельная строка.
  • Как найти сессию, начатую в другом проекте? — Откройте выбор сессий и нажмите Ctrl+A, чтобы показать сессии всех проектов на машине.
  • Возобновится ли сессия на той же модели? — Как правило, да: сессия продолжается на модели, с которой работала, если только вы не укажете другую флагом при запуске.

Итоги

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

Теперь у нас есть всё для следующего шага. Мы не раз говорили, что постоянные правила проекта должны жить в файле, а не в переписке. В следующем уроке мы наконец займёмся этим файлом вплотную: запустим /init, посмотрим, что Claude Code сгенерирует сам, и разберём, что стоит записать в CLAUDE.md, а что только навредит.

На следующий урок