我使用 opencode 已經有一段時間,今天我在整理桌面已經開發到一個段落的專案突然注意到 opencode 會把對話和工具使用紀錄全部記在某個 sqLite 檔案裡面,並且綁定資料夾開啟的路徑,讓我們可以在下次開啟專案後快速回覆對話紀錄或是跟進對話。但因為綁定的是路徑又存在 sqLite ,所以不會進 git。在專案資料夾改名後就要手動搬移或是接受對話紀錄,不然就會變成 session 繼續存在硬碟但永遠沒辦法在 opencode 叫出來,這個問題可有點大麻煩但我暫時沒想到比較好的解決辦法。
我可以在專案刪除之前把會話從 SQLite 匯出成 json ,未來要繼續開發這個專案再手動匯入,但是這很麻煩,而且我也不會想把 AI 對話 commit 進去。那不這麼做又會造成原始碼和 AI 對話勢被放在兩個獨立的地方管理起來很麻煩。
使用這個指令可列出目錄已經不存在但是 opencode 還有 session 和目錄綁定的孤兒 session。
sqlite3 ~/.local/share/opencode/opencode.db \ "SELECT DISTINCT directory FROM session;" |while IFS= read -r dir; do [ -d "$dir" ] || echo "$dir"done然後下面的指令可以看出所有被使用的分支,來看看你的 opencode 幫你存了多少沒用的東西佔據硬碟空間吧!這樣你也會看到這些對話以驚人的速度在蠶食你的硬碟空間,這樣你就可以和我一起來焦慮這件事了。如果你有不錯的解決方案或管理 session 的技巧,拜託寫信跟我說。
$ cd .local/share/opencode~/.local/share/opencode❯ ls -alh
total 3853656drwxr-xr-x@ 13 iach staff 416B 9月 5 15:16 .drwxr-xr-x 9 iach staff 288B 4月 15 11:02 ..-rw-------@ 1 iach staff 2.8K 7月 9 08:27 account.json-rw-------@ 1 iach staff 2.5K 7月 20 17:38 auth.jsondrwxr-xr-x@ 6 iach staff 192B 3月 14 15:51 bindrwxr-xr-x@ 13 iach staff 416B 7月 9 08:27 log-rw-r--r--@ 1 iach staff 1.8G 9月 5 15:14 opencode.db-rw-r--r--@ 1 iach staff 32K 9月 3 22:42 opencode.db-shm-rw-r--r--@ 1 iach staff 0B 9月 5 15:16 opencode.db-waldrwxr-xr-x@ 2 iach staff 64B 5月 20 12:10 reposdrwxr-xr-x@ 29 iach staff 928B 8月 24 08:44 snapshotdrwxr-xr-x@ 4 iach staff 128B 7月 29 23:04 storagedrwxr-xr-x@ 3 iach staff 96B 9月 4 06:58 tool-output# 列出有使用 opencode 的目錄sqlite3 ~/.local/share/opencode/opencode.db "SELECT directory, COUNT(*) AS sessionsFROM sessionGROUP BY directoryORDER BY directory;"
Comments
Quiet notes for this article.