别让 AI 把项目写成坑:程序员实用避坑清单和命令手册
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 生成代码后,必须经过:
- 人工审查;
- 本地运行;
- 单元测试;
- 静态检查;
- 安全检查;
- 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 编程最忌讳一次生成几千行代码。更好的方式是“小步快跑”。
推荐节奏:
- 先生成数据库表;
- 再生成实体类;
- 再生成 Mapper 或 Repository;
- 再生成 Service;
- 再生成 Controller;
- 再生成测试;
- 最后生成文档。
每一步都运行验证,不要堆到最后。
第四步:让 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;
生产环境执行前必须:
- 备份数据;
- 在测试环境验证;
- 加 WHERE 条件;
- 开事务;
- 评估影响行数;
- 准备回滚方案。
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 编程工具,在实际开发中真正做到“提效不降质”。