Skip to content
🔧 进阶手册第 2 / 4 节

AGENTS.md 与 CLAUDE.md:给 AI 留一份项目说明书 ​

前置阅读:进阶手册:让 AI 更懂你的项目

AGENTS.md 是放在项目根目录的一份项目说明书:Claude Code、Codex、OpenCode 在开工前都会自动读它,不用你每次口头交代技术栈和规矩。

Claude Code 的记忆文件叫 CLAUDE.md,机制相同、文件名不同。本页把两份文件一起配好,让三款工具读同一套内容。

学完你能做什么 ​

  • 写出一份放在项目根目录、三款 AI 编码代理都会自动读取的 AGENTS.md
  • 说清 AGENTS.md 该写哪四块内容,以及为什么不能写成长篇大论
  • 给 Claude Code 配好 CLAUDE.md,并保证两份文件永远不打架
  • 开一个新会话验证:AI 不用你解释,就能答出项目怎么启动、守什么约定

你现在的困境 ​

  • 每次开新会话,都要重新交代一遍「我们用 pnpm 不用 npm」「测试跑 pnpm test」。
  • 上个会话说好的规矩,这个会话 AI 全忘了,转头又给你 npm install 一通乱装。
  • 项目约定只存在你脑子里:换个会话、换个工具、拉个队友协作,全要重新讲一遍。

什么时候用这一招 ​

当你需要:

  • 让 AI 在每个新会话自动知道项目的技术栈、常用命令和代码约定
  • 把规矩提交进 git,团队里每个人、每个 AI 共享同一份
  • 今天用 Claude Code,明天换 Codex 或 OpenCode,说明书照样生效

而且不想:

  • 每次开工前,往对话框里粘贴一大段「项目背景」
  • 同一套规矩在三个工具里各配一遍,还配得不一样

🎒 开始前的准备 ​

核心思路 ​

三款工具的「说明书机制」长得很像,差别在文件名和查找方式:

工具读哪个文件项目级放哪全局文件(个人偏好)
Claude CodeCLAUDE.md;没有它时也可直接读 AGENTS.md(需 v2.1.277+)项目根目录 ./CLAUDE.md 或 ./.claude/CLAUDE.md~/.claude/CLAUDE.md
CodexAGENTS.md,开工前先读项目根目录~/.codex/AGENTS.md
OpenCodeAGENTS.md(V2 只认它,不拿 CLAUDE.md 兜底)项目根目录~/.config/opencode/AGENTS.md

思路就一句话:以 AGENTS.md 为唯一事实源。Codex 和 OpenCode 直接读它;Claude Code 用一份 CLAUDE.md 引用它的内容,再补 Claude 专属的说明。改规矩只改一处,三款工具同步生效。

CLAUDE.md 自己还分作用范围:企业级(组织统一管理)、用户级(~/.claude/CLAUDE.md,放个人偏好,对你所有项目生效)、项目级(进版本控制,团队共享)。本页主要配项目级。

跟我做 ​

第 1 步:在项目根目录新建 AGENTS.md ​

为什么:说明书越具体,AI 猜得越少。Codex 官方指南给的示例也是一条一行、可直接执行的指令,而不是一句「代码要规范」。

在项目根目录(和 README 同级)新建 AGENTS.md,写四块内容:

markdown
# 项目说明

- 一句话:这个项目做什么(例:一个课程预约网站)
- 技术栈:Next.js + TypeScript,包管理用 pnpm
- 常用命令:pnpm install / pnpm dev / pnpm test / pnpm build
- 代码约定:组件放 src/components,提交前跑 pnpm test,不要直接改构建生成的文件

每条规矩都写成可验证的指令:「用 2 空格缩进」好过「格式要规范」,「提交前跑 pnpm test」好过「记得测试」。

你应该看到:文件躺在根目录,几十行以内,每条规矩一行。

  • 小检查:让一个不懂你项目的人看 30 秒,他能说出项目用什么技术栈、怎么启动

第 2 步:把说明书放对位置 ​

为什么:三款工具找说明书的方式不同,但都认项目根目录——Codex 从项目根一路查到你所在的子目录;OpenCode 先读全局文件,再从当前目录逐级向上收集;Claude Code 读当前目录及上层的 CLAUDE.md。放根目录,三种找法都能命中。

操作:

  1. 确认 AGENTS.md 在项目根目录,别塞进 src/ 这类子目录,也别放桌面。
  2. 提交进 git。OpenCode 文档明确建议把项目指引文件提交进仓库,让每个协作者拿到同一份指引。
  3. 个人偏好(比如「回复用中文」)别写进项目说明书,放到各工具的全局提示词文件:Codex 用 ~/.codex/AGENTS.md,OpenCode 用 ~/.config/opencode/AGENTS.md,Claude Code 用 ~/.claude/CLAUDE.md。

你应该看到:git status 显示 AGENTS.md 已被跟踪;根目录下 ls 能看到它和 README 并排。之后无论你从根目录还是某个子目录启动代理,它都找得到这份说明书。

第 3 步:给 Claude Code 配一份 CLAUDE.md ​

为什么:Claude Code 默认读 CLAUDE.md。只要工作目录或上层有一份项目级 CLAUDE.md,它就不再读 AGENTS.md——不打通两份文件,Claude Code 会「看不到」你的说明书。

方式 A(推荐):CLAUDE.md 导入 AGENTS.md ​

在根目录新建 CLAUDE.md:

markdown
@AGENTS.md

## Claude Code 专属

- (可选)只写给 Claude 的额外说明

@AGENTS.md 是 Claude Code 的导入语法:AGENTS.md 的内容会被展开加载,Claude 专属的说明写在导入下面。规矩只维护一处。

方式 B:软链接 ​

bash
ln -s AGENTS.md CLAUDE.md

一条命令,两份文件永远同步,成功时没有输出。但 Windows 上创建软链接要管理员权限或开发者模式,Git 还可能把它检出成纯文本——只要团队里有人用 Windows,就选方式 A。

方式 C:内容照搬 ​

把 AGENTS.md 的内容复制进 CLAUDE.md。最直观,代价是改规矩要改两处;两处说法不一致时,AI 可能随便挑一条信。

你应该看到:在项目目录运行 claude,输入 /context,Memory files 列表里出现 CLAUDE.md,导入的 AGENTS.md 内容随之加载。

  • 小检查:/context 的 Memory files 里有 CLAUDE.md

💡 不建 CLAUDE.md 会怎样?

新版 Claude Code(v2.1.277 起)在没有 CLAUDE.md 时会直接读 AGENTS.md,会话开头会显示一行类似 no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md 的提示。但个别会话不支持(比如从旧版本升级后的第一个会话),所以配一份 CLAUDE.md 最稳妥。

第 4 步:开新会话验证说明书生效 ​

为什么:三款工具都在会话开始时读说明书——Claude Code 每个会话开始加载记忆文件,Codex 每次运行构建一次指令链,OpenCode 对嵌套指引文件的改动也要新会话才生效。在旧会话里测,测到的是旧规矩。

操作:

  1. 开一个全新会话:Claude Code 在项目目录运行 claude,Codex 运行 codex。
  2. 直接问:「这个项目怎么启动?有什么代码约定?」
  3. Codex 用户可以跑官方指南给的验证命令:
bash
codex --ask-for-approval never "Summarize the current instructions."

你应该看到:AI 不看你的任何额外解释,就能答出文件里写的启动命令和约定;Codex 会按加载顺序复述全局和项目文件里的指引。

  • 小检查:换一个子目录再启动一次,AI 依然找得到说明书

检查点 ✅ ​

  • AGENTS.md 在项目根目录,包含项目简介、技术栈、常用命令、代码约定四块内容
  • 文件已提交进 git,任何人克隆仓库都能拿到同一份指引
  • Claude Code 会话里运行 /context,Memory files 列出了 CLAUDE.md
  • 开新会话问「项目怎么启动」,AI 不用你解释就能答对
  • AGENTS.md 与 CLAUDE.md 内容一致(导入或同步),没有互相矛盾的规矩

踩坑提醒 ​

❌ 写成长篇大论 ​

说明书越长,AI 越抓不住重点。Claude Code 官方建议每个 CLAUDE.md 控制在 200 行以内:太长会吃掉上下文、降低遵循度。Codex 那边也有总量上限,多份指引合计到 32 KiB(默认值)就停止加载。

正确做法:只写 AI 猜不到的事实(命令、约定、禁忌),一条一行,控制在几十行。

❌ 只写原则、不写命令 ​

「代码要规范」是空话,AI 没法执行。

正确做法:写可验证的指令——「用 pnpm dev 启动、pnpm test 测试」「API 处理器放 src/api/handlers/」。

❌ Claude Code 看不到 AGENTS.md ​

常见原因:工作目录或上层有一份项目级 CLAUDE.md(或 CLAUDE.local.md),Claude Code 就只读 CLAUDE.md,用户级的 ~/.claude/CLAUDE.md 不算;或者版本低于 v2.1.277。

正确做法:claude --version 确认版本;/context 查看实际加载了哪些文件,/memory 列出各处记忆文件的位置;按第 3 步用 @AGENTS.md 导入打通。另外注意:OpenCode V2 只认 AGENTS.md,不拿 CLAUDE.md 兜底——两份文件都得有,别只配一边。

❌ 在旧会话里验证 ​

改完说明书,马上在当前会话里问 AI,它答的还是旧规矩。

正确做法:改完文件,开新会话再测;Claude Code 里也可以直接运行 /context 确认文件已加载。

进阶技巧 ​

  • 让 AI 替你写初稿:Claude Code 里运行 /init,它会分析代码库,自动生成一份含构建命令、测试指令和项目约定的 CLAUDE.md 起步文件;文件已存在时它给改进建议,不直接覆盖。
  • 给规矩做体检:Claude Code v2.1.283 起可用 /doctor prompt-audit,让 Claude 检查指令文件里过时、互相矛盾、引用了不存在文件的内容。
  • 目录级覆盖(Codex):在子目录放 AGENTS.override.md,Codex 会优先读它;仓库里已有 TEAM_GUIDE.md 这类文件时,可在 ~/.codex/config.toml 的 project_doc_fallback_filenames 里登记成备用文件名。
  • 挂更多指引(OpenCode):在 opencode.jsonc 的 instructions 数组里追加文件、glob 或网址,和 AGENTS.md 一起加载。
  • 只属于你的项目偏好:Claude Code 支持根目录 CLAUDE.local.md,放个人的项目偏好,记得加进 .gitignore。

本课小结 ​

✅ 到这里你已经:

  • 写出了一份 AGENTS.md:四块内容、一条一行、放项目根目录并提交进 git
  • 给 Claude Code 配了引用它的 CLAUDE.md,三款工具读同一套规矩
  • 用新会话验证过:AI 不用你交代,就知道项目怎么启动、守什么约定

关键文件回顾:

文件推荐位置作用
AGENTS.md项目根目录唯一事实源,Codex、OpenCode 直接读
CLAUDE.md项目根目录Claude Code 的记忆文件,用 @AGENTS.md 导入共享内容
~/.claude/CLAUDE.md用户主目录个人偏好,对你所有项目生效
~/.codex/AGENTS.mdCodex 主目录Codex 全局指引,所有仓库继承
~/.config/opencode/AGENTS.mdOpenCode 配置目录OpenCode 全局指引,到处适用的规矩放这里

一句话记住:AGENTS.md 是给 AI 的项目说明书——写具体、放根目录、保持唯一。

下一课预告 ​

说明书让 AI 懂了你的项目,下一课让它长出更多本事:Vercel × AI 编码代理:Plugin、Skills 与 MCP 三件套。

你会学到:

  • Vercel 为 AI 编码代理准备的 Plugin、Skills、MCP 三件套分别是什么
  • 怎么用官方命令把它们接入你的代理
  • 接入之后,AI 和你的 Vercel 项目之间能打通哪些事

想先把「写什么」想清楚,回顾 先规划再动手:把一句话想法变成需求清单;Claude Code 的基础操作见 Claude Code 用法:终端里的 AI 编程代理。

搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。