我自己實測過兩種版本的CLAUDE.md:
- 一個是寫到100行,很完整很安心那種CLAUDE.md
- 一個是砍到35行,剩下全部丟去
.claude/rules/
那為什麼會這樣?
CLAUDE.md,其實是「User Message」,不是System Prompt
也就是說,它不是什麼最高權限的設定,而是在系統prompt後面,被加進來的一段「使用者訊息」。
而且啟動的時候,還會一起塞一堆東西進去:
- auto memory
- MCP tool
- skills
- 各種context
所以問題來了, 你的CLAUDE.md,會被「淹沒」。而且不是單一原因,是4種機制一起打你。
① 越後面越沒存在感(Recency Bias)
LLM超現實的,它會比較重視「最近講的話」。
所以當你對話到第50輪的時候,CLAUDE.md基本上已經是「遠古訊息」。
新指令直接蓋過你原本的規則。
② 注意力被稀釋(Attention Dilution)
context越長,每個token分到的注意力就越少。
原本35行吃到的注意力,被整個聊天紀錄稀釋掉。
就像你在開會,10個人講話還好,變100個人直接聽不清楚。
③ 指令打架(Instruction Drift)
你一定有做過這種事吧:
- 「這次先不要寫測試」
- 「這段先例外一下」
久了之後就變成,臨時指令 > 原本規則
然後CLAUDE.md就被默默覆蓋掉。
④ 被壓縮掉(Context Compression)
Claude會自己把長對話壓縮。
但壓縮的時候, 細節會消失。
你精心寫的規則,很可能只剩模糊版本。
所以你會發現一件事: 不是你寫的不夠好,是它「撐不到後面」。
那到底該怎麼寫?
重點不是行數,而是每一行「值不值得佔注意力」
我用一個超簡單的概念講, CLAUDE.md 每一行 = 在燒「注意力預算」
✅ 超值得寫的(CP值爆高)
例如:
Next.js 15TypeScript strict
這種一行直接決定整個生成方向。超好。
❌ 不值得寫的
例如:
- 2 space indent
- 要加分號
- import排序
這些交給 Prettier / ESLint 就好了,你幹嘛浪費Claude的腦力做這種事啦。
⚠️ 最容易被忽略,但最強的
其實是這種行動原則(Behavior Rules)
例如:
- 超過3步一定要先plan
- 沒看code不能寫code
這種東西很誇張, 它不是在控制「結果」,是在控制「思考方式」
講白一點:
- 技術棧 → 控制你做什麼
- 行動原則 → 控制你怎麼思考
而後者,影響更大。
那多的內容怎麼辦?
就丟去 .claude/rules/
這東西超神的地方在,它是「需要的時候才注入」
比如:
- 你寫 React → 才載 React rules
- 你寫 test → 才載 testing rules
不像CLAUDE.md, 一開始丟進去 → 然後慢慢被遺忘
.claude/rules/ 是在用到的當下,插在「最新位置」,所以效果反而更強,
結論其實超簡單(但很多人做不到)
CLAUDE.md不是寫越多越好, 是寫「最有影響力的那幾行」。
我自己的整理會變成這樣,留在 CLAUDE.md 的
- 專案是什麼(超短)
- 技術棧(含版本)
- command
- 結構
- 行動原則(最重要!)
丟去 rules 的
- React規範
- API規範
- testing規範
直接不要寫的
- 過時code
- README內容
- 「寫乾淨code」這種廢話(Claude本來就會)
最後一個很關鍵但很少人講的點
你其實在「設計一個AI同事」
不同設定,會得到完全不同的Claude:
- 極簡派 → 快但很乾
- 設計派 → 很嚴謹但慢
- 自動駕駛 → 幫你做一堆事
- 保守型 → 一直問你確認
所以問題不是 「怎麼寫CLAUDE.md」
而是 「你想跟什麼樣的Claude一起工作?」
結論
如果你現在CLAUDE.md寫超長、什麼都想控制,你其實在做一件事: 把注意力浪費在低價值的地方














