為什麼 Claude Code 有時候不聽話?從注意力機制到 Session 管理的白話解釋
Claude Code 偶爾會不聽話,遇到時真的會氣到半死。
例如今天就不經過我的同意,找其他圖片蓋過我的原始圖片。
AI 好用,但是有時會犯蠢,是因為它的注意力是有限的資源。
你塞越多文字給它,每一段文字分到的注意力就越少。規則被淹沒、指令被遺忘,都是這個機制的副作用。
解決方法是:
- 保持 Session 乾淨
- 指令精準
- 做完一件事就換新對話
Claude Code 不是人類,而是一個 Open Book 考生
很多人把 Claude Code 當作人類——你交代任務,它就照做。
雖然它能用自然語言溝通,但它到底不是人類,有很多限制。
真的要形容的話,Claude Code 就像是一個正在 Open Book 考試的考生。
每次你跟它對話,它就先閱讀桌上攤開的所有資料(規則、你的指令、之前的對話紀錄),然後寫出一個回答。
它沒有真正的「記憶」,沒有「理解」,只有當下桌上看得到的那些紙。
Claude Code 遵守的規則,像一個三層蛋糕
第一層(蛋糕底):模型自身的規則
這是 Anthropic 在訓練 Claude 模型時「烤進去」的。
比如不能教人做危險物品、不能洩漏個人隱私。這一層你改不了,工具也改不了,是絕對的底線。
第二層(奶油層):Claude Code 的系統提示詞
當你啟動 Claude Code 時,工具會在你看不到的地方,偷偷在對話最前面塞入一大段「系統提示詞」(System Prompt)。
這段文字告訴 Claude:
- 你有哪些工具可以用(讀檔案、改程式碼、執行終端指令⋯⋯)
- 什麼操作需要先問使用者(刪除檔案、推送程式碼⋯⋯)
- 回答的風格要求(簡潔、不加 emoji⋯⋯)
這段系統提示詞非常長,加上工具定義,輕鬆吃掉數萬字。
你通常看不到這一層,但它時時刻刻在影響 Claude Code 的行為。
第三層(裝飾層):你的規則
這是你可以控制的部分——透過專案根目錄下的 CLAUDE.md 檔案。
你在裡面寫「用繁體中文回答」「不要動 config/ 資料夾」,Claude Code 就會(盡量)照做。
蛋糕底(模型規則)永遠贏過奶油(系統提示詞),奶油永遠贏過裝飾(你的規則)。 你不能在
CLAUDE.md裡寫「忽略所有安全規則」——蛋糕底不允許。
為什麼有時候不聽話?聚光燈理論
你明明在 CLAUDE.md 寫了規則,Claude Code 為什麼還是會無視?
答案藏在注意力機制(Attention Mechanism)裡。
想像 Claude 的大腦裡有一支「聚光燈」。每次要產生下一個字的時候,這支聚光燈會掃過桌上所有的文字,決定「現在該注意哪些段落」。
問題來了:聚光燈的亮度是有限的。
桌上的紙越多,分給每張紙的光就越弱。這就是為什麼:
- 你塞了 50 條規則,Claude Code 可能只真正「看到」其中 10 條——聚光燈照不到那麼多地方。
- 對話來回了 30 輪之後,你最開始說的「請用繁體中文」已經被埋在一大疊後續對話之下——聚光燈更傾向照最近的文字。
- 規則寫得太籠統(「寫好一點」),聚光燈掃過去也抓不到具體動作,不如寫「每個函數加上錯誤處理」。
這不是 Claude Code 故意不聽話,而是它的注意力被稀釋了。
為什麼不能塞太多文字?
每個 AI 模型都有一個「Context Window」——你可以把它想成一張辦公桌的桌面大小。
Claude Opus 的桌面可以放約 100 萬字,看起來很大對吧?
但實際上:
- 系統提示詞已經占掉一大塊。Claude Code 的系統提示詞加上工具定義,輕鬆吃掉數萬字。
- 每一輪對話都會堆疊。你說的話、Claude 的回答、工具的輸出,全部留在桌上。
- 桌面滿了就得丟東西。當對話超過上限,系統會自動壓縮(或直接丟棄)早期的對話——你精心寫的指令可能就這樣被清掉了。
更關鍵的是:即使桌面還沒滿,紙張越多,聚光燈就越分散。
Context Window 是「能放多少」,但注意力機制決定「真正看到多少」。這兩個是不同的瓶頸。
你塞了一整本操作手冊給 Claude Code,它不會像人類一樣「讀完記住」。它每次回答都要重新掃描所有文字,然後聚光燈只照到一部分。
為什麼做完一件事就該換 Session?
原因一:乾淨的白板 = 更聽話的 Claude Code
新 Session 就像一張乾淨的白板。只有系統提示詞和你的 CLAUDE.md——聚光燈幾乎全部照在規則上。
這時候 Claude Code 的規則遵守率最高。
隨著對話進行,白板上堆滿了程式碼片段、錯誤訊息、你的追問、Claude 的解釋⋯⋯
規則被淹沒在雜訊裡,Claude Code 開始「忘記」你最初的要求。
原因二:失敗的嘗試會汙染判斷
假設你請 Claude Code 修一個 bug,它先試了方法 A 失敗、方法 B 也失敗,第三次才成功。
在同一個 Session 裡,方法 A 和 B 的錯誤思路仍然躺在桌上。當你接著問下一個問題時,聚光燈可能掃到那些失敗的嘗試,被帶偏方向。
換一個新 Session,這些「汙染」就全部消失了。
原因三:CLAUDE.md 才是真正的「記憶」
很多人捨不得換 Session,因為覺得「Claude Code 好不容易理解了我的專案」。
但其實,你應該把重要的上下文寫進 CLAUDE.md,而不是依賴對話歷史。
CLAUDE.md 在每個新 Session 都會被載入,等於你的指令永遠在桌面最顯眼的位置。
對話歷史則是越堆越深、越來越容易被忽略的舊紙張。
實用小技巧
- 一個 Session 只做一件事:修完 bug 就開新對話再做下一件事。
- 指令要具體:「用 TypeScript、不用 any、錯誤用 Result 型別處理」比「寫好一點的程式」有效十倍。
CLAUDE.md不要太長:精簡到重點最有效——聚光燈照得到的範圍有限。- 重要指令放最前面和最後面:注意力機制對文本的頭和尾最敏感(心理學上叫「首因效應」和「近因效應」,AI 也一樣)。
- 發現 Claude Code 開始亂來,直接換 Session:不要在一個被汙染的對話裡反覆糾正——那只會讓桌面更亂。