出品 | 51CTO技术栈(微信号:blog51cto)
今天,一篇Reddit上的帖子走红了,光看题目就很有料:
Claude Opus 帮我解决了一个我四年来都找不到的“白鲸级 bug”
图片
发帖人是一位有 30 年经验的前 FAANG C++ 工程师,是团队里负责给bug清场的大佬级角色。
但这一次,他坦言被 Claude Opus “彻底震撼了”。
这个 Bug 有多棘手?它来自 4 年前的一次架构级重构,涉及约 6 万行代码。
虽然解决了一堆历史问题,却也悄悄埋下了一个极边缘的逻辑隐患:某个 shader 在特定条件下无法运行。
发帖人为此断断续续查了四年、投入了至少 200 小时,但始终无解。发帖人为此非常抓狂,但是又没到为了这个bug停止其他工作的地步。
直到 Claude Opus 4 出现。
他和 Claude 合作了几个小时,总共用了大约 30 个提示词、一次重启——就这样,这个被他称作“白鲸”的 bug,被成功捕获。
最终发现的问题不是代码写错了,而是:旧架构之所以能正常工作,是因为架构偶然性带来的结果,新架构改变了路径,却没人意识这种“偶然”被打破了——新架构根本没有容纳原本存在的那个边缘情况。
博主表示,之前陆续尝试过GPT-4.1、Gemini 2.5、Claude 3.7, 全部失败。
只有 Opus 4,找到了问题根源。
评论区有人质疑这是编故事:哪有 AI 能跨越 6 万行代码找出一个架构级的设计缺陷?
结果 OP 不仅一一回应,还把调试过程拆解得非常专业,让人不得不信服。
图片
Bug 本身有多难?——一场关于“巧合依赖”的架构谜题
发帖人没有贴出 bug 的完整代码,但从他的描述来看,这不是一个低级逻辑错误,而是架构重构后遗留的语义断裂问题。
具体表现是:一个 shader 在旧系统中能正常运行,在新系统中却悄无声息地失效了——没有崩溃、没有报错,只是“该运行的时候没跑起来”。
就像一位Reddit正如一位 Reddit 网友在评论区里说的那样:
“你以为它正常工作的地方,其实从技术上讲也没真的工作过。”
——这种 bug才是最让人崩溃的。
图片
这类问题有几个典型特征:
- 非显性错误:不会 crash,不报错,甚至连回归测试都可能漏掉;
- 重构遗留:结构改了,但没人意识到有些原本“刚好凑得上的逻辑”不再成立;
- 跨模块联动失效:shader、输入数据、调用链、调度顺序之间存在微妙的耦合关系,bug 隐藏在多层条件组合中。
这也解释了为什么 OP 自己断断续续排查了 200 小时,却始终没能定位。
当然,Claude 也不是“读完整个项目”后盲打命中。根据 OP 后续补充,它一共分析了 12 个文件、约 1 万行代码。
发帖人是怎么用 Claude 做到这一切的?——30余次prompt驱动的工程探索
Claude Opus 能做到这件事,离不开这位资深工程师一次次精确引导、取舍信息和及时的重启。
图片
评论区里有网友抛出了几个关键问题,发帖人也一一回应,我们得以看到他和 Claude 合作的完整路径。
图片
1.您最初是如何向Claude提出问题的?在每个阶段共享了哪些代码块或文件?
我最开始的 prompt 大概就 10 行,简要描述了这个问题的背景。
然后我把 Claude 指向顶层代码文件夹,里面有大约 100 万行代码。如果算上旧版本项目,整个目录下大约是 200 万行——我把旧代码复制到同一个工程目录下的 oldsrc/,这样 Claude 就能同时访问新旧架构。
后续 prompt 数量在 30 个左右,从 1 行到 1500 行不等,有些是 Claude 要我抓的日志(这些日志是它在代码中加了一堆 printf 后生成的,目的是更好地理解代码的执行流程),有些则是它分析逻辑、发现矛盾、纠正路径的结果。
除去日志类的提示词,我是这么写prompt的细节:“你现在走错方向了——仅仅把这个条件代码 <插入的代码> 限制在部分输入数据集上是没帮助的,因为 <解释原因>;还有这个条件 <插入的代码> 和那个条件 <插入的代码> 在 <解释某种数据场景> 下其实并不是互斥的,但你现在的假设是它们是互斥的。”
因为Claude有许多解决问题的路径,我之前已经尝试过了,而它也想尝试这些,但我知道那些路是死胡同。
2.Claude 是自动分析,还是靠你一步步带着?
A:Claude Code 会自动用 grep 找出它需要查看的文件。我根本不需要引导它,甚至连函数名都没说。
我通常会确保 VSCode 启动时所有文件都是关闭状态,否则它会过度集中在你打开的文件上,而不是做全面搜索。
3.关键突破的那一刻发生了什么?
A:它在真正找到问题之前尝试过很多方向。像所有 AI 一样,它经常说“我找到了!”但大部分时候是错的。
直到有一次它的修改既没有引入新问题,又解决了症状。我才回头仔细比对它改了什么,才发现:它识别出旧架构下能跑通的逻辑是“误打误撞”,而新架构改变后这条路径就断了。
4.Claude 跑偏了怎么办?“重启”是如何操作的?
A:我中间有一次重启,是因为它突然跑去“顺便修复”着色器里的矩阵乘法相关部分,我真不想花整天时间去算线性代数来验证那东西对不对。更何况问题的本质并不是这个 shader 表现不好,而是根本没有执行。
所以我就重启了它,并把它之前识别出问题相关的结果再喂给它。虽然我没特别告诉它“别动 GLSL(着色器语言)”,但之后它就确实没再碰了。
不搞神化:AI 依然相当于一个“高效但话多”的实习生
Opus 4 的强大无可否认,但这次案例真正震撼人的地方,不在于它“替代了谁”,而在于它如何协助一位资深工程师完成了一次精度极高的协作式调试。
“对于那些指导自己在做什么的人来说,人工智能是一个新同事。”
图片
发帖人在评论区坦言:
“在编写新代码这件事上,它顶多算是一个初级开发者。”
图片
无论是 AI 还是人类实习生,本质上都需要一位资深工程师持续陪跑。关键差别,不在于谁聪明,而在于谁更省你的时间。
他说得很直白:“你可以想一想,一个新人会多频繁跑来问你问题、发 Slack、被打回代码审查……Claude 也一样。”
他举了一个真实例子:
我最近做了一个全栈网站项目,总共用了大概 200 条 prompt。这和我带一个初级开发者是一样的预期——只是这个“200 次互动”,如果是初级开发者,可能会分布在 6 个月,而和 AI,只用了 3 天。
所以从速度上看,AI 无疑是更快的,但从“需要 tech lead 付出的指导精力”来说,和初级开发者并无二致。
所以 AI 的优势确实存在——速度快、响应快、不怕你烦它。
但开发者提出一个更令人深思的问题:
如果你是 tech lead,要扩大自己的能力范围,假设你有 6 个月做一个项目,你是愿意带 30 个初级开发者,还是一个不限次数提问的 AI 代理?你可能觉得这两种都可以选对吧?
那如果换成是 30 个高级开发者 vs. 一个 AI 呢?我肯定选 30 个高级开发者。我想不出谁会在这种情况下还选 AI。
因为从 技术带头人(tech lead)角度来看,AI 所需的管理成本,和一个新人的训练周期是同量级的。
写在最后:AI立大功将会越来越常见
评论区不少人分享和发帖者相似的经历。
一位网友写道:
最近在一次产品上线中发现了一个严重的 bug,它直接导致我们发给客户的结果变得毫无意义。
我们一开始调查后,以为找到了根本原因,结果继续深挖,竟然又发现了三个额外的根本原因。
也就是说,软件一共有四处逻辑错误,但它们原本刚好组合在一起“跑得很正常”——纯属巧合。
这次上线只是复制了其中三个 bug,而不是四个,于是整个逻辑就崩了,哈哈哈。
修复起来不轻松,但 Claude 3.7 帮了我不少忙。
我已经迫不及待想看看 Claude 4 会怎么评价这个离谱现场了。
图片
在AI不断进化的当下,AI 不仅是在“加速我们”,还要求我们必须适应新技术下的协同工作。
那么,AI有没有曾帮你解决过“白鲸级”的bug?如果你有 6 个月的项目期,是会选 30 个实习生,还是一个 Claude Opus 4?
参考链接:https://www.reddit.com/r/ClaudeAI/comments/1kvgg7s/claude_opus_solved_my_white_whale_bug_today_that