2.4 对话式编程工作流
写 Prompt 很像写产品需求文档的「极简版」:告诉 AI 你是谁、要做什么、有什么限制、最后要交付什么。用不上花哨词汇,重点是上下文完整。
核心理念:把 AI 当作你的编程伙伴,而不是代码生成机器。清晰的沟通是成功合作的关键。
有效的 Prompt 结构
基础结构公式
[角色定位] + [具体任务] + [技术要求] + [期望输出]四大要素:
- 角色定位:告诉 AI 它应该扮演什么角色
- 具体任务:明确要完成的功能和目标
- 技术要求:指定技术栈和约束条件
- 期望输出:说明最终要得到什么
示例 1:创建产品落地页
你是一位精通 Next.js 和 Tailwind CSS 的前端工程师。
请帮我创建一个产品落地页,包含以下部分:
1. 导航栏(Logo + 菜单 + CTA按钮)
2. Hero区域(标题 + 描述 + 两个按钮)
3. 特性展示(3个卡片,图标+标题+描述)
4. 定价表(3个价格方案)
5. Footer(版权信息+社交链接)
技术要求:
- 使用 TypeScript
- 使用 Tailwind CSS
- 组件化开发
- 响应式设计
期望输出:
- 完整的页面代码
- 组件化的文件结构
- 样式美观且响应式
- 可以直接运行的代码示例 2:功能模块开发
你是一位有经验的全栈开发工程师,擅长 React 和 Node.js。
请帮我实现一个用户认证系统,包括以下功能:
1. 用户注册(邮箱验证)
2. 用户登录(记住登录状态)
3. 密码重置功能
4. 用户资料管理
技术要求:
- 前端:React + TypeScript
- 后端:Node.js + Express
- 数据库:MongoDB
- 认证:JWT
- 验证:邮箱验证码
期望输出:
- 完整的前后端代码
- 数据库模型定义
- API 接口文档
- 错误处理机制
- 安全性考虑对话式编程的核心原则
原则 1:提供充分的上下文
上下文的重要性:AI 不知道你的项目背景,你需要提供足够的信息让它理解你的需求。
好的上下文示例:
我正在开发一个在线教育平台,主要面向大学生。
当前的技术栈是:Next.js + TypeScript + Prisma + PostgreSQL。
网站已经有用户系统和课程列表功能。
现在需要实现购物车和支付功能。缺少上下文的示例:
帮我做一个购物车原则 2:分步骤描述复杂需求
渐进式开发:复杂的任务应该分解为多个步骤,每步确认后再进行下一步。
步骤化示例:
第一步:创建购物车数据模型
- 定义商品、数量、价格等字段
- 创建数据库表结构
第二步:实现添加到购物车功能
- 在商品页面添加"加入购物车"按钮
- 更新购物车数据
第三步:实现购物车页面
- 显示已添加的商品列表
- 支持修改数量和删除商品
第四步:实现结算功能
- 计算总价
- 跳转到支付页面原则 3:明确技术约束和偏好
技术约束的作用:告诉 AI 你的技术栈、编码标准、性能要求等,避免生成不符合要求的代码。
技术约束示例:
编码规范:
- 使用 TypeScript 严格模式
- 组件使用函数式写法
- 使用 ES6+ 语法
- 代码需要添加详细注释
性能要求:
- 页面加载时间不超过 3 秒
- 图片需要懒加载
- 使用 React.memo 优化组件
- 避免不必要的重新渲染
兼容性要求:
- 支持现代浏览器(Chrome, Firefox, Safari, Edge)
- 移动端适配(iOS 12+, Android 8+)原则 4:及时反馈和修正
反馈循环:AI 生成的代码可能不完美,需要你及时反馈问题并要求修正。
有效反馈示例:
感谢生成的代码,但我发现几个问题:
1. 导航栏在移动端显示不正常,按钮重叠了
2. Hero 区域的图片加载速度太慢
3. 价格表在平板电脑上布局错乱
请帮我修复这些问题,特别是移动端的适配。高级 Prompt 技巧
技巧 1:角色扮演法
给 AI 分配一个具体的角色,让它从专业角度思考问题。
你是一位有 10 年经验的前端架构师,
专门负责大型企业级应用的性能优化。
请帮我分析这个 React 组件的性能瓶颈,
并提供优化方案:
[粘贴组件代码]技巧 2:示例引导法
提供具体的示例,让 AI 参考示例的格式和风格。
请帮我创建一个用户卡片组件,参考这个设计风格:
示例组件:
[粘贴一个已有的组件代码]
新组件要求:
- 显示用户头像、姓名、职位
- 包含关注按钮
- 响应式设计
- 使用相同的样式规范技巧 3:约束条件法
明确列出各种约束和限制,让 AI 在给定范围内提供解决方案。
请帮我设计一个 API 接口:
约束条件:
- 必须使用 RESTful 设计风格
- 响应时间不超过 200ms
- 支持每秒 1000 次请求
- 数据库查询不能超过 3 次
- 返回格式必须统一
功能需求:
- 获取用户列表
- 支持分页和筛选
- 返回用户基本信息技巧 4:错误处理引导
要求 AI 考虑各种异常情况和错误处理。
请帮我实现一个文件上传功能,需要考虑:
错误处理场景:
1. 文件类型不支持
2. 文件大小超过限制
3. 网络上传中断
4. 服务器存储空间不足
5. 文件名冲突
请为每种情况提供合适的错误提示和处理逻辑。不同场景的 Prompt 模板
场景 1:快速原型开发
你是一位快速原型开发专家,擅长用最短时间创建可演示的产品。
请帮我快速创建一个 [产品类型] 的原型:
核心功能:
- [功能1]
- [功能2]
- [功能3]
技术栈:
- [选择的技术栈]
要求:
- 功能完整但界面可以简单
- 代码可以优化但必须能运行
- 重点是实现核心业务逻辑
- 不需要考虑边缘情况和优化
时间要求:请在 [时间] 内完成场景 2:代码重构和优化
你是一位代码重构专家,专门优化现有代码的性能和可维护性。
请帮我优化这段代码:
[粘贴需要优化的代码]
当前问题:
- [问题1描述]
- [问题2描述]
优化目标:
- 提高代码可读性
- 改善性能表现
- 增强错误处理
- 减少代码重复
要求:
- 保持原有功能不变
- 添加详细注释说明优化点
- 提供性能对比分析场景 3:调试和问题解决
你是一位资深调试专家,擅长快速定位和解决代码问题。
我遇到了一个技术问题:
问题描述:
[详细描述遇到的问题]
相关代码:
[粘贴相关代码]
错误信息:
[粘贴完整的错误信息]
期望行为:
[描述你期望的正确行为]
请帮我:
1. 分析问题原因
2. 提供解决方案
3. 解释为什么会出现这个问题
4. 给出预防措施对话式编程的最佳实践
实践 1:建立项目知识库
项目背景文档:为每个项目创建背景文档,让 AI 快速了解项目情况。
项目背景模板:
项目名称:[项目名称]
项目类型:[网站/App/工具]
目标用户:[用户群体]
主要功能:[核心功能列表]
技术栈:
- 前端:[前端技术]
- 后端:[后端技术]
- 数据库:[数据库类型]
- 部署:[部署方式]
编码规范:
- [代码风格要求]
- [命名规范]
- [文件组织方式]
当前进度:
- 已完成功能
- 正在开发的功能
- 待开发的功能实践 2:使用版本控制思维
版本化对话:把每次重要的对话和生成的代码当作一个版本,便于追踪和回滚。
版本控制技巧:
// 对话开始前
=== 版本 1.0 - 基础功能实现 ===
[描述当前版本的功能]
// 对话过程中
// 正在开发版本 1.1 - 添加用户认证
[记录新增功能和修改]
// 重要里程碑
=== 版本 2.0 - 发布候选版本 ===
[总结当前版本的所有功能]实践 3:代码审查习惯
人工审查:不要盲目接受 AI 生成的代码,要养成代码审查的习惯。
审查清单:
- 代码逻辑是否正确
- 是否符合项目编码规范
- 是否有安全漏洞
- 性能是否可以接受
- 错误处理是否完善
- 注释是否清晰
- 是否有重复代码
实践 4:增量开发策略
小步快跑:采用增量开发策略,每次只实现一个小功能,及时测试和验证。
增量开发流程:
- 需求分析:明确本次要实现的小功能
- AI 对话:向 AI 清楚描述需求
- 代码生成:获取 AI 生成的代码
- 人工审查:检查代码质量和逻辑
- 功能测试:验证功能是否正常工作
- 代码集成:将代码集成到项目中
- 回归测试:确保没有破坏现有功能
常见的对话陷阱
陷阱 1:需求描述模糊
模糊需求示例:
帮我做一个好看的网站
优化一下这个函数
让这个页面更好用改进方法:提供具体的、可衡量的需求描述。
陷阱 2:缺少上下文信息
缺少上下文示例:
帮我修复这个 bug [粘贴代码]改进方法:说明项目背景、技术栈、相关代码等信息。
陷阱 3:一次性要求过多
过度复杂需求示例:
帮我创建一个完整的电商系统,包括用户管理、商品管理、订单管理、支付系统、物流跟踪、数据分析、营销活动...改进方法:将复杂需求分解为多个小任务,逐步实现。
陷阱 4:不进行代码验证
危险行为:
- 直接复制粘贴代码到项目
- 不测试就提交代码
- 不审查代码安全性
改进方法:始终进行人工审查和测试验证。
学习和实践建议
练习 1:Prompt 重构练习
目标:将模糊的需求描述重构为清晰有效的 Prompt
练习方法:
- 收集一些模糊的需求描述
- 按照四要素结构重构
- 对比 AI 生成的结果质量
- 总结改进经验
练习 2:项目模拟对话
目标:模拟真实项目的开发对话流程
练习方法:
- 选择一个小的项目想法
- 使用对话式编程完成项目
- 记录每次对话的内容
- 分析哪些对话效果好,哪些需要改进
练习 3:代码审查训练
目标:培养对 AI 生成代码的审查能力
练习方法:
- 让 AI 生成一些代码
- 按照审查清单逐一检查
- 标出所有问题和不完善之处
- 要求 AI 修正这些问题
下一步:掌握对话式编程工作流后,继续学习 Prompt 工程技巧,进一步提升与 AI 的协作效率。