Реальная работа редко укладывается в один заход. Вы разбирали сложный баг, ушли на созвон, вернулись — и обнаружили, что закрыли терминал. Или ведёте параллельно две задачи и каждый раз переключаетесь между ними, пересказывая агенту, на чём остановились. Или собираетесь попробовать рискованный подход и боитесь испортить разговор, в котором уже накоплено полезное понимание.
Все три ситуации решаются одним набором инструментов. 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, а что только навредит.