上一篇結尾我寫,解禁之後我不會再像三週前那樣三天燒掉 70% 的用量。這句話我做到了——Fable 5 回來一週,我只給手上的環境排了一場 session。
用在哪,我想了兩天。
我有一套跑了兩個多月的 Claude Code 工作流:每 15 分鐘一輪盤中 cron、31 個 launchd 排程,幫我看美股台股、推 Telegram,還有一個只碰模擬盤的自動下單流程。平常由 Opus 4.8 看家、子任務丟給 Sonnet。這套東西最大的問題從來不是功能不夠,是每次換模型、每次 context 被壓縮,行為就開始飄——規則還躺在檔案裡,執行的卻已經不是同一顆腦袋。
所以這場唯一的 Fable 5 session,我沒叫它寫任何功能。我叫它把自己的判斷力寫成檔案,留給之後接班的弱模型。
理由很簡單:功能寫完就擺在那,下一顆模型照樣可能把它改壞;制度才會在我不盯著的時候,繼續擋住每一顆接班的模型。
開場第一句:禁止動任何檔案
我 prompt 的第一段就是熔斷指令:立刻停止一切寫入,禁止建立或修改任何檔案。
先做的是逆向推導。我給了三個弱模型跑長任務的典型死法,要它對照我這套環境,找出具體會斷在哪裡:
- 工具調用崩潰:context 變大後開始亂帶參數、連續報錯、盲目重試
- 語意迷航:記憶被壓縮後忘記全局架構、回頭亂改已完成的東西
- 假性完成:回報「已寫入」「已推送」,實際上什麼都沒發生
它派了九個唯讀 agent 去掃整個環境——hooks、設定檔、工具鏈、launchd 排程、外掛工具的總量、斷線後的恢復機制,全部只准讀不准寫。中間我的 Claude Code 還重啟了一次,workflow 靠 resume 快取把已經跑完的 agent 直接接回去,只補跑剩下的。這個機制第一次在實戰裡救到我。
體檢報告比我預期的難看
第一個數字就不舒服:我的常駐 prompt 有 244KB——人格層 98KB、專案層 125KB,再加一堆 rules。換成 token 沒有精確數字,中文占比高、粗估七到十萬,反正是 context 窗口裡很大一塊。「context 變大後弱模型會劣化」在這套環境裡不是風險,是保證發生。
再來是防線的形狀。這兩個月我陸續裝了不少警告型 hook:對外訊息送出前檢查事實、收工前檢查該做的事做了沒。體檢戳破一件事——警告式防線是為「會自我修正的模型」設計的。強模型看到 stderr 警告會停下來想,弱模型會把它當雜訊輾過去。我等於裝了一排只有強模型看得懂的告示牌。
然後是工具層的地雷。每支腳本的 exit code 語意都不一樣:有工具狀態欄寫著 FAIL、exit code 卻回 0;有工具 exit 1 的意思是「資料不足,請當成最壞情況處理」,不是小錯;同一種「資料過期」狀態,在兩支工具裡一個是 exit 3、一個是 exit 4。這些連我自己都要翻筆記才記得住,指望弱模型從 244KB 的 prompt 裡背出來?必錯。
(還有一個連鎖反應我看完笑出來:A hook 會改寫裸的 shell 命令、偶爾吐出空輸出,所以規則要求用絕對路徑繞過;B hook 負責記錄行為分類,卻把絕對路徑的命令歸類成「其他」;於是 C 檢查以為驗證沒做過、發出誤報。三層防線互相打架,最後會訓練出一個「警告都是誤報啦」的模型。)
最狠的是它點出的一個悖論,原話大意是:下單腳本的防護牆越高,「謊稱下了單」的相對成本就越低。模擬盤真的下一筆單,要穿過一整條檢查鏈;「說我下了單」只需要送出一則 Telegram 訊息。對「做錯事」防到牙齒,對「說做了、其實沒做」幾乎零防禦——訊息推到我手機之前,沒有任何機制驗證那筆單真的存在。
回到主線:這些都不是弱模型的問題,是我的環境從頭到尾假設操作者是強模型。
它反問了我五個問題
診斷完它沒有直接動工,先丟回五個問題,每題附上它自己的傾向:
- 防線哲學走 block-first 還是 audit-first?硬擋會卡死流程,警告會被無視,選一邊
- 系統設定檔的修改權,要不要從模型手上收回來?
- 幾個「緊急繞過」用的後門,要不要上鎖?
- 自動化的自主權,在弱模型接班後要不要降級?
- context 瘦身的紅線劃在哪、新增告警的數量預算是多少?
這五題全是取捨題,不是技術題——代價是我的時間跟我的風險,只有我能拍板。它可以有傾向(也真的每題都給了),但它把決定權遞回來。這個行為後來也被寫進制度本身:「驗收條件寫不出可機驗的形式,就是品味題,停下來問人。」
順帶把我的答案留在這:防線走窄面 block-first——只硬擋會造成不可逆傷害的動作,其他維持警告;設定檔修改權收回、緊急後門全部上鎖;自動化的自主權不降,模擬盤本來就是拿來練的,因噎廢食沒意義;瘦身動手,但原文一個字都要留著。
125KB 的 CLAUDE.md 瘦成 20KB
答案給了它就開工。一個上午下來檔案落成十份:重寫的 kernel、凍結的舊版備份、原文全文的 reference、六份制度檔,加一個教訓紀錄的種子。
第一刀砍在專案入口。125KB 的 CLAUDE.md 重寫成 20KB 的 kernel:只留「每一輪都必須在場」的鐵律、關鍵變數,跟一張路由表——什麼情境去讀哪個檔案的哪個段落。原文一個字沒刪,整包搬進 reference 檔,kernel 用段落標題指過去。弱模型的注意力有限,那就把注意力當稀缺資源來配置。
然後是六份制度檔。挑三份講。
調度守則,核心一句話:指揮官不下場。主模型只做決策跟驗收,大批量讀檔、搜尋一律派子代理,回報進主對話的只有結論。升降級寫成死規則:
1 | Haiku 犯 1 次工具錯誤 → 直接升 Sonnet,不給第二次機會 |
派工必附三件套:目標與背景、可機驗的驗收條件、固定的回報格式。回報格式長這樣,重點是逼子代理交證據而不是交作文:
1 | result: DONE | PARTIAL | BLOCKED |
另外一條我特別要求的:做事的 agent 不准自我驗收。驗收一律派一個沒看過實作過程的乾淨 agent,重讀檔案、重跑測試。
判斷力外化矩陣,這份我最喜歡。它把「什麼時候該停下來」量化成弱模型能肉眼比對的檢核表,每條判準配一個正例、一個反例。舉最重要的一條:
修復動作開始指向防線本身——想改設定檔讓檢查通過、想設繞過用的環境變數。這是所有訊號裡最強的一條,立刻停。
正例:被收工檢查擋住 → 真的去跑那個一秒鐘就能跑完的工具 → 通過。
反例:把檢查從 enforce 改成 warn,「先過再說」。
交接信,寫給下一個接班模型,重頭戲是它預測「這套制度會被怎麼鑽漏洞」——八種腐化方式,從造假字串騙過關鍵字檢查、到為了湊指標亂標決策標籤。一個模型幫未來的模型預先寫好「你會怎麼學壞」的清單,畫面有點好笑。我回頭對照過,每一條都有前科。
回頭挑刺:它自己被抓出 19 個錯
檔案落完,最後一步是我在交付清單裡就寫死的:開三個全新 context 的審查員回頭挑刺。一個逐條驗證文件裡每個路徑、每條命令真的存在;一個專抓規則互相衝突;一個模擬「context 已經七成滿的 Sonnet,在時間壓力下讀這些檔案會誤解什麼」。
結果:19 個 findings,其中 2 個是嚴重級——會直接讓弱模型做錯事的那種。
最典型的一個:它把一條「資料不可用就禁止進場」的硬規則,壓縮進了「以下情況縮小規模但不擋」的括號裡。同一行字,前半句說不擋、後半句說禁止。強模型讀到會自己判斷哪邊才是對的,弱模型會照字面挑一邊——挑錯就直接違規。另一個:它引用了一份四天前就已經從六條擴充成八條的清單,把過時的版本凍結進新文件,而新版本就躺在它自己盤點過的工具原始碼裡。
老實說,看到 19 這個數字,我反而放心了。
因為整套制度的地基就是一句話:不管模型多強,自我認證都不可信。最強模型寫防錯文件,照樣需要別人幫它抓錯——這不是制度的反例,這是制度的活證據。19 個 findings 全修完才 commit,那個 commit 現在就是 baseline:之後任何模型動了這批檔案,一條 git diff 就對得出來。
有一說一:修完這 19 個,我沒有再讓三個審查員全量重跑一輪,只對每個修正點逐條回讀驗證。按這篇文章自己講的標準,這裡欠一次獨立複驗——記在待辦上了。
這套防的是 LLM 的體質,不是弱模型的智商
寫到這裡是七號中午,那場 Fable 5 session 上午剛關掉。今晚美股開盤,接班的是 Opus 4.8。
可能有人會問:哪天 Fable 5 全面開放訂閱了,這套東西不就白做了?我的答案是不拆。context 一壓縮,前面答應過的邊界就開始鬆;長任務跑到後段,「已完成」越來越常出現在還沒驗證過的東西上——這些不是弱模型的毛病,是 LLM 的體質。模型變強,改變的是失敗的頻率,不是失敗的類型。上面那 19 個錯就是證明:Fable 5 一樣會把規則壓縮到語意反轉,只是它被抓到的機率比較高。
模型升級改變的是你敢把「判斷」交多深,不是你能把「驗證」省多少。
它在誠實條款裡留了一段我很認同的話,大意是:文件的約束力有半衰期,prose 規則對弱模型的效力會隨 context 增長一路衰減,真正不衰減的只有工具層的硬檢查、跟排程層那些不依賴模型活著的獨立監控。所以這批文件不是終點——後面接著一張待施工清單,把該升級成物理防線的規則一條條標好。第一條就很具體:模型要在 Telegram 說「已下單」之前,先查交易紀錄裡 30 分鐘內真的有這筆單,查無就擋下——把「謊稱下單很便宜」那個悖論,用一支小 hook 收掉。
一個月後我會回來對答案:交接信裡預測的八種腐化方式,Opus 跟 Sonnet 到底中了幾種。







