大家好,我是 Immerse,一名独立开发者、内容创作者、AGI实践者。
https://yaolifeng.com
也同步更新。我会在这里分享关于编程
、独立开发
、AI
、出海
、个人思考
等内容。
如果本文对你有帮助,欢迎动动小手指一键三连(点赞
、评论
、转发
),给我一些支持和鼓励,谢谢!
还记得你第一次使用 AI 编程工具时的场景吗?但很快就被各种配置文件搞得晕头转向:
.cursorrules
CLAUDE.md
.aider.conf.yml
.gemini/settings.json
随着项目复杂度的增加,各个工具的指令文件变得更加繁琐。
更糟的是,当你切换工具或团队其他成员使用不同 AI 助手时,这些配置文件根本无法复用。
而 OpenAI 和 Google 共同制定的 AGENTS.md,正是为了解决这个痛点。
AGENTS.md 是一个简单、开放的格式,专为指导 AI 编程代理而设计。你可以把它理解为"AI 助手的 README"——一个专门、可预测的地方,为 AI 编码代理提供项目上下文和指令。
传统的 README.md 是为人类设计的:
但 AI 代理需要更多细节:
pnpm dev
、pnpm test
等等cypress
、jest
等等将这些信息全部塞进 README.md 会让文档变得冗长,阅读体验很差。
传统方式 | AGENTS.md 方式 |
---|---|
.cursorrules + CLAUDE.md + .aider.conf.yml + ... | 只需一个AGENTS.md |
每个工具不同格式 | 统一 Markdown 格式 |
重复维护多份文档 | 一处修改,全工具生效 |
工具切换时代码失效 | 跨工具兼容 |
目前已有超过 2 万个开源项目采用 AGENTS.md,包括:
AGENTS.md 采用智能就近匹配机制:
my-project/
├── AGENTS.md # 根级配置
├── packages/
│ ├── web/
│ │ ├── AGENTS.md # 覆盖根级配置
│ │ └── src/
│ └── api/
│ └── AGENTS.md # 针对API服务的特殊配置
当 AI 代理处理packages/web/src/components/Button.tsx
时,会使用packages/web/AGENTS.md
中的指令,而不是根目录的配置。
# 项目 AI 编程指南
## 开发环境设置
### 技术栈
- 前端:Next.js 14 + TypeScript + TailwindCSS
- 后端:Node.js + Express + PostgreSQL
- 包管理:pnpm
### 常用命令
- 启动开发服务器:`pnpm dev`
- 运行测试:`pnpm test`
- 代码检查:`pnpm lint`
- 构建项目:`pnpm build`
## 编码规范
### 文件组织
src/
├── components/ # 可复用组件
├── pages/ # 页面组件
├── hooks/ # 自定义 hooks
├── utils/ # 工具函数
└── types/ # TypeScript 类型定义
### 命名约定
- 组件:PascalCase(如:`UserProfile.tsx`)
- 工具函数:camelCase(如:`formatDate.ts`)
- 常量:UPPER_SNAKE_CASE
## 测试策略
### 测试结构
- 单元测试:与源文件同目录,`.test.ts`后缀
- 集成测试:`__tests__`目录下
- e2e 测试:`cypress`目录
### 运行测试
# 运行所有测试
pnpm test
# 运行特定测试
pnpm test -- --testNamePattern="User"
# 运行 e2e 测试
pnpm cypress:run
## PR 规范
### 标题格式
`[<scope>] <description>`
例如:`[auth] 添加用户登录功能`
### 检查清单
- [ ] 所有测试通过
- [ ] 代码符合 ESLint 规则
- [ ] 更新相关文档
- [ ] 添加必要的测试用例
### 进阶示例:React 组件开发专用
# React 组件开发指南
## 组件创建模板
使用以下命令快速创建新组件:
pnpm generate:component Button
## 组件规范
### 文件结构
Button/
├── index.ts # 导出文件
├── Button.tsx # 主组件
├── Button.test.tsx # 测试文件
├── Button.stories.tsx # Storybook 故事
└── types.ts # 类型定义
### Props 设计原则
1. 使用 TypeScript 严格类型定义
2. 提供合理的默认值
3. 避免过多的 props(遵循"选项对象"模式)
### 样式指南
- 使用 TailwindCSS 工具类
- 优先使用语义化颜色(如`text-primary`而不是`text-blue-500`)
- 响应式设计:mobile-first 原则
## 测试最佳实践
### 测试覆盖率目标
- 语句覆盖率:≥80%
- 分支覆盖率:≥75%
- 函数覆盖率:≥80%
### 常用测试模式
// 渲染测试
describe('Button', () => {
it('应该正确渲染按钮文本', () => {
render(<Button>点击我</Button>);
expect(screen.getByText('点击我')).toBeInTheDocument();
});
it('应该触发onClick事件', () => {
const handleClick = jest.fn();
render(<Button onClick={handleClick}>按钮</Button>);
fireEvent.click(screen.getByText('按钮'));
expect(handleClick).toHaveBeenCalledTimes(1);
});
});
无需额外配置,Cursor 会自动识别根目录和子目录的 AGENTS.md 文件。
在.aider.conf.yml
中添加:
read: AGENTS.md
在.gemini/settings.json
中配置:
{
"contextFileName": "AGENTS.md"
}
目前 Claude 还不支持 AGENTS.md,但 Claude Code 版本更新趋势很猛,未来有望加入对 AGENTS.md 的支持。
AGENTS.md 正在快速发展,即将推出的功能包括: