@@ -217,53 +217,90 @@ sudo killall syspolicyd trustd 2>/dev/null
217217
218218---
219219
220- ## 终极拯救指南:一键清理脚本
220+ ## 终极拯救指南:codex-fix 工具
221221
222- 如果你不想每次都手动执行上述繁琐的命令,这里提供一个综合性的清理脚本。建议你将其保存为 ` codex_fix.sh ` ,在每次觉得系统卡顿或磁盘空间报警时运行一次。
222+ 如果你不想每次都手动执行上述繁琐的命令,这里有一个更好的选择——笔者专门为上述所有问题打包了一个开箱即用的诊断与修复工具:[ ** codex-fix** ] ( https://www.npmjs.com/package/codex-fix ) [ 4] 。
223+
224+ ### 安装与快速上手
225+
226+ 无需安装,直接通过 ` npx ` 一键运行诊断报告(只读,不会修改任何文件):
223227
224228``` bash
225- #! /bin/bash
226- # Codex 完整清理和修复脚本
229+ npx codex-fix
230+ ```
227231
228- echo " === Codex 问题诊断和修复 === "
232+ 或者全局安装后使用:
229233
230- # 1. 退出 Codex
231- echo " 1. 退出 Codex 应用... "
232- osascript -e ' quit app "Codex" ' 2> /dev/null || true
233- sleep 3
234+ ``` bash
235+ npm install -g codex-fix
236+ codex-fix
237+ ```
234238
235- # 2. 清理孤立进程
236- echo " 2. 清理孤立进程..."
237- pkill -f ' SkyComputerUseClient|SkyComputerUseService|node_repl|browser_crashpad_handler' 2> /dev/null || true
239+ 如果你的 Codex 已经卡死、无法正常工作,还可以直接通过 ` curl ` 运行,完全不依赖 Node.js 环境:
238240
239- # 3. 清理 code_sign_clone 目录
240- echo " 3. 清理 code_sign_clone 目录..."
241- base=" $( dirname " $( getconf DARWIN_USER_TEMP_DIR) " ) /X/com.openai.codex.code_sign_clone"
242- if [ -d " $base " ]; then
243- find " $base " -maxdepth 1 -type d -name ' code_sign_clone.*' -exec rm -rf {} + 2> /dev/null || true
244- echo " 已清理: $base "
245- fi
246-
247- # 4. 阻止日志频繁写入 (保护 SSD)
248- echo " 4. 阻止日志频繁写入..."
249- if [ -f " $HOME /.codex/logs_2.sqlite" ]; then
250- sqlite3 " $HOME /.codex/logs_2.sqlite" \
251- " CREATE TRIGGER IF NOT EXISTS block_log_inserts BEFORE INSERT ON logs BEGIN SELECT RAISE(IGNORE); END;" \
252- 2> /dev/null || true
253- echo " 已创建日志阻止触发器"
254- fi
255-
256- # 5. 恢复系统服务(清理 syspolicyd fd 耗尽状态)
257- echo " 5. 恢复系统服务..."
258- sudo killall syspolicyd trustd 2> /dev/null || true
259-
260- echo " "
261- echo " === 清理完成,当前状态 ==="
262- echo " - code_sign_clone 目录数: $( find /private/var/folders/* /* /X/com.openai.codex.code_sign_clone -maxdepth 1 -type d -name ' code_sign_clone.*' 2> /dev/null | wc -l | tr -d ' ' ) "
263- echo " - 日志数据库大小: $( ls -lh ~ /.codex/logs_2.sqlite 2> /dev/null | awk ' {print $5}' || echo ' 文件不存在' ) "
264- echo " - syspolicyd Codex fd 数: $( sudo lsof -p $( pgrep -x syspolicyd | head -1) 2> /dev/null | grep -c ' MacOS/Codex' || echo ' 0' ) "
241+ ``` bash
242+ # 只读诊断报告
243+ curl -fsSL https://raw.githubusercontent.com/IchenDEV/codex-fix/main/scripts/codex_fix.sh | bash
244+ ```
245+
246+ ### 工具覆盖范围
247+
248+ ` codex-fix ` 的诊断报告会一次性呈现你最需要关注的所有关键指标:
249+
250+ | 检查项 | 对应 Bug |
251+ | :--- | :--- |
252+ | 日志数据库大小、行数、触发器状态 | SSD 寿命刺客 |
253+ | ` code_sign_clone.* ` 目录数量与总大小 | 克隆大军 |
254+ | Crashpad pending 转储文件数量 | 转储膨胀 |
255+ | Codex 相关 helper 进程数、CPU、内存、僵尸数 | 僵尸进程 |
256+ | ` syspolicyd ` 持有的 Codex 文件描述符数量 | syspolicyd 被打爆 |
257+
258+ ### 安全设计:先预览,再执行
259+
260+ 工具采用** 默认只读** 的设计哲学——所有修改操作都需要显式加上 ` --apply ` 标志才会生效,这让你可以放心地先预览将要发生的变化,再决定是否执行:
261+
262+ ``` bash
263+ # 先预览(dry-run)
264+ codex-fix --clean-clones
265+
266+ # 确认无误后,加上 --apply 真正执行
267+ codex-fix --apply --clean-clones
265268```
266269
270+ ### 常用修复命令速查
271+
272+ ``` bash
273+ # 安装 SQLite 触发器,阻止日志写入(自动备份数据库)
274+ codex-fix --apply --install-log-trigger
275+
276+ # 清理 code_sign_clone 幽灵目录
277+ codex-fix --apply --clean-clones
278+
279+ # 清理 Crashpad 转储文件
280+ codex-fix --apply --clean-crashpad
281+
282+ # 清理 SkyComputerUse 等 helper 进程
283+ codex-fix --apply --kill-helpers
284+
285+ # 重启 syspolicyd/trustd(App 启动冻结时使用)
286+ codex-fix --apply --restart-security-daemons
287+
288+ # 一键执行所有非 sudo 清理操作
289+ codex-fix --apply --all
290+ ```
291+
292+ ### 作为 Codex / Claude Code 技能使用
293+
294+ ` codex-fix ` 还支持作为 AI 编程助手的技能(Skill)安装,当 Codex 本身出现问题时,你可以让 Claude Code 来帮你跑诊断:
295+
296+ ``` bash
297+ # 安装为 Claude Code 技能
298+ mkdir -p ~ /.claude/skills
299+ git clone https://github.com/IchenDEV/codex-fix.git ~ /.claude/skills/codex-fix
300+ ```
301+
302+ 安装后,在 Claude Code 中执行 ` /codex-fix ` 即可触发诊断流程。
303+
267304---
268305
269306## 写在最后
@@ -272,7 +309,7 @@ Codex 作为一款强大的 AI 编程助手,无疑极大地提升了我们的
272309
273310这些 Bug 的共同特点是:它们都在** 默默地、持续地** 消耗你的资源——无论是 SSD 的写入寿命、磁盘的可用空间,还是系统安全守护进程的文件描述符。很多用户可能在毫不知情的情况下,已经承受了数月的损耗。
274311
275- 在官方彻底修复这些问题之前,定期检查你的磁盘空间、监控 SSD 写入量,并备好上述的急救脚本 ,将是你在这场"人机博弈"中保护自己硬件的最佳策略。
312+ 在官方彻底修复这些问题之前,定期运行 ` npx codex-fix ` 进行诊断,并在需要时执行对应的修复操作 ,将是你在这场"人机博弈"中保护自己硬件的最佳策略。
276313
277314希望这篇文章能帮你拯救正在"流血"的 SSD 和正在被"打爆"的 ` syspolicyd ` ,也期待 OpenAI 能尽快推出修复补丁,让我们可以更加安心地进行 Vibe Coding。
278315
@@ -285,3 +322,5 @@ Codex 作为一款强大的 AI 编程助手,无疑极大地提升了我们的
285322[ 2] [ Bug] macOS app leaves code_sign_clone directories after quit (~ 965MB per launch). GitHub Issue #25667 . https://github.com/openai/codex/issues/25667
286323
287324[ 3] Codex macOS app relaunches its own main binary in a tight loop, exhausting syspolicyd file descriptors and freezing all app launches system-wide. GitHub Issue #25882 . https://github.com/openai/codex/issues/25882
325+
326+ [ 4] codex-fix: Diagnostic and mitigation toolkit for Codex Desktop and CLI resource-leak symptoms on macOS. npm. https://www.npmjs.com/package/codex-fix
0 commit comments