昨天的結論是:要把「希望 AI 別做」轉成「讓 AI 做不到」。
但這中間不是一個開關,是一條光譜。今天把它畫出來。
希望 AI 別做 → 告訴 AI 別做 → 提醒 AI 別做 → 讓 AI 做不到
(無效) (advisory) (detective) (preventive)
□ ▣ ▣▣ ████
弱 強
四段的差別:
| 強度 | 意思 | 在那個失敗案子裡對應到什麼 |
|---|---|---|
| 無效 | 根本沒寫成文字 | 大多數隱性規則(民國年、布林值用 Y/N 不用 true/false) |
| Advisory | 寫在文件,AI 自主遵守 | 主規範的全部方框 |
| Detective | AI 違規之後,事後被發現 | 九輪人工測試 |
| Preventive | AI 物理上做不到 | 幾乎沒有 |
最上面那格「無效」值得停一下。
隱性規則是最容易被漏掉的一類,因為它們對團隊裡的老手來說太理所當然了,理所當然到沒有人想到要寫下來。日期是民國年、布林欄位用 Y/N、金額不含稅、狀態碼 7 代表什麼。這些在老手腦子裡,不在任何文件裡。
而 AI 完全不知道。它會用它的覺得合理的方式:西元年、true/false、含稅、狀態碼用 enum。

這是整條光譜最重要的結論:只有 preventive 那一格是真的可靠。前面三格都要 AI 願意配合才有效。
而 AI 是否配合,取決於它當下對 prompt 的詮釋強度。那是機率,不是保證。你可以透過寫得更清楚來提高那個機率,但你提高不到 100%。detective 那一格比較微妙。「事後發現」聽起來比「什麼都不做」好,但它有一個致命的成本問題:
發現的成本,通常遠高於預防的成本。
前幾天的文章講過:修一個版型 bug 五分鐘,找到它三十分鐘。那個案子九輪人工測試找出 187 個問題單。那是把人當偵測器用,而人會疲勞、會漏看、會在第九輪的時候開始草率。
所以 detective 不是「比較弱的 preventive」,它是另一種東西:它把成本從機器轉嫁到人身上。
這條光譜給我一個很好用的判準,我現在檢視任何一條規則都問這句:
規則的價值,不在於它寫得多嚴謹,
而在於它落在光譜的哪一段。
推論:一條 preventive 級的封鎖,勝過五十條 advisory 級的方框警告。 這句話有點反直覺,因為 advisory 寫起來很快、看起來很完整、而且很有「我們有在管」的感覺。591 行的命名規範看起來比一條 lint 規則專業得多。
但 591 行只是勸告,lint 規則是強制。
而且更糟的是——591 行還會佔用 context。它每次都要被讀進去,擠掉本來可以放實際程式碼、放範例的空間。所以它不只沒效,它還有負面成本。(這一點後面會展開。)
光講理論比較虛,我拿另一個案子的實際紀錄來看。那個案子有一份日誌,專門記錄每次調整規則的動作。其中一條長這樣:
把「貼警語」升級為「機器擋」
觀察:文件裡的 SQL 範例出現不該有的寫法,第 N 次發生。
判斷:目前的做法是在文件旁邊貼一段警語,屬於 advisory。
改進:把檢查腳本的掃描範圍擴及文件內的 SQL,違反就擋。
這就是光譜爬升的實際長相:同一條規則,從第二格搬到第四格。 注意它不是新增一條規則,而是把已經存在的規則換一個實作方式。這是我認為最划算的一種改善。你不需要想出新規則,只要把舊規則搬上去。
不是。而且這是很多人導入時的第一個錯誤。
不是每條規則都能封鎖,也不是每條都值得封鎖。
判準大概是這樣:
| 規則性質 | 該放哪 |
|---|---|
| 有明確對錯,可以用程式判斷 | preventive(腳本、hook、CI) |
| 需要判斷,但有明確的比對對象 | detective(審查清單、自動比對) |
| 需要業務知識或價值判斷 | 人工,而且要保留 |
| 既不能判斷也沒有比對對象 | 它可能根本不該是一條規則 |
最後一行是我後來加的,因為在整理那 591 行的時候發現:有些「規則」其實是風格偏好,寫的人自己也說不出違反了會怎樣。那種東西留在文件裡只會稀釋真正重要的規則。
明天開始逐層講。層次是這樣編號的:
| 層 | 名稱 | 強度 |
|---|---|---|
| 第 0 層 | 憲法(寫在最頂端的最高原則) | Advisory |
| 第 1 層 | 事實層(單一真相 / 可查詢的工具) | Advisory,但比規則具體 |
| 第 2 層 | 流程閘道(強制節奏) | 仍是 advisory,但改變順序 |
| 第 3 層 | 工具層強制 | Preventive |
| 第 4 層 | 驗證層 | Detective,但有閉環 |
| 第 5 層 | 人工閘道 | 最後一道,也最珍貴 |
編號從 0 開始是刻意的。第 0 層是每個人都有、但幾乎不構成約束的那一層。
而那個失敗的案子,絕大多數規則都卡在第 0 層。
明天就從那裡開始。
本系列所有案例均經去識別處理,不指涉任何特定客戶、系統或產業。