碰到 Bug 第一反应是想砸键盘?换种思路:把调试当成和 AI 的一次「会诊」。你提供线索(报错、复现步骤、相关代码),AI 帮你定位、解释根因、给修复方案,最后你拍板。本教程给你一套可复用的排错流程。
🐞 本教程适合:所有写代码的人。无论你用 Cursor、Claude 还是网页版 ChatGPT,这套「喂料姿势」都通用。
先搞懂:AI 擅长什么、不擅长什么
AI 强在读代码、解释报错、列可能原因、给改法;但它看不到你的运行时环境、不知道你没贴出的代码、也不会为你的线上事故负责。所以:好结果 = 你给足上下文 + 它来分析 + 你做判断与验证。
| AI 能做的 | 你必须自己做的 |
|---|---|
| 解释 traceback 每一行在说什么 | 判断是否信、是否适你的场景 |
| 列出 3-5 个可能根因 | 用最小复现逐一排除 |
| 给出修复 diff | 读懂改动、跑测试验证 |
Step 1:先能稳定复现
1 复现不了,就别怪 AI 看不懂
调试第一步永远是「稳定复现」。把问题缩到最小:
1. 记录:输入是什么、期望结果、实际结果
2. 缩小:删掉无关代码,留下能触发 Bug 的最小片段
3. 固定环境:Python/依赖版本、操作系统、是否并发
最小复现是金:你能用 10 行代码复现的问题,AI 十有八九能秒解;贴 2000 行还带「偶尔才出」的,谁都头大。
Step 2:把报错「喂」给 AI 的正确姿势
2 一次给全,别只贴一行
新手常犯的错:只甩一句「TypeError 咋办」。有效喂料要包含三件套:
【完整报错】把 traceback 从头贴到尾(含行号)
【相关代码】出错函数附近 20-30 行
【我做过的尝试】已排除哪些可能
例:
报错:IndexError: list index out of range (line 42)
代码:items = load(); print(items[user_id])
背景:user_id 来自表单,可能越界
💡 在 Cursor/Claude Code 里直接问当前文件「为什么这里报错」,它们能读到上下文,比复制粘贴更省事。
Step 3:让 AI 解释根因
3 先懂「为什么」,再谈「怎么改」
别急着要补丁,先让 AI 用大白话讲清楚:
提示词:
「请用通俗的话解释这个报错为什么发生,
并指出代码里具体哪一行、什么前提假设被打破了。
不要直接给代码,先讲清楚根因。」
理解根因比拿到补丁更重要:根因清楚了,你可能自己就有更好解法,也不会被 AI 的「看似修好」骗过。
Step 4:让 AI 给修复,但你要先读懂
4 AI 写的改动,先审再合
让它给最小改动,并说明每处为什么:
提示词:
「给出最小改动来修复,并逐行说明:
1) 改了哪里 2) 为什么这样改 3) 会不会引入新问题」
🔍 铁律:没读懂的 diff 不合并。AI 可能顺手改了别的逻辑或引入新依赖,你才是责任人。
Step 5:让 AI 补一个回归测试
5 修好不算完,证明它不再犯
最容易被忽略的一步:写个测试把 Bug 锁死,下次改动撞到会立刻报警。
# 用 pytest,把「当时出错的情况」变成用例
def test_user_id_out_of_range():
with pytest.raises(IndexError):
get_item_by_id(bad_id) # 越界应被显式处理而非崩溃
✅ 好习惯:修完跑全套测试(pytest / npm test)。CI 里也要保留「测试不绿不许合并」的红线。
Step 6:当 AI 也卡住时
AI 给的方案都不灵?换思路:
1. 加日志/打印:在关键分支打点,看实际走了哪条路
2. 二分法:注释掉一半逻辑,逐步定位
3. 换模型/换问法:让它「假设你是资深专家,列出非常规根因」
4. 搜 issue / 源码:开源库的问题常有人踩过
安全红线:不要把密钥、生产数据库、含客户信息的代码贴给公网大模型。私有代码请用本地模型或企业版/私有化部署,并先脱敏。
常见问题速查
| 现象 | 大概率原因 & 解决 |
|---|---|
| AI 给的方案不灵 | 上下文不全;补最小复现再问 |
| 改完别处又炸了 | 缺回归测试;补用例锁死行为 |
| AI 一直绕圈 | 让它换非常规思路 / 加日志二分 |
| 怕泄露代码 | 换本地/企业版模型,先脱敏 |