Context Rot 是什麼,跟「超過上下文上限」是同一件事嗎?
不是。Context Rot 指的是模型輸出品質隨著輸入長度增加而逐漸下降的現象——即使對話遠遠沒有塞滿模型宣稱的上下文視窗(例如 100 萬 token 的視窗只用到 5 萬 token),品質下滑就已經開始發生了。這跟「超過上限」是完全不同的兩件事:超過上限是硬性的容量問題,模型根本裝不下更多內容;Context Rot 是軟性的、漸進的品質衰退,模型還在正常運作、還在產生回覆,只是回覆本身變得越來越不可靠。
這個詞是 Chroma 團隊在 2025 年的技術報告裡正式提出並命名的,測試了包括 Claude 4、GPT-4.1、Gemini 2.5 在內的 18 個頂尖模型,發現沒有一個模型能倖免——這代表 Context Rot 不是特定模型的個別缺陷,是所有大型語言模型處理長輸入時共通的行為模式。
為什麼會發生 Context Rot,是模型設計上的缺陷嗎?
與其說是缺陷,不如說是大型語言模型處理資訊的根本機制帶來的必然結果。模型在處理每一輪對話時,是把整段歷史重新讀一遍,而不是像人類一樣有一份持久、獨立於當下輸入的記憶;同時,模型對輸入裡每一段文字投入的注意力並不是均等的,這個「注意力預算」會隨著輸入長度增加被攤得越來越薄,越靠近開頭或中段、離目前生成位置越遠的內容,得到的關注就越稀薄。
Chroma 的研究還發現一個違反直覺的現象:結構越工整、邏輯越連貫的文件,反而比打散、雜亂的內容更容易讓模型表現變差——這暗示「把上下文整理得越乾淨越好」這個常見假設,可能沒有想像中那麼可靠,注意力機制本身對邏輯連貫的長文有一種特殊的负面反應,細節仍在研究中。
Context Rot 在實際使用中會怎麼表現出來?
幾種常見的具體症狀:模型悄悄忽略你在對話早期訂下的規則(例如格式要求、命名慣例),但不會告訴你它正在忽略;答案裡的精確定義漸漸被模糊的近似說法取代;長時間除錯的對話裡,模型可能同時看得到你三種不同的失敗嘗試、每次嘗試的錯誤訊息、以及你要求放棄某種做法的指示,這些內容全部堆疊在同一段上下文裡,模型得同時處理這些互相矛盾的資訊,結果往往是從頭重新推理反而比接著這團混亂的上下文更容易。
更棘手的是,這個過程通常沒有明顯警訊——模型不會出錯或拒絕回答,它會很有自信地產生輸出,只是這個輸出跟你一開始設定的規格,已經悄悄產生落差,你得靠肉眼比對結果跟原始要求,才會發現問題已經發生了一陣子。
身為使用者,我能做什麼來減少 Context Rot 的影響?
幾個實際可用的作法:真正重要的規則,不要只在對話開頭講一次就假設它永久有效,在接近真正需要生效的段落附近重新提一次,即使聽起來重複,也比讓它埋在很前面靠自然稀釋的命運可靠得多;如果是 Claude Code 這類工具,留意壓縮對話的指令(例如 /compact),在對話明顯拉長、但品質還沒明顯下滑之前主動整理,而不是等到已經在亂猜的時候才處理;對於固定會重複用到的規則,與其每次口頭重申,更根本的解法是寫進 CLAUDE.md 或包成 Skill,讓它在每次對話開始時就固定載入。
另外,如果 Chroma 的發現屬實——結構凌亂的內容有時反而比工整的內容表現更好——這也提醒使用者不必過度執著於把上下文「整理得很漂亮」,真正該關注的是內容本身有沒有被真正需要的地方看見,而不是排版形式。
Chroma 團隊在 2025 年的技術報告中,對 GPT-4.1、Claude 4、Gemini 2.5、Qwen3 等 18 個頂尖模型進行受控實驗,發現當關鍵資訊出現在一份 20 份文件的上下文中的第 5 到 15 份位置時,準確率下降超過 30 個百分點;即使把容易造成混淆的干擾文字都遮蔽掉,準確率仍會單純因為輸入長度增加而下滑約 7.9%——證明「上下文視窗有多大」跟「模型實際能可靠運用多少內容」是兩件不同的事。
理解 Context Rot 的優點是能提前預防問題、在對話真正變得不可靠前主動重申規則或整理上下文;缺點是這代表沒有一勞永逸的解法,即使是最先進的模型也無法免疫,使用者必須持續投入額外的心力去管理長對話,這本身就是一種隱性成本。