A.3 问题解决类模板
本节提供排查问题和寻求帮助的 Prompt 模板,覆盖错误排查、技术选型、概念解释等场景。
模板一:运行时错误排查
适用于:代码报错、程序崩溃、控制台报红
markdown
## 错误信息
运行时遇到以下错误:[完整粘贴错误信息,包括堆栈跟踪]
## 触发场景
**操作步骤**:
1. [第一步做了什么]
2. [第二步做了什么]
3. [然后就报错了]
**触发频率**:[每次都报错/偶尔报错/特定条件下报错]
## 相关代码
错误指向的代码:
```[语言]
[粘贴错误信息中提到的代码,以及上下文]环境信息
- 运行环境:[浏览器版本/Node.js 版本/Python 版本]
- 框架版本:[React 18/Vue 3/...]
- 操作系统:[Windows/Mac/Linux]
已尝试的方法
- [尝试1]:结果 [成功/失败/部分解决]
- [尝试2]:结果 [成功/失败/部分解决]
请帮我
- 分析错误的根本原因
- 给出修复方案
- 解释为什么会出现这个问题(帮助我理解)
### 填写示例
```markdown
## 错误信息
运行时遇到以下错误:TypeError: Cannot read properties of undefined (reading 'map') at TaskList (TaskList.tsx:15:23) at renderWithHooks (react-dom.development.js:14985:18) at mountIndeterminateComponent (react-dom.development.js:17811:13)
## 触发场景
**操作步骤**:
1. 打开应用首页
2. 页面加载时直接报错
3. 任务列表没有显示出来
**触发频率**:每次刷新页面都报错
## 相关代码
错误指向的代码:
```tsx
// TaskList.tsx
function TaskList({ tasks }) {
return (
<ul>
{tasks.map(task => ( // 第 15 行
<li key={task.id}>{task.title}</li>
))}
</ul>
);
}
// App.tsx 中的调用
function App() {
const [tasks, setTasks] = useState(); // 注意这里
return <TaskList tasks={tasks} />;
}环境信息
- 运行环境:Chrome 120
- 框架版本:React 18.2.0 + TypeScript 5.0
- 操作系统:Mac
已尝试的方法
- 检查 tasks 数据:console.log 发现是 undefined
- 刷新页面:问题依旧
请帮我
- 分析错误的根本原因
- 给出修复方案
- 解释为什么会出现这个问题
## 模板二:逻辑错误分析
适用于:代码能跑但结果不对
```markdown
## 问题描述
代码可以运行,但结果不符合预期。
**期望行为**:[应该是什么结果]
**实际行为**:[实际得到什么结果]
## 测试用例
| 输入 | 期望输出 | 实际输出 | 是否正确 |
|-----|---------|---------|---------|
| [输入1] | [期望1] | [实际1] | ❌ |
| [输入2] | [期望2] | [实际2] | ❌ |
| [输入3] | [期望3] | [实际3] | ✅ |
## 相关代码
```[语言]
[粘贴相关代码]我的分析
我怀疑问题可能出在:[你的猜测]
请帮我
- 找出逻辑错误所在
- 解释为什么当前逻辑会产生错误结果
- 给出修复后的代码
### 填写示例
```markdown
## 问题描述
代码可以运行,但结果不符合预期。
**期望行为**:计算购物车总价时,满 100 减 20
**实际行为**:无论金额多少,都减了 20
## 测试用例
| 输入(商品总价) | 期望输出 | 实际输出 | 是否正确 |
|---------------|---------|---------|---------|
| 150 | 130 | 130 | ✅ |
| 80 | 80 | 60 | ❌ |
| 100 | 80 | 80 | ✅ |
## 相关代码
```javascript
function calculateTotal(items) {
let total = items.reduce((sum, item) => sum + item.price, 0);
// 满 100 减 20
if (total > 100) {
total = total - 20;
} else {
total = total - 20; // 问题可能在这里?
}
return total;
}我的分析
我怀疑问题可能出在:else 分支也减了 20,应该是复制粘贴时忘记删掉
请帮我
- 确认我的分析是否正确
- 给出修复后的代码
- 建议如何避免这类复制粘贴错误
## 模板三:技术选型咨询
适用于:不知道选什么库、框架、工具
```markdown
## 项目背景
**项目类型**:[简述项目是做什么的]
**技术栈**:[当前使用的技术]
**团队情况**:[个人项目/团队规模/技术水平]
## 选型需求
我需要选择一个 [类型] 来实现 [功能]。
**核心需求**:
- [需求1]
- [需求2]
- [需求3]
**考虑因素**:
| 因素 | 重要程度 | 说明 |
|-----|---------|------|
| 学习成本 | 高/中/低 | [说明] |
| 社区活跃度 | 高/中/低 | [说明] |
| 性能 | 高/中/低 | [说明] |
| 包体积 | 高/中/低 | [说明] |
| 长期维护 | 高/中/低 | [说明] |
## 已知候选(可选)
我目前了解到的选项有:
1. [选项A]:[简单印象]
2. [选项B]:[简单印象]
3. [选项C]:[简单印象]
## 请帮我
1. 补充我可能遗漏的候选方案
2. 从多个维度对比各方案的优缺点
3. 给出推荐方案及理由
4. 说明什么情况下应该选择其他方案填写示例
markdown
## 项目背景
**项目类型**:个人博客网站
**技术栈**:Next.js + TypeScript
**团队情况**:个人项目,前端熟练,后端初学
## 选型需求
我需要选择一个数据库方案来存储博客文章。
**核心需求**:
- 存储文章内容(Markdown 格式)
- 支持分类和标签
- 能按时间排序查询
**考虑因素**:
| 因素 | 重要程度 | 说明 |
|-----|---------|------|
| 学习成本 | 高 | 后端不熟,希望上手简单 |
| 免费额度 | 高 | 个人项目,不想花钱 |
| 与 Next.js 集成 | 中 | 希望有现成教程 |
| 性能 | 低 | 博客访问量不大 |
## 已知候选
我目前了解到的选项有:
1. Supabase:听说是 Firebase 替代品
2. MongoDB Atlas:NoSQL 数据库
3. PlanetScale:MySQL 云服务
## 请帮我
1. 补充我可能遗漏的候选方案
2. 从多个维度对比各方案的优缺点
3. 给出推荐方案及理由
4. 说明什么情况下应该选择其他方案模板四:概念解释
适用于:不理解某个技术概念
markdown
## 想了解的概念
我想理解 [概念名称]。
## 当前困惑
**我目前的理解**:[你现在认为它是什么]
**困惑的地方**:[哪里不理解]
## 希望的解释方式
**技术深度**:[只要知道怎么用/想了解原理/需要深入细节]
**类比偏好**:[喜欢生活化类比/喜欢技术类比/直接解释就好]
## 相关背景
**我的技术背景**:[熟悉什么技术/语言]
**为什么要了解这个**:[应用场景]
## 请帮我
1. 用通俗的语言解释这个概念
2. 给出一个简单的代码示例
3. 说明什么时候会用到它
4. 指出常见的理解误区填写示例
markdown
## 想了解的概念
我想理解 React 中的 useEffect。
## 当前困惑
**我目前的理解**:好像是用来处理"副作用"的,但不知道什么算副作用
**困惑的地方**:
- 什么时候需要用 useEffect?
- 依赖数组是干什么的?
- 为什么有时候会"无限循环"?
## 希望的解释方式
**技术深度**:只要知道怎么用就行,原理以后再说
**类比偏好**:喜欢生活化类比
## 相关背景
**我的技术背景**:会基础 JavaScript,正在学 React
**为什么要了解这个**:想在组件加载时获取数据
## 请帮我
1. 用通俗的语言解释 useEffect
2. 给出"获取数据"的代码示例
3. 说明依赖数组的作用
4. 解释为什么会"无限循环"以及如何避免模板五:代码审查
适用于:让 AI 检查代码质量
markdown
## 审查目标
请帮我审查以下代码:
```[语言]
[粘贴代码]审查维度
请从以下维度检查:
- [ ] 功能正确性:逻辑是否正确,边界情况是否处理
- [ ] 安全性:是否有安全隐患(XSS、SQL注入等)
- [ ] 性能:是否有明显的性能问题
- [ ] 可读性:命名是否清晰,结构是否合理
- [ ] 可维护性:是否容易扩展和修改
- [ ] 错误处理:异常情况是否妥善处理
代码背景
这段代码的作用:[简述功能] 使用场景:[在什么情况下运行]
输出格式
请按以下格式输出:
- 问题清单:列出发现的问题,按严重程度排序
- 改进建议:针对每个问题给出具体建议
- 优化后代码:给出改进后的完整代码
## 精简版:快速提问模板
当问题比较简单时,可以用这个精简版:
```markdown
**问题**:[一句话描述问题]
**背景**:[必要的上下文]
**代码**:
```[语言]
[相关代码]期望:[你希望得到什么帮助]
## 提问技巧:如何让回答更有用
### 技巧一:先说结论,再给细节
```markdown
❌ 我有一个 React 项目,用的是 TypeScript,然后我在做一个表单验证...
(AI 读了半天还不知道问题是什么)
✅ 我的表单验证代码报错了。
技术栈是 React + TypeScript,错误信息是 [xxx]。技巧二:给出最小复现代码
不要贴整个文件,只贴能复现问题的最小代码。这样 AI 更容易定位问题。
技巧三:说明已经尝试过什么
这能帮助 AI 避免给出你已经试过的无效方案。
常见填写误区
| 误区 | 问题 | 正确做法 |
|---|---|---|
| 只说"不工作" | AI 不知道具体症状 | 描述期望 vs 实际的差异 |
| 错误信息只截一半 | 丢失关键信息 | 完整粘贴,包括堆栈跟踪 |
| 不给代码 | AI 只能猜测 | 贴出相关代码片段 |
| 概念问题太宽泛 | "解释一下 JavaScript" | 具体到某个点,如"解释闭包" |
本节要点
- ✅ 错误排查:完整错误信息 + 触发步骤 + 相关代码 + 已尝试方法
- ✅ 逻辑错误:用测试用例展示"期望 vs 实际"
- ✅ 技术选型:明确需求优先级 + 列出考虑因素
- ✅ 概念解释:说明当前理解和困惑点 + 期望的解释深度
