比如在一个刚建的 Go 小服务里让 Codex 加配置加载,它把文件放进了 internal/conf/,还解释说是「沿用你之前的目录约定」。可这个约定是另一个仓库的,新项目里压根没有这个目录。这种情况多半是之前打开了 Codex 的本地记忆。
记忆本身不算坏东西,常用的工具链、提交信息格式它确实记住了,少打很多字。问题出在记忆是按机器存的,不按仓库分,A 项目里的习惯就这么被带进了 B 项目。不过先别急着一关了之,官方的开关拆得挺细,没必要全关。
总开关在 config.toml 的 features 里:
[features]
memories = true
官方写的是本地记忆默认关闭,桌面版里对应 Settings > Personalization 下的 Enable Codex memories。这个开关一关,后面那些细项也就没意义了。
细项在 [memories] 这张表里,记和用分成了两个键:
[memories]
generate_memories = true
use_memories = false
generate_memories 管的是新建的会话能不能拿去当生成记忆的素材,use_memories 管的是要不要把已有的记忆注入到之后的会话里。官方 config 示例里这两项注释掉的默认值都是 true。像上面这样写,就是会话照样被记下来,但暂时不往新会话里塞旧记忆,适合手上同时开几个风格差别很大的项目。反过来,如果只是某段时间在做一次性的脏活,不想让这些操作变成以后的经验,就把 generate_memories 关掉、use_memories 留着。
不想改全局配置的话,CLI 交互会话里直接敲 /memories,可以单独决定这一次会话用不用已有记忆、能不能被拿去生成记忆。文档写的是会话级的选择,不会改全局设置,所以换到新项目的第一个会话里关一下就行,别的项目不受影响。桌面版也有 /memories;IDE 插件用的是所连 Codex host 的记忆库,host 上开了记忆之后,会话级控制和 CLI 一样。
还有一个键我觉得比上面两个更该开:
[memories]
disable_on_external_context = true
设成 true 之后,用过外部上下文的会话(MCP 工具调用、联网搜索、tool search)都不进记忆生成。网页上搜来的内容、MCP 返回的数据,我不太想让它们沉淀成长期记忆。示例里这个键默认是 false。旧键名 no_memories_if_mcp_or_web_search 还被当作别名接受,以前写过的配置不用急着改。桌面版对应的是 Allow memories from tool-assisted chats。
想看它记了什么,文件在 ~/.codex/memories/ 下(改过 CODEX_HOME 的就去对应目录找),里面有摘要、长期条目、近期输入和来自旧会话的佐证材料。官方的说法是把这些当成生成出来的状态,排查问题或者要分享 Codex home 目录之前可以看看,但别把手改这些文件当主要控制方式。密钥会在生成时被脱敏,分享前还是自己过一遍比较稳。要清空的话,桌面版 Settings 里有 Delete Codex memories;在本机上这一步还会顺带清掉 Computer History(如果你开了这个功能)。
另外一个容易误会的地方:会话结束后记忆不会马上更新。Codex 会跳过还在进行的和很短的会话,等会话空闲一段时间才在后台生成,Codex 剩余额度低于设定阈值(min_rate_limit_remaining_percent)时也会跳过这一轮。所以改完 generate_memories 发现旧记忆还在,是正常的,关掉生成不等于删掉已有的。
回到那个目录结构的事。官方文档的原话大意是:团队必须遵守的规范放进 AGENTS.md 或提交到仓库里的文档,记忆只是辅助回忆的一层,别当成唯一的规则来源。每个仓库的目录约定、命名规则,写进各自的 AGENTS.md 才靠谱,怎么写可以翻翻站里之前讲 AGENTS.md 和 CLAUDE.md 的那篇。仓库里写明了,它至少有个确定的依据,不用靠记忆去猜。
顺带一提,网上有说法是欧洲用不了 Codex 记忆。官方更新日志 6 月 16 日那条写的是记忆已经向欧洲经济区、英国和瑞士陆续开放,只是在这些地区默认关闭,那个说法已经过时了。
参考的官方页面:
- Memories:https://learn.chatgpt.com/docs/customization/memories (原 https://developers.openai.com/codex/memories 现在会跳转到这里)
- 配置示例:https://developers.openai.com/codex/config-sample
- 更新日志:https://learn.chatgpt.com/docs/changelog
有没有人试过给不同项目用不同的 CODEX_HOME 来彻底隔开记忆?不知道登录状态和其他配置会不会跟着一起要重弄。