🚀进阶IDE工具接入Claude Code / Codex / Cursor / Trae

AGENTS.md 统一配置实战:一份文件驱动四大编码工具

2026 年 9 月,Claude Code 2.1.277 开始在没有 CLAUDE.md 时自动回退读取 AGENTS.md——这是 OpenAI 捐给 Agentic AI Foundation 的规范,目前已有 6 万多个开源项目在用。这意味着一件事:你不再需要为每个 AI 编程工具各写一份配置。本文讲透 AGENTS.md:规范字段全解、四个客户端(Claude Code / Codex / Cursor / Trae)的兼容矩阵与优先级规则、从 CLAUDE.md 平滑迁移的 5 步法、分层配置(根目录 + 子目录就近覆盖)、10 个可直接抄的实战片段(编码规范 / 测试要求 / 禁区声明 / 命令清单 / 架构速览)、真实项目的完整范本、以及 18 条踩坑排查表。

教程团队
2026-09-19
1 个步骤

前置条件

  • 1已安装至少一个支持 AGENTS.md 的 AI 编程客户端(Claude Code 2.1.277+ / Codex CLI / Cursor / Trae)
  • 2有一个实际的 Git 仓库用于实践
  • 3了解基本的 Markdown 语法

腾讯智能体开发平台 ADP

新客首月专属价,最高直降 880 元,构建/分发/治理企业级 Agent

查看

AGENTS.md 统一配置实战

前置准备

  • 已安装至少一个支持 AGENTS.md 的 AI 编程客户端
  • 有一个实际的 Git 仓库用于实践
  • 了解基本的 Markdown 语法

一、为什么现在必须学这个

1.1 一个真实的痛点

去年你可能遇到过这种情况:

text
1项目根目录/
2├── CLAUDE.md        # 给 Claude Code 看的
3├── .cursorrules     # 给 Cursor 看的
4├── .windsurfrules   # 给 Windsurf 看的
5├── copilot-instructions.md   # 给 GitHub Copilot 看的
6└── AGENTS.md        # 给 Codex 看的

五份文件,内容 80% 重复,改一处要同步五处。 而且它们迟早会不同步——改了 CLAUDE.md 忘了改 .cursorrules,然后 Cursor 生成的代码风格就跟 Claude Code 的对不上,Code Review 时谁也说不清为什么。

1.2 2026 年 9 月发生了什么

2026 年 9 月 19 日,Claude Code v2.1.277 发布了一个不起眼但影响深远的改动:

信息

当目录下没有 CLAUDE.md 时,Claude Code 会回退读取 AGENTS.md。

AGENTS.md 是 OpenAI 在 2025 年捐给 Agentic AI Foundation 的开放规范,目前已被 6 万多个开源项目采用。

这条改动的意义:

之前之后
Claude Code 只读 CLAUDE.mdClaude Code 优先 CLAUDE.md,缺失时读 AGENTS.md
Codex 只读 AGENTS.md不变
需要维护两份一份 AGENTS.md 通吃

一个文件驱动所有工具,这件事终于成立了。

1.3 支持现状矩阵

客户端AGENTS.md 支持子目录就近覆盖版本要求
Claude Code✅ 原生(回退)✅2.1.277+
Codex CLI✅ 原生(首选)✅全版本
Cursor✅❌ 仅根目录2025 底+
Trae✅❌ 仅根目录2026+
GitHub Copilot⚠️ 部分❌实验性
Cline❌—暂不支持
Windsurf❌—暂不支持

二、规范字段全解

2.1 文件位置与加载规则

text
1仓库根/
2├── AGENTS.md              ← 全局约定(必读)
3├── src/
4│   ├── AGENTS.md          ← src/ 下的约定
5│   └── api/
6│       └── AGENTS.md      ← src/api/ 下的约定(最具体)
7└── tests/
8    └── AGENTS.md

加载顺序(以在 src/api/user.ts 工作为例):

text
11. 仓库根/AGENTS.md          优先级 低
22. src/AGENTS.md                  ↓
33. src/api/AGENTS.md         优先级 高

全部拼接注入,不是覆盖。后面的内容在上下文里靠后,对模型的影响更大。

警告

⚠️ Cursor 和 Trae 只加载根目录那一份。子目录的 AGENTS.md 对它们无效。所以根目录那一份必须自包含——即使子目录文件不生效,Agent 也不会做出违反规范的事。

2.2 推荐结构(8 个区块)

markdown
1# 项目名称
2
3一句话说明这个项目做什么,以及它的核心约束。
4
5## 技术栈
6(语言 / 框架 / 版本 / 包管理器 / 关键依赖)
7
8## 常用命令
9(构建 / 测试 / lint / 迁移,可直接复制执行)
10
11## 代码规范
12(命名 / 文件组织 / 注释 / 错误处理 / 类型)
13
14## 测试要求
15(什么必须测 / 覆盖率 / 怎么跑)
16
17## 架构速览
18(目录职责 + 关键模块关系)
19
20## 禁区
21(绝对不能做的事,含原因)
22
23## 工作流约定
24(分支 / 提交 / PR / Code Review)
25
26## 环境说明
27(环境变量 / 本地启动 / 依赖服务)

2.3 每个区块怎么写才有用

技术栈:写版本号,不写「最新版」

markdown
1## 技术栈
2- TypeScript 5.6(strict 模式,**不要关 strict**)
3- Next.js 14.2 App Router(不要用 Pages Router)
4- Tailwind CSS 3.4(不要升 4.x,配置文件格式变了)
5- PostgreSQL 15 + Prisma 5.22
6- 包管理器:pnpm 9(**不要用 npm/yarn**)

为什么必须钉版本:模型 training data 里 Next.js 14 和 15 的写法混在一起。你不写死版本,它有 50% 概率给你 Pages Router 的写法或者 React Server Component 的旧语法。

常用命令:给完整可复制的命令

markdown
1## 常用命令
2# 开发
3pnpm dev                    # 启动开发服务器 localhost:3000
4
5# 测试
6pnpm test                   # 跑全部单测
7pnpm test -- --watch        # 监听模式
8pnpm test:integration       # 集成测试(需要本地 Postgres 起来)
9
10# 质量
11pnpm lint                   # ESLint
12pnpm typecheck              # tsc --noEmit
13pnpm format                 # Prettier 写入
14
15# 数据库
16pnpm prisma migrate dev     # 本地建迁移
17pnpm prisma studio          # 可视化查看数据

关键:pnpm test:integration 后面的括号注释不是废话。没有它,Agent 会在集成测试失败时不告诉你「你忘了起 Postgres」,而是开始瞎改代码。

禁区:必须写原因

markdown
1## 禁区
2
31. **禁止直接改 `prisma/schema.prisma` 后手动写 SQL 迁移**
4   原因:本项目用 `prisma migrate dev` 自动生成迁移,手写会导致迁移历史与 schema 不一致。
5
62. **禁止在 `app/` 目录下写 `console.log`**
7   原因:CI 有 lint 规则拦截,且线上日志采集用的是 `lib/logger.ts`。
8
93. **禁止删除 `lib/legacy/` 下的任何文件**
10   原因:这批文件在灰度切流中,还有 12% 流量依赖,删除即 P0。
11
124. **禁止在组件里直接 fetch,一律走 `lib/api/client.ts`**
13   原因:统一的错误处理和鉴权拦截在那里面。
14
155. **禁止提交 `.env*` 文件**
16   原因:历史上有过一次密钥泄露事故。

写原因和不写原因的区别是巨大的:

  • 不写原因:Agent 不知道边界在哪,遇到边缘情况会自作主张
  • 写原因:Agent 能推断出「什么情况下这条规则可以例外」

第 3 条尤其重要——「灰度切流中,还有 12% 流量依赖」这种信息,Agent 不可能猜到,但它决定了 Agent 会不会去动那批文件。


三、四个客户端的具体配置

3.1 Claude Code

配置位置:仓库根 AGENTS.md(或 CLAUDE.md,二选一)

优先级规则(v2.1.277+):

text
11. 当前目录及祖先目录的 CLAUDE.md(如果存在)
22. 否则回退到 AGENTS.md
33. 用户级 ~/.claude/CLAUDE.md
44. 项目级 .claude/CLAUDE.local.md(本地私有,不提交)

验证是否生效:

bash
1# 让 Claude Code 自己说出来
2claude -p "列出你当前加载的所有记忆文件内容来源"

一个有用的技巧:把个人偏好(不是团队规范)放进 .claude/CLAUDE.local.md 并加进 .gitignore。团队规范进 AGENTS.md 提交到仓库,个人偏好不污染仓库。

3.2 Codex CLI

配置位置:AGENTS.md(首选),Codex 从 2025 年起就原生支持。

bash
1# 初始化
2codex
3
4# 指定工作目录(影响 AGENTS.md 加载路径)
5codex --cd ./src/api

Codex 的一个特殊行为:它会同时读取 AGENTS.md 和 ~/.codex/instructions.md。后者是全局指令,对所有项目生效。

3.3 Cursor

配置位置:仓库根 AGENTS.md

.cursorrules 迁移:

bash
1# 把旧的 .cursorrules 内容合并进 AGENTS.md 的「代码规范」区块
2cat .cursorrules >> /tmp/old_rules.md
3# 手动整理后合并,然后删除
4rm .cursorrules

限制:

  • 只读根目录的 AGENTS.md,子目录那份会被忽略
  • 不支持 @file 引用语法(会当纯文本)
  • .cursor/rules/*.mdc 仍然优先级更高,如果两者冲突,以 .cursor/rules 为准

3.4 Trae

配置位置:仓库根 AGENTS.md

Trae 支持最基础的版本:只读根目录一份,不解析 @ 引用。写法上不要依赖任何高级语法,用纯 Markdown 就行。

3.5 兼容写法速查

语法Claude CodeCodexCursorTrae建议
普通 Markdown✅✅✅✅主力使用
@path/to/file 引用✅✅❌❌用普通链接代替
代码块命令✅✅✅✅安全
表格✅✅✅✅安全
HTML 注释✅✅⚠️⚠️少用
子目录就近覆盖✅✅❌❌根目录自包含

四、从 CLAUDE.md 迁移的五步法

Step 1:盘点现有配置

bash
1ls -la | grep -iE "claude|cursor|agents|windsurf|copilot"

列出所有配置文件,逐个看内容。

Step 2:合并去重

把内容按本文 2.2 的 8 个区块重新归类。重复的内容只保留一份,冲突的内容人工裁决。

典型冲突及裁决原则:

冲突裁决
两个文件规定了不同的缩进(2 空格 vs 4 空格)以 .editorconfig / Prettier 配置为准
一个说用 npm,一个说用 pnpm以 package.json 的 packageManager 字段为准
一个禁止某操作,另一个没提保留禁止项
测试覆盖率要求不同取更严格的那个

Step 3:改名为 AGENTS.md

bash
1git mv CLAUDE.md AGENTS.md

保留 git 历史,别直接新建+删除。

Step 4:加兼容软链(可选)

如果团队里有人还在用旧版 Claude Code(< 2.1.277),加一个软链:

bash
1ln -s AGENTS.md CLAUDE.md
2echo "CLAUDE.md" >> .gitignore    # 软链不提交

信息

注意:软链在 Windows 上麻烦,Windows 团队直接复制一份并加进 .gitignore,用一个 pre-commit hook 保证同步。

Step 5:验证四个工具都能读到

bash
1# Claude Code
2claude -p "你读到的项目规范第一条是什么"
3
4# Codex
5codex "你读到的项目规范第一条是什么"
6
7# Cursor / Trae
8# 在对话框里问同样的问题

四个工具给出一致答案 = 迁移成功。


五、10 个可直接抄的片段

片段 1:编码规范(TypeScript)

markdown
1## 代码规范
2
3### TypeScript
4- strict 模式全开,禁止 `any`(确需时用 `unknown` + 类型守卫)
5- 导出组件用命名导出,不用 default 导出
6- 类型定义放 `types/` 目录,不要散落在组件文件里
7- 异步函数一律返回 `Result<T, E>`,不用 try/catch 吞异常
8- 禁止 `as` 断言,用类型守卫函数
9
10### 命名
11- 文件名:kebab-case(`user-profile.tsx`)
12- 组件:PascalCase
13- 函数/变量:camelCase
14- 常量:SCREAMING_SNAKE_CASE
15- 数据库表:snake_case 复数(`user_profiles`)
16
17### 注释
18- 只写「为什么」,不写「做了什么」
19- 每个导出函数必须有 JSDoc
20- 禁止注释掉的代码,直接删(git 里有历史)

片段 2:测试要求

markdown
1## 测试要求
2
3- 每个 service 方法必须有单测,覆盖率门槛 70%
4- 涉及金额/权限/状态机的逻辑,覆盖率必须 100%
5- 测试文件命名 `*.test.ts`,与源码同目录
6- 用 `describe` 描述被测对象,`it` 描述预期行为(用中文也行,但要一致)
7- **禁止 mock 数据库**,用 testcontainers 起真实 Postgres
8- 集成测试标记 `@integration`,CI 单独跑

片段 3:Git 工作流

markdown
1## 工作流约定
2
3- 分支:`feature/xxx` `fix/xxx` `chore/xxx`
4- 提交信息:Conventional Commits(`feat:` `fix:` `chore:`)
5- 提交前必跑:`pnpm lint && pnpm typecheck && pnpm test`
6- PR 描述必须包含:改了什么 / 为什么改 / 怎么验证
7- **禁止 force push 到 main**
8- PR 单文件改动超 500 行要拆分(审查不过来)

片段 4:架构速览(带 ASCII 图)

markdown
1## 架构速览
2
3\`\`\`
4┌─────────────┐
5│   app/      │  Next.js App Router 页面
6├─────────────┤
7│ components/ │  纯展示组件,不含业务逻辑
8├─────────────┤
9│   lib/      │  业务逻辑层
10│  ├ api/     │  外部 API 封装
11│  ├ db/      │  Prisma 数据访问
12│  └ utils/   │  纯函数工具
13├─────────────┤
14│   types/    │  全局类型
15└─────────────┘
16\`\`\`
17
18关键约定:
19- `app/` 只做路由和布局,不写业务逻辑
20- `components/` 不直接调 API,通过 props 接收数据
21- `lib/db/` 是唯一允许直接操作 Prisma 的地方

片段 5:错误处理约定

markdown
1## 错误处理
2
3统一使用 `Result<T, E>` 模式:
4
5\`\`\`typescript
6type Result<T, E = AppError> =
7  | { ok: true; value: T }
8  | { ok: false; error: E };
9\`\`\`
10
11规则:
12- 不抛异常,返回 Result
13- 错误信息必须包含上下文(哪个操作、哪个 id)
14- 面向用户的错误走 `AppError`,内部错误记日志
15- **禁止空 catch 块**(`catch {}`)

片段 6:环境变量说明

markdown
1## 环境说明
2
3必需环境变量(缺一个启动失败):
4- `DATABASE_URL`      Postgres 连接串
5- `REDIS_URL`         Redis 连接串
6- `JWT_SECRET`        JWT 签名密钥
7
8可选:
9- `LOG_LEVEL`         默认 info
10- `SENTRY_DSN`        不配则不启用错误上报
11
12本地启动:
131. `docker compose up -d`  起 Postgres + Redis
142. `cp .env.example .env`
153. `pnpm prisma migrate dev`
164. `pnpm dev`

片段 7:性能约束

markdown
1## 性能约束
2
3- 单页面首屏 JS bundle < 200KB(CI 有门禁)
4- 数据库查询必须走索引,`EXPLAIN` 确认无全表扫描
5- 列表查询一律分页,单页最多 100 条
6- **禁止在循环里查数据库**(N+1),用 `include` 或批量查询
7- 图片一律走 next/image,禁止裸 `<img>`

片段 8:安全约定

markdown
1## 安全约定
2
3- 所有用户输入必须校验,用 zod schema
4- SQL 一律用 Prisma 参数化查询,禁止字符串拼接
5- 敏感字段(密码/token/身份证)响应前必须剔除
6- **禁止把密钥写进代码**,走环境变量
7- 接口鉴权用 `lib/auth/middleware.ts`,不要自己实现

片段 9:AI 协作特别约定

markdown
1## AI 协作约定
2
3- 改动前先说明你要改哪些文件,等我确认
4- 一次只改一个关注点,不要顺手重构无关代码
5- 不确定 API 是否存在时去查 `node_modules` 里的类型定义,不要凭印象写
6- 生成的代码必须通过 `pnpm typecheck`,不通过不要交付
7- 如果发现 AGENTS.md 的规范与实际情况冲突,**告诉我,不要自行违反**

片段 10:禁区(带原因)

markdown
1## 禁区
2
31. 禁止修改 `lib/legacy/` —— 灰度中,12% 流量依赖
42. 禁止改 `prisma/migrations/` 下已提交的迁移 —— 会导致线上 schema 漂移
53. 禁止在 `app/api/` 写业务逻辑 —— 那层只做参数校验和转发
64. 禁止引入新的 UI 库 —— 已在去 antd 化的过程中
75. 禁止提交 `console.log` —— CI 拦截

六、完整范本

一个真实的中型项目 AGENTS.md(可直接改改就用):

markdown
1# 电商中台 API
2
3基于 Next.js 14 App Router 的电商中台后端,为 B 端商家后台和 C 端小程序提供接口。
4核心约束:金额计算必须用 Decimal,禁止浮点数。
5
6## 技术栈
7- TypeScript 5.6(strict,禁止 any)
8- Next.js 14.2 App Router
9- Prisma 5.22 + PostgreSQL 15
10- Redis 7(缓存 + 会话)
11- pnpm 9(不要用 npm/yarn)
12
13## 常用命令
14pnpm dev                 开发服务器 :3000
15pnpm test                单测
16pnpm test:integration    集成测试(需先 docker compose up -d)
17pnpm lint && pnpm typecheck   提交前必跑
18pnpm prisma migrate dev  建迁移
19
20## 代码规范
21- 金额一律用 Decimal.js,禁止 number 做金额运算
22- 所有 service 返回 Result<T>
23- 文件名 kebab-case,类型定义进 types/
24- 禁止 console.log,用 lib/logger
25
26## 测试要求
27- service 层覆盖率 ≥70%,金额/库存逻辑 100%
28- 禁止 mock 数据库,用 testcontainers
29- 每个 PR 必须带测试
30
31## 架构速览
32app/api/          路由层(只做校验转发)
33lib/service/      业务逻辑(主要在这里写代码)
34lib/db/           数据访问(唯一允许用 Prisma 的地方)
35lib/cache/        Redis 封装
36types/            全局类型
37
38## 禁区
391. 禁止金额用 number —— 浮点精度会导致对账不平,出过一次 P0
402. 禁止直接改已提交的迁移文件
413. 禁止在 service 里直接写 SQL
424. 禁止提交 .env
43
44## 工作流
45- 分支 feature/xxx,Conventional Commits
46- PR 必须说明:改了什么 / 为什么 / 怎么验证
47- 单 PR 不超 500 行改动

这份文件 60 行,覆盖了 Agent 需要知道的 90% 信息。 不需要更长。


七、分层配置实战

7.1 根目录写什么

只写全项目通用的、不会频繁变的东西:技术栈、命令、全局规范、禁区、工作流。

7.2 子目录写什么

只写该目录特有的、与全局不同的东西:

markdown
1<!-- src/api/legacy/AGENTS.md -->
2# 遗留接口层特别约定
3
4这里是 2024 年的老接口,正在逐步迁移到 src/api/v2/。
5
6## 特别约定
7- 不要在这里新增接口,新增一律去 v2
8- 修改时**不要顺手重构**,保持最小改动(这批接口没有测试覆盖)
9- 命名风格是 snake_case(与全局 kebab-case 不同,是历史遗留,不要改)
10- 如果要动这里的逻辑,先告诉我迁移计划,我评估后再动

7.3 分层的三个原则

原则说明
不重复子目录不写根目录已有的内容
只写例外子目录只声明「与全局不同之处」
就近优先越靠近当前文件的优先级越高

反面例子(不要这么写):

markdown
1<!-- src/components/AGENTS.md -->
2# 组件规范
3- 用 TypeScript          ← 根目录已写,重复
4- 命名用 PascalCase      ← 根目录已写,重复
5- 组件不超过 200 行       ← 这才是该写的例外

八、故障排查表

#现象原因解决
1Claude Code 完全不读 AGENTS.md版本 < 2.1.277升级:npm i -g @anthropic-ai/claude-code
2有 CLAUDE.md 时 AGENTS.md 被忽略优先级规则:CLAUDE.md 优先删掉 CLAUDE.md 或改名成 AGENTS.md
3Cursor 不读子目录的 AGENTS.mdCursor 只支持根目录把关键约定上移到根目录
4@file 引用在 Cursor 里不生效Cursor 不支持该语法改成普通 Markdown 链接或直接内联内容
5Agent 仍然用错的包管理器package.json 没写 packageManager 字段加 "packageManager": "pnpm@9.0.0"
6上下文被吃满,回答变慢AGENTS.md 太长压到 150 行内,细节挪到 docs/
7团队配置和个人配置冲突都写在仓库里个人偏好放 .claude/CLAUDE.local.md 并 gitignore
8Windows 软链 CLAUDE.md 失效Git Bash 创建的是文件不是链接直接复制一份 + pre-commit 同步脚本
9子目录规范没生效路径不在当前工作目录的祖先链上确认 pwd 在正确的目录
10Agent 说「没看到任何项目规范」文件没提交或编码问题确认文件已 git add;编码用 UTF-8 无 BOM
11中文内容乱码文件保存成 GBK转 UTF-8:iconv -f GBK -t UTF-8 AGENTS.md
12Codex 读到的是全局指令不是项目规范~/.codex/instructions.md 覆盖了检查全局文件,把项目专属内容挪回 AGENTS.md
13规范写了但 Agent 违反写了「不要做 X」没写原因补上原因,Agent 才能推断边界
14多个子目录规范互相矛盾分层没设计好矛盾项统一上移到根目录
15Trae 读一半就停文件里有特殊字符去掉 HTML 注释和特殊符号
16改了 AGENTS.md 但会话里没生效会话缓存了旧的上下文开新会话(Claude Code 用 /clear)
17PR 里混入了 CLAUDE.local.md没加 gitignore加 .claude/CLAUDE.local.md 到 .gitignore
18团队不同步,有人用旧格式没有 CI 校验加 CI 检查:禁止提交 .cursorrules / CLAUDE.md

九、CI 校验(防止配置分裂回潮)

加一个 GitHub Action,拦截旧格式文件:

yaml
1# .github/workflows/agents-md.yml
2name: AGENTS.md 规范检查
3on: [pull_request]
4
5jobs:
6  check:
7    runs-on: ubuntu-latest
8    steps:
9      - uses: actions/checkout@v4
10
11      - name: 禁止提交旧的配置文件
12        run: |
13          for f in .cursorrules .windsurfrules copilot-instructions.md CLAUDE.md; do
14            if [ -f "$f" ]; then
15              echo "❌ 发现 $f,请合并到 AGENTS.md 后删除"
16              exit 1
17            fi
18          done
19
20      - name: AGENTS.md 必须存在
21        run: |
22          test -f AGENTS.md || { echo "❌ 缺少 AGENTS.md"; exit 1; }
23
24      - name: 长度检查(根目录不超过 200 行)
25        run: |
26          lines=$(wc -l < AGENTS.md)
27          if [ "$lines" -gt 200 ]; then
28            echo "❌ AGENTS.md 有 $lines 行,超过 200 行上限,请精简"
29            exit 1
30          fi
31
32      - name: 必须包含核心区块
33        run: |
34          for sec in "技术栈" "常用命令" "代码规范" "禁区"; do
35            grep -q "## $sec" AGENTS.md || { echo "❌ 缺少区块:$sec"; exit 1; }
36          done

十、常见问题

Q1:AGENTS.md 会被提交到 Git 吗?

必须提交。它是团队共享的项目规范,和 README 一个性质。

个人偏好(比如「回答用中文」「别给我写代码注释」)不要放这里,放 .claude/CLAUDE.local.md 并 gitignore。

Q2:和 README.md 有什么区别?

文件读者内容
README.md人项目介绍、快速开始、贡献指南
AGENTS.mdAI精确的技术约束、命令、禁区

不要合并。README 里的「欢迎贡献 PR」对 AI 是噪音;AGENTS.md 里的「禁止 force push」对人不重要。

Q3:Monorepo 怎么办?

每个包一个 AGENTS.md,根目录放全局约定:

text
1monorepo/
2├── AGENTS.md              ← 全局:包管理器、Node 版本、CI 流程
3├── packages/
4│   ├── web/AGENTS.md      ← Next.js 相关
5│   ├── api/AGENTS.md      ← 后端相关
6│   └── shared/AGENTS.md   ← 公共库相关

Q4:能不能引用外部文件?

Claude Code 和 Codex 支持 @path/to/file 语法,Cursor / Trae 不支持。

跨工具兼容的写法:用普通 Markdown 链接 + 一句「需要时读取」:

markdown
1详细的 API 设计规范见 [docs/api-conventions.md](./docs/api-conventions.md)。
2涉及接口设计时先读这份文档。

Q5:多久更新一次?

每次技术栈变动时立即更新。过期的 AGENTS.md 比没有更糟——Agent 会按错误的规范写,而且你很难发现。

建议:把它加进 PR 模板的检查项。

markdown
1<!-- .github/pull_request_template.md -->
2- [ ] 本次改动是否涉及技术栈/规范变化?是 → 已同步更新 AGENTS.md

Q6:怎么验证 AGENTS.md 真的生效了?

最直接的方法——故意问一个只有 AGENTS.md 里有答案的问题:

bash
1claude -p "这个项目里金额用什么类型?为什么?"

如果它答出「Decimal,因为浮点精度会导致对账不平,出过一次 P0」,说明读到了。


十一、相关教程


小结

AGENTS.md 本质上解决的是规范碎片化问题。三个落地要点:

  1. 钉死版本,写清原因。版本号防止模型用过时写法,原因帮助模型推断规则边界。
  2. 根目录自包含,控制在 150 行。Cursor / Trae 只读根目录那份,且这份每次会话都进上下文。
  3. 禁区必须写原因。这是唯一能让 Agent 理解「为什么不能动」的方式。

以及一条组织纪律:

信息

加 CI 拦截旧配置文件。不然三个月后 .cursorrules 会自己长回来。

常见问题

QAGENTS.md 和 CLAUDE.md 到底留哪个?

新项目只留 AGENTS.md,它是跨工具规范,Claude Code 2.1.277+ 已经原生支持回退读取。已有 CLAUDE.md 的老项目,如果只用 Claude Code 可以不迁;一旦引入第二个工具(Codex / Cursor / Trae),就必须合并成 AGENTS.md,否则两套配置会打架——不同工具读到不同规范,行为不一致且极难排查。

Q子目录里的 AGENTS.md 会覆盖根目录的吗?

不会覆盖,是就近追加。客户端会把从仓库根到当前工作目录路径上的所有 AGENTS.md 全部拼接起来,越靠近当前文件的优先级越高。所以根目录只写全局约定(技术栈、编码规范、禁区),子目录只写该模块的特殊约定。别在子目录重复根目录内容,会白白吃掉上下文。

QAGENTS.md 写多长合适?

根目录控制在 150 行以内,全文不超过 400 行。它每次会话都会被注入上下文,写长了等于长期缴一笔上下文税。实测一个 900 行的 AGENTS.md 会让每次请求多花 12K tokens,一个月下来在多 Agent 场景下是实打实的成本。把细节挪到 docs/ 里,用链接指过去,让 Agent 按需读取。

QCursor 和 Trae 真的读 AGENTS.md 吗?

读,但支持程度不同。Cursor 从 2025 年底开始支持项目根 AGENTS.md;Trae 在 2026 年跟进。两者都不支持子目录就近覆盖(只有根目录那份生效),且对 @引用 语法支持不完整。本文第 4 节给了完整的兼容矩阵,照着写就能四个工具都跑通。

阿里云推广

读完想动手?新用户首单 8 折上云

服务器 + 大模型 API + 对象存储,新用户首购享 20% 补贴

首单 8 折云服务器大模型 API对象存储

新用户首购享 20% 补贴(8 折)· 本次推广支持本站持续运营

腾讯云推广

腾讯智能体开发平台 ADP

新客首月专属价,最高直降 880 元,构建/分发/治理企业级 Agent

智能体Agent首月直降 880一站式

腾讯云新用户专享 · 本次推广支持本站持续运营

订阅每日 AI 日报

每天早上 8:00(GMT+8)把当天 AI 行业要闻投递到你的邮箱,随时一键退订。

每天早上 8:00(GMT+8)投递当天日报;若当天日报未生成则不发送,也不会补发往期。

更多订阅方式(RSS / 微信推送)仅发送日报,不做任何其他用途

相关推荐

查看更多 →
教程IDE工具接入

DeepSeek V4.1 Flash 接入 Cursor 指南:BYOK 与 Rules 配置

Cursor 的 Pro 订阅每月只给固定配额的高速请求,超出后要么排队要么降速,而绝大多数日常编码请求并不需要最强的那档模型。本教程给出把 DeepSeek V4.1 Flash 接进 Cursor 的完整两条路径:成本最低的「BYOK 自定义 OpenAI 兼容模型」(5 分钟完成,覆盖 Tab 补全、Cmd-K 内联编辑、Agent 三种能力)与最稳的「自建 OpenAI 兼容代理 + Docker 一键部署 + 源码手动配置」(解决鉴权头不一致、Function Calling 降级、429 限流重试三个硬伤)。含 V4.1 Flash 在 Cursor Agent 多文件重构场景下的实测数据(62 个文件重命名 8 分 41 秒、单文件成本约 ¥0.011)、与 Claude Opus 5.5 / GPT-6 的横向对比、Cursor Rules 八条约束模板、键位映射表,以及 21 行故障排查表。

2026-10-10
#DeepSeek#V4.1 Flash
教程编辑器接入

通义千问 Qwen3-Max 接入 Cursor 完整指南

Qwen3-Max 是阿里云百炼平台上通义千问系列的旗舰文本模型,中文代码注释理解、中文需求转代码、长上下文仓库问答三项在国产模型里属于第一梯队,价格只有同级海外模型的零头。本篇解决一个绝大多数教程都没讲清楚的问题:Cursor 里的「模型」根本不是一个开关,而是三套彼此独立的通道——Chat/Agent 走 Custom API、Cmd+K 走同一个 Custom API 但行为不同、Tab 补全(Copilot++)完全不走 Custom API。很多人填完 Base URL 发现「补全还是英文、还是 Cursor 自己的模型」,就是因为没搞清这三者的边界。全文给出百炼 OpenAI 兼容端点的准确填法、四个模型档位的选型矩阵、Cursor Rules 针对国产模型的写法、Context 与成本实测数据、四场景 token 对照表,以及 17 行故障排查表。

2026-10-12
#通义千问#Qwen3-Max
教程MCP协议接入

Claude Code 接入 PostgreSQL MCP 完整指南

手把手教你在 Claude Code 中接入 PostgreSQL MCP Server,让 AI 直接读取库表结构、执行只读查询、生成报表与优化 SQL

2026-09-08
#PostgreSQL MCP#Claude Code
教程MCP协议接入

Cursor 接入 MCP Server 完整指南

Cursor 接入 MCP Server 完整教程:MCP 协议简介、Server 安装配置、工具调用权限与实测。

2026-08-15
#MCP Server#Cursor

好物推荐 · 广告合作