Codex 在多任务并行操作时突然崩溃,这种情况虽然不算特别常见,但一旦遭遇就非常棘手——终端失去响应、进程无故退出、CPU 飙升后瞬间归零,日志里还不断出现 session_id not found 或 Unknown 状态会话未被及时回收 之类的错误。说实话,这并非偶然的“抽风”,而是会话资源超限与状态管理脱节所直接引发的连锁故障。

立即止血:强制终止失控会话
别慌张,先执行最紧急的一步。打开一个新终端窗口,运行 codex session list 查看所有活跃会话 ID。那些状态显示为 Alive、但早已没有响应的会话,直接用 codex session kill 逐个杀死,直到 codex session list 返回空列表为止。
这一步没有任何回旋余地——残留会话会持续抢占系统资源,后续的所有操作都可能因此失败。顺便提一句,kill 命令仅释放运行时内存,不会删除历史记录,所以可以放心执行。
根因定位:检查会话堆积与超时配置
完成紧急止损后,就该深入挖掘根因了。两个方向,建议并行排查。
方法一:检查本地会话缓存是否溢出。
找到 Codex 缓存目录(Windows 下通常是 %LOCALAPPDATA%\Codex\cache\sessions,macOS/Linux 是 ~/.codex/cache/sessions),统计一下里面的文件数量。如果超过 300 个 session_*.bin 文件,说明会话根本没有被自动清理,Tokio 调度器为了自我保护,直接执行了熔断。
方法二:核实 collect_output_until_deadline 的超时设置。
打开 config.toml,搜索 output_deadline_ms 这个字段。如果它的值 ≤ 500,意味着输出稍微慢一点,会话就会被强制标记为 Exited,而底层的进程其实仍在运行——这就造成了状态错位。建议直接修改为 1500 或更高,给系统留出足够的余量。
永久修复:重置会话管理器并启用自动回收
前面的操作都只是“止血”,这里才是“根治”。请按顺序进行:
第一步:关闭所有 Codex CLI 进程,包括后台隐藏任务,一个都不要遗漏。
第二步:删除整个 ~/.codex/cache/sessions 目录(Windows 用户同步删除 %LOCALAPPDATA%\Codex\cache\sessions)。不用担心,这不会影响你的历史记录。
第三步:编辑 config.toml,在 [unified_exec] 段落下添加两行配置:
auto_cleanup_on_exit = true
max_concurrent_sessions = 8
第四步:重启 Codex CLI,执行 codex session new --name "test-stability",然后立刻输入 sleep 3 && echo done,观察是否能稳定返回且不崩溃。如果成功,说明会话管理器已经重新加载生效,问题得到彻底解决。
