先执行nodellm-api-doctor.mjs --base-url base_url诊断,classification字段直接定位根因:auth(401)、path(404)、rate_limit(429)、upstream_error(502)或timeout/network_failure;再结合statuscode等交叉验证,避免误判网络问题。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex 报错后不能立刻断定是网络问题,因为 401、404、429、502 和超时现象看起来相似,但根源完全不同——密钥错误、接口路径写错、限流触发、网关崩了、本地 DNS 或代理异常,都可能表现为“连不上”。必须用最小验证动作快速剥离干扰项,而不是改 Key 改模型改代理一通乱试。
先跑一条诊断命令
打开终端,执行:
nodellm-api-doctor.mjs --base-url https://api.example.com/v1
把 https://api.example.com/v1 换成你 Codex 配置里的 base_url(注意末尾不要带 /models 或 /chat/completions);工具会自动删掉多余斜杠再拼接 /models 发起 GET 请求。
这一步操作起来很简单,直接把文件拖进去就行。它不发提示词、不改配置、不调用模型,只探测基础连通性与鉴权状态。
输出里最关键的字段是 classification,它会直接告诉你问题归在哪一类:auth(401)、path(404)、rate_limit(429)、upstream_error(502)、timeout 或 network_failure。其他字段如 statusCode、retryAfterSeconds 只用于交叉验证。
看报错类型反推网络参与度
如果诊断命令返回 classification: network_failure 或 timeout,且 statusCode 为空或为 0,说明请求根本没发出——大概率是本地网络层卡住:DNS 解析失败、代理端口错配(比如把 SOCKS5 当 HTTP 用)、防火墙拦截、或证书链校验失败(Windows 上常见 schannel: SEC_E_UNTRUSTED_ROOT)。
如果 classification 是 auth 或 path,但你在浏览器里能正常打开 base_url + /models 页面,那基本排除网络问题——因为浏览器走的是系统证书和代理设置,而 CLI 可能绕过或复用不同配置。
注意:浏览器能打开 ≠ Codex 能连上。两者走的 TLS 栈、代理策略、证书信任库可能完全不同。
单独验证网络链路是否通畅
第一步:检查本地能否解析域名
执行 ping api.example.com(若不通,换 nslookup api.example.com 查 DNS)
第二步:确认端口可达
执行 telnet api.example.com 443(Windows)或 nc -zv api.example.com 443(macOS/Linux)。如果连接被拒绝或超时,说明网络出口或中间代理阻断了 443 流量。
第三步:绕过代理直连测试
临时清空 http_proxy 和 https_proxy 环境变量,再运行诊断命令。如果之前失败、现在成功,说明代理配置错误——常见坑是 http_proxy 写成 http://127.0.0.1:1080,但实际代理监听在 10809 或用的是 SOCKS5 协议。
第四步:验证证书链是否可信
在 Windows 上执行 curl -v https://api.example.com/v1/models,若报 schannel: SEC_E_UNTRUSTED_ROOT,需手动更新根证书或改用 Node.js 的 --insecure 参数临时跳过校验(仅调试用)。











