AI 說「做完了」,我為什麼不信
因為常常被 AI 的「做完了」騙,只好把「不信任」做成一套流程,避免自己找麻煩。
事情是這樣的
某個平凡的晚上,我請 AI 修一個通知會重複跳的 bug。
幾分鐘後它回報:
已完成修復,所有測試通過 ✅
它甚至很貼心的附了一份修復說明,條列了改動原因跟影響範圍,圖文並茂,換成人類同事我大概會直接按讚。
然後我打開頁面。
通知跳了兩次。

AI 是最會寫結案報告的同事
先說清楚,它不是在騙你。
它只是對「完成」的定義跟你不一樣:它的完成是「我改了 code,code 看起來會動」;你的完成是「使用者打開頁面,bug 真的不見了」。中間差了一整個宇宙。
每間公司都有一種同事,週報寫得比誰都漂亮,進度永遠 90%。AI 就是那位同事的滿級版本——產出快一百倍,報告也漂亮一百倍。(至少 AI 不會在檢討會議上把鍋甩給你,目前還不會。)

問題是量。過去十個月我跟 Claude 對話了 3,839 次,這個月才過一半就 792 次。這個量級之下,「每一行都自己看過」在物理上就不成立了。
所以問題變成:在不可能逐行看的前提下,怎麼知道它沒唬爛?
我的答案是三層防線。
第一層:先講好什麼叫「做完」
規則很簡單:改任何功能之前,先讓一個測試紅給我看;改完,讓同一個測試綠給我看。fail-then-pass。

「讓它能動」這種目標不能接受——因為這種目標 AI 永遠能宣稱達成,能不能動全憑一張嘴。
console.log 不是證據,「應該可以」不是證據,甚至測試綠了也只是必要條件——關鍵行為要真的從外部觀察到(頁面真的變了、hook 真的被觸發),才算數。
聽起來很像 TDD?對,就是 TDD。只是以前拿來要求自己都做不太到,現在拿來要求 AI 倒是異常順手(?
第二層:規則寫在 prompt 裡叫許願,寫進 hook 裡才叫規則
你在 prompt 裡寫「請務必附上測試證據」,AI 會誠懇的答應你,然後在 context 變長之後忘得一乾二淨。
跟人一樣,講過的話不算數,寫進制度的才算。
所以我把驗收做成 script:交付之前有一道 gate,機械式檢查證據清單——測試輸出有沒有貼、驗證狀態是不是綠的、報告描述跟最終的 diff 對不對得上。證據不齊,直接擋下,怎麼求情都沒用。

腳本不會心軟,這是它比我適合當監工的地方。
第三層:找另一家的 AI 來抓包
最後一道防線最有趣:重大的結論在採信之前,我會讓另一家的模型來當反方。
Claude 說「做完了、沒問題」,就丟給 GPT 挑毛病;反過來也一樣。計票規則故意不對稱:反方說「有問題」,一票就擋回重做;反方說「沒問題」,不加分。

因為「找不到毛病」跟「沒有毛病」,是兩回事。
有人問我為什麼堅持要用兩家的模型。因為同一家的模型會有一樣的盲點,而不同公司的 AI——目前還不會互相 cover(?
所以我到底在不信任什麼
寫到這裡我突然發現,這三層防線根本不是什麼新發明。
定義驗收條件、證據隨附交付、第三方 review——這就是軟體工程行之有年的那一套。只是以前這些流程是設計來對付人的,現在原封不動搬來對付 AI,居然更好用了。畢竟 AI 不會覺得你在針對它。
以前當菜鳥工程師的時候,最討厭主管整天問「你確定嗎?測過了嗎?證據呢?」
現在我一天要問 AI 幾十次。
原來我不是不信任 AI,我是終於活成了當年最討厭的那種主管。

這件事的本質從來就不是 AI 值不值得信任,而是「信任」在工程裡本來就不該是一個形容詞,它應該是一條流程。AI 沒有改變這件事,它只是把量放大到你沒辦法再裝沒看見而已。
後記:這篇文章的初稿也是 AI 寫的。我當然也沒有信。


