解决 WSL 中 Codex 内存占用过高的方法
如果你在 WSL(Windows Subsystem for Linux)环境中使用 Codex 时遇到内存占用过高的问题,可以参考以下经验分享来解决这个问题。
问题描述:
在使用 Codex 的多 agent 模式时,可能会出现内存占用过大,导致 WSL 自动关机的情况。经过排查,发现问题的原因是 Codex 在调用 subagent 时,每个 subagent 都会重新加载所有设置的 MCP(Model Configuration Profiles),部分 MCP 在 agent 结束后没有及时退出,最终形成孤儿进程,随着孤儿进程数量的增加,导致内存溢出(OOM)。
特别需要注意的是,如果使用 auggie --mcp,这种情况下 MCP 的内存占用会更大,需要特别注意。
解决方案:
每次启动一个 subagent 会话时,都会加载一套 MCP。如果允许 Codex 启动多个 agent 并行,而 MCP 的数量超过了 agent 的数量,那么就会产生孤儿进程。解决方法是从旧到新排序,杀掉多余的孤儿进程。
具体操作建议:
- 可以编写一个脚本,在系统启动时自动运行,定期检查并清理孤儿进程。由于不同用户使用的 MCP 可能不同,因此这里不提供具体的脚本代码。
- 更优雅的解决方案是将 MCP 转化为技能(skill),这样每次使用时就不需要重新加载,从根本上避免上述问题。
总结:
通过合理配置 MCP 和 agent 的数量,以及使用自动化脚本或技能管理,可以有效解决 WSL 中 Codex 内存占用过高的问题,提升使用体验。
评论已关闭