AI 程式開發與代理

[Vibe Coder #6] 昨天可以,今天卻不行;明明沒動程式碼,為什麼?

「我連一行程式碼都沒動,但昨天還正常的 App 今天卻不能用了。」這是 Vibe Coding 社群最常見的抱怨,也是最讓人覺得神秘的情況。看起來像鬧鬼,但其實嫌疑犯就那幾個。依序調查,大多能在上午抓到元兇…

閱讀 4 分鐘
[Vibe Coder #6] 昨天可以,今天卻不行;明明沒動程式碼,為什麼? 封面圖

「我連一行程式碼都沒動,但昨天還正常的 App 今天卻不能用了。」這是 Vibe Coding 社群最常見的抱怨,也是最讓人覺得神秘的情況。看起來像鬧鬼,但其實嫌疑犯就那幾個。依序調查,大多能在上午抓到元兇。

首先要釐清一個前提。「什麼都沒改」只代表「我沒改自己的程式碼」。App 並不是在真空中執行,而是依賴瀏覽器、數百個外部函式庫、其他公司的伺服器(例如 OpenAI、Supabase),以及付費方案。**即使我什麼都不做,世界也會改變。**這一篇就來列出那些會變動的事物。

嫌疑犯 1:瀏覽器快取——你看到的是舊副本

瀏覽器為了提升速度,會儲存下載過的檔案並重複使用。這份儲存資料就是快取。當 App 已經換成新版本,瀏覽器卻堅持使用舊資料時,就會出問題。新舊程式碼混在一起,導致行為異常。

確認方法很簡單:**在無痕視窗(私密瀏覽視窗)中開啟。**無痕視窗不會使用快取,所以如果那裡正常,犯人就是快取。使用強制重新載入(Mac 為 Cmd+Shift+R,Windows 為 Ctrl+Shift+R)忽略快取並重新下載即可解決。之所以先做這個 30 秒測試,是因為意外地有很多事件到這裡就結束了。

嫌疑犯 2:相依性——別人的程式碼變了

App 裡大多數程式碼其實不是我寫的。登入、畫面繪製、日期計算等共通功能,會使用全球開發者製作並公開的函式庫。通常有數百個彼此牽連,我們稱它們為相依性。專案資料夾中的巨大node_modules資料夾,就是那座倉庫。

問題在於這些函式庫各自更新。如果你在昨天和今天之間把專案移到另一台電腦、重新安裝了某些東西,或 AI 加入新函式庫時連帶升級了既有函式庫,那麼即使程式碼沒變,腳下的土地也變了。症狀通常是突然出現陌生的建置錯誤。這時把完整錯誤訊息連同「相依性可能在昨天之後變了,請幫我確認」傳給 AI 就好。使用第 5 篇學到的傳達方式即可。

嫌疑犯 3:外部服務——別人的伺服器出問題了

App 所依賴的外部服務,都是在其他公司伺服器上執行。別人的伺服器會故障、維護,也會變更政策。

  • 服務中斷: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・代管服務費用各自如何計費,以及如何設定從源頭阻止爆炸的安全機制。

延伸閱讀