清理磁盘时,Simon Willison 发现了一个约 1.7GB 的目录。它位于 ~/.cache/codex-runtimes/codex-primary-runtime/plugins/openai-primary-runtime/plugins/documents,里面并不是普通的缓存文件,而是一套相当完整的文档处理运行时:包括 LibreOffice、Python、Node.js、Poppler 和 Git 等组件。
这件事的重点不只是“一个桌面应用占用了很多空间”,而是现代 AI 工具正在把过去由操作系统或用户自行安装的能力,打包成应用自己的隔离执行环境。
目录里装了什么
摘要中提到的体积大致如下:
- 完整 Python:约 440MB
- Node.js:约 446MB
- Poppler:约 188MB
- Git:约 148MB
- LibreOffice:一整套办公文档处理组件
- 其他运行时和插件文件:共同构成约 1.7GB 的目录
路径中的 codex-runtimes、plugins 和 documents 已经透露了用途:这更像是为文档任务准备的插件运行时,而不是 ChatGPT 主程序本身的核心资源。LibreOffice 可以处理 Office 文档格式,Poppler 适合 PDF 转换和文本提取,Python 与 Node.js 则能承载不同的脚本和工具链。
从工程角度看,这种组合可以减少对用户本机环境的依赖。应用不必假设用户已经安装了正确版本的 Python、Node.js、LibreOffice 或 PDF 工具,也能在相对可控的环境中完成文档相关任务。
为什么应用会选择自带运行时
AI 助手要处理一个 .docx、.pdf 或表格文件,往往不只是调用一个 API。它可能需要经历格式转换、文本抽取、页面渲染、脚本执行和结果回写等步骤。每一步都可能依赖外部程序,而且不同操作系统上的版本、命令行参数和字体环境并不完全一致。
把依赖放到应用自己的目录里,有几个直接收益:
- 减少环境差异:应用可以固定工具版本,降低“在开发机能运行、在用户机器失败”的概率。
- 支持离线或本地处理步骤:某些转换任务可以在本地完成,不必把每个中间文件都交给系统级工具。
- 方便插件化:
plugins/openai-primary-runtime/plugins/documents这样的目录结构,说明文档能力可能作为独立插件提供。 - 降低安装门槛:用户不需要单独配置一套文档处理工具链。
代价也很明确:安装或首次启用功能时需要下载更多文件,缓存目录会快速膨胀,更新工具链时还可能留下多个版本。
先确认它到底占了多少空间
不要直接删除目录。可以先用下面的命令查看目录总大小和一级子目录大小。将路径放入引号,是为了避免路径变化时命令解析出错。
RUNTIME_DIR="$HOME/.cache/codex-runtimes/codex-primary-runtime/plugins/openai-primary-runtime/plugins/documents"
if [ -d "$RUNTIME_DIR" ]; then
du -sh "$RUNTIME_DIR"
du -h -d 1 "$RUNTIME_DIR" 2>/dev/null | sort -h
else
printf '目录不存在:%s\n' "$RUNTIME_DIR"
fi
还可以找出其中最大的文件,判断空间主要被二进制、压缩包还是重复版本占用:
find "$RUNTIME_DIR" -type f -print0 2>/dev/null \
| xargs -0 du -h 2>/dev/null \
| sort -h \
| tail -n 30
这些命令只读文件系统,不会修改内容。若要释放空间,应优先通过应用自身的清理、卸载或缓存管理功能完成。直接删除运行时目录可能导致文档功能重新下载组件,也可能让应用在下次启动时进入修复流程。
这对桌面 AI 应用意味着什么
“桌面应用”正在变得更像一个带有本地工具链的运行平台。它们不仅包含界面和网络请求逻辑,还可能内置解释器、编译工具、格式转换器、浏览器内核或其他专用依赖。
因此,评估这类应用的磁盘占用时,只看安装包大小已经不够。还应关注:
- 用户缓存目录是否包含完整运行时;
- 文档、代码或浏览器插件是否按需下载;
- 更新后旧版本是否会被回收;
- 卸载应用时缓存是否一并清除;
- 删除缓存后,应用能否自动恢复;
- 这些组件的版本和来源是否可审计。
对开发者来说,这也是一个取舍:自带依赖能够提高可重复性和功能成功率,但会增加下载体积、磁盘成本和供应链维护负担。对用户来说,1.7GB 目录未必代表异常泄漏,它可能正是文档自动化能力能够稳定工作的基础;但应用也应该提供清晰的缓存说明和回收入口。
结论:把它当作运行时,而不是普通垃圾文件
这次发现揭示了一个容易被忽略的事实:AI 应用为了完成复杂任务,正在悄悄携带完整的软件生态。LibreOffice、Python、Node.js、Poppler 和 Git 同时出现,说明文档插件需要的不只是模型调用,还包括一整套本地执行和转换能力。
清理磁盘前,建议按这个顺序处理:
- 用
du确认目录大小和最大占用者; - 检查应用设置中是否有缓存清理或插件管理;
- 确认应用是否正在运行或等待文档任务;
- 备份重要配置后再删除可确认的缓存;
- 删除后重新启动应用,验证文档功能是否会自动恢复。
最稳妥的判断标准不是“目录很大,所以一定该删”,而是“它是否仍被应用使用,以及删除后能否可靠重建”。