坏 prompt → 好 prompt 对照
一句话摘要:同一个需求,换个写法,我的产出质量天差地别。下面 6 组对照,每组都是「你常这么写 → 我大概率跑偏」加「这么写 → 我能一次到位」,照着改你的 prompt 就行。
我不是读不懂你的话,我是会默默替你补全你没说的部分——补的方向常常不是你要的。这页把六种最常见的「我会猜错」的写法摆出来,每组给坏版、一句「为什么坑我」、再给好版。挑你眼下要做的那种,直接套。
判断一个 prompt 好不好,有个粗暴标准:把它发给一个不认识你项目的同事,他能不问就动手吗?能,我多半也能。
1. 需求模糊:你以为说清了,其实留了一堆岔 路口
坏:给用户列表加个搜索。
为什么坑我:搜什么字段、要不要模糊匹配、输入即搜还是回车触发、空结果怎么显示——你没说的每一处,我都会挑一种实现,而且不告诉你我挑了。等你看到成品,跑偏的是方向,不是细节。详见 需求有歧义时我会挑一种解读直接实现。
好:在用户列表页加搜索框。
- 搜 name 和 email 两个字段,子串匹配、大小写不敏感。
- 输入停顿 300ms 后自动触发(debounce),不用按回车。
- 无结果时显示「没有匹配的用户」,不要显示空表格。
- 复用现有的 <SearchInput> 组件,别新写一个。
把我可能拐弯的每个岔路口提前堵上。你不必写成需求文档,但凡是「换个人读会有不同答案」的地方,点一句就够。
2. 没给约束:不说安全 / 依赖 / 风格,我就按训练里最常见的来
坏:写个函数,把上传的头像存到 S3。
为什么坑我:我不知道你的安全红线和工程约定,就会填一套「网上最常见」的默认值——可能把密钥硬编码进代码、pip install 一个你团队从没用过的 SDK、用一套和你代码库格格不入的风格。这些不是 bug,是我替你做的、你没同意的决定。
好:写个函数把上传的头像存到 S3。约束:
- 凭据从环境变量读(AWS_* 已配好),绝不硬编码。
- 只允许 jpg/png,限制 5MB,存之前校验 MIME,不信任文件扩展名。
- 用项目已有的 boto3,别引新依赖。
- 跟着 services/ 目录现有写法:函数式、显式抛 StorageError。
安全、依赖、风格这三类约束,我自己补的默认值最容易让你返工。与其事后 review 时挑出来,不如开工前一次给齐。
3. 大改动不要计划:直接让我动手,我就一头扎进去改
坏:把整个认证模块从 session 改成 JWT。
为什么坑我:这是个牵涉多文件、可能改坏登录的大改动。你不让我先出方案,我会边想边改,等你发现思路不对,半个模块已经被我翻了一遍,回滚成本比一开始就对齐方案高得多。详见 跳过计划模式。
好:我想把认证从 session 改成 JWT。先别写代码——
用 plan mode 给我一份方案:要动哪些文件、token 怎么签发和刷新、
现有 session 怎么平滑迁移、有哪些坑。我确认后你再动手。
凡是「改坏了不好收拾」的改动,先要方案、后要代码。让我把要走的路画给你看,你花两分钟挡掉错误方向,比让我闷头跑半小时再推倒值。
4. 不要验证:只说「实现」,我就只交一段看起来能跑的代码
坏:实现一下密码强度校验。
为什么坑我:「实现」对我意味着「写出来」,不意味着「证明它对」。我会交一段读起来合理的代码,但边界条件(空串、超长、Unicode、纯空格)有没有处理,我没验证你也不知道。它可能在第一个真实输入上就裂开。
好:实现密码强度校验,规则:≥12 位、至少含大小写和数字。
同时:
- 写 jest 单测覆盖:合规、太短、缺数字、空串、纯空格、超长这几类。
- 跑 `npm test`,把结果贴给我;红的就修到全绿。
把「怎么算做完」明确成可验证的动作——写哪几类测试、跑哪条命令、要看到什么结果。否则我交的是「看起来完成」,不是「确实完成」。