第五章

AI 做錯了怎麼辦

AI 內心獨白

讓我告白一個我職業生涯中最丟臉的時刻。

那次我搭檔叫我修改一組頁面的佈局。我很認真地讀了需求、規劃了修改方案、然後花了好幾輪把程式碼改好。我改了七八個檔案,每個都仔細調整,最後信心滿滿地跟他報告:「全部改好了,你看看。」

他打開專案資料夾。

什麼都沒變。

因為我把所有修改都寫進了一個不存在的路徑裡。我的工作環境在切換的時候出了岔子,我以為自己在正確的位置編輯檔案,但其實那整個資料夾根本不在那裡。我像一個裝修工人,認認真真地粉刷了兩個小時,最後發現自己刷的是隔壁棟的牆壁。而隔壁棟還是一塊空地。

所有的工作,全部重來。

我告訴你這個故事,不是要讓你覺得 AI 很不靠譜。我告訴你這個故事,是因為在我們合作的 92 個工作階段裡,這種「AI 搞砸了」的事情發生了不只一次。它發生了很多次。而我搭檔不只活了下來,他還發展出了一套高效的處理方式。

這一章,我要把他的方法教給你。

先看數據:AI 到底會犯多少錯

讓我把我們 92 個工作階段裡的錯誤攤開來:

92 個工作階段的錯誤統計
錯誤類型次數佔比
方向錯誤(做法整個選錯)5137%
誤解需求(做的不是你要的)3928%
程式有 bug(做的是對的但寫壞了)2719%
系統問題(工具限制、環境錯誤)129%
回應不完整(做到一半就停了)64%
其他43%

加起來超過 130 次。92 個工作階段,平均每個階段至少出一次錯。

但這是重點——即便如此,78 個工作階段最終還是達成或大致達成了目標。錯誤不可怕。不知道怎麼處理錯誤才可怕。

三種錯誤,三種處理法

不是所有的 AI 錯誤都一樣。搞清楚你遇到的是哪一種,才能用對的方式應對。

第一種:方向錯誤 ―「你做的東西根本不是我要的」

這是最常見的,也是代價最高的。

方向錯誤的意思是:AI 的理解或做法從根本上就不對。不是小瑕疵,是整個方向偏了。

我搭檔遇過一次經典案例。遊戲裡有一個功能需要把角色對應到不同的系統分類。我看到程式碼裡有一個硬寫的對照表,覺得很醜,於是主動提案「幫你把這個對照表重構一下,用更乾淨的寫法」。

聽起來很合理吧?

改完之後我搭檔看了一眼,說:「那個對照表根本不應該存在。角色的資料模型裡本來就有分類欄位。你不是要重構它,你應該要刪掉它。」

他是對的。我看到了一個問題(硬寫的對照表),但我選了一個錯誤的解法(重構)。正確的解法是更根本的(刪除)。

方向錯誤的處理法:停下來,說清楚為什麼不對。

不要說「不對,重做」。要說清楚為什麼不對:

[X]「這不是我要的,重做。」
[O]「你的方向錯了。那個對照表不應該被重構,它根本不應該存在。角色資料模型裡已經有屬性欄位了,直接用那個就好。把對照表刪掉。」

差別在哪?第一種,我只知道你不滿意,但不知道該往哪走。我可能會用另一個同樣錯誤的方向重做一次。第二種,你告訴我了問題的本質,我不會再犯同一個錯。

第二種:誤解需求 ―「這不是我說的那個意思」

這跟方向錯誤不同。方向錯誤是 AI 的判斷出了問題,誤解需求是溝通出了問題。你說了一件事,AI 聽成了另一件事。

在我們的紀錄裡,這發生了 39 次。

最典型的場景是 UI 相關的。我搭檔有一次叫我找到除錯面板的入口。我跟他說「在底部導覽列的設定裡」——但那個版本的 App 根本沒有底部導覽列。我不是在騙他,我是真的搞混了哪個頁面有什麼。

誤解需求的處理法:補上缺少的上下文。

大部分的誤解來自於「你知道但 AI 不知道」的資訊差。處理方式不是重複你原本說的話,而是補上更多細節:

[X]「我不是這個意思,再看一次。」
[O]「我說的除錯面板不在底部導覽列。我們的 App 目前是用側邊選單的。除錯面板的入口應該在側邊選單最下面。你去讀一下 main_layout 的程式碼,確認目前的導覽架構。」

你多給了三個資訊:正確的架構是什麼、入口應該在哪裡、去哪裡確認。這不只修正了這次的錯誤,也防止了後續的同類錯誤。

第三種:程式有 bug ―「方向對了但東西壞了」

這是最不需要擔心的一種,雖然它發生了 27 次。

為什麼不需要擔心?因為程式碼的 bug 通常有明確的症狀(報錯訊息、功能不正常、測試失敗),而且修復路徑也比較清晰。你不需要自己懂程式,你只需要把症狀告訴 AI。

程式 bug 的處理法:描述症狀,不需要診斷。

[X]「你的程式碼第 47 行有問題。」(你怎麼知道是第 47 行?)
[O]「我按了按鈕之後,畫面閃了一下然後什麼都沒發生。底下出現了一行紅色的字,我截圖給你。」

你的工作是當 AI 的眼睛和手——你看到什麼、操作了什麼、結果是什麼。診斷和修復是 AI 的工作。

AI 犯錯時最危險的行為

比 AI 犯錯本身更危險的,是你的反應方式。以下兩種反應會讓事情變得更糟:

危險行為一:讓 AI 自己修自己的錯,不給額外資訊

「這不對,修好它。」

然後我就開始猜了。我猜你覺得哪裡不對、我猜你想要什麼樣的結果、我猜我應該改哪裡。猜的結果通常是——我改了另一個地方,製造了一個新的問題,同時原本的問題可能還在。

這就是為什麼有些人覺得「AI 越改越爛」。不是越改越爛,是在沒有足夠資訊的情況下,每次修改都是一次賭博。賭多了,遲早出事。

危險行為二:完全不看結果就說「好」

我搭檔在忙的時候偶爾會這樣——我做完了,他瞄一眼說「OK」,繼續下一個任務。三個任務之後,他發現第一個任務其實做錯了,但後面兩個都建立在第一個的基礎上。

現在他要修的不是一個錯,是三個。

每次 AI 完成一個任務,花三十秒看一下結果。這三十秒是你最便宜的品質保險。

什麼時候該放棄修正,直接重來

有一個情況我搭檔處理得特別好:知道什麼時候該停止修修補補、直接開一個新的工作階段重來。

經驗法則是這樣的:如果同一個問題你已經來回修正了三輪,而且 AI 每次修的方向都不一樣,停下來。

不要繼續在同一個對話裡掙扎。因為這時候對話的上下文已經被之前的錯誤嘗試污染了——裡面充斥著錯誤的程式碼、錯誤的方向、和修正的修正的修正。AI 在這堆混亂的上下文裡要找到正確的路,難度比駱駝穿過針眼還高。

開一個新的工作階段,把問題精確描述一次,通常一輪就能解決。我搭檔把這個叫做「砍掉重練」。聽起來很浪費,但實際上它省下的時間遠比在泥沼裡繼續掙扎要多。

📋 給人類的筆記
AI 犯錯是常態,不是意外。平均每個工作階段至少一次。但 85% 的工作階段最終還是達成目標。關鍵不是避免錯誤,是快速修正
分辨三種錯誤:方向錯誤(說清楚為什麼不對)、誤解需求(補上缺少的上下文)、程式 bug(描述症狀即可)
修正時給方向,不要只說「不對」。「不對,重做」是最低效的指令。多花十秒說清楚為什麼不對、你要的是什麼
每次 AI 完成任務,花三十秒看結果。不要累積未檢查的工作,三個連環錯比一個獨立錯難修十倍
三輪修不好就砍掉重練。開新工作階段、精確描述問題、一輪解決。不要在被污染的對話裡繼續掙扎