Prompt 工程实战:代码生成的5个层次
你有没有遇到过这种场景:同事用 AI 写出了优雅、可维护的代码,而你用同一个工具,得到的是一堆需要大改的垃圾——明明用的是同款模型?
差距不在工具,在 Prompt。
我在过去几个月里,系统性地测试了 Cursor、GitHub Copilot、Claude、GPT-4 等 AI 编程工具,总结出了一套代码生成 Prompt 的5个层次。从”勉强能用”到”超出预期”,每一层都有具体的技巧和模板。
第0层:随手一问(大多数人停留在这里)
1 | |
这是最常见的 Prompt 写法。结果通常是:
- 语言/框架不对(Python写了,但你用的是Node.js)
- 缺少错误处理
- 密码明文存储(安全炸弹)
- 变量命名像随机字符串
问题根源:AI 没有上下文,只能靠猜。猜对了是运气,猜错了是你的损失。
第1层:给出基本上下文
好的 Prompt 首先要回答三个问题:技术栈是什么?输入输出是什么?有什么约束?
1 | |
加了上下文之后,AI 生成的代码立刻从”可能能用”变成了”基本能用”。
提升技巧:
- 明确技术栈版本(Node 18, React 18, Python 3.11)
- 描述清楚输入输出格式
- 列出不可协商的约束条件
第2层:注入代码风格和项目规范
同一个功能,在不同团队里有完全不同的写法。AI 默认给你的是它训练数据里的”平均风格”,而不是你项目的风格。
方法一:提供现有代码片段作为风格参考
1 | |
方法二:在 Cursor 中使用 .cursorrules 文件
在项目根目录创建 .cursorrules,AI 会自动遵守:
1 | |
这一层的核心:让 AI 融入你的项目,而不是让你的项目适应 AI 的输出。
第3层:分解复杂任务 + 渐进式构建
很多人拿到一个复杂需求,直接让 AI “一口气写完”,结果往往是一个看起来完整、实际上漏洞百出的代码块。
正确做法:把大任务拆成小步骤,逐步验证。
以”实现一个购物车模块”为例:
❌ 错误做法:
1 | |
✅ 正确做法(分步骤):
1 | |
(验证数据结构合理后继续)
1 | |
(测试通过后继续)
1 | |
分步骤的好处:
- 每一步都可以验证,错误被隔离
- 后续步骤可以基于已验证的代码继续
- AI 的注意力集中在小任务上,质量更高
第4层:角色设定 + 思维链激活
这一层进入”高阶玩家”区域。通过角色设定,让 AI 以专家视角审视代码;通过思维链,让 AI 先分析再动手。
角色设定示例:
1 | |
思维链激活(在要求 AI 生成复杂代码前,先让它分析):
1 | |
这种方式让 AI 先”想明白”再动手,而不是盲目输出代码。质量提升非常显著。
第5层:迭代优化 + 测试驱动
最高层次是把 AI 当成一个协作伙伴,进入真正的迭代开发循环。
模式一:TDD with AI(测试驱动开发)
先让 AI 写测试,再让它写实现,再让它对比是否通过:
1 | |
(获得测试用例后)
1 | |
模式二:代码互相审查
生成代码后,换一个角度让 AI 挑自己的毛病:
1 | |
汇总:5层 Prompt 对比
| 层次 | 特征 | 代码质量 | 适用场景 |
|---|---|---|---|
| 第0层 | 无上下文 | 能跑但需大改 | 学习/探索 |
| 第1层 | 技术栈+输入输出 | 基本可用 | 日常开发 |
| 第2层 | 风格规范+项目约定 | 符合项目标准 | 团队协作 |
| 第3层 | 分步骤渐进构建 | 高质量,可维护 | 复杂功能 |
| 第4层 | 角色+思维链 | 专家级审视 | 架构设计/Review |
| 第5层 | TDD+迭代优化 | 接近生产可用 | 核心模块 |
写在最后
AI 编程工具本质上是一个能力放大器。你输入的 Prompt 质量决定了它能把你放大多少倍。
停留在第0层的人,只是用 AI 代替了 Google 搜索;到达第5层的人,已经在用 AI 构建真实产品。
这5个层次不是要你每次都写长篇 Prompt——而是根据任务复杂度,选择合适的层次。简单的代码片段用第1层就够了;设计核心模块时,花5分钟写一个第4层的 Prompt,省下的是5小时的 Debug 时间。
你现在常用第几层?欢迎在评论区聊聊你的 Prompt 技巧 👇
本文是「AI + 编程」系列第4篇,系列持续更新中。上一篇:OpenCode 完全使用指南