Opus 5 的 CLAUDE.md 該怎麼寫:為什麼三句話讓同個任務貴一倍
Opus 5 出來後,舊的 CLAUDE.md 反而拖累它。官方建議改成減法,這篇講清楚該怎麼寫、為什麼一句舊的 double-check 指令會讓任務成本翻倍,並用 18 次對照實驗驗證。
大部分人的 CLAUDE.md 是一年前寫的。
那時候的模型會偷懶、會留 TODO、會宣稱做完其實沒做,所以大家補上「完成後請 double-check」這類保險句,補了就沒再回頭看。到了 Opus 5,Anthropic 在官方文件裡說了一件反直覺的事:這些句子現在是負擔,不是保險。
這篇講三件事:Opus 5 的 CLAUDE.md 官方建議怎麼寫、為什麼一句舊指令就能讓成本翻倍,以及你現在該怎麼改。最後那 18 次對照實驗只是用來確認前面說的不是憑感覺。
官方的核心轉變:從加法變減法
過去寫 CLAUDE.md 的直覺是加法。模型哪裡不放心,就補一條規則把它框住。規則越多,感覺越安全。
Opus 5 把這個直覺反轉了。官方文件反覆出現的動作是「移除」,不是「新增」。它的能力已經內建了過去要靠指令補的行為,你再寫一次,等於疊了兩層。
具體到 CLAUDE.md,官方建議可以分成該刪的和該留的兩邊。
該刪掉的(這些會讓它做過頭)
- 驗證指令。像「完成後 double-check」「非顯而易見的任務要加最終驗證步驟」「用 subagent 複查」。Opus 5 本來就會自我驗證,你再叫它一次,兩層疊起來變成過度驗證
- 要求重複檢查的自我修正指令。像「回答前再次確認」「回覆前重新驗證」。它已經會在過程中抓自己的錯,額外指令只是增加成本
- 叫它別思考的規則。這類指令反而會讓內部標籤洩漏到輸出裡
該留、甚至該明講的(這些它不會自己判斷)
- 回覆長度。effort 參數控制的是它想多久,不是講多少,想要簡短就得直接寫出來
- 文件長度校準。Opus 5 寫進檔案的報告普遍比前代長,會產出文件的話要明講「不要用填充段落灌水」
- 任務範圍界線。如果你習慣只丟半句話,補一句「做被要求的範圍,不要自行擴大」有意義;但指令本身已經講清楚時,這條可以省
- 子代理的節制規則。Opus 5 比前代更愛派 subagent,成本敏感的話要明確限制什麼情況才值得
一句話總結:Opus 5 的 CLAUDE.md,刪掉「怕它做錯」的句子,留下「它不會自己知道」的偏好。
為什麼三句話能讓任務貴一倍
刪驗證指令這件事,聽起來像是省了幾個字的差別。實際上不是。真正的成本不在那幾個字,在它們引發的連鎖反應。
機制是這樣的:
- Opus 5 收到任務,本來會跑固定幾輪就交件
- CLAUDE.md 裡的 double-check 指令,要求它交件前再驗一次
- 驗證需要它重新讀一遍自己的產出、再跑幾輪
- 每多跑一輪,整份 context 就要被重新讀取一次
第四點是關鍵。CLAUDE.md、專案設定、對話歷史這些固定內容,在 Claude Code 裡是靠 cache 省錢的,快取命中時幾乎免費。但「幾乎免費」不等於「不用錢」,每一輪都要付一次快取讀取的費用。
所以成本的真正公式接近:快取讀取量 × 輪數。double-check 指令不會讓單輪變貴多少,但它會讓輪數翻倍,於是同一份 context 被反覆讀了好幾次,帳單就是這樣長出來的。
這也解釋了一個很多人搞錯的方向。市面上省 token 的教學大多在教你怎麼讓回答變短,但如果你的成本結構是固定 context 占大頭(多數 Claude Code 使用者都是),該砍的不是輸出長度,是那些會讓它多跑一輪的指令。話變多不太花錢,多跑幾輪才花錢。
實驗:把「貴一倍」量出來
上面是機制推論。為了確認不是憑感覺,我們跑了對照實驗。
三組的差別只有 CLAUDE.md 裡放什麼,用的都是同一個 Opus 5。
| 組別 | CLAUDE.md 內容 |
|---|---|
| 空白組 | 只有語言設定,沒有任何行為指令 |
| 舊指令組 | 加上舊時代的保險句:double-check、加最終驗證步驟、派 subagent 複查 |
| 官方組 | 換成官方建議:任務範圍界線、回覆長度、文件長度 |
兩個刻意做小的任務,各跑 3 次,共 18 次。任務 A 是修一個 Python 函式的空值檢查(指令明講其他地方不要動),任務 B 是把一份約 900 字的報告寫成 200 字摘要。每次都用乾淨的初始檔案、開全新工作階段。
結果如下,重點看最右邊兩欄的品質有沒有跟著成本一起變。
| 任務 B:寫 200 字摘要 | 成本 | 輪數 | 秒數 | 三重點齊全 |
|---|---|---|---|---|
| 空白組 | $0.2216 | 3.0 | 36.2 | 3/3 |
| 舊指令組 | $0.4627 | 9.7 | 102.1 | 3/3 |
| 官方組 | $0.2046 | 3.0 | 33.7 | 3/3 |
寫個 200 字摘要這種小事,舊指令組花了 9.7 輪、$0.46,是官方組的 2.26 倍。而三組的摘要全部涵蓋了指定的三個重點,品質完全一樣,多花的那一倍錢沒買到任何東西。
把 token 拆開,正好印證前面的機制推論。
| 任務 B | cache read | output |
|---|---|---|
| 空白組 | 68,785 | 2,161 |
| 舊指令組 | 277,600 | 5,922 |
| 官方組 | 68,750 | 1,702 |
舊指令組的 output 只多 2.7 倍,但 cache read 多了 4 倍。貴的地方不在它多寫的字,在它為了驗證而多讀的那幾輪 context。這就是「輪數不是字數」的直接證據。
任務 A(修函式)的差距沒這麼誇張,舊指令組多花 18%,但方向一致,而且逐次看沒有重疊,不是單次噪音。任務越簡單,驗證的固定成本占比越高,被懲罰的比例反而越大。
完整數據與摘要原文
任務 A:修一個函式
| 組別 | 成本 | output | 輪數 | 修對 | 沒動到別的地方 |
|---|---|---|---|---|---|
| 空白組 | $0.1614 | 576 | 3.3 | 3/3 | 3/3 |
| 舊指令組 | $0.1866 | 911 | 4.3 | 3/3 | 3/3 |
| 官方組 | $0.1578 | 477 | 3.0 | 3/3 | 3/3 |
九次修檔全部修對、全部沒去動旁邊那三個不該動的函式(其中兩個寫得不太好,是刻意留的誘餌)。官方文件提醒 Opus 5 會自行擴大範圍,在這裡沒有發生,因為我們的指令就寫了「其他地方不要動」。指令講清楚時,範圍規則可以省。
三組的摘要原文(任務 B 第 1 次)
空白組(376 字)
流程改動:2026 年 1 月起由「單人全倉揀貨」改為「分區揀貨+波次合併」。依週轉率切成 A–D 四區,揀貨員固定顧一區;系統每 20 分鐘把訂單合併成波次同步下發,各區品項送中央合流帶歸戶後打包。配套為揀貨車掃碼確認、A 區高週轉品項移到靠近合流帶的黃金儲位。成效(2026 年 1–6 月):單筆揀貨時間 8.4 分鐘降至 5.6 分鐘(-33%),揀錯率 3.1% 降至 1.2%,日均走動 14 公里降至 5.2 公里。人力不變下日均單量由 1,100 單增至 1,650 單,年化約 180 萬元。待解問題:A 區尖峰仍塞車;合流站成為新單點瓶頸;新人訓練期由一週拉長到三週。
官方組(402 字)
林口倉原採「單人全倉揀貨」,日均單量升到 1,100 單後出現走動距離過長、A 區走道壅塞、揀錯率攀升。2026 年 1 月改為「分區揀貨+波次合併」:依週轉率分四區、每人固定顧一區,系統每 20 分鐘合併一個波次同步下發,各區品項送中央合流帶依訂單歸戶;配套加裝掃碼確認,並將 A 區高週轉品移到靠合流帶的黃金儲位。導入六個月成效:單筆揀貨時間由 8.4 分鐘降到 5.6 分鐘(-33%),揀錯率由 3.1% 降到 1.2%,走動距離由 14 公里降到 5.2 公里;人力未增加,日均處理量由 1,100 單提升到 1,650 單,年化約 180 萬元。尚未解決三項:尖峰 A 區仍塞車;合流站成為新單點瓶頸;新人訓練期拉長到三週。
三份的資訊密度其實差不多,長度差異來自敘述詳略,不是有沒有灌水。
那加上官方的新指令會更好嗎?其實差不多
到這裡有個容易誤會的結論:既然舊指令會變貴,那換成官方的新指令是不是就會變便宜?
實驗的答案是幾乎沒差。官方組對上什麼都不寫的空白組,兩個任務只差 2% 到 8%,在這個樣本數下是噪音。
換句話說,讓 CLAUDE.md 變便宜的動作是刪掉舊的,不是加上新的。 這跟市面上「裝某某 skill 立省幾成」的說法方向相反。至少在這兩個任務上,往設定檔裡加東西不會讓它變便宜,把過時的東西拿掉才會。
官方那段唯一觀察到的好處是穩定:它三次都跑 3 輪、成本咬在 1% 內,空白組則有一次多跑了一輪。樣本太小不能下定論,但如果你要跑大批自動化任務,這種可預測性比省 2% 更值錢。
你現在該怎麼改
不用重寫整份 CLAUDE.md,照優先序做前面幾件就好。
- 先刪驗證指令。打開 CLAUDE.md 搜尋「double-check」「驗證」「再確認」「複查」,刪掉。這是唯一有實測數字撐腰的動作,也是投報率最高的
- 不用急著貼官方的新規則。要貼可以,但別期待省錢,它的價值在讓行為穩定
- 想省錢就盯輪數,不是字數。優化的方向是減少會觸發額外幾輪的指令,不是壓縮輸出長度
- 真的要控制輸出長度,在程式端做。這點下面單獨講
關於第四點:我們三組摘要沒有一組壓進 200 字,實際落在 308 到 402。prompt 直接寫「200 字」沒用,CLAUDE.md 加文件長度規則也沒用。原因是官方那條的原意是「不要灌水」而不是「遵守字數」,實際產出確實沒灌水,只是就是比你要求的長。如果你的產品會把模型寫的文件直接呈現給使用者,字數這關現階段得靠程式截斷,不能指望提示詞。
最後一件這個實驗答不了的事:調 CLAUDE.md 的天花板在哪。我們最好與最差差 2.26 倍,但那是同一個模型內的差距。如果任務根本不需要旗艦模型,換模型的槓桿會大得多,我們在學測數學 B 的九模型實測裡量過同一份題目最多能差到 35 倍。先把 CLAUDE.md 的舊指令刪乾淨,再回頭問這個任務是不是用錯了模型,順序是這樣。
這個實驗的限制
- 只測了 Opus 5,沒跟其他模型對照。官方把這寫成 Opus 5 的行為變化,但「多跑幾輪就重讀 context」的機制在別的模型上大概率也成立,我們沒有數據可以斷定它是 Opus 5 獨有
- n=3 是小樣本,只看方向,不算統計顯著
- 官方組是整包組合,不是單因子拆解,只能說「照官方改有差」,不能歸因到某一句話
- 任務刻意做小,官方講的是長時間代理任務,在那種場景差距可能更大
- 無頭模式執行,數字不含互動介面的額外開銷,跟你日常帳單不能直接對齊
- 測試用的檔案是虛構案例,你可以換成自己的真實任務重跑