发布于 2026-10-22 · 最后核实:2026-10-22 · 文中价格与额度以各官网为准
每次开一个新会话,编程 Agent 对你的项目都是一无所知的:不知道用哪个命令跑测试,不知道你们约定的代码风格,不知道哪个目录绝对不能碰。于是你只好在每次对话开头重复一遍——或者忘了说,然后看着它犯同样的错。
项目说明文件就是为了解决这个问题。它是放在仓库里的一份 Markdown 文件,Agent 每次开始工作前会自动读取。不同工具对它的叫法不同:
- AGENTS.md:一个开放格式,官网 agents.md 把它定位为「写给 Agent 的 README」。Codex、Cursor、GitHub Copilot 的编程 Agent、OpenCode、Windsurf(即 Devin Desktop)等许多工具都支持读取它。
- CLAUDE.md:Claude Code 的项目说明文件。按 Claude Code 文档的说明,它也可以读取仓库里的 AGENTS.md。
- 还有一些工具有自己的规则文件或目录,比如 Cursor 的
.cursor/rules、Copilot 的.github/copilot-instructions.md。
结论先说:用 AGENTS.md 作为唯一的「主文件」,写清楚命令、结构、风格和边界;控制在一两百行以内;需要特定工具的文件时,让它引用或指向主文件,而不是复制一份。
它和 README 有什么区别
README 是写给人看的:项目介绍、快速上手、贡献指南。AGENTS.md 是写给 Agent 看的:那些对人类贡献者来说太琐碎、但 Agent 必须知道才能干好活的细节。agents.md 官网的说明是,这样分开能让 README 保持简洁,同时给 Agent 一个固定、可预期的地方去找指令。
一个好的判断标准:这条信息是「新同事第一天入职时你会口头叮嘱的」吗? 是,就写进去。
应该写什么
GitHub 分析了 2500 多个仓库里的 Agent 说明文件,发现效果最好的文件都覆盖了六个方面。这可以直接当作你的目录:
- 命令:安装依赖、启动开发服务器、构建、测试、代码检查的完整命令,带上参数。放在文件最前面,Agent 会反复用到。
- 测试:用什么测试框架、测试文件放在哪、怎么只跑一个测试、提交前必须通过什么。
- 项目结构:关键目录各放什么。不需要逐个文件介绍,几行就够。
- 代码风格:和默认习惯不同的约定。GitHub 的建议是:一段真实的代码示例,胜过三段文字描述。
- Git 工作流:分支命名、提交信息格式、提交前要做什么。
- 边界:哪些东西不能碰。GitHub 发现「绝不提交密钥」是最常见也最有用的一条约束。
还要写具体:说「React 18 + TypeScript + Vite + Tailwind CSS」,而不是「一个 React 项目」。
不该写什么
Claude Code 的官方最佳实践给了一个很好用的筛选问题:「删掉这一行,Agent 会不会因此犯错?」不会,就删掉。 文件越长,每一条被遵守的概率越低——Claude Code 文档建议每个文件控制在 200 行以内,太长的文件会占用更多上下文、降低遵守程度。
以下内容不建议写进去:
- Agent 读代码就能自己弄明白的东西;
- 语言的通用规范(它本来就知道);
- 大段 API 文档(放一个链接即可);
- 经常变化的信息;
- 「写干净的代码」这类正确但没有用的话;
- 逐个文件的说明。
一份可以直接改的模板
# AGENTS.md
## 项目概述
个人博客 + 工具导航站。内容是 Markdown 文件,构建时生成静态页面。
## 常用命令
- 安装依赖:`pnpm install`
- 本地开发:`pnpm dev`
- 构建:`pnpm build`(提交前必须通过)
- 类型检查:`pnpm typecheck`
- 测试:`pnpm test`;只跑一个文件:`pnpm test path/to/file`
## 项目结构
- `src/app/`:页面
- `src/components/`:通用组件,新组件放这里
- `content/posts/`:文章 Markdown,frontmatter 格式见现有文件
- `content/tools.json`:工具数据,修改后运行 `pnpm validate`
## 代码风格
- TypeScript 严格模式,不用 `any`
- 组件用函数式写法,参考 `src/components/ToolCard.tsx`
- 样式只用 Tailwind 类名,不写单独的 CSS 文件
## Git 约定
- 提交信息用中文,一句话说明改了什么
- 一个任务一次提交
## 边界
- ✅ 直接做:改 `src/` 和 `content/` 下的文件,运行上面列出的命令
- ⚠️ 先问我:新增依赖、修改构建配置、改 `tools.json` 的字段结构
- 🚫 绝不做:读取或输出 `.env`;提交密钥;删除或跳过已有测试;执行 `git push`
## 容易踩的坑
- 图片必须放在 `public/images/`,否则构建后路径失效
- 文章日期格式必须是 `YYYY-MM-DD`
把模板里的内容全部换成你项目的真实情况。命令一定要亲自跑一遍确认能用,写错的命令比不写更糟。
让一份文件服务多个工具
你可能会同时用好几个 Agent 工具。最忌讳的做法是为每个工具各写一份内容相同的文件——过不了多久它们就会互相矛盾。
通用的做法:
- AGENTS.md 作为唯一的主文件,所有共享的内容都写在这里。
- 需要工具专属文件时,让它指向主文件,而不是复制内容。常见的方式有:
- 在工具专属文件里用该工具支持的引用语法导入 AGENTS.md(Claude Code 支持在 CLAUDE.md 里用
@路径导入其他文件); - 或者建一个符号链接,让工具专属文件名指向 AGENTS.md(agents.md 官网的 FAQ 就给了用
ln -s做兼容的例子)。
- 在工具专属文件里用该工具支持的引用语法导入 AGENTS.md(Claude Code 支持在 CLAUDE.md 里用
- 工具专属文件里只放仅对这个工具有意义的设置。
各工具具体读哪些文件名、读取顺序如何,会随版本调整,以你所用工具的官方文档为准。一个可靠的验证方法是:开一个新会话,直接问它「你加载了哪些项目说明文件?列出其中的测试命令」。
大项目:用嵌套文件
如果仓库里有好几个子项目(比如前端、后端、文档分开放),可以在各子目录里再放一份 AGENTS.md。agents.md 官网的约定是:Agent 读取离正在编辑的文件最近的那一份,越近的优先级越高;用户在对话里的明确指令则高于所有文件。Codex 的文档也描述了类似的机制:从项目根目录往下逐级合并,越靠近当前目录的文件越晚加入、优先级越高。
根目录的文件写全局通用的规则,子目录的文件只写这个子项目特有的部分。
把它当代码来维护
- 提交进仓库,和代码一起做版本管理。
- Agent 犯错时,先怀疑说明文件:是没写?写得有歧义?还是被淹没在太长的内容里?Claude Code 文档的建议是,如果 Agent 反复违反某条规则,多半是文件太长、这条被淹没了;如果它总在问文件里已经回答过的问题,多半是措辞有歧义。
- 少用强调。确实总被忽略的某一条,可以加上「重要」之类的标记;但如果每条都标重要,就等于都不重要。
- 定期修剪。项目变了,删掉过时的规则。
- 让 Agent 帮你起草。大多数工具都能根据现有代码生成一份初稿,你在此基础上删改即可——但一定要删改,自动生成的初稿往往偏长。
常见的坑
- 写成了项目介绍。 大段讲项目愿景,却没有一条能执行的命令。
- 写得太长。 什么都想写进去,结果最重要的边界规则被淹没了。
- 命令是错的或过时的。 Agent 会照着执行,然后在错误的方向上越走越远。
- 多个工具各一份、内容不一致。 坚持「一个主文件」原则。
- 以为写了就一定会被遵守。 说明文件是建议性的。真正不能违反的规则(比如禁止修改某个目录),要配合工具的权限设置或自动化检查来保证。
- 把密钥写进说明文件。 说明文件会提交进仓库,密钥只能放在环境变量里。
写好一份项目说明文件只需要半小时,之后的每一次会话都在受益。而且它不绑定任何一个工具——今天用这个 Agent,明天换另一个,这份文件照样有效。
参考资料
- AGENTS.md 官网 — https://agents.md/
- GitHub Blog:How to write a great agents.md: Lessons from over 2,500 repositories — https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/
- Anthropic:Best practices for Claude Code — https://www.anthropic.com/engineering/claude-code-best-practices
- Claude Code 文档:How Claude remembers your project(CLAUDE.md 与 AGENTS.md)— https://docs.anthropic.com/en/docs/claude-code/memory
- OpenAI Codex 文档:Custom instructions with AGENTS.md — https://developers.openai.com/codex/guides/agents-md
- GitHub Docs:Adding repository custom instructions for GitHub Copilot — https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions
- Cursor 文档:Rules — https://cursor.com/docs/context/rules