写给程序员的 Prompt 技巧
网上很多「万能 Prompt」其实泛化过度。程序员日常更需要的是可复用结构:让 AI 知道目标、边界、验收方式和不要做什么。下面是我几个月下来真正在用的写法。
四段式结构(Goal / Context / Constraints / Done)
几乎每个有效 prompt 都能拆成四块:
- Goal: 一句话说清要达成什么
- Context: @ 相关文件,或说明技术栈、目录约定
- Constraints: 不能动的行为、不能加的依赖、代码风格
- Done: 怎样算完成——命令、页面路径、可见效果
示例(修博客滚动问题):
Goal: 修复博客列表页和文章页无法纵向滚动的问题。
Context: @src/css/layout/layout.less @src/css/common/subpage.less
子页面使用 body.subpage,博客页有 main.blog-main / main.post。
Constraints: 不能破坏首页 intro/main 的双屏切换和 overflow 行为。
最小 diff,只改必要文件。
Done: npm run build 通过;/blog/ 和文章页内容超出视口时可滚动;
首页切换动画仍正常。坏 prompt vs 好 prompt
坏: 「优化一下博客页面」
AI 不知道优化什么,可能重写布局、加框架、改配色。
好: 「博客左侧分类点击后应过滤文章,不是滚动定位;增加『全部』分类;宽度保持 920px;请只改 index.pug、blog.less 和必要 JS」
好坏的差别不是礼貌用语,是可验证的指令密度。
三个我常用的模板
1. 加功能
在 [模块] 增加 [功能]。
参考现有 [某页面] 的风格和构建方式。
数据放在 [json 路径],模板在 [pug 路径]。
不要新增 npm 依赖,不要修改 [排除项]。
完成后运行 npm run build,确认 dist/[路径] 存在。2. 修 bug
现象:[用户看到什么]
期望:[应该怎样]
已尝试:[可选]
相关文件:@file1 @file2
请先定位根因再改,不要大面积重构。3. 扩写内容
扩写 [文章 slug] 的正文,保持技术博客语气,中文。
增加 [章节主题],每节至少 2~3 段具体说明。
可结合本仓库真实技术栈(Gulp/Pug/Less)。
不要改 front matter 以外的模板结构。要主动写清的「反例」
AI 很爱做「顺手优化」。我会明确禁止:
- 不要改
dist/里手改以外的逻辑(应改 src) - 不要加 TypeScript / React / 新测试框架
- 不要 force push、不要自动 git commit
- 不要改与任务无关的 config 键名
写进 Constraints,比事后回滚便宜得多。
@ 文件的使用习惯
- 改样式 → @ 对应 less + 可能受影响的 layout
- 改构建 → @ gulpfile.js + 一个示例 pug
- 改内容 → @ _data/*.json + 模板
- 修导航/路径 → @ nav.pug + 各层级的 base 变量用法
文件给少了,AI 会猜;给多了,它会啰嗦。通常 2~5 个最相关文件刚好。
迭代式 prompt,而不是一次说完
复杂任务不要一次提十个要求。我的节奏:
- 先实现最小可用(能 build、能访问)
- 浏览器验收,列问题清单
- 第二轮只修清单里的项
- 第三轮打磨样式/文案
每轮 prompt 都带上一轮哪里不对,AI 修得准得多。
语言选择
我和 AI 对话用中文,代码注释和 commit 看项目习惯(这个仓库英文 commit 也行)。技术术语保留英文(Gulp、Pug、overflow)反而减少歧义。
好 prompt 的标准:别人拿同一份指令,也能判断做没做对。
Prompt 不是玄学。把它当成「给同事的 ticket」来写,质量会稳定很多。