CodexFold
繁體中文

每段 Codex 工作階段都留著,重複的只存一份。

Codex 用久了,同樣的指示、同樣的檔案讀取、同樣的工具輸出會在工作階段裡一再出現。CodexFold 找出逐位元組相同的內容,在本機儲存區只保留一份,每次還原都與原始檔案的 SHA-256 核對。

用 Go 安裝
go install github.com/samekind/codexfold/cmd/codexfold@v0.4.0-beta.2

預覽版 v0.4.0-beta.2。命令列工具支援 macOS、Linux 與 Windows;透明檔案系統需要手動啟用,仍在驗證中。

三段工作階段各自保存著同樣的內容。

  • 專案指示
  • 再次讀取的同一個檔案
  • 重複的工具輸出
  • 貼上的記錄檔
  • 只屬於某段工作階段的內容

示意圖,未依比例。

在 58 段真實工作階段上實測

一份 16.01 GB 的本機代表性語料,包含大型的進行中與已封存工作階段。精確去重讓容量減半,Zstandard 封裝又把剩下的減半。

必須等原生副本與零散物件安全回收之後,磁碟空間才會真正釋放。這一步目前還不是自動執行的正式策略。 查看驗證報告

參與折疊的原始資料
15.47 GB
精確去重之後
7.72 GB
封裝之後(含清單)
4.36 GB
  • 57 段工作階段全部還原,位元組數與 SHA-256 都與原始檔案一致。
  • 掃描 16.0 GB,進行三層重複偵測,耗時 303 秒。
  • 1 段仍在寫入的工作階段,在提交清單之前被正確拒絕。

從掃描到核驗還原

  1. 掃描

    統計完全相同的欄位、記錄與區塊。掃描為唯讀,不會修改任何檔案。

  2. 折疊

    先預覽;加上 --apply 才會寫入共用物件與帶版本的清單。原本的工作階段檔案保持不變。

  3. 核驗與還原

    doctor 逐一核驗清單與物件;unfold 重建檔案,核對位元組數與 SHA-256 之後才會取代。

$ codexfold scan --all --layers field,record,cdc
sessions=8 corpus=48.69 MiB processed=48.69 MiB skipped=0 appended=0 duration=440ms index=1.00 MiB missing=0 changed=0

LAYER   OBJECTS    UNIQUE     DUPLICATES  DUPLICATE BYTES  CORPUS SHARE
cdc     594        594        0           0 B                0.00%
field   1472       513        959         31.14 MiB         63.97%
record  1960       1480       480         15.56 MiB         31.97%

$ codexfold fold 6a04b768-cdfd-c692-70ce-f666db3df52f
session=6a04b768-cdfd-c692-70ce-f666db3df52f verified=true dry_run=true parts=495 records=0 fields=247 residual=248 new=683.28 KiB removed=false manifest=~/.codex/fold-store/manifests/6a04b768-cdfd-c692-70ce-f666db3df52f.json

$ codexfold fold 6a04b768-cdfd-c692-70ce-f666db3df52f --apply
session=6a04b768-cdfd-c692-70ce-f666db3df52f verified=true dry_run=false parts=495 records=0 fields=247 residual=248 new=683.28 KiB removed=false manifest=~/.codex/fold-store/manifests/6a04b768-cdfd-c692-70ce-f666db3df52f.json

$ codexfold doctor
manifests=1 verified=1 objects=274 issues=0 store=~/.codex/fold-store

$ codexfold unfold 6a04b768-cdfd-c692-70ce-f666db3df52f --to restored.jsonl
session=6a04b768-cdfd-c692-70ce-f666db3df52f verified=true bytes=8.17 MiB target=restored.jsonl
在 8 段合成樣本工作階段上的真實執行記錄,主目錄路徑縮寫為 ~。

它會做什麼,不會做什麼

  • 不連網,不收集遙測資料,不上傳,也不呼叫模型。
  • 「相同」指位元組完全相同。只是相似的內容不會被合併。
  • 掃描不會修改工作階段檔案,也不會改動 Codex 的狀態。
  • fold、gc 與刪除原始檔預設都只是預演,必須明確加上參數才會執行。
  • 物件與清單先寫入暫存檔,再以原子方式提交。
  • 還原結果通過完整的 SHA-256 核對之後,才會取代檔案。

目前可在哪些平台使用

命令列工具提供 macOS、Linux、Windows 的 amd64 與 arm64 版本,並附檢查碼。透明檔案系統在各平台都仍是預覽。

macOS 27 預覽

Apple 原生的 FSKit 延伸功能。建置 App 需要 Xcode 27、符合資格的 Apple 開發團隊與原始碼簽署,目前未經公證,不適合一般安裝。

維護者指南

Linux 預覽

FUSE3 掛載,已驗證非特權掛載、當機復原與重新掛載;以真實 Codex 用戶端進行的驗證尚未完成。

Linux 驗證報告

Windows 預覽

WinFsp 檔案系統,附原生系統匣程式,需要從原始碼建置。桌面圖形介面、重新開機與 SYSTEM 服務的驗證尚未完成。

Windows 預覽指南
前往 GitHub Releases 下載