线上Codex报错时,不能直接丢日志给AI“修一下”,必须先构建脱敏、结构化、可验证的证据包:①确认影响范围并止血;②提取时间、环境、trace_id、status/error、route五类字段并严格脱敏;③按CLI/桌面端/VSCode差异采集debug日志;④用codex config path/list交叉验证真实生效配置。

线上 Codex 报错时,不能直接把日志丢给 AI 让它“修一下”,必须先构建可复现、可验证、脱敏安全的证据包——否则 Codex 会误读用户输入为指令,或因敏感字段触发风控拦截,导致排查方向彻底偏移。
第一步:确认影响范围,决定排障优先级
立刻判断当前报错是否正在影响线上关键路径:数据写入中断、支付单卡住、权限校验失效、核心 API 返回 500、消息队列堆积。若任一成立,【先止血,不要动代码】——比如临时降级调用、关闭非核心插件、回滚最近一次 config.toml 修改。
如果只是本地 CLI 执行失败、桌面端无响应、VSCode 插件不亮灯,说明问题尚未出圈,可进入标准排查流程。
第二步:提取原始报错证据,禁止直接复制日志
打开终端或查看弹窗截图,只提取以下五类字段:
① 时间窗口:精确到分钟,如 2026-08-07T02:45–03:12;
② 环境标识:prod / staging / dev,附带 region 和 release 版本号;
③ 请求唯一标识:request_id 或 trace_id(哪怕只有一段哈希);
④ 错误主干:status code + error message,例如 status:500 → error:Cannot read property 'user_id' of null;
⑤ 路由与方法:route:POST /api/v1/submit,不要截断路径或省略 HTTP 方法。
【绝对禁止复制 Authorization、Cookie、手机号、邮箱、身份证、支付单号、内部服务地址】——这些字段必须脱敏后才可作为证据输入。例如 phone:138****0000 → phone_hash=9b21,token=abc123 → token=[REDACTED]。
第三步:区分错误来源,选择对应证据采集路径
方法一:CLI 报错无堆栈 → 执行完整命令加 --debug 标志
直接在终端执行:codex run --debug --model gpt-5.4 example.js,把完整的 stderr 输出抓出来。重点盯一下有没有出现 EACCES、ENOTFOUND、ETIMEDOUT 这类系统级错误码;一旦看到,基本就能判断问题不在 Key,而是该去排查 PATH、权限或者 DNS 这些基础环节。
方法二:桌面客户端闪退 → 启动时附加日志输出
Mac 用户在终端执行:open -a "Codex Desktop.app" --args --log-level=debug;Windows 用户右键快捷方式 → 属性 → 目标栏末尾添加 --log-level=debug,然后启动。日志将生成在 ~/.codex/logs/ 下,取最新 timestamp 文件。
方法三:VSCode 插件无响应 → 检查 Output 面板中的 Codex 通道
在 VSCode 里依次打开:Ctrl+Shift+U,然后在下拉菜单里切到 “Codex”,先看有没有 ERROR 行。排查时,重点把前 3 行和最后 2 行记下来就够了,中间那段堆栈通常可以先折叠起来,不必一上来全盯着看。要是面板里什么都没有,那基本说明插件压根没完成初始化,这时就得回头检查 settings.json 里 "codex.enable": true 到底有没有真正生效。
第四步:交叉验证配置状态,锁定真实生效文件
第一步:确认当前终端实际加载的配置路径
执行:codex config path,输出结果就是 Codex CLI 当前读取的 config.toml 绝对路径。若输出为空或报错,说明 CLI 根本没识别到配置。
第二步:检查该路径下 auth.json 是否存在且格式合法
用 cat ~/.codex/auth.json 查看内容,确保仅含一行 JSON:{"OPENAI_API_KEY":"sk-xxx"}。任何多余换行、注释、逗号、字段都会导致 401,【auth.json 中间出现第二个字段即判定为无效配置】。
第三步:验证 config.toml 是否被正确解析
执行:codex config list,观察 model、base_url、timeout 等字段是否显示为你所填值。若显示 default 或空白,说明 toml 语法错误(常见于忘记引号、缩进不一致、用了中文标点)。
