别再把 AI 当“新同事”瞎用:`AGENTS.md`、`CLAUDE.md` 才是项目协作的真正入口

3 阅读11分钟

当 AI 编程工具越来越像“能干活的同事”时,很多团队会遇到一个真实问题:

它明明会写代码,但总是不按你项目的方式写。

例如:

  • 你们统一用 pnpm,它却先来一句 npm install
  • 你们的 API 客户端返回 Result 对象,它却上来就是一层 try/catch
  • 某些目录只能读不能改,它却直接动手
  • Monorepo 里明明有模块边界,它却按“全仓库一锅炖”的方式处理

这些问题本质上都不是模型“不聪明”,而是它缺少项目上下文。

这也是为什么越来越多团队开始认真对待这类文件:

  • AGENTS.md
  • CLAUDE.md
  • Cursor Rules
  • Copilot instructions

它们看起来像“提示词文件”,但本质不是为了炫技、也不是为了堆 prompt,而是为了给 AI 一个稳定、低歧义、可长期维护的项目入口。
参考:OpenAI Developers


一、上下文文件到底解决了什么问题?

结论先行:

上下文文件不是给 AI 补基础知识,而是告诉它“这个项目有哪些它自己不容易推断出来的规则”。

模型本身已经知道大量通用软件工程知识。它知道测试、lint、前后端组织方式,也知道常见框架默认套路。

但它不知道你们团队的“隐性约定”:

  • 为什么包管理器必须是 pnpm
  • 哪些命令是 CI 对齐的标准命令
  • 哪些目录是生成物,不能改
  • 哪些调用约定是反直觉的
  • 哪些操作必须先确认
  • 哪些行为永远不能做

这些内容很多时候不会直接写死在代码里,或者即使能推断,也要绕很多步才能猜出来。
一旦 AI 在这些地方猜错,后续所有工作都会跑偏。
参考:OpenAI Developers

所以,上下文文件真正作用不是“解释项目是什么”,而是:

告诉智能体,进入这个仓库后,哪些规则必须先知道。


二、AGENTS.md 是什么?为什么它现在很重要?

AGENTS.md 可以理解为:

写给 AI 编程智能体看的项目说明书。

公开信息里,OpenAI 在介绍 Codex 时明确提到会读取仓库中的 AGENTS.md 获取项目级指导;随后又推动其走向更中立的开放标准。AGENTS.md 生态正在扩大,关键意义在于:

  • 它不再只是某个工具私有技巧
  • 它正在成为跨工具可读的约定
  • 你不需要为每个 AI 工具从零设计规则体系

简单说,AGENTS.md 越来越像“AI 时代的项目协作文档入口”。


三、常见误区:不要把所有工具当成同一种机制

很多文章会粗暴地说:

  • 启动时扫描全盘
  • 把所有规则统一注入
  • 和系统提示词同级
  • 所有工具都遵循同样优先级

这种说法容易误导。

更准确的理解是:

不同工具都支持“持久化指导信息”,但发现路径、加载层级、作用范围并不完全一样。

例如:

  • Codex:有自己的 AGENTS.md 读取逻辑
  • Claude Code:有 CLAUDE.md / rules / memory 体系
  • Cursor:有 Rules,也支持 AGENTS.md
  • GitHub Copilot:有仓库级、路径级 instructions,并在部分场景支持 agent instructions

共同目标类似,实现方式不同。
参考:OpenAI Developers

团队落地时,最稳做法不是死背“注入原理”,而是:

写跨工具都成立的规则,少写依赖某工具私有细节的描述。


四、Codex 里的 AGENTS.md:重点不是“全盘扫描”,而是“分层读取”

Codex 的关键点不是“启动时全吞所有规则”,而是分层组合

  • 全局说明
  • 项目说明
  • 更接近当前工作范围的局部说明
  • 最终按层级生成当前任务可用指导信息

这会直接影响文件组织方式。

如果你把所有规则都塞进根目录一个超长 AGENTS.md,当然能用,但会出现:

  • 维护成本持续上升
  • 关键规则被噪声淹没
  • 模块差异难表达

更工程化的方式通常是:

根目录放全局,子目录放局部。
参考:OpenAI Developers


五、Claude Code 里的 CLAUDE.md:不是单文件,而是“项目记忆体系”

CLAUDE.md 更像一套分层记忆体系,而非孤立文件。文档提到可结合:

  • 用户级记忆
  • 项目级记忆
  • 路径作用域规则
  • @ 导入其他文件
  • .claude/rules/ 细粒度规则

这套机制很适合三类信息:

  1. 个人长期偏好(命令风格、输出风格、默认协作方式)
  2. 团队共享规范(脚本、确认边界、风格底线)
  3. 模块局部差异(如 /apps/web/apps/api 完全不同)

如果团队主要使用 Claude Code,更高效的方式不是“一个 500 行大文件”,而是:

拆分共享规则与路径差异。
参考:Claude Code Docs


六、GitHub Copilot、Cursor 也支持,但别想当然

GitHub Copilot

GitHub Copilot 已支持多种自定义指令来源,例如:

  • .github/copilot-instructions.md
  • 路径级 instructions
  • 部分 surface 下的 agent instructions(如 AGENTS.mdCLAUDE.mdGEMINI.md

关键细节:

不同 surface 能力不完全一样。
不能简单说“只影响 Chat”或“全场景都生效”。

Cursor

Cursor 已把 Rules 与 AGENTS.md 都纳入持久化指导体系。不是“二选一”,而是定位不同、可配合使用。

实践建议:

多工具共存是现实,但不要为了兼容所有工具维护多套独立大文档。
否则很容易规则漂移、彼此冲突。


七、研究提醒:上下文不是越多越好

ETH Zurich 在 2026 年发布的《Evaluating AGENTS.md》给出重要结论:

  • 上下文文件常带来额外推理成本
  • AI 自动生成的低质量上下文,可能降低任务成功率
  • 人工编写的高价值上下文,在部分场景更有效
  • 问题往往不在“模型没看规则”,而在“规则写得冗余、模糊、重复”

这直接打破常见错觉:

“AI 需要上下文,所以给得越多越好。”

真正有效的上下文应当是:

  • 简洁
  • 明确
  • 可执行
  • 非冗余
  • 对决策有真实影响

八、最实用的判断标准

如果只记一句话,就记这句:

这条信息,AI 能不能比较容易从代码库本身推断出来?

  • 能推断:先别写
  • 不能推断且会直接影响行为质量:值得写
    参考:OpenAI Developers

这个标准能快速过滤低价值内容。


九、真正应该写进 AGENTS.md / CLAUDE.md 的内容

下面这些通常才是高价值内容。

1)非标准工具链约定

Package manager

  • Use pnpm only.

  • Never use npm or yarn.

  • CI uses pnpm install --frozen-lockfile.

这类规则看似简单,但非常关键,因为它会直接影响智能体执行命令的方式。

2)反直觉架构约定

API behavior

  • api() and apiVoid() do not throw on business failure.

  • They return a result object.

  • Do not add try/catch around normal calls unless handling transport/runtime failure.

这类规则价值很高,因为它往往是“代码里不明显,但错了会整片跑偏”的点。

3)精确命令,而不是模糊描述

Useful commands

  • Run one test file: pnpm vitest run src/path/to/file.spec.ts

  • Run tests by name: pnpm vitest run -t "test name"

  • Run lint: pnpm lint

给完整命令,比告诉 AI“记得跑测试”有效得多。

4)操作权限边界

Safety rules

  • You may read files, edit source code, run lint, typecheck, and targeted tests.

  • Ask before installing/removing dependencies.

  • Ask before deleting files or editing CI config.

  • Never commit secrets or .env files.

  • Never force-push protected branches.

对代理式工具来说,这种边界定义通常比“风格建议”更重要。

5)小而准的代码示例


// ✅ preferred

export function useUserProfile() {}

// ❌ avoid

export default function useUserProfile() {}

如果某条规范容易被误解,短代码示例通常比抽象说明更有效。

十、不建议写进去的内容

这部分经常被忽视。

1)项目介绍型内容

适合放在 README,不适合放进上下文规则文件。

2)代码目录导览

AI 可以自己看目录、搜索文件。复制大段目录结构,通常只会增加 token 成本。

3)通用工程口号

例如“写清晰代码”“注意可维护性”“尽量复用逻辑”。这些话本身没错,但过于通用,不够具体,对实际任务路径帮助有限。

4)README 已经写清楚的基础信息

如果原样重复到上下文文件里,增益通常很低。


十一、Monorepo 怎么设计最合理?

如果你是 Monorepo,不建议只靠根目录一个大文件。

更推荐的结构是:

repo-root/
├── AGENTS.md
├── apps/
│   ├── web/AGENTS.md
│   └── api/AGENTS.md
├── packages/
│   ├── ui/AGENTS.md
│   └── utils/AGENTS.md
└── CLAUDE.md

核心思路:

  • 根目录:写全局规则
  • 子应用:写模块差异
  • 特定工具:补少量专属文件

这样做的好处:

  • 文件不会膨胀成一坨
  • 局部规则更容易维护
  • AI 在模块内工作时更容易拿到高相关信息

十二、多工具团队怎么落地才不会乱?

如果每个工具都写一套完整规则,最后很容易出现:

  • 文档越来越多
  • 内容逐渐不一致
  • 某条规则改了,只改了其中两份
  • 团队没人知道哪份是准的

更实用的方法是:

确定一个单一事实来源,再给少量工具做适配层。

推荐方案:

方案一:AGENTS.md 作为跨工具基础文件

把多数团队共通规则放进去:

  • 工具链
  • 命令
  • 边界
  • 非标准约定

方案二:工具专属能力单独补

例如:

  • Claude Code:补 CLAUDE.md.claude/rules/
  • Cursor:补 Rules
  • Copilot:补 .github/copilot-instructions.md

这样做的优点:

  • 大部分内容只维护一份
  • 工具专属部分不会污染通用规则
  • 成本可控,后期容易演化

十三、Hooks 的位置:规则负责“说明”,Hook 负责“执行”

很多团队写了很多规则,但仍不放心,原因很简单:

规则本质上是语言描述,不是强制执行。

这时 Hooks 才是关键补位。

你可以这样理解:

  • AGENTS.md / CLAUDE.md:告诉 AI 应该怎么做
  • Hooks:真正拦住“不能这么做”的行为

例如:

  • 文档里写“不要 force push”
  • Hook 里真正拦截危险命令

这种组合会比单纯堆 prompt 靠谱得多。

参考:Claude Code Docs


十四、别一上来写大文档,最好的方式是“从摩擦点迭代”

很多人第一次写这类文件时,容易犯一个错误:

想一口气写出一份“完美 AI 项目规范”。

实际往往适得其反。

更好的方式是:

第一步:先写极简版本,只写最关键几条

  • 包管理器
  • 核心命令
  • 危险边界
  • 反直觉约定

第二步:观察 AI 的真实错误

例如:

  • 总是用错命令
  • 总爱加不该加的 try/catch
  • 总想改生成目录
  • 总是绕过统一封装层

第三步:把高频错误转成规则

不是“可能会错”就写,而是“已经反复出错了”再写。

第四步:定期删减

如果某条规则不再必要,就删掉。

核心原则:

上下文文件应该克制、聚焦、基于真实摩擦,而不是预设一切。


十五、一个更推荐的 AGENTS.md 模板

# AGENTS.md  
  
## Required workflow  
- Use `pnpm` for all package management commands.  
- Before finishing, run:  
- `pnpm lint`  
- `pnpm test`  
  
## Non-obvious project rules  
- `api()` and `apiVoid()` do not throw on business failure.  
- They return a result object.  
- Do not wrap normal calls in `try/catch` unless handling transport/runtime failure.  
  
## Safe operations  
- You may read files, edit source code, run lint, typecheck, and targeted tests.  
- Ask before installing/removing dependencies.  
- Ask before deleting files, editing CI config, or changing production infrastructure.  
  
## Never do  
- Do not commit secrets, `.env` files, or private keys.  
- Do not force-push protected branches.  
  
## Useful commands  
- Run one test file: `pnpm vitest run path/to/file.spec.ts`  
- Run tests by name: `pnpm vitest run -t "test name"`

这份模板最大优点不是“完整”,而是:

  • 容易开始
  • 容易迭代
  • 不会一开始就变成一本手册

十六、最后总结

AI 协作时代,真正重要的不是 prompt 技巧,而是项目约定的工程化表达。

很多人讨论 AI 编程时,会把注意力放在:

  • 模型强不强
  • 会不会自动改代码
  • 能不能多轮规划
  • 会不会调用工具

这些当然重要。

但当 AI 真正进入日常开发流程后,最影响体验的往往是:

它有没有理解你这个项目到底该怎么工作。

而 AGENTS.md、CLAUDE.md、Rules、Instructions 这类文件,正是在解决这个问题。

它们不是为了让 AI 更像魔法,而是为了让它更像一个知道你团队规矩的协作者。
(参考:OpenAI Developers)

所以最好的实践不是写得多,也不是写得玄,而是做到三点:

  • 只写 AI 不容易自己推断的内容
  • 只保留真正影响行为质量的规则
  • 随着真实摩擦不断迭代,而不是一开始追求“完美规范”

这比任何“万能 Prompt 模板”,都更接近长期可用的工程方案。

参考资料

  • OpenAI Codex:AGENTS.md Guide
  • OpenAI:Introducing Codex
  • AGENTS.md 官网
  • OpenAI / Linux Foundation:Agentic AI Foundation 相关说明
  • Claude Code Docs:Memory
  • Claude Code Docs:Hooks
  • GitHub Docs:Custom instructions support for GitHub Copilot
  • Cursor Docs:Rules / AGENTS.md
  • ETH Zurich:Evaluating AGENTS.md