Контрольные точки и откат
- Понять, что фиксирует контрольная точка — и чего она молча не фиксирует
- Открывать меню отката двумя способами и каждый раз выбирать правильное действие восстановления
- Отличать «restore» (отмена состояния) от «summarize» (сжатие контекста)
- Точно знать, почему контрольные точки дополняют Git, но никогда не заменяют его
Главная идея
Когда вы отпускаете Claude на амбициозное, масштабное изменение, самый страшный вопрос — «а что, если всё пойдёт не так на третьей правке?» Ответ — контрольные точки (checkpointing): Claude Code автоматически делает снимок вашего кода перед каждым ходом, который вы запускаете, и вы можете откатиться к любому прежнему состоянию, а не вручную распутывать недоделанный рефакторинг.
Считайте это локальной отменой для всей сессии — страховочной сеткой, которая позволяет без страха сказать: «да, пробуй смелый подход».
Как создаются контрольные точки
Вы не создаёте контрольные точки — они появляются автоматически.
- Каждый запрос, который начинает ход, фиксирует состояние вашего кода до запуска инструментов редактирования файлов Claude. Ни команд, ни настроек, ни церемоний.
- Claude Code хранит снимки файлов для 100 самых свежих контрольных точек сессии. Более старые удаляются, поэтому очень длинную сессию нельзя откатить до самого начала.
- Контрольные точки сохраняются вместе с разговором, поэтому /rewind можно запустить и после возобновления сессии, а не только в текущей.
- Снимки файлов сессии удаляются при плановой очистке — по умолчанию примерно через 30 дней после того, как сессия в последний раз сохраняла снимок. Откат к контрольной точке, снимков которой уже нет, завершается ошибкой 'No files were restored' — увеличьте cleanupPeriodDays, чтобы хранить их дольше.
Как открыть меню отката
Есть два способа:
- Введите слэш-команду в строке запроса. Работает всегда. /checkpoint и /undo — псевдонимы той же команды, так что используйте то имя, которое первым приходит в голову.
- Двойное нажатие Esc открывает меню отката, когда поле запроса пустое. Если в нём есть текст, двойной Esc вместо этого очищает его (очищенный текст сохраняется в истории ввода, поэтому нажмите «Вверх», чтобы вернуть его).
Открыть меню отката
/rewind
- Названия-псевдонимы дружелюбнее, чем буквальны: /checkpoint не делает снимок по требованию (снимки создаются автоматически), а /undo сама по себе не отменяет последнюю правку. Все три имени открывают одно и то же меню, где точку и действие вы по-прежнему выбираете сами.
Меню перечисляет каждый запрос, отправленный в этой сессии. Выберите точку, с которой хотите работать, а затем одно действие.
Restore и summarize: ключевое различие
Именно здесь путаются. Меню предлагает два вида действий:
- Действия Restore меняют состояние на диске и/или в разговоре — они отменяют.
- Действия Summarize никогда не трогают ваши файлы — они сжимают разговор, чтобы освободить место в окне контекста.
- Restore = отмена (возвращает код, разговор или и то и другое). Summarize = сжатие контекста (файлы на диске не затрагиваются).
- Используйте restore, когда правка что-то сломала. Используйте summarize, когда сессия раздулась, но с кодом всё в порядке.
Действия восстановления
- Возвращает и ваши файлы, и историю чата к выбранной точке — чистая «перемотка времени» к этому моменту.
- Откатывает чат к этому сообщению, но сохраняет ваш текущий код. Полезно, чтобы задать вопрос заново, не потеряв правки, которые вы хотите оставить.
- Откатывает изменения файлов, но сохраняет разговор. Отменяете правки, сохраняя обсуждение.
Две опции восстановления кода появляются, только если у выбранной контрольной точки действительно есть отслеживаемые изменения файлов для отката. Если после этой точки правок файлов не зафиксировано, меню предлагает лишь Restore conversation, два варианта summarize и Never mind (возвращает к списку сообщений без каких-либо изменений).
После восстановления разговора (или выбора «Summarize from here») исходный запрос выбранного сообщения возвращается в поле ввода, чтобы вы могли отправить его снова или отредактировать.
Действия summarize
Оба сжимают часть разговора в сгенерированное ИИ резюме — как точечный /compact, где вы выбираете, какую сторону от выбранного сообщения сжать.
- Сообщения ДО выбранного остаются нетронутыми. Выбранное сообщение и всё после него превращаются в резюме. Используйте, чтобы отбросить побочное обсуждение, сохранив ранний контекст во всех подробностях.
- Сообщения ДО выбранного превращаются в резюме; выбранное сообщение и всё после него остаются нетронутыми. Вы остаётесь в конце разговора. Используйте, чтобы сжать ранние вводные разговоры, сохранив недавнюю работу дословно.
В обоих случаях исходные сообщения остаются в журнале сессии, так что Claude по-прежнему может обращаться к деталям, а на месте сжатых сообщений появляется метка Summarized conversation. Чтобы направить резюме, выделите стрелками вариант Summarize и введите инструкции там, где в строке написано add context (optional), затем нажмите Enter — выбор варианта цифровой клавишей запускает сжатие сразу, без инструкций.
Весь процесс описан в разделе Управление контекстом — действия summarize в /rewind это скальпель, тогда как /compact — широкая кисть.
- Summarize оставляет вас в той же сессии. Чтобы ответвиться и попробовать другой подход, не трогая исходную сессию, используйте /branch или claude --continue --fork-session.
Откат за пределы /clear
Если ранее в том же процессе Claude Code вы выполняли /clear, меню отката показывает дополнительную запись сверху: /resume <session-id> (previous session). Выберите её, чтобы вернуться к разговору, который был активен до /clear.
Где контрольные точки заканчиваются — ограничения, которые бьют больнее всего
Контрольные точки кажутся волшебством, пока не перестают им быть. Эти пробелы важны:
- Отслеживание ведётся по файлам, и файл попадает в него только тогда, когда Claude правит его своими инструментами редактирования файлов. После этого /rewind отменяет и то, что команды Bash делают с этим же файлом потом: форматтер или генератор, переписавший уже правленный файл, откатывается. Файл, которого касался только Bash, не отслеживается и остаётся как есть, поэтому файл, удалённый через rm и никогда не правленный Claude, требует Git. Меню это отражает: под каждым запросом оно считает изменения файлов, которые Claude уже правил, независимо от того, чем они вызваны.
- Субагент правит теми же файловыми инструментами, но ваша сессия обычно не фиксирует эти правки. Исключение — форкнутый навык на переднем плане (context: fork с background: false): он правит во время вашего собственного хода и откатывается как обычно. При любом другом субагенте — включая форкнутый навык в фоне (он по умолчанию) и фоновый запуск /code-review --fix — откат восстанавливает только те файлы, которые Claude уже правил в вашем разговоре; правки субагента в остальных файлах остаются, поэтому отменяйте их через Git. См. /docs/claude-code/subagents.
- Ручные правки, сделанные вне Claude Code, и правки из других параллельных сессий, как правило, не фиксируются — если только они случайно не затрагивают те же файлы, что правила текущая сессия.
- Сообщение, которое вы поставили в очередь, пока Claude работает, и которое дошло до него в рамках текущего хода, присоединяется к этому ходу вместо запуска нового, поэтому собственной контрольной точки у него нет — меню отката помечает его как «No code restore». Чтобы отменить последовавшее за ним, откатитесь к запросу, начавшему ход: это откатит весь ход, включая работу, сделанную до того, как пришло ваше сообщение. Если выбрать само помеченное сообщение, по-прежнему доступно Restore conversation, а ваши файлы остаются как есть.
- Claude Code сохраняет перемотанный разговор вместе со следующим промптом, который вы отправляете, — поэтому если выйти, не отправив его, отмотанные сообщения вернутся при возобновлении сессии. Отправьте Claude промпт перед выходом, чтобы восстановление закрепилось; чтобы позже снова убрать вернувшиеся сообщения, выполните /rewind, выберите тот же промпт и нажмите Restore conversation. Файлы, которые вы восстановили, в любом случае остаются в том состоянии, в каком их оставила перемотка, так что это касается только разговора.
- Restore пропускает любой отслеживаемый путь, являющийся символической или жёсткой ссылкой, и предупреждает 'Restored the code, but skipped N files'; эти файлы сохраняют текущее содержимое. Под это попадают и симлинки менеджеров dotfiles, и жёсткие ссылки pnpm. Выполните /debug перед восстановлением, чтобы пропущенные пути были названы в журнале отладки.
- Контрольные точки — это быстрое локальное восстановление. Это не коммиты, не ветки, и ими нельзя поделиться с командой.
Контрольные точки и Git: используйте оба
Они решают разные задачи, поэтому сочетайте их.
Контрольные точки (/rewind) | Git | |
|---|---|---|
| Охват | Одна сессия | Вся история проекта |
| Детализация | На каждый запрос, начинающий ход, автоматически | На каждый коммит, осознанно |
| Отслеживает изменения через bash? | Только для файлов, которые Claude уже правил | Да (после добавления в индекс/коммита) |
| Срок жизни | 100 последних контрольных точек, очистка ~через 30 дней после сессии | Постоянно |
| Можно делиться / совместная работа | Нет | Да |
| Мысленная модель | «Локальная отмена» | «Постоянная история» |
- Коммитьте рабочие состояния в Git перед рискованным масштабным запуском — это ваша прочная опора.
- Используйте /rewind для быстрого восстановления внутри сессии между коммитами, не засоряя историю Git.
- Полагайтесь на Git для файлов, которые Claude никогда не правит напрямую, — тех, которых касается только деструктивный bash (rm/mv) или фоновый субагент. Rewind охватывает файл лишь после того, как Claude отредактировал его своими файловыми инструментами.
Когда это использовать
- Попробуйте смелую реализацию, и если она не понравится, восстановите код и разговор до точки развилки и попробуйте другую.
- Правка внесла баг три запроса назад? Восстановите код до неё, а не отлаживайте обломки.
- Экспериментируйте с вариантами, всегда зная, что проверенное состояние — в одном /rewind.
- Многословный отладочный обход съел окно контекста? Сделайте summarize от середины и дальше, сохранив исходные инструкции во всех подробностях.
Проверьте себя
0/3- Контрольные точки — автоматические снимки перед каждым запросом, начинающим ход, то есть локальная отмена для сессии. Хранятся 100 последних, затем очистка ~через 30 дней после сессии.
- Меню отката открывается командой /rewind (псевдонимы: /checkpoint, /undo) или двойным Esc при пустом вводе; в нём перечислены все отправленные запросы.
- Действия restore отменяют состояние (код, разговор или оба); действия summarize сжимают контекст и никогда не трогают файлы.
- Отслеживание ведётся по файлам и начинается, когда Claude правит файл своими файловыми инструментами — после этого откатываются даже изменения Bash в этом файле. Файлы, которых Claude никогда не правил (только bash, внешние, параллельные, большинство правок субагентов), не отслеживаются, а пути с символическими или жёсткими ссылками пропускаются при restore.
- Контрольные точки дополняют Git, а не заменяют его: думайте «локальная отмена» против «постоянной истории, которой можно делиться».
Дальше
- Управление контекстом —
/compact,/clearи место summarize в общей картине - Режим планирования — исследуйте и утверждайте план до выполнения правок, чтобы откатываться реже
- Разрешения — вторая половина безопасного выполнения амбициозных задач