跳至主要內容

為什麼 Claude Code 有時候不聽話?從注意力機制到 Session 管理的白話解釋


Claude Code 偶爾會不聽話,遇到時真的會氣到半死。

例如今天就不經過我的同意,找其他圖片蓋過我的原始圖片。

AI 好用,但是有時會犯蠢,這是因為它的注意力是有限的資源。

你塞越多文字給它,每一段文字分到的注意力就越少。有可能你寫的規則、指令完全被 AI 忘記。

解決方法是:

  • 保持 Session 乾淨
  • 指令精準
  • 做完一件事就換新對話

Claude Code 畢竟不是人類

因為我們能夠使用自然語言跟 AI 對話,所以常常會覺得 AI 就像是人類一樣的智慧體。

可是它畢竟不是人類,所以當我們要使用 AI 的時候,必須要心裡面記住,它是有很多限制的。

你可以把它想像成一個高智商,但卻是金魚腦的生物,它完全不記得關於你的任何事情。

每次你跟它對話,它就先閱讀你提供給他的筆記(規則、你的指令、之前的對話紀錄),然後再回覆你。

它沒有真正的「記憶」,只有當下桌上看得到的那些紙。


Claude Code 遵守的規則,像一個三層蛋糕

第一層(蛋糕底):模型自身的規則

這是 Anthropic 在訓練 Claude 模型時加入的。

比如不能教人做危險物品、不能洩漏個人隱私。

我們一般來說沒辦法改變這一層。

第二層(奶油層):Claude Code 的系統提示詞

當你啟動 Claude Code 時,工具會在你看不到的地方,偷偷在對話最前面塞入一大段「系統提示詞」(System Prompt)。

這段文字告訴 Claude:

  • 它有哪些工具可以用(讀檔案、改程式碼、執行終端指令⋯⋯)
  • 什麼操作需要先問使用者(刪除檔案、推送程式碼⋯⋯)
  • 回答的風格要求(簡潔、不加 emoji⋯⋯)

這段系統提示詞非常長,加上工具定義,輕鬆吃掉數萬字。

第三層(裝飾層):你的規則

在專案根目錄下的 CLAUDE.md 檔案,或是技能 SKILL.md ,或是記憶機制,這些都會用 Markdown 格式紀錄,它們才是我們主要能改變的部分。

你可以在裡面寫「用繁體中文回答」「不要動 config/ 資料夾」,Claude Code 就會(盡量)照做。

蛋糕底(模型規則)永遠贏過奶油(系統提示詞),奶油永遠贏過裝飾(你的規則)。 你不能在 CLAUDE.md 裡寫「忽略所有安全規則」,蛋糕底不允許。


為什麼有時候不聽話?聚光燈理論

你明明寫了規則,Claude Code 為什麼還是會無視?

答案藏在注意力機制(Attention Mechanism)裡。

想像 Claude 的大腦裡有一支「聚光燈」。每次要產生下一個字的時候,這支聚光燈會掃過他的所有筆記資料,決定「現在該注意哪些段落」。

問題是,聚光燈的亮度是有限的。

筆記越多,分給每份筆記的光就越弱。這就是為什麼:

  • 你塞了 50 條規則,Claude Code 可能只真正「看到」其中 10 條——聚光燈照不到那麼多地方。
  • 對話來回了 30 輪之後,你最開始說的「請用繁體中文」已經被埋在一大疊後續對話之下——聚光燈更傾向照最近的文字。
  • 規則寫得太籠統(「寫好一點」),聚光燈掃過去也抓不到具體動作,不如寫「每個函數加上錯誤處理」。

這不是 Claude Code 故意不聽話,而是它的注意力被稀釋了。


為什麼不能塞太多文字?

每個 AI 模型都有一個「Context Window」,代表單次閱讀上限。

Claude Opus 可以讀取約 100 萬字,看起來很多對吧?

但實際上:

  • 系統提示詞已經占掉一大塊:Claude Code 的系統提示詞加上工具定義,輕鬆吃掉數萬字。
  • 每一輪對話都會堆疊:你說的話、Claude 的回答、工具的輸出,全部算入給 AI 閱讀的筆記資料。
  • 筆記太多就得丟:當對話超過上限,系統會自動壓縮(或直接丟棄)早期的對話,你精心寫的指令可能就這樣被清掉了。

即使桌面還沒滿,紙張越多,聚光燈就越分散。

Context Window 只是代表「最多讀多少文字」,但注意力機制決定「真正看到多少」。這兩個是不同的瓶頸。

你塞了一整本操作手冊給 Claude Code,它不會像人類一樣「讀完記住」。它每次回答都要重新掃描所有文字,然後聚光燈只照到一部分。


為什麼做完一件事就該換 Session?

你每次完成一個任務,最好開啟新對話,專有名詞叫做 Session 。

原因一:乾淨的白板 = 更聽話的 Claude Code

新 Session 就像一張乾淨的白板。只有系統提示詞、記憶機制文件,以及專案規則與技能( CLAUDE.mdSKILL.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 都會被載入,等於你的指令永遠在桌面最顯眼的位置。如果你有需要,也能讓 Claude Code 幫特殊流程寫成技能。


實用小技巧

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