前言
最近在尝试使用 AI 编程,最大的感受就是:AI 编程最大的坑不是"AI 不够聪明",而是每次对话 AI 都是"失忆状态"。
它不知道你的技术栈、代码规范、项目约定。所以你要一遍遍重复,它一次次试错,如此反复。
我的做法:用 rules 和 skills 给 AI 定规则和使用说明,用文档驱动开发。
我的痛苦经历
场景 1:重复说明累死
每次开新对话都要交代一遍技术栈、组件库、规范,崩溃。
场景 2:代码风格乱飞
同一个需求问三次,三次不同写法,头大。
场景 3:需求理解偏差
"写个用户页面" → AI 脑补了个简单表格,但我要的是带搜索、分页、批量操作的。
本质问题:AI 缺乏项目上下文,需求描述太模糊。
我的做法:文档驱动 + Rules + Skills
AI 会脑补,你写得越模糊,它脑补空间越大。文档把需求"固化"下来,AI 按文档执行,偏差小很多。
1. 文档先行
不要直接让 AI 写代码,先写文档把需求说清楚。
API 文档 —— 告诉 AI 数据从哪来:
## 用户列表接口
- GET /api/users
- 参数:page, size, keyword
- 返回:{ code, data: { list, total }, message }
设计文档 —— 告诉 AI 页面长啥样、有什么功能:
## 用户管理页面
### 页面结构
- 搜索区:用户名输入框 + 状态下拉框 + 搜索按钮
- 操作区:新增按钮 + 批量删除按钮
- 表格区:展示用户列表,支持分页
### 交互逻辑
- 点击搜索:根据条件查询,重置页码为 1
- 点击新增:弹出表单弹窗,提交后刷新列表
- 点击删除:二次确认后删除,提示成功/失败
2. Rules(规则)—— 告诉 AI "我们项目是什么样的"
## 技术栈
- Vue 2.6 + Element UI
- TypeScript
## 规范
- 组件名:UserList(大驼峰)
- 样式:SCSS + scoped
- 接口:统一用封装的 request
3. Skills(技能)—— 告诉 AI "遇到场景 X 该怎么做"
## 表格页面
- 用 <pro-table> 组件,别用原生 el-table
- 分页用 useTable hook
- 搜索区用 <pro-form> 自动生成
使用后的变化
| 维度 | 之前 | 现在 |
|---|---|---|
| 提示词 | "写个用户页面" | "根据文档完成开发" |
| 代码风格 | 每次都不一样 | 统一规范 |
| 返工率 | 10 次有 6 次大改 | 10 次 2-3 次微调 |
| 需求偏差 | 经常理解错 | 按文档执行,偏差小 |
核心变化:AI 从"瞎猜"变成"按规矩执行"。
一个具体例子
需求:写个带搜索的用户表格页面
以前的做法:
我:写个用户列表页面,要有表格、搜索、分页
AI:(生成代码)
结果:没搜索功能,分页逻辑不对,用的原生组件
现在的做法:
- 写 API 文档:
GET /api/users
参数: page, size, keyword
返回: { code, data: { list, total } }
- 写设计文档:
搜索区:用户名输入框 + 搜索按钮
表格列:用户名、邮箱、状态、创建时间、操作
分页:每页 20 条,显示总条数
- AI 生成代码(基于 rules + skills):
- 自动用 pro-table 组件
- 自动用 useTable hook 处理分页
- 自动用封装 request 调接口
结果:代码几乎直接可用。
文档怎么写?
-
API 文档可以直接从接口文档(Swagger/YApi)复制粘贴,几分钟搞定。
-
设计文档如果懒得手写,可以让 AI 帮你生成:
- 准备一份设计文档模板(定义好格式和必填项)
- 把原型图截图发给 AI(用支持图片理解的模型,如 Kimi-K2.5)
- 提示词:
根据原型图和模板,帮我写设计文档: 1. 这是用户管理页面 2. 表格展示:用户名、邮箱、状态、创建时间 3. 支持按用户名搜索和状态筛选 - AI 生成初稿后,务必人工检查一遍
⚠️ 注意:AI 有时候也不是很聪明,可能漏字段或加多余功能。检查确认后再用于开发。
快速初始化项目规则和技能
我用 TRAE 做了一个有意思的Agent 「TRAE-规则技能助手」。 点击 s.trae.com.cn/a/12089a?re… 立即复刻,一起来玩吧!
具体用法可以参考我的上一篇文章:效率翻倍!TRAE 快速搞定项目规则与技能初始化
我的工作流
关键原则:先写文档,再写代码。
前置准备(一次性)
↓ 写 rules(技术栈、规范)
↓ 写 skills(组件用法、最佳实践)
↓
日常开发(每个需求)
↓ 写 API 文档(数据从哪来)
↓ 写设计文档(页面长啥样、有什么功能)
↓ AI 生成代码(基于文档 + rules/skills)
↓ 人工审查(功能 + 规范)
↓ 迭代完善
一些实用技巧
开发过程中难免遇到问题,我的经验是:
1. 大问题先检查文档
如果功能偏差很大(比如界面完全不对,和需求偏差较大),通常是文档描述不清晰或者本身描述有问题。直接撤销代码,检查并调整文档,然后重新生成。这跟调提示词是一个道理。
2. 小缺失直接告诉 AI
如果大部分功能OK,只是少了某个功能,直接说:"xx功能没实现,请仔细看设计文档完成开发"。
3. 报错直接贴
代码运行报错?直接把错误信息贴给 AI,它能自己检查修正。
4. 细节问题口头提
"创建时间用年月日格式"、"按钮间距调大点"——这种小问题直接说,不用大改。
5. 简单问题自己改
有些问题人工改两行就搞定,比跟 AI 来回沟通更快。
6. 把 AI 当实习生
你交代任务,他执行,你检查,他修改。保持这个节奏,别指望一次完美。
几个真实感受
1. 文档是"可复用的上下文"
提示词说一次忘一次,文档写一次可以反复用。而且文档可以版本管理、团队协作。
2. 上下文管理 > 提示词工程
提示词是一次性的,文档 rules skills 是可复用的。花半天写规则,每天省 1 小时。
3. 模糊需求是返工的根源
"写个用户页面" → AI 脑补 → 可能不是你想要的
"根据这份文档实现" → AI 执行 → 基本是你想要的
4. 团队协作更需要 rules + skills + 文档
A 同学生成 Vue2 风格,B 同学生成 Vue3 风格,审查时大家都疯了。统一 rules + skills + 文档驱动,AI 产出才一致。
5. 保持 “人” 在环
交代清楚(文档)→ 执行不错(基于 rules/skills)→ 检查把关(人工审查)→ 持续改进(迭代)。别指望它一次做到 100 分。
我的建议
- 先写文档再写代码 —— API 文档 + 设计文档,给 AI 明确的需求
- 先写 rules 再写代码 —— 花半天整理技术栈和规范,长期受益
- 从简单 skills 开始 —— 接口调用、表单处理、表格页面,用多了再补充
- 持续迭代 —— AI 常犯的错误 → 补充到 rules,重复场景 → 抽象成 skill
总结
AI 编程的核心不是"提示词写得有多好",而是 "给 AI 足够的上下文"。
- 文档 明确需求,减少返工
- Rules 约束代码风格,保证一致性
- Skills 传递最佳实践,提升可用性
在我看来 AI 不会取代程序员(至少在目前还不能完全取代),但会用 AI 的程序员会取代不会用的,只会执行不懂主动思考的程序员迟早被淘汰。
而会用 AI 的关键,是让 AI 真正理解你的项目和需求。
如果你也觉得 AI 编程"差点意思",试试 文档驱动 + rules + skills,你会发现:原来可以这么爽。