Codex多任务并行崩溃解决:高效稳定处理方案
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,观察是否稳定返回且不发生崩溃。若成功,则表明会话管理器已重新加载并生效,问题得到彻底解决。
