上下文壓縮是什麼,跟直接刪掉舊訊息有什麼不同?
上下文壓縮(compaction)指的是把一段已經進行很久的對話或任務歷程,自動整理成一份精簡摘要,取代逐字保留的原始內容,藉此釋放上下文窗口的空間。這跟單純刪除舊訊息不一樣——刪除是直接捨棄資訊,壓縮則是嘗試保留其中的關鍵結論、已達成的共識、還沒解決的問題,只是用更精簡的形式呈現。
對使用者來說,理想的壓縮應該是「看不太出來」的——對話還是能延續下去,模型依然記得前面討論過的重點方向,只是不再逐字保留每一句話的原文。
上下文壓縮為什麼會出現,解決了什麼問題?
即使上下文窗口變得越來越大,長時間執行的任務(例如多輪除錯、長篇研究協作、agent 連續執行數十個步驟)還是有可能把窗口塞滿,或是即使沒塞滿,內容量過大也會導致上下文腐化,讓模型抓取重點的準確率下降。壓縮機制的出現,就是為了在「不中斷任務」的前提下,延長一個對話或任務能持續運作的時間。
對需要長時間運作的 agent 應用來說,這一點特別關鍵:如果每次接近窗口上限就必須整個重啟對話,使用者體驗和任務連貫性都會受到影響,自動壓縮讓系統可以在背景默默處理這件事,不打斷使用者的工作流程。
上下文壓縮具體怎麼運作,有哪些常見做法?
常見的實作方式:一是「滾動式摘要」——當對話累積到接近某個 token 門檻時,把最早期的一段內容摘要成幾句話,取代原文放回上下文,隨對話繼續進行,這個摘要範圍會持續往前推進;二是「選擇性保留」——優先保留使用者明確標記重要、或系統判斷為關鍵決策點的內容,其餘背景性資訊優先壓縮;三是「工具結果精簡」——像是 agent 執行任務時產生的大量中間輸出(例如程式碼執行結果、搜尋結果),通常在完成任務後就會被壓縮成結論性摘要,不需要保留完整原始輸出。
這些做法的共同挑戰在於:壓縮的判斷標準很難完全自動化,如果摘要漏掉了後續會用到的細節,反而會製造新的問題。
上下文壓縮對我有什麼影響,實務上該注意什麼?
如果你在用 Claude 進行長時間任務(長篇寫作協作、多步驟 agent 工作流),了解壓縮機制存在,能幫助你判斷「模型好像忘記前面的細節」是不是壓縮造成的正常現象,而不是模型出錯。如果發現某個早期確立的重要限制條件(例如「這份文件不能用被動語態」)在對話後段被忽略,很可能是壓縮時這個細節被摘要掉了,這時候直接重新明確講一次,通常比追究原因更有效率。
對於真正關鍵、不能被壓縮遺漏的規則或限制,實務上建議定期在對話中重申,或是把它們獨立整理成一份簡短清單反覆貼上,而不是完全仰賴系統自動判斷什麼該保留。
Claude Code 在執行長時間的多步驟編碼任務時,會在對話累積到一定長度後自動觸發壓縮,把已完成步驟的詳細過程(例如逐行的程式碼修改紀錄)摘要成「已完成:修正登入模組的空指標錯誤,新增單元測試」這樣的結論句,讓後續步驟能在不塞爆上下文的情況下繼續進行。
上下文壓縮的優點是能延長長時間任務的可持續運作時間,避免頻繁重啟對話;缺點是壓縮判斷標準難以完全自動化,重要細節有可能在摘要過程中被遺漏,對精確度要求極高的任務(例如法律文件逐字比對)需要額外留意並主動重申關鍵限制。