最后更新

Codex Router doctor — 诊断与修复安装问题

doctor 是 Codex Router 中最有用的单个工具。它检查集成的每一层——配置、凭据、目录、服务与路由健康——并把每项报告为 OKWARNFAIL,每个失败层下都有针对性修复。

运行 doctor

./bin/model-router codex doctor

Windows:

./codex-router.ps1 codex doctor

doctor 从不打印凭据值。诊断只报告凭据的存在与来源。

doctor 检查什么

以下所有层都报告 OK 时集成健康:

  • 核心配置——Codex config.toml 中的标记托管块,包括回环 base URL 与目录路径。
  • 配置隐私——配置及其备份对当前用户受保护。
  • 目录——合并的 model_catalog_json 存在且与已装 Codex 版本匹配。
  • 调用方能力——生成的 /_codex-router/.../v1 路径是有效的本地认证。
  • 内部密钥——随机回环服务密钥存在且权限受保护。
  • 服务——按用户后台服务(launchd、systemd 或任务计划程序)以预期身份运行。
  • 路由器健康——4100–4103 端口上的每个本地监听器都报告其预期服务身份。
  • 所选凭据——你选择的供应商有存储密钥或有效 OAuth 会话。未选择的凭据可能报 WARN,属正常。

用 doctor —fix 修复

只重建仓库托管的文件、配置与服务状态:

./bin/model-router codex doctor --fix

--fix 会无条件重建 Node 与 Python 依赖——与正常安装或更新不同(它们会跳过指纹已匹配的依赖步骤)。因此它适合环境看起来损坏而不是过期的情况。

对已识别的旧 Kimi 路由器:

./bin/model-router codex doctor --fix --migrate-known

修复拒绝未知路由器所有者。如果 doctor 报告状态所有权失败,说明你运行的克隆没有执行安装——请通过持有已装状态的检出修复。见下面的状态所有权

状态所有权

当记录的所有者仍存在时,doctor --fix 会从该检出运行修复并保持已装检出不变。仅当记录所有者已消失、或你设置:

MODEL_ROUTER_ALLOW_FOREIGN_STATE=1 ./bin/model-router codex doctor --fix

它才会刻意把所有权转移给当前检出。查看记录的所有者:

STATE_DIR="${MODEL_ROUTER_STATE_DIR:-${CODEX_ROUTER_STATE_DIR:-${HOME}/.codex/codex-router}}"
cat "$STATE_DIR/install-manifest.json" | sed -n '1,80p'

doctor 通过之后

任何更新或回滚后运行 doctor,然后完全退出 Codex、重新打开并新建任务,让选择器重载合并目录。--fix 后仍有层失败时,创建 support bundle:

./bin/support-bundle

该 bundle 是 mode-600 的 JSON,包含版本、doctor 检查、服务状态、供应商存在性、配置所有权与文件元数据——没有凭据值、提示、响应或日志内容。在开 issue 时附上其路径;确实需要日志上下文时才用 --include-logs

相关:故障排查总览模型缺失