在 Codex CLI 中,很多人提到的“Codex重置”并不是某一个固定的统一命令,而是要先看你真正想完成什么操作:如果只是想清空当前会话上下文,通常使用 /new 或 /clear;如果对话已经很长,但还希望保留关键任务信息,可以使用 /compact;如果是想继续之前中断的任务,则应使用 /resume;如果想保留原有对话,同时换一种方案重新尝试,那么更适合使用 /fork。

这些操作都会影响 Codex 的“聊天会话”或“上下文状态”,但不会自动撤销 Codex 已经写入工作区的文件内容。执行前,最好先确认自己要重置的是聊天上下文、终端显示、会话分支,还是代码改动。
一、先判断你要重置什么
很多用户都会把不同问题统称为“Codex重置”,但实际要处理的对象并不一样。
| 需求 | 推荐操作 | 是否保留当前聊天内容 | 是否撤销文件改动 |
|---|---|---|---|
| 在同一仓库开始全新问题 | /new | 原聊天仍作为独立会话保存 | 否 |
| 清空终端显示并开始新聊天 | /clear | 当前聊天结束,新聊天重新开始 | 否 |
| 长对话接近上下文上限 | /compact | 保留摘要和关键状态 | 否 |
| 找回以前的会话继续处理 | /resume | 是 | 否 |
| 从当前会话复制一条新路线 | /fork | 原会话保留,新会话获得副本 | 否 |
| 只清理终端画面 | Ctrl+L | 是 | 否 |
| 退出当前 CLI 会话 | Ctrl+C 或 /exit | 会话可按保存状态恢复 | 不会自动回滚已完成的改动 |
| 停止当前会话的后台终端 | /stop | 是 | 不会自动回滚已完成的改动 |
最容易被混淆的是 /clear 和 Ctrl+L。前者会开启一个新的聊天会话,后者只是清理终端可见内容,原有聊天上下文仍然保留。
二、使用/new重置当前聊天上下文
如果你已经从“修复登录接口”切换到“设计数据库表”,而旧对话背景已经不再有参考价值,就可以在 Codex CLI 中输入:
/new
Codex 会在当前 CLI 会话里创建一个新的聊天。工作目录依然保持在当前仓库中,但新聊天不会继续沿用旧聊天的完整上下文记录。
也可以在创建时直接命名:
/new database migration
给聊天命名的好处是,后续使用 /resume 恢复会话时,更容易快速识别目标任务。
适合使用/new的情况
- 当前需求与前面的任务已经没有关联;
- Codex 仍在持续沿用过时或错误的前提;
- 你想重新明确需求、边界和验收标准;
- 希望保留旧会话方便回顾,但不想继续继承原上下文。
新聊天开始后建议补充的内容
重置上下文并不代表 Codex 会自动理解新任务的全部边界。第一条提示词最好明确写清以下四项信息:
- 要实现或排查的具体目标;
- 涉及的目录、文件或模块范围;
- 哪些行为、接口或逻辑不允许改变;
- 完成后需要执行哪些检查或验证。
例如:
检查 src/auth 下的登录超时问题。只做诊断,暂时不要修改代码。
请给出复现条件、根因位置和建议的最小修复范围。
这种表达方式比简单说一句“继续修一下”更稳定,因为新的 Codex 会话并没有上一段对话可用来自动补全语义。
三、使用/clear同时清理画面和聊天
如果你既想清空当前终端中的可见记录,又想立即开始新的聊天会话,可以输入:
/clear
同样也可以直接为新聊天命名:
/clear release check
/clear 与 /new 的核心区别在于:
/clear会先清理当前终端显示,再开始一个新聊天;/new会直接开始新聊天,但会保留终端中当前可见的内容。
如果你只是觉得终端画面太乱,不想改变当前上下文,应使用:
Ctrl+L
官方文档对这两类操作有明确区分:Ctrl+L 仅清理显示内容,不会创建新的聊天会话。
四、使用/compact压缩上下文,而不是重置任务
当一个开发任务持续时间较长,聊天内容里可能积累了大量日志、测试输出和中间讨论。这时不一定要彻底重置 Codex,会更适合输入:
/compact
Codex 会把前面的聊天内容压缩成更简洁的摘要,从而释放上下文空间,同时尽量保留任务目标、关键决策和当前状态。
需要特别注意的是:/compact 并不是“清除记忆”或“彻底重开”。它的目标是压缩上下文,而不是丢弃全部内容。因此,如果你想彻底切换到一个完全无关的新话题,应使用 /new 或 /clear。
/compact更适合以下场景
- 当前任务还没有结束,只是对话长度已经接近上限;
- 前面包含大量重复日志,不需要继续逐行保留;
- 仍然需要延续已经确认的技术方案和限制条件;
- 希望保留当前任务的约束、目标和验收标准。
执行压缩后,可以用一条简短提示来校验摘要是否完整:
请先列出你当前保留的任务目标、已完成事项、未解决问题和下一步,不要修改文件。
如果摘要遗漏了关键限制条件,应该先补充这些信息,再继续后续实施。
五、使用/resume恢复以前的 Codex 会话
如果在 Codex重置后发现还需要继续之前的旧任务,可以在 CLI 中输入:
/resume
随后从会话选择器中找到需要恢复的聊天。恢复完成后,原聊天记录会重新加载,你可以直接从上次中断的位置继续处理。
如果已经退出 CLI,也可以在终端中运行:
codex resume
继续当前工作目录最近一次聊天:
codex resume --last
如果目标会话不在当前工作目录下,可以使用会话选择器查看其他目录中的会话:
codex resume --all
恢复之后,建议先执行以下检查会更稳妥:
先检查当前工作区状态和未提交改动,再总结这个会话上次停在哪里,不要立即编辑文件。
这是因为聊天记录可以恢复,但工作区文件可能已经被用户、IDE、Git 操作或其他后台进程修改。
六、使用/fork保留原方案并测试新思路
如果你不是想完全清空当前会话,而是希望基于当前状态尝试另一条技术路线,可以输入:
/fork
它会复制当前聊天,生成一个新的聊天标识,同时保留原聊天不变。这样你就可以在不破坏原讨论路径的前提下,对比两种不同方案。
退出 CLI 后,也可以运行:
codex fork
复制最近一次会话:
codex fork --last
这里需要区分“聊天分支”和“代码分支”:/fork 复制的是聊天上下文,并不等于自动创建 Git 分支,也不能保证文件系统天然隔离。如果两条路线都可能修改同一批文件,最好配合 Git 分支或独立 worktree 一起使用。
七、Codex重置不会撤销代码改动
这是最关键的一点:无论是新建聊天、清空聊天、压缩上下文,还是退出 CLI,都不等于自动回滚代码或撤销工作区修改。
在执行重置前,可以先查看当前改动:
/diff
也可以在终端中运行只读 Git 命令:
git status --short git diff
如果发现已有改动,需要先判断这些修改属于谁、是否已经验证、以及是否应该保留。不要因为想“重置 Codex”就直接删除文件,或者贸然执行破坏性的 Git 命令。
一个安全的重置顺序
- 用
/ps检查后台终端,必要时使用/stop停止它们; - 通过
/diff或git diff查看当前已有修改; - 记录尚未完成的事项、测试结果和关键上下文;
- 根据目标选择
/compact、/new、/clear或/fork; - 在新聊天中重新声明任务范围和限制;
- 继续工作前再次检查工作目录和 Git 状态。
八、常见问题
1. Codex有没有统一的reset命令?
官方目前提供的是按对象划分的命令,例如 /new、/clear、/compact、/resume 和 /fork。遇到“Codex重置”需求时,应该先明确你要重置的是会话、上下文、显示内容还是任务分支,而不是寻找一个能同时清理会话、配置、登录和文件的万能 reset 命令。
2./new会删除以前的会话吗?
不会。它只是在同一个 CLI 会话中开始一个新的聊天,旧聊天依然可以通过恢复功能继续访问和使用。
3./compact后还能逐字看到全部旧对话吗?
/compact 会用摘要替代前面的详细内容,主要作用是降低上下文占用。如果需要保留原始日志或完整对话,应该另外保存,不要把聊天摘要当作原始记录来使用。
4. 重开聊天能解决 Codex反复理解错误吗?
如果问题来自过时的聊天前提,/new 通常会有帮助;但如果问题来自项目中的 AGENTS.md、.codex/config.toml 或错误的工作目录,那么仅仅重开聊天并不能解决根因,仍需要检查对应配置层。
5. 关闭终端后任务会自动回滚吗?
不会。已经写入磁盘的文件内容仍然存在。关闭终端前,建议先检查 Git 状态,并确认是否还有后台进程在运行。
总结
处理 Codex重置问题时,可以用一句话快速判断:无关的新任务用 /new,需要连终端画面一起清理用 /clear,长任务持续进行但上下文过大时用 /compact,想找回旧任务继续处理用 /resume,想保留原方案并探索另一条路径则用 /fork。
无论你选择哪一种 Codex CLI 重置方式,都应该把聊天状态和文件状态分开看。聊天可以重新开始,但工作区中的代码改动不会因此自动消失。
