Codex Desktop / log health check / Mika tutorial

Codex 整個大當機?重安裝後第一步先檢查 logs_2.sqlite

最近有學員的 Codex Desktop 整個打不開,更新到最新版也沒解掉,最後重新安裝才救回來。重裝有機會救回啟動,本機任務和工作現場卻可能跟著消失。這篇講重裝後第一步先檢查 logs_2.sqlite,再把 log 健康巡檢做起來。

咪卡偵探拿放大鏡檢查 Codex 當機與 logs_2.sqlite 的封面插圖
封面是咪卡操作教學風格。這篇重點是安全巡檢與備份流程,不鼓勵亂刪 log。

這篇在講什麼

這篇用學員的實際當機畫面當案例,講四件事:logs_2.sqlite 這個本機 log 資料庫是什麼,Codex 打不開時怎麼安全處理,怎麼設定每 3 到 5 天的自動巡檢,以及怎麼讓任務和心血不跟著工具故障一起不見。所有技術說法的依據是 OpenAI Codex GitHub repo 裡的相近 issue 與原始碼,不是官方公告。

適合誰
  • 你每天靠 Codex Desktop 工作,某天它突然整個打不開,怎麼重開都進不去。
  • 你更新到最新版、甚至重裝過,還是擔心同樣狀況哪天又來。
  • 你聽過 logs_2.sqlite、WAL、VACUUM 這些字,卻不知道該不該動、會不會越弄越糟。
  • 你最怕的是工具壞掉,連帶把這幾天的任務和工作現場一起賠進去。
你會得到什麼
  • 看懂 logs_2.sqlite 是什麼、不該拿它當什麼用,知道它為什麼可能拖累 Codex 啟動。
  • 一套保守的當機處理順序,先備份、先檢查,能不亂刪就不亂刪。
  • 一段可以直接貼給 Codex 的巡檢自動化指令,預設只巡檢、不自動清。
  • 一個讓任務心血不跟著工具一起消失的工作習慣。

先講這次發生什麼事

學員的 Codex Desktop 怎麼重開都進不去,畫面顯示發生錯誤,並出現 signal=SIGKILLconfig.toml、更新 Codex、重新載入等建議。實際處理時,更新到最新版本還是沒有恢復,最後靠重新安裝才重新啟動。

Codex 發生錯誤畫面,顯示 SIGKILL 與 config 警告
實際當機畫面之一:錯誤訊息帶 SIGKILL 與 config 提示。看到這類畫面時,除了按更新,也值得檢查本機 log 資料庫。
Codex 已更新到最新版本仍顯示錯誤畫面
實際當機畫面之二:更新到最新版,既有的本機狀態問題不一定會跟著消失。
Codex 當機畫面放大版,含 SIGKILL 錯誤與處理順序整理
同一個案例的放大整理:上半是實際當機畫面,下半是這篇會走的處理順序,最後收在「log 可以清,任務和心血要自己保存」。
重裝不是終點,是新的起點 重裝有機會救回啟動,同時也可能讓本機任務、對話狀態或工作現場消失,實際影響取決於版本、安裝方式與本機資料夾是否被清掉。比較好的順序是先備份、先檢查,能移走單一 log 資料庫就不要一開始整個卸載。已經重裝的人,第一步就是把巡檢建立起來,避免問題又慢慢長回來。

先把問題定位講準

這件事很容易被講成「OpenAI 官方說 Codex 有這個 bug」。正確的說法要保守一點。

查證來自哪裡

OpenAI Codex 的 GitHub repo 裡,有多個相近 issue 指向 logs_2.sqlite 過大、corrupt log DB、WAL 持續成長,或高量 TRACE log 寫入等風險。這些是社群回報與維護者討論,不是官網公告。

該怎麼理解它

logs_2.sqlite 是值得優先檢查的可能原因之一。它不等於所有 Codex 當機的唯一答案。當機可能還有別的成因,這篇先處理這個有跡可循、又能自己安全檢查的部分。

把定位講準,後面的處理才不會走偏。我們要做的是「先檢查這個高機率又可自查的地方」,而不是斷定「當機一定是它害的」。完整 issue 連結放在文末「參考的 issue 和原始碼」。

logs_2.sqlite 到底在寫什麼?

logs_2.sqlite 是 Codex Desktop 在本機使用的 SQLite log 資料庫。可以把它理解成本機運作紀錄,記錄程式跑起來留下的診斷資料。它不是你的正式工作日誌,也不是技能包、記憶庫或成品資料夾。

會記錄的東西

時間、等級、target、錯誤訊息、tracing span、連線或工具執行狀態,以及程式運作需要留下的診斷資料。

不該拿它當什麼

它不是你的正式筆記,也不適合當成長期保存工作成果的地方。任務結論、交付物和技能包,應該另外存成自己的檔案。

不要公開原檔

log 可能包含本機路徑、錯誤片段、工具呼叫摘要或工作環境資訊。可以清理與備份,不建議拿原始資料庫到處傳。

查 repo 時看到幾個相近回報:有人把 logs_2.sqlite* 移走後,Codex 會自己重建 log 資料庫;也有人回報 WAL 檔、TRACE 等級 log 或資料庫異常導致問題。這代表它有它的脾氣,值得當成一個會長大的本機資料庫來照顧,不該放著讓它無限膨脹。

出事時怎麼處理

先看你的狀況,這裡分兩條路。手動能力比較強、或電腦上同時裝了 Claude Code,走路線一的保守完整流程。如果你還是新手,走路線二的簡單三步就好。

路線一:有操作能力,或裝了 Claude Code

如果你手動能力比較強,或同時也裝了 Claude Code,可以請 Claude Code 照下面這套保守順序處理。目標是先保留現場,再讓 Codex 重建可以重建的 log 狀態。每一步都建立在「備份在前、動手在後」之上。

第 1 步

先完全關閉 Codex,避免資料庫正在寫入時動它。

第 2 步

備份 ~/.codex/logs_2.sqlitelogs_2.sqlite-wallogs_2.sqlite-shm。三個檔案都先留一份,再處理。

第 3 步

檢查主檔、WAL、SHM 大小,並執行 SQLite quick_check。如果資料庫健康又不大,只回報狀態,不要硬清。

第 4 步

如果主檔過大、WAL 過大、筆數異常或 quick_check 不正常,先確認完整備份存在,再保留最近 48 小時 log,執行 checkpoint、VACUUM 與 PRAGMA optimize。

第 5 步

如果連安全清理都無法執行,可把 logs_2.sqlite* 移到備份資料夾,讓 Codex 重新建立 log 資料庫。這一步仍要先備份,不要直接刪除。

第 6 步

如果試過仍無法啟動,才考慮解除安裝再重裝。重裝後第一件事,就是做下一段的自動巡檢。

遇到這些狀況立刻停手 看到 database locked、Operation not permitted 或任何 SQLite 錯誤,先停下來,不要硬刪檔。另外,Codex 還開著時不要直接刪 WAL。repo 的 issue 裡有人提醒,開啟中的程式仍可能握著舊的檔案描述符,硬刪或截斷 live WAL 反而可能造成新的崩潰或資料庫狀態問題。

路線二:新手就照這三步

如果你還不熟,不用糾結那些指令,記住三步就好。

第 1 步

直接重新安裝 Codex。先接受一件事:本機任務有可能跟著消失,這種情況下也只能這樣,先把 Codex 救回來再說。

第 2 步

重啟成功後,先別急著開新任務。一開新任務,log 會繼續寫進去,很可能很快又爆滿、又當掉。所以重啟後的第一件事,是立刻把日誌清乾淨。

第 3 步

日誌清乾淨後,建立下一段的自動巡查。之後它會幫你固定做健康檢查,就不太會再走到重裝這一步。

兩條路線怎麼選 會自己下指令、或手邊有 Claude Code,就走路線一,能保留比較多現場。真的卡住、不想研究指令,就走路線二,先用重裝把工具救回來,再靠清日誌和自動巡查止血。
Codex log 健康巡檢一頁總結圖,左側六步驟,右側實際當機畫面與重點金句
一頁看完整套流程:左邊六步驟從關閉 Codex、備份、檢查到固定巡檢,右邊收在「log 可以清,任務和心血要自己保存」。

平常怎麼預防:請 Codex 幫自己做健康巡檢

與其等當機才處理,平常固定巡檢更省事。如果你每天都開 Codex,我會建議每 3 到 5 天巡一次。我自己偏向週二和週五早上各跑一次。偶爾使用的人,一週一次也夠。

日常重度使用

每 3 到 5 天檢查一次,我偏向週二、週五。門檻可設主檔大於 300MB、WAL 大於 100MB、log 筆數大於 120000,或 quick_check 不正常才維護。

偶爾使用

一週一次即可。重點是固定做健康檢查,不是每天清。發現異常時,先確認備份存在再處理。

巡檢的安全線 自動化預設只巡檢、只回報,不直接清理。達到維護門檻時,它要先停下來、輸出一段「維護交接指令」,並提醒你先完全關閉 Codex Desktop。等 Codex 關掉後,再用那段指令處理 WAL 與 VACUUM。不要在 Codex 還運作時動正在寫入的 log 資料庫。

新開一個 Codex 對話框,直接貼這段

這段指令把上面的安全線寫死在裡面:只檢查不亂清,達門檻先回報並產出維護交接指令,遇到不確定狀況立刻停手。貼之前把路徑裡的使用者名稱換成你自己的,或直接叫 Codex 用目前電腦的路徑替換。

請幫我建立一個 Codex log 健康巡檢自動化。 目標: 以台灣時間每 3 到 5 天執行一次,檢查本機 Codex Desktop 的 log 資料庫健康狀態。 預設只檢查與回報,不直接維護。 檢查對象: /Users/你的使用者名稱/.codex/logs_2.sqlite /Users/你的使用者名稱/.codex/logs_2.sqlite-wal /Users/你的使用者名稱/.codex/logs_2.sqlite-shm 限制: 不要讀取或輸出完整 log body。 不要碰 sessions、memories、skills、主知識庫內容或任何對話紀錄檔。 只回報檔案大小、筆數、時間範圍、最近一天 ERROR 數量、quick_check 結果與是否需要維護。 維護門檻: 如果 quick_check 不是 ok,或主檔大於 300MB,或 WAL 大於 100MB,或 log 筆數大於 120000,先回報需要維護,不要立刻清理,不要執行 VACUUM。 需要維護時: 1. 回報觸發原因。 2. 回報目前大小、筆數、時間範圍與 ERROR 數量。 3. 產出一段「維護交接指令」,提醒使用者先完全關閉 Codex Desktop。 4. 在這次巡檢自動化中停止,不要直接維護。 維護交接指令要包含: 1. 先建立備份資料夾: /Users/你的使用者名稱/.codex/sqlite/log-maintenance/ 2. 再完整備份 logs_2.sqlite、logs_2.sqlite-wal、logs_2.sqlite-shm 到: /Users/你的使用者名稱/.codex/sqlite/log-maintenance/ 備份檔名請包含 YYYY-MM-DD-HHMM。 3. 確認備份檔案真的存在且大小大於 0。 4. 只保留最近 48 小時 logs。 5. 執行 wal_checkpoint(TRUNCATE)。 6. 執行 VACUUM。 7. 執行 PRAGMA optimize。 8. 再跑一次 quick_check。 9. 回報處理前後大小、保留筆數、保留時間範圍、備份路徑與排程規則。 安全線: 如果遇到 database locked、Operation not permitted、SQLite 錯誤或任何不確定狀況,立即停止,不要硬刪檔,回報卡住原因。
咪卡操作提醒 如果你不知道自己的使用者名稱,可以直接叫 Codex 幫你判斷,它會用目前電腦的路徑替換掉 /Users/你的使用者名稱/。請不要自己亂改隱藏資料夾,也不要把整個 .codex 資料夾刪掉。

怎麼避免任務和心血一起不見

這次真正值得記住的,是不要把 Codex 的本機狀態當成唯一保存位置。工具會更新、會壞、會重裝。自己的資料要靠自己的習慣保住。我平常靠三件事。

任務結束寫工作日誌

每個任務收尾時,把做了什麼、產出在哪裡、遇到什麼問題、下一步是什麼,寫成自己的工作日誌。

成品存到自己的資料夾

文章、圖片、簡報、程式碼、提示詞、報告,都要落成檔案,存進自己看得到的位置,不要只留在對話裡。

好操作寫成技能包

反覆會用的流程,整理成技能包或 SOP。這樣 Codex 出事時,Claude、其他 Agent 或下一台電腦也讀得懂、接得上。

把這三件事做起來,就算哪天 Codex 整個 down 掉,也只是換一個 AI 工具接著讀資料,工作脈絡還在,不會從零開始。

三十秒收尾

  • Codex Desktop 打不開、更新無效、最後重裝,重裝後第一步先檢查 logs_2.sqlite
  • 查證依據是 OpenAI Codex GitHub repo 的相近 issue 與原始碼。它是值得優先檢查的可能原因之一,當機還可能有別的成因。
  • 處理分兩條路:有操作能力或裝了 Claude Code,走保守流程(先關 Codex、備份三個 log 檔、檢查 quick_check、健康別硬清、異常才在備份後維護,遇到鎖檔或權限錯誤立刻停手);新手就重新安裝、重啟後先清日誌別急著開新任務、再建立自動巡查。
  • 平常設每 3 到 5 天的自動巡檢,預設只巡檢。達門檻時先輸出維護交接指令,等 Codex 關閉後再處理。
  • 任務結束寫工作日誌、成品落成檔案、好操作沉澱成技能包。
給自己的定位提醒 會清 log、會設巡檢,是基本功,不是什麼了不起的高招,社群裡比我更懂 SQLite 的人多得是。真正能累積下來的,是「自己的資料自己保存」這個習慣:把任務脈絡、成品和流程留在自己手上,工具壞掉就只是工具壞掉,不會連你這段時間的工作一起賠進去。

這篇參考的 issue 和原始碼

下面是這篇的查證依據,全部來自 OpenAI Codex 的 GitHub repo,不是 OpenAI 官網公告。這些 issue 指向 log SQLite 資料庫過大、WAL 異常、corrupt log DB 或高量 TRACE log 寫入等風險,支撐「logs_2.sqlite 值得優先檢查」這個判斷。

這篇最重要的一句話

log 可以清,任務和心血要自己保存。把 log 巡檢、自動健康檢查、工作日誌和技能包沉澱做起來,工具壞掉就只是工具壞掉,不會連你的工作脈絡一起消失。

下一步新開一個 Codex 對話框,把上面的自動化指令貼進去。跑完後確認它有回報檔案大小、quick_check 結果、是否達維護門檻,以及排程規則。若需要維護,先讓它產出維護交接指令,並等你關閉 Codex 再處理,不要在巡檢自動化裡直接清。
免費線上講座

每個月兩場免費講座。

點我加入 Line 社群 ↗