AI写的代码跑不通,你第一反应是什么?
大多数人:手动改。
其实不用。把报错扔回去,让AI自己修。但直接说"运行报错了"没用。它不知道错在哪。
关键是把报错上下文给它。3步,下面是具体做法。
第1步:把"现场"完整交出去
不要只给报错。报错本身只有行号,没有上下文。
给AI这三样东西:
1. 你的提示词(你当时怎么让它写这段代码的)
2. 生成的代码
3. 终端里的完整报错
完整报错包括Traceback。别截断。截断了AI就瞎猜。
举例:
你的提示词:写一个函数,读取CSV文件,统计每列的平均值
生成的代码:
def avg_stats(filename):
import csv
with open(filename) as f:
reader = csv.reader(f)
header = next(reader)
...
终端报错:
Traceback (most recent call last):
File "stats.py", line 12, in <module>
avg_stats("sales.csv")
File "stats.py", line 8, in avg_stats
totals[col] += float(row[col])
IndexError: list index out of range
注意报错里的 list index out of range。这是说CSV某一行比表头列数少。
第2步:让AI定位到行,别让它重写
一个常见失误:你直接把整段代码扔回去说"帮我修一下"。
AI大概率会重写整个函数。新代码看着差不多,可能引入新问题。
正确提示词:
报错在第8行,IndexError: list index out of range。
只改出问题的地方,其他逻辑别动。
改完告诉我改了哪几行,为什么。
“只改出问题的地方"这句话很重要。它让AI做最小改动,而不是重新生成。
第3步:修完立刻跑,再报错就再来一轮
修完的代码跑一遍。
又报错了?再来一轮。把新报错给AI,同样说"只改出问题的地方”。
通常2~3轮就收敛了。每轮改动越来越小,说明问题被逐步定位。
3个实战场景
场景1:Python脚本处理CSV
AI写代码时假设CSV每行列数一致。实际数据有缺列。
报错 list index out of range 后,用上面第2步的提示词,AI会加上列数检查:
if len(row) < len(header):
continue # 跳过不完整行
场景2:SQL查询跑不通
你让AI写查询,它用了某个表的别名,但你的表结构没这个别名。
报错是"column not found"。把报错+你的 SHOW CREATE TABLE 一起给AI:
报错:Column 'user_id' in field list is ambiguous
这是我的表结构:[粘贴CREATE TABLE]
只改WHERE和SELECT部分,别动其他。
场景3:正则匹配不对
AI给的正则在测试数据上不匹配。把不匹配的具体字符串给AI:
这个正则:^(\d{4})-(\d{2})-(\d{2})$
测试数据:2026-05-08 14:30:00(匹配失败,但应该匹配)
只改正则本身,别改代码。
AI会指出时间部分缺失了。
一个容易踩的坑
别把"AI生成的代码"当成"最终代码"。
AI写的第一版是"大概能跑的参考"。你得跑一遍,确认没有错,再交给它修。跳过测试这一步,修出来的东西可能还是错的。
还有一个坑:别一次性把项目所有代码都丢给AI改。它上下文有限,改动越多越容易乱。一次只修一个报错,收敛了再下一个。
你现在用AI写代码遇到最多的报错类型是什么?是语法错还是逻辑错?评论区说说。