Codex 的壓縮機制竟然用了加密摘要?深入解析 AI 編碼工具的 Session 交接設計
用久了 Claude Code 就會遇到 context 滿載的問題。有人逆向工程了 Codex 的內部壓縮流程,發現它用 AES 加密摘要來做 session 交接——這篇帶你看懂背後的設計邏輯。
快速摘要
用久了 Claude Code 就會遇到 context 滿載的問題。有人逆向工程了 Codex 的內部壓縮流程,發現它用 AES 加密摘要來做 session 交接——這篇帶你看懂背後的設計邏輯。
用 Claude Code 用久了,遲早會看到那句「Compacting conversation…」。出現之後,回答開始飄移,等待時間也變長。200K token 的 context window 比你想像中消耗得更快。
外面一直有人在說 OpenAI 的 Codex 處理這個問題的方式比較聰明,所以我把所有找得到的公開分析都翻了一遍。
摘要化,本質上還是一種遺忘
對話變長之後,AI 忘掉前面說的東西是結構性的限制。Context window 最多就是 200K token,一個稍微大一點的 coding session 輕輕鬆鬆就超標。就算做了摘要,原始對話也消失了——準確度的下降是必然的。
我自己就親身踩過幾十次這個坑:壓縮之後再問「我們之前討論的那個 function」,得到的答案完全不對。
- Claude Code 預設的 200K token window,跑一次大型 refactoring 就燒光了
- 摘要取代原文 → 細節 context 流失 → 回答品質下降
- Tool call 的結果在摘要裡被壓平,這個損失特別嚴重
Codex 的壓縮機制:原來是「加密摘要」
Krafton 的 CAIO Kangwook Lee 用兩次 prompt injection 逆向工程了 Codex 的內部流程,結果相當有意思。
當 Codex 模型呼叫 compact() API 時,伺服器端會有另一個 LLM 對對話進行摘要,然後把結果用 AES 加密後回傳。下一輪對話開始時,這段加密資料會被解密,加上一段「這是前一段對話的摘要」的交接 prompt,再一起送進模型。
- 內容跟開源版 Codex CLI 對非 codex 模型的壓縮 prompt 幾乎一模一樣
- 為什麼要加密目前還不清楚——可能包含了 tool call 的還原資料
- 整個流程可以用 35 行 Python 重現(Kangwook Lee 已公開腳本)
- OpenAI 官方 API 也支援透過
compact_threshold設定伺服器端自動壓縮
真正的差異在於 Session 怎麼交接
比壓縮機制本身更有意思的,是跨 session 的 context 轉移。有個開發者的自動化方案很值得參考,我把它叫做「session 交接」模式。
在壓縮發生之前,write 工具會被鎖住,然後從 JSONL session log 裡只抽出使用者訊息和 thinking block,跟原始資料相比體積縮小了 98%。接著三個 sub-agent 會搜尋原始 log 找出摘要的缺漏,最後整合成一個 resume-prompt.md 檔案。
VS Code 的 file watcher 偵測到這個檔案後,就會自動開啟新 session,無縫繼承前一個 session 的 context。
- pre-compact hook 在壓縮前鎖定寫入 → 防止在不完整狀態下修改程式碼
- JSONL → MD 轉換只保留使用者訊息 + 系統訊息 + thinking block
- Sub-agent 做 gap analysis,從原始 log 補回缺漏的資訊
- 據報導 build 效率提升了 10 倍
真正的決勝點是 Session Log 搜尋與 KV Cache
Session 資料以 JSONL 檔案形式累積,關鍵在於你能多精準地從這些資料裡撈出需要的 context。答案不是更好的摘要,而是跨 session 的檢索式搜尋。
再考慮進 KV cache 命中率,固定相同的 prompt prefix 可以同時降低成本和回應延遲。我在設計自己的 session 資料夾結構時,以 session ID 為基礎的歸檔方式對搜尋速度影響最大。搭配我昨天介紹的 QMD 做預先索引,看起來也是個很有潛力的方向。
- 保留原始 JSONL 讓你在需要時能做精確搜尋
resume-prompt.md包含前一個 session 的摘要 + gap analysis 結果 + 修改過的檔案清單- 固定 system prompt 和交接 prompt 的前綴,最大化 KV cache 命中率
- Session 歸檔自動化,讓幾十個連續 session 之間的 context 都能順暢傳遞
AI 編碼工具真正的瓶頸是 Context 管理
AI 編碼工具真正的瓶頸不是模型效能,而是 context 管理。設計一套能撈回被遺忘資訊的系統,比把摘要做得更完美更重要。
壓縮必然帶來資訊損失。重要的是同時建立兩件事:一套能把遺失資訊找回來的搜尋流程,以及一套能在 session 之間無縫傳遞 context 的交接架構。
基於 Kangwook Lee, CAIO 的分析整理。
訂閱電子報
獲取關於我最新專案、文章以及 AI 和 Web 開發實驗的更新。