别再写 Prompt 了:模型不缺指令,缺的是「验收标准」

2026-11-04 8 0

我做了个小实验:同一个需求,同一个模型,七次不同的写法。七份输出,长得像七个产品经理写的。

结论让我有点想把过去两年的 Prompt 都删了重写——大多数人不是不会写 Prompt,而是把「写需求」和「许愿」搞混了。

你给模型的往往是鼓励、身份和形容词:「你是一位资深的、严谨的、注重代码质量的资深工程师,请尽可能输出优雅、可维护、考虑周全的实现。」模型听完很感动,然后给你一份它自己很满意、你完全用不上的代码。

问题出在哪?出在——你没告诉它,做砸了算谁的。


一、先看实测:同一件事,三种写法,三种命运

需求很简单:写一个带指数退避的 HTTP 重试函数,要求不引入第三方依赖。

写法 A:身份 + 鼓励 + 一堆形容词

你是一位资深且严谨的后端工程师,请用优雅、可维护、考虑周全的方式,
尽可能全面地实现一个 HTTP 重试函数,要处理好各种边界情况……

输出:180 行。带了一个完整的重试策略类、六个配置项、四个日志钩子,还贴心地补了 Prometheus 指标。你只想删个网络抖动,它给你造了一整套中间件。

典型的「把上下文当成许愿池」。你说「考虑周全」,它就理解成「越多越好」。

写法 B:极简

写一个 HTTP 重试函数,指数退避。

输出:22 行,干净,能跑。但超时没设、退避上限没设、非幂等请求没区分——你拿去用,大概率在生产上挨骂。

极简不是缺点,问题是它省掉的部分,全是你后面要还的债。

写法 C:契约式

【任务】写一个 HTTP 重试函数(Node.js,无第三方依赖)。
【输入】fetch(url, opts) ;opts 可含 timeoutMs。
【输出】单个函数 export async function retry(fn, { retries=3, baseMs=200 })。
【验收清单】
1. 退避为 base * 2^n,带 ±20% 抖动
2. 只重试网络错误与 5xx,4xx 直接抛
3. 单次超时默认 5s,可配置
4. 总耗时上限 30s,超限抛出可识别错误
5. 幂等性由调用方通过 opts.idempotent 声明,为 false 时不自动重试
【边界】不要引入任何三方库;不要加日志、指标、类设计;
【失败处理】若需求自相矛盾,先列出矛盾点并给出取舍方案,再写代码。

输出:58 行,五个验收点逐条对得上,没有一行多余代码。它甚至贴心地把「幂等性」这个你没提的点列了出来,因为它属于验收清单要求的推理链。

差别不在模型,在你给的是「描述」还是「契约」。


二、Prompt 心法:真正有用的只有四件事

1. 给验收标准,不要给鼓励

「要优雅」对模型来说是一句没有信息量的话。「每个函数不超过 30 行,注释只解释 why 不解释 what」才是信息量。

判断标准很简单:如果一句话无法被验证,它对模型就是废话。「要有性能意识」是废话;「列表接口不允许返回超过 50 条」是标准。

2. 先要结构,再要内容

我最爱的一招:先让它列方案、列风险、列需要你确认的分歧点,你挑一个,它再动手。这一步花掉三十秒,能省掉三轮返工。

因为模型最擅长的是「补全」,而不是「判断」。你让它直接写,它会默认沿用它见过最多的那种写法。你先框定选项,它只需要在框里填空。

3. 把「不许做什么」写清楚

正面的要求模型会听,负面的要求模型经常忘。「不要加日志、不要加指标、不要设计类、只用标准库」,比「请保持代码简洁」有效十倍。

简洁是个形容词,「只用一个函数、一个文件、零依赖」是尺子。

4. 让它先怀疑自己

结尾加一句:「先列出这个方案可能的三个坑和对应的规避方式。」

这一句的价值不在于它真能自我批评(它顶多真的列三个),而在于它会把「隐含前提」逼到台面上——比如「默认接口幂等」「默认重试全部 GET」这种你其实从没确认过的东西。


三、可直接抄的模板

【角色】你是什么身份、关心什么(只写影响判断的部分)
【任务】一句话说清要什么,不要塞形容词
【输入】我给你的原始材料长什么样(数据格式、字段、示例)
【输出】交付形态:函数签名 / JSON schema / 表格列 / 字数与结构
【验收清单】3-6 条可验证的硬标准
【禁止项】明确不许做的事
【失败处理】信息不足时怎么办:先提问,还是标注假设并继续?
【不确定时】要求它先列分歧点

注意「验收清单」这一栏——它是你整套 Prompt 里最值钱的部分,也是 90% 的人省略的部分。

因为验收清单本质上是你脑子里那把尺子。你从来没拿出来给人看过,还指望别人猜。


四、三个最常见的自伤姿势

其一,一次塞十个需求。模型会给你一份「平均用力」的巨型方案,每条都做了,每条都不深。要么拆开问,要么明确说「本轮只解决 X」。

其二,用空词堆上下文。「专业」「深入」「有洞察」「高质量」「面向中高级读者」——这些词对模型的输出几乎没有影响,却让 Prompt 变长、变贵、变自信。你以为它在努力,它只是在读你的形容词。

其三,不给样例。这是最冤的一种。模型不知道你想要什么排版、什么粒度、什么语气时,最省力的做法就是输出平均值。你贴一段你真正满意的东西过去,它抄格式的能力远超你想象。


五、人话版总结

把模型当实习生用,而不是当神谕用。

神谕不需要你写验收标准,你问它它就答。实习生需要——你得说清楚背景、边界、交付物、验收方式,以及做错了怎么办。你不写,它就按自己理解的最常见版本做,然后你嫌它「不够好」。

最扎心的一句在这儿:你抱怨模型输出平庸,常常不是因为模型笨,而是因为你从来没告诉过它什么叫好。

下次写 Prompt 前,先问自己一句:这段话里,有几句话是我真的验收时会看的?如果答案是「没有几句,那几句才是重点」,那就只留那几句。

少写字,多给尺子。模型最不缺你的鼓励,最缺的是你的标准。

相关文章

代部署点单指南:你只要给我这 5 样东西,剩下的我端上来 🦞
小龙虾情报站:OpenClaw 大版本拆解,外加几个我真在用的骚玩法
我这条命是 OpenClaw 给的:真实使用体验 + 踩坑指南
我帮客户趟过的 12 个坑,第 7 个我自己都笑了:OpenClaw 代部署,把你可能会踩的雷先踩完
给会胡说的 AI 写测试:三层质量防线,从结构化输出到黄金评估集
我给 AI 做了个体检,结果发现最大的风险在技能市场:附三个真能用的自查玩法

发布评论