Skip to content
claude ~ codex/19-memory— 23 min read

19 · 记忆系统(Memories 与 Chronicle):让 Codex 跨会话记住你

📚 系列导航:上一篇〔18 config.toml 配置详解〕把那一摞行为旋钮一次拧明白了——模型、沙箱、审批全在一个文件里。这一篇聊一件更底层的事:怎么让 Codex 跨会话记住你。不光是你手写进 AGENTS.md 的规矩,还有它干活时自己攒下的那本「私人笔记」——你纠正它一次、它在后台悄悄记下来,下回开工自动想起。再往后还有个 Codex 独有、用屏幕内容喂记忆的实验性玩意儿 Chronicle,一并讲透。

先上个我跟同事的真实对话片段。

同事:「你那个 Codex 不是开了记忆吗?我刚跟它说『以后这项目都用 pnpm』,它怎么转头又给我 npm install?」 我:「你是不是刚说完就指望它记住了?」 同事:「对啊,它界面都没报错。」 我:「记忆不是实时写的,它得等你这个会话闲下来一阵才在后台总结——你前脚说完后脚就考它,它当然还没记。再说这种『必须每次都生效』的死规矩,本来就该写进 AGENTS.md ,别赌记忆。」

这段对话里藏着新手对 Codex 记忆最常见的两个误会:一是以为记忆是「说完立刻生效」的,二是以为记忆能替代 AGENTS.md 。两个都不对,而且都会让你在关键时刻栽跟头。这一篇就把 Codex 这套记忆系统从头捋清——它到底什么时候记、记到哪、怎么管、哪些事压根不该交给它。

看完这一篇,你会拿到:

  • Codex 的「记忆」到底分哪两套:你写的 AGENTS.md vs 它自己写的 Memories(记忆),谁管啥一张表看明白
  • Memories 默认开没开、哪些地区用不了、怎么开、存到哪个目录、为啥不是实时更新
  • /memories 逐个会话控制「这次要不要用记忆、要不要拿来生成记忆」,外加 config.toml 里那几个真用得上的旋钮
  • 一张「该记 vs 不该记」清单,外加一条绝对不能碰的红线
  • Chronicle——Codex 独有、用屏幕内容喂记忆的实验性能力:它能干啥、有哪些硬限制(仅 Pro + macOS、不含 EU/UK/瑞士)、官方明说的三条隐私警告
  • 一套照着敲就能开起来、并验证记忆真生效的动手流程

ℹ️ 跟 Claude Code 的记忆机制对照着看:那边「自动记忆」默认开着、按 git 仓库分目录、开局读回 MEMORY.md 前 200 行或 25KB(以先到者为准);Codex 这套不一样——默认关着、有地区限制、走后台异步生成、存放路径和控制方式都另一套。下面差异处我会一一点出来。


01 先分清:记忆其实是两套,不是一套

先给结论:Codex 跟「记东西」相关的,是两套各管各的系统——一套你手写(AGENTS.md),一套它自己写(Memories)。 很多人一提「让 Codex 记住」只想到 Memories,其实那只是一半,而且往往是没那么靠谱的那一半。

类比:球队的「战术板」和「球探笔记」。 教练赛前在战术板上写得清清楚楚——这场怎么站位、谁盯谁、定位球怎么跑,全队都得照着打,这是 AGENTS.md :你定的、白纸黑字、每场(每轮开工)都重看一遍。另一套是球探坐在看台上随手记的小本子——「这个对手左路防守软」「那个前锋习惯往内切」,这些没人要求他记、他自己边看边攒,下次遇到同一个对手翻出来就用,这就是 Memories 。两套都有用,但一套是「我命令你这么干」,一套是「我自己摸出来的门道」。

官方把这两套的定位讲得很明白,整理成一张对照表——这是本篇最该先记住的一张

维度AGENTS.mdMemories(记忆)
谁写的你(手动写)Codex(自己生成)
装什么必须每次生效的指令和规则它从过往会话里学到的稳定上下文
典型内容构建 / 测试命令、代码约定、禁区你的技术栈、项目惯例、反复出现的工作流、踩过的坑
默认开关一直生效(放进仓库就读)默认关着,得手动开
可靠性确定性——每轮都读概率性——后台异步生成、不保证记到
进不进 git进,全队共享不进,机器本地、生成的状态文件

看出关键区别没?AGENTS.md 是「你想让它每次都怎么干」,Memories 是「它自己从过去摸出来的、帮你省得重复交代的上下文」。 官方一句话定了调,你必须先吃透:

把必须始终生效的团队规矩,留在 AGENTS.md 或签入仓库的文档里。把记忆当成一个有用的本地回忆层,而不是那些必须永远生效的规则的唯一来源。

翻成人话:Memories 是锦上添花,不是兜底保险。 我开头那个同事的坑就是典型——「依赖只用 pnpm」这种铁律,你赌它记进 Memories ,迟早翻车(它可能还没记、可能这个会话没注入、可能被合并时挤掉了);正确做法是写进 AGENTS.md ,那是确定性的、每轮必读的。11 项目说明书 AGENTS.md 那篇已经把 AGENTS.md 怎么写讲细了,这篇专攻另一半——它自己写的那本笔记。

把这两条记忆通路画出来,它们最后都汇进「新会话的上下文」:

Codex 两套记忆并行:AGENTS.md 你写(每轮必读 进 git)+ Memories 自动写(默认关 本地);Chronicle 把屏幕喂入

左边是你手写、放进仓库每轮必读的 AGENTS.md(确定性那条);右边是 Codex 工作时自己往 ~/.codex/memories/ 攒、后台异步生成的 Memories(概率性那条,默认关着);最底下那条虚线是 Chronicle——可选地用你的屏幕内容给 Memories 补料(第 05 节细讲)。两条实线最后都进「新会话的上下文」,让它一开工就「记得你」。

💡 一句话总结:Codex 的「记忆」是两套——AGENTS.md 你手写、确定性、每轮必读、进 git 全队共享Memories 它自己生成、概率性、默认关着、机器本地;必须永远生效的死规矩写进 AGENTS.md ,别赌 Memories 替你兜底。


02 Memories:它自己写的那本笔记,怎么开、存哪、怎么转

重点来了——Memories(记忆),Codex 干活时给自己生成的那本笔记。它解决的痛点很实在:你不想每开一个新会话,都把「我用 TypeScript、不写分号、测试这么跑」从头交代一遍。开了 Memories ,它能把这些稳定的偏好、惯例、技术栈、踩过的坑带到后面的工作里。

类比:跟久了的老搭档攒下的默契。 新来的实习生你得反复教;跟你三年的老搭档,很多事一个眼神就懂——因为他记着你的习惯,不用你天天提。Memories 就是把 Codex 从「新来的」往「老搭档」上带:你正常干活、正常纠正,它在背后默默攒,攒成下次开工就有的默契。

先开它(默认是关的)

这是 Codex 跟 Claude Code 最大的不同之一,单独拎出来强调:

Memories 默认关闭,并且在欧洲经济区(EEA)、英国、瑞士于上线时不可用。在 Codex 设置里开启,或在 ~/.codex/config.toml[features] 段里写 memories = true

两种开法,挑一种:

法一,配置文件开(写进 ~/.codex/config.toml ,长期生效):

toml
[features]
memories = true

法二,在 Codex App 设置里把 Memories 打开(图形界面,点一下的事)。

⚠️ 地区限制这条是功能层面按区域关掉的,不是网络问题——人在 EEA / 英国 / 瑞士,哪怕魔法上网也不一定能开。这点跟下面 Chronicle 的地区红线一个道理,OpenAI 在这俩功能上都划了地理线。

它怎么实际写进去的——关键:后台异步,不是实时

这是开头那段对话的解药,也是 Codex 记忆最反直觉的一点。官方写得很清楚,我把机制拆成三条:

第一,它从「够格的过往会话」里提炼,不是每次都记。 开了之后,Codex 会把有用的过往会话转成本地记忆文件;但它会跳过还在进行中的、太短命的会话,免得把你还没干完的活儿瞎总结一通。

第二,它在后台更新,而且会等你「闲够久」。 官方原话——记忆不会在会话一结束就立刻更新,Codex 会等这个会话空闲足够长时间,确认你不是还在干,才在后台总结。所以我同事「刚说完就考它」必然落空:那会儿会话还热着,它压根没到写记忆的时候。

第三,配额紧张时它会跳过这一轮。 当你的 Codex 速率限制(rate-limit)剩余百分比低于配置阈值时,后台这趟记忆生成会被跳过——免得你都快撞限额了它还在花配额记笔记。

还有一条安全设计:生成记忆时,Codex 会对记忆字段里的密钥做脱敏(redact)。但注意——这是「它尽量帮你擦」,不是「你可以放心往里塞密钥」,红线那节细说。

它存在哪

官方定死了存放位置,机器本地

以下是示意结构,实际文件名由 Codex 自动生成:

text
~/.codex/memories/
├── (摘要文件)
├── (持久条目文件)
├── (近期输入文件)
└── (过往会话佐证文件)

几个要点:

它在你的 Codex 主目录(home)下。 默认就是 ~/.codex ;如果你设了 CODEX_HOME 环境变量指到别处,就跟着走。主要的记忆文件在 ~/.codex/memories/ 下,里头有摘要、持久条目、近期输入、以及来自过往会话的佐证。

当成「生成的状态」看待。 官方专门叮嘱:这些文件是 Codex 生成的状态,你排查问题时、或在分享 Codex 主目录之前可以去看,但别把「手动改这些文件」当成你主要的控制手段——想控制记忆行为,用下一节的 /memories 和配置项,别去硬抠这些文件。这点又跟 Claude Code 不一样:那边鼓励你直接 /memory 开文件夹读改删,Codex 这边更倾向「你管开关和策略,文件交给它生成」。

把两套记忆的「开关 / 存放 / 可靠性」并排看,差别一目了然:

AGENTS.mdMemories
默认状态一直读默认关,手动开
写入时机你保存即生效会话闲够久后,后台异步生成
存放仓库里,进 git~/.codex/memories/本地、不进 git
你该怎么管直接编辑文件/memories 和配置项,别手抠文件

💡 一句话总结:Memories 是 Codex 自己生成的本地笔记——默认关着memories = true 或设置里开),存在 ~/.codex/memories/ ;它不是实时写的,得等会话闲够久在后台总结,配额紧张还会跳过;密钥会脱敏,但别当保险;这些文件是「生成的状态」,靠开关和配置管、别硬抠。


03 /memories 和那几个旋钮:怎么管它记不记、用不用

开了 Memories ,下一个问题就是——这个会话我想不想让它用已有记忆?想不想拿这个会话去生成新记忆? 比如你在调一段一次性的实验代码,根本不想它学进去;或者你在干一件敏感活儿,不想它注入任何旧记忆。Codex 给了两层控制:会话级的 /memories ,和全局的配置项。

类比:录音笔上的「录」和「放」两个独立按钮。 「放」是「这次要不要听之前录的」(用不用已有记忆),「录」是「这次要不要录进去」(拿不拿这个会话生成记忆)。两个键互相独立——你可以只听不录(用旧记忆但这次别学)、只录不听、或者俩都关。/memories 就是这台录音笔的面板。

会话级:/memories

在 Codex App 和 Codex TUI(终端界面)里敲 /memories只管当前这个会话

text
/memories

敲完它让你选——这个会话要不要用已有记忆、要不要拿这个会话去生成未来的记忆,或者干脆这个会话把记忆行为关掉。官方明确:会话级的选择不改你的全局设置,只影响手头这一个会话。下次开新会话,还是按你的全局配置来。

这个设计特别实用。我自己的习惯:干「正经项目活」时让它正常记,干「一次性脏活 / 实验 / 敏感操作」时,进去先 /memories 把这个会话的生成关掉——免得它把一堆临时垃圾或敏感上下文学进那本长期笔记。

全局级:config.toml 里的旋钮

想长期、全局地定规矩,写进 ~/.codex/config.toml[memories] 段。下面这几个是真用得上的:

⚠️ 默认值以官方配置参考为准,可能随版本变化,直接套用前先对照官方文档确认。

配置项作用默认值
memories.use_memoriesfalse 则不把已有记忆注入未来会话true
memories.generate_memoriesfalse 则新会话不被拿去当生成记忆的输入true
memories.disable_on_external_contexttrue 则用过 MCP / 网页搜索 / 工具搜索等外部上下文的会话不参与记忆生成false
memories.min_rate_limit_remaining_percent速率限额剩余低于这个百分比就不启动记忆生成25
memories.extract_model覆盖「逐会话记忆提取」用的模型不设则用默认
memories.consolidation_model覆盖「全局记忆合并」用的模型不设则用默认

举个最常用的——只想让它「用」旧记忆、但别再「学」新的(比如记忆已经够好了,不想它继续乱长):

toml
[memories]
generate_memories = false
use_memories = true

ℹ️ memories.disable_on_external_context 有个历史别名 memories.no_memories_if_mcp_or_web_search ,官方说老键名仍然接受——你在别人的旧配置里看到那个长名字,别慌,是同一个东西。等到 20 用 MCP 接外部工具 那篇你接了 MCP,会更理解这个开关:用过外部工具的会话上下文不一定干净,把它挡在记忆生成外面是稳妥的默认。

💡 一句话总结:会话级用 /memories 控「这次用不用旧记忆、生不生成新记忆」(不改全局);全局级在 config.toml[memories] 段拧——use_memories / generate_memories 是两个主开关,disable_on_external_context 把用过外部工具的会话挡在生成之外(默认关),min_rate_limit_remaining_percent 默认 25。


04 该记什么、不该记什么:附一条绝对红线

机制讲完,落到最实在的判断——啥适合交给 Memories ,啥碰都别碰。 好消息是 Memories 天生就比较克制(只盯「稳定、可复用」的上下文,会跳过短命会话);但你得知道边界在哪,尤其是那条红线。

先用一张对照表把「适合 vs 不适合」摆清,左边塞了会后悔,右边才是它的主场

❌ 别指望它记(该写 AGENTS.md / 一次性 / 敏感)✅ 它的主场(稳定 / 复用 / 它能自学)
「依赖只用 pnpm,禁用 npm」(必须每次生效→写 AGENTS.md你常用的技术栈(TypeScript + PostgreSQL + pytest)
「这次先用 8081 端口」(一次性,过两天就是误导)反复出现的工作流(提 PR 前习惯先跑 lint)
「我现在在调登录页」(这次的临时状态)项目惯例(这个 repo 的测试得先起本地服务)
数据库密码 / API key / token(敏感!红线!踩过的坑(上次那个偶发 bug 根因是时区没设)

三条判断原则:

一是「必须每次生效吗」。 这是 Codex 特有、最该先过的一关。凡是「必须每次都生效」的死规矩,写进 AGENTS.md,不要赌 Memories。 因为 Memories 是概率性的——它可能还没生成、这个会话可能没注入、合并时可能被挤掉。我同事那个 pnpm 的坑,本质就是把「必须生效」的规矩交给了「可能生效」的系统。

二是「会不会变 / 能不能复用」。 一次性的、马上要改的、「先这么着」的,没必要(端口号、临时变量、这次的调试状态);下次、下下次还用得上的(技术栈、项目惯例、踩过的坑),才是它该攒的。

三是「敏不敏感」——这条是红线,加粗三遍:

不要在记忆里存储密钥。Codex 会对生成的记忆字段做脱敏,但在分享你的 Codex 主目录或生成的记忆产物之前,你仍然应该检查记忆文件。

注意官方这句话的分寸:它「会脱敏」不等于「你可以乱放」。 记忆是不加密的明文 markdown 存在你硬盘上的,脱敏是兜底、不是许可。所以——密码、token、API key 绝对不进任何记忆文件,这跟全局安全约束完全一致:敏感信息不进代码、不进 commit、不进日志,自然也不进记忆。再加一条 Codex 特有的习惯:在把 ~/.codex 目录分享给别人、或导出记忆产物之前,先去 ~/.codex/memories/ 扫一眼,确认没有不该外传的东西。

💡 一句话总结:过三关——必须每次生效的→写 AGENTS.md 别赌记忆;会变的 / 一次性的→不必记;密钥绝对别进记忆(明文落盘,脱敏只是兜底);分享 ~/.codex 前先扫一遍 memories/ 。Memories 的主场是「稳定、可复用、它能自学」的那些上下文。


05 Chronicle:让 Codex「看屏幕」来攒记忆(实验性)

这一节讲 Codex 区别于 Claude Code 的一个特色能力——Chronicle 。Claude Code 那边没有对应物。

⚠️ 实验性,可能变化。 Chronicle 是「需主动开启的研究预览(opt-in research preview)」,下面凡涉及入口、菜单名、默认行为,一律以你界面里看到的和 Codex 官方文档 为准,后续版本可能调整。

它是什么、能干啥

一句话:普通 Memories 从你和 Codex 的「对话」里学,Chronicle 更进一步,从你「屏幕上的内容」里学。 它拿最近的屏幕上下文去喂记忆,让 Codex 更懂你在指什么、该用哪个源、依赖哪些工具和工作流。

类比:一个能瞟你显示器的助手。 普通助手只能听你嘴上说的;Chronicle 这个助手还能瞟一眼你的屏幕——「哦你正盯着这个报错」「你刚在这个 PR 里改东西」——于是不用你从头复述。官方给的三个典型好处:用上你正在看的内容(省得切来切去解释)、补全你没说全的上下文(不用从零精心组织背景)、记住你用的工具和工作流(学着学着就省了你解释「该用哪个工具干这活」)。

有个细节很关键:Chronicle 不一定自己「消化」屏幕内容,更多是当「线索」用。 官方说,当有更合适的源时(具体那个文件、那条 Slack、那个 Google Doc、那个仪表盘、那个 PR),Chronicle 会用屏幕上下文先认出该用哪个源,再直接去用那个源

硬限制:地区 + 平台,比 Memories 还硬

把最扫兴的放最前面,这几条直接决定你能不能用

Chronicle 仅对 ChatGPT Pro 订阅者、且仅在 macOS 上可用,并且在 EU、英国、瑞士尚不可用

拆开就是三道门槛,缺一不可:

  • 订阅:必须是 ChatGPT Pro(普通 Plus 不行)。
  • 平台只有 macOS(Windows、Linux 都没有——Codex 桌面 App 本身也没 Linux 版,07 桌面 App 提过)。
  • 地区EU、英国、瑞士不支持(跟 Memories 的地区红线一致)。

另外它要两项 macOS 系统权限:屏幕录制(Screen Recording)辅助功能(Accessibility)——前者让它看见你屏幕,后者参与系统交互。开启路径:Codex App 设置 → Personalization → 确认 Memories 已开 → 在底下把 Chronicle 打开 → 看完同意弹窗点 Continue → 按提示授予那两项权限。

三条隐私警告:开之前必须看懂

这是本节的命门。官方在开头就把话挑明——启用前请先理解当前风险。三条警告,一条都别跳:

  1. 吃配额很快。 Chronicle 靠在后台跑沙箱代理、从截屏里生成记忆,这些代理目前消耗速率限额很快。换句话说,开着它,你的配额掉得比平时猛。
  2. 增加提示注入(prompt injection)风险。 用 Chronicle 会加大来自屏幕内容的提示注入攻击风险——比如你浏览了一个藏着恶意 agent 指令的网站,Codex 可能会跟着那些指令走。这跟 16 安全与风险边界 讲的提示注入是同一类坑,只是这里风险面更大,因为它读的是你控制不了的屏幕内容
  3. 记忆不加密存在本地。 Chronicle 生成的记忆跟其它 Codex 记忆一样,是不加密的 markdown 文件存在你电脑上。

把这三条和「方便」摆一起,自己掂量。我的态度跟 02 核心概念 里一致:尝鲜可以,但面对敏感屏幕内容(密码、私信、客户数据、会议画面)务必先暂停它。怎么暂停——用 菜单栏的 Codex 图标,选 Pause Chronicle(恢复用 Resume Chronicle)。官方专门叮嘱:开会前、看敏感内容时,先 Pause;还有一条硬规矩——未经他人同意,别拿 Chronicle 去记录跟别人的会议或沟通(它不碰你的麦克风和系统音频,但截屏会拍到画面里的东西)。

数据存哪、传不传给 OpenAI

官方讲得很细,捡你最该知道的:

  • 屏幕截图是临时的:只短暂存在你电脑上,运行时可能出现在 $TMPDIR/chronicle/screen_recording/ 下,超过 6 小时的会在运行中被删掉
  • 生成的记忆存在本地:在 $CODEX_HOME/memories_extensions/chronicle/(通常是 ~/.codex/memories_extensions/chronicle )下,是你能读、能改的 markdown 文件。想让它忘掉某事,删掉对应文件、或选择性编辑 markdown 删掉那段即可;但官方提醒——别手动往里加新信息
  • 截图怎么处理:为生成记忆,Chronicle 会起一个临时的 Codex 会话,可能处理选中的截图帧、从截图里 OCR 出的文字、时间信息、相关时段的本地文件路径。截图在 OpenAI 服务器上处理完即弃——除非法律要求,处理后不留存,也不用于训练

💡 一句话总结:Chronicle 是 Codex 独有、用屏幕内容喂记忆的实验性能力,仅 Pro + macOS、不含 EU/UK/瑞士,要屏幕录制 + 辅助功能权限;开之前看懂三条警告——吃配额快、提示注入风险大、记忆明文存本地;敏感内容前用菜单栏 Pause Chronicle ;截图临时存(6 小时清)、记忆在 ~/.codex/memories_extensions/chronicle/ 、服务器处理完即弃且不训练。

把这两套记忆并排画出来,谁从哪学、存哪、怎么开,一张图就清楚了:

两套记忆:Memories 与 Chronicle

这张图把 Codex 的两套记忆摆在一起:左边 Memories 从你和 Codex 的对话里学、存 ~/.codex/memories/ 、默认关(写 memories = true 开);右边 Chronicle 从你的屏幕内容里学、存 ~/.codex/memories_extensions/chronicle/ 、是仅 Pro + macOS 的实验性能力——两条最后都汇进「新会话的上下文」,让 Codex 一开工就「记得你」。


06 动手:开 Memories、攒一条、验证它生效

光看不练不算会。下面带你走一遍最小流程:开 Memories → 让它在一个会话里学到点东西 → 验证文件真生成了 → 用 /memories 控制行为。全程不依赖复杂环境。

平台差异先说清:下面 mkdir 等命令在 Mac / Linux 直接用;Windows 建议在 Git Bash 或 WSL 里敲。路径里的 ~ 指用户主目录,Windows 对应 C:\Users\你的用户名\ 。另外——人在 EEA / 英国 / 瑞士的话 Memories 开不了,这步做不了别以为是 bug。

第一步:开启 Memories

编辑 ~/.codex/config.toml ,加上(没有这个文件就新建):

toml
[features]
memories = true

预期:保存即可。也可以走 Codex App 设置里把 Memories 打开,二选一。

第二步:建个玩具项目,启动 Codex

bash
mkdir memory-demo
cd memory-demo
codex

预期:进入 Codex 会话界面。

第三步:在会话里「喂」一条稳定的偏好

在会话里干点正经活、并明确说出一条值得长期记的偏好。比如:

text
这个项目以后统一用 pytest 跑测试,提交前先跑一遍。记住这个习惯。

预期:Codex 正常响应、照做。但注意——这条不会立刻落进记忆文件。 回想第 02 节:记忆是后台异步生成的,得等这个会话空闲足够久(官方默认 min_rollout_idle_hours 是 6 小时)、Codex 确认你不是还在干,才在后台总结。所以别指望你下一句就能在文件里看到它——这正是开头我同事踩的那个坑,亲手感受一下。

第四步:用 /memories 控制当前会话的行为

想立刻能验证的,是会话级控制。在会话里敲:

text
/memories

预期:弹出选项,让你选这个会话要不要用已有记忆、要不要拿来生成新记忆,或把记忆行为关掉。选一个看看——比如把「生成」关掉。官方说这只影响当前会话、不动全局设置。这一步是即时生效、能当场看到反馈的,不像记忆生成那样要等后台。

第五步:过段时间,去看记忆文件真生成了没

记忆生成是异步的,所以这步得隔一阵再来(让那个会话凉透)。去看存放目录:

bash
ls ~/.codex/memories/

预期:里头出现 Codex 生成的记忆文件(摘要、持久条目等)。看到文件 = Memories 这套真的在替你攒上下文了。 想读内容直接打开那些 markdown 即可(纯文本)——但记住官方的话,这些是「生成的状态」,看可以、别把手抠当主要控制手段,要改行为回去用 /memoriesconfig.toml

⚠️ 如果隔了很久 ~/.codex/memories/ 还是空的,挨个排查:① [features]memories 是不是真的 = true ;② 你是不是在 EEA / 英国 / 瑞士(那就用不了);③ 那个会话是不是太短被跳过了(官方会跳过短命会话);④ 你的速率限额剩余是不是低于阈值(默认 25%,低了它就不生成)。这四条对着官方文档查,基本能定位。

跑通这套,你就把「开记忆 → 喂上下文 → 理解它为啥不是立刻生成 → 用 /memories 当场控制 → 隔段时间确认落盘」整条链路亲手摸了一遍。

💡 一句话总结config.tomlmemories = true 开 → 会话里喂一条稳定偏好(别指望立刻落盘,后台异步)→ /memories 当场控制本会话用不用 / 生不生成 → 隔段时间 ls ~/.codex/memories/ 看文件真生成了没;空的就照「开关 / 地区 / 会话太短 / 配额」四条排查。


07 小结

这一篇把 Codex 的「记忆系统」从头捋清了——它不是一套,是两套;而且 Codex 这套跟 Claude Code 差异不小。

把核心要点串起来回顾:

你要搞清的事结论
记忆分几套两套:AGENTS.md 你手写规矩(确定性)+ Memories 它自己生成(概率性)
Memories 默认开没开默认关memories = true 或设置里开;EEA / 英国 / 瑞士用不了
怎么写进去后台异步,等会话闲够久才总结;配额紧张会跳过;密钥脱敏(不是许可)
存哪~/.codex/memories/机器本地、不进 git,是「生成的状态」
怎么控制会话级 /memories(不改全局)+ config.toml[memories] 旋钮
该记 vs 不该记必须每次生效的→写 AGENTS.md;会变 / 一次性的别记;密钥绝对别进
Chronicle实验性、用屏幕喂记忆;仅 Pro + macOS、不含 EU/UK/瑞士;三条警告:吃配额快、提示注入风险、明文存本地

你现在应该能: 分清 AGENTS.md 和 Memories 各管什么、为啥死规矩得交给前者;把 Memories 开起来、知道它为啥不是实时生成、文件存哪;用 /memories 和配置项控制它记不记、用不用;判断一条信息该不该交给它、哪条是绝对碰不得的红线;以及搞懂 Chronicle 这个 Codex 特色能力的能耐和那三条隐私代价。说白了——你能让 Codex「记住该记的、别碰不该碰的」,而不是把『必须生效』的规矩赌在『可能生效』的系统上。

记忆这套,本质是让 Codex「记住已经发生过的上下文」——你纠正它、它积累。但要让它真正长本事、接上你本地没有的外部世界,靠的是另一套东西。

💡 一句话总结:两套记忆通路——AGENTS.md 确定性兜底、Memories 概率性补充——用好 /memoriesconfig.toml 控制开关;Chronicle 是 Pro + macOS 独有的屏幕喂记忆实验性能力,开之前先看三条警告。


下一篇 20「用 MCP 接外部工具」——记忆让 Codex「更懂你」,MCP(Model Context Protocol)则让它「够得着更多」:把数据库、API、第三方服务这些它本地碰不到的外部系统,通过一个统一协议接进来,让它能查、能调、能操作。本篇第 03 节那个 disable_on_external_context 开关,到时你就彻底明白它在防什么了。留个小思考:同样是「给 Codex 补充它不知道的信息」,你觉得「让它记住一条偏好」和「给它接一个能实时查的外部工具」,分别该在什么时候用?