我让Claude给产品列表加个分页功能。30秒后,它交了一份干净、完整、能跑的代码。然后我发现:分页组件用错了(我们本来就有)、样式全是它自己编的、现有筛选器全坏了。技术上没错,根本没法用。
问题不在AI,在我的提示词。我就写了句:"给这个列表加分页。"它就真的只做了这一件事,多一行都没写。
![]()
现在的模型(Claude 4.x、GPT-4o)已经不搞"猜测意图"那套了。提示词怎么写,它就怎么执行。这总体上是进步,但彻底改变了写代码提示词的逻辑。好的代码提示词不是玩技巧,而是给AI提供你会给新入职初级开发同样的上下文。
![]()
我测试了几十种表述方式,覆盖四种最常见的编码任务。以下是真正有效的写法。
万能结构:四个元素缺一不可
具体场景之前,先记住每个优质代码提示词都包含的四个要素:
• 技术栈/上下文——语言、版本、框架、相关文件
• 精确任务——你想要什么,用指令而非提问表述
• 约束条件——不要碰什么、范围边界
• 预期输出——diff、完整代码、仅解释、CVSS评分……
Anthropic的黄金法则:把提示词拿给完全不了解背景的同事看。如果他困惑,AI也会困惑。
复杂提示词(多文件、复杂指令)建议用XML标签分隔区块。测试显示,结构清晰的标签能让回复质量提升30–39%:
PHP 8.1, Laravel 10, multi-tenant app
Add pagination to ProductList
Do not touch getFilteredProducts()[paste files here]
第二条规则:代码在前,问题在后。把上下文和文件放顶部,指令放底部,大上下文场景下的精确度能提升约30%。AI会先读完所有信息再行动。
修Bug:描述症状,别猜原因
经典错误:贴代码然后问"这跑不通"。AI不知道你是崩溃、返回值错了、还是单纯太慢。它会编一个看似合理的问题然后"修复"。
❌ 模糊提示词——评分:3/10
This code doesn't work, help me.
function getUserById($id) {
$result = $db->query("SELECT * FROM users WHERE id = $id");
return $result->fetch();
}
典型结果:AI修复了SQL注入(确实是个真问题),忽略了你实际遇到的错误,用PDO预处理语句重写了一遍。技术上没错,但不是你要的。
✅ 精确提示词——评分:9/10
Stack: PHP 8.1 + PDO, Laravel 10.
Current behavior:
Call to a member function fetch() on bool
→ only when the ID doesn't exist in the table
Expected behavior:
Return null if user doesn't exist (no exception thrown)
Already tried:
isset($result) before fetch() — same error
Code:
function getUserById($id) {
$result = $db->query("SELECT * FROM users WHERE id = $id");
return $result->fetch();
}
"Already tried"这行是关键。它阻止AI建议你已经试过的东西,把焦点锁定在真正的盲区。
结果对比:模糊提示词让AI花了400词解释SQL注入风险,附带一段不解决fetch()报错的重写。精确提示词直接指出$query->fetch()在失败查询上返回false,给出三行修复方案。
添加功能:给地图,别只给目的地
最常见的失败模式:描述你想要什么,却不说明它该放在哪、怎么连。
❌ 模糊提示词——评分:4/10
Add a dark mode toggle to the app.
AI会生成一个孤立的切换组件,可能用localStorage存主题,但大概率会:漏掉你现有的主题系统(Sass变量、CSS-in-JS、Tailwind配置)、忽略系统偏好检测、破坏服务端渲染的水合。
✅ 精确提示词——评分:9/10
Stack: Next.js 14 App Router, Tailwind CSS, next-themes already installed.
Task: Add a dark mode toggle button in the header.
Location: components/Header.tsx, right of the search icon.
Current theme setup:
- next-themes Provider wraps layout.tsx
- Tailwind darkMode: 'class' in tailwind.config.ts
- No existing toggle component
Requirements:
- Use next-themes useTheme hook
- Icon: sun for light, moon for dark (Lucide icons)
- Respect system preference on first load
- No flash on page load
Output: Full Header.tsx code with the toggle added.
关键差异:AI现在知道主题系统已经存在、具体要改哪个文件、用什么图标库、有哪些边界情况要处理。它不会重复造轮子。
重构:说清"为什么动"和"什么不能动"
![]()
重构提示词最容易越界。AI爱"顺便优化",结果就是把工作流搞崩。
❌ 模糊提示词——评分:2/10
Clean up this messy API client code.
AI会重命名所有函数(破坏导入)、把回调改成async/await(可能破坏错误处理)、添加你没要求的抽象层。技术债务确实减少了,你的代码也炸了。
✅ 精确提示词——评分:9/10
Stack: TypeScript, Axios, React Query for caching.
Current issues:
- 200-line file, mixed concerns (request building, error handling, logging)
- Duplicate error handling in 6 methods
- No request/response interceptors used
Constraints (DO NOT CHANGE):
- Function names and signatures must stay identical (used across 40+ files)
- Keep the publicApi and internalApi instances separate
- React Query cache keys must not change
Goal: Extract error handling to interceptors, split into request-builder and http-client modules.
Output: File structure proposal first, then implementation.
约束条件列表是重构提示词的救命稻草。明确说"不要碰"什么,比说"要做什么"更重要。
解释/学习:指定深度和角度
代码解释的请求最容易得到废话答案。
❌ 模糊提示词——评分:3/10
Explain how this virtual DOM diffing works.
你会收到2000词的通用解释,从2013年React起源讲起,夹杂着你已经知道的基础概念,最后才碰你的具体代码。
✅ 精确提示词——评分:9/10
Context: Porting a custom VDOM implementation to a Web Worker.
Code: [paste 80-line diff function]
Current understanding: I get the tree traversal, confused about how refs and event handlers transfer.
Specific questions:
1. Why are events stringified here? (line 34)
2. What happens to closures in event handlers?
3. Is this compatible with React's useImperativeHandle?
Output depth: Skip basic VDOM concepts. Focus on cross-thread serialization and React interop.
结果:AI直接跳到Worker postMessage的序列化细节,用你代码里的具体行号解释,对比React的fiber架构说明兼容性限制。没有废话。
实测数据:提示词结构的影响
我用同一组任务测试了不同提示词质量,评分基于:代码可直接运行无需修改、遵循所有约束、解决实际问题而非表面问题。
任务类型模糊提示词精确提示词提升 Bug修复3/109/10+200% 功能添加4/109/10+125% 重构2/109/10+350% 代码解释3/109/10+200%
最惊人的发现:模糊提示词在重构任务上得分最低。AI的"改进"冲动和代码库的隐性依赖是致命组合。
一个反直觉的趋势
2023年的模型(GPT-4早期版本、Claude 2)会主动追问、要求更多上下文、拒绝执行模糊指令。现在的模型更听话——你给什么,它做什么。这降低了入门门槛,但提高了精确提示词的门槛。
老用户需要调整:别再指望AI"懂"你了。新用户有个优势:没有坏习惯要改,直接学对的。
快速检查清单
发送前过一遍:
□ 技术栈(语言、版本、框架)写了吗?
□ 任务用指令句,不是问句?
□ 约束条件明确(尤其"不要碰"什么)?
□ 预期输出格式指定了?
□ 复杂提示词用XML标签或清晰分段了?
□ 代码放顶部、问题放底部?
最后一条来自实测:同样的内容,代码在上、指令在下的排列,比反过来让AI少犯约30%的上下文错误。它先读全图,再动手。
AI确实做了你要求的—— exactly。问题是,你确定你要求的,是你真正想要的吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.