谈谈我最近使用 AI 编程的一些感受

17 阅读7分钟

前言

最近在尝试使用 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:(生成代码)
结果:没搜索功能,分页逻辑不对,用的原生组件

现在的做法

  1. 写 API 文档
GET /api/users
参数: page, size, keyword
返回: { code, data: { list, total } }
  1. 写设计文档
搜索区:用户名输入框 + 搜索按钮
表格列:用户名、邮箱、状态、创建时间、操作
分页:每页 20 条,显示总条数
  1. AI 生成代码(基于 rules + skills):
  • 自动用 pro-table 组件
  • 自动用 useTable hook 处理分页
  • 自动用封装 request 调接口

结果:代码几乎直接可用


文档怎么写?

  • API 文档可以直接从接口文档(Swagger/YApi)复制粘贴,几分钟搞定。

  • 设计文档如果懒得手写,可以让 AI 帮你生成:

    1. 准备一份设计文档模板(定义好格式和必填项)
    2. 把原型图截图发给 AI(用支持图片理解的模型,如 Kimi-K2.5)
    3. 提示词:
      根据原型图和模板,帮我写设计文档:
      1. 这是用户管理页面
      2. 表格展示:用户名、邮箱、状态、创建时间
      3. 支持按用户名搜索和状态筛选
      
    4. 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 分。


我的建议

  1. 先写文档再写代码 —— API 文档 + 设计文档,给 AI 明确的需求
  2. 先写 rules 再写代码 —— 花半天整理技术栈和规范,长期受益
  3. 从简单 skills 开始 —— 接口调用、表单处理、表格页面,用多了再补充
  4. 持续迭代 —— AI 常犯的错误 → 补充到 rules,重复场景 → 抽象成 skill

总结

AI 编程的核心不是"提示词写得有多好",而是 "给 AI 足够的上下文"

  • 文档 明确需求,减少返工
  • Rules 约束代码风格,保证一致性
  • Skills 传递最佳实践,提升可用性

在我看来 AI 不会取代程序员(至少在目前还不能完全取代),但会用 AI 的程序员会取代不会用的,只会执行不懂主动思考的程序员迟早被淘汰。

而会用 AI 的关键,是让 AI 真正理解你的项目和需求


如果你也觉得 AI 编程"差点意思",试试 文档驱动 + rules + skills,你会发现:原来可以这么爽。