Codex重置会话与上下文命令:/new、/clear、/compact、/resume的区别详细说明

作者:袖梨 2026-08-15

在 Codex CLI 中,“Codex重置”不是一个统一命令。想清空当前对话上下文,应使用 /new/clear;对话过长但仍想保留关键信息,可以使用 /compact;需要继续以前的任务,应使用 /resume;希望保留原对话并尝试另一种方案,则使用 /fork

Codex重置会话与上下文命令:/new、/clear、/compact、/resume的区别详解

这几个操作都会影响“对话”,但不会自动撤销 Codex 已经写入工作区的文件。执行前先确认自己要重置的是聊天上下文、终端显示、任务分支,还是代码改动。

一、先判断你要重置什么

不少问题都被统称为“Codex重置”,实际目标并不相同。

需求推荐操作是否保留当前聊天内容是否撤销文件改动
在同一仓库开始全新问题/new原聊天仍作为独立会话保存
清空终端显示并开始新聊天/clear当前聊天结束,新聊天重新开始
长对话接近上下文上限/compact保留摘要和关键状态
找回以前的会话继续处理/resume
从当前会话复制一条新路线/fork原会话保留,新会话获得副本
只清理终端画面Ctrl+L
退出当前 CLI 会话Ctrl+C/exit会话可按保存状态恢复不会自动回滚已完成的改动
停止当前会话的后台终端/stop不会自动回滚已完成的改动

最容易混淆的是 /clearCtrl+L。前者会开启新聊天,后者只清理终端中的可见内容,聊天上下文仍然存在。

二、使用/new重置当前聊天上下文

如果已经从“修复登录接口”转到“设计数据库表”,而旧对话的背景不再有用,可以在 Codex CLI 输入:

/new

Codex 会在当前 CLI 会话中创建一个新聊天。工作目录仍然是当前仓库,但新聊天不会继续沿用旧聊天的完整对话记录。

也可以在创建时命名:

/new database migration

给聊天命名的价值在于,之后使用 /resume 时更容易识别目标会话。

适合使用/new的情况

  1. 当前需求已经与前面的任务无关;
  2. Codex持续沿用过时的前提;
  3. 想重新描述需求和验收标准;
  4. 希望保留旧会话以便回看,但不想继续继承其上下文。

新聊天开始后建议补充的内容

重置上下文并不等于 Codex 自动知道新任务的所有边界。第一条提示最好写清四项信息:

  1. 要实现或排查的目标;
  2. 涉及的目录、文件或模块;
  3. 不允许改变的行为;
  4. 完成后需要运行的检查。

例如:

检查 src/auth 下的登录超时问题。只做诊断,暂时不要修改代码。

请给出复现条件、根因位置和建议的最小修复范围。

这种写法比只说“继续修一下”更稳定,因为新会话没有上一段对话供它补全含义。

三、使用/clear同时清理画面和聊天

如果既要清空当前终端中的可见记录,又要开始新聊天,可以输入:

/clear

也可以直接为新聊天命名:

/clear release check

/clear/new 的主要区别是:

  1. /clear 会先清理当前终端显示,再开始新聊天;
  2. /new 会开始新聊天,但保留终端中当前可见内容。

如果只是觉得屏幕太乱,不想改变上下文,使用:

Ctrl+L

官方文档特别区分了这两类操作:Ctrl+L 只清理显示,不会开始新聊天。

四、使用/compact压缩上下文,而不是重置任务

当一个开发任务持续较久,聊天中可能积累大量日志、测试输出和中间讨论。此时不一定要完全重置,可以输入:

/compact

Codex 会把前面的对话压缩成更简洁的摘要,以释放上下文空间,同时尽量保留任务目标、关键决定和当前状态。

需要注意:/compact 不是“清除记忆”。它的目标是压缩,而不是丢弃全部内容。因此,如果你希望彻底换一个无关话题,应使用 /new/clear

/compact更适合以下场景

  1. 当前任务还没结束,只是对话已经很长;
  2. 前面有大量重复日志,不需要逐行保留;
  3. 仍要延续已经确认的技术方案;
  4. 希望继续使用当前任务的约束和验收标准。

执行压缩后,可以用一条简短提示校验摘要是否完整:

请先列出你当前保留的任务目标、已完成事项、未解决问题和下一步,不要修改文件。

如果摘要遗漏了关键限制,应先补充限制,再继续实施。

五、使用/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 --shortgit diff

如果发现改动,需要先判断它们属于谁、是否已经验证、是否应该保留。不要因为想“重置 Codex”就直接删除文件或执行破坏性 Git 命令。

一个安全的重置顺序

  1. /ps 检查后台终端,必要时用 /stop 停止它们;
  2. 使用 /diffgit diff 查看已有修改;
  3. 记录尚未完成的事项和测试结果;
  4. 根据目标选择 /compact/new/clear/fork
  5. 在新聊天中重新声明任务范围;
  6. 继续工作前再次检查工作目录与 Git 状态。

八、常见问题

1. Codex有没有统一的reset命令?

官方当前提供的是按对象划分的命令,例如 /new/clear/compact/resume/fork。遇到“Codex重置”需求,应先明确重置对象,而不是寻找一个会同时清理会话、配置、登录和文件的万能命令。

2./new会删除以前的会话吗?

不会。它会在同一个 CLI 会话中开始新聊天,旧聊天仍可通过恢复功能继续使用。

3./compact后还能逐字看到全部旧对话吗?

/compact 会以摘要替代前面的详细内容,主要目的是降低上下文占用。需要保留原始日志时,应另外保存日志,不要把聊天摘要当作原始记录。

4. 重开聊天能解决 Codex反复理解错误吗?

如果错误来自过时的聊天前提,/new 通常有帮助;如果错误来自项目中的 AGENTS.md.codex/config.toml 或错误的工作目录,重开聊天并不能解决根因,需要检查对应配置层。

5. 关闭终端后任务会自动回滚吗?

不会。已经写入磁盘的内容仍然存在。关闭终端前应查看 Git 状态,并确认是否有后台进程仍在运行。

总结

处理 Codex重置时,可以用一句话判断:无关新任务用 /new,连终端画面一起清理用 /clear,长任务续作但上下文太大用 /compact,找回旧任务用 /resume,保留原方案并探索另一条路线用 /fork

无论选择哪一种方式,都应把聊天状态与文件状态分开看。聊天可以重新开始,但工作区改动不会因此自动消失。

相关文章

精彩推荐