工作流
Codex 如何恢复上次对话?resume、/resume 与历史会话查找
用 codex resume、/resume 和 --last 继续上次任务,了解 --all 的跨目录筛选、指定会话恢复及记录找不到时的排查,并核对继续工作前的代码状态。
关闭终端后想继续昨天的任务,或换了目录后发现会话列表空了,可以先用 codex resume 查找已保存的会话。恢复对话是在已有会话上继续,不是恢复代码文件,也不是把工作区回退到昨天。
本文针对 Codex CLI 的交互会话。桌面应用和云端任务有自己的界面入口,不应把本地 CLI 命令当作所有产品入口的通用恢复方法。
先按你现在的场景选命令
| 你想做什么 | 操作 | 结果与注意事项 |
|---|---|---|
| 查看当前目录相关的历史会话 | codex resume |
打开选择器,核对时间、名称或任务内容后选择 |
| 直接接着当前目录最近一次会话 | codex resume --last |
跳过选择器;先确认最近那次就是目标任务 |
| 在已打开的 CLI 中切换到历史会话 | 输入 /resume |
从会话列表选择,不用退出后重新敲启动命令 |
| 当前目录看不到需要的会话 | codex resume --all |
放宽目录筛选,显示其他目录的会话供选择 |
| 已知会话 ID | codex resume SESSION_ID |
将占位符替换为实际 ID,恢复指定会话 |
选择器不是账号全部聊天记录的跨设备备份。能找到哪些会话,还取决于当前 CLI 环境和保存的本地记录。
第一步:恢复当前目录最近一次会话
进入原来的项目目录,先确认当前代码状态:
git status --short
codex resume --last
第一行适用于 Git 仓库,只查看状态,不会提交或撤销文件。第二行恢复当前工作目录筛选下的最近会话。
预期结果: 打开的会话确实是目标任务,历史记录与项目相符。恢复后先发送一个核对请求,而不是立即让它继续修改:
先不要修改文件。根据当前会话总结已经完成和还没完成的事项;核对现在的工作目录、Git 状态和相关文件。区分历史对话中的记录与现在文件中实际存在的内容,再告诉我下一步。
这能避免将昨天的计划或尚未执行的建议误当成已经完成的代码。
如果恢复的是另一项任务,退出该会话后改用 codex resume 的选择器,不连续重复 --last。
第二步:用选择器或会话 ID 恢复指定任务
同一目录里可能保存过多次任务。运行 codex resume,先按列表中可见的名称、时间和信息找到目标,再进入确认内容。
已经在 CLI 的对话界面时,输入 /resume 打开历史会话入口。斜杠命令输入在 CLI 会话内,codex resume 输入在系统终端里。 不要在系统 shell 中直接执行 /resume。
有明确 ID 时可以使用:
codex resume SESSION_ID
SESSION_ID 是占位符,不要原样复制执行。可以从当前版本的会话选择器或已掌握的会话信息中获取实际 ID,不需要为此上传整个本地会话目录。
预期结果: 会话内容、任务名称和实际项目匹配。恢复后仍按上一节核对现有文件,因为恢复聊天不会自动恢复某个 Git 提交,也不会撤销其他人最近的改动。
换了目录,为什么会话列表里找不到?
默认的 codex resume 会按当前工作目录筛选。比如同一个项目从 project/ 换到 project/frontend/,先前的会话可能不在当前筛选结果中。
先放宽目录筛选:
codex resume --all
预期结果: 列表中出现其他目录的会话。核对目录后选择目标任务。如果找到它,问题是筛选范围,不是会话丢失。
当前官方参考说明,--last 也按工作目录选择;加上 --all 可以放宽这一限制:
codex resume --last --all
这会直接恢复放宽筛选后的最近会话,未必属于你要找的仓库。第一次跨目录查找,优先使用带选择器的 --all,确认目标后再考虑直接恢复。
想在明确的目录继续怎么办?
恢复时当前目录与会话保存的目录不一致,当前官方文档说明 CLI 会询问使用哪个目录。也可以明确指定:
codex resume SESSION_ID --cd /path/to/project
将两处占位符替换为实际值。选目录时要知道自己是继续原仓库,还是在另一个 checkout/worktree 上工作;后者的文件、分支和未提交修改可能不同。
验证结果: 恢复后显示或核对到的工作目录就是预期目录,Git 分支及相关文件也正确。对话内容相似,不能代替路径检查。
–all 也找不到:按保存环境继续排查
--all 解除的是目录筛选,不能把另一台机器、另一个系统用户或另一套配置目录的历史记录自动带进来。
按下面的顺序检查:
- 确认原来是不是本地 CLI 会话。 桌面应用、网页云端任务与 CLI 会话不是同一个查找入口。回到原入口核对。
- 确认是不是同一个系统用户与运行环境。 本机、WSL、容器和远程主机可能各自保存记录;在原环境运行选择器再查。
- 确认是否更换了
CODEX_HOME。 macOS/Linux 可用printenv CODEX_HOME,PowerShell 可查看$env:CODEX_HOME。未设置时通常使用~/.codex。只核对目录,不要随意切换或复制整套配置。 - 确认记录是否被清理,或任务本来就未持久保存。 重装、删除配置目录、临时容器退出等都值得检查,但“找不到”本身不能证明发生了删除。
- 确认当前版本的能力。 用下面的帮助命令核对参数,尤其是旧版本或不同发行渠道:
codex --version
codex resume --help
验证结果: 在正确入口、正确环境和目录中重新查看选择器。若已经没有可用记录,恢复命令不能凭空重建它。不要为了找会话先删除 ~/.codex,也不要覆盖现有记录来试错。
若有自己的备份,应先保留当前数据,再按对应版本和备份方式评估恢复。本文不提供把未知格式文件强行塞回目录的通用命令。
恢复后上下文还在吗?何时应该新建会话?
恢复会话可以接着已有任务沟通,但长对话可能经历过上下文压缩,历史文本也不能代表文件的当前状态。因此,恢复后先核对任务进度、最近改动和适用的项目规则。
- 继续同一任务:恢复会话,补充最近的变化,并明确接下来的范围。
- 项目或目标已经明显改变:新建会话更容易给出清楚边界。CLI 中可用
/new开始新的聊天。 - 只是信息太长:先总结已完成事项、约束与未解决问题,再决定是否继续;不要把新建会话误当成修复丢失记录的方法。
恢复后规则看起来不对,可参考AGENTS.md 不生效排查重新核对。认证失效则按登录失败与 401 排查处理,不必将认证问题和会话保存问题混为一谈。
没有记录可恢复时,怎样继续工作?
如果最终确认没有可用会话,利用你现在仍有的资料重建任务交接:代码与 Git diff、issue 或需求说明、测试结果、自己的进度笔记。先总结目标、范围、已完成内容和剩余问题,再开启新会话。
可以使用下面的提示词:
我没有可恢复的旧会话。先只读检查当前项目与 Git diff,不修改文件。目标是……;已知已完成的是……;还未解决的是……。核对这些信息与实际代码是否一致,列出缺口和下一步的验证方法,不把我的描述直接当成已完成事实。
这是在现有证据上继续任务,不是恢复原始聊天记录。需要组织一个清楚的新任务,可参考Codex 快速入门中的目标、范围、约束和验证方法。
每次恢复后,确认这四件事
会话选对、工作目录正确、代码状态已核对、下一步任务边界清楚。四项都能明确后,再让 Codex 继续修改文件。
恢复命令负责找回工作线索;真正避免“接错任务”的,是将这些线索和现在的项目事实对齐。