vibe_coding

Prompt 工程完全指南

掌握与 AI 高效沟通的艺术,编写高质量的 Prompt

📖 目录

  1. Prompt 工程基础
  2. Prompt 设计原则
  3. 上下文管理技巧
  4. 迭代优化策略
  5. 不同场景的 Prompt 模板
  6. 高级 Prompt 技巧
  7. 实战案例

Prompt 工程基础

什么是 Prompt 工程

Prompt 工程是设计和优化与 AI 交互的提示词(Prompt)的艺术和科学。好的 Prompt 能够:

Prompt 的重要性

在 Vibe Coding 中,Prompt 质量直接影响:


Prompt 设计原则

原则 1:清晰明确(Clarity)

模糊的 Prompt

做个登录功能

清晰的 Prompt

创建一个用户登录功能:
- 输入:邮箱和密码
- 验证:检查邮箱格式和密码强度
- 认证:使用 JWT token
- 返回:token 和用户信息
- 错误处理:显示友好的错误信息

原则 2:结构化(Structure)

将复杂需求分解为清晰的结构:

创建一个电商购物车系统,包含以下模块:

【模块 1:商品管理】
- 添加商品到购物车
- 从购物车移除商品
- 更新商品数量
- 清空购物车

【模块 2:价格计算】
- 计算商品总价
- 应用折扣
- 计算运费
- 显示最终总价

【模块 3:数据持久化】
- 保存到本地存储
- 同步到服务器
- 恢复购物车状态

原则 3:提供上下文(Context)

给 AI 足够的上下文信息:

项目背景:
- 这是一个 Node.js + Express 项目
- 使用 MongoDB 数据库
- 已有用户认证系统

需求:
在现有项目基础上,添加商品管理模块

原则 4:明确约束(Constraints)

明确说明限制和要求:

创建一个文件上传功能:
✅ 允许:jpg, png, gif(最大 5MB)
❌ 不允许:可执行文件、脚本文件
🔒 安全要求:
  - 验证文件类型(不能仅依赖扩展名)
  - 使用安全的文件名
  - 限制上传频率

原则 5:提供示例(Examples)

通过示例展示期望的输出:

创建一个 API,返回用户列表。

返回格式示例:
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "张三",
      "email": "zhangsan@example.com",
      "createdAt": "2025-01-10T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 100
  }
}

上下文管理技巧

技巧 1:代码引用

在 Cursor 中,选中代码后再提问:

选中这段代码:
def calculate_total(items):
    return sum(item['price'] for item in items)

然后提问:
"在这个函数中添加数量计算,总价 = 单价 × 数量"

技巧 2:文件引用

参考 src/models/User.js 的结构,
创建 Product.js 模型,包含类似的字段和方法

技巧 3:项目结构说明

项目结构:
backend/
  ├── models/      # 数据模型
  ├── routes/      # 路由
  ├── controllers/ # 控制器
  └── middleware/  # 中间件

frontend/
  ├── components/  # 组件
  ├── pages/       # 页面
  └── utils/       # 工具函数

请在这个结构下创建用户管理功能

技巧 4:技术栈说明

技术栈:
- 后端:Node.js + Express + TypeScript
- 数据库:PostgreSQL + Prisma ORM
- 前端:React + TypeScript + Tailwind CSS
- 认证:JWT

请使用这些技术创建用户认证系统

迭代优化策略

策略 1:从简单到复杂

第一步:基础功能

创建一个待办事项列表,可以添加和删除任务

第二步:添加功能

在刚才的基础上,添加:
- 标记任务为完成
- 按状态筛选(全部/未完成/已完成)

第三步:优化体验

添加:
- 任务优先级(高/中/低)
- 任务分类
- 搜索功能

策略 2:基于反馈优化

第一次生成后

生成的代码可以工作,但请优化:
1. 添加错误处理
2. 改进代码结构
3. 添加注释

继续优化

性能有问题,请优化:
- 使用索引优化数据库查询
- 添加缓存
- 优化前端渲染

策略 3:分模块实现

模块 1

先实现用户认证模块:
- 注册
- 登录
- 登出

模块 2(基于模块 1):

在认证模块基础上,添加:
- 密码重置
- 邮箱验证
- 记住我功能

不同场景的 Prompt 模板

模板 1:创建新功能

创建一个 [功能名称] 功能:

【功能描述】
[详细描述功能]

【技术要求】
- 使用 [技术栈]
- 遵循 [代码规范]
- 包含 [测试/文档等]

【输入输出】
输入:[描述输入]
输出:[描述输出]

【错误处理】
- [错误情况 1]:处理方式
- [错误情况 2]:处理方式

示例

创建一个用户注册功能:

【功能描述】
用户可以通过邮箱和密码注册账户

【技术要求】
- 使用 Node.js + Express
- 遵循 RESTful API 规范
- 包含单元测试

【输入输出】
输入:{ email, password, name }
输出:{ success, user, token }

【错误处理】
- 邮箱已存在:返回 409 错误
- 密码太弱:返回 400 错误
- 服务器错误:返回 500 错误

模板 2:修复 Bug

修复这个 Bug:

【问题描述】
[描述问题现象]

【错误信息】
[粘贴错误信息]

【相关代码】
[选中或粘贴相关代码]

【期望行为】
[描述应该发生什么]

【环境信息】
- 操作系统:[OS]
- 运行环境:[Node/Python 版本等]

模板 3:重构代码

重构这段代码:

【当前代码】
[选中要重构的代码]

【重构目标】
- 提高可读性
- 提高可维护性
- 提高性能
- 遵循 [设计模式/原则]

【要求】
- 保持功能不变
- 添加注释
- 添加测试

模板 4:优化性能

优化这个功能的性能:

【当前实现】
[描述或选中当前代码]

【性能问题】
- [问题 1]:当前耗时 X 秒
- [问题 2]:内存占用过高

【优化目标】
- 响应时间 < 100ms
- 内存占用 < 50MB

【约束】
- 不能改变 API 接口
- 必须保持功能完整性

模板 5:添加测试

为这个功能编写测试:

【功能代码】
[选中要测试的代码]

【测试要求】
- 单元测试
- 覆盖正常情况和边界情况
- 覆盖错误情况
- 使用 [测试框架]

【测试用例】
1. [测试用例 1]
2. [测试用例 2]
3. [测试用例 3]

高级 Prompt 技巧

技巧 1:角色扮演

让 AI 扮演特定角色:

你是一个经验丰富的全栈开发工程师,擅长:
- 后端:Node.js, Python
- 前端:React, Vue
- 数据库:PostgreSQL, MongoDB

请帮我设计一个可扩展的微服务架构。

技巧 2:链式思考

引导 AI 逐步思考:

创建一个用户管理系统,请按以下步骤思考:

1. 首先分析需要哪些数据模型
2. 然后设计 API 接口
3. 接着实现业务逻辑
4. 最后添加错误处理和验证

请逐步展示你的思考过程。

技巧 3:对比分析

让 AI 比较不同方案:

比较两种实现方式:

方案 A:使用 JWT token 进行认证
方案 B:使用 session 进行认证

请分析:
- 各自的优缺点
- 适用场景
- 安全性对比
- 性能对比

并给出推荐。

技巧 4:分步骤执行

将复杂任务分解:

分步骤实现这个功能:

步骤 1:创建数据模型
步骤 2:创建 API 路由
步骤 3:实现业务逻辑
步骤 4:添加验证和错误处理
步骤 5:编写测试

请逐步完成,每完成一步让我确认。

技巧 5:约束和引导

明确约束,引导方向:

创建一个 REST API,要求:

✅ 必须:
- 遵循 RESTful 规范
- 使用 HTTP 状态码
- 返回 JSON 格式
- 包含错误处理

❌ 不能:
- 使用 GET 请求修改数据
- 返回敏感信息(如密码)
- 缺少输入验证

🎯 目标:
- 代码清晰易读
- 易于测试
- 易于扩展

技巧 6:示例驱动

提供多个示例:

创建一个数据验证函数,参考以下示例:

示例 1:邮箱验证
输入:"user@example.com" → 输出:true
输入:"invalid-email" → 输出:false

示例 2:密码强度
输入:"StrongPass123!" → 输出:true
输入:"weak" → 输出:false

请创建类似的验证函数。

实战案例

案例 1:从模糊到清晰

初始 Prompt(模糊)

做个博客系统

优化后的 Prompt(清晰)

创建一个个人博客系统:

【功能需求】
1. 文章管理
   - 创建、编辑、删除文章
   - 支持 Markdown 格式
   - 文章分类和标签

2. 用户系统
   - 注册、登录
   - 个人资料管理

3. 前端展示
   - 文章列表(分页)
   - 文章详情
   - 搜索功能

【技术栈】
- 后端:Node.js + Express + MongoDB
- 前端:React + Next.js
- 样式:Tailwind CSS

【要求】
- RESTful API
- 响应式设计
- SEO 优化

案例 2:迭代优化

第一版 Prompt

创建一个待办事项应用

第二版(添加功能)

在待办事项应用基础上,添加:
- 任务优先级
- 任务分类
- 截止日期

第三版(优化体验)

优化用户体验:
- 添加拖拽排序
- 添加筛选和搜索
- 添加数据持久化

第四版(完善功能)

完善功能:
- 添加任务提醒
- 添加任务统计
- 添加导出功能

案例 3:复杂项目分解

整体需求

创建一个电商平台

分解为模块

模块 1

创建商品管理模块:
- 商品 CRUD
- 商品分类
- 商品搜索

模块 2

创建购物车模块:
- 添加商品
- 更新数量
- 计算总价

模块 3

创建订单模块:
- 创建订单
- 订单状态管理
- 订单历史

Prompt 检查清单

在发送 Prompt 前,检查:


常见错误和避免方法

错误 1:Prompt 太简单

错误

做个登录

正确

创建用户登录功能,包含邮箱密码验证、JWT token 生成、错误处理

错误 2:缺少上下文

错误

添加这个功能

正确

在现有的用户管理系统中,添加密码重置功能

错误 3:要求不明确

错误

优化这个代码

正确

优化这个函数的性能,目标是响应时间从 500ms 降到 100ms 以下

错误 4:一次要求太多

错误

创建一个完整的电商平台,包含用户、商品、订单、支付、物流...

正确

第一步:创建用户认证模块
第二步:创建商品管理模块
...

总结

优秀的 Prompt 工程需要:

  1. 清晰明确:准确传达意图
  2. 结构化:复杂需求分解
  3. 上下文丰富:提供足够信息
  4. 迭代优化:逐步完善
  5. 技巧运用:使用高级技巧
  6. 持续改进:从实践中学习

下一步



上一篇

← Claude Code 入门指南

🏠 返回主页

下一篇

Vibe Coding 高级指南 →


记住:好的 Prompt = 好的代码! 🚀