把报错贴给 AI 之前,我先做的三件事

  created  by  鱼鱼 {{tag}}
创建于 2026年10月12日 09:30:38 最后修改于 2026年10月14日 18:32:04

以前一看到红字堆栈,我的第一反应几乎是:全选、复制、粘贴进 AI 对话框,然后等它告诉我怎么改。

说实话,这个习惯有一段时间挺好用。很多常见错误,它一眼就能看出来,比我自己翻文档快。可后来我发现,有一半以上“贴完还是修不好”的情况,并不是 AI 不行,而是我把一坨还没整理过的信息甩给了它。它只能在这坨信息上猜,猜错了也不奇怪。

现在我会强迫自己先做三件小事,再决定要不要问、怎么问。这三件事加起来通常不超过五分钟,但后面少绕很多弯路。

第一件:自己先扫一眼堆栈

不是真的要自己把根因找出来,而是先回答两个很朴素的问题:

这条报错,我看得懂“是什么”吗?发生的位置,离我刚改的代码近吗?

很多堆栈很长,真正有用的往往就那么几行:异常类型、消息正文、以及“第一次进入我自己代码”的那一帧。框架内部、依赖库内部的几十行,一开始可以先折叠起来不看。

我以前常犯的错,是把整段堆栈原封不动贴出去,指望 AI 从噪声里捞出重点。它有时确实能捞到,有时会盯着某一帧框架代码大做文章,给出一套和我业务完全无关的“修复建议”。我照着改,项目更乱。

所以现在的习惯是:先自己标出“我认为最关键的三行”,再决定贴什么。贴的时候我会主动说:“请优先看我标出来的这几行,其余堆栈仅作参考。”效果比“这是报错,帮我看看”好太多。

贴报错前先扫一眼:标出关键几行再问

图:贴报错前先扫一眼:标出关键几行再问(原创示意图)

还有一类情况,扫一眼就能自己解决:拼写错误、少导了一个包、环境变量没设、端口被占用。这类问题去问 AI,不是不行,而是浪费一次对话的上下文,也浪费自己的注意力。能三十秒搞定的,就别开一场“诊断会”。

第二件:确认我能稳定复现

这条听起来像废话,但我自己确实踩过坑。

有一次测试环境偶发空指针,我把当时的日志贴给 AI。它分析得很认真,怀疑是并发下的时序问题,还建议加锁。我加了,问题好像少了,过两天又出现。后来才发现,是某次部署漏了配置,只影响部分实例——根因根本不是并发。

如果我当时先花两分钟确认:同一输入、同一环境,能不能稳定再来一次? 后面那一串“看起来很高级”的并发讨论,根本不会发生。

所以现在我问自己三句:

  • 我能不能用同样的操作再触发一次?

  • 是本地、测试,还是只有线上?

  • 最近有没有改过相关代码、依赖或配置?

如果复现不稳定,我会先把“偶发”这两个字写进问题里,并补充出现频率、是否跟某个接口/用户有关。AI 对“偶发”和“必现”的推理路径差很多;你不说,它默认你给的是稳定场景。

复现的过程里,我还会顺手做一个小隔离:能不能写一个最小示例,或者至少把无关模块先绕开?最小复现不一定每次都做得出来,但哪怕缩小一半范围,贴出去的信息质量也会高一截。

第三件:把“上下文名片”写好再提问

这是我改动最大、也最值的一步。

以前我的提问经常是:“报错如下,怎么修?”后面贴一大段堆栈。现在我会在堆栈前面加一张很短的“名片”,大概包括:

  • 语言 / 框架 / 关键依赖的版本(能写精确就写精确)

  • 我刚做了什么(升级、改接口、重构、换环境……)

  • 我已经排除过什么(比如“不是空配置,配置文件里确实有这个键”)

  • 我希望它输出什么(只解释原因 / 给修改方案 / 给排查步骤)

最后这一条特别重要。你不说,它常常直接甩一段“完整修复代码”。可有时候我只想理解原因,自己改;有时候我要的是排查清单,不是上来就改生产相关逻辑。把期望说清楚,比堆更多日志更有效。

提问前的三件事:扫堆栈、确认复现、写清上下文

图:提问前的三件事:扫堆栈、确认复现、写清上下文(原创示意图)

我还发现一个反直觉的点:信息不是越多越好。把整个应用日志、整份配置文件、半个模块的源码一股脑贴进去,AI 的注意力会被稀释。我现在宁可少贴,但每条都相关;缺了它会问,我再补,比一次性倾倒强。

一个对比:同样的报错,两种贴法

有一次我在本地起服务,报了一个依赖注入相关的错误。两种贴法,结果差很多。

糊弄贴法: “启动报错了,帮我看看” + 完整堆栈。

它当时给的方向是“检查某某注解有没有漏写”,我顺着翻了半天,注解没问题。

整理后的贴法: 先写明框架版本、这是一次依赖升级之后出现的、我已经确认相关 Bean 的注解还在;然后只贴异常类型 + 消息 + 进入我代码的两帧;最后问:“更可能是版本不兼容,还是配置问题?请先给判断依据,再给下一步排查。”

第二次它很快把注意力放到了版本变更上,让我去对升级说明里的 breaking change。一对,果然是某个自动配置条件变了。

同一次报错,差别几乎全在“我有没有先做那三件事”。

什么时候可以“偷懒”直接贴

我也不是每次都走完整流程。下面这些情况,我会允许自己快一点:

  • 报错信息本身极短、极明确(比如某个命令行工具直接告诉你缺哪个参数)

  • 我刚改过的就那几行,堆栈也正好指到那里

  • 这是我熟悉的老问题,只是想确认一下修法有没有更新

反过来,下面这些情况,我几乎强制自己走三步:

  • 堆栈很长,而且大部分在框架内部

  • 只在某个环境出现

  • 最近改动很多,说不清是哪一次引入的

  • 涉及数据、权限、并发——猜错代价大

什么时候可以快问,什么时候必须先整理

图:什么时候可以快问,什么时候必须先整理(原创示意图)

多问一句“你还需要什么信息”

养成整理习惯之后,我还会在问题末尾加一句:“如果信息不够,请先列出你还需要我补充什么,再开始给方案。”

这句话有两个好处。一是它会更老实地说“我需要看某某配置 / 某段代码”,而不是硬猜;二是逼我把排查变成对话,而不是一次性赌对。很多时候,真正修好问题的,是第二轮、第三轮补充之后,而不是第一轮那个看起来很完整的答案。

我怎么判断“已经够清楚了”

做完三件事,我还会快速过一遍自己的提问草稿,问自己:

  • 一个完全不了解这个项目的人,只看我这段文字,能不能大致明白出了什么事?

  • 我有没有把“现象”和“我的猜测”分开写?混在一起的时候,AI 很容易顺着我的猜测往下编。

  • 有没有一句是情绪宣泄而不是信息?(比如“怎么又挂了”“上次也这样”)情绪可以有,但别占地方。

如果这三条里有两条过不去,我就再改两分钟。改完再发。这个习惯一开始有点拧巴,做多了就变成肌肉记忆了:不是追求完美提问,而是避免把半生不熟的问题丢出去,然后在错误的方向上越聊越远。

还有一点很现实:整理过的问题,即使最后没问 AI、自己也想明白了,那三分钟也值。因为整理的过程,本身就是在缩小问题空间。AI 加速的是搜索和联想,缩小空间这件事,还是得我先动手。

最后

把报错贴给 AI,本身没什么错。错的是把“粘贴”当成了思考的替代品。

我现在把那三件事当成一个很小的仪式:扫一眼、确认能复现、写清名片。仪式感谈不上,但节奏对了——先自己降低噪声,再让 AI 在干净的信号上帮我加速。 这样用下来,它更像一个靠谱的结对对象,而不是一个“我把锅甩给你”的垃圾桶。

如果你也经常觉得“AI 修 bug 不稳”,不妨先别急着换模型、换工具。试试在按下粘贴之前,给自己三分钟。这三分钟,往往比多问两轮更省时间。

评论区
评论
{{comment.creator}}
{{comment.createTime}} {{comment.index}}楼
评论

把报错贴给 AI 之前,我先做的三件事

把报错贴给 AI 之前,我先做的三件事

以前一看到红字堆栈,我的第一反应几乎是:全选、复制、粘贴进 AI 对话框,然后等它告诉我怎么改。

说实话,这个习惯有一段时间挺好用。很多常见错误,它一眼就能看出来,比我自己翻文档快。可后来我发现,有一半以上“贴完还是修不好”的情况,并不是 AI 不行,而是我把一坨还没整理过的信息甩给了它。它只能在这坨信息上猜,猜错了也不奇怪。

现在我会强迫自己先做三件小事,再决定要不要问、怎么问。这三件事加起来通常不超过五分钟,但后面少绕很多弯路。

第一件:自己先扫一眼堆栈

不是真的要自己把根因找出来,而是先回答两个很朴素的问题:

这条报错,我看得懂“是什么”吗?发生的位置,离我刚改的代码近吗?

很多堆栈很长,真正有用的往往就那么几行:异常类型、消息正文、以及“第一次进入我自己代码”的那一帧。框架内部、依赖库内部的几十行,一开始可以先折叠起来不看。

我以前常犯的错,是把整段堆栈原封不动贴出去,指望 AI 从噪声里捞出重点。它有时确实能捞到,有时会盯着某一帧框架代码大做文章,给出一套和我业务完全无关的“修复建议”。我照着改,项目更乱。

所以现在的习惯是:先自己标出“我认为最关键的三行”,再决定贴什么。贴的时候我会主动说:“请优先看我标出来的这几行,其余堆栈仅作参考。”效果比“这是报错,帮我看看”好太多。

贴报错前先扫一眼:标出关键几行再问

图:贴报错前先扫一眼:标出关键几行再问(原创示意图)

还有一类情况,扫一眼就能自己解决:拼写错误、少导了一个包、环境变量没设、端口被占用。这类问题去问 AI,不是不行,而是浪费一次对话的上下文,也浪费自己的注意力。能三十秒搞定的,就别开一场“诊断会”。

第二件:确认我能稳定复现

这条听起来像废话,但我自己确实踩过坑。

有一次测试环境偶发空指针,我把当时的日志贴给 AI。它分析得很认真,怀疑是并发下的时序问题,还建议加锁。我加了,问题好像少了,过两天又出现。后来才发现,是某次部署漏了配置,只影响部分实例——根因根本不是并发。

如果我当时先花两分钟确认:同一输入、同一环境,能不能稳定再来一次? 后面那一串“看起来很高级”的并发讨论,根本不会发生。

所以现在我问自己三句:

如果复现不稳定,我会先把“偶发”这两个字写进问题里,并补充出现频率、是否跟某个接口/用户有关。AI 对“偶发”和“必现”的推理路径差很多;你不说,它默认你给的是稳定场景。

复现的过程里,我还会顺手做一个小隔离:能不能写一个最小示例,或者至少把无关模块先绕开?最小复现不一定每次都做得出来,但哪怕缩小一半范围,贴出去的信息质量也会高一截。

第三件:把“上下文名片”写好再提问

这是我改动最大、也最值的一步。

以前我的提问经常是:“报错如下,怎么修?”后面贴一大段堆栈。现在我会在堆栈前面加一张很短的“名片”,大概包括:

最后这一条特别重要。你不说,它常常直接甩一段“完整修复代码”。可有时候我只想理解原因,自己改;有时候我要的是排查清单,不是上来就改生产相关逻辑。把期望说清楚,比堆更多日志更有效。

提问前的三件事:扫堆栈、确认复现、写清上下文

图:提问前的三件事:扫堆栈、确认复现、写清上下文(原创示意图)

我还发现一个反直觉的点:信息不是越多越好。把整个应用日志、整份配置文件、半个模块的源码一股脑贴进去,AI 的注意力会被稀释。我现在宁可少贴,但每条都相关;缺了它会问,我再补,比一次性倾倒强。

一个对比:同样的报错,两种贴法

有一次我在本地起服务,报了一个依赖注入相关的错误。两种贴法,结果差很多。

糊弄贴法: “启动报错了,帮我看看” + 完整堆栈。

它当时给的方向是“检查某某注解有没有漏写”,我顺着翻了半天,注解没问题。

整理后的贴法: 先写明框架版本、这是一次依赖升级之后出现的、我已经确认相关 Bean 的注解还在;然后只贴异常类型 + 消息 + 进入我代码的两帧;最后问:“更可能是版本不兼容,还是配置问题?请先给判断依据,再给下一步排查。”

第二次它很快把注意力放到了版本变更上,让我去对升级说明里的 breaking change。一对,果然是某个自动配置条件变了。

同一次报错,差别几乎全在“我有没有先做那三件事”。

什么时候可以“偷懒”直接贴

我也不是每次都走完整流程。下面这些情况,我会允许自己快一点:

反过来,下面这些情况,我几乎强制自己走三步:

什么时候可以快问,什么时候必须先整理

图:什么时候可以快问,什么时候必须先整理(原创示意图)

多问一句“你还需要什么信息”

养成整理习惯之后,我还会在问题末尾加一句:“如果信息不够,请先列出你还需要我补充什么,再开始给方案。”

这句话有两个好处。一是它会更老实地说“我需要看某某配置 / 某段代码”,而不是硬猜;二是逼我把排查变成对话,而不是一次性赌对。很多时候,真正修好问题的,是第二轮、第三轮补充之后,而不是第一轮那个看起来很完整的答案。

我怎么判断“已经够清楚了”

做完三件事,我还会快速过一遍自己的提问草稿,问自己:

如果这三条里有两条过不去,我就再改两分钟。改完再发。这个习惯一开始有点拧巴,做多了就变成肌肉记忆了:不是追求完美提问,而是避免把半生不熟的问题丢出去,然后在错误的方向上越聊越远。

还有一点很现实:整理过的问题,即使最后没问 AI、自己也想明白了,那三分钟也值。因为整理的过程,本身就是在缩小问题空间。AI 加速的是搜索和联想,缩小空间这件事,还是得我先动手。

最后

把报错贴给 AI,本身没什么错。错的是把“粘贴”当成了思考的替代品。

我现在把那三件事当成一个很小的仪式:扫一眼、确认能复现、写清名片。仪式感谈不上,但节奏对了——先自己降低噪声,再让 AI 在干净的信号上帮我加速。 这样用下来,它更像一个靠谱的结对对象,而不是一个“我把锅甩给你”的垃圾桶。

如果你也经常觉得“AI 修 bug 不稳”,不妨先别急着换模型、换工具。试试在按下粘贴之前,给自己三分钟。这三分钟,往往比多问两轮更省时间。


把报错贴给 AI 之前,我先做的三件事2026-10-14鱼鱼

{{commentTitle}}

评论   ctrl+Enter 发送评论