
文章目录前言一、AI为什么会失忆二、AGENTS.md是什么来头三、它和README.md有什么不同四、写AGENTS.md的三个原则原则一写成导航图不要写成百科全书原则二只写AI自己推断不出来的内容原则三从实际错误中迭代五、AGENTS.md应该包含哪些内容1. 项目概览3-5行2. 常用命令3. 架构约束4. 编码规范只写AI容易犯的错5. 文档索引6. Git工作流六、不同工具的适配细节Claude CodeCursorCodex七、一些进阶技巧分层管理引入源码作为参考八、常见误区误区一自动生成后就不管了误区二写得越多越好误区三写成给人看的文档九、一个精简的模板十、写在最后P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。前言最近看到不少人在群里吐槽“这AI编程助手怎么跟个金鱼似的昨天刚教它用pnpm今天又问我是npm还是yarn”我凑过去一看好家伙这哪是金鱼啊金鱼好歹还能记七秒。这AI助手简直是——每天早上准时失忆比闹钟还准。你昨天跟它说咱们项目禁止直接推main分支今天它反手就是一个git push origin main速度快得你拦都拦不住。更离谱的是让它跑个测试它能给你瞎编一个命令出来。你说pnpm test它偏要npm run test-please-work那后缀加得跟 prayer 似的生怕上帝听不见。这时候就有人问了“这AI不是号称智商超高吗怎么连这点规矩都记不住”兄弟这不是智商问题这是——它根本没有脑子。一、AI为什么会失忆大语言模型本质上是个超级话痨但它有个致命的弱点**无状态。**每次对话都是全新的开始上一轮你教它的东西下一轮就随风而散了。打个比方你每天都在带一个新来的实习生而且这个实习生每天早上都会失忆。你昨天教他我们项目用pnpm不用npm今天他又会问用npm还是yarn。你气得想摔键盘他还一脸无辜地看着你“哥咱们昨天见过吗”这场景像不像你跟你家AI助手的日常更惨的是这个实习生不是一般的实习生它是个自信爆棚的实习生。你问它咱们项目怎么部署的它不知道但它不直说它给你编一个。编得还有模有样要不是你对项目熟差点就信了。所以问题来了怎么让这个每天早上失忆的实习生不再重复犯同样的错误答案很简单——**给它写一份项目说明书。**不是写给人看的那种花里胡哨的README而是写给AI看的、直来直去的、像军训教官口令一样的文档。这就是今天的主角AGENTS.md。二、AGENTS.md是什么来头这个概念最早是Anthropic在Claude Code里推的当时叫CLAUDE.md。后来各家AI编程工具都跟进了自己的版本一度五花八门Claude Code用CLAUDE.mdCursor用.cursorrulesCopilot用.github/copilot-instructions.mdGemini CLI用GEMINI.mdCline用.clinerules这场景就像你家里五个遥控器每个控制不同的电器而且按钮布局还不一样。你刚记住Claude的快捷键换到Cursor就懵了。同一个项目换个工具就得维护一份不同的配置文件程序员的时间不是时间吗2025年5月OpenAI看不下去了牵头把大家拉到一起开了个会说别折腾了统一用AGENTS.md这个名字。现在这个格式已经由Linux Foundation托管GitHub上有超过6万个开源项目在用。6万个项目啊兄弟们。这相当于全城的出租车司机突然统一说普通话了不再各说各的方言乘客终于能听懂了。三、它和README.md有什么不同有人可能会问“我已经有README.md了为什么还要写AGENTS.md”兄弟这问题就像问我已经有菜单了为什么还要给厨师写备料清单README.md是给人看的讲究的是体面。要有项目介绍、快速上手、贡献指南最好再配个漂亮的徽章墙显得项目很活跃。你写本项目基于React开发人一看就懂了。但AI不需要体面AI需要**指令。**你写本项目基于React开发AI会问你“React几用不用TypeScriptVite还是Webpackclass component行不行hooks怎么写”所以AGENTS.md里得写“React 18 TypeScript Vite禁止使用class componenthooks必须用自定义wrapper。”判断标准很简单如果AI自己能从代码里推断出来的信息不用写推断不出来的才需要写。就像你教那个失忆实习生公司WiFi密码不用写因为墙上贴着但老板咖啡必须加两份糖不加奶必须写因为AI猜不到老板这么挑剔。四、写AGENTS.md的三个原则原则一写成导航图不要写成百科全书AGENTS.md应该是精简的导航告诉AI去哪里找什么而不是把所有细节都塞进去。有个很形象的比喻**给新员工一张组织架构图而不是把公司所有文件都倒给他。**你倒给他他也记不住啊。那个失忆实习生你给他一本《公司百科全书》他翻两页就晕了第二天照样问你咱们厕所在哪层。一般来说控制在200行以内比较合适。超过这个长度AI的注意力会被稀释反而抓不住重点。就像你给一个人看200条注意事项他看完只记得最后一条。原则二只写AI自己推断不出来的内容这是最核心的判断标准。AI能自己推断的不用写比如不用写项目用了什么框架看package.json就知道目录结构ls一下就知道代码风格规范linter能管的交给linter必须写为什么用pnpm而不是npm可能有历史原因比如npm曾经把node_modules删了数据库迁移必须用哪个命令AI可能会瞎编一个migrate-please-work架构上的硬约束比如禁止跨层调用否则项目会像个意大利面条原则三从实际错误中迭代不要试图一次写完。最好的方式是AI犯了一个错就往AGENTS.md里加一条规则。这就像是训狗。你不可能第一天就把所有规矩都定好而是等它咬了沙发你才知道不能咬沙发这条得写上。等它跳上了餐桌你才知道不能上餐桌也得写上。这样积累下来每一条规则都是从真实错误中提炼出来的针对性很强。三个月之后你的AGENTS.md就是一部《AI翻车血泪史》每一行都浸透着你的汗水和AI的无知。五、AGENTS.md应该包含哪些内容根据实践经验建议包含以下六个模块。记住这不是写论文是写口令越直接越好。1. 项目概览3-5行让AI快速建立项目心智模型但不用写太多。就像介绍对象说身高180程序员喜欢猫就够了不用从幼儿园开始讲。## 项目概览 - 技术栈Next.js 15 TypeScript tRPC Drizzle ORM - 数据库PostgreSQL 16 - 部署前端Vercel后端Railway2. 常用命令这是投入产出比最高的模块。AI翻车很多时候是因为命令用错了。你写pnpm test它就不会给你编npm run test-now了。## 常用命令 - 安装依赖pnpm install禁止使用npm或yarn - 启动开发pnpm dev - 运行测试pnpm test - 代码检查pnpm lint提交前必须通过 - 类型检查pnpm typecheck3. 架构约束告诉AI哪些事情绝对不能做。这比告诉它应该怎么做更有效因为应该怎么做是模糊的而不能做是硬边界。就像你告诉那个失忆实习生“不要动老板的杯子”比请妥善处理老板的杯子管用一百倍。后者他可能会把杯子洗了然后老板发现他的陈年茶垢没了暴跳如雷。## 架构约束 - 分层依赖domain → application → infrastructure不能反向依赖 - 数据库操作必须通过Service层不能在路由里直接调ORM - 所有时间字段统一用UTC时区转换交给前端处理4. 编码规范只写AI容易犯的错不用把整个编码规范抄进来只写AI反复犯、而且linter抓不住的错。就像你只记那些容易忘的密码而不是把所有密码都写纸上——虽然好像大家都这么干。## 编码规范 - 使用命名导出禁止默认导出 - 错误处理用Result模式Service层不能throw - API响应统一包装{ data, error, meta }5. 文档索引把详细文档的路径告诉AI需要时它会自己去读。这就像你给实习生一张地图告诉他详细资料在档案室第三排而不是把档案室搬他工位上。## 文档索引 - 架构决策记录docs/adr/ - 数据库设计docs/schema.md - 认证流程docs/auth-flow.md6. Git工作流这个很多人会忽略但一旦出问题就很麻烦。你不想让AI直接推main分支吧你不想让它的提交信息叫fix stuff吧## Git工作流 - 分支命名feat/xxx, fix/xxx, refactor/xxx - 提交信息conventional commits格式 - 禁止直接提交到main分支 - 提交前必须通过lint和类型检查六、不同工具的适配细节虽然AGENTS.md正在统一但各家工具还是有一些特色功能就像虽然大家都讲普通话但东北人爱说整一个广东人爱说搞掂。Claude CodeClaude Code支持条件语法可以根据场景加载不同规则。这就像是给实习生配了不同场合的衣服写代码时穿工装写测试时穿白大褂。important ifwriting or modifying tests - 测试文件放在源文件同目录 - 使用createTestApp()辅助函数 /important还支持Hooks机制可以在AI执行操作前后插入检查脚本。用exit 2可以阻止操作执行。这就像是给实习生配了个紧急制动按钮眼看他要推main分支了你啪一按他停住了。CursorCursor用.mdc文件支持通过globs匹配自动激活规则。当上下文中出现匹配的文件时规则自动加载。--- description: 测试相关规范 globs: - src/**/*.test.ts alwaysApply: false ---这就像是给实习生装了个雷达一进测试文件目录自动切换测试模式不用你每次提醒哎这是测试文件注意点。CodexCodex的AGENTS.md是纯Markdown没有条件语法。但支持层级合并——在子目录放单独的AGENTS.mdAI在该目录工作时会自动读取。这就像是总公司有总章程分公司有分章程。实习生去财务部自动读取财务部的规矩去技术部自动读取技术部的规矩。不用你跟着后面喊哎那边不能这样七、一些进阶技巧分层管理当项目复杂到一定程度单个AGENTS.md会力不从心。这时候可以分层根目录放全局规则精简到100行以内各模块目录放模块专属规则docs/目录放详细文档AI进入某个目录工作时会自动读取该目录的规则。这就像你进不同的会议室墙上贴着不同的会议室使用规范。你不需要记住全公司的会议室规范只需要记住你常去的那几间。引入源码作为参考对于私有组件库或者第三方库的定制版本文档总是容易过时。更好的做法是直接把源码放进项目让AI需要时直接读源码。源码就是最准确的文档永远不会过时。就像你教实习生与其给他一本三年前的操作手册不如直接说你看老王怎么做的跟着学。老王就是源码虽然老王可能脾气不太好但绝对准确。八、常见误区误区一自动生成后就不管了很多工具提供/init命令自动生成AGENTS.md但生成的内容往往大而全不够精准。研究表明直接用自动生成的版本反而可能降低AI的表现。这就像是自动生成的简历把你会的不会的都写上去了面试官一问露馅了。自动生成的版本应该当作草稿需要人工审核和精简。误区二写得越多越好AGENTS.md的每一行都会占用AI的上下文窗口。写太多反而会让AI抓不住重点重要规则被淹没在大量信息里。就像你给那个失忆实习生一本500页的员工手册他看完只记得封面颜色。你要给他的是一张A4纸上面写着最重要的10条贴在他显示器边上。误区三写成给人看的文档AGENTS.md是给AI看的不需要优美的措辞和详细的背景解释。错误示范“我们建议在可能的情况下尽量使用命名导出因为这有助于tree-shaking和代码可读性。”正确示范“使用命名导出禁止默认导出。”AI不需要知道为什么只需要知道规则是什么。就像你训狗你说坐狗坐了你不需要解释坐这个动作有助于培养你的纪律性同时方便我拍照发朋友圈。九、一个精简的模板最后送大家一个模板建议控制在40-60行。随着使用已知陷阱部分会自然增长就像你的bug列表一样永远填不满。# AGENTS.md ## 项目概览 - 技术栈 - 核心依赖 - 部署方式 ## 常用命令 - 安装依赖 - 启动开发 - 运行测试 - 代码检查 ## 架构约束 - 最重要的3-5条硬性规则 ## 编码规范 - AI容易犯的错 ## 文档索引 - 关键文档路径 ## Git工作流 - 分支和提交规范 ## 已知陷阱 - 从实际错误中积累的规则十、写在最后AGENTS.md不是写完就不管的文档而是一个需要持续维护的活文档。最好的维护方式是每次AI犯错不要只是在对话里纠正它而是把正确的规则写进AGENTS.md。这样下次就不会再犯同样的错。有个开发者说得很到位“维护AGENTS.md三个月了最大的收获不是AI变聪明了而是逼着自己把脑子里的隐性知识都讲清楚了。”想想看你脑子里那些我们项目其实…、“注意千万别…”、上次就是因为…的知识以前都靠口口相传现在终于有个地方落地了。不仅AI能看新来的同事也能看一举两得。所以从今天开始给你的AI助手写一份项目说明书吧。别再让它像个每天早上失忆的实习生一样重复犯同样的错误瞎编同样的命令推同样的main分支。毕竟AI可以失忆但项目不能翻车。P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。