Codex Doctor
运行两层健康检查:
- 重复使用 Codex 稳定的内置
codex doctor --json命令,检查安装、配置、认证、运行时、Git 环境、终端、应用服务器、更新和线程清单。 - 运行捆绑的只读扫描器,检查内置命令未覆盖的工作区上下文治理。
扫描器收集确定性证据。您做出语义判断。这种分离至关重要,因为脚本可以证明文本重复,但不能安全地决定某个业务事实、安全边界、品牌声音或目录规则是否可以丢弃。
运行检查
从加载的技能路径解析技能目录,然后运行:
python3 <skill-dir>/scripts/scan_workspace.py --cwd "$PWD" --compact-json
如果在同一任务中已经运行了内置报告,为了更快地仅通过工作区检查:
python3 <skill-dir>/scripts/scan_workspace.py --cwd "$PWD" --compact-json --skip-built-in
--compact-json 保留所有发现和所有内置检查行,同时省略大型技能清单和冗长的通过检查详细信息。仅在需要完整的确定性清单证据时使用 --json。
不要将原始内置报告保存在仓库内。如果需要临时存储,请使用 /tmp,并在完成前删除它。
解释发现
在提出任何清理或修复之前,请阅读 checks-and-repair-policy.md。保持严重性和置信度分离:
S0:已证实的秘密暴露或已证实的破坏性风险S1:有效配置损坏、硬规则截断、缺少可执行文件,或安装/更新不匹配S2:完全冗余、重复的活动名称/来源,或清晰的项目卫生违规S3:维护压力、过时的禁用条目、新版本通知,或过大的描述S4:信息性、语义候选,或证据空白
将 semantic_candidates 视为检查提示,而非发现。阅读相关来源部分并将其分类为:
- 行为规则或安全边界:保留
- 用户偏好、品牌声音、业务事实或目录契约:保留
- 需要多文件合成的仓库事实:通常保留
- 可直接发现的清单、框架版本、依赖列表或目录列表:候选以修剪
- 过时或矛盾的陈述:在提出更改前对照仓库验证
未使用的技能证据
静态发现无法证明技能未被使用。如果用户明确询问未使用或低频技能,请使用已安装的 codex-skill-admin 技能以只读审计模式运行:
python3 <codex-skill-admin-dir>/scripts/codex_skill_admin.py audit-unused --cwd "$PWD" --days 30
报告证据窗口和不同的会话/来源计数。除非用户另行要求并批准目标列表,否则不要禁用任何东西。
报告结构
以总体结果开始,然后仅显示可操作或与决策相关的项目:
# Codex 健康检查
状态:PASS / WARN / FAIL
## 需要处理
- [发现 ID] 严重性 / 置信度 — 结论
证据:来源和观察状态
影响:具体失败或上下文成本
建议:确切的下一个操作
## 建议人工审查
- 语义候选以及它们可能可推断或过时的原因
## 已通过
- 分组的域,并非每个低级行
## 证据空白
- 无法从公共/本地数据证明的检查
将内置医生子检查作为单独的事实保留。例如,HTTP 可达性失败和 WebSocket 成功必须保持两行;不要将它们合并为“网络已损坏”。
修复协议
诊断不授权修复。当用户要求修复发现时:
- 显示一个发现 ID、确切来源、为什么错误以及单个文件统一差异。
- 当更改删除或语义重写指令、更改配置、启用/禁用一个组件或移动文件时,请求明确批准该发现 ID。
- 在应用补丁前立即重新计算源文件的 SHA-256。如果与扫描证据不同,则停止。
- 仅使用
apply_patch应用批准的差异。 - 重新运行相关检查并报告前后结果。
永远不要自动:
- 删除或削弱安全规则、品牌/角色规则、业务事实、项目事实、Git 门控或目录边界
- 仅因为文本在 AGENTS.md 和 CLAUDE.md 中重复就删除;跨主机对等性可能是故意的
- 执行钩子以测量性能
- 信任钩子、登录 MCP、暴露凭据、安装依赖项、更新 Codex 或更改提供者
- 修改沙箱、审批、模型、网络或认证设置
- 运行破坏性 Git 命令、清理未跟踪文件或移动受保护的项目目录
完成检查
在报告完成之前:
- 确认扫描器没有对仓库进行任何更改
- 区分内置 Codex 诊断与工作区治理发现
- 将推断标记为推断
- 报告跳过的检查和证据空白
- 如果批准了修复,验证每个更改的文件并重新运行其域检查