# Codex 的壓縮機制竟然用了加密摘要?深入解析 AI 編碼工具的 Session 交接設計 > Author: Tony Lee > Published: 2026-03-05 > URL: https://tonylee.im/zh-TW/blog/codex-compaction-encrypted-summary-session-handover/ > Reading time: 2 minutes > Language: zh-TW > Tags: claude-code, codex, context-window, compaction, ai-coding, session-management ## Description 用久了 Claude Code 就會遇到 context 滿載的問題。有人逆向工程了 Codex 的內部壓縮流程,發現它用 AES 加密摘要來做 session 交接——這篇帶你看懂背後的設計邏輯。 ## Content 用 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](https://lnkd.in/gPw8uipE) 的分析整理。* --- Author: Tony Lee | Website: https://tonylee.im For more articles, visit: https://tonylee.im/zh-TW/blog/ This content is original and authored by Tony Lee. Please attribute when quoting or referencing.