上一篇 下一篇 分享链接 返回 返回顶部

别让 AI 把项目写成坑:程序员实用避坑清单和命令手册

发布人:慈云数据-客服中心 发布时间:4小时前 阅读量:1

AI编程 使用避坑指南|附完整命令

在过去两年里,AI 编程工具从“代码补全插件”快速进化成了“可以参与需求分析、架构设计、代码生成、单元测试、文档编写、故障排查”的开发助手。无论你使用的是 Cursor、GitHub Copilot、Claude Code、ChatGPT、通义灵码、CodeGeeX,还是基于本地大模型搭建的私有化编程助手,它们都能显著提升开发效率。

但很多人第一次使用 AI 编程时,会出现一种错觉:只要把需求丢给 AI,它就能自动写出可上线的完整项目。现实往往是:代码能跑,但隐藏问题很多;功能看似完成,但边界条件没处理;依赖版本混乱,部署失败;安全校验缺失,后期返工严重。

本文不是单纯教你“怎么让 AI 写代码”,而是系统整理一套 AI 编程使用避坑指南,帮助你真正把 AI 变成可靠的开发生产力工具。文末附常用完整命令,适合前端、后端、全栈、运维、测试等开发场景参考。


一、先明确:AI 编程适合做什么,不适合做什么

AI 编程工具很强,但它不是万能开发者。想用好它,第一步是明确边界。

1. AI 编程非常适合的场景

AI 在以下任务中效率非常高:

  • 根据已有代码风格补全类似逻辑;
  • 生成 CRUD 接口、表单页面、工具函数;
  • 编写单元测试、接口测试、Mock 数据;
  • 解释复杂代码、梳理函数调用链;
  • 重构局部代码,如提取函数、拆分模块;
  • 生成正则表达式、SQL、Shell 命令;
  • 根据错误日志定位问题;
  • 编写 README、接口文档、注释;
  • 将代码从一种语言迁移到另一种语言;
  • 对比方案优缺点,如 MySQL vs PostgreSQL、REST vs GraphQL。

也就是说,AI 特别适合处理 模式明确、上下文充分、目标清晰 的任务。

2. AI 编程不适合完全托管的场景

以下场景不要完全交给 AI:

  • 核心业务架构设计;
  • 金融、医疗、支付等高风险业务逻辑;
  • 涉及数据安全、权限控制、加密签名的关键代码;
  • 大型项目的整体技术选型;
  • 复杂性能优化;
  • 线上故障的最终决策;
  • 没有明确需求的“凭感觉开发”。

AI 可以参与讨论和辅助实现,但最终判断必须由开发者负责。


二、最常见的 AI 编程误区

很多人使用 AI 编程效果不好,并不是工具不行,而是使用方式有问题。

误区 1:一句话让 AI 写完整项目

错误示例:

帮我写一个电商系统。

这个提示词太宽泛,AI 无法准确知道你的技术栈、功能范围、数据库结构、权限模型、部署方式和性能要求。它可能会生成一个看起来完整但无法真正落地的“玩具项目”。

更好的方式是拆分任务:

我正在开发一个基于 Spring Boot 3 + MySQL + MyBatis Plus 的电商后台系统。
请先帮我设计商品模块的数据表,包括商品表、商品分类表、商品图片表。
要求:
1. 使用 InnoDB;
2. 字符集 utf8mb4;
3. 每张表包含 create_time、update_time、deleted 字段;
4. 商品支持上下架;
5. 请输出完整 SQL,并解释字段设计原因。

AI 编程的关键不是“一次生成全部”,而是 分阶段、分模块、可验证地生成


误区 2:不提供上下文

AI 最依赖上下文。如果你不给它项目结构、代码片段、依赖版本、报错信息,它只能猜。

错误示例:

我的项目启动失败,帮我看看。

更好的方式:

我的 Spring Boot 项目启动失败,下面是错误日志和 pom.xml 关键依赖。
请分析原因,并给出修改方案。

错误日志:
[粘贴完整报错]

pom.xml:
[粘贴相关依赖]

环境:
- JDK 17
- Spring Boot 3.2.5
- MySQL 8.0

要记住:给 AI 的信息越完整,AI 的结果越可靠


误区 3:直接复制运行 AI 生成的代码

AI 生成的代码可能存在以下问题:

  • 使用了不存在的方法;
  • 引入了错误版本的依赖;
  • 忽略异常处理;
  • 缺少权限校验;
  • SQL 存在注入风险;
  • 返回结构与项目规范不一致;
  • 代码风格和项目不统一;
  • 只覆盖正常路径,没有处理边界情况。

所以 AI 生成代码后,必须经过:

  1. 人工审查;
  2. 本地运行;
  3. 单元测试;
  4. 静态检查;
  5. 安全检查;
  6. Code Review。

AI 可以帮你加速,但不能替代基本工程流程。


三、AI 编程的正确工作流

下面是一套比较稳定的 AI 编程工作流,适合大多数项目。


第一步:让 AI 先理解项目,而不是直接写代码

在让 AI 动手之前,先让它读懂项目结构。

你可以这样提问:

请根据下面的项目目录结构,分析这是一个什么类型的项目,并说明各目录的作用。
不要修改代码,只做分析。

项目结构:
[粘贴 tree 命令输出]

生成项目结构命令:

tree -L 3

如果没有安装 tree:

# macOS
brew install tree

# Ubuntu / Debian
sudo apt update
sudo apt install tree -y

# CentOS
sudo yum install tree -y

如果项目文件太多,可以排除依赖目录:

tree -L 3 -I "node_modules|dist|build|target|.git"

这样 AI 能更快判断项目技术栈和模块关系。


第二步:先让 AI 出方案,再让 AI 写代码

不要一上来就说“帮我实现”。更推荐先让 AI 给方案。

例如:

我需要在现有用户系统中增加“用户积分”功能。
请先不要写代码,只输出设计方案。

要求:
1. 说明需要新增或修改哪些表;
2. 说明需要新增哪些接口;
3. 说明积分增加和扣减的业务边界;
4. 说明并发扣减积分时如何避免超扣;
5. 说明是否需要积分流水表;
6. 给出推荐实现步骤。

这样可以避免 AI 一开始就走错方向。


第三步:小步提交,逐步验证

AI 编程最忌讳一次生成几千行代码。更好的方式是“小步快跑”。

推荐节奏:

  1. 先生成数据库表;
  2. 再生成实体类;
  3. 再生成 Mapper 或 Repository;
  4. 再生成 Service;
  5. 再生成 Controller;
  6. 再生成测试;
  7. 最后生成文档。

每一步都运行验证,不要堆到最后。


第四步:让 AI 自查代码

AI 写完代码后,可以继续让它审查:

请审查你刚才生成的代码,重点检查:
1. 是否存在空指针风险;
2. 是否存在 SQL 注入风险;
3. 是否存在并发问题;
4. 是否符合 RESTful 规范;
5. 是否缺少参数校验;
6. 是否需要补充单元测试;
7. 是否有更简洁的实现方式。
请用表格列出问题、风险等级和修改建议。

这一步非常有用。AI 往往能发现自己上一轮生成代码中的一部分问题。


四、提示词设计:决定 AI 编程质量的核心

AI 编程效果好不好,提示词占一半以上。

一个高质量提示词通常包括:

  • 角色:让 AI 知道自己扮演什么专家;
  • 背景:项目技术栈、业务场景;
  • 目标:要完成什么;
  • 约束:不能做什么、必须遵守什么;
  • 输入:现有代码、错误日志、目录结构;
  • 输出格式:要 SQL、代码、表格、步骤还是说明;
  • 验收标准:什么结果算完成。

通用提示词模板

你是一名资深 [技术方向] 工程师。

项目背景:
- 技术栈:[填写技术栈]
- 当前模块:[填写模块名称]
- 现有代码:[粘贴代码或说明]
- 运行环境:[填写环境]

任务目标:
[清晰描述要实现的功能]

约束条件:
1. 必须保持现有代码风格;
2. 不要修改无关文件;
3. 不要引入不必要的新依赖;
4. 需要考虑异常处理和边界条件;
5. 需要说明修改了哪些文件。

输出要求:
1. 先说明实现思路;
2. 再给出完整代码;
3. 最后给出测试方法;
4. 如果存在不确定信息,请先列出假设。

这个模板适用于大多数 AI 编程场景。


需求拆解提示词

你是一名资深产品技术负责人。
请将下面的需求拆解成开发任务。

需求:
[粘贴需求]

请输出:
1. 功能模块列表;
2. 数据库设计建议;
3. API 接口列表;
4. 前端页面列表;
5. 后端开发任务;
6. 测试用例;
7. 潜在风险;
8. 推荐开发顺序。

代码解释提示词

你是一名资深软件工程师。
请解释下面这段代码的作用。

要求:
1. 按执行流程解释;
2. 说明关键变量含义;
3. 说明可能存在的问题;
4. 给出优化建议;
5. 用初级工程师也能理解的方式说明。

代码:
[粘贴代码]

Bug 排查提示词

你是一名资深故障排查专家。
请根据下面的信息分析问题原因。

环境:
- 操作系统:
- 语言版本:
- 框架版本:
- 数据库版本:

现象:
[描述问题]

错误日志:
[粘贴完整错误日志]

相关代码:
[粘贴代码]

请输出:
1. 最可能原因;
2. 排查步骤;
3. 修复方案;
4. 如何验证;
5. 如何避免再次发生。

五、不同开发场景的 AI 编程避坑


1. 前端开发避坑指南

AI 在前端页面生成方面非常强,但容易生成“能看不能用”的代码。

常见问题

  • 样式写死,不适配移动端;
  • 组件状态混乱;
  • 没有处理 loading、empty、error 状态;
  • 表单校验不完整;
  • 接口请求没有统一封装;
  • TypeScript 类型随意使用 any
  • 组件过大,难以维护。

推荐提示词

你是一名资深前端工程师。
请基于 Vue 3 + TypeScript + Element Plus 实现一个用户管理页面。

要求:
1. 使用 Composition API;
2. 不要使用 any;
3. 页面包含搜索、列表、分页、新增、编辑、删除;
4. 请求接口通过已有 request 工具封装;
5. 需要处理 loading、empty、error 状态;
6. 表单需要校验用户名、手机号、邮箱;
7. 组件代码需要清晰可维护。

请输出完整 .vue 文件代码。

前端常用命令

# 创建 Vite 项目
npm create vite@latest my-app

# 进入项目目录
cd my-app

# 安装依赖
npm install

# 启动开发服务
npm run dev

# 构建生产版本
npm run build

# 本地预览构建产物
npm run preview

如果使用 pnpm:

npm install -g pnpm
pnpm create vite my-app
cd my-app
pnpm install
pnpm dev
pnpm build

代码检查:

# 安装 ESLint
npm install eslint --save-dev

# 初始化 ESLint
npx eslint --init

# 执行检查
npx eslint src --ext .js,.ts,.vue

格式化:

# 安装 Prettier
npm install prettier --save-dev

# 格式化项目
npx prettier --write .

2. 后端开发避坑指南

后端开发中,AI 最容易忽略安全、事务和并发。

常见问题

  • Controller 中写大量业务逻辑;
  • Service 没有事务;
  • 参数校验缺失;
  • 数据库字段没有索引;
  • 分页查询没有限制最大页大小;
  • 异常直接抛出,返回结构不统一;
  • 登录鉴权缺失;
  • 并发场景没有加锁或乐观锁;
  • 删除操作没有校验数据归属。

推荐提示词

你是一名资深 Java 后端工程师。
请基于 Spring Boot 3 + MyBatis Plus 实现订单创建接口。

业务规则:
1. 用户提交商品 ID 和购买数量;
2. 创建订单前需要检查商品是否存在;
3. 检查库存是否充足;
4. 扣减库存时必须避免并发超卖;
5. 创建订单和扣减库存必须在同一个事务中;
6. 返回统一 Result 响应结构;
7. 参数必须使用 Jakarta Validation 校验;
8. 请不要在 Controller 中写业务逻辑。

请输出:
1. DTO;
2. Controller;
3. Service 接口;
4. Service 实现;
5. Mapper 方法;
6. 必要 SQL;
7. 单元测试示例。

Java 后端常用命令

Maven 项目:

# 清理并打包
mvn clean package

# 跳过测试打包
mvn clean package -DskipTests

# 运行测试
mvn test

# 查看依赖树
mvn dependency:tree

# 启动 Spring Boot 项目
mvn spring-boot:run

Gradle 项目:

# 清理构建
./gradlew clean build

# 跳过测试构建
./gradlew clean build -x test

# 运行测试
./gradlew test

# 启动 Spring Boot 项目
./gradlew bootRun

运行 Jar 包:

java -jar target/app.jar

指定环境:

java -jar target/app.jar --spring.profiles.active=prod

查看端口占用:

# macOS / Linux
lsof -i :8080

# 查看进程
ps -ef | grep java

# 杀掉进程
kill -9 

3. 数据库开发避坑指南

AI 很擅长生成 SQL,但它也经常生成性能不佳或不符合生产规范的 SQL。

常见问题

  • 字段类型不合理;
  • 金额字段使用 float 或 double;
  • 没有创建索引;
  • 索引过多;
  • 没有唯一约束;
  • 时间字段类型混乱;
  • 删除字段没有软删除设计;
  • SQL 没有考虑慢查询;
  • 多表 join 过重;
  • 没有考虑数据量增长。

数据库提示词

你是一名资深 MySQL DBA。
请为一个订单系统设计数据表。

要求:
1. MySQL 8.0;
2. 使用 InnoDB;
3. 字符集 utf8mb4;
4. 金额字段使用 decimal;
5. 每张表都包含 id、create_time、update_time、deleted;
6. 需要考虑订单号唯一性;
7. 需要考虑用户订单查询性能;
8. 输出完整建表 SQL;
9. 说明每个索引的作用;
10. 指出未来数据量增长后的分库分表建议。

MySQL 常用命令

# 登录 MySQL
mysql -u root -p

# 指定主机和端口登录
mysql -h 127.0.0.1 -P 3306 -u root -p

# 查看数据库
SHOW DATABASES;

# 创建数据库
CREATE DATABASE demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 使用数据库
USE demo;

# 查看表
SHOW TABLES;

# 查看表结构
DESC user;

# 查看建表语句
SHOW CREATE TABLE user\G

# 执行 SQL 文件
mysql -u root -p demo < init.sql

# 导出数据库
mysqldump -u root -p demo > demo.sql

# 查看慢查询是否开启
SHOW VARIABLES LIKE 'slow_query_log';

# 查看 SQL 执行计划
EXPLAIN SELECT * FROM user WHERE mobile = '13800138000';

4. Git 协作避坑指南

AI 生成代码后,Git 使用也要规范。不要一次性提交大量 AI 生成代码,否则 review 成本极高。

推荐做法

  • 每完成一个小功能提交一次;
  • 提交信息清晰描述变更;
  • 不提交无关格式化变更;
  • 不提交密钥、配置文件、日志文件;
  • 使用分支开发;
  • 合并前先 rebase 或 merge 主分支;
  • 提交前运行测试。

Git 常用命令

# 查看状态
git status

# 查看修改内容
git diff

# 添加文件
git add .

# 提交代码
git commit -m "feat: add user point module"

# 查看提交记录
git log --oneline --graph --decorate --all

# 创建并切换分支
git checkout -b feature/user-point

# 拉取远程代码
git pull origin main

# 推送分支
git push origin feature/user-point

# 合并分支
git merge feature/user-point

# 暂存修改
git stash

# 恢复暂存
git stash pop

撤销操作:

# 撤销工作区某个文件修改
git checkout -- src/main.java

# 撤销 add
git reset HEAD .

# 修改最近一次提交信息
git commit --amend

# 回退到某个提交,保留修改
git reset --soft 

# 回退到某个提交,不保留修改,谨慎使用
git reset --hard 

六、AI 生成代码后的必查清单

无论 AI 生成的是前端、后端还是脚本,都建议按下面清单检查。

1. 功能正确性

  • 是否实现了需求中的全部功能?
  • 是否遗漏异常分支?
  • 是否处理空数据?
  • 是否处理重复提交?
  • 是否处理权限不足?
  • 是否处理并发情况?

2. 安全性

  • 是否有 SQL 注入风险?
  • 是否有 XSS 风险?
  • 是否有 CSRF 风险?
  • 是否泄露敏感信息?
  • 是否把 token、密码写入代码?
  • 是否缺少接口鉴权?
  • 是否校验用户是否有权操作该数据?

3. 性能

  • 是否存在 N+1 查询?
  • 是否缺少索引?
  • 是否一次查询大量数据?
  • 是否分页?
  • 是否有缓存必要?
  • 是否存在阻塞操作?
  • 是否有循环调用外部接口?

4. 可维护性

  • 命名是否清晰?
  • 是否有重复代码?
  • 模块职责是否清楚?
  • 函数是否过长?
  • 是否符合项目已有风格?
  • 是否有必要注释?
  • 是否方便测试?

5. 可测试性

  • 是否有单元测试?
  • 是否有集成测试?
  • 是否能 Mock 外部依赖?
  • 是否覆盖正常、异常、边界场景?
  • 是否可以在 CI 中自动运行?

七、完整命令合集

下面整理一份 AI 编程过程中常用的完整命令,方便直接复制使用。


1. 项目结构查看

tree -L 3 -I "node_modules|dist|build|target|.git|.idea|.vscode"

如果没有 tree:

# macOS
brew install tree

# Ubuntu / Debian
sudo apt update && sudo apt install tree -y

# CentOS
sudo yum install tree -y

2. Node.js 项目命令

# 查看 Node 版本
node -v

# 查看 npm 版本
npm -v

# 安装依赖
npm install

# 启动开发环境
npm run dev

# 构建项目
npm run build

# 运行测试
npm run test

# 检查依赖过期
npm outdated

# 更新依赖
npm update

# 清理依赖重新安装
rm -rf node_modules package-lock.json
npm install

3. pnpm 项目命令

# 安装 pnpm
npm install -g pnpm

# 查看版本
pnpm -v

# 安装依赖
pnpm install

# 启动开发环境
pnpm dev

# 构建项目
pnpm build

# 运行测试
pnpm test

# 清理依赖
rm -rf node_modules pnpm-lock.yaml
pnpm install

4. Python 项目命令

# 查看 Python 版本
python --version

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境:macOS / Linux
source venv/bin/activate

# 激活虚拟环境:Windows
venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 导出依赖
pip freeze > requirements.txt

# 运行 Python 文件
python main.py

# 运行测试
pytest

# 代码格式化
black .

# 静态检查
flake8 .

5. Java 项目命令

# 查看 Java 版本
java -version

# Maven 打包
mvn clean package

# Maven 跳过测试打包
mvn clean package -DskipTests

# Maven 运行测试
mvn test

# Maven 查看依赖树
mvn dependency:tree

# Spring Boot 启动
mvn spring-boot:run

# Gradle 构建
./gradlew clean build

# Gradle 跳过测试构建
./gradlew clean build -x test

# Gradle 启动
./gradlew bootRun

# 运行 Jar
java -jar target/app.jar

6. Docker 常用命令

# 查看 Docker 版本
docker version

# 查看镜像
docker images

# 查看容器
docker ps

# 查看所有容器
docker ps -a

# 构建镜像
docker build -t my-app:latest .

# 运行容器
docker run -d --name my-app -p 8080:8080 my-app:latest

# 查看容器日志
docker logs -f my-app

# 进入容器
docker exec -it my-app /bin/sh

# 停止容器
docker stop my-app

# 删除容器
docker rm my-app

# 删除镜像
docker rmi my-app:latest

Docker Compose:

# 启动服务
docker compose up -d

# 查看服务
docker compose ps

# 查看日志
docker compose logs -f

# 停止服务
docker compose down

# 重新构建并启动
docker compose up -d --build

7. Linux 排查命令

# 查看系统信息
uname -a

# 查看磁盘空间
df -h

# 查看目录大小
du -sh *

# 查看内存
free -h

# 查看 CPU 和进程
top

# 查看端口占用
lsof -i :8080

# 查看网络连接
netstat -tunlp

# 查看日志最后 100 行
tail -n 100 app.log

# 实时查看日志
tail -f app.log

# 查找文件
find . -name "*.log"

# 搜索关键字
grep -rn "ERROR" ./logs

八、如何让 AI 生成更稳定的代码

1. 给它现有代码风格

如果你希望 AI 按项目规范生成代码,最好提供已有文件作为参考:

下面是项目中已有的 UserController 和 UserService 代码。
请参考它们的命名、异常处理、返回结构和注释风格,实现 ProductController 和 ProductService。
不要引入新的返回结构。

AI 很擅长模仿已有模式。你给它示例,它就更容易输出一致代码。


2. 明确“不允许做什么”

很多提示词只写“要做什么”,却没写“不能做什么”。这会导致 AI 擅自发挥。

例如:

限制条件:
1. 不要修改数据库表结构;
2. 不要新增第三方依赖;
3. 不要改变已有接口返回格式;
4. 不要删除已有注释;
5. 不要影响旧功能;
6. 不要使用 any;
7. 不要把业务逻辑写在 Controller。

这些约束能明显减少返工。


3. 要求 AI 输出测试方法

每次生成代码后,都让 AI 给测试方式:

请给出这个功能的测试方案,包括:
1. 正常场景;
2. 参数错误;
3. 数据不存在;
4. 权限不足;
5. 并发场景;
6. 对应 curl 命令。

示例 curl:

curl -X POST "http://localhost:8080/api/orders" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your_token" \
  -d '{
    "productId": 1001,
    "quantity": 2
  }'

九、AI 编程中的安全红线

使用 AI 编程时,以下内容一定要特别注意。

1. 不要上传敏感信息

不要把以下内容直接发给公共 AI 工具:

  • 生产数据库账号密码;
  • API Key;
  • 用户手机号、身份证、银行卡;
  • 公司内部机密代码;
  • 未脱敏日志;
  • 商业合同;
  • 服务器私钥;
  • 生产环境 token。

如果必须让 AI 分析,请先脱敏:

数据库地址:db.example.com
用户名:user_xxx
密码:password_xxx
Token:token_xxx

2. 不要让 AI 直接生成生产脚本并立即执行

尤其是数据库变更脚本、删除脚本、批量修改脚本,一定要人工检查。

危险命令示例:

rm -rf /
DROP DATABASE production;
DELETE FROM user;

生产环境执行前必须:

  1. 备份数据;
  2. 在测试环境验证;
  3. 加 WHERE 条件;
  4. 开事务;
  5. 评估影响行数;
  6. 准备回滚方案。

3. 谨慎处理依赖安装命令

AI 有时会推荐一些不存在、过时或不安全的包。安装前建议检查:

npm info package-name
pip show package-name
mvn dependency:tree

对于陌生依赖,要确认:

  • 是否仍在维护;
  • 下载量是否正常;
  • 是否有安全漏洞;
  • License 是否允许商用;
  • 是否真的需要引入。

十、推荐的 AI 编程协作模式

模式一:AI 做初稿,人做决策

适合需求设计、架构讨论、技术选型。

你可以让 AI 给多个方案:

请针对这个需求给出三种实现方案。
每种方案请说明:
1. 实现思路;
2. 优点;
3. 缺点;
4. 适用场景;
5. 复杂度;
6. 推荐指数。

然后由开发者做最终选择。


模式二:AI 写样板,人做抽象

适合 CRUD、DTO、接口、表单等重复性工作。

AI 可以快速生成初稿,但开发者要统一抽象公共逻辑,避免项目越来越乱。


模式三:AI 做测试,人做验收

让 AI 生成测试用例非常实用:

请为下面这个函数生成 Jest 单元测试。
要求:
1. 覆盖正常输入;
2. 覆盖空值;
3. 覆盖边界值;
4. 覆盖异常输入;
5. 说明每个测试用例的目的。

函数:
[粘贴函数]

模式四:AI 做解释,人做学习

遇到陌生代码时,不要急着改。先让 AI 解释:

请帮我阅读这段代码,输出:
1. 主要功能;
2. 调用流程;
3. 依赖的外部模块;
4. 可能影响的业务;
5. 修改它时需要注意什么。

这能显著降低改坏旧代码的概率。


十一、一个完整示例:用 AI 开发“用户积分模块”

下面用一个实际流程串起来。

第 1 步:需求拆解

提示词:

你是一名资深后端架构师。
我需要在现有用户系统中增加用户积分模块。
技术栈是 Spring Boot 3 + MyBatis Plus + MySQL 8。

请先不要写代码,只做需求拆解。
要求输出:
1. 数据库表设计;
2. 接口设计;
3. Service 方法;
4. 积分增加、扣减、冻结、解冻规则;
5. 并发控制方案;
6. 异常场景;
7. 开发步骤。

第 2 步:生成 SQL

请根据刚才的设计,生成 MySQL 8 建表 SQL。
要求:
1. 使用 InnoDB;
2. utf8mb4;
3. 金额或积分字段不要使用浮点数;
4. 用户积分账户表 user_point_account;
5. 用户积分流水表 user_point_log;
6. 包含必要索引;
7. 说明索引原因。

第 3 步:生成代码

请基于以下 SQL,生成 Spring Boot 3 + MyBatis Plus 代码。
要求:
1. 实体类使用 Lombok;
2. Mapper 继承 BaseMapper;
3. Service 中处理业务逻辑;
4. 扣减积分必须避免并发超扣;
5. 所有写操作需要事务;
6. 返回统一 Result;
7. 参数使用 Jakarta Validation。

第 4 步:生成测试

请为积分扣减逻辑生成单元测试和并发测试。
要求:
1. 正常扣减成功;
2. 积分不足失败;
3. 用户不存在失败;
4. 并发扣减不能超扣;
5. 说明如何运行测试。

第 5 步:自查

请审查整个用户积分模块实现。
重点检查:
1. 并发安全;
2. 事务一致性;
3. 数据库索引;
4. 异常处理;
5. 接口幂等;
6. 日志记录;
7. 是否需要补偿机制。

这个流程比“直接让 AI 写积分模块”稳定得多。


十二、结语:AI 编程的本质是增强,而不是替代

AI 编程真正的价值,不是让开发者变成“复制粘贴员”,而是让开发者从重复劳动中解放出来,把更多精力放在需求理解、系统设计、质量控制和业务判断上。

你可以把 AI 当作:

  • 初级开发助手;
  • 代码生成器;
  • 测试用例生成器;
  • 文档助手;
  • Debug 伙伴;
  • 架构讨论对象;
  • 代码审查辅助工具。

但不要把它当成:

  • 最终负责人;
  • 生产环境管理员;
  • 安全专家替代品;
  • 业务规则决策者;
  • 不需要审查的自动编码机器。

最稳妥的使用原则是:

让 AI 生成,让人类判断;让 AI 加速,让工程流程兜底。

只要你能做到需求清晰、上下文充分、小步验证、严格审查,AI 编程就会成为非常强大的生产力工具。反之,如果盲目信任、直接复制、缺少测试,它也可能让项目积累大量隐性风险。

希望这份指南能帮助你少踩坑、更高效地使用 AI 编程工具,在实际开发中真正做到“提效不降质”。

目录结构
全文