Skip to content

Codex、Claude、Trae 会话上下文管理与记忆系统对比 ​

核对时间:2026-10-21
范围:OpenAI Codex、Claude / Claude Code、TRAE IDE
口径:优先采用官方文档;Claude Code 深层算法参考源码分析;Codex 部分实现结合当前本机 0.163 版本观察。

一、先说结论 ​

三家都不是简单地把“聊天记录全部塞回模型”,而是在解决四个不同问题:

  1. 当前任务需要知道什么:系统提示、用户消息、工具结果、打开的文件。
  2. 长会话超过上下文窗口怎么办:裁剪、摘要、压缩、重读关键文件。
  3. 跨会话应该记住什么:用户偏好、项目事实、纠正反馈、外部资料入口。
  4. 哪些内容现查比记忆更可靠:代码、Git 历史、数据库、线上状态。

可以用一个统一模型理解:

mermaid
flowchart LR
    A[当前任务 Prompt] --> G[上下文组装器]
    B[会话历史 / 摘要] --> G
    C[项目规则文件] --> G
    D[长期记忆与检索结果] --> G
    E[代码索引 / 工具结果] --> G
    G --> F[模型上下文窗口]
    F --> H[模型决策与工具调用]
    H --> I[新消息 / 工具结果]
    I --> G
    H --> J[会话持久化]
    H --> K[记忆提取与更新]

核心差异:

产品最核心的上下文路线记忆观
Codex仓库优先 + 会话持久化 + 自动压缩 + 可检索的本地记忆记忆是辅助,显式指令和当前代码优先
Claude CodeCLAUDE.md + Auto Memory + 分层压缩 + 子 Agent 隔离指令与经验分开,项目记忆高度文件化
TRAE手动指定上下文 + 工作区索引 + 规则 + 记忆文件 + 自动压缩强调“你明确给它看什么”

一句话概括:

  • Codex:工程任务连续性和本地记忆仓库。
  • Claude Code:规则、自动记忆、分层压缩做得最系统。
  • TRAE:显式上下文选择最直接,工作区索引和记忆文件最好理解。

二、不要把四个概念混为一谈 ​

1. 上下文窗口 ​

模型单次请求能看到的 Token 总量,包括:

  • 系统提示和开发者指令;
  • 项目规则;
  • 用户历史消息;
  • 模型历史回复;
  • 工具调用参数与结果;
  • 文件内容;
  • 检索到的记忆。

上下文窗口不是硬盘,也不是数据库。窗口大不等于记得久。

2. 会话历史 ​

一次对话的完整记录,通常可以恢复、继续或分支。它解决的是:

  • 关闭应用后还能继续;
  • 可以回看工具调用过程;
  • 可以从历史节点 Fork;
  • 可以对长历史做压缩。

3. 上下文压缩 ​

当历史消息接近窗口上限时,把旧内容变成摘要、删除冗余工具结果,或只保留当前任务需要的信息。

压缩后的内容仍然只属于当前会话,不等于长期记忆。

4. 长期记忆 ​

跨会话或跨任务保存的知识,常见形式包括:

  • 用户偏好;
  • 项目背景;
  • 曾经纠正过 AI 的规则;
  • 外部资料入口;
  • 历史会话的可检索索引。

长期记忆通常需要主动写入、自动提取、检索召回和过期清理。


三、OpenAI Codex ​

1. 上下文来源 ​

Codex 更偏“仓库是一个可持续工作区”,上下文通常来自:

  • 当前线程消息;
  • 工作区路径、Git 状态和平台环境;
  • 根目录及子目录的 AGENTS.md;
  • 项目或全局 config.toml;
  • Skills、Plugins 和 MCP 工具;
  • 实际读取的文件与命令输出;
  • 历史线程和记忆检索结果。

AGENTS.md 是 Codex 最重要的稳定规则入口。它适合放:

  • 构建、测试、格式化和部署命令;
  • 团队代码规范;
  • 不能破坏的架构边界;
  • 必须遵循的验收方式。

嵌套 AGENTS.md 会按目录层级生效,越靠近当前工作目录的规则越具体。

2. 会话管理方式 ​

当前 Codex CLI 明确支持:

  • codex resume:恢复历史会话;
  • codex fork:从历史会话分叉出独立任务;
  • 本地 thread history 和归档;
  • 线程级别的名称、状态和输出摘要。

因此 Codex 的会话模型不只是“一串消息”,更接近可管理的任务线程:

text
任务线程
├── 当前消息序列
├── 工具调用和结果
├── 自动压缩摘要
├── 工作区与环境快照
├── 关联的子 Agent
└── 可恢复 / 可分支的历史

3. 上下文压缩 ​

当上下文耗尽时,Codex 会自动压缩并继续任务。压缩后不会保留每个原始 Token,而是保留:

  • 用户真实意图和约束;
  • 已确认的决策;
  • 已修改文件和关键错误;
  • 待办与当前进度;
  • 继续任务所需的最小事实。

这意味着:

  • 压缩后细节可能丢失;
  • 关键约束最好同时写进 AGENTS.md 或任务文件;
  • 代码事实应重新读文件验证,不能只相信摘要。

4. 长期记忆实现 ​

当前本机 Codex 0.163 可见以下结构:

text
~/.codex/memories/
├── raw_memories.md
├── rollout_summaries/
├── extensions/
│   └── ad_hoc/
│       └── instructions.md
└── phase2_workspace_diff.md

从当前二进制和本地工作区可以观察到:

  • 记忆有生成开关、使用开关和独立工具;
  • 记忆工具包含 list、read、search、ad_hoc_note;
  • 有“原始记忆提取”和“第二阶段记忆整合”;
  • 会使用历史 rollout 摘要作为输入;
  • Phase 2 通过工作区 diff 管理整合结果;
  • 不是把所有记忆无条件塞进每次请求,而是具有可检索的仓库特征。

可以用下面的分层理解:

text
原始会话
  ↓ Phase 1:提取候选记忆
raw memories / rollout summaries
  ↓ Phase 2:去重、归并、整理
长期记忆工作区
  ↓ 运行时按需读取或检索
当前 Codex 任务

注意:这是当前版本的实现观察,不是稳定的公开产品契约,后续版本可能调整。

5. Codex 的边界感 ​

Codex 的优先级通常是:

text
当前用户明确指令
  > 当前代码和工作区事实
  > AGENTS.md / 项目配置
  > 历史记忆与推断

这也是使用 Codex 时最稳妥的策略:

  • 长期规则写 AGENTS.md;
  • 当前任务约束直接写 Prompt;
  • 项目状态以代码、配置和 Git 为准;
  • 记忆只用来减少重复沟通,不作为外部事实来源。

四、Claude 与 Claude Code ​

Claude 要分成两个层面看:

  • Claude 聊天产品:跨聊天记忆、历史聊天搜索、Project Memory;
  • Claude Code:项目规则、自动记忆、上下文压缩、子 Agent 隔离。

1. Claude 聊天产品的记忆 ​

官方当前机制包括两套能力:

历史聊天搜索 ​

Claude 可以按需搜索过去聊天,检索使用 RAG,并以工具调用形式出现。

搜索边界:

  • 普通聊天可以搜索项目外的历史会话;
  • Project 内的聊天通常只检索当前 Project;
  • 搜索结果会带原始聊天引用;
  • Incognito Chat 不进入历史和记忆。

自动记忆 ​

Claude 会把记忆保存成一组独立主题,而不是简单保存完整聊天摘要。记录内容包括:

  • 用户角色、项目和专业背景;
  • 人物、地点和工作上下文;
  • 沟通偏好、技术偏好;
  • 项目详情和进行中的工作。

控制能力较完整:

  • 全局开关;
  • 单次聊天关闭记忆;
  • Project 独立记忆;
  • 查看、编辑、删除单条记忆;
  • 支持敏感主题开关和禁止保存的信息类型;
  • 支持导入、导出记忆。

Claude Project Memory 的隔离逻辑是:

text
Project A Memory
  ├── 使用 A 的项目记忆
  ├── 可叠加账号级普通记忆
  └── 不读取 Project B 的记忆

2. Claude Code 的两套记忆 ​

Claude Code 每次会话开始时仍是一个新的上下文窗口,但会加载两类持续信息:

人工编写的 CLAUDE.md ​

加载顺序从广到窄:

text
组织统一策略
  ↓
用户全局 ~/.claude/CLAUDE.md
  ↓
项目 ./CLAUDE.md 或 .claude/CLAUDE.md
  ↓
项目本地 CLAUDE.local.md

特点:

  • 同一目录树的文件会拼接,不互相覆盖;
  • 子目录规则按需加载;
  • @path/to/file 可以导入其他文件,最多四层;
  • .claude/rules/*.md 可以按路径 glob 生效;
  • CLAUDE.md 是上下文,不是强制安全策略;
  • 强制阻止某类操作应使用 Hook。

Claude 自动写入的 Auto Memory ​

Auto Memory 默认开启,按仓库隔离,存储在:

text
~/.claude/projects/<project>/memory/
├── MEMORY.md
├── user_role.md
├── feedback_testing.md
├── project_deadline.md
└── reference_issue_tracker.md

四类记忆:

类型记录内容
user用户角色、经验和偏好
feedback用户纠正过什么、确认过什么方法
project代码和 Git 中无法推导的项目状态、决策、截止时间
referenceLinear、Grafana、Dashboard 等外部资料入口

加载策略:

  • MEMORY.md 每次会话加载前 200 行或前 25KB;
  • 具体主题文件不全部加载,需要时再读;
  • Auto Memory 是机器本地数据,不跨电脑同步;
  • 同一 Git 仓库的 worktree 和子目录共享项目记忆;
  • 子 Agent 默认不继承主会话 Auto Memory。

这是一个很典型的两级结构:

text
MEMORY.md = 轻量索引,常驻
topic files = 详细内容,按需读取

3. Claude Code 的上下文压缩 ​

Claude Code 的公开机制是:

  • 接近窗口上限时自动压缩;
  • /compact 可手动压缩;
  • /compact focus on ... 可以指定摘要重点;
  • /context 查看当前上下文组成;
  • /memory 打开记忆文件;
  • 子 Agent 使用独立上下文窗口,只把摘要带回主线程;
  • 压缩后重新注入根目录 CLAUDE.md、Auto Memory、技能说明和 Plan;
  • 压缩后最多重新读取最近修改的 5 个文件。

从源码分析看,Claude Code 还有更细的分层防御:

  1. 工具结果预算;
  2. 旧历史裁剪;
  3. Microcompact 清理旧工具结果;
  4. Context Collapse 做增量投影摘要;
  5. Auto Compact 做 LLM 全量摘要;
  6. 超限硬停;
  7. 413 错误后的 Reactive Compact。

这部分属于源码分析结论,不应直接当成 Anthropic 对用户承诺的永久实现。

4. Claude 的设计特点 ​

Claude Code 的设计重点不是“尽量多存”,而是:

  • 人工规则与 AI 自动记忆分开;
  • 索引常驻、详情按需;
  • 压缩后重新注入稳定规则;
  • 子 Agent 隔离大文件和高噪声调查;
  • 记忆文件使用 Markdown,可审计、可编辑。

它的优势是体系完整;风险是规则文件和记忆文件会持续膨胀,需要定期清理。


五、TRAE ​

1. 显式上下文 ​

TRAE 最强调的是“把需要的上下文明确加入对话”:

  • 当前打开文件默认可见;
  • 选中代码后可“添加到对话”;
  • 终端输出可加入对话;
  • 用 # 添加:
    • #Code
    • #File
    • #Folder
    • #Workspace
    • #Document
    • #Web

这让 TRAE 更像一个“上下文可编排的 IDE”,而不是完全依赖模型自己猜该读什么。

2. 工作区代码索引 ​

TRAE 可以为当前工作区建立代码索引。

使用 #Workspace 或 #Folder 时,AI 会结合索引理解整个项目。可设置:

  • 自动索引;
  • 代码变化后自动更新;
  • 手动重建;
  • 忽略文件,把敏感或无关文件完全排除。

这一层更接近“代码语义检索”,与长期记忆是两套东西:

text
代码索引 = 当前代码库是什么样
长期记忆 = 用户和项目过去沉淀了什么

3. 上下文压缩 ​

TRAE 每个对话有独立上下文窗口。

官方机制:

  • 每轮对话显示上下文使用率;
  • 接近或超过窗口上限时自动压缩;
  • 用户可以手动点击“压缩”;
  • 压缩会移除冗余信息,只保留与当前任务相关的内容;
  • 新建会话后,先前上下文会清空。

所以 TRAE 的会话连续性主要依赖:

  • 不关闭当前会话;
  • 使用压缩延长当前会话;
  • 把真正跨会话的内容写进 Rule 或 Memory。

4. 规则系统 ​

全局规则:

text
~/.trae/user_rules

项目规则:

text
项目/.trae/rules/*.md

项目规则支持四种生效方式:

方式行为
始终生效当前项目所有对话加载
指定文件生效匹配 globs 时加载
智能生效根据 description 判断相关性
手动生效使用 #Rule 显式引用

其他特点:

  • 规则目录最多递归识别 3 层;
  • 支持子目录专属规则;
  • 支持导入 AGENTS.md;
  • 支持导入 CLAUDE.md 和 CLAUDE.local.md;
  • 规则适合项目约束,记忆更适合偏好和协作经验。

5. TRAE Memory ​

TRAE 有两类记忆:

类型作用域文件
全局记忆当前用户所有本地项目~/.trae/memory/user_profile.md
项目记忆当前用户当前项目~/.trae/memory/projects/{project_path}/project_memory.md

限制:

  • 只保存在本地;
  • 不跨电脑同步;
  • Agent Window 中只有本地任务和工作树任务支持生成记忆;
  • 新会话不会自动带走旧会话上下文,但可以重新读取 Memory。

不会自动保存:

  • 一次性或临时指令;
  • 含糊、不确定的偏好;
  • 密码、个人隐私等敏感信息。

管理方式:

  • 设置页打开记忆开关;
  • 直接编辑 Markdown 文件;
  • 对话中要求 AI 创建、更新、删除记忆;
  • AI 根据上下文自动创建和更新。

6. TRAE 的设计特点 ​

TRAE 的优势是可见性和可控性:

  • 文件、代码、终端、网页可以精确加入上下文;
  • 代码索引和记忆分得比较清楚;
  • 规则和记忆都是 Markdown,用户容易检查。

主要边界:

  • 记忆是机器本地数据;
  • 新会话不会继承完整会话历史;
  • 如果用户不主动 #File / #Folder,模型是否获得完整上下文取决于索引状态。

六、三家横向对比 ​

1. 能力矩阵 ​

维度CodexClaude CodeTRAE
当前会话历史完整线程,可恢复、可 Fork完整会话,可恢复和回退完整当前对话
项目规则AGENTS.md 层级生效CLAUDE.md 多级拼接 + .claude/rules.trae/rules + 导入 AGENTS.md / CLAUDE.md
自动上下文压缩有有,分层最细有,自动 + 手动
长期记忆本地记忆仓库,提取 + 整合 + 检索工具Auto Memory,索引 + 主题文件全局 / 项目 Markdown 记忆
历史聊天检索线程恢复与本地记忆检索Claude 聊天产品支持 RAG 搜索历史聊天主要依赖当前会话与 Memory
代码库检索文件读取、搜索、Skills、MCP文件工具、按需规则、子 Agent工作区代码索引 + #Workspace
团队共享AGENTS.md、Skills、PluginsCLAUDE.md、Project、团队设置.trae/rules、仓库文件
记忆透明度中,需看本地目录高,MEMORY.md 与主题文件高,两个 Markdown 文件
子上下文隔离子 Agent 独立上下文子 Agent 独立窗口,效果成熟多 Agent / Agent Window
最突出的强项任务线程和工作区连续性记忆体系完整、压缩精细显式上下文选择、索引直观

2. 稳定规则放在哪里 ​

需求推荐位置
全团队必须遵守仓库内 AGENTS.md 或 CLAUDE.md / .trae/rules
个人跨项目偏好Codex Memory、Claude 用户级 CLAUDE.md、TRAE 全局记忆
当前仓库个人偏好Claude CLAUDE.local.md、Codex 本地 AGENTS.md、TRAE 项目记忆
当前任务一次性约束直接写本次 Prompt
大段外部资料文件、文档集、MCP、RAG,不建议塞进 Memory
可执行强制约束Hook、权限系统、CI,不应该只靠 Memory

3. 记忆的可靠性排序 ​

在编程任务中,建议始终采用下面的优先级:

text
代码与运行结果
  > Git 历史和配置
  > 当前用户明确指令
  > 项目规则文件
  > 自动记忆
  > 模型推断

原因很简单:

  • 代码会变化;
  • 记忆可能过期;
  • 压缩摘要可能漏掉细节;
  • 自动记忆可能把一次性偏好误判为长期偏好。

七、三者背后的共同趋势 ​

1. 从“聊天记录”转向“分层上下文” ​

早期产品只保存消息。现在都拆成:

  • 当前轮;
  • 会话摘要;
  • 项目规则;
  • 检索内容;
  • 长期记忆;
  • 工具结果预算。

2. 从“全部常驻”转向“索引常驻、详情按需” ​

典型做法:

  • Claude MEMORY.md 常驻,主题文件按需;
  • Codex Memory 使用 list/read/search 工具;
  • TRAE #Workspace 依赖代码索引,再按需展开文件。

3. 从“模型自己记”转向“用户可审计” ​

三家都逐渐采用 Markdown 或类似透明存储:

  • 用户能直接看;
  • 能编辑;
  • 能删除;
  • 能放进 Git 管理;
  • 不必依赖不透明的向量黑盒。

4. 子 Agent 成为上下文隔离手段 ​

大文件调查如果都放主线程,会快速污染上下文。

更成熟的方式是:

text
主 Agent:
  负责目标、决策和最终修改

子 Agent:
  在独立窗口读取大量文件
  只返回结论、证据路径和差异摘要

5. 压缩不等于记忆 ​

压缩解决“当前会话继续运行”; 记忆解决“下一个会话还能知道什么”。

把压缩摘要当长期记忆,会带来三个问题:

  • 摘要没有稳定结构;
  • 重要与不重要内容混在一起;
  • 无法按主题更新和删除。

八、实践建议 ​

1. 通用目录设计 ​

可以在项目里保持一套跨工具可复用结构:

text
project/
├── AGENTS.md                 # Codex / TRAE
├── CLAUDE.md                 # Claude Code
├── .claude/
│   └── rules/                # Claude 路径规则
├── .trae/
│   └── rules/                # TRAE 路径规则
├── docs/
│   ├── architecture.md       # 可由三端共同读取
│   ├── commands.md
│   └── decisions.md
└── .ai/
    ├── project-context.md
    └── known-pitfalls.md

不必把同一份内容复制三遍。更推荐:

  • 公共事实放 docs/;
  • 各工具规则文件只保留入口和差异;
  • 用 @docs/...、文件引用或显式上下文加载公共文档;
  • 项目规则保持短小,避免每次会话都消耗大量 Token。

2. 规则文件应该写什么 ​

适合:

  • 构建和测试命令;
  • 代码分层与目录边界;
  • 禁止修改的协议和接口;
  • 提交和发布流程;
  • 常见错误和验证方法。

不适合:

  • 当前任务的临时需求;
  • 大段源码;
  • 频繁变化的库存、价格、URL;
  • 密码、Token、用户隐私;
  • 可以从代码直接看出的事实。

3. 记忆文件应该写什么 ​

适合:

  • “我更偏好简洁回答”;
  • “这个项目的发布必须走 dev → main”;
  • “这个仓库的时区固定为 Asia/Shanghai”;
  • “遇到某类问题先看哪个 Dashboard”;
  • “用户已经确认过某个设计取舍”。

不适合:

  • “今天先改这个文件”;
  • “这次测试使用 1.3.0”;
  • “某函数在第 123 行”;
  • “线上库存是 100”;
  • “刚才那个临时 token”。

4. 长任务建议 ​

  1. 任务开始前写清目标、边界和验收标准。
  2. 大调研交给子 Agent 或分批读取。
  3. 关键决策及时写入计划文件或决策记录。
  4. 上下文压缩后重新确认代码状态。
  5. 任务结束前把可复用经验沉淀到规则或记忆,不把全部聊天当知识库。
  6. 每月清理过期偏好、重复规则和失效路径。

5. 安全边界 ​

  • Memory 不能保存密钥、密码、身份证、银行卡等敏感数据。
  • 向量检索和聊天搜索需要明确数据可见范围。
  • 团队记忆可能进入仓库或云端,写入前先确认是否会随 git push 上传。
  • 记忆必须可删除、可导出、可关闭。
  • 生产系统的事实必须实时查询,不能依赖模型记忆。

九、最终判断 ​

更适合谁 ​

场景推荐
大型仓库、多线程任务、需要恢复和 ForkCodex
重视项目规则、自动记忆、长会话稳定性Claude Code
希望自己精确选择文件、网页、终端上下文TRAE
需要跨产品共享项目规范AGENTS.md + docs/,各工具做薄适配
只在当前任务内使用会话历史 + 压缩,不必写长期记忆
要求强制执行安全规则Hook / 权限系统 / CI,而不是 Memory

最重要的一句话 ​

上下文管理决定模型“现在能看见什么”,记忆系统决定模型“下次还愿意相信什么”。

真正可靠的 AI 编程工作流,不是追求“记住全部”,而是建立:

  • 少量稳定的项目规则;
  • 可检索的长期记忆;
  • 必要时重新读取代码;
  • 关键决策显式落盘;
  • 压缩后能够恢复任务主线。

十、参考来源 ​

OpenAI Codex ​

Claude ​

TRAE ​