
提示词是接口设计
对开发者来说,prompt 就是 LLM 的 API:输入结构差,输出就抖动。好的 prompt 和好的函数签名一样——参数清晰、默认值合理、文档完整。
通用结构(COPY 这个)
## Role
你是资深 TypeScript 全栈工程师,熟悉 NestJS 与 React。
## Goal
(一句话目标)
## Context
- 相关文件:...
- 现状:...
## Constraints
- 必须 / 禁止 ...
## Output
- 格式:先计划,后代码
- 语言:中文解释,代码英文标识符
## Acceptance
- [ ] 测试通过
- [ ] 无 any
三类约束
Positive(要什么)
「使用现有 usePublicResource hook」「遵循 code/msg/data 响应」
Negative(不要什么)
「不要新依赖」「不要改 prisma schema」「不要 force push」
Negative 往往比 positive 更能减少跑偏。
验收(怎么算完)
把 CI 命令写进去:pnpm typecheck、pnpm test xxx。
角色要不要设
- 复杂域(安全、支付):设角色 + 经验年限,提高谨慎度;
- 小改动:直接 Goal + Constraints 即可,省 token。
多轮策略
- Explore:「只读分析,不要改文件」
- Plan:「给出 3 步计划,等我确认」
- Execute:「按第 2 步执行」
- Review:「以 staff engineer 身份 review 刚才 diff」
比一轮「全做完」质量高。
示例:修 bug
## Goal
修复 /ai 路由首屏只显示 boot 壳层的问题。
## Context
- dismissAppBoot 仅在 PublicShell 调用
- /ai 是独立路由
## Constraints
- 优先全局方案,避免每个页面重复
- 改动 frontend/src/app.tsx
## Acceptance
- 强刷 /ai 可见聊天 UI
- typecheck 通过
常见错误
| 错误 | 修复 |
|---|---|
| 太长无结构 | 用标题分段 |
| 只有形容词 | 改成可测语句 |
| 没给反例 | 补充「不要…」 |
| 模型自由发挥格式 | 指定 markdown / json |
小结
提示词工程 = 结构化 spec + 约束 + 验收。投入 5 分钟写 prompt,常省 50 分钟擦屁股。
模板可放入
.cursor/rules或团队 wiki。