能,而且读堆栈是它的强项
Codex 读得懂报错:把完整的错误信息和相关代码给它,它能定位是哪一行、什么原因、怎么修。比人肉看堆栈快,尤其对不熟悉的栈(框架内部、第三方库)它常常一眼认出模式。
问法 1:贴完整的,别只贴最后一行
很多人只发「TypeError: xxx」,这少了上下文。正确做法是把整段 traceback(从 Traceback 到最后一行的那几屏)连同出错的文件、行号一起给。Codex 要的是「从哪抛出来、经过哪些调用」这条链,不是一句话结论。
问法 2:限定范围,别让它全网乱猜
「这个项目里为什么报错」太宽。改成「在 app.py 的 handler 里,rows 为 None 时为什么会崩,怎么防御」。范围越小,它越不会编一个看似合理的错因糊弄过去。
问法 3:让它给最小复现
如果报错偶发,让它写一个能稳定触发的最小代码片段(mock 掉外部依赖)。一旦能复现,根因就藏不住了。这一步也逼它把「猜测」变成「可验证」。
它解释完,你还要核实三处
第一,它说「第 42 行」时,你确认行号对得上当前代码——它可能看的是旧版本或不同分支。第二,它给的修复会不会引入新边界问题,比如把 None 判掉却漏了另一种空值。第三,如果是生产报错,先在测试环境验证,别直接上。Codex 擅长定位,但「这句就是根因」仍要你用复现或日志坐实。
一个省事习惯
跑任务时把报错原样粘进对话,别自己概括。你概括十次有九次漏了关键一行;原样贴,它自己提炼,比人转述准。报错这种东西,原文比摘要可靠。