跳到主要內容

用 AI Debug 的迷思:當建議越改越糟時

現在許多開發者習慣用 AI 來協助 debug,但在實務上常遇到一種情況:
依照 AI 建議改了兩三輪後,錯誤仍然存在,甚至越改越複雜。

這種狀況其實有幾個常見的盲點,值得特別注意。


1. 先回到「上一個正常版本」

當你已經按照 AI 的方向修了好幾次但問題仍未解決時,最有效的第一步是:
回到上一個正常工作的版本,縮小問題來源。

許多 bug 並不是你正在看的那段程式碼造成的,而可能是:

  • 同事剛好修改了某個底層模組
  • 某個 shared component 產生 side effect
  • Auto Layout 層級重新 layout 時觸發 crash

如果只是盯著眼前的 function 修,反而容易被誤導。


2. AI 沒有看到你的整個專案

AI 通常只能根據你貼出的片段判斷問題,這代表它不知道:

  • 你的 view hierarchy 裡是否有其他 constraint 影響 layout
  • 某些 model 是否被 extension 修改過
  • 父層或子層邏輯是否干擾目前的行為
  • 整個專案採用的 concurrency 模型是什麼

因此,AI 可能會朝著完全錯誤的方向修,導致反覆修改卻無法解決。


3. Swift 6 例子:錯誤真正原因常不在你修改的那一行

例如開發者常遇到的錯誤:

passing closure as a 'sending' parameter risks causing data races

許多人(包含 AI)會開始從 function 內部調整,但這類錯誤真正的關鍵通常是:

傳進去的物件沒有實作 Sendable。

也就是說,你不是要改 function,而是要回頭檢查:

  • 傳入的 model / struct / class
  • 裡面是否有 non-Sendable 成員
  • 是否需要標註 @unchecked Sendable

如果 AI 沒看到相關檔案,自然很難找到正確方向。


結語:AI 是工具,不是預言機

AI 很適合用來:

  • 解釋概念
  • 協助產生測試程式
  • 提供重構建議
  • 釐清你已懷疑的方向

但在 debug 狀況下,以下三件事更重要:

  1. 回到上一版,縮小差異範圍。
  2. 釐清真正問題來源,而不是依 AI 指示一直 patch。
  3. 一次提供 AI 完整相關檔案,讓它看全貌。

當你把基本功與 AI 工具結合,debug 效率才會真正提升,而不是被建議牽著走。

留言