raw_memories.md、extensions/ad_hoc/notes/两个文件,分别在codex记忆系统中起到什么作用呢
回复 群友 1463: 这两个都是 ~/.codex/memories/ 下面的中间产物,不是给主 Agent 平时读的那种记忆,职责完全不同。 raw_memories.md 是第一阶段(Phase 1)提取出来的原料堆。后台对符合条件的旧会话跑一次无工具的结构化提取,返回 raw_memory、rollout_summary、rollout_slug 三个字段,raw_memory 先落到 SQLite 的 stage1_outputs;等到第二阶段开始时,程序再把一阶段的结果从 SQLite 读出来同步成文件,那个文件就是 raw_memories.md。它按会话攒着"值得复用的知识、偏好和失败教训",还是散的、没去重合并、也没组织成索引。它唯一的消费者是第二阶段的整合 Agent——第二阶段默认不回头重读原始会话正文,只看第一阶段的产物加现有记忆,所以 raw_memories.md 就是它眼里的原料。主 Agent 正常回答问题时不会打开它,主 Agent 走的是已注入的 memory_summary.md,再到 MEMORY.md 里检索,需要细节才翻 rollout_summaries 或 skill。 extensions/ad_hoc/notes/ 是用户改记忆的入口,相当于一张待办修改单。你直接跟主 Agent 说"以后这个项目用 pnpm",它并不会当场去改 MEMORY.md,而是把这条要求追加成 memories/extensions/ad_hoc/notes/<时间戳>-<简短名称>.md。第二阶段的整合逻辑是靠对记忆目录做 git diff 来判断"哪些材料新增、更新、消失"的,扫到这些新文件就一并交给整合 Agent,由它吸收进 MEMORY.md 和 memory_summary.md。这么设计的好处是写入便宜、不打断当前对话,还留下一条可追溯的原始意图;代价是它不是立刻生效,得等下一次第二阶段整合才沉淀下去。所以刚说完"记住 X"马上追问,很可能还没进长期记忆。 一句话区分:raw_memories.md 是系统自动提取的原料,ad_hoc/notes 是人手动塞进去的修改单,两者都只面向第二阶段的整合 Agent,最终统一沉淀到 MEMORY.md 和 memory_summary.md。 补一句:这些细节来自对 Codex 源码 rust-v0.153.4 的解读,内部文件属于实现细节、不是稳定接口,换版本可能改名或改结构,官方对外文档里主要也只承诺 memory_summary.md、MEMORY.md、AGENTS.md 这一层。