有時候 Codex 開啟歷史對話會慢得像在翻一本很厚的舊帳本。點一下歷史記錄,等半天;再點一下,繼續等。你開始懷疑網路,懷疑遠端主機,最後甚至開始懷疑自己是不是把太多東西塞進同一個會話裡了。

先別急著做資料庫手術。最簡單的辦法是:直接新開一個 Codex 對話,讓 Codex 判斷為什麼慢,並讓它幫你清理歷史記錄。

這聽起來有點繞:Codex 慢了,找 Codex 修 Codex。但實際很好用,因為慢的往往是舊對話載入、日誌膨脹、工作區掃描或遠端環境狀態,而新對話通常還能正常啟動。

先換一張乾淨桌子

如果某個歷史對話開啟特別慢,不要一直在那個舊對話裡硬等。可以先開一個新的 Codex 對話,然後直接這樣說:

我在目前機器上開啟 Codex 歷史對話很慢。
請你判斷可能原因,並先用只讀方式檢查 ~/.codex、目前工作區大小、
日誌文件、session 數量和資料庫大小。
不要刪除任何文件,先告訴我風險和建議。

重點是讓它先判斷,不要讓它一上來就刪除。新對話沒有背著舊上下文跑,反而更適合做這個「場外裁判」。

讓 Codex 先看幾件事

可以讓 Codex 按順序檢查:

1. ~/.codex 目錄裡有沒有特別大的文件;
2. sessions 目錄裡的會話數量和最大文件;
3. logs_2.sqlite 是否明顯膨脹;
4. state_5.sqlite 和 session_index.jsonl 是否正常;
5. 目前專案是否有巨大的 node_modules、dist、日誌或快取;
6. 遠端主機磁碟空間是否快滿。

如果你是在小型 VPS 上使用 VS Code Remote + Codex,這一步尤其重要。磁碟只有幾 GB 的機器,一旦日誌、建置快取、依賴目錄一起膨脹,體驗就會突然變得很黏。

一個更好用的提示詞

我更推薦把需求說得具體一點:

請你幫我排查 Codex 歷史對話載入慢的問題。

要求:
- 先只讀檢查,不要修改文件;
- 說明哪些文件可能影響歷史載入;
- 區分「可以安全清理」和「不要隨便動」的內容;
- 如果需要清理,請先給備份方案;
- 如果確認可以清理,請幫我清理 Codex 歷史記錄;
- 最後告訴我如何回到 VS Code Codex 首頁確認結果。

這樣 Codex 通常會先列出檢查命令,再根據輸出判斷是不是日誌庫、會話文件、專案快取或磁碟空間的問題。

讓它直接清理歷史記錄

如果你只是想讓歷史首頁變清爽,可以繼續對新對話說:

請幫我清理 Codex 歷史記錄。
要求:
- 先告訴我要清理哪些文件或記錄;
- 清理前做必要備份;
- 不要影響目前認證和外掛設定;
- 清理完成後告訴我怎麼在 VS Code Codex 首頁確認。

清理完成後,回到 VS Code,開啟 Codex 首頁或刷新 Codex 面板,就會看到歷史記錄已經被清掉或明顯變少。這個回饋很直觀:不用盯著資料庫大小猜,首頁列表自己會告訴你結果。

常見結論

排查後常見會遇到幾種情況。

第一種是舊會話太長。這個時候不一定要修,直接把任務拆到新對話裡就行。舊會話留著當資料,新會話負責繼續幹活。

第二種是 ~/.codex/logs_2.sqlite 變得很大。它是日誌庫,不等於你的真正對話歷史。通常需要先備份,再清理低價值日誌,最後壓縮資料庫。

第三種是目前工作區太胖。比如 node_modules、dist、臨時建置目錄、下載文件堆在一起,Codex 和 VS Code Remote 都會被拖累。

第四種是遠端 VPS 儲存快滿。磁碟一緊張,很多東西都會變慢,包括 shell、編輯器、日誌寫入和資料庫操作。

真要清理時,別裸奔

如果 Codex 判斷是日誌庫膨脹,可以讓它生成一套更穩的步驟:

請給我一個保守清理方案:
1. 先備份 ~/.codex/logs_2.sqlite;
2. 只清理 TRACE、DEBUG 和舊 INFO;
3. 保留 WARN、ERROR;
4. 執行 quick_check;
5. 清理前後顯示文件大小;
6. 不要刪除 sessions、state_5.sqlite、session_index.jsonl。

這裡最重要的是最後一句:不要誤刪真正的會話歷史。sessions、state_5.sqlite、session_index.jsonl 這些東西要謹慎對待。

什麼時候什麼都別動

如果你正在排查 Codex 本身的異常,或者準備把日誌交給上游分析,就先別清理。讓 Codex 幫你打包資訊、列出文件大小、說明現象就好。

如果資料庫健康檢查失敗,也不要急著刪。先備份,再讓 Codex 判斷是恢復、複製還是重建索引。慢可以忍一會兒,誤刪會比較疼。

小結

Codex 歷史對話載入慢時,不必第一時間衝進 ~/.codex 手動開刀。更省心的做法是:

新開 Codex 對話 -> 讓它只讀檢查 -> 讓它判斷原因 -> 讓它清理歷史 -> 回到 VS Code Codex 首頁確認

這就像桌面太亂時先換一張乾淨桌子,再請人幫你一起看哪一堆該收、哪一堆不能碰。簡單、穩,也更不容易把真正的歷史對話弄丟。