AI 编程与智能体

[Vibe Coder #6] 昨天还能用,今天却不行了,明明没改代码,为什么?

“我一行代码都没动,但昨天还运行正常的应用今天却不行了。”这是 Vibe Coding 社区最常见的抱怨,也是最让人觉得神秘的情况。看起来像闹鬼,但实际上嫌疑人就那么几个。按顺序排查,大多数问题上午就能抓到元凶…

4 分钟阅读
[Vibe Coder #6] 昨天还能用,今天却不行了,明明没改代码,为什么? 封面图

“我一行代码都没动,但昨天还运行正常的应用今天却不行了。”这是 Vibe Coding 社区最常见的抱怨,也是最让人觉得神秘的情况。看起来像闹鬼,但实际上嫌疑人就那么几个。按顺序排查,大多数问题上午就能抓到元凶。

首先要纠正一个前提。“什么都没改”只意味着“我没改自己的代码”。我的应用并不是在真空中运行的,它依赖浏览器、数百个外部库、其他公司的服务器(例如 OpenAI、Supabase)以及计费方案。**即使我什么都不做,世界也会变化。**这一篇就来列出这些会变化的东西。

嫌疑人 1:浏览器缓存——你看到的是旧副本

浏览器为了提速,会保存下载过的文件并重复使用。这份保存的数据就是缓存。当应用已经换成新版本,浏览器却坚持使用旧副本时,问题就出现了。新旧代码混在一起,行为自然变得异常。

好在确认方法非常简单:**在无痕窗口(隐私浏览窗口)中打开。**无痕窗口不会使用缓存,所以如果在那里正常运行,嫌疑人就是缓存。通过强制刷新(Mac 为 Cmd+Shift+R,Windows 为 Ctrl+Shift+R)忽略缓存并重新下载即可解决。之所以先做这个 30 秒测试,是因为出人意料地多的问题到这里就结束了。

嫌疑人 2:依赖——别人的代码变了

我的应用大部分代码其实并不属于我。登录、绘制界面、日期计算等通用功能,使用的是全球开发者创建并公开的。通常会有数百个库相互关联,我们把它们称为依赖。项目目录中的那个巨大node_modules文件夹,就是它们的仓库。

问题在于,这些库会各自更新。如果你在昨天到今天之间把项目移到另一台电脑、重新安装了某些东西,或者 AI 添加新库时连带升级了原有库,那么即使代码没变,脚下的地面也变了。症状通常是突然出现陌生的构建错误。这时,把完整错误信息和“依赖可能在昨天之后发生了变化,请帮我确认”一起发给 AI 即可。照用第 5 篇学到的沟通方法。

嫌疑人 3:外部服务——别人的服务器出问题了

我的应用依赖的外部服务都运行在其他公司的服务器上。别人的服务器会故障、维护,也会更改策略。

  • 服务中断:OpenAI、Supabase、Vercel 等服务都会维护状态页面(status page)。搜索“OpenAI status”即可立即确认当前是否发生故障。如果确实发生了,我什么也做不了,只能等待。
  • 额度与过期:这是更安静的嫌疑人。免费额度用完、免费方案超出月度用量,或者登记的银行卡过期。服务会在今天悄悄收回截至昨天的好意。打开各服务控制台中的 Usage 和 Billing 菜单,马上就能看到。

嫌疑人 4:其实是昨天的自己——改了什么东西

最后一个嫌疑人,是那个我们不愿承认的人。也许睡前改了“一个小地方”,或者让 AI 修改时牵连了比预期更多的文件。好在第 3 篇介绍的 Git 保存着不在场证明。对 AI 说“显示昨天之后的提交记录和改动文件”,事情就结束了。记录比记忆更诚实。

昨天能用、今天却不行时的排查流程图:依次进行无痕窗口测试、检查 Git 记录、确认外部服务状态、收集错误
排查要从成本最低的开始。30 秒无痕窗口测试永远是第 1 步

排查顺序:从成本最低的开始

关键在顺序:先做便宜又快速的检查,再做昂贵又耗时的检查。

  1. 无痕窗口测试(30 秒):能用就是缓存问题。强制刷新即可结案。
  2. 检查 Git 记录(1 分钟):“昨天之后改了什么?”如果有变化,那就是最有力的嫌疑人。
  3. 外部服务状态与用量(3 分钟):检查 status 页面以及控制台中的 Usage、Billing。
  4. 收集错误后让 AI 调查(之后):如果前三项都排除,按照第 5 篇的流程收集浏览器控制台和服务器日志,交给 AI 调查。

跳过这个顺序,直接从第 4 步开始,很容易让 AI“修复”原本正常的代码,反而制造真正的问题。修改代码永远是最后的手段。

一幅插图:文字“NOTHING CHANGED THE WORLD DID”旁,标有 BROWSER CACHE、LIBRARIES、EXTERNAL SERVICES、BILLING PLAN 的地壳板块围绕着一座保持不变的代码岛移动
即使我的代码一动不动,脚下的板块也在持续移动

总结

  • “什么都没改”只意味着“我没改自己的代码”。浏览器缓存、库、外部服务和方案都在不断变化。
  • 如果在无痕窗口中正常运行,就是缓存问题。强制刷新即可解决。
  • 陌生的构建错误突然出现时,先怀疑依赖发生了变化。
  • 外部服务的 status 页面以及 Usage、Billing 菜单值得收藏。
  • 排查要从成本最低的开始:无痕窗口 → Git 记录 → 外部状态 → 收集日志后让 AI 调查。最后才修改代码。

下一篇讨论所有人都害怕的话题:账单爆炸。我们将介绍 AI API、DB、托管费用分别按照什么结构计费,以及如何设置从源头阻止爆炸的安全措施。

延伸阅读