先说个背景,这两个工具我从早期版本一直用到现在,Claude Code 当主力跑了快半年,Codex 也断断续续在不少项目里试过。经常有人跑来问我:Claude Code 和 Codex 到底怎么选?我一般不急着回答,而是反问一句——你先搞清楚它们的记忆体系是怎么工作的。因为说实话,在补全能力和终端交互上,这俩都已经做到了足够好的水平,真正拉开体验差距的,是它们在长时间、跨会话、多任务场景下的记忆表现。记忆体系决定了这个工具是越用越顺手,还是每次开新会话都像第一天认识你的项目。
这篇文章不打算做那种参数罗列的对比,我会从实际使用的角度,把两个工具的记忆机制、配置方式、踩坑经验完整拆开讲。无论你是刚装好 Claude Code 的新手,还是已经在纠结要不要把 Codex 纳入工作流的老人,这份对比应该都能给你一个比较清晰的判断依据。
1. 先搞清楚:两个工具的定位和记忆哲学
1.1 Claude Code:终端里的结对编程,记忆靠"加载"
Claude Code 是 Anthropic 推出的命令行编程代理,跑在终端里,直接读写你的项目文件。它的工作方式更像一个"结对程序员":你给它一个任务,它自己读代码、查文档、改文件、跑命令,每一步都会向你汇报。整个过程中,你和它可以像两个同事一样对话,它会记住你在对话里说过的偏好、纠正过的错误、强调过的约束。
但 Claude Code 的核心记忆机制是"加载式"的——它会在每次启动时候把一份叫做 CLAUDE.md 的说明文件读进上下文。这份文件相当于项目的"入职手册",告诉 Claude 这个项目的技术栈、目录结构、代码风格、坑点、常用命令。只要这个文件写得好,它每次开工都能快速进入状态,不会出现那种"才过了一天就忘了项目规则"的尴尬。
我在实际使用中最大的感受是:Claude Code 的记忆非常依赖"初始化质量"。你第一次进入项目时给它讲清楚的东西,它会用 CLAUDE.md 固化下来;但如果你没写这个文件,或者写得很敷衍,那它的长期记忆其实是很弱的,每次开新会话基本就靠对话中的只言片语去猜。
1.2 Codex:云端优先的自动化代理,记忆靠"检索"
OpenAI 的 Codex 是另一个定位的选手。它早期是个跑在沙箱里的自动化代理,现在也有了本地终端模式,但整体设计依然是"云端优先"——很多计算和模型推理在云端完成,会话状态也跟账号绑定,可以在不同设备间同步。
Codex 的记忆体系跟 Claude Code 有本质区别。它也支持一份项目级说明文件,只不过文件名是 AGENTS.md。这份文件的作用和 CLAUDE.md 类似,都是告诉 AI 这个项目的基本规则。但 Codex 的上下文管理更倾向于"检索式":它不是简单地把整个说明文件塞进对话里就不管了,而是会在需要的时候动态决定把哪些文件内容、哪些历史信息放进上下文窗口。
这里有一个特别值得注意的点:Codex 在长任务中会自动管理上下文。当对话历史太长、接近模型上下文上限时,它会主动裁剪早期内容或做摘要压缩。这是好事,能让单个会话撑得久一点;但也有个隐患——如果它裁剪掉的恰好是你在对话早期交代的重要约束,后续任务可能就跑偏了。
1.3 为什么记忆体系成了选型关键
我见过太多人用这两个工具,一开始觉得"都差不多啊",用了一周之后开始分化:有人越用越顺,有人天天骂"AI 又忘了我的要求"。差别其实不在模型能力,而在记忆体系跟使用习惯匹不匹配。
举个最典型的场景:你手上有三个项目,A 项目是 Java 老项目、B 项目是 Next.js 新项目、C 项目是 Python 数据项目。如果你用 Claude Code,每个项目塞一个 CLAUDE.md,切换项目时它会自动加载对应的规则,基本能做到"换项目如换人"。而 Codex 在这方面更依赖 AGENTS.md 的编写质量,以及你对会话的管理方式——如果你经常用 resume 恢复旧会话,它会延续之前的上下文;但如果总是开新会话,那就要靠 AGENTS.md 把项目背景讲清楚。
所以说,记忆体系不是一个"谁更强"的问题,而是一个"谁更适合你的工作流"的问题。下面我会把两个工具的记忆架构拆开来看,再做一次实测对比。
2. 记忆体系架构对比:CLAUDE.md 与 AGENTS.md
2.1 Claude Code 的长期记忆载体
Claude Code 的长期记忆主要有三个层次。
第一个层次是全局记忆。它存放在用户目录下的~/.claude/CLAUDE.md,对所有项目生效。我习惯在里面写一些通用的偏好,比如"所有新增代码必须写测试""不要使用 console.log 调试""代码注释用中文"。这些规则会随每一次会话自动加载,不管我打开哪个项目都会遵守。
第二个层次是项目记忆。也就是项目根目录下的CLAUDE.md。它的优先级比全局记忆高,适合写这个项目专属的约定。如果你在某个子目录下又放了一个CLAUDE.md,它会进一步覆盖父目录的配置。这个嵌套机制特别适合 monorepo 结构——根目录写团队规范,各个子包写各自的实现细节。
第三个层次是会话中的动态记忆。Claude Code 会在很长的会话里自动生成摘要,把早期的内容压缩后继续保留在上下文里。同时它还支持--resume和--continue参数,可以恢复之前的会话。但要注意,这里的"恢复"更像是"接着上次的对话继续聊",它恢复的是整个会话的历史,而不是单独的记忆块。
另外一个容易被忽略的机制是 Skills。Claude Code 支持在.claude/skills目录下存放自定义技能模板,每个技能包含一个 SKILL.md 文件,描述这个技能的使用场景和执行步骤。当任务匹配到某个技能时,Claude 会主动加载对应的指令和模板。这其实也是一种"半持久化"的记忆——它把特定任务的执行知识固化下来,下次遇到类似任务不用重新教一遍。
2.2 Codex 的长期记忆载体
Codex 的长期记忆体系在结构上跟 Claude Code 有相似之处,但设计哲学不同。
Codex 支持在项目根目录放置AGENTS.md,这个想法一定程度上来自业界已经比较流行的 agent 协作规范。AGENTS.md里可以写项目背景、构建命令、代码风格、测试要求等。和 CLAUDE.md 类似,它也支持在子目录放多个AGENTS.md来细分规则。
但 Codex 的上下文策略更依赖动态检索。它会根据当前任务判断需要读取哪些文件,然后把这些文件内容注入到上下文中。也就是说,Codex 不一定会在会话开始时就完整读取你的 AGENTS.md 和项目文件,而是"按需取用"。这在项目非常大的时候是个优势——不会一下子把上下文塞满;但劣势也很明显:如果它的检索判断不够准确,可能漏掉关键信息,导致理解偏差。
Codex 的会话也支持云同步。你用codex resume可以恢复之前的会话,而且因为状态在云端,换一台电脑也能接着聊。这个特性对于经常换机器的人来说非常友好。不过要注意的是,云同步不等于永久记忆,会话列表需要你主动管理,太旧的会话可能会被清理或归档。
2.3 自动摘要与动态检索的本质差异
这是 Claude Code 和 Codex 记忆体系最深层的差异。
Claude Code 的处理方式偏向"压缩历史"。当对话变长,它会定时把早期内容做摘要,把压缩后的要点保持在上下文里。这种方式的好处是上下文里始终有一个"故事的梗概",AI 不会彻底忘记之前发生的事情;但风险在于摘要本身会丢失细节——如果早期对话里某个关键参数没有被总结进去,后面就可能出问题。
Codex 的处理方式偏向"按需取回"。它在长任务中更倾向于控制上下文窗口,不让历史无限膨胀,而是在需要时重新读取相关文件来获取信息。这种方式的优势是能在有限窗口内保持高信息密度;但问题在于"什么算相关"是由模型判断的,判断失误时就会出现"明明文件里写了,它却不知道"的情况。
用生活化的类比来说:Claude Code 像一个随身带笔记本的人,会把聊过的重要内容记在纸上,时间久了纸多了就翻一翻摘要页;Codex 像一个图书管理员,不记流水账,但你问什么他去书架上给你找,找到了就用,找不到就只能说不清楚。
2.4 表格总览:记忆功能对照
为了更直观地对比,我把两个工具的关键记忆功能整理成一个表格:
| 功能维度 | Claude Code | Codex |
|---|---|---|
| 项目级记忆文件 | CLAUDE.md | AGENTS.md |
| 全局记忆 | 支持(~/.claude/CLAUDE.md) | 支持(全局 AGENTS.md,需要手动配置) |
| 子目录记忆 | 支持多级 CLAUDE.md 覆盖 | 支持多级 AGENTS.md |
| 长会话处理 | 自动摘要 + 会话恢复 | 动态上下文裁剪 + 会话恢复 |
| 会话云同步 | 不支持原生云同步 | 支持账号级云同步 |
| 技能/模板记忆 | 支持 Skills(SKILL.md) | 支持自定义指令,能力范围在持续扩充 |
| 记忆文件嵌套优先级 | 子目录覆盖父目录 | 子目录覆盖父目录 |
| 是否自动加载记忆 | 是,启动即加载全局+项目 CLAUDE.md | 按需动态检索 AGENTS.md 内容 |
这张表基本能看出两个方向:Claude Code 是"开箱即有记忆",Codex 是"任务驱动取记忆"。没有谁绝对好,主要看你更喜欢哪种交互节奏。
3. 实操对比:同一个项目在两个工具里的记忆表现
3.1 测试场景设计
为了不凭印象说话,我专门设计了一个实验场景来对比两个工具的记忆表现。我准备了一个本地 React 项目,在项目里配置好了 CLAUDE.md 和 AGENTS.md,两边的配置内容尽可能等价:都写了技术栈、目录结构、命名规范、测试要求、一个"价格字段用整数分存储"的业务规则。
然后我做了这么几轮操作:
- 第一轮:让 AI 给我添加一个商品列表页。
- 结束会话(不 resume),第二天重新开一个新会话。
- 第二轮:让 AI 给商品列表页增加一个排序功能。
- 结束会话(不 resume),再把会话恢复出来。
- 第三轮:直接问 AI "我们的价格字段应该用什么类型存储?"
我重点观察三件事:新会话能不能记住项目规则;恢复旧会话后上下文是否完整;模型对业务细节的记忆是否准确。
3.2 Claude Code 的实测记录
第二天新建会话进入项目,我故意没有提到任何项目背景,直接说"加个排序功能"。Claude Code 的表现是:它能通过 CLAUDE.md 知道这是 React + TypeScript 项目,知道组件放在 src/components,知道要用函数组件,知道测试要放在同目录。所以在处理排序逻辑时,它自动把相关组件和类型定义文件都翻了出来,写出来的代码风格跟项目原有风格保持一致。
让我印象最深的是第三轮。我直接问"价格字段应该用什么类型存储",它干净利落地回答"整数分",并且补充了一句"这是项目规则里写的,浮点数容易产生精度问题"。这说明 CLAUDE.md 里的规则确实被准确记住了,没有因为新会话而丢失。
不过我也发现一个细节:Claude Code 在恢复旧会话时,如果会话过长,会先输出一段恢复历史的摘要,里面包含之前提到的关键决策。这个设计挺好的,相当于在继续工作之前先给你一个"上一次我们聊到哪了"的提醒。
3.3 Codex 的实测记录
同样的项目、同样的任务,Codex 的表现有点不一样。第一天添加列表页时它表现很好,代码质量和操作流程都没问题。第二天新会话让它加排序功能,它也能正确识别项目结构和基本约定,但对"价格字段用整数分"这条规则的记忆不如 Claude Code 那么敏感——我特意让它在某个地方使用了浮点数计算,它没有主动纠正,直到我提醒后才说"对,按照项目规范应该用整数分"。
这说明什么?说明 Codex 对新会话的上下文注入更多是"按需检索"。它的 AGENTS.md 里确实写了价格字段的规范,但在处理排序功能时,它认为核心上下文是列表组件和排序逻辑,没有把价格相关的业务规则放进活跃上下文,所以那块规则就暂时"沉睡"了。而 Claude Code 在会话开始时就把 CLAUDE.md 完完整整加载进来了,规则时刻在线。
Codex 的恢复会话表现不错。用codex resume恢复之后,之前讨论过的设计决策基本都还在,甚至我在另一台电脑上恢复同一个会话也成功了——这个云同步能力是 Claude Code 目前做不到的。
3.4 实测结论与我的判断
这个实验虽然样本不大,但足够说明问题了:
- 如果你的工作流是"每个任务开新会话,经常在多项目之间切换",Claude Code 的加载式记忆更稳,因为它每次都会把项目规则完整带进来。
- 如果你的工作流是"一个长任务跨多天持续做,经常换设备接着干",Codex 的云同步和动态检索更省心。
- 如果你们团队人多、项目大,Codex 按需取文件的机制能让上下文更精简,在超大代码库里反而有优势;但代价是项目规则"偶尔掉线",需要你用提问或 review 去兜底。
拿我自己来说,做小项目、快速验证想法时我更愿意开 Claude Code,因为它的大脑里始终装着项目规矩,我能少说很多废话。做那种需要跨很多文件、持续好几天的重构时,我反而会用 Codex 的恢复会话能力,因为它能让我在多个开发机之间无缝切换。
4. 记忆体系配置实战
4.1 写出高效的 CLAUDE.md
现在我给 Claude Code 写 CLAUDE.md 已经形成了一套固定套路。最基本的要求是这个文件必须让 AI 在第一次打开项目时就对全局有准确认知。我的建议是至少包含五块内容:项目概述、技术栈、目录结构、开发约定、常用命令。
项目概述不要写废话,两到三句话讲清楚这个项目是干什么的、核心业务是什么、用户群体是谁就行。技术栈要写具体版本,别只写"React",要写"React 18 + TypeScript 5 + Vite",这样 AI 在判断依赖兼容性时会少踩坑。目录结构不要贴整棵树,只标注关键路径,比如:
# 项目根目录结构 - src/app # Next.js App Router 页面 - src/components # 公共组件 - src/lib # 工具函数和数据访问 - src/types # 全局 TypeScript 类型开发约定是重点。把你在 code review 时反复强调的东西全部写进去:命名规范、组件写法、状态管理方案、错误处理方式、测试要求。写得越具体,AI 的代码就越像团队风格。我还会专门留一个"踩坑记录"小节,把项目里出现过的问题和规避方法写下来,比如"价格字段必须用整数分存储""图表组件必须在服务端渲染,否则会白屏"。
常用命令也是必写项。开发启动命令、测试命令、构建命令、代码检查命令都要列清楚,否则 AI 可能凭猜测去执行命令,一旦猜错就浪费时间。
4.2 写出高效的 AGENTS.md
Codex 的 AGENTS.md 写法跟 CLAUDE.md 很相似,但因为 Codex 偏向按需检索,所以这里的内容组织要更讲究"搜索友好"。也就是说,关键规则要尽量用清晰的小标题和关键词写出来,方便模型判断何时该读取哪一段。
一个比较实用的写法是:把规则按触发的任务类型分组。比如你有一个支付功能,就单独写一个"## 支付模块规范"的小节,里面包含支付相关的所有约束。这样 AI 在处理支付任务时大概率会把整段规则拉进上下文,而不是只检索到一句孤立的话。
我还会在 AGENTS.md 里加一个"常见任务入口"小节,把项目中最常见的几种任务和对应的文件路径、操作流程写出来。这样做等于给 AI 提供了一个"工作索引",它接到任务后能更快定位到相关代码。
另外一个实测有效的小技巧是:把最核心、最不能违反的规则放在 AGENTS.md 的顶部。因为即便模型按需检索,它在读取文件时对前面的内容注意力通常更高。
4.3 全局记忆、嵌套记忆与团队共用
之前提到了全局记忆。Claude Code 的全局 CLAUDE.md 我建议只写"适用于所有项目的铁律",比如代码注释语言、禁止使用某些反模式、统一使用 2 空格缩进等。不要把项目相关的内容写进去,否则全局规则和项目规则冲突时,处理起来会很麻烦。
嵌套记忆是 monorepo 场景的救命稻草。我最近维护的一个项目是典型的 monorepo,根目录的 CLAUDE.md 写团队公共规范,packages/backend 下的 CLAUDE.md 写后端特有约束,packages/web 下写前端特有约束。实测下来 Claude 能正确区分不同目录下的规则,在改后端代码时不会拿前端规范来约束自己。Codex 的 AGENTS.md 同样支持这种嵌套方式,但我个人感觉它的嵌套触发不如 Claude Code 稳定,偶尔会出现"用父目录规则处理子目录任务"的情况。
团队共用方面,这两个工具都支持把记忆文件提交到 Git 仓库里。我建议把 CLAUDE.md 和 AGENTS.md 都纳入版本管理,这样新成员加入时,AI 工具的文件就是团队的"隐性文档"。但要注意:不要把个人偏好写进共享文件,否则会影响其他人的使用体验。个人层面的偏好放在各自的全局配置里。
4.4 让记忆"省 Token"的小技巧
经常有人抱怨这些 AI 编程工具烧 Token 烧得厉害。其实记忆体系用好了,反而能省 Token。
我的第一个技巧是克制 CLAUDE.md 的篇幅。很多人想把所有内容都塞进去,结果文件越来越长,每次会话加载的 Token 也越来越多。实测下来,一份好的 CLAUDE.md 控制在 50 行左右是最舒服的,既能覆盖核心规则,又不会让上下文变得臃肿。
第二个技巧是善用子目录记忆。如果一个仓库里某个目录很复杂,不要把所有细节都写进根目录的 CLAUDE.md,而是放在子目录自己的 CLAUDE.md 里。这样每次会话只加载根目录的文件,只有当你修改那个子目录时,才会额外加载子目录的规则。这相当于把 Token 花在刀刃上。
第三个技巧是主动管理会话。不需要长时间保留的会话,该清理就清理。有时候我会故意结束一个跑偏的会话,重新开一个,让 AI 通过 CLAUDE.md 重新进入状态——这比在一个已经被带歪的对话里反复纠正要省钱得多。
5. 常见问题与排查实录
5.1 Claude Code 最常见的记忆失效场景
场景一:改了 CLAUDE.md 但 AI 还是按旧规则做事。这种情况我遇到过好几次,通常有两个原因:一是 AI 是在你修改文件之前就发起了会话,它加载的是旧规则,此时重启会话就能解决;二是子目录存在一个更高优先级的 CLAUDE.md 把根目录规则覆盖了,你需要检查一下当前工作目录下是否有嵌套的 CLAUDE.md。
场景二:会话太长导致摘要丢失细节。Claude Code 的长会话摘要机制确实会丢信息,尤其是当你在一段很长的对话里多次改变方案时,摘要可能只保留最新方案,旧方案的背景就被压缩掉了。我的习惯是:一旦发现对话超过两小时或者上下文提示接近上限,就把当前进度整理到 CLAUDE.md 的"当前进度"小节,然后开新会话继续。
场景三:遇到 "your limits are temporarily boosted. your weekly claude code limit is 50%" 这类提示。这说明你当前的账号在做限流调整,新注册账号有时会在早期获得临时提升额度。这不算记忆问题,但会影响你去做长任务时利用会话记忆的连续性,因为额度不够时你可能需要省着点用。遇到这种情况,我建议优先保证对核心任务的记忆投入,把不必要的上下文请求降到最低。
场景四:Windows 下用 PowerShell 安装后 CLAUDE.md 不生效。很多人在 PowerShell 里安装 Claude Code 时遇到报错,常见原因是执行策略限制。你可以用管理员权限运行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned然后重新安装。装好后如果发现记忆文件没生效,检查一下工作目录是否拼写正确,以及文件是不是真的叫 CLAUDE.md——大小写在这个场景下很重要。
5.2 Codex 最常见的上下文丢失场景
场景一:新会话里 AGENTS.md 规则不生效。当你开了新会话但没有显式引用 AGENTS.md 时,Codex 可能会先按通用知识回答问题,而不是主动去读项目文件。解决方法是直接问它"这个项目的 AGENTS.md 里写了什么规范?"或者把相关文件路径告诉它,让它主动去读。
场景二:长会话自动裁剪后,早期约束失效。Codex 的上下文管理会在会话过长时裁剪内容,被裁掉的可能是你早期指定的约束。这是我用过多次后发现的坑。最稳妥的做法是每隔一段时间就问一句"我刚才说过的核心约束是什么?"来确认上下文里还保留了哪些关键信息。如果发现丢了,就重新说明一次。
场景三:配置了不支持的模型导致请求失败。报错信息类似 "the 'gpt-5.6-sol' model is not supported when using codex"——这是模型名写错或者版本不被当前 Codex 版本支持。这个错误看起来像是启动失败,实际上它会让你根本无法进入会话,更别提记忆了。解决办法是检查你的配置文件里指定的模型名是否和 Codex 官方支持的模型一致,改成支持的模型名称即可。
场景四:代理或端点错误。很多人在用第三方工具切换 Claude Code 和 Codex 时,会遇到类似 "local proxy failed while handling codex endpoint /responses" 的报错。这个通常是本地代理服务没有正确把请求转发到 Codex 的端点。排查思路是先确认代理服务本身在运行,再确认你配置的转发规则里端点地址是否正确。这个问题本质上是"请求压根没到 Codex",不是记忆问题,但你会误以为上下文没同步——因为新会话里什么都记不住。先解决连通性,再谈记忆。
5.3 报错速查与解决建议
| 报错内容 | 可能原因 | 解决建议 |
|---|---|---|
| weekly claude code limit 提示 | 账号临时额度调整 | 降低会话频率或等待额度恢复,核心任务优先执行 |
| claude code powershell 安装报错 | 系统执行策略限制 | 用管理员权限调整执行策略后重新安装 |
| codex 打不开 / codex desktop 版启动失败 | 安装不完整或依赖缺失 | 重新安装桌面版,检查网络环境是否允许访问 |
| gpt-5.6-sol model not supported | 模型名配置错误 | 修改配置为当前支持的模型名称 |
| local proxy failed while handling codex endpoint | 本地代理转发配置错误 | 检查代理运行状态,核对端点地址和转发规则 |
| CLAUDE.md 不生效 | 嵌套覆盖或执行新会话前已修改 | 检查嵌套目录,重启会话重新加载 |
我不建议遇到问题就立刻重装工具。以上这些大部分都是配置文件或环境变量的问题,先看日志、再看配置,通常能定位到根因。如果真的定位不了,把工作目录的配置文件和完整报错贴给社区或官方工单,很快就能有人帮你看出来问题。
6. 我对这两个工具记忆体系的使用心得
最后分享几条我在实际使用中沉淀下来的经验,供大家参考。
第一,不要迷信任何一方的"记忆"。工具的记忆能力再强,也不如你主动维护一份简洁有效的项目说明文件。我吃过几次亏,以为 AI 记住的东西其实已经过期了——项目结构重构过、命名规范改过、依赖升级过,但 CLAUDE.md 或 AGENTS.md 没更新,AI 还按旧规则办事。所以我现在养成了一个习惯:每次项目结构或规范有大变动,第一时间更新对应的记忆文件,让它们始终保持和代码仓库同步。
第二,根据项目类型灵活选型。简单的 CRUD 项目、个人小工具、原型验证,我推荐 Claude Code,因为它对上下文规则的主动加载能让你少操很多心。大型企业项目、需要跨设备协作、多人共建的任务,Codex 的云同步和按需检索更有优势,但你需要花时间把 AGENTS.md 写得更结构化一些。
第三,善用"记忆文件过一遍"这个操作。每次从旧会话恢复,或者刚拿到一个新项目时,我都会先让工具把记忆文件的核心内容复述一遍。这个动作往往只要几秒钟,但能让我和 AI 在同一个频道上开始工作,避免"它以为它知道,我以为什么都没说"的误解。
这两个工具还会持续进化,记忆体系也不可能永远停留在现在的样子。但底层的逻辑大概率不会变:一个工具是否适合你,不完全取决于模型有多强大,更取决于它能不能在恰当的时候记住恰当的事。希望这篇文章能帮你在选择时少一些纠结,多一些确定感。