Сессия в Codex - это не состояние репозитория, и путать их нельзя. Она хранит transcript разговора и контекст принятых решений, но не заменяет git: история кода, совместная работа и review живут в системе контроля версий, а сессия - это рабочая память задачи. Как только это различение усвоено, операции жизненного цикла сессии перестают быть загадкой и выбираются по смыслу: new, resume, fork, side, archive, delete и compaction - у каждой своя роль, а не просто разные кнопки.
New и resume отвечают на вопрос "продолжаю или начинаю заново". /new открывает новый чат в том же процессе CLI - это для новой задачи в том же репозитории, когда прежний контекст только мешал бы. /resume или codex resume продолжает сохранённый transcript - это возвращение к прежней задаче с её историей решений. Смешивать их - значит либо тащить лишний контекст в новую работу, либо терять нужный, начав с чистого листа там, где стоило продолжить.
Fork и side решают более тонкие задачи ветвления. Fork создаёт отдельную линию из существующей сессии - когда нужно попробовать альтернативный путь, не потеряв исходный. Side, как мы видели, открывает временный побочный чат для разведки, не ломая главный transcript. Разница в назначении: fork - это развилка самой работы, side - это разведочный вопрос в стороне. Осознанный выбор между ними держит историю набором понятных линий, а не свалкой.
Archive и delete управляют тем, что остаётся после задачи. Архивирование убирает сессию из активного списка, сохраняя её; удаление убирает совсем. Это разные по необратимости действия, и путать их не стоит: архив - для завершённой, но потенциально нужной работы, delete - для того, что точно не понадобится. Как и с git, важное лучше вынести наружу - в issue, PR или доки, - чем полагаться на то, что нужный transcript всегда найдётся в списке сессий.
Полезно один раз свести операции жизненного цикла в таблицу, чтобы выбирать по смыслу, а не по привычке. Ниже такая карта: что происходит при каждой операции и когда её применять. К ней возвращаются, когда работа над задачей растянулась на несколько заходов: понятные имена сессий и осознанный выбор между продолжением, ветвлением и завершением превращают историю из хаоса в набор именованных линий работы, к которым легко вернуться.
Compaction - отдельный механизм со своей ценой, и о нём стоит знать заранее. Когда история длинная, Codex сжимает её в summary, чтобы освободить контекст. Но summary может потерять детали, которые не были явно объявлены важными. Поэтому после сжатия полезно попросить Codex повторить цель, ограничения, принятые решения и следующий шаг проверки - и убедиться, что ничего критичного не растворилось. Сжатие в неудачный момент рискует унести именно тот контекст, ради которого велась работа.
| Операция | Что происходит | Когда использовать |
|---|---|---|
| /new | Новый chat в том же процессе CLI | Новая задача в том же репозитории |
| /resume, codex resume | Продолжение сохранённого transcript | Вернуться к прежней задаче |
| fork | Отдельная линия из существующей сессии | Попробовать альтернативный путь |
| /side | Временный побочный чат | Разведка без порчи главного transcript |
| archive | Убрать из активного списка, сохранив | Завершённая, но потенциально нужная работа |
| delete | Убрать совсем | То, что точно не понадобится |
| /compact | Сжатие истории в summary | Длинная сессия на естественной границе |
Дисциплина сессий сводится к нескольким привычкам. Давать сессиям понятные имена, чтобы resume находил нужную, а не перебирал безымянные. Завершать логическую задачу через /new, а не растить одну историю бесконечно. Вызывать /compact на естественной границе, а не посреди неразрешённого инцидента. И выносить важный итог наружу, а не держать его только в transcript. Сессия - рабочая память, а не архив; долговременная история живёт в git и трекере.
Типичные провалы работы с сессиями предсказуемы. Спутать сессию с состоянием репозитория и понадеяться на transcript как на замену git. Начать новую задачу в старом контексте или, наоборот, потерять нужный, начав с чистого листа. Сжать историю посреди инцидента и потерять необъявленные важными детали. И удалить то, что стоило заархивировать. Выбирайте операцию по смыслу, давайте сессиям имена и после compaction проверяйте, что цель и решения на месте.