## Codex CLI Upgrade Doctor 示例 ### 入口 ```bash python tools/codex_cli_upgrade_doctor.py --json ``` ### 输入来源 | 检查项 | 命令 | 目的 | |---|---|---| | 当前命中路径 | `command -v codex` | 判断 shell 实际运行哪个 codex | | 全部候选路径 | `command -v -a codex` | 发现 PATH 冲突或旧 shim | | 当前版本 | `codex --version` | 升级前后核验 | | npm 来源 | `npm list -g --depth=0 @openai/codex` | 判断是否 npm global 安装 | | npm 最新版 | `npm view @openai/codex version` | 判断是否可升级 | | Homebrew 来源 | `brew info --formula --cask codex openai-codex` | 排除或确认 brew 管理 | ### 诊断流程样例 1. 运行 `command -v codex` 得到 `/opt/homebrew/bin/codex`。 2. 对该路径执行 `realpath`,发现它指向 npm global bin,而不是 Homebrew formula。 3. 运行 `codex --version` 得到 `codex-cli 0.125.0`。 4. 运行 `npm list -g --depth=0 @openai/codex`,确认包名是 `@openai/codex`。 5. 运行 `npm view @openai/codex version --fetch-timeout=10000`。 6. 如果返回版本号,例如 `0.126.0`,执行 `npm install -g @openai/codex@latest`,然后重新核验 `codex --version`。 7. 如果返回 DNS/registry 错误,输出失败信号:`remote_version_unavailable`,并建议先检查 npm registry、代理和 DNS,而不是误判为 Homebrew 问题。 ### 成功输出 ```json { "active_path": "/opt/homebrew/bin/codex", "source": "npm-global", "package": "@openai/codex", "before_version": "0.125.0", "remote_version": "0.126.0", "upgrade_command": "npm install -g @openai/codex@latest", "after_version": "0.126.0", "status": "upgraded" } ``` ### 失败输出 ```json { "active_path": "/opt/homebrew/bin/codex", "source": "npm-global", "before_version": "0.125.0", "remote_version": null, "status": "blocked", "failure_signal": "npm_registry_unreachable", "next_step": "检查 npm registry、DNS、代理后重试;不要改用 brew,除非 doctor 证明 active path 来自 Homebrew。" } ```