1. 为什么你的 AI 编码助手总在"瞎猜"?
作为一名长期使用 AI 编码助手的全栈开发者,我经历过无数次这样的场景:Copilot 生成的代码技术上完全正确,但就是不符合项目规范。要么是命名风格不对,要么是文件放错位置,最头疼的是它偶尔会擅自修改不该碰的配置文件。每次都要花大量时间做"代码翻译"——把 AI 的代码改成项目能接受的版本。
直到我在 GitHub 上发现了一个惊人的数据:那些 AI 辅助效率最高的项目,90% 都包含一个特殊的文件——agents.md。这不是普通的文档,而是专门写给 AI 的"岗位说明书"。就像新员工入职时需要培训一样,AI 助手也需要明确知道你的项目规则。
2. agents.md 的六大核心模块解析
2.1 开发命令:让 AI 知道如何操作你的项目
在最近的一个 React 项目中,我深刻体会到精确命令的重要性。之前 AI 总是用 npm 安装依赖,而我们的项目用的是 pnpm。一个简单的 agents.md 配置就解决了这个问题:
markdown复制## 开发命令
- 安装依赖:`pnpm install`
- 启动开发服务器:`pnpm dev`(端口 3000)
- 生产环境构建:`pnpm build`(输出到 dist/ 目录)
- 运行测试:`pnpm test`(使用 Vitest)
- 代码格式化:`pnpm format`(Prettier + ESLint)
关键技巧:
- 使用反引号包裹完整命令
- 注明关键参数(如端口号)
- 说明命令的输出结果
2.2 测试规范:确保 AI 生成的代码可验证
在我的一个开源库项目中,AI 经常生成没有测试的代码。通过 agents.md 明确测试要求后,情况完全改变:
markdown复制## 测试要求
- 单元测试覆盖率 ≥80%
- 测试文件与源码同目录,后缀为 `.test.ts`
- 快照测试需定期更新:`pnpm test -u`
- 测试数据放在 `__fixtures__` 目录
实测案例:
- 之前:AI 生成的工具函数 60% 没有测试
- 之后:95% 的新代码都附带符合规范的测试
2.3 项目结构:防止文件"迷路"
最让我头疼的是 AI 总把组件乱放。明确目录结构后,这个问题迎刃而解:
markdown复制## 项目结构
src/
├── components/ # 公共组件
│ ├── ui/ # 基础UI组件
│ └── domain/ # 业务组件
├── hooks/ # 自定义Hooks
├── lib/ # 第三方库封装
└── styles/ # 全局样式
特别提醒:
- 使用树状结构展示目录关系
- 添加中文注释说明目录用途
- 对特殊目录做额外说明(如
__generated__)
2.4 代码风格:从"能用"到"好用"
这是我见过 AI 最容易犯错的部分。一个完整的风格指南应该包含:
markdown复制## 代码风格
// 函数命名
function fetchUserOrders() {} // ✅ 正确
function getData() {} // ❌ 过于宽泛
// 组件属性
<UserCard userId={id} /> // ✅ 明确类型
<UserCard id={id} /> // ❌ 含义模糊
// 错误处理
try {
// ...
} catch (err) {
logger.error(err) // ✅ 记录错误
throw new AppError(...) // ✅ 封装错误
}
经验之谈:
- 提供对比示例比抽象规则更有效
- 重点规范高频出现的模式
- 对历史遗留的例外情况做说明
2.5 Git 工作流:让提交记录更规范
团队协作中,杂乱的提交信息是主要痛点。我们的解决方案:
markdown复制## Git 规范
- 分支命名:
- `feat/user-auth` 新功能
- `fix/button-style` bug修复
- 提交信息格式:
- `feat: 添加用户登录功能`
- `fix(button): 修正点击区域问题`
- 禁止使用模糊的"update"或"fix bug"
实测效果:
- 代码审查时间减少 40%
- 版本发布时 changelog 自动生成成功率 100%
2.6 安全边界:最重要的防护栏
这是最容易被忽视但最关键的部分。我们的配置:
markdown复制## 安全边界
🟢 允许自主操作:
- 修改 src/ 下的业务代码
- 添加新测试用例
🟡 需要确认:
- 修改 CI/CD 配置
- 添加新的依赖项
🔴 绝对禁止:
- 修改数据库迁移文件
- 更改认证相关逻辑
- 提交敏感信息
血泪教训:
- 曾经 AI 擅自修改了数据库配置导致线上事故
- 现在所有关键操作都需要人工确认
3. 从 2500 个仓库提炼的实战技巧
3.1 渐进式完善策略
不要试图一次性写出完美的 agents.md。我的建议流程:
- 先创建包含基本命令的最小版本
- 每当 AI 犯错时,添加对应的规则
- 每周花 10 分钟优化
3.2 版本控制技巧
把 agents.md 当成代码管理:
- 为重大更新创建独立分支
- 提交信息注明修改原因
- 团队协作时进行 code review
3.3 多项目共享配置
对于微服务架构,可以:
- 创建基础模板仓库
- 各项目通过
extends引用 - 允许项目级覆盖特殊规则
4. 常见问题解决方案
4.1 AI 无视 agents.md 怎么办?
- 检查文件是否在项目根目录
- 确认文件名是
AGENTS.md(全大写) - 在 AI 工具设置中启用 agents.md 支持
4.2 规则冲突如何处理?
案例:ESLint 配置与团队习惯不一致
解决方案:
markdown复制## 特殊例外
// 历史原因允许的例外
// eslint-disable-next-line no-unused-vars
const legacyCode = () => {}
4.3 如何验证 agents.md 效果?
我的评估方法:
- 记录未使用前的 AI 代码接受率
- 实施后每周统计改进情况
- 重点关注返工时间变化
5. 高级应用场景
5.1 多语言项目配置
我们的国际化项目配置示例:
markdown复制## 语言规范
- 中文文案放在 locales/zh-CN
- 翻译键名格式:`page.component.action`
- 禁止在代码中硬编码文案
5.2 微服务架构指南
对于分布式系统:
markdown复制## 服务调用规范
- 使用 gRPC 而非 REST 进行服务间通信
- 请求超时设置为 3 秒
- 必须实现断路器模式
5.3 前端性能约束
我们的性能要求:
markdown复制## 性能预算
- 首屏加载 <100KB
- 最大 DOM 节点数 <1500
- 禁止同步大型库加载
经过三个月的实践,我们的 AI 代码接受率从最初的 35% 提升到了 92%,团队效率提升显著。最关键的是,现在 AI 生成的代码不再需要"翻译",真正实现了开箱即用。