正文
现在的 AI Coding Agent 已经不只是“帮你补全几行代码”的工具了。Claude Code 官方文档将它描述为一种 agentic coding tool,可以读取代码库、编辑文件、运行命令,并与开发工具集成。OpenAI Codex 相关文档也已经支持 AGENTS.md 这类仓库级说明,用来向编码 Agent 提供额外指导。
这意味着 AI Agent 已经开始参与真实工程流程:读代码、改文件、跑测试、修 bug、提交 diff,甚至协助完成 Pull Request。
但问题也随之出现:AI Agent 会写代码,不代表它知道你的项目该怎么写代码。
它不知道你们团队为什么不用某个库;不知道某个目录虽然看起来像旧代码,但其实是核心兼容层;不知道测试必须用指定命令跑;不知道数据库迁移不能随便改;也不知道某个模块牵涉线上支付、权限或风控逻辑。
所以,为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md?答案很简单:因为 AI Agent 需要一个稳定、明确、可重复读取的“项目说明书”。没有它,AI 就只能靠猜。
而在软件工程里,靠猜写出来的代码,往往是最危险的。
引言:AI Agent 不缺能力,缺的是项目上下文
AI Agent 的能力越来越强,但它并不会自动理解你的组织规则、历史包袱和工程边界。项目越大,越不能指望 Agent 只靠当前文件和通用经验做出正确判断。
项目级说明文件的价值,就是把最重要的上下文固定下来:这个项目怎么构建、怎么测试、哪些目录不能碰、哪些代码路径风险最高、完成任务后应该交付什么证据。
AGENTS.md / CLAUDE.md 到底是什么
给 AI Agent 看的项目说明书:
AGENTS.md 可以理解为“给编码 Agent 看的 README”。AGENTS.md 项目主页把它描述为一种简单、开放的格式,用来为 AI coding agents 提供项目上下文和操作指令。
CLAUDE.md 则更常见于 Claude Code 工作流。Anthropic 的 Claude Code 最佳实践文档中提到,团队可以通过项目说明、命令、上下文管理等方式,让 Claude 更好地理解代码库和开发流程。
它们的核心目标不是写给用户看的,而是写给 AI Agent 执行任务时看的。
换句话说:
| 文件 | 主要读者 | 主要作用 |
|---|---|---|
| README.md | 人类开发者、用户 | 介绍项目、安装方式、基本使用 |
| CONTRIBUTING.md | 贡献者 | 说明贡献流程、提交规范 |
| AGENTS.md | 通用 AI Coding Agent | 告诉 Agent 如何在本项目工作 |
| CLAUDE.md | Claude Code | 给 Claude Code 的项目级指令 |
| Cursor Rules / Windsurf Rules | 特定 IDE Agent | 给编辑器内 Agent 的行为规则 |
README 解决的是“这个项目是什么”。AGENTS.md / CLAUDE.md 解决的是“AI Agent 在这个项目里应该怎么干活”。
这两个问题完全不同。
为什么没有说明文件,AI Agent 很容易写错代码
它不知道项目约定:
真实项目里有很多约定并不会写在代码表面,比如组件必须放在固定目录、API 返回值必须包一层统一结构、错误码不能随便新增、某些工具函数虽然旧但不能删、某些模块必须保持向后兼容、后端接口不能直接暴露内部字段、前端状态管理必须走指定 store、数据库字段变更必须兼容旧版本。
人类开发者加入团队后,会通过 code review、口头沟通、历史 PR 慢慢学会这些规则。
但 AI Agent 不会自然知道这些隐性规则。你不给它写清楚,它就会根据通用经验生成“看起来合理”的代码。
问题是,通用合理不等于项目正确。
它不知道测试命令:
很多项目的测试命令并不只是 npm test 或 pytest。可能需要:
pnpm test:unit
pnpm test:e2e
pnpm lint
pnpm typecheck
make test
make integration-test
docker compose up -d甚至还可能区分本地测试、CI 测试、数据库测试和端到端测试。
如果没有 AGENTS.md / CLAUDE.md,AI Agent 很可能会猜一个命令。命令猜错了,它可能以为测试失败是项目问题;或者更糟糕,它根本不跑测试,只告诉你“代码已完成”。
这就是 AI 写代码最常见的问题:它能生成实现,但验证路径不稳定。
它不知道哪些文件不能动:
AI Agent 有文件编辑能力后,风险就不只是“写错一段函数”。它可能会误改生产配置、数据库迁移、锁文件、自动生成文件、历史兼容代码、安全策略、权限校验、支付逻辑或 CI/CD 配置。
如果项目说明文件里没有写清楚“哪些文件不能改”“哪些目录只读”“哪些操作必须先询问”,Agent 就可能为了完成任务而越界。
AI Agent 写代码的真正风险
不是不会写,而是看起来写对了:
AI Agent 最危险的地方,不是写出一堆报错代码。报错反而容易发现。真正危险的是它写出来的东西语法正确、格式漂亮、注释完整、测试样例也能过,但业务逻辑其实错了。
比如它可能把管理员权限和普通用户权限混在一起,忽略多租户隔离,删除看似无用但实际有兼容意义的代码,用错误字段判断订单状态,在缓存 key 里少拼一个维度,或者把异步流程改成看似简单但有竞态风险的同步逻辑。
这些错误通常不会马上爆炸。它们会在生产环境、边界数据、高并发场景或特殊用户路径里慢慢暴露。
不是报错,而是静默偏离需求:
一个 2026 年关于 Claude Code 和 Codex 的实验提到,在科学计算任务中,不同 Agent 可能在速度、可审计性、错误处理透明度和指令解释上表现不同;其中一个重要风险就是“静默偏离规格”。
这对软件工程非常有启发。
AI Agent 有时不会明确告诉你“我不确定”。它可能会直接选择一种解释,然后继续执行。最后代码能跑,结果也有输出,但它已经偏离了你的真实需求。
AGENTS.md / CLAUDE.md 的作用,就是减少这种自由解释空间。
它相当于告诉 Agent:在这个项目里,不要自己猜规则。先按这里写的来。
AGENTS.md / CLAUDE.md 能解决什么问题
固定项目上下文:
AI Agent 每次启动任务时,都会面临上下文不完整的问题。项目越大,代码越复杂,Agent 越容易迷路。
AGENTS.md / CLAUDE.md 可以把最重要的信息固定下来:项目是什么、核心模块在哪里、业务边界是什么、常见开发路径是什么、哪些目录最重要、哪些历史包袱不能碰、哪些约定必须遵守。
这比每次在 prompt 里重复解释更稳定。
统一代码风格:
没有明确规范时,AI Agent 会根据模型偏好写代码。今天写一种风格,明天换一种抽象,后天又引入一个新库。
一份好的说明文件应该明确:
- 不要引入新的状态管理库。
- React 组件使用函数组件。
- API 请求统一通过 src/lib/api.ts。
- 错误处理必须使用 AppError。
- 日期处理统一使用 dayjs,不要使用 moment。
- 新增函数必须包含基础单元测试。这些规则能显著降低 AI 代码的“外来感”。
明确测试和构建命令:
AI Agent 不应该只负责写代码,也应该负责验证代码。AGENTS.md / CLAUDE.md 可以明确告诉它:
## Commands
- Install: pnpm install
- Dev: pnpm dev
- Lint: pnpm lint
- Type check: pnpm typecheck
- Unit test: pnpm test
- E2E test: pnpm test:e2e
- Build: pnpm build这样 Agent 修改代码后,就知道应该运行哪些命令来证明结果。
更重要的是,它不会乱猜。
限制危险操作:
AI Agent 有能力运行命令、编辑文件、调用工具时,说明文件就必须包含安全边界。
## Safety Rules
- Do not modify production secrets.
- Do not edit .env.production.
- Do not run database migration commands without confirmation.
- Do not delete existing tests to make a task pass.
- Do not change public API contracts unless explicitly requested.
- Ask before adding new dependencies.这些规则不是形式主义,而是工程安全网。
提高执行效率:
2026 年一篇关于 AGENTS.md 对 AI Coding Agent 效率影响的研究分析了 10 个仓库和 124 个 Pull Request,发现有 AGENTS.md 的情况下,Agent 的中位运行时间降低约 28.64%,输出 token 消耗降低约 16.58%,同时任务完成行为保持可比。
这说明 AGENTS.md 不只是“让 AI 更听话”,也可能让 AI 更省时间、更少绕路。
原因很容易理解:规则越清楚,Agent 越少猜;路径越明确,Agent 越少反复试错。
一份好的 AGENTS.md / CLAUDE.md 应该写什么
项目概览:
先用几句话告诉 Agent 这个项目是什么。
# Project Overview
This is a B2B SaaS dashboard for managing customer subscriptions, billing, and team permissions.
The most important business rules are:
- Billing data must never be exposed across tenants.
- Permission checks must happen on the server side.
- Subscription state changes must be auditable.不要写得太长。Agent 需要的是关键上下文,不是公司宣传稿。
技术栈说明:
## Tech Stack
- Frontend: Next.js, React, TypeScript
- Backend: Node.js, NestJS
- Database: PostgreSQL with Prisma
- Testing: Vitest, Playwright
- Package manager: pnpm这能避免 Agent 引入不必要的新技术。
目录结构:
## Project Structure
- apps/web: frontend application
- apps/api: backend API service
- packages/ui: shared UI components
- packages/config: shared configuration
- prisma: database schema and migrationsAI Agent 经常会先找文件。目录说明越清楚,它越不容易乱翻。
开发命令:
## Commands
Before opening a PR, run:
pnpm lint
pnpm typecheck
pnpm test
pnpm build建议直接写“修改后必须跑哪些命令”,不要只写“可用命令”。
代码规范:
## Coding Rules
- Use TypeScript strict mode.
- Do not use `any` unless there is no reasonable alternative.
- Prefer small pure functions.
- Keep business logic outside React components.
- Use existing utilities before creating new ones.
- Do not introduce new dependencies without asking.这类规则越具体越好。
测试要求:
## Testing Rules
- Every new business rule requires a unit test.
- Every bug fix must include a regression test.
- Do not remove or weaken tests to make them pass.
- For permission changes, include both allowed and denied cases.这部分非常重要,因为 AI Agent 写代码的核心风险不是“不会实现”,而是“没有证明实现正确”。
安全边界:
## Security Rules
- Never log access tokens, refresh tokens, or API keys.
- Never expose tenant data across organizations.
- Server-side permission checks are mandatory.
- Do not modify authentication logic unless the task explicitly requires it.如果项目涉及支付、权限、隐私、医疗、金融,这一节必须写。
PR 输出规范:
## Pull Request Summary
When finishing a task, include:
1. What changed
2. Why it changed
3. How it was tested
4. Risks or follow-up work这能让 AI Agent 的输出更容易被人类审查。
AGENTS.md 与 CLAUDE.md 的区别
简单理解:
| 文件 | 更适合什么场景 |
|---|---|
| AGENTS.md | 通用 AI Coding Agent,适合多工具协作 |
| CLAUDE.md | Claude Code 专用说明,适合 Claude 工作流 |
| 两者同时存在 | 团队同时使用多种 Agent,或希望兼容不同工具 |
AGENTS.md 更像开放标准。CLAUDE.md 更像 Claude Code 的项目记忆文件。
在实际项目里,可以这样做:
- 如果团队主要使用 Claude Code:写 CLAUDE.md。
- 如果团队使用 Codex、Claude Code、Cursor、Windsurf 等多种工具:写 AGENTS.md。
- 如果想兼容两者:AGENTS.md 写通用规则,CLAUDE.md 写 Claude 专用补充。
AGENTS.md / CLAUDE.md 示例模板
下面是一份实用模板,可以直接改:
# AGENTS.md
## Project Overview
This project is a SaaS application for managing teams, billing, and customer workspaces.
Core principles:
- Keep tenant data isolated.
- Never bypass server-side permission checks.
- Prefer simple, maintainable code over clever abstractions.
## Tech Stack
- Frontend: Next.js, React, TypeScript
- Backend: Node.js
- Database: PostgreSQL
- ORM: Prisma
- Package manager: pnpm
- Testing: Vitest, Playwright
## Project Structure
- apps/web: frontend app
- apps/api: backend API
- packages/ui: shared components
- packages/utils: shared utilities
- prisma: database schema and migrations
## Commands
Run these before finishing a task:
pnpm lint
pnpm typecheck
pnpm test
pnpm build
## Coding Rules
- Use existing patterns before creating new ones.
- Do not add dependencies without asking.
- Keep functions small and readable.
- Do not use `any` unless necessary.
- Follow existing naming conventions.
- Keep business logic out of UI components.
## Testing Rules
- Add tests for new business logic.
- Add regression tests for bug fixes.
- Include edge cases and failure cases.
- Do not delete tests to make the suite pass.
## Safety Rules
- Do not edit production environment files.
- Do not change authentication or billing logic unless explicitly requested.
- Do not run destructive database commands.
- Do not expose secrets in logs or code.
## PR Summary
At the end of the task, provide:
1. Summary of changes
2. Files changed
3. Tests run
4. Known risks
5. Suggested follow-up常见错误:AGENTS.md / CLAUDE.md 不是越长越好
很多团队第一次写 AGENTS.md / CLAUDE.md,会犯一个错误:把所有东西都塞进去。
这反而不好。
AI Agent 需要清晰、稳定、高优先级的信息。如果文件太长,它可能忽略重点,甚至被过时规则误导。
错误一:写成百科全书。
不要把全部业务文档复制进去。应该只写 Agent 执行任务必须知道的内容。
错误二:规则太抽象。
比如:
Write good code.
Follow best practices.
Make it secure.这种规则几乎没用。
更好的写法是:
Do not expose data across tenants.
All permission checks must happen on the server side.
Every billing state change must create an audit log.错误三:没有更新。
项目在变,说明文件也要变。技术栈换了、测试命令换了、目录结构换了,AGENTS.md / CLAUDE.md 也必须同步更新。
过期的说明文件比没有说明文件更危险,因为它会让 AI Agent 坚定地做错事。
错误四:只写代码规范,不写验证方式。
很多团队只告诉 AI “怎么写”,却没告诉它“怎么证明写对了”。
这不够。
AI Agent 的工作不应该停在生成代码,而应该包括测试、检查、总结和风险说明。
FAQ
1. 为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md?
因为 AI Agent 需要项目级上下文。没有说明文件,它只能根据通用经验猜测项目规则,容易写出看起来能跑但不符合真实业务的代码。
2. AGENTS.md 和 README.md 有什么区别?
README.md 主要给人类看,说明项目是什么、怎么安装、怎么使用。AGENTS.md 主要给 AI Coding Agent 看,说明它在项目里应该如何修改代码、运行测试、遵守规范和避免危险操作。
3. CLAUDE.md 是 Claude Code 必须的吗?
不是所有项目都强制需要,但如果你使用 Claude Code,CLAUDE.md 能显著改善项目上下文管理。尤其是大型项目、多模块项目、强规范项目,更应该配置 CLAUDE.md。
4. AGENTS.md 可以替代人工代码审查吗?
不能。AGENTS.md 只能降低 AI Agent 出错概率,不能替代人类判断。业务逻辑、架构设计、安全边界和最终上线责任仍然需要人类负责。
5. AGENTS.md 应该写多长?
建议短而准。通常 100 到 300 行以内比较合适。重点写项目结构、技术栈、命令、规范、测试要求和安全边界。不要把它写成大型文档库。
6. 多个 AI 工具同时使用时怎么办?
可以把通用规则写进 AGENTS.md,再为不同工具写专用文件,比如 CLAUDE.md、Cursor Rules 或 Windsurf Rules。通用规则保持一致,工具专用规则按需补充。
7. AGENTS.md / CLAUDE.md 最重要的一节是什么?
测试和安全边界最重要。代码风格可以慢慢修,但权限、数据、支付、生产配置和数据库操作一旦出错,后果会严重得多。
结论:AI Agent 越强,项目说明越重要
AI Agent 写代码的能力正在快速变强。它能读代码、改文件、运行命令、修复问题,甚至独立完成较完整的开发任务。
但能力越强,越需要边界。
为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md?因为它们不是装饰文件,而是 AI 时代的软件工程基础设施。它们告诉 Agent:项目是什么、代码该怎么写、测试该怎么跑、哪些地方不能碰、完成任务后如何交付结果。
没有 AGENTS.md / CLAUDE.md,AI Agent 就像一个能力很强但刚入职的新同事:手速很快,理解有限,还容易自信地犯错。
有了 AGENTS.md / CLAUDE.md,它才更像一个被正确 onboarding 的工程协作者:知道规则、知道边界、知道验证路径,也更容易产出可审查、可维护、可上线的代码。
未来的软件团队,不只是比谁更会用 AI 写代码,而是比谁更会把 AI 纳入工程流程。
而 AGENTS.md / CLAUDE.md,就是这个流程里最小、最便宜、却最关键的一块地基。