各位佬友应该都知道,Codex 桌面版当前会话使用时间久了,会话记录文件大概在 80M 左右开始就容易出现卡顿、响应慢、上下文混乱,甚至前面明明聊过的东西,它后面又像“失忆”一样。
我这边折腾了一套比较实用的解决办法:不硬删记录,也不靠手动复制聊天内容,而是做一个“会话监控 + 自动接力摘要”的脚本。大家可以根据自己的需要更改脚本,脚本在最后
原理很简单:
Codex 的会话记录一般在:
C:\Users\你的用户名\.codex\sessions
里面是 rollout-xxxx.jsonl 这种会话文件。会话越聊越久,这个 jsonl 文件就会越来越大。文件太大以后,Codex 桌面版容易变慢,继续聊下去就容易出现卡顿、忘记、上下文接不上等问题。
我的脚本会定时扫描这些会话文件。当前我脚本里设置的是 30MB 就提醒,主要是提前处理;如果你想按 80MB 再提醒,也可以把参数改成 80。
脚本检测到会话文件超过阈值后,会弹窗提醒。点“是”以后,它会自动做几件事:
- 读取当前大会话的 jsonl 记录。
- 把关键内容提取成一份 handoff.md 接力摘要。
- 写入一个固定指针文件 latest_handoff_pointer.json。
- 自动新开 Codex 会话。
- 把续接提示词复制并发送到新会话。
这样新会话一开始不会从头扫一堆历史记录,而是只读取指针文件,再读取对应的 handoff 摘要。摘要里会包含当前状态、历史关键节点、最近任务、未完成事项、风险和约定等内容。
重点是:它不是让 Codex “凭感觉回忆”,而是给它一份明确的接力文档。
我这边的目录大概是这样:
F:\iodex\tools\codex_session_guard.ps1 F:\iodex\tools\run_codex_session_guard_hidden.vbs C:\Users\sui\.codex\maintenance\latest_handoff_pointer.json C:\Users\sui\.codex\session_backup_日期\xxx.handoff.md
ps1 是主脚本,负责扫描、生成 handoff、弹窗和写指针。
vbs 是隐藏启动用的,不会一直弹 PowerShell 黑窗口。
续接提示词大概是这种思路:
读取最新 handoff 并先做接力摘要。 只读取 latest_handoff_pointer.json, 从里面取出 handoff_path, 再读取 handoff 正文, 先输出完整接力摘要, 摘要完成前不要继续执行任务。
这样可以避免新会话一上来就乱扫旧 sessions,也能防止接错会话。
这个方案最大的好处是:
- 会话大了会自动提醒,不用自己盯文件大小。
- 切新会话时不会丢上下文。
- Codex 不容易“忘记前面做过什么”。
- handoff 文件是 Markdown,自己也能打开检查。
- 指针文件固定,续接逻辑稳定,不容易读错历史记录。
注意一点:不要直接暴力删除正在使用的会话文件。当前脚本是先生成 handoff,再通过指针接力,比较稳。阈值大家可以自己调,我个人建议别等到 80M 以后再处理,30M 到 50M 提前接力体验会更好。
总之,这个方法不是修 Codex 本身的记忆机制,而是给长会话加了一个“自动交接班”。老会话负责沉淀,新会话负责继续干活。用下来比一直死磕一个超大窗口舒服很多。
codex_session_guard.7z (12.4 KB)
3 个帖子 - 2 位参与者