Команда codex resume в Codex CLI служит для восстановления ранее начатой рабочей сессии: она возвращает в терминал историю диалога, связанные с ним инструкции и контекст, который был доступен Codex во время предыдущей работы. Это особенно полезно, если вы закрыли терминал, прервали задачу, перезагрузили компьютер или хотите продолжить разработку не с чистого листа, а с того места, где остановились.
Сохранённая сессия — это не просто история сообщений. В подходящем рабочем каталоге она помогает восстановить ход задачи: какие решения уже обсуждались, какие файлы анализировались и что планировалось сделать дальше.
В простейшем случае достаточно выполнить codex resume и выбрать нужную сессию из списка. Если известен идентификатор, его можно передать непосредственно команде. А когда требуется не продолжить старую работу, а создать самостоятельную линию экспериментов на её основе, применяется команда codex fork. Разница между этими режимами невелика внешне, но важна для истории проекта: resume продолжает существующую ветку, а fork создаёт её ответвление.
- Обзор команды codex resume
- Синтаксис codex resume
- Позиционный аргумент SESSION_ID
- Опция --last
- Опция --all
- Комбинация опций и идентификатора
- Справка команды --help
- Практические примеры использования
- Пример 1. Продолжение последней работы
- Пример 2. Выбор сессии через интерактивный список
- Пример 3. Поиск старой сессии с помощью --all
- Пример 4. Восстановление по идентификатору
- Пример 5. Проверка файлов после восстановления
- Пример 6. Продолжение задачи после изменения ветки Git
- Пример 7. Создание независимого направления через codex fork
- Пример 8. Сравнение двух вариантов исправления
- Пример 9. Безопасное продолжение после незавершённого изменения
- Пример 10. Проверка доступных команд и опций
- Пример 11. Запуск из правильного рабочего каталога
- Пример 12. Фиксация идентификатора для командной работы
- Как выбрать нужную сессию
- Разница между продолжением и ответвлением
- Работа с сохранённым контекстом
- Типичные ошибки и способы их избежать
- Рекомендации для ежедневной работы
Обзор команды codex resume
Команда codex resume предназначена для запуска уже существующей сессии Codex CLI. В зависимости от указанного способа выбора она может открыть интерактивный список, автоматически вернуть последнюю сессию или загрузить конкретную сессию по идентификатору.
Если вы помните не точную формулировку последнего запроса, а только сам проект, интерактивный выбор обычно удобнее идентификатора: список помогает сопоставить сессию с рабочим каталогом, временем и кратким описанием.
Сессии Codex обычно связаны с каталогом, в котором запускалась работа. Поэтому перед восстановлением стоит перейти в соответствующий проект. Это снижает риск открыть нужную историю в неподходящем каталоге и продолжить работу с неверным набором файлов.
| Команда | Назначение | Когда использовать |
|---|---|---|
codex resume |
Открыть выбор сохранённых сессий | Если нужно просмотреть список и выбрать запись вручную |
codex resume --last |
Возобновить последнюю доступную сессию | Если вы только что прерывали работу и точно знаете, какую сессию нужно открыть |
codex resume SESSION_ID |
Загрузить сессию по идентификатору | Для точного запуска из скрипта, заметки или рабочего процесса |
codex resume --all |
Расширить список выбора сессий | Когда нужная сессия не отображается в обычном списке |
codex fork SESSION_ID |
Создать новую ветку из старой сессии | Для параллельного эксперимента без продолжения исходной линии |
Важно различать контекст диалога и текущее состояние файлов. Восстановленная сессия возвращает историю взаимодействия с Codex, но файлы проекта могли измениться после завершения предыдущего запуска: их могли отредактировать вы, коллега, другая ветка Git или автоматический процесс. Поэтому после восстановления полезно проверить статус репозитория и только затем продолжать внесение изменений.
cd ~/projects/shop-api git status codex resume
Если команда запускается без аргументов, Codex CLI обычно предлагает интерактивный интерфейс выбора. Конкретный вид списка и набор отображаемых полей могут зависеть от версии CLI, настроек и способа установки. Для проверки возможностей именно вашей версии используйте codex resume --help.
| Ситуация | Рекомендуемый вариант | Почему |
|---|---|---|
| Не помните идентификатор | codex resume |
Можно выбрать сессию по интерактивному списку |
| Нужно вернуть самый свежий запуск | codex resume --last |
Не требуется просматривать список |
| Идентификатор записан в задаче или журнале | codex resume SESSION_ID |
Выбор становится однозначным |
| Старая сессия отсутствует среди результатов | codex resume --all |
Можно показать более полный набор записей |
| Нужно попробовать другой подход | codex fork SESSION_ID |
Исходная сессия остаётся отдельной линией |
Синтаксис codex resume
Базовый синтаксис команды выглядит так: codex resume [OPTIONS] [SESSION_ID]. Квадратные скобки означают необязательные элементы: команду можно выполнить без параметров, с одним флагом или с идентификатором конкретной сессии.
Аргументы и опции лучше воспринимать как разные уровни управления. Позиционный аргумент указывает, какую именно сессию открыть, а флаги меняют способ поиска или отображения доступных сессий. В некоторых версиях Codex CLI перечень опций может расширяться, поэтому справка установленной версии остаётся главным источником точных деталей.
Позиционный аргумент SESSION_ID
SESSION_ID — это идентификатор сохранённой сессии. Если передать его после команды codex resume, интерактивный выбор обычно не требуется: CLI пытается открыть указанную запись напрямую.
codex resume 8f4c2b1e-6a0d-4f72-9a31-2c9f1b7e5d44
Идентификатор нужно указывать полностью, если CLI не поддерживает сокращённую форму в вашей версии. Не следует путать его с именем проекта, названием ветки Git или текстом последнего запроса. Это отдельный идентификатор записи сессии.
| Что можно принять за идентификатор | Подходит ли для codex resume |
Комментарий |
|---|---|---|
| UUID или другой ID из списка сессий | Да | Это штатный способ адресовать конкретную сессию |
| Имя каталога проекта | Нет | Каталог помогает найти контекст, но не заменяет ID |
| Имя ветки Git | Нет | Ветка относится к Git, а не к записи Codex |
| Текст последнего запроса | Нет | Запрос может отображаться в списке, но не является ID |
Опция --last
Флаг --last предназначен для быстрого восстановления последней доступной сессии. Это удобный вариант для повседневной работы, когда вы закрыли терминал несколько минут назад и не хотите искать нужную запись вручную.
cd ~/projects/payment-service codex resume --last
Слово «последняя» следует трактовать в контексте доступных Codex сессий, а не как «последняя изменённая строка в Git». Если вы работали с несколькими проектами или терминалами, перед запуском лучше перейти в правильный каталог и проверить, что автоматический выбор действительно соответствует вашим ожиданиям.
Преимущество --last |
Ограничение |
|---|---|
| Не нужно копировать длинный ID | Можно случайно открыть не ту сессию, если запусков было несколько |
| Подходит для быстрого ежедневного продолжения | Не помогает выбрать старую задачу из нескольких похожих |
| Удобен после временного закрытия терминала | Результат зависит от того, какая сессия считается последней |
Опция --all
Флаг --all используется, чтобы показать более полный набор сохранённых сессий в интерактивном выборе. Он особенно полезен, когда нужная старая запись не попала в стандартный список или была скрыта из-за ограничений отображения.
codex resume --all
Этот флаг не означает «возобновить все сессии». Он расширяет область выбора, после чего пользователь всё равно должен указать конкретную запись. Поэтому команда не запускает несколько диалогов одновременно.
--allрасширяет поиск, но не отменяет выбор. Это фильтр отображения, а не команда массового запуска сессий.
Комбинация опций и идентификатора
Наиболее надёжный способ — передать идентификатор напрямую. Если одновременно указать взаимоисключающие режимы, например конкретный ID и автоматический выбор последней записи, поведение может зависеть от версии CLI. Практически лучше выбирать один понятный способ адресации.
# Точный выбор codex resume SESSION_ID # Автоматический выбор последней записи codex resume --last # Интерактивный поиск среди расширенного списка codex resume --all
| Цель | Предпочтительная запись | Почему не стоит усложнять |
|---|---|---|
| Открыть конкретную сессию | codex resume SESSION_ID |
Команда однозначна и легко проверяется |
| Открыть последнюю сессию | codex resume --last |
Дополнительные параметры не нужны |
| Найти старую запись | codex resume --all |
Выбор выполняется в интерактивном режиме |
Справка команды --help
Если установленная версия CLI ведёт себя иначе или не принимает ожидаемый флаг, используйте встроенную справку. Это особенно важно для новых функций, поскольку интерфейс Codex CLI развивается, а отдельные параметры могут появляться, переименовываться или становиться доступными только в определённых версиях.
codex resume --help codex fork --help codex --version
Справка позволяет проверить фактический синтаксис, список опций и краткое описание поведения команды. Для автоматизации не стоит полагаться только на примеры из старой статьи или чужого скриншота терминала.
Практические примеры использования
Ниже приведены типовые сценарии, в которых codex resume помогает вернуть рабочий контекст. Каждый пример начинается с реальной задачи: от простого продолжения после перерыва до точного восстановления сессии и создания независимого ответвления.
Хорошая привычка перед возобновлением — определить, что именно вы хотите сохранить: прежний разговор, состояние файлов, ветку Git или всё сразу. Команда восстанавливает сессию Codex, но не заменяет контроль версий.
Пример 1. Продолжение последней работы
Вы анализировали ошибку в API, закрыли терминал и хотите продолжить с последнего места. Если в проекте не было других запусков Codex, подойдёт флаг --last.
cd ~/projects/shop-api codex resume --last
После восстановления можно написать обычный запрос, например попросить Codex проверить результат предыдущего исправления. История разговора останется доступной в рамках загруженной сессии.
Пример 2. Выбор сессии через интерактивный список
Предположим, за день вы работали над тестами, документацией и миграцией базы данных. В этом случае автоматический выбор последней записи может открыть не ту задачу. Запустите команду без аргументов.
cd ~/projects/catalog codex resume
CLI покажет доступные варианты. Выберите запись, которая соответствует нужному проекту, времени или описанию последнего запроса. Такой способ удобен, когда идентификатор сессии нигде не сохранён.
Пример 3. Поиск старой сессии с помощью --all
Нужная сессия была создана несколько дней назад и не отображается в коротком списке. Расширьте выбор с помощью --all.
cd ~/projects/analytics codex resume --all
После запуска найдите нужную запись в расширенном списке. Если записей очень много, полезно заранее вспомнить рабочий каталог и приблизительное время задачи.
| Признак сессии | Как использовать при выборе | Риск ошибки |
|---|---|---|
| Рабочий каталог | Сверить с проектом, над которым велась работа | Низкий, если проекты имеют разные пути |
| Время запуска | Сопоставить с календарём или историей терминала | Средний при множестве запусков в один день |
| Последний запрос | Понять, к какой задаче относилась запись | Низкий, если формулировка была конкретной |
| Идентификатор | Использовать для точного повторного запуска | Минимальный при отсутствии опечатки |
Пример 4. Восстановление по идентификатору
Идентификатор можно сохранить в задаче трекера, заметке или журнале разработки. Тогда через неделю сессию можно открыть без ручного поиска.
cd ~/projects/inventory codex resume 8f4c2b1e-6a0d-4f72-9a31-2c9f1b7e5d44
Такой подход полезен для длительных задач: например, при поэтапном рефакторинге, исследовании сложной ошибки или подготовке большого набора тестов.
Пример 5. Проверка файлов после восстановления
Сессия могла быть сохранена вчера, а рабочее дерево изменилось сегодня. Поэтому после resume разумно проверить Git-состояние и только затем просить Codex менять файлы.
cd ~/projects/web-client
git status
codex resume --last
# После восстановления можно попросить:
Проверь, какие изменения появились в рабочем дереве после последней сессии, и не перезаписывай их без моего подтверждения.
Такой запрос не заменяет проверку git diff, но помогает явно обозначить границы работы. Особенно осторожно следует действовать, если в каталоге есть незакоммиченные изменения.
Пример 6. Продолжение задачи после изменения ветки Git
Иногда сессия Codex относится к одной ветке, а пользователь возвращается в другую. В этом случае сначала переключите ветку, убедитесь, что проект находится в ожидаемом состоянии, и лишь потом восстанавливайте диалог.
cd ~/projects/backend git switch feature/report-export git status codex resume SESSION_ID
История разговора не должна восприниматься как разрешение продолжать работу в любой ветке. Codex видит файлы текущего рабочего каталога, поэтому несоответствие ветки и старого контекста может привести к неправильным выводам.
Пример 7. Создание независимого направления через codex fork
Допустим, исходная сессия посвящена исправлению производительности, но теперь вы хотите проверить альтернативную архитектуру. Продолжать ту же сессию не всегда удобно: новые решения смешаются с первоначальным планом. Для этого используйте codex fork.
cd ~/projects/search-service codex fork SESSION_ID
Новая сессия использует прежний контекст как отправную точку, но дальнейшая работа идёт в отдельной линии. Это похоже на создание экспериментальной ветки рассуждений: исходный диалог сохраняется, а альтернативный подход не переписывает его историю.
| Характеристика | codex resume |
codex fork |
|---|---|---|
| Цель | Продолжить существующую сессию | Начать отдельную линию на её основе |
| История | Продолжается в той же записи или рабочем потоке | Создаётся новая запись, связанная с исходной |
| Подходит для | Возобновления прерванной задачи | Сравнения альтернатив и экспериментов |
| Риск смешать подходы | Низкий при обычном продолжении | Ниже, потому что эксперимент отделён |
| Исходная сессия | Остаётся текущей рабочей линией | Остаётся доступной отдельно |
Пример 8. Сравнение двух вариантов исправления
В исходной сессии Codex предложил заменить библиотеку логирования. Вы хотите проверить другой вариант — оставить библиотеку, но изменить конфигурацию. Создайте ответвление, чтобы выводы не перемешались.
cd ~/projects/order-service
codex fork SESSION_ID
# В новой сессии:
Рассмотри альтернативный подход: оставь текущую библиотеку логирования и предложи только изменения конфигурации. Сравни риски с исходным решением.
Такой сценарий особенно полезен в исследовательской работе, когда нужно получить несколько независимых вариантов решения одной проблемы.
Пример 9. Безопасное продолжение после незавершённого изменения
Если предыдущая сессия оборвалась во время правки, не стоит сразу просить Codex «закончить всё». Сначала зафиксируйте фактическое состояние файлов и попросите оценить незавершённые изменения.
cd ~/projects/checkout
git status
git diff --stat
codex resume SESSION_ID
# Запрос в восстановленной сессии:
Сначала проанализируй текущий diff. Не изменяй файлы, пока не объяснишь, какие изменения уже завершены, а какие выглядят незавершёнными.
Это снижает вероятность того, что новый запуск продолжит старое действие поверх уже изменённых файлов и случайно затрёт полезный результат.
Пример 10. Проверка доступных команд и опций
Если команда не принимает ожидаемый параметр или интерактивный список выглядит иначе, проверьте справку и версию CLI. Это практичнее, чем пытаться угадать причину по сообщению из чужой документации.
codex --version codex resume --help codex fork --help
Например, если конкретная версия не поддерживает привычный флаг, справка подскажет фактический способ выбора. Не добавляйте неизвестные параметры «на всякий случай»: CLI может завершиться с ошибкой ещё до открытия сессии.
Пример 11. Запуск из правильного рабочего каталога
Сессия, связанная с монорепозиторием, может быть особенно чувствительна к текущему пути. Перед восстановлением перейдите в каталог проекта или нужного пакета.
cd ~/work/monorepo/services/billing pwd git status codex resume --last
Команда pwd здесь не относится к Codex напрямую, но помогает быстро убедиться, что терминал находится там, где вы ожидаете. Такая мелочь экономит время, когда в системе несколько похожих каталогов.
Пример 12. Фиксация идентификатора для командной работы
Если несколько разработчиков последовательно работают над одной исследовательской задачей, сохраните идентификатор сессии вместе с описанием цели. Это не заменяет Git и документацию, но упрощает возврат к конкретной истории.
cat >> notes/codex-sessions.txt <<'EOF' Задача: исследование медленного запроса отчётов Проект: analytics Сессия: SESSION_ID Следующий шаг: проверить план выполнения и тест на большой выборке EOF codex resume SESSION_ID
В реальной записи вместо SESSION_ID следует указать фактический идентификатор. Не включайте в общие заметки секреты, токены и содержимое закрытых файлов.
Как выбрать нужную сессию
Выбор сессии — это не только вопрос удобства. Неправильная запись может содержать похожую, но другую задачу, а восстановленный контекст создаст ложное ощущение, будто Codex уже знаком с текущими изменениями. Поэтому выбор лучше строить по нескольким признакам, а не только по первой строке последнего запроса.
Чем длиннее история проекта, тем ценнее дисциплина именования задач и фиксации идентификаторов. Память пользователя — плохой каталог сессий.
Перед запуском ответьте на три вопроса: в каком проекте велась работа, примерно когда она проходила и какой результат должен был быть следующим шагом. Эти ориентиры позволяют быстро отсеять неподходящие записи.
| Критерий | Что проверить | Почему это важно |
|---|---|---|
| Проект | Совпадает ли рабочий путь | Похожие запросы в разных проектах могут привести к разным решениям |
| Время | Соответствует ли дата последней работы | Помогает отличить сегодняшнюю задачу от старого эксперимента |
| Тема | Совпадает ли смысл последнего запроса | Снижает вероятность продолжить другую задачу |
| Git-контекст | Совпадает ли ветка или состояние репозитория | Контекст диалога может не соответствовать текущему коду |
| Ожидаемый шаг | Понятно ли, что делать дальше | Помогает проверить, действительно ли выбрана нужная история |
Если в списке несколько почти одинаковых сессий, выбирайте ту, где последний запрос наиболее близок к незавершённой задаче. После открытия можно задать проверочный вопрос: попросить Codex кратко описать, что было сделано и какой следующий шаг обсуждался. Это безопаснее, чем сразу запускать масштабное изменение.
Разница между продолжением и ответвлением
codex resume и codex fork решают связанные, но разные задачи. Первое возвращает вас к существующей работе, второе создаёт новый путь на основе прежнего контекста. Выбор зависит от того, хотите ли вы сохранить одну последовательную историю или сравнить несколько вариантов.
resume— это «продолжить разговор», аfork— «начать альтернативный разговор, помня исходный».
Продолжение подходит, когда задача просто была прервана: нужно дописать тесты, закончить анализ или проверить внесённое изменение. Ответвление оправдано, когда появился новый вариант решения, изменилась цель исследования или требуется сохранить исходную стратегию нетронутой.
| Вопрос | Если ответ «да» | Команда |
|---|---|---|
| Нужно просто вернуться к прерванной работе? | Сохраните прежнюю последовательность | codex resume |
| Нужно проверить другой технический подход? | Создайте отдельную линию | codex fork |
| Нужно оставить исходные рассуждения неизменными? | Не продолжайте их напрямую | codex fork SESSION_ID |
| Нужно быстро открыть самый свежий запуск? | Используйте автоматический выбор | codex resume --last |
| Нужно найти старую запись? | Расширьте интерактивный список | codex resume --all |
Ответвление сессии не является заменой ветки Git. codex fork разделяет историю взаимодействия с Codex, но управление версиями файлов, коммитами и слияниями по-прежнему выполняется средствами Git. Эти два уровня можно использовать вместе: создать fork для альтернативного плана, а изменения вести в отдельной Git-ветке.
git switch -c experiment/cache-strategy codex fork SESSION_ID
Такой порядок не универсален для всех рабочих процессов, но хорошо показывает идею: одна операция разделяет код, другая — историю работы с ассистентом.
Работа с сохранённым контекстом
После восстановления не следует считать, что Codex автоматически знает всё о текущем состоянии проекта. Сессия возвращает прошлый диалог, но реальная файловая система могла измениться. Поэтому контекст нужно обновлять явным сообщением и, при необходимости, командами проверки.
Сохранённый контекст отвечает на вопрос «что мы обсуждали», а проверка проекта — на вопрос «что сейчас находится на диске». Для надёжной работы нужны оба ответа.
Хороший первый запрос после восстановления содержит три части: напоминание о текущей цели, описание изменений после прошлой сессии и ограничение на действия. Например, можно попросить сначала проанализировать diff, не менять файлы и перечислить возможные расхождения.
| Элемент запроса | Пример формулировки | Польза |
|---|---|---|
| Цель | «Продолжаем исправление тайм-аута в обработчике заказов» | Возвращает задачу в фокус |
| Изменения | «После прошлой сессии я обновил зависимости» | Учитывает новые обстоятельства |
| Ограничение | «Сначала только анализ, без редактирования файлов» | Снижает риск преждевременной правки |
| Проверка | «Сравни текущий diff с обсуждавшимся планом» | Помогает выявить расхождения |
Особенно осторожно нужно продолжать сессии, где Codex ранее предлагал команды, удаление файлов, миграции или изменения конфигурации. Перед выполнением таких действий проверьте рабочее дерево, резервные копии и окружение. Возобновление диалога не отменяет обычные правила безопасной разработки.
Типичные ошибки и способы их избежать
Большинство проблем с codex resume возникает не из-за самой команды, а из-за неверного выбора сессии или несоответствия старого контекста текущему проекту. Несколько простых проверок помогают избежать неприятных сюрпризов.
Первая ошибка — использовать --last, когда в течение дня запускалось несколько независимых задач. Вторая — считать, что старый диалог автоматически описывает новые изменения в файлах. Третья — применять resume там, где нужен экспериментальный fork, а затем пытаться восстановить прежнюю логику по памяти.
| Ошибка | Последствие | Как исправить |
|---|---|---|
| Запуск не из того каталога | Контекст сессии не совпадает с проектом | Перед запуском использовать cd и pwd |
Безусловное использование --last |
Открывается другая недавняя задача | Выбрать сессию интерактивно или использовать ID |
Игнорирование текущего git diff |
Можно перезаписать чужие изменения | Сначала проверить статус и запросить анализ |
| Продолжение вместо fork | Альтернативные идеи смешиваются с исходным планом | Использовать codex fork SESSION_ID |
| Слепое копирование старых инструкций | Флаг может отсутствовать в новой версии | Проверить --help и версию CLI |
| Передача ошибочного ID | Сессия не найдена или открыта не та запись | Копировать идентификатор без изменений |
Если сессия не находится, начните с проверки текущего каталога и справки. Затем попробуйте интерактивный режим с --all. Если запись всё равно отсутствует, возможно, она была удалена, недоступна в текущем окружении или относится к другой конфигурации пользователя.
pwd codex --version codex resume --help codex resume --all
Не стоит многократно запускать случайные варианты команды в надежде «попасть» в нужную сессию. Лучше зафиксировать идентификатор, каталог и цель задачи — это обычно быстрее и надёжнее.
Рекомендации для ежедневной работы
Чтобы codex resume действительно экономила время, полезно выработать небольшой рабочий ритуал. После завершения заметного этапа фиксируйте, что сделано, что осталось проверить и какой идентификатор относится к сессии. Тогда возвращение к задаче не превращается в археологические раскопки по истории терминала.
- Запускайте Codex из каталога соответствующего проекта.
- Перед завершением сессии формулируйте следующий шаг.
- Для обычного продолжения используйте
codex resumeилиcodex resume --last. - Для точного доступа сохраняйте
SESSION_ID. - Перед изменениями проверяйте
git statusи текущую ветку. - Для альтернативных решений создавайте fork, а не смешивайте все варианты в одной истории.
- Периодически проверяйте актуальный синтаксис через
codex resume --help.
| Рабочая привычка | Что она предотвращает | Минимальная команда или действие |
|---|---|---|
| Проверять каталог | Работу не в том проекте | pwd |
| Проверять ветку | Изменения не в той линии Git | git branch --show-current |
| Проверять незакоммиченные изменения | Случайную перезапись правок | git status |
| Сохранять ID | Долгий ручной поиск старой сессии | Запись в задаче или заметке |
| Использовать fork для экспериментов | Смешение альтернативных решений | codex fork SESSION_ID |
В итоге codex resume — это инструмент восстановления непрерывности работы. Он особенно силён там, где задача длится дольше одного терминального сеанса: при отладке, рефакторинге, анализе архитектуры и подготовке тестов. Но максимальную пользу команда даёт только вместе с аккуратным выбором проекта, проверкой текущих файлов и пониманием разницы между продолжением и ответвлением.
Если нужно просто вернуться к незавершённому разговору, используйте codex resume. Если последняя сессия очевидна — codex resume --last. Если известна точная запись — передайте её SESSION_ID. А когда требуется безопасно проверить альтернативную идею, выберите codex fork. Такое разделение сценариев делает работу с Codex CLI предсказуемой и избавляет от ситуации, когда несколько разных задач начинают напоминать один большой, слегка растерянный диалог.
