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