Amiga
Оглавление курса · урок 12 из 15

Модуль 3 · Основы работы · урок 12 из 15

Сессии: продолжить, ответвить, вернуться

Задачи редко укладываются в один присест. Вечером вы останавливаетесь посреди отладки, утром хотите продолжить с того же места. Или на середине понимаете, что стоит попробовать другой подход, но и текущий жалко терять. Для этого в Codex есть сохранённые сессии, ветвление и возврат к ранним сообщениям.

Сессии сохраняются сами

Каждый интерактивный чат Codex автоматически сохраняет локально — вместе с историей сообщений и действий агента. Закрыли терминал по Ctrl+C — сессия никуда не делась.

Вернуться можно из терминала:

bash
codex resume            # список сохранённых чатов на выбор
codex resume --last     # последний чат из текущего каталога
codex resume --all      # выбор среди чатов из любых каталогов
codex resume task-1234  # по имени или ID

Обратите внимание: --last по умолчанию ищет только среди чатов текущего каталога. Если вы запускаете codex resume --last из другой папки, получите не тот чат, которого ждали, — добавьте --all или перейдите в нужный каталог.

Внутри уже открытого Codex то же самое делает команда /resume: она загружает историю выбранного чата, не меняя оригинал.

Если каталог сессии отличается от текущего, Codex спросит, в каком работать. Чтобы не отвечать каждый раз, задайте в конфигурации tui.resume_cwd значение "current" или "session".

Имена

Список из двадцати безымянных чатов бесполезен. Давайте сессиям имена по задачам:

text
/rename task-1234-utm-crm

Можно назвать чат сразу при создании: /new task-1235-phone-validation. Удобная договорённость — имя ветки и имя сессии совпадают: тогда по git branch сразу понятно, какой чат продолжать.

Ответвление: /fork

Иногда посреди работы хочется попробовать другой путь: «а если не править существующий сервис, а сделать отдельный?» Если сделать это в том же чате, история смешается, и вернуться к исходному варианту будет трудно.

Команда /fork копирует текущий чат в новый с отдельным ID. Оригинал остаётся нетронутым, и вы можете вести оба варианта. Если Codex предложит выбор, можно продолжить в текущем каталоге или в отдельном git worktree — второе удобно, когда оба варианта будут менять одни и те же файлы. Подробнее о worktree — в уроке «Несколько задач параллельно».

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

bash
codex fork              # выбрать сессию из списка
codex fork --last       # ответвить последнюю

Документация советует ответвляться, только когда работа действительно расходится. Если задача та же, оставайтесь в одном чате — так сохраняется ход рассуждений.

Вернуться к раннему сообщению

Частая ситуация: вы дали неудачную постановку, агент ушёл не туда, и следующие три хода — попытки его вернуть. Вместо того чтобы спорить дальше, вернитесь к точке ошибки.

Нажмите Esc дважды при пустом поле ввода. Codex предложит отредактировать ваше предыдущее сообщение и ответвит чат от этой точки. Неудачная ветка останется в истории, а вы продолжите с исправленной постановкой и чистым контекстом.

Важно понимать границу: возврат к сообщению меняет историю разговора, но не откатывает изменения в файлах. То, что агент уже успел поменять в рабочей копии, останется. Файлы откатывайте средствами git — об этом урок «Git как страховка».

Временный чат: /side

Нужно что-то уточнить, не засоряя основной чат: «что делает этот флаг Gradle?», «есть ли очевидный риск в этом плане?». Команда /side открывает временный побочный чат, отдельный от основного. Основной продолжает работу, а его статус остаётся виден. Закончили — возвращаетесь.

Порядок в списке

  • /archive (или codex archive <имя> из терминала) — убрать сессию из списков, не удаляя историю. Вернуть — codex unarchive.
  • /delete — удалить сессию насовсем вместе с историей. Пользуйтесь осознанно.
  • /export notes.md — выгрузить разговор в markdown-файл. Полезно, чтобы приложить ход исследования к задаче или показать коллеге, как агент пришёл к решению.
  • /recap — краткое изложение текущего разговора, без сжатия контекста. Удобно, когда вернулись к сессии через пару дней.
  • /copy или Ctrl+O — скопировать последний ответ.

На macOS и Windows можно продолжить текущий чат в десктопном приложении ChatGPT командой /app.

Привычки для длинных задач

Сохранённая сессия — не замена записям. Чем дольше чат, тем больше в нём сжатых и потерянных деталей (урок «Контекст»). Поэтому:

  • В конце дня просите агента записать состояние. «Запиши в NOTES.md: что сделано, что осталось, какие решения приняли, какие команды запускать». Утром новая сессия начнётся с чтения этого файла, а не с попыток восстановить контекст из длинной истории.
  • Новый этап — новый чат. Исследование закончили и записали выводы — реализацию можно начать в свежей сессии.
  • Не держите сессию «на всякий случай». Задача закрыта, MR влит — архивируйте.

Отдельно Codex хранит историю ваших промптов — в файле $CODEX_HOME/history.jsonl. Если вы работаете с конфиденциальными данными и не хотите хранить историю, её можно отключить ключом persistence = "none" в разделе [history] файла config.toml.

Сессии есть и у неинтерактивного режима: codex exec resume продолжает задачу в скрипте. Это тема урока «Продолжение и ветвление сессий в скриптах».

Попробуйте сами

10–15 мин на рабочем месте
  1. Назовите текущий чат командой /rename, выйдите по Ctrl+C и вернитесь через codex resume с этим именем.
  2. Посреди задачи сделайте /fork и попробуйте в новом чате альтернативный подход. Сравните результаты и оставьте лучший.
  3. Отправьте заведомо неудачное сообщение, затем вернитесь к нему через двойной Esc и исправьте постановку.

Коротко

  • Чаты сохраняются автоматически; codex resume --last продолжает последний чат из текущего каталога.
  • Давайте сессиям имена по задачам: /rename, /new <имя>.
  • /fork — другой подход без потери текущего; двойной Esc — вернуться к своему сообщению и ответвиться.
  • Возврат в истории не откатывает файлы — для этого git.
  • /side — побочный вопрос, /export — выгрузка, /archive — убрать из списка.
  • Для длинных задач записывайте состояние в файл, а не надейтесь на историю.
Отметка хранится только в вашем браузере
Хотите связаться с владельцем
компании напрямую?
Дмитрий Тарасов
Дмитрий Тарасов
СЕО

НАПИСАТЬ

Написать в MAX