调试提示词模板
使用结构化提示词更快修复bug
这些模板帮助你有效地向AI助手描述bug,从而获得更快、更准确的解决方案。
基础调试模板
**问题**: [简要描述问题]
**错误信息**:
```
[完整的错误信息和堆栈跟踪]
```
**相关代码**:
```[语言]
[导致问题的代码]
```
**预期行为**: [期望的行为]
**实际发生的情况**: [实际的行为]
**复现步骤**:
1. [步骤1]
2. [步骤2]
3. [错误发生]
**环境**:
- 语言/框架: [例如: React 19, Python 3.12]
- 操作系统: [例如: macOS, Windows, Linux]
- 相关包: [例如: Next.js 15, FastAPI 0.104]
**我已尝试的方法**:
- [尝试1]
- [尝试2]
帮我识别根本原因并提供解决方案。
选代码:定位那行“万金油”通用错误
面对 Failed to parse OpenAPI spec. Provide a valid OpenAPI or Swagger JSON document. Convert YAML to JSON before importing. 这条通用报错时,你的第一反应不该是“改提示词”,而是问自己:我交给 AI 的原始输入是什么?我选进了哪些代码片段?这两者是否足以锁定真实原因?
当你的诊断卡在同一条错误消息上打转时,关键不是堆砌更多错误日志,而是回到「提示词」与「调试」循环的起点:用真实、可复现的输入去碰触源码。针对本例——{"info":{"title":"Fixture","version":"1.0.0"},"paths":{}}——我们聚焦于三个最小片段:解析入口、校验逻辑、错误展示,以及触发故障的具体输入。
首先,打开 parseOpenAPISpec 的实现。注意第 84-92 行的两层 catch:第一层捕获 JSON.parse 或下游校验失败;无论何种错误,统一进入一个占位式的 YAML 解析钩子(实际未实现),随即在第二层被兜底为同一条通用消息。这就是你看到的“万金油”——它不告诉你何时失败,只告诉你失败了。
接着看 validateOpenAPISpec(第 107-120 行)。它检查 openapi/swagger、info.title、paths 等字段。对本例输入:
- JSON 解析成功;
info.title与info.version存在且非空;paths是空对象(truthy)且typeof为 object;- 但顶层缺少
openapi或swagger,校验抛出异常。
再看 handleParseSpec 如何喂养解析器。第 65-94 行显示它接收字符串或 File.text() 内容,直接传入 parseOpenAPISpec——没有预清理、没有 schema 提示,完全依赖输入原样。
因此,诊断链条清晰:
- 相关代码:
openapi.ts#L78-L121(解析与校验)、App.tsx#L65-L94(输入接收); - 原始输入:
{"info":{"title":"Fixture","version":"1.0.0"},"paths":{}}(最小可复现样例); - 失败条件:顶层缺失
openapi/swagger,触发校验异常 → 落入第一层 catch → 被统一包装为通用错误。
注意:通用错误消息无法区分 YAML 输入、损坏 JSON 或字段缺失——源码的“万金油”处理往往掩盖了根源。真正的突破口是:将你能复现的实际代码片段与失败输入放进提示词,明确指出它们对应哪条校验规则;当前问题只需定位条件,无需调用代码生成器、添加样式或改动整个仓库。
快速调试提示词
语法错误
我遇到了这个语法错误:
[错误信息]
在这段代码中:
[代码]
请识别语法问题并显示修正后的版本。
运行时错误
我的代码可以编译但在运行时崩溃,错误信息如下:
[错误信息]
代码如下:
[代码]
上下文: [代码应该做什么]
帮我理解为什么会失败以及如何修复。
逻辑错误
我的代码运行没有错误,但输出结果不正确。
预期输出: [预期结果]
实际输出: [实际结果]
代码:
[代码]
测试用例:
[输入] -> 应该产生 [预期结果] 但实际产生 [实际结果]
帮我找出逻辑错误。
性能问题
这段代码太慢了:
[代码]
上下文:
- 输入规模: [例如: 10,000个项目]
- 当前性能: [例如: 5秒]
- 目标性能: [例如: < 1秒]
分析代码并建议优化方案。
🎓 高级调试模板
内存泄漏调查
我怀疑这段代码存在内存泄漏:
[代码]
症状:
- 内存使用从 [X MB] 开始
- 执行 [Y] 次操作后: [Z MB]
- 内存从不减少
环境: [Node.js 版本 / 浏览器]
帮我识别潜在的内存泄漏并修复。
竞态条件调试
我遇到了间歇性失败,疑似竞态条件:
[包含异步操作的代码]
症状:
- 随机失败,不是每次都发生
- 高负载时更容易失败
- 错误: [错误信息]
帮我识别并修复竞态条件。
网络请求调试
这个API调用失败了:
端点: [URL]
方法: [GET/POST/等]
请求体: [JSON/表单数据]
错误: [错误信息或状态码]
代码:
[代码]
预期: [预期响应]
实际: [实际响应或错误]
帮我诊断API问题。
调试策略提示词
根本原因分析
帮我追踪这个问题的根本原因:
错误: [错误信息]
代码: [代码]
引导我完成:
1. 理解错误信息
2. 识别错误来源
3. 找到根本原因
4. 提供修复建议
橡皮鸭调试
让我一步步向你解释我的代码:
[代码]
我认为发生的情况是:
1. [你对步骤1的理解]
2. [你对步骤2的理解]
3. [你认为哪里出错了]
我的理解正确吗?我的错误在哪里?
二分调试
帮我缩小这个bug发生的范围:
完整代码: [代码]
bug在这个文件的某处。让我们进行二分查找:
1. 发生在前半部分还是后半部分?
2. [继续缩小范围]
错误: [错误信息]
🛠️ 框架特定模板
React调试
React组件渲染不正确:
组件: [组件代码]
问题:
- 预期: [预期渲染结果]
- 实际: [实际渲染结果]
React DevTools显示: [状态/属性信息]
控制台错误: [任何错误]
帮我调试这个React问题。
Python异常处理
遇到了这个Python异常:
```python
[完整的错误回溯]
导致异常的代码:
[代码]
帮我:
- 理解这个异常
- 修复当前问题
- 添加适当的错误处理
### 数据库查询问题
这个SQL/数据库查询没有按预期工作:
查询:
[查询语句]
预期结果: [描述预期结果] 实际结果: [描述实际结果]
表结构: [相关表结构]
帮我修复这个查询。
---
## 何时使用各模板
| 情况 | 模板 | 最适用于 |
|-----------|----------|----------|
| 有明确错误信息 | 基础模板 | 大多数bug |
| 代码运行但输出错误 | 逻辑错误 | 算法bug |
| 间歇性失败 | 竞态条件 | 异步问题 |
| 性能慢 | 性能问题 | 优化 |
| 没有明确错误 | 橡皮鸭 | 理解问题 |
| 大型代码库 | 二分查找 | 缩小范围 |
---
## ✅ 调试前检查清单
使用任何模板前,先收集:
- [ ] 完整的错误信息和堆栈跟踪
- [ ] 能复现问题的最小代码
- [ ] 预期行为 vs 实际行为
- [ ] 环境详情(版本、操作系统)
- [ ] 你已经尝试过的方法
---
## 专业提示
1. **最小可复现示例**: 将代码精简到能展示bug的最小示例
2. **一次一个bug**: 不要在一个提示词中混合多个问题
3. **包含错误信息**: 总是粘贴完整的错误信息,而非仅描述
4. **版本信息**: 具体版本很重要(例如"React 19"而非"React")
5. **展示你的尝试**: 表明你已经做过努力;AI会提供更好的帮助
---
## 🔄 迭代调试
如果第一个解决方案不起作用:
我尝试了你的建议:
[你尝试的内容]
新的错误/问题: [新错误]
原始问题是: [原始问题]
接下来我应该尝试什么?
---
## 相关资源
- [重构模板](/docs/tools/prompt-engineering/templates/refactoring)
- [测试模板](/docs/tools/prompt-engineering/templates/testing)
---
## 🤝 贡献
有很好用的调试提示词?[分享给我们 →](https://github.com/IsaacZhaoo/ai-coding-club/discussions)
---
## FAQ
### 调试提示词应该包含哪些信息?
包含错误信息、相关代码、预期行为、实际行为以及环境信息。
### 如何避免提示词过长?
只提供最小可复现案例,并聚焦相关文件或函数。
### 怎么验证 AI 给出的修复?
复现问题、应用修复,并运行测试或最小脚本确认。