跳至主要內容

為什麼 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 都會被載入,等於你的指令永遠在桌面最顯眼的位置

對話歷史則是越堆越深、越來越容易被忽略的舊紙張。


實用小技巧

  1. 一個 Session 只做一件事:修完 bug 就開新對話再做下一件事。
  2. 指令要具體:「用 TypeScript、不用 any、錯誤用 Result 型別處理」比「寫好一點的程式」有效十倍。
  3. CLAUDE.md 不要太長:精簡到重點最有效——聚光燈照得到的範圍有限。
  4. 重要指令放最前面和最後面:注意力機制對文本的頭和尾最敏感(心理學上叫「首因效應」和「近因效應」,AI 也一樣)。
  5. 發現 Claude Code 開始亂來,直接換 Session:不要在一個被汙染的對話裡反覆糾正——那只會讓桌面更亂。