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 下载