<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AGENTS.md on Kalend's Blog</title><link>https://blog.kalend.top/tags/agents.md/</link><description>Recent content in AGENTS.md on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Mon, 06 Jul 2026 08:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/agents.md/index.xml" rel="self" type="application/rss+xml"/><item><title>写好 AGENTS.md，比选对 AI 编程工具重要 10 倍</title><link>https://blog.kalend.top/2026/07/06/2026-07-06-agents-md-guide.html/</link><pubDate>Mon, 06 Jul 2026 08:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/07/06/2026-07-06-agents-md-guide.html/</guid><description>&lt;h2 id="先给结论"&gt;先给结论
&lt;/h2&gt;&lt;p&gt;你花了三天对比 Codex CLI、Cursor、Claude Code、Gemini CLI，最后选了&amp;quot;最强&amp;quot;的那个。结果同一个需求，你同事用&amp;quot;最弱&amp;quot;的工具，产出质量甩你一条街。&lt;/p&gt;
&lt;p&gt;区别不在工具。区别在他项目根目录有个 AGENTS.md，你没有。&lt;/p&gt;
&lt;p&gt;我自己的项目，加了 AGENTS.md 之后，代码风格一致性问题基本消失，重构时的&amp;quot;误删&amp;quot;从每周两三次降到几乎为零。不是因为工具变强了，是因为工具终于知道我的项目长什么样。&lt;/p&gt;
&lt;h2 id="工具只是载体上下文才是底层逻辑"&gt;工具只是载体，上下文才是底层逻辑
&lt;/h2&gt;&lt;p&gt;2023 年大家研究 Prompt Engineering——怎么把一句话写好。2025 年中 Shopify CEO Tobi Lütke 把概念推进到 Context Engineering——不是写好一句话，而是给工具建好一整个信息环境。到 2026 年，又有人提出 Harness Engineering，把上下文、架构约束、垃圾回收三层打包。&lt;/p&gt;
&lt;p&gt;不管叫什么，核心逻辑没变：&lt;strong&gt;AI 编程工具的产出质量，70% 取决于你给了它什么上下文，20% 取决于工具本身的能力，10% 是运气。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人在 70% 的地方偷懒，却在 20% 的地方疯狂内卷——天天比哪个工具更强，却不肯花 30 分钟写个项目说明文件。&lt;/p&gt;
&lt;p&gt;Karpathy 2025 年 2 月提出 Vibe Coding，意思是在氛围里沉浸编码，不仔细看生成的代码。到了 2026 年 4 月他自己承认&amp;quot;从没觉得自己这么落后过&amp;quot;。Vibe Coding 的前提是你对项目足够了解，能一眼看出问题。但如果你连项目规范都没写下来，你看不出问题，工具也猜不到规范。&lt;/p&gt;
&lt;h2 id="agentsmd-是什么"&gt;AGENTS.md 是什么
&lt;/h2&gt;&lt;p&gt;一句话：&lt;strong&gt;项目根目录下的一个 Markdown 文件，告诉 AI 编程工具&amp;quot;这个项目怎么干活&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它由 OpenAI Codex CLI 推动成为开放标准。Codex CLI 在 GitHub 上 9.5 万 Star，Gemini CLI 10.5 万——这两个最火的终端编程工具，都认这个文件。&lt;/p&gt;
&lt;p&gt;各工具的上下文文件格式对比：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;配置文件&lt;/th&gt;
					&lt;th&gt;绑定工具&lt;/th&gt;
					&lt;th&gt;AGENTS.md 兼容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Codex CLI&lt;/td&gt;
					&lt;td&gt;AGENTS.md&lt;/td&gt;
					&lt;td&gt;否（标准本身）&lt;/td&gt;
					&lt;td&gt;原生支持&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Cursor&lt;/td&gt;
					&lt;td&gt;.cursorrules / .cursor/rules&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;部分&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude Code&lt;/td&gt;
					&lt;td&gt;CLAUDE.md&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;部分&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Copilot&lt;/td&gt;
					&lt;td&gt;.github/copilot-instructions.md&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;部分&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Gemini CLI&lt;/td&gt;
					&lt;td&gt;GEMINI.md&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;部分&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;问题很明显：如果你用 Cursor 写了 .cursorrules，切到 Claude Code 就得重写一遍。但如果用 AGENTS.md，一个文件适配所有——因为它是跨工具标准，其他工具要么原生支持，要么通过简单适配兼容。&lt;/p&gt;
&lt;h2 id="怎么写7-个核心-section"&gt;怎么写：7 个核心 Section
&lt;/h2&gt;&lt;p&gt;OpenAI Codex 自己仓库的 AGENTS.md 是最好的范本（Codex CLI GitHub 9.5 万 Star）。我拆解了它的结构，提炼出 7 个核心 section：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 项目架构&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;告诉工具：这是什么项目、用了什么技术栈、核心模块在哪。不需要长篇大论，三五行足够。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 项目结构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 后端：Go + Gin，代码在 cmd/server/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 前端：Next.js，代码在 web/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 数据库：PostgreSQL，迁移文件在 migrations/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 单体仓库，不要把前后端拆成独立项目
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. 编码规范&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;代码风格、命名约定、格式化工具。这一条直接决定生成代码的一致性。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 编码规范
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Go 代码必须经过 gofmt 格式化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 变量命名用驼峰，不用下划线
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 错误处理必须显式检查，不要忽略 err
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 提交前运行 golangci-lint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3. 测试要求&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;什么场景必须写测试、测试怎么跑、覆盖率要求。这是防止工具&amp;quot;自信地写出没有测试的代码&amp;quot;的关键。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 测试
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 新增 API 必须有集成测试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 运行测试：make test
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不要用 --all-features，会增加构建时间
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 修改数据库逻辑后必须跑 migration 测试
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;4. 禁止操作&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;明确红线。不说工具就会&amp;quot;好心办坏事&amp;quot;——删文件、改配置、动数据库 schema。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 禁止操作
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不要修改 migrations/ 下已有文件，只新增
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不要动 .env.example，它是模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不要自动删除&amp;#34;看起来没用&amp;#34;的代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不要升级 go.mod 里的依赖版本
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;5. 目录结构&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比&amp;quot;项目架构&amp;quot;更细——哪些目录放什么，入口在哪。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 目录约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; cmd/ 放可执行入口，一个目录一个命令
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; internal/ 放不对外暴露的业务逻辑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; pkg/ 放可被外部引用的库代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 测试文件和源文件放一起，不单独建 tests/ 目录
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;6. 部署流程&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;工具如果知道怎么部署，就能帮你验证改动是否打破构建。不知道就只能盲写。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 部署
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 构建：docker build -t app .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 测试：make test &amp;amp;&amp;amp; make lint
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 部署前必须确认构建通过
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Dockerfile 不要用 latest 标签
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;7. 角色分工（多 Agent 场景）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是进阶用法。当多个工具/角色协作时，不同角色读不同 section，减少上下文噪音。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 角色
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 后端开发：读 internal/ 相关 section，关注 API 设计
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 前端开发：读 web/ 相关 section，关注组件和样式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 测试工程师：读测试 section，关注覆盖率和集成测试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 运维：读部署 section，关注 Dockerfile 和 CI 配置
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="有-vs-没有的差距"&gt;有 vs 没有的差距
&lt;/h2&gt;&lt;p&gt;这不是玄学。同一个需求，有没有 AGENTS.md，产出质量差距肉眼可见：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;没有 AGENTS.md&lt;/th&gt;
					&lt;th&gt;有 AGENTS.md&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;代码风格&lt;/td&gt;
					&lt;td&gt;随机风格，每次生成不一样&lt;/td&gt;
					&lt;td&gt;符合项目既有规范&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;错误处理&lt;/td&gt;
					&lt;td&gt;忽略错误返回值，或用过度防御&lt;/td&gt;
					&lt;td&gt;遵循项目约定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;重构安全性&lt;/td&gt;
					&lt;td&gt;经常误删&amp;quot;看起来没用&amp;quot;的代码&lt;/td&gt;
					&lt;td&gt;知道哪些不能碰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;测试覆盖&lt;/td&gt;
					&lt;td&gt;写完功能不写测试，或写无意义测试&lt;/td&gt;
					&lt;td&gt;按项目要求补测试&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;上下文一致&lt;/td&gt;
					&lt;td&gt;每次对话重新解释项目背景&lt;/td&gt;
					&lt;td&gt;一劳永逸&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我自己踩过最大的坑：工具&amp;quot;好心&amp;quot;帮我删了一段它认为没用的兼容代码，结果线上老接口全挂了。加了一条&amp;quot;不要自动删除任何看起来没用的代码&amp;quot;到 AGENTS.md 后，再没发生过。&lt;/p&gt;
&lt;h2 id="常见错误"&gt;常见错误
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;错误 1：写得像产品文档&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AGENTS.md 不是给人看的 README，是给工具看的操作手册。别写&amp;quot;我们是一个创新驱动的敏捷团队&amp;quot;——写&amp;quot;后端用 Go，测试用 make test&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误 2：什么都往里塞&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;文件太长，工具反而抓不住重点。控制在 100 行以内，只放&amp;quot;不写就会出事&amp;quot;的规则。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误 3：写完不更新&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目演进后规范变了，AGENTS.md 还停留在三个月前。规则：每次工具产出不符合预期时，第一反应不是换工具，而是检查 AGENTS.md 有没有覆盖这个场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误 4：只放规范不放禁止操作&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人记住&amp;quot;不能做什么&amp;quot;比记住&amp;quot;要做什么&amp;quot;更有效，工具也一样。禁止操作的优先级高于编码规范。&lt;/p&gt;
&lt;h2 id="进阶多角色协作"&gt;进阶：多角色协作
&lt;/h2&gt;&lt;p&gt;当项目复杂到一个 AGENTS.md 不够用时，可以利用工具的层级读取机制：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;项目根目录/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── AGENTS.md # 全局规范
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── backend/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── AGENTS.md # 后端特定规范
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── frontend/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── AGENTS.md # 前端特定规范
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── ops/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── AGENTS.md # 运维特定规范
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样不同角色进入不同目录时，只读到和自己相关的上下文。后端开发不会被前端配置干扰，运维不会被业务逻辑干扰。&lt;/p&gt;
&lt;p&gt;这也是 Harness Engineering 的核心思想：上下文不仅要注入，还要清理。让工具在每个时刻只看到它需要的信息，而不是把整个项目扔给它。&lt;/p&gt;
&lt;h2 id="结论"&gt;结论
&lt;/h2&gt;&lt;p&gt;选工具是在选载体，写 AGENTS.md 是在设计信息环境。&lt;/p&gt;
&lt;p&gt;载体可以换，环境设计的思路是通用的。今天最强的工具，半年后可能被超越；但你花时间搞清楚的 Context Engineering 方法论——怎么拆解项目规范、怎么定义禁止边界、怎么让工具理解你的上下文——这些不会过时。&lt;/p&gt;
&lt;p&gt;先写好 AGENTS.md，再纠结用哪个工具。&lt;/p&gt;
&lt;p&gt;如果还没有，这里有个最小可用模板：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# AGENTS.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 项目
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（一句话描述项目）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 目录结构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（核心目录及含义）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 编码规范
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（3-5 条最重要的规则）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 测试
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（怎么跑测试，什么时候必须写）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 禁止操作
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（3-5 条红线）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 部署
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（构建和验证命令）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;30 分钟写完，受益远超你换三次工具。&lt;/p&gt;</description></item></channel></rss>