我终于搞懂了 Codex 的“记忆”是怎么回事

最近在学习 Codex 时,最容易混淆的就是 Thread History、Compaction、Memory、AGENTS.md、Context

其实它们不是一回事。

1. Codex 是什么

Codex 可以理解成一个 软件智能体(Agent)产品,底层由 Harness / Agent Loop 负责把大模型、工具、上下文和执行过程串起来。

简单理解:

LLM 是大脑,Codex 是让这个大脑真正能读取代码、调用工具并持续完成任务的运行系统。


2. Codex 里几种容易混淆的“记忆”

Thread History

就是当前这个 Thread 以前发生过什么

例如:

我:这个项目使用 Vue3
Codex:好的

我:所有列表页的操作列固定右侧
Codex:好的

这些属于当前 Thread 的历史。

同一个 Thread 继续对话时,之前的消息、Tool Call、Tool Result 等都可能成为后续 Context 的一部分。


Compaction

Thread 聊得越来越长后,不可能无限把全部原始历史都塞给模型。

Codex 会进行 Compaction(上下文压缩),把以前的大量 Context 压缩成更小的可继续使用状态。

可以简单理解成:

原始历史很多
    ↓
Compaction
    ↓
保留重要信息的压缩状态
    ↓
继续后面的对话

所以:

Compaction = 为了让当前 Thread 能继续聊,而不是为了形成长期 Memory。

需要注意,Compaction 并不一定只是生成一段普通文字摘要,也可以理解成对旧上下文进行更紧凑的保存和表示。


Memory

Memory 才更接近我们平时说的长期记忆

它主要保存过去工作中,未来仍然可能有价值的信息,例如:

用户偏好:
- 技术解释尽量简单
- 修改完成后先测试

长期习惯:
- 回复尽量简洁
- 输出代码前先说明修改思路

历史经验:
- 某类启动问题之前是配置错误导致的

所以可以把它理解成:

Memory = 以后还可能再次有用的长期工作笔记。


3. Memory 不是把每句话都保存下来

假设一次聊天有 100 句话:

打开 user.vue
看看第 38 行
按钮颜色改浅一点
重新启动项目
……

这些大部分只是当前任务过程,没有必要都成为长期 Memory。

更值得长期保留的通常是:

  • 稳定的用户偏好
  • 用户明确纠正过的内容
  • 已经确认的重要事实
  • 长期项目背景
  • 花费较多时间才排查出来的经验
  • 以后很可能继续复用的信息

可以简单理解成:

大量工作过程
    ↓
识别重要信息
    ↓
形成 Memory
    ↓
以后需要时再次使用

4. Memory 是怎么发挥作用的

Memory 的核心并不是:

“大模型的大脑永久记住了这些内容。”

而是:

过去的工作
    ↓
保留有价值的信息
    ↓
以后出现相关任务
    ↓
Codex 使用相关 Memory / Context
    ↓
放进本次模型可见的 Context
    ↓
交给 LLM

所以可以记住:

Memory
=
保存重要信息
+
以后需要时重新使用

至于 Codex 底层具体使用什么数据库、向量库以及完整的检索算法,目前并没有完全公开,因此不要简单理解成“Codex Memory 就是某个向量数据库”。


5. Memory 会全部发给大模型吗

不会把所有长期信息无脑塞进每一次 Context。

例如我现在问:

继续优化这个页面

真正有用的可能是:

- 当前项目的长期规则
- 之前已经做出的设计决定
- 用户的开发习惯
- 之前纠正过的重要要求

而其他无关内容没有必要参与当前任务。

所以可以理解成:

Memory 是长期资料库,Context 是这一次真正拿出来给模型看的资料。


6. AGENTS.md 和 Memory 有什么区别

这两个也很容易混。

AGENTS.md
=
项目长期指导和规则

Memory
=
从过去经验中保留下来的长期信息

例如:

AGENTS.md:
修改代码后必须执行测试

Memory:
用户更喜欢简短、通俗的技术解释

可以类比成:

AGENTS.md = 员工手册
Memory = 员工长期积累的工作笔记

Codex 会自动识别适用的 AGENTS.md,并把其中的项目指导加入模型输入。


7. Thread History、Compaction、Memory 的区别

最后用最简单的方式记:

Thread History
= 当前这个聊天以前发生过什么

Compaction
= 当前聊天太长了,把旧 Context 压缩后继续使用

Memory
= 跨时间保留的长期有价值信息

AGENTS.md
= 项目长期规则和指导

项目文件
= 正式代码和资料

Context
= 这一次真正给大模型看的所有信息

LLM
= 负责看这些信息并思考的大脑

最重要的一句话:

Codex 的“记忆”并不是让大模型永久记住所有聊天,而是把不同类型的信息保存下来,在需要的时候重新组成 Context,再交给大模型。

posted @ 2026-09-04 11:48  人艰不拆_zmc  阅读(21)  评论(0)    收藏  举报