AI 工作流 / 規則庫治理

你寫給 AI 的規則,大部分根本沒在執行

AGENTS.md / CLAUDE.md 越來越臃腫,我刪掉三分之一,18 天又長回來。盤完之後才發現,比字數更該先看的是:這些規則到底有沒有人在執行。

我把自己寫給 AI 的規則盤了一次,約 220 條。裡面真的有機制在執行的,約 24 條。代價最高的那 60 條裡面,48 條完全靠 AI 自己記得。這不是在講模型不聽話,是我寫了規則卻沒給它觸發點、執行器跟驗收方式,所以它從頭到尾就只是一段文字。會去盤這件事,是因為我先發現規則主檔砍掉三分之一之後,18 天就長回來了。我用的是 AGENTS.md,Claude Code 的使用者通常是 CLAUDE.md,ChatGPT 那邊則是自訂指令,名字不一樣,遇到的狀況是一樣的。

適合誰
  • 你有一份給 AI 讀的規則檔,而且它越寫越長,你隱約覺得該整理了
  • 你精簡過一次,過幾週發現又變回原樣,不知道問題出在哪
  • 你寫了一堆規則,可是沒把握 AI 到底有沒有照做
你可以帶走什麼
  • 一張四欄盤點表,用來查你的規則到底有沒有人在執行,含沒有 Hook 環境的手動版
  • 三題准入閘,可以直接複製去用,把預設值從「加」翻成「不加」
  • 一條真實的瘦身與回胖曲線,還有我對它為什麼發生的解釋

事情是怎麼開始的

有天看到一篇貼文,轉述 Anthropic 工程師的訪談,說他們把 Claude Code 的系統提示詞砍掉了 80%。理由很反直覺:模型越強,給它的指令要越少,因為太多限制跟範例會壓縮模型的解題空間。

我第一個反應是,那我的規則庫是不是也該再砍一輪。

我先讓 Codex 幫我查證,查完發現兩件事。

第一,貼文裡那句「超過 90% 工程師都在建立自我改進迴圈」,找不到官方對應的說法。我查到的相近說法講的是別的事,跟這句對不上,所以這個數字我不引用。

第二,Anthropic 官方的 Claude Code 最佳實務文件,到現在還是明白寫著可以把具體的多步流程放進自訂命令。所以「砍 80%」有它的脈絡,不是一個可以直接套用的通則。

順帶說,那句「砍掉 80%」本身也是二手轉述,我沒有找到原始訪談出處。這篇後面所有的判斷都建立在我自己的數字上,不是建立在那個 80% 上。

那我到底該不該砍?我先去量了一下我自己的數字。

我的實際曲線

時間 字數 變化
7/4 瘦身前 25,036  
7/4 瘦身後 15,822 砍掉 37%
7/16 21,028 +5,206
7/18 23,412 +2,384
7/22 24,219 +807

18 天回胖 8,397 字。

先講這份數據的限制:這些字數是我從自己的自動備份資料夾裡,把各個時間點的規則檔逐一算出來的。那是我的私有檔案,你沒辦法查驗,只能看我的記錄。而且備份會定期清理,所以這條曲線本身也會消失。這件事後面會再提到。

這條曲線讓我打消了再砍一次的念頭。它讓我看到另一件事:我沒有任何機制阻止規則變多。在這種狀態下再砍一次,18 天後我大概會再看到同一條曲線。

為什麼會復胖

以下是我自己的解釋,不是實驗結論。

我有一份方法論叫「減法許可協議」,從開源技能包 Ponytail 提煉來的。它說任何有減法性質的規則,都需要三個零件。

決策階梯:把「請簡潔」這種模糊的形容詞,變成一條有順序、可以逐項打勾的是非題清單。形容詞沒辦法執行,階梯可以。

舉證反轉:把預設值從「做」翻成「不做」。想加東西的人要先證明非加不可,舉證責任從想刪的人跑到想加的人身上。

紅線保留:任何減法規則上線時,同時釘一張絕不砍的清單。原則負責砍複雜,清單負責保命。

我看了一下自己的狀況:階梯有,紅線有,舉證反轉沒有。

我把這個缺口當成復胖的原因。每次有新規則要進主檔,預設答案都是「加吧,反正也不差這幾百字」。加的成本是零,刪的成本很高,曲線當然只會往上。問題不在勤不勤勞,在於預設值站在復胖那一邊。

防復胖引擎長什麼樣

我補的東西很簡單,就是三個問題。每次要往規則主檔加東西之前,先回答:

  1. 這條「每輪對話」都需要載入嗎?這裡問的是載入頻率,不是重要程度。很多規則很重要,可是只在特定情境需要,那它應該放按需載入的地方。
  2. 既有的規則或工具已經涵蓋了嗎?重複維護同一件事,遲早會變成兩個互相打架的版本。
  3. 這條掛在哪個執行器上?Hook、腳本、既有流程的掛載點,還是純靠自覺?如果是純靠自覺,那違反的代價是什麼?代價低才留純自覺。

三題有任何一題答不出來,就不要進主檔。

這三題可以直接複製去用,不管你的規則檔叫什麼名字:

我要在規則主檔新增一條規則。開始寫之前先回答三題:

1. 這條每輪對話都需要載入嗎(問的是載入頻率,不是重要程度)?
2. 既有規則或工具已經涵蓋了嗎?
3. 掛在哪個執行器上(Hook/腳本/流程掛載點/純自覺)?
   純自覺的話,違反的代價是什麼?

三題有任何一題答不出來,就不要加進主檔,改放按需載入的地方。

我另外把它做成了一支 Hook,改主檔的時候會自動跳出來問,順便告訴我現在幾個字、比基準多了多少。它不阻擋,只提醒,同一個工作階段只出現一次,不會吵。

會選提示型,是因為我還不知道有沒有效。一個月後我會看字數曲線,止漲就維持提示型,還在漲再考慮升級成擋下來。

沒有 Hook 環境的話怎麼做

上面講的 Hook 需要能跑腳本的環境。如果你是用 ChatGPT 網頁版、Claude 網頁版這類介面,同樣可以做,只是換成手動的。

三題准入閘

把上面那段提示詞存成一個固定的自訂指令或記事本片段。每次要改規則檔之前,先貼一次,讓 AI 陪你答完三題再動手。

四欄盤點

開一個試算表,一列一條規則,四個欄位分別是觸發器、執行器、證據、跨家覆蓋。你可以把規則檔整份貼給 AI,請它照這四欄輸出,再自己抽查幾條有沒有標錯。

字數曲線

每週固定一天,把規則檔的字數記到同一個試算表的第二個分頁,一行一筆。四週之後你就有自己的曲線了。

差別只在自動跟手動。判斷邏輯完全一樣。

一個更值錢的發現

做這件事的時候,我順便把整份規則主檔盤了一次。找了個子代理逐條讀完 259 行,每一條標四個欄位。

欄位 要回答的問題
觸發器 誰、在什麼時候會讀到這條?
執行器 Hook、腳本、流程掛載點,還是純人工自覺?
證據 什麼輸出能證明做過?
跨家覆蓋 我用的每一個 AI 工具,是不是都真的受這條約束?

盤出來約 220 條規則。有機械執行器的,約 24 條。

再往下切,把代價高的挑出來,也就是會刪除資料、會覆寫、會對外送出、會部署、會給客戶看的那些,60 條。這 60 條裡面有執行器的,12 條。

也就是說,48 條代價最高的規則,完全靠 AI 自己記得。

這裡要標一個限制:代價高不高是我自己標的,屬於主觀判斷,邊界案例大概有正負三條的誤差。條數不是精確值,可是量級不會差太多。

裡面最刺眼的一條是「跨家審稿」。我規定重要產出必須由不同家的模型互審,禁止自己審自己。這是我整套品質體系的基石,寫在「品質硬門檻」那一段。它零機械檢查。

我這輪工作確實有跑四輪跨家審,包含這篇文章本身,可是那是我自己開口要求的,沒有任何東西提醒我要跑。

盤點的時候還看到一個模式:出過事的規則,後來都補了 Hook。沒出過事的,都還靠自覺。我的補洞機制是事後反應型。那 48 條裡面應該有一部分是因為還沒出過事才沒被補上,不過我沒有逐條追過每一條的歷史,這只是我看整體的印象。

這比砍字重要在哪裡

回到最初那個問題:該不該再砍一輪。

答案是不該,至少不該優先做。因為規則多不多,跟規則有沒有效,是兩件事。

一條沒有觸發器、沒有執行器、沒有完成證據的規則,就算把它寫得再精簡、放在再顯眼的位置,它仍然只是一段文字。反過來,一條有 Hook 擋著的規則,就算它佔了 200 字,它每天都在幹活。

所以我後來的順序是:先量執行覆蓋率,再決定刪、移、合併還是機械化。先砍字的話,砍完會發現該擋的還是沒擋住。

這裡順便講個我寫文章時的習慣,剛好同一個道理。文章超過字數的時候,我以前都用砍字的,保留原本的結構一個字一個字摳,砍好幾輪字數還是降不太下來。後來改成砍段,重新判斷讀者需不需要知道這件事,整段拿掉用一句話帶過。

兩種砍法各有適用場景。已經確定每一段都該留、只是句子囉嗦的時候,砍字有效;架構還沒定、或是自己也覺得某幾段可有可無的時候,砍段的效果大很多。規則庫也一樣,與其在條文裡摳字,不如先問「這條需要每輪都載入嗎」,答案是否定的整條搬走,主檔立刻少一段。

你可以怎麼做

如果你也在維護一份給 AI 的規則檔,我建議的順序是這樣。

第一步:先量

找一天把規則檔逐條標上那四個欄位。你會很快發現哪些條文根本沒有觸發點,哪些從來沒有人驗過有沒有做到。這一步是唯讀的,不會動到任何東西。

第二步:補洞

把「代價高但沒有執行器」的挑出來,逐條決定:補一個機械檢查、改寫成會被觸發的形式,或是降級搬去按需載入的地方。不用全部都補 Hook,Hook 太多會互相干擾,誤攔率會上升。

第三步:裝閘門

把上面那三題放進流程,讓新規則進主檔之前要先過。這一步才是防復胖的關鍵。前兩步做完沒有這一步,過幾週你會再看到同一條曲線。

還有第四步,這是我這次最後才想到、而且是被 Codex 點出來才修對的一件事。

第四步:留證據

你要能證明機制有效。我一開始把字數記錄寫在提示 Hook 裡,結果它只記到「每個工作階段第一次、而且沒有變短的那次改動」。刪除完全不會被記錄,而「有沒有下降」正是這條曲線要回答的問題。

後來把記錄拆成獨立的一支,在改動之後才量測,每次都記,這條曲線才變成可以拿來做決定的東西。沒有這一步,一個月後你只能憑感覺說「好像有變好」。

還有第五步,而且它是前面四步的保險。

第五步:排一個固定的複查行程

前面四步都是一次性的動作。閘門裝好了、證據在記了,可是如果沒有人固定回去看,那條曲線就只是一個沒人讀的檔案。

我的做法是排一個每週的自動行程,固定時間跑三件事:讀字數曲線看有沒有止漲、看這週有沒有新規則進了主檔卻沒答三題、抽查一條有執行器的規則是不是真的還在運作。沒有排程工具的話,行事曆設一個每週重複的提醒也可以,重點是它會自己找上你,不是等你想起來。

這一步就是這篇文章講的東西套用在自己身上。複查如果只靠記得,它就是第 48 條沒人執行的規則。

最後

那篇貼文最有價值的其實是最後一句話:指令變少不代表不要規則,關鍵是留下最重要的邊界,目標、權限、驗證、停止條件。

這句話我完全同意。拿這把尺去量我自己的規則庫,量出來的結果是:我該做的是把那 48 條沒人執行的規則補上執行器,而砍字可以晚一點再說。

砍到最後你會發現,能砍的其實有限。真正決定規則庫有沒有用的,是每一條規則背後有沒有一個東西在幫你執行它。