← AI 助理實戰

規則寫了,AI 照樣漏:把該記得的事改成自動檢查

發布 2026-11-02・更新 2026-11-02・約 10 分鐘讀完

這篇寫給已經讓 AI 照一份規則做事、卻發現它老是漏掉某幾條的人。內容是我怎麼把「要記得做的事」改成在動作當下自動跑的檢查,還有這種檢查的代價。這是「AI 助理實戰」系列第 8 篇。驗收 AI 的成果看第 6 篇;幾個 AI 助理怎麼分工看第 4 篇;好幾個 AI 同時改同一批筆記,下一篇第 9 篇講;AI 的記憶靠不靠得住,看第 10 篇。

例子都改寫成一般情境。不寫程式的人,看第一段和最後的〈不寫程式也用得上〉就夠了。

寫在規則檔裡,AI 不一定讀得到

我的知識庫有一份給 AI 看的規則檔,寫著怎麼建檔、怎麼命名、改檔前要先做什麼。它越寫越長,AI 還是會漏。

2026 年 10 月 25 日,另一個 AI 助理(Codex)幫我寫一份工作專案的規劃書,裡面 3 張圖都沒照我的圖表樣式規範畫。我提醒之後它自己改好了,但我想知道它為什麼不知道有這條。翻它的工作紀錄:

  • 它開工時自動讀的兩份入口檔,加起來約 6,100 字,一次都沒提到畫圖。
  • 它讀那份長規則檔是用關鍵字搜的,搜「寫入」「提案」「批准」這類字,只讀了兩小段,寫著圖表規範的那張速查表一行都沒讀到。
  • 寫完它還自己跑了檢查工具,全部通過,因為那支工具當時不檢查圖。

它不是偷懶。不知道有某條規則,就不會想到去搜它。規則放在一份要靠搜尋的長檔裡,只對已經知道它存在的人有用。

寫規則的一方自己也會漏。我訂過一條規則:改幾個很多檔案都連過來的重要檔之前,要先在中央進度檔登記「誰正在改」。這條寫下十分鐘後,寫它的 AI 第一次碰到該登記的情況,在對話裡明明說了「先登記再動」,接著就直接改了。

我試過三種做法:

做法 靠什麼 漏了誰會發現
寫進規則檔 AI 自己記得、自己找到 多半是我事後看到
要 AI 動手前在對話裡列出要照哪幾條做 AI 照做,我看對話 我,前提是我有看
掛在動作上的自動檢查 程式,每次都跑 檢查當下就告訴 AI

第二種起於 2026 年 5 月 12 日。那天 AI 一天之內兩次漏改該連帶更新的頁面,第二次連首頁都漏了。我問它:「都寫這麼清楚了,怎樣才能讓你不再失誤未讀?」之後規定寫入前,AI 必須在對話裡引用規則檔的那一節,列出這次要連帶改哪些檔;引用不出來就是沒讀,要停下來讀。這條規則叫 Cite-or-Die(引用不出來就停)。這讓跳過變得看得見,但還是要我去看。真正重要的那幾條,我改成第三種。

Hook:掛在動作上、每次都跑的檢查

Claude Code 是 Anthropic 的 AI 代理,在終端機(打指令的文字視窗)裡讀寫檔案、寫程式。hook(掛鉤)是它的一種設定:到了某個時間點,例如 AI 每寫完一個檔,就自動執行你指定的一支程式。官方文件說它的用處是:

“certain actions always happen rather than relying on the LLM to choose to run them”

繁中:「某些動作一定會發生,而不是靠模型自己決定要不要去做。」

我掛了三個時間點。工作階段指的是開一次 AI 對話、從開始做到結束:

時間點 跑什麼 查什麼
開工:每個工作階段開始時 自檢 這台電腦給各個 AI 的入口檔是不是最新版,落後就自動重新部署
每寫完一個檔 寫入檢查 檔案編碼、換行方式、筆記格式、圖表樣式、重要檔有沒有先登記、同資料夾有沒有冒出衝突副本
收工:AI 做完一輪、準備停下時 收工掃描 整個知識庫有沒有衝突副本,根目錄有沒有多出不該有的東西

衝突副本是兩邊同時改同一個檔時,iCloud 另外留下的「檔名 2.md」;有時原檔名反而不見,所有指向它的連結都會斷。

檢查發現問題,就用一個約定好的結束代碼回報,Claude Code 會把訊息交回給 AI。寫檔後的檢查是提醒,AI 在同一輪就看得到、可以馬上改;收工掃描回報問題,AI 就不能停,要先處理。沒問題時,它們完全不出聲。

為什麼不排一支每天固定跑的程式?我原本有一支每天早上的檢查,只排在一台電腦。2026 年 8 月 11 日,入口檔範本升了版,另一台電腦停在舊版,沒有任何東西發現。hook 的設定檔本來就放在知識庫裡,跟著 iCloud 同步到每一台電腦,所以把自檢掛在開工這一刻,任何一台有 AI 開工就會跑,不用有人記得。

檢查也要每台電腦都跑得起來。收工掃描原本用 bash 寫,Windows 那台沒有 bash。8 月 12 日,iCloud 把主規則檔改名成「CLAUDE 2.md」,Windows 那邊的 AI 是剛好看到檔名才發現;檢查一直都在,只是在它那台從來沒跑過。後來整支改用 Python 重寫。

三個例子:規則都在,還是出事

圖表樣式:提醒要在寫錯的當下出現

那份規劃書之後,寫入檢查加了一項:筆記或網頁報告裡有 Mermaid 圖(用文字寫、再畫成圖的格式),就看有沒有套共用的樣式開頭,流程圖有沒有定義那九種顏色分類。缺了就提醒,附上範本的位置。各個 AI 的入口檔也改成:要寫入之前,先看完速查表整張,不要只用關鍵字搜。

這項檢查只看「有沒有」,不解析每個節點,因為那樣容易誤報。上線時拿整個知識庫(封存區不算)486 張圖試跑,只報了 4 張:3 張是刻意示範錯誤寫法的例子,加上豁免標記;1 張是 4 月的舊報告。它只提醒,不擋寫入,也不自動改。

那天已是第三次改規範,照規矩該排隊(後面會講),我同意當天做,因為這次真的害到事情了。

編碼:在 Mac 上驗不出來

編碼是電腦把文字存成位元組的方式。BOM 是檔案最前面幾個看不見的位元組,告訴讀檔的程式「這是 UTF-8」。

2026 年 8 月 10 日,在 Mac 上改了一支給 Windows 用的 PowerShell 腳本,加了幾行中文註解。在 Mac 上做了十項檢查,全部通過;到 Windows 上卻跑出 15 個語法錯誤,錯誤訊息看起來跟編碼毫無關係。原因是腳本沒有 BOM:微軟的文件寫明,Windows PowerShell 讀到沒有 BOM 的腳本會當成舊式的 ANSI 編碼,中文就全亂了。給 Mac 和 Linux 用的 .sh 腳本卻反過來不該有 BOM,兩支內容一樣的「雙胞胎」腳本,編碼要求正好相反。

隔天又碰到同一族的問題。Python 讀寫檔案沒指定編碼時,以前的版本會用那台電腦的地區設定(官方文件寫明 3.15 版起改成預設 UTF-8),Mac 是 UTF-8,繁體中文的 Windows 不是。我的開工自檢有四處沒指定,在另一台 Windows 電腦上,比對中文的那幾項永遠對不上,每次都誤報。它還會自動修正,等於照著一個永遠成立的假警報,去「修」沒壞的東西。

自檢的檔頭寫了清楚的警告,可是同一時間,另一支同步到 Windows 的檢查程式還帶著一樣的毛病在跑。規則寫在修好的那個檔裡,管不到還沒修的。所以這兩條都進了寫入檢查:缺 BOM、Python 讀寫檔沒指定編碼,寫完當下就報。

換行:檢查要排在碰檔案之前

每一行結尾都有看不見的換行記號。Windows 習慣用 CR 加 LF 兩個字元,Mac 和 Linux 只用 LF。我不統一整個知識庫,舊檔沿用原本的、新檔用 LF,但一個檔裡不能混用。

2026 年 8 月 21 日連出兩次事。一支負責安全寫檔的小工具,讀檔時不轉換換行、寫檔時又轉一次,中央進度檔 1,560 行全變成 CR CR LF,每行多出一個 CR。改好之後,呼叫它的一方用單獨的 LF 接上新段落,新加的 75 行跟原本的 CR LF 混在一起。

兩次是同一個錯誤:要呼叫的一方自己湊出正確的換行。後來的規定是:工具自己看原檔用哪一種、自動對齊,所有檢查都排在動檔案之前。可是同一段時間,還有兩個重要檔被別的寫入方式整檔翻轉了換行。寫前的工具管得住用它的人,管不住繞過它的,所以寫入檢查也查換行,只報、不自動改。上線前拿 1,526 份筆記試跑,誤報 0,抓到 1 份真的有問題。

檢查也有成本

誤報會讓人學會不看

BOM 那條一開始寫成「.ps1 一律要有 BOM」。結果 4 支一個中文字都沒有的腳本,同一則警告重複報了十幾次,檔案內容一字未改。BOM 是為了中文才需要的,微軟文件也說,沒有 BOM 的腳本是含非 ASCII 字元時才可能出錯。2026 年 10 月 6 日改成「檔案裡有中文才要」,並驗過含中文又沒 BOM 的還是擋得住。當時記下的教訓是:

寫成「一律」,檢查就會對不符前提的檔案持續誤報,而人會學會忽略誤報——那比少一條檢查更糟。

檢查工具自己也會吵。編碼那項檢查上線第一天就抓到自己:它檔案裡寫著要比對的字串樣式,被它自己當成違規。這類「檢查工具自己製造雜訊」的事,紀錄裡同一族已經記到第五次。

擋錯人

收工掃描一報問題,AI 就不能停,可是有些問題 AI 處理不了。2026 年 10 月 23 日,知識庫根目錄一天冒出好幾個沒人規劃的東西,例如在 iPhone 上打錯字建出來的資料夾、在知識庫裡跑安裝指令產生的檔案,都是我自己在檔案瀏覽器看到才發現。我加了根目錄白名單,上線當天 AI 每做完一輪就被擋回來,原地繞圈,因為要不要留得由我決定。後來改成同一個異物每台電腦只報一次。等人決定的事,只能提醒一次。

太重的規則會被整條跳過

登記那條規則,我沒有要求每次改檔都登記。登記本身也是一次寫入,什麼都要登記,等於為了防撞又製造更多碰撞,流程一煩就會被整條跳過。跳過的規則等於不存在的規則。所以寫入檢查只盯 4 個規範檔;第一版連每次改版都要動的首頁也盯,當場對自己的例行更新噴警告,就拿掉了。

不要什麼都自動化

2026 年 8 月 16 日,檢查邏輯一天改了 5 次,每次都是修上一個時發現下一個。那天真正有價值的工作只有兩件,其餘時間都在修「檢查有沒有做完」那一層,而知識庫本身全是綠的。那不是在修好,是在測量問題有多大。之後定了三條:

  1. 改檢查工具、改規範這類事,一天最多一次,其他的排隊。
  2. 等它真的害到事情才改。首頁掛著過期的分數、被我看到了,算害到;AI 自己跑檢查看到紅字,不算。
  3. 細節不往我看的地方塞。我看的是知識庫首頁,不是規則檔和工具註解。

有時更好的做法是把重複刪掉。我的 AI 入口檔範本曾經有三份手抄,改一處就漂兩處。後來沒有加檢查去盯,而是只留一份,部署程式從那一份產生。能刪掉的重複,就不要拿檢查去盯它。

哪些事值得做成自動檢查

我現在要加一項檢查前,會先問這幾題:

先問 為什麼
它真的漏過、而且害到事情了嗎? 沒踩過的坑先不立法;但要先查過,是真的沒踩過
不讀懂內容,也判斷得出來嗎? 「有沒有 BOM」「有沒有樣式開頭」判斷得準;要讀懂意思的,交給人或另一個 AI 複核
每台電腦、每個 AI 都會經過它嗎? 只在部分電腦跑得起來的檢查,在其他電腦上等於不存在,而且沒人會發現
報出來的事,AI 自己處理得了嗎? 處理得了可以擋;要等人決定的,提醒一次就好
拿全部檔案試跑,誤報多不多? 多就把範圍縮窄
確定它真的有在跑嗎? 呼叫方式不對時,它會一律回報「沒問題」。有一次用錯方式驗了 17 個檔,全部通過,全是假的(同第 6 篇講的假綠燈)

不寫程式也用得上

如果你用的是 ChatGPT、Claude 的聊天介面,不寫程式,也能做到差不多的效果:

  1. 把最常漏的事寫成一張短清單,要求 AI 每次回答最後逐項列出「做了/沒做」。看不到這張清單,就知道它沒照做。
  2. 清單放在每次對話都會自動帶上的地方,例如 ChatGPT 的自訂指令、Claude 專案的專案指示,不要埋在長文件裡等它自己去找。
  3. 有固定格式的,直接給範本。「照這個範本」比「記得要有某某欄位」好用。
  4. 重要的東西,開第二個對話,只給它清單和成果,請它逐項檢查。
  5. 清單只放真的漏過、真的造成麻煩的事,條數越少越好。
  6. 有一條每次都報同一個假問題,或你故意放一個錯它也抓不到,就改窄或刪掉。

參考資料