Codex 桌面版怎么编辑之前的消息?改完提示词代码会不会回滚(附 CLI 双击 Esc 回退与 git 兜底)

Codex 编辑之前的消息、回退到某一轮重新来,是很多人改需求时最常用的操作,但它到底会不会把代码一起撤销?我们在 Codex CLI 0.163.0 里实测:连改三轮后双击 Esc 回退到第一条消息再重发,提示直接写着「File changes are unchanged」,第二、三轮的文件改动全部还在。本文讲清 CLI 怎么回退、桌面版官方说了什么,以及用 git 兜底撤销代码的做法。

6 分钟阅读
Codex 桌面版怎么编辑之前的消息?改完提示词代码会不会回滚(附 CLI 双击 Esc 回退与 git 兜底)

先说结论:在 Codex CLI 里回退到之前的消息再改,只会撤销对话,不会撤销代码。我们实测回退时 Codex 直接提示「Conversation reverted to this point. File changes are unchanged.」,之后几轮改过的文件原样留在工作区。想连代码一起回到过去,要靠 git 自己来。

我们用 AICodeWith 的 Key,在 Codex CLI 0.163.0(模型 gpt-6.1-sol)里做了一次完整测试:

  • 在一个 git 仓库里连续让 Codex 改了 3 轮,每轮 10 到 12 秒
  • 双击 Esc,选中第一条消息,回车回退,不到 2 秒对话就退回去了,原消息自动填回输入框
  • 改完提示词重发,12 秒跑完。git diff 显示第二、三轮加的内容和新建的文件全部还在,新内容是接在后面追加的

获取 API Key →

Codex 怎么编辑之前的消息

CLI:空输入框连按两次 Esc

OpenAI 官方的 Codex CLI 文档在快捷键一节里写得很清楚:在输入框为空时按两次 Escape,就可以编辑上一条用户消息,并从那个位置分叉对话。

实际操作是这样的:

  1. 先确认输入框是空的,官方写明这个操作要在空输入框下进行
  2. 连按两次 Esc,底部出现 Browsing transcript · ↑↓/jk scroll · ←→/hl prompts · ^t details · ↵ rewind · esc back
  3. 用 ← → 在你发过的消息之间切换,选中的那条会高亮
  4. 按回车,对话退回到这条消息之前,原消息自动填进输入框
  5. 改好提示词,回车重发;不想改了就按 Esc 退出

codex-rewind-file-changes-unchanged

回退之后,被选中那条消息之后的对话就不在当前会话里了。如果只是想看看历史,按 Esc 退出浏览即可,别按回车。

桌面版和 VS Code 插件

Codex 桌面版(ChatGPT 桌面应用里的 Codex)也能编辑之前发过的消息,从 GitHub issue #20287 的反馈里能看到用户在 Codex App 上编辑旧消息。不过截至 2026 年 10 月 18 日,Codex 官方更新日志里没有这个功能的说明,官方也没写编辑后文件会怎么处理,所以本文不对桌面版下结论。

桌面版要用 ChatGPT 账号登录,没法用 API Key 跑,我们这次的测试都在 CLI 里做。不管用哪个客户端,下面的 git 兜底方法都一样适用。还没装 Codex 的可以先看 Codex 下载安装和 Codex 使用教程。

实测:回退之后 git diff 还剩什么

测试仓库里只有一个提交好的 notes.md,内容是「初始内容」。Codex 配置用的是团队标准的全局 ~/.codex/config.toml:

toml
model_provider = "aicodewith"
model = "gpt-6.1-sol"

[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "sk-你的Key"

配置每一项是什么意思,可以看 Codex config.toml 配置详解。

我们在 Codex 交互界面里依次发了三条消息:

轮次让 Codex 做的事用时
第一轮在 notes.md 末尾加「第一轮:加了登录功能」12 秒
第二轮新建 round2.txt,再在 notes.md 加「第二轮:加了支付功能」10 秒
第三轮新建 round3.txt,再在 notes.md 加「第三轮:加了导出功能」10 秒

回退前看一下工作区:

bash
$ git status --short
 M notes.md
?? round2.txt
?? round3.txt

然后双击 Esc,选中第一条消息回车,Codex 提示 Conversation reverted to this point. File changes are unchanged.,再看工作区,三个改动一个都没少。

接着我们把第一条消息改成「在 notes.md 末尾加一行:第一轮(改):加了注册功能」并重发,12 秒跑完。最后的 notes.md 是这样的:

text
# 待办

- 初始内容
- 第一轮:加了登录功能。
- 第二轮:加了支付功能。
- 第三轮:加了导出功能。
- 第一轮(改):加了注册功能。

也就是说,旧的第一轮、第二轮、第三轮改动都还在,改过的提示词是在这个基础上接着改的。round2.txt 和 round3.txt 也没有被删。如果你以为回退能「撤销到第一轮之前」,结果会是新旧两套改动混在一起。

双击 Esc 的两个坑:误触和上下文丢失

GitHub 上有几个和回退相关的 issue,遇到问题前值得看一眼:

  • #11626:有人提议给 CLI 加一个 /rewind,让回退时把对话和 Codex 改过的代码一起恢复。issue 里写明了现状:Esc 回退只回退对话历史,不会撤销之后的代码改动,和我们的实测一致。截至 2026 年 10 月 18 日还是 open 状态
  • #26348:双击 Esc 太容易误触,而且没有确认、也没法撤销。用 Vim 习惯按 Esc 的人尤其容易中招。提议的方案包括先弹出历史列表、加确认、或者允许改快捷键
  • #20287:在 Codex App 里编辑或分叉一条「压缩上下文之前」的消息,之前的上下文会全部丢掉
长对话里 Codex 会自动压缩上下文。如果你要回退的消息很靠前,回退后它可能已经不记得之前聊过的细节,重发时最好把关键要求再写一遍。

安全做法:编辑前先存档,回退后自己撤销代码

Codex 官方的 IDE 插件文档也建议在任务前后打 Git 存档点,方便撤销改动。结合我们的测试,推荐这样做。

1. 开始之前先提交一次,让工作区是干净的:

bash
git add -A
git commit -m "开始让 Codex 改之前的存档"

2. 每轮满意了就提交,这样回退到哪一轮,就能对应找到哪个提交:

bash
git add -A
git commit -m "Codex 第 1 轮"

3. 准备回退并重改之前,先把当前改动收起来。-u 会把新建的文件一起收走,我们实测执行后 round2.txt、round3.txt 和 notes.md 的改动都收进了 stash,工作区回到上一次提交的样子:

bash
git stash push -u -m "回退前的改动"

这时再去 Codex 里双击 Esc 回退、改提示词重发,就是在干净的代码上重来。之前的改动没有丢,想找回来用:

bash
git stash list
git stash pop

4. 已经回退完才想起来,可以手动撤销。下面第一条撤销已跟踪文件的改动;第二条先列出未跟踪的新文件,确认没问题再把 -n 换成 -f 删除:

bash
git restore .
git clean -n
git restore 和 git clean -f 撤销的内容没法找回,执行前先用 git status 和 git diff 确认清楚。不确定的时候用上面的 git stash push -u,更稳妥。

常见问题

VS Code 插件里能编辑之前的消息吗?

Codex 官方的 IDE 插件文档没有提到编辑历史消息的入口,只建议在任务前后打 Git 存档点来撤销改动。不管插件里有没有这个按钮,用 git 管住代码都是最可靠的办法。

改完重发会再消耗一次额度吗?

会。重发就是一次新的请求,Codex 会带着回退点之前的上下文重新跑一遍,按新请求计入用量。用量怎么算可以看 Codex API 用量说明。

用 API Key 登录也能用双击 Esc 回退吗?

能。我们这次就是只配了 AICodeWith 的 Key,没有登录 ChatGPT 账号,CLI 的回退、编辑、重发都正常。Key 怎么配可以看 Codex API Key 配置。桌面版则需要用 ChatGPT 账号登录。

按错了 Esc 回退了,能撤回吗?

当前界面里没有撤回按钮,这正是 issue #26348 在提的问题。不过我们在测试目录里看到,回退后 Codex 另存了一份新的会话记录,回退前的那份还留在本地 ~/.codex/sessions 里,用 codex resume 打开会话列表就能找回。代码不受影响,因为回退本来就不动文件。

回退会删掉 Codex 新建的文件吗?

不会。我们实测 Codex 在第二、三轮新建的 round2.txt 和 round3.txt,回退到第一条消息后都还在,需要自己用 git clean 或 git stash push -u 处理。

获取 API Key →

拿到 Key 之后,按 Codex 接入 AICodeWith 教程几分钟就能配好。

立即注册,放心让 Codex 改代码 →

资料来源

相关文章

Claude Code 和 Codex 怎么一起用?claudex-loop 让两家模型互审计划和代码(一个 Key 跑两端)

Claude Code 和 Codex 怎么一起用?claudex-loop 让两家模型互审计划和代码(一个 Key 跑两端)

想让 Claude Code 和 Codex 一起用,一个写计划、一个挑毛病?开源技能包 claudex-loop 把这件事做成了固定流程:一边出计划,另一边评审,通过后再写代码,最后换对方检查。我们用同一个 AICodeWith Key 把两端都接好,在真实 git 仓库里跑了两遍完整流程:一遍 125 秒,一遍 314 秒,Codex 在计划阶段指出了「导出文件会覆盖数据库」这样的问题。

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Epic Games 在 Anthropic 官方插件市场提供了 Claude Code Unreal Engine 插件 unreal-engine-skills-for-claude-code,配合编辑器里的 Unreal MCP,就能让 Claude Code 直接操作 UE5 编辑器。本文讲清编辑器端要开哪两个插件、怎么启动 MCP 服务、Claude Code 端怎么装插件和验证连接,以及 execute_tool_script 等安全设置。我们用 AICodeWith 的 Key 实测:插件 2.5 秒装好,全程不需要登录 Anthropic 账号。