用 Codex App 一段时间后,大概率会遇到两个反复出现的麻烦:每开一个新会话,都得把"用中文回答""不要乱删文件"这类基础偏好再叮嘱一遍;偶尔一不留神,它还会执行一些超出预期的系统命令。

问题根子在于,默认状态下 Codex 没有跨会话的长期记忆。每次对话都是从零开始,自然每次都得从零交代。要解决这件事,得给它配一套自己的记忆机制——主要就是 AGENTS.md 和 Memories 这两块。


一、AGENTS.md:写给 Codex 看的规则文件

1. 它是什么

AGENTS.md 是一份你提前写好的规则说明,Codex 启动时会自动读取。

没有这份文件时,Codex 对你的工作习惯、项目背景、操作边界一无所知。配置之后,这些上下文常驻生效,同一件事不用反复说第二遍。

2. 怎么配、怎么用

全局层:放在本机 ~/.codex/AGENTS.md,对所有项目生效,适合写个人偏好和通用规则。

在 Codex App 里,对应"个性化设置 → 自定义指令"。

下面是一份可以直接复制使用的基础模板,后续按需调整即可:

# AGENTS.md

## 基础行为
- 默认使用中文回答,除非用户明确要求其他语言。
- 回答要简洁直接,避免不必要的铺垫和重复。
- 任务描述不清晰时,先提问确认,再开始执行。
- 不要主动推测用户意图之外的需求,只做被要求的事。

## 安全边界
- 默认只读,不主动修改、删除任何文件,除非用户明确指示。
- 涉及不可逆操作(删除、覆盖、调用外部 API 写入)前,必须先确认。
- 不在输出中打印任何密钥、Token 或敏感凭证。

## 工程规范
- 避免过度设计,只做任务明确要求或明显必要的改动。
- 不在未被要求的情况下添加功能、重构代码或额外优化。
- 不为未改动的代码补注释、类型标注或文档字符串。
- 仅在逻辑不自明时添加注释。
- 不为不可能发生的场景写错误处理或兜底逻辑。
- 不创建只用一次的工具函数或抽象层。
- 确认无用的代码直接删除,不留注释说明。

项目层:放在项目目录里,按项目本身的特点定制规则。

一份可用的项目层 AGENTS.md,通常包含四块内容:项目背景与目录结构、启动与运行方式、需要遵守的规范与明确禁止的事项、任务完成的判定标准。

3. 几个值得注意的实践点

写好基础模板只是起点,下面这些点决定了记忆系统能用到什么程度。

规则分层,各管各的事。 Codex 读取 AGENTS.md 遵循就近原则:子目录优先于根目录,根目录优先于全局。也就是说,项目层的规则会直接覆盖全局的同名设置。如果把所有规则混在一起写,局部规则很容易意外破坏全局逻辑。

合理的做法是职责分离:全局层只放语言偏好、安全边界、基础行为这类通用项;项目层放构建命令、代码约定、模块说明这类项目特有的规范。两边各管一摊,合并时不会打架。

从基础写起,按需迭代。 AGENTS.md 不需要一次写完。先把最核心的几条规则放进去,之后只在 Codex 重复犯同一个错误时再补。比如可以直接对它说:

"你刚才犯了和上次一样的错误,请总结原因,并把相关经验补充到 AGENTS.md 中。"

这样补出来的规则都来自真实摩擦,文件也会随着使用慢慢长出来。

保持精简,复杂内容拆出去。 用得久了,AGENTS.md 容易越写越长。这时不必把所有内容堆在一个文件里,可以把特定主题拆成独立文件,主文件里只保留一行引用。比如把项目架构说明拆到 ARCHITECTURE.md,AGENTS.md 里写一句:

"关于本项目的核心架构与目录规范,请参见当前目录下的 ARCHITECTURE.md 文件。"


二、Memories:让 Codex 自己记

除了主动写规则,Codex 也支持自动记忆,需要在"设置 → 个性化 → 记忆"里手动开启。

打开之后,Codex 会在对话中主动总结有效信息和关键偏好,并写入记忆。想看它都记了些什么,可以打开 ~/.codex/memory/Memory.md,里面就是它自己整理的记忆条目。


三、写在最后

记忆系统不是一次配完就结束的事,而是跟着使用持续调整的过程。规则继续完善,记忆继续沉淀,Codex 用起来才会越来越顺手。