深入掌握 Vibe Coding 的高级技巧、最佳实践和进阶应用
Prompt 是与 AI 沟通的桥梁,好的 Prompt 能够:
原则:将复杂需求分解为清晰的结构
❌ 不好的 Prompt:
做一个用户管理系统,有登录、注册、个人资料管理功能,还要有权限控制,管理员可以管理用户,普通用户只能看自己的信息。
✅ 好的 Prompt:
创建一个用户管理系统,包含以下模块:
1. 认证模块
- 用户注册(邮箱验证)
- 用户登录(JWT token)
- 密码重置
2. 用户资料模块
- 查看个人资料
- 编辑个人资料
- 上传头像
3. 权限控制
- 角色:管理员、普通用户
- 管理员:可以查看和管理所有用户
- 普通用户:只能访问自己的信息
技术栈:Node.js + Express + MongoDB
原则:通过示例展示期望的输出格式
创建一个 API 端点,返回用户列表。
要求:
- 使用分页(每页 20 条)
- 支持搜索(按用户名)
- 返回格式参考:
{
"data": [...],
"pagination": {
"page": 1,
"total": 100,
"perPage": 20
}
}
原则:明确说明什么不能做,避免 AI 生成不符合要求的代码
创建一个文件上传功能:
- 支持图片格式:jpg, png, gif
- 文件大小限制:5MB
- 不允许执行上传的文件
- 必须验证文件类型(不能仅依赖扩展名)
- 使用安全的文件名存储
原则:先让 AI 生成基础代码,再逐步细化
第一步:
创建一个简单的待办事项 API
第二步(基于第一步的结果):
在刚才的代码基础上,添加:
1. 任务优先级(高、中、低)
2. 任务分类(工作、个人、学习)
3. 按优先级和分类筛选
第三步(继续优化):
添加数据验证:
- 任务标题不能为空
- 优先级必须是枚举值
- 添加错误处理
在 Cursor 中,选中相关代码后再提问,AI 会理解上下文:
选中现有函数代码,然后提问:
"在这个函数中添加错误处理和日志记录"
项目结构:
- src/
- models/ (数据模型)
- routes/ (路由)
- middleware/ (中间件)
- utils/ (工具函数)
请在这个结构下创建用户认证模块
根据 RESTful API 设计规范,创建用户资源的路由:
- GET /users - 获取用户列表
- GET /users/:id - 获取单个用户
- POST /users - 创建用户
- PUT /users/:id - 更新用户
- DELETE /users/:id - 删除用户
你是一个经验丰富的全栈开发工程师,擅长 Node.js 和 React。
请帮我设计一个可扩展的用户认证系统架构。
创建一个购物车功能,请按以下步骤思考:
1. 首先分析需要哪些数据结构
2. 然后设计 API 接口
3. 最后实现业务逻辑
请逐步展示你的思考过程。
比较两种实现方式:
方式 A:使用 JWT token
方式 B:使用 session
请分析各自的优缺点,并推荐适合的场景。
AI 生成的代码也需要测试。建立测试习惯:
# 让 AI 生成函数
def calculate_total(items):
# AI 生成的代码
return sum(item['price'] * item['quantity'] for item in items)
# 然后要求 AI 生成测试
"""
为这个函数编写单元测试,覆盖:
- 正常情况
- 空列表
- 负数价格(应该抛出异常)
- 无效数据类型
"""
为这个用户注册 API 编写集成测试:
- 测试完整的注册流程
- 测试重复邮箱注册
- 测试无效数据
- 测试数据库连接失败的情况
使用 TDD 方式开发一个计算器:
1. 先写测试用例(加法、减法、除法、除零错误)
2. 然后实现功能让测试通过
即使代码是 AI 生成的,也要审查:
使用工具自动检查代码质量:
Python:
# 使用 pylint
pylint your_code.py
# 使用 black 格式化
black your_code.py
JavaScript:
# 使用 ESLint
eslint your_code.js
# 使用 Prettier 格式化
prettier --write your_code.js
让 AI 配置这些工具:
为这个项目配置 ESLint 和 Prettier,使用 Airbnb 代码规范
❌ 危险的代码(AI 可能生成):
query = f"SELECT * FROM users WHERE username = '{username}'"
✅ 安全的代码:
query = "SELECT * FROM users WHERE username = %s"
cursor.execute(query, (username,))
Prompt 技巧:
创建数据库查询函数,必须使用参数化查询,防止 SQL 注入
❌ 危险的代码:
document.innerHTML = userInput; // 危险!
✅ 安全的代码:
const textNode = document.createTextNode(userInput);
element.appendChild(textNode);
Prompt 技巧:
创建用户评论功能,必须防止 XSS 攻击,对用户输入进行转义
❌ 危险的代码:
console.log("User password:", password); // 危险!
✅ 安全的代码:
// 使用环境变量
const dbPassword = process.env.DB_PASSWORD;
Prompt 技巧:
创建配置文件,敏感信息(API keys、密码)必须使用环境变量,不能硬编码
创建用户注册 API,包含以下安全验证:
- 邮箱格式验证
- 密码强度要求(至少8位,包含大小写字母和数字)
- 防止暴力破解(限制请求频率)
- 使用 bcrypt 加密密码
实现 JWT 认证系统:
- Token 过期时间:1小时
- Refresh token:7天
- 实现 token 刷新机制
- 保护敏感路由(需要认证)
检查这个项目的依赖是否有已知的安全漏洞。
使用 npm audit 或类似工具。
AI 可能生成低效的代码:
❌ 低效代码:
result = []
for item in items:
if item['status'] == 'active':
result.append(item['name'])
✅ 优化后:
result = [item['name'] for item in items if item['status'] == 'active']
优化 Prompt:
优化这个函数,使用列表推导式,提高性能
❌ 低效代码:
users = get_all_users()
for user in users:
user.posts = get_posts_by_user(user.id) # N+1 查询
✅ 优化后:
from itertools import groupby
users = get_all_users()
user_ids = [user.id for user in users]
posts = get_posts_by_users(user_ids) # 批量查询
# 按 user_id 分组(groupby 需要先排序)
posts_sorted = sorted(posts, key=lambda x: x.user_id)
posts_dict = {}
for user_id, user_posts in groupby(posts_sorted, key=lambda x: x.user_id):
posts_dict[user_id] = list(user_posts)
for user in users:
user.posts = posts_dict.get(user.id, [])
优化 Prompt:
优化这个函数,避免 N+1 查询问题,使用批量查询
检查这个代码是否有内存泄漏问题:
- 事件监听器是否正确移除?
- 定时器是否清理?
- 大对象是否及时释放?
优化这个数据库查询:
- 添加必要的索引
- 避免 SELECT *
- 使用分页
- 考虑使用缓存
优化这个 React 组件:
- 使用 React.memo 避免不必要的重渲染
- 使用 useMemo 缓存计算结果
- 懒加载大型组件
优化这个 API:
- 添加响应缓存
- 实现分页
- 使用压缩(gzip)
- 考虑使用 CDN
为这个应用添加性能监控:
- API 响应时间
- 数据库查询时间
- 内存使用情况
- 错误率
设计一个可扩展的项目结构:
项目:电商平台
模块:
- 用户模块(认证、资料)
- 商品模块(CRUD、搜索)
- 订单模块(创建、支付、状态)
- 支付模块(集成支付网关)
要求:
- 每个模块独立
- 模块间通过接口通信
- 易于测试和维护
按照以下原则组织代码:
- 按功能模块划分(不是按技术层次)
- 每个模块包含:models, routes, services, tests
- 共享代码放在 common/
- 配置文件统一管理
管理项目依赖:
- 固定主要版本号
- 定期更新依赖
- 使用 lock 文件
- 审查新依赖的安全性
分离开发依赖和生产依赖:
- 开发依赖:测试工具、构建工具
- 生产依赖:运行时必需的库
创建配置管理系统:
- 开发环境配置
- 生产环境配置
- 使用环境变量
- 敏感信息加密存储
为团队建立代码规范:
- 命名规范(变量、函数、类)
- 注释规范
- 代码格式(使用 Prettier/Black)
- Git 提交信息规范
配置 ESLint/Pylint:
- 使用团队统一的规则
- 集成到 CI/CD
- 提交前自动检查
建立 Git 工作流:
- 主分支:master/main(生产代码)
- 开发分支:develop
- 功能分支:feature/功能名
- 使用 Pull Request 进行代码审查
使用规范的提交信息格式:
feat: 添加用户登录功能
fix: 修复支付接口 bug
docs: 更新 API 文档
refactor: 重构用户模块
test: 添加单元测试
即使代码是 AI 生成的,也要审查:
创建代码审查清单:
- [ ] 功能是否完整?
- [ ] 是否有测试?
- [ ] 是否有文档?
- [ ] 是否符合代码规范?
- [ ] 是否有安全风险?
AI 生成的代码可能不符合你的预期:
策略:
请解释这段代码的逻辑:
1. 每一步在做什么?
2. 为什么这样实现?
3. 可能的边界情况是什么?
这段代码报错了,错误信息是:XXX
请帮我:
1. 分析可能的原因
2. 提供调试步骤
3. 给出修复方案
为这个函数添加详细的日志:
- 记录输入参数
- 记录关键步骤
- 记录错误信息
- 使用不同日志级别(debug, info, error)
在 Cursor 中使用调试器:
1. 设置断点
2. 单步执行
3. 查看变量值
4. 检查调用栈
编写测试来重现这个 bug:
1. 写一个失败的测试(重现 bug)
2. 修复代码让测试通过
3. 确保其他测试仍然通过
调试这个 API:
1. 检查请求是否正确发送?
2. 检查服务器是否收到请求?
3. 检查数据库查询是否正确?
4. 检查响应格式是否正确?
调试数据问题:
1. 检查数据是否正确保存?
2. 检查查询条件是否正确?
3. 检查数据转换是否有问题?
问题:完全依赖 AI,不思考代码逻辑
解决方案:
问题:AI 生成代码后直接使用,不测试
解决方案:
问题:AI 可能生成不安全的代码
解决方案:
问题:AI 可能生成低效的代码
解决方案:
问题:AI 生成的代码可能质量不高
解决方案:
检查代码中的硬编码值:
- 魔法数字
- 硬编码的配置
- 硬编码的 URL
检查所有函数是否有错误处理:
- 异常捕获
- 错误日志
- 用户友好的错误信息
检查是否有重复代码:
- 提取公共函数
- 使用工具类
- 创建可复用的组件
客观认识 Vibe Coding 的缺点,掌握改进方法,在实际工作中更好地使用 AI 辅助编程
虽然 Vibe Coding 带来了显著的效率提升,但了解其局限性可以帮助我们:
问题描述:
根据研究数据,AI 生成的代码存在明显的质量和安全问题:
实际案例:
# AI 可能生成这样的危险代码
query = f"SELECT * FROM users WHERE username = '{username}'" # SQL 注入风险
document.innerHTML = userInput # XSS 风险
console.log("API Key:", api_key) # 敏感信息泄露
影响:
问题描述:
过度依赖 AI 可能导致:
实际表现:
问题描述:
AI 在理解复杂上下文时存在限制:
实际案例:
开发者:请修改用户认证模块,添加 OAuth 登录
AI:生成了代码,但破坏了现有的 JWT 认证流程
原因:AI 没有完全理解现有的认证架构
问题描述:
AI 生成的代码可能存在性能问题:
实际案例:
# AI 可能生成这样的低效代码
users = get_all_users()
for user in users:
user.posts = get_posts_by_user(user.id) # N+1 查询问题
问题描述:
持续使用 AI 编程工具的成本:
实际影响:
问题描述:
使用 AI 编程工具时的隐私和安全风险:
注意事项:
问题描述:
在团队中使用 Vibe Coding 可能面临的挑战:
实际影响:
问题描述:
AI 生成的代码在调试和维护时可能遇到困难:
实际案例:
开发者:这段代码不工作了,但我不知道它为什么这样写
问题:AI 生成的代码逻辑不清晰,缺少注释
解决:需要重新理解代码逻辑,添加注释和文档
重要性:
即使代码是 AI 生成的,也必须进行代码审查。
审查清单:
代码审查清单:
- [ ] 功能是否正确实现?
- [ ] 是否有安全漏洞?
- [ ] 性能是否可接受?
- [ ] 代码是否清晰易读?
- [ ] 是否有适当的错误处理?
- [ ] 是否符合项目规范?
- [ ] 是否有必要的测试?
Prompt 示例:
请审查这段 AI 生成的代码:
[选中代码]
检查:
1. 安全漏洞(SQL 注入、XSS 等)
2. 性能问题
3. 代码质量
4. 错误处理
5. 代码规范
重要性:
AI 生成的代码必须经过充分测试。
测试策略:
测试策略:
1. 单元测试:测试每个函数
2. 集成测试:测试模块间交互
3. 边界测试:测试边界情况
4. 错误测试:测试错误处理
5. 性能测试:测试性能表现
Prompt 示例:
为这个 AI 生成的函数编写完整的测试:
[选中函数]
包括:
- 正常情况测试
- 边界情况测试
- 错误情况测试
- 性能测试
重要性:
AI 生成的代码存在较高的安全风险,必须进行专门的安全审查。
安全审查重点:
Prompt 示例:
对这段代码进行安全审查:
[选中代码]
重点检查:
1. SQL 注入风险
2. XSS 风险
3. 敏感信息泄露
4. 认证授权问题
5. 输入验证
重要性:
不能完全依赖 AI,必须理解生成的代码逻辑。
理解方法:
理解代码的方法:
1. 阅读代码,理解每一行的作用
2. 追踪数据流,理解数据如何流转
3. 理解算法逻辑,知道为什么这样实现
4. 添加注释,帮助自己和他人理解
5. 询问 AI 解释代码逻辑
Prompt 示例:
请详细解释这段代码:
[选中代码]
解释:
1. 每一部分在做什么?
2. 为什么这样实现?
3. 可能的边界情况是什么?
4. 有没有更好的实现方式?
重要性:
合理使用 Git 管理 AI 生成的代码。
最佳实践:
Git 使用建议:
1. 频繁提交:每完成一个功能就提交
2. 清晰的提交信息:说明 AI 生成的内容
3. 代码审查:通过 Pull Request 进行审查
4. 分支管理:使用功能分支开发
5. 回滚准备:保留可以回滚的版本
提交信息示例:
feat: AI 生成用户认证模块
- 使用 Cursor AI 生成 JWT 认证功能
- 已通过代码审查和安全审查
- 包含完整的单元测试
重要性:
注意 AI 工具的使用成本。
成本控制方法:
成本控制策略:
1. 监控使用量:定期检查 API 调用次数
2. 优化使用:避免不必要的 AI 调用
3. 选择合适方案:根据需求选择免费或付费版本
4. 团队共享:考虑团队共享账号
5. 预算管理:设置使用预算和提醒
重要性:
保护代码和敏感信息的隐私。
保护措施:
隐私保护措施:
1. 敏感信息:不要将 API 密钥、密码等输入 AI
2. 代码审查:审查是否包含敏感信息
3. 使用本地模型:考虑使用本地部署的 AI 模型
4. 了解政策:了解服务提供商的数据使用政策
5. 企业合规:企业使用需要考虑合规要求
敏感信息检查清单:
敏感信息检查:
- [ ] API 密钥
- [ ] 密码和令牌
- [ ] 数据库连接字符串
- [ ] 加密密钥
- [ ] 个人信息
- [ ] 商业机密
目标:
建立系统化的 AI 代码审查流程。
实施步骤:
步骤 1:制定审查清单
AI 代码审查清单:
功能审查:
- [ ] 功能是否完整实现?
- [ ] 边界情况是否处理?
- [ ] 错误处理是否充分?
安全审查:
- [ ] 是否有安全漏洞?
- [ ] 输入验证是否充分?
- [ ] 敏感信息是否泄露?
性能审查:
- [ ] 是否有性能问题?
- [ ] 算法是否高效?
- [ ] 数据库查询是否优化?
代码质量:
- [ ] 代码是否清晰易读?
- [ ] 命名是否规范?
- [ ] 是否有重复代码?
步骤 2:自动化审查工具
集成自动化审查工具:
1. 代码质量:ESLint、Pylint
2. 安全检查:npm audit、Snyk
3. 性能分析:性能分析工具
4. 代码覆盖率:测试覆盖率工具
步骤 3:建立审查流程
代码审查流程:
1. AI 生成代码
2. 自动化工具检查
3. 开发者初步审查
4. 团队代码审查(Pull Request)
5. 安全审查(如需要)
6. 测试验证
7. 合并到主分支
目标:
建立全面的测试策略,确保 AI 生成代码的质量。
测试策略:
单元测试:
单元测试要求:
- 覆盖率:至少 80%
- 测试用例:正常情况、边界情况、错误情况
- 自动化:集成到 CI/CD 流程
集成测试:
集成测试要求:
- 测试模块间交互
- 测试数据库操作
- 测试 API 接口
- 测试外部服务集成
测试驱动开发(TDD):
TDD 流程:
1. 先写测试用例
2. 让 AI 生成代码使测试通过
3. 重构优化代码
4. 确保测试仍然通过
Prompt 示例:
使用 TDD 方式开发这个功能:
第一步:编写测试用例
[描述测试需求]
第二步:生成代码使测试通过
[基于测试用例生成代码]
第三步:重构优化
[优化代码结构和性能]
目标:
建立安全开发最佳实践,降低安全风险。
安全措施:
输入验证:
输入验证要求:
- 所有用户输入必须验证
- 使用白名单而非黑名单
- 验证数据类型、长度、格式
- 防止注入攻击
安全编码规范:
安全编码规范:
1. 使用参数化查询(防止 SQL 注入)
2. 输出转义(防止 XSS)
3. 使用环境变量存储敏感信息
4. 使用强加密算法
5. 实现适当的认证和授权
安全扫描工具:
集成安全扫描工具:
1. 静态代码分析:SonarQube、CodeQL
2. 依赖扫描:npm audit、Snyk
3. 动态扫描:OWASP ZAP
4. 容器扫描:Trivy
Prompt 示例:
创建这个功能,必须遵循安全最佳实践:
[描述功能需求]
安全要求:
1. 输入验证和清理
2. 参数化查询
3. 输出转义
4. 错误处理(不泄露敏感信息)
5. 日志记录(不记录敏感信息)
目标:
建立统一的团队 AI 使用规范。
规范内容:
代码规范:
代码规范要求:
1. 统一的代码风格(使用 Prettier/Black)
2. 统一的命名规范
3. 统一的注释规范
4. 统一的文件结构
AI 使用规范:
AI 使用规范:
1. 何时使用 AI:明确使用场景
2. 如何使用 AI:统一的 Prompt 模板
3. 代码审查:必须经过审查
4. 文档要求:AI 生成的代码需要文档
团队培训:
团队培训内容:
1. AI 工具使用培训
2. Prompt 工程培训
3. 代码审查培训
4. 安全最佳实践培训
目标:
保持编程基础能力,不过度依赖 AI。
学习策略:
基础能力保持:
保持基础能力:
1. 定期手写代码练习
2. 学习算法和数据结构
3. 理解底层原理
4. 阅读优秀代码
学习计划:
学习计划:
1. 每周手写代码练习(至少 2 小时)
2. 学习新技术和框架
3. 阅读技术文档和博客
4. 参与开源项目
Prompt 示例:
请解释这个算法的原理和实现:
[选中算法代码]
解释:
1. 算法原理
2. 时间复杂度
3. 空间复杂度
4. 适用场景
5. 优化方法
目标:
结合传统编程和 AI 辅助,发挥各自优势。
混合模式:
AI 辅助场景:
适合使用 AI 的场景:
1. 重复性代码生成
2. 样板代码创建
3. 代码重构
4. 文档生成
5. 测试用例生成
传统编程场景:
适合手写代码的场景:
1. 核心业务逻辑
2. 性能关键代码
3. 安全关键代码
4. 复杂算法实现
5. 架构设计
工作流程:
混合开发工作流程:
1. 架构设计:手写设计
2. 核心逻辑:手写实现
3. 样板代码:AI 生成
4. 测试用例:AI 生成
5. 代码审查:人工审查
6. 优化重构:AI 辅助
目标:
集成代码质量检查工具到开发流程。
工具链:
代码质量工具:
代码质量工具:
1. Linter:ESLint、Pylint
2. Formatter:Prettier、Black
3. 类型检查:TypeScript、mypy
4. 复杂度分析:CodeClimate
CI/CD 集成:
CI/CD 流程:
1. 代码提交触发
2. 自动运行 Linter
3. 自动运行测试
4. 自动运行安全扫描
5. 代码覆盖率检查
6. 构建和部署
Prompt 示例:
为这个项目配置完整的工具链:
1. ESLint + Prettier(代码规范)
2. Jest(测试框架)
3. Husky(Git hooks)
4. GitHub Actions(CI/CD)
要求:
- 提交前自动检查
- 测试覆盖率要求 80%
- 代码质量检查
代码质量指标:
代码质量指标:
- 代码审查通过率
- 测试覆盖率
- 代码复杂度
- Bug 数量
- 代码重复率
安全性指标:
安全性指标:
- 安全漏洞数量
- 安全扫描通过率
- 安全审查时间
- 安全事件数量
效率指标:
效率指标:
- 开发时间
- 代码生成速度
- 审查时间
- 修复时间
改进循环:
持续改进循环:
1. 评估当前状态
2. 识别问题
3. 制定改进计划
4. 实施改进
5. 评估效果
6. 调整策略
Vibe Coding 虽然带来了显著的效率提升,但也存在明显的局限性。通过:
我们可以在实际工作中更好地利用 Vibe Coding,同时避免其缺点带来的风险。
关键要点:
了解 AI 编程助手的发展趋势,把握未来发展方向
根据 Gartner 的预测:
这表明 AI 编码助手正在从”可选工具”转变为”标准配置”。
1. 模型能力提升
2. 工具集成深化
3. 专业化发展
话题内容:
实际应用:
开发者:将这个 React 类组件重构为函数组件
AI:自动生成函数组件代码,保持功能一致
话题内容:
实际应用:
AI 审查工具:
- 发现 SQL 注入风险
- 检测性能问题
- 评估代码复杂度
- 提供改进建议
话题内容:
实际应用:
工作流示例:
1. Cursor 用于代码生成
2. GitHub Copilot 用于代码补全
3. Claude Code 用于命令行任务
4. AI 审查工具用于代码审查
话题内容:
实际应用:
最佳实践:
- 提供清晰的上下文
- 审查所有 AI 生成的代码
- 编写测试验证功能
- 关注安全性
1. 工具成熟度提升
2. 成本降低
3. 集成增强
1. AI 成为标准配置
2. 能力大幅提升
3. 专业化发展
1. AI 原生开发
2. 自动化程度提高
3. 新范式出现
需要加强的技能:
可能弱化的技能:
1. 拥抱 AI 工具
2. 保持基础能力
3. 关注新趋势
1. 开发效率提升
2. 门槛降低
3. 质量挑战
1. 教育方式改变
2. 课程更新
Vibe Coding 和 AI 编码助手正在快速发展:
对开发者的建议:
未来属于那些能够有效使用 AI 工具的开发者!
掌握 Vibe Coding 的高级技巧需要:
持续学习,不断进步! 🚀