为什么花一分钟导出 Codex 聊天是值得的
本地历史记录取决于你的设置
默认情况下,Codex 会保留本地记录。OpenAI 的配置指南指出:“默认情况下,Codex 将本地会话记录保存在 CODEX_HOME 下(例如 ~/.codex/history.jsonl)。”它是否包含你以后需要的内容取决于你的设置。
有两个设置会改变这一点。在 [history] 下将 persistence 设置为 none 会关闭本地历史记录持久化。而 history.max_bytes 会限制文件大小:“当文件超过上限时,Codex 会丢弃最旧的条目并压缩文件,同时保留最新的记录。”对于 codex exec 运行,--ephemeral 标志运行 Codex 时“不会将会话展开文件持久化到磁盘”。
如果你或你的团队设置了其中任何一项,你以后想要搜索的聊天记录可能就不存在了。
压缩会重写聊天内容
长会话可以被压缩,可以根据 model_auto_compact_token_limit 设置的阈值自动压缩,也可以手动压缩。/compact 命令“用简短的总结替换较早的轮次,在释放上下文的同时保留关键细节。”这正是你对上下文窗口所期望的,但活动聊天中较早的轮次会被总结所取代。在压缩之前进行导出可以保留完整的交流内容。
删除是永久性的
归档和删除是不同的。/archive 会从活动列表中移除会话,同时保留其聊天记录,你可以使用 codex unarchive 恢复它。/delete 则不提供这种功能:“Codex 会永久删除聊天记录和生成的子会话。”
记忆也不会保存聊天记录
Codex 具有记忆功能,但它不是你对话的副本。OpenAI 表示:“ChatGPT 网页版使用 ChatGPT 记忆,而本地 Codex 客户端使用独立的本地记忆存储和控制。”在桌面应用中,Codex 记忆是“针对所选机器”开启或关闭的。OpenAI 还建议不要在必须应用的规则上依赖它们:“将记忆视为一个有用的召回层,而不是必须始终应用的规则的唯一来源。”我们关于开启 Codex 本地记忆的指南介绍了它们的工作原理。
Codex 为导出聊天提供了哪些功能
/export:将完整对话导出为 Markdown
在 Codex CLI 中,输入 /export 并选择“复制到剪贴板”或“保存到文件”。OpenAI 的斜杠命令参考指出:“Codex 将完整的对话导出为 Markdown。”要跳过菜单并直接写入文件,请运行 /export session.md。一个条件:“在导出之前,请等待当前轮次结束。”
/copy:仅复制最新回答
当你只需要最后一个结果时,/copy 会“将最新完成的 Codex 输出复制到剪贴板”。你也可以在主 TUI 中按 Ctrl+O。如果某个轮次仍在运行,它会复制最新完成的输出,而不是正在进行的响应。在第一个完成的输出之前或回滚之后,该命令不可用。
/recap:不进行压缩的总结
当 Codex 处于空闲状态时,/recap 会生成当前对话的总结。参考文档将其目的描述为“在不压缩其上下文的情况下了解聊天进度”。即使你关闭了自动总结,它也能工作。总结是你记录笔记的一个很好的起点,但它只是一个摘要,而不是聊天记录。
脚本运行:将输出写入文件
对于使用 codex exec 启动的运行,有两个标志可以在没有斜杠命令的情况下捕获输出。--json 会打印“换行符分隔的 JSON 事件,而不是格式化的文本”。而 --output-last-message 会将“助手的最后一条消息写入文件”,OpenAI 称其“对下游脚本非常有用”。
恢复和分支:继续在聊天中工作
有时你根本不需要文件,只需要恢复会话。codex resume 将“通过 ID 继续之前的交互式会话,或恢复最近的聊天”。对于脚本运行,codex exec resume 接受会话 ID,或者使用 --last “从当前工作目录继续最近的会话”,以及使用 --all 考虑来自任何目录的会话。codex fork 会从较早的聊天中创建一个新聊天,“并保留原始聊天记录”。
这些可以保持对话继续,但它们依赖于会话仍保存在磁盘上。而导出则是无需依赖磁盘的副本。
桌面应用
/export 命令在 CLI 参考文档中有记载。在 ChatGPT 桌面应用中,键盘快捷键列表包括“复制对话路径”(标记为仅限 Codex),它会复制对话的路径。桌面应用的文档中没有描述导出命令,因此要进行完整的 Markdown 导出,CLI 是官方文档推荐的途径。
导出捕获了什么,没有捕获什么
导出的是文本形式的对话。代码更改本身存在于你的工作区和 git 历史记录中,因此提交和 /diff 仍然是更改内容的记录。/diff 显示“你已暂存的更改、尚未暂存的更改以及 Git 尚未开始跟踪的文件”。
导出也不会为你整理任何内容。一个三小时会话的 Markdown 记录包含了每一个死胡同和每一次工具调用。这作为存档很有用,但很难作为参考。有用的部分是聊天中解决的问题,而将其提取出来是一个单独的步骤。
人们首先尝试的方法
依赖本地历史记录。 它默认是开启的,但 [history] 设置、大小限制或 codex exec 运行时的 --ephemeral 标志可能意味着当你寻找时,聊天记录已经不在了。
先压缩,后导出。 在 /compact 之后,活动聊天中较早的轮次就变成了总结。
删除已结束的会话以进行整理。 /delete 是永久性的。/archive 会保留聊天记录,并且可以撤销。
将 Codex 记忆视为记录。 它们是单机召回层,OpenAI 建议将必需的指南保存在 AGENTS.md 或已签入的文档中。
将整个导出内容粘贴到下一次会话中。 这可行,但冗长的聊天记录会让死胡同填满上下文窗口。而总结可以用极小的空间承载相同的结论。
保存导出内容后从未打开。 原始聊天记录只是一个存档。除非你提取出关键内容,否则它对下一次会话毫无帮助。
解决方案:导出完整聊天,提取解决的问题,然后将其放在下一次会话能找到的地方
步骤 1:在压缩、归档或删除之前导出
当会话达到值得保留的结果时,请在它完整时进行导出。等待当前轮次结束,然后运行 /export 并指定一个说明会话用途的文件名,例如 /export auth-retry-fix.md。除非你的团队在版本控制中保留会话笔记,否则请将其保存在代码仓库之外。
如果你准备运行 /compact 来释放上下文,请先进行导出。对于 /delete 也是如此。
步骤 2:提取结论
打开导出文件并写一个简短的总结。先运行 /recap 可以为你提供一个起点。保留以下四类信息:
- 决策: 你选择了什么以及原因。
- 死胡同: 你尝试过但没有成功的方法,以免下一次会话重复这些尝试。
- 可用的命令和设置: 使其正常工作的确切标志、环境变量或步骤。
- 开放性问题: 还剩下什么以及你下一步会检查什么。
排除会话处理的任何敏感内容,例如凭据、令牌或客户数据。一个有用的调试会话总结可能如下:重试 bug 源于两处设置的超时;仅更改客户端值不起作用;同时设置两者并重启 worker 解决了问题;集成测试仍需要针对慢速路径的 fixture。
步骤 3:将结论放在下一次会话能看到的地方
代码仓库的规则和约定属于 AGENTS.md 或已签入的文档,OpenAI 建议将必需的团队指南保存在这些地方。有用但非规则的笔记(例如为什么选择某个库而不是另一个库)可以放入你自己的笔记或记忆层中。
当你开始下一次会话时,让 Codex 指向总结,而不是完整的聊天记录。一个简短、准确的总结比原始对话占用的上下文更少。我们关于为什么 Codex 会遗忘项目上下文的指南介绍了 Codex 自身会加载哪些内容。
在 MemoryLake 中进行设置
导出解决了问题的一半:聊天记录被保存了下来。剩下的是如何让这些结论在 Codex 以及你用于同一项目的其他工具中可用,而无需有人去翻阅 Markdown 聊天记录。
MemoryLake 是一个记忆层,用于将这些结论保存在你维护的一个列表中,供 Codex 以及你连接的其他助手(如 Claude Code 和 ChatGPT)使用。
你用自己的话亲自编写这些条目。不会从你的 Codex 会话、你的 history.jsonl、你导出的文件、你的 Codex 记忆或任何厂商的存储中读取、写入或删除任何内容。请排除凭据以及你团队政策规定保留在代码仓库中的任何内容。
步骤 1:创建 API 密钥
登录并从控制面板生成一个密钥。该密钥属于你的 MemoryLake 工作区,与你的 ChatGPT 和 Codex 登录凭据是分开的。

步骤 2:上传你的第一批记忆
从解决方案步骤 2 中的总结开始:你导出的会话中的决策、死胡同和可用命令。每个条目一个要点,注明日期,并标记代码仓库或任务。

步骤 3:连接你的 AI 和代理
连接 Codex 和你使用的其他助手。针对同一问题的下一次会话将从上一次会话解决的问题开始。

这在实践中带来了什么改变
第一个区别是,结束的会话会留下一些东西。完整的聊天记录被保存下来,并且结论以你真正会重新阅读的形式记录下来。
第二个区别是,下一次会话的起点更高。它知道死胡同和可用的命令,因此不会花第一个小时重新发现它们。
第三个区别是,工作成果可以在工具之间传递。如果你将项目的一部分切换到另一个代理,结论会随你同行。我们关于从 Codex 迁移到 Claude Code 的指南涵盖了这一迁移,而我们关于导出 Claude Code 会话的指南则涵盖了另一个方向。
导出 Codex 聊天的最佳实践
在聊天完整时导出。 在运行 /compact、/archive 或 /delete 之前。
等待轮次结束。 OpenAI 表示在导出前应先等待轮次结束。
根据结果命名文件。 这样你以后能更快地找到它。
使用 /copy 复制单个回答。 在主 TUI 中按 Ctrl+O 也可以达到同样的效果。
使用标志捕获脚本运行。 在 codex exec 中使用 --output-last-message 或 --json。
归档而不是删除。 /archive 会保留聊天记录,而 codex unarchive 可以恢复会话。
检查你的历史记录设置。 了解 [history]、history.max_bytes 或 --ephemeral 是否在起作用。
进行总结,然后保留总结。 原始聊天记录只是一个存档,而不是参考资料。
结论
Codex 提供了几种导出对话的方法。/export 将完整的聊天写入为 Markdown,/copy 获取最后一个回答,/recap 在不压缩的情况下进行总结,而 codex exec 标志则捕获脚本输出。默认情况下存在本地历史记录,但设置可以将其关闭或裁剪,/compact 用总结替换较早的轮次,而 /delete 是永久性的。
在聊天完整时导出它,提取其决策、死胡同和可用命令,并将规则放入 AGENTS.md,将其他所有内容放在你下一次会话能找到的地方。