为什么 AI 写的代码总像实习生?问题其实出在 Prompt
最近我在用 Cursor 写一个 React 项目时,遇到一个很有意思的问题。
同样一个需求,让 AI 写代码时,结果差距非常大。
有时候 AI 写出的代码:
- 结构清晰
- 类型完整
- 组件拆分合理
但有时候生成的代码却像这样:
function Login() {
return (
<div>
<h1>Login</h1>
<input />
<input />
<button>Login</button>
</div>
)
}
这种代码的问题很明显:
- 没有组件结构
- 没有 TypeScript 类型
- 没有表单校验
- 没有状态管理
几乎 无法直接用于真实项目。
一开始我以为是 AI 的问题,但后来发现一个关键点:
AI 写代码的质量,其实取决于 Prompt。
在 AI 编程时代,其实可以把 Prompt 理解为:
Prompt = 写给 AI 的需求文档
如果需求写得不清楚,AI 只能“猜”你的需求。
而如果 Prompt 写得像技术需求文档,AI 生成的代码质量会明显提升。
这篇文章我就分享一个核心问题:
开发者应该如何写出高质量 Prompt?
一、为什么简单 Prompt 很容易失败
很多开发者写 Prompt 的方式其实非常简单,比如:
写一个 React 登录页面
这类 Prompt 的问题是:
- 没有技术栈
- 没有功能描述
- 没有实现方式
- 没有代码要求
对于 AI 来说,这个需求几乎是 完全模糊的。
AI 只能生成最简单的实现。
所以结果往往是:
- demo 级代码
- 没有工程结构
- 不可维护
这也是很多人觉得 AI 写代码不靠谱 的原因。
二、高质量 Prompt 的核心结构
在实际开发中,我总结了一套简单的 Prompt 结构。
一个高质量 Prompt 通常包含 5 个要素:
背景
技术栈
功能需求
实现方式
代码要求
可以理解为 精简版技术需求文档。
三、一个真实 Prompt 优化案例
来看一个简单的例子。
原始 Prompt
写一个 React 登录页面
AI 生成的代码通常只是一个简单表单。
优化后的 Prompt
实现一个登录页面
技术栈:
React + TypeScript + Tailwind CSS
功能:
邮箱 + 密码登录
表单校验
登录按钮 loading 状态
技术实现:
使用 React Hook Form 管理表单
使用 Axios 请求 API
UI:
SaaS 风格
卡片式登录框
代码要求:
组件化
TypeScript 类型完整
当 Prompt 变得更清晰之后,AI 生成的代码通常会包含:
- 登录组件
- API 请求
- 表单校验
- UI 布局
- TypeScript 类型
代码质量会明显更接近真实项目。
四、写 Prompt 的三个实用技巧
除了结构化 Prompt,还有几个技巧非常实用。
1 让 AI 扮演专家
在 Prompt 中指定角色,可以提高回答质量。
例如:
你是一名资深前端工程师,请实现以下功能
这样 AI 会倾向于输出:
- 更规范的代码结构
- 更合理的实现方式
2 分步骤生成代码
很多人喜欢一次生成所有代码,但这种方式容易生成混乱代码。
更好的方式是 分步骤生成。
例如:
第一步:设计组件结构
第二步:实现 UI
第三步:添加业务逻辑
这样生成的代码会更加清晰。
3 让 AI 帮你优化代码
AI 不仅可以写代码,也可以 重构代码。
例如:
请优化这段代码:
1 提升可读性
2 拆分组件
3 添加 TypeScript 类型
AI 可以自动完成一次简单重构。
五、AI 编程时代的变化
过去开发者的核心能力是:
写代码
而在 AI 编程时代,一个新的能力正在变得越来越重要:
写 Prompt
因为 AI 并不会真正理解需求,它只是根据提示生成内容。
Prompt 越清晰,AI 生成的结果就越好。
所以某种程度上可以说:
Prompt 就是写给 AI 的需求文档。
六、总结
很多人觉得 AI 写代码不稳定,其实问题往往不是 AI,而是 Prompt。
一个高质量 Prompt 通常包含:
背景
技术栈
功能需求
实现方式
代码要求
当 Prompt 足够清晰时,AI 生成的代码质量会明显提升。
在未来的开发流程中,开发者不仅需要会写代码,也需要学会:
如何与 AI 协作。
而 Prompt 工程,可能会成为每个开发者都需要掌握的一项新技能。