Codex Desktop 本地会话侧边栏在会话数量很多时可能会显示为空的项目文件夹
我在 Windows 上遇到一个 Codex Desktop 问题:侧边栏里较旧的项目文件夹会显示为没有任何对话,尽管这些会话在磁盘上仍然存在。
我观察到的情况
在一台拥有数百个本地 Codex 会话的机器上:
- SQLite 状态数据库里仍然有 thread 行记录。
.codex/sessions目录下的 rollout JSONL 文件仍然存在。- 直接调用
codex.exe app-server的thread/list,在使用分页时可以返回那些缺失的对话。 - Desktop 侧边栏仍会把一些项目文件夹显示为空,尤其是那些较旧、且位于最初加载的“近期线程”窗口之外的文件夹。
这会让人以为会话被删除了,但其实并没有。问题在于:UI 没有加载足够多的近期线程,导致这些项目分组无法被填充。
本地变通方案
我做了一个仅限 Windows 的本地变通方案,保持官方 Codex 应用不被改动:
- 将已安装的官方 Codex 应用资源复制到单独的本地补丁目录中。
- 解包
resources/app.asar。 - 修补前端的近期线程管理器,让初始的近期线程拉取能够沿着
nextCursor连续获取多页,而不是依赖很小的第一页。 - 将“加载更多”和侧边栏搜索的上限提高到 1000。
- 通过一个独立的 Electron 运行器启动已打补丁的应用,并使用它自己的
CODEX_ELECTRON_USER_DATA_PATH。 - 将窗口标题改为
Codex Patched,这样它就能与官方的Codex窗口共存而不至于混淆。
项目:
这不会修改 .codex/state_5.sqlite,不会重排 updated_at,也不会删除或重写 rollout 文件。它只会改动一份复制出来的前端 bundle。
建议的上游修复
如果 Codex Desktop 允许用户配置本地会话/侧边栏历史的限制,或者侧边栏能自动分页到足够远、从而可靠地填充项目文件夹,会很有帮助。
至少,UI 应该能区分:
- “此文件夹没有对话”
- “对话列表尚未完全加载”
对于本地历史很大的用户,一个可配置的上限(例如 50 / 100 / 500 / 1000 / 全部)能让行为更可预测,并消除本地打补丁的需求。