)
Codex 安装/换肤后下一步用 CodeLink 完成首次真实调用CLI 实测很多 Codex 教程停在“安装成功”或“界面换好了”。真正影响能不能工作的是后面这条链路有没有走通Codex 读到哪份配置、选中了哪个 provider、请求发到哪里、模型是否真实返回以及调用能否在服务端留下可核对的记录。这篇不再用本地 401/200 模拟服务。我在一个空的临时目录里用 Codex CLI0.144.1、只读沙箱和一次不含项目内容的最小提示词实际通过当前配置的CODELINKprovider 得到了CODELINK_EVIDENCE_OK。先说明边界本文实测对象是Codex CLI 0.144.1。Codex 桌面应用、Codex CLI 和 ChatGPT Desktop 不是一个可以混着写的产品名。你可以用当前 CLI 的codex app命令启动或安装 Codex 桌面应用但不要把 ChatGPT Desktop 的下载和设置截图当成 Codex 配置证据。一、先确认你运行的到底是什么打开终端先执行codex--versioncodex--help本文的回读是codex-cli 0.144.1如果终端提示找不到codex问题还在安装或 PATH不要提前修改 API Key。若你打开的是 ChatGPT Desktop也不要继续套用下面的config.toml这篇解决的是 Codex CLI 自定义 provider 的首次调用。二、为 Codex 单独创建一个 Key不要让 Codex、Cursor、Claude Code 和日常脚本长期共用同一个 Key。单独 Key 有三个好处出错时能判断请求到底来自哪个工具泄露或异常时只撤销一个入口后续查看用量时可以把 Codex 的调用与其他客户端分开。在 CodeLink 注册并登录后创建一个只用于 Codex 的 Key。本文不展示真实 Key也不建议把它直接写进config.toml、截图、Issue 或 shell history。文章中的变量名统一使用CODELINK_API_KEY。macOS/Linux 可以先在当前终端会话中静默输入read-sCODELINK_API_KEYexportCODELINK_API_KEYprintf\nCODELINK_API_KEY is set for this shell only.\n这里不要把 Key 再打印出来。关闭终端后变量会消失确认链路跑通后再决定是否交给系统钥匙串或专门的密钥管理工具。三、用最小配置固定 providerOpenAI 当前配置参考明确说明用户级配置位于~/.codex/config.tomlprovider 和认证相关字段不能由项目内.codex/config.toml覆盖。官方自定义 provider 指南则把 provider 定义为 Base URL、wire API、认证和可选请求头的组合。先备份现有用户配置再增加一个独立 provider。下面示例与官方字段和本次0.144.1实测结果一致model 从 CodeLink 当前模型列表复制真实模型 ID model_provider codelink [model_providers.codelink] name CODELINK base_url https://api.codelink.chat env_key CODELINK_API_KEY wire_api responses这里最容易混淆的是四个值model_provider必须与[model_providers.codelink]的名称对应env_key填的是环境变量名不是 Key 本身model要填模型 ID不要凭展示名猜base_url是服务基址不要再拼完整的/responses资源路径。模型列表和兼容范围会变化因此正文不固化一个“永远可用”的模型名。注册后从当前模型页面复制真实 ID比从旧文章抄一个名字可靠。四、先证明配置被读取再发模型请求第一步只做严格配置解析codex --strict-config--help/dev/nullprintfstrict_config_exit%s\n$?看到strict_config_exit0只代表 TOML 能解析、字段没有立即被判为未知它还不能证明 Key、模型和接口真的可用。第二步执行脱敏诊断codex doctor--json本次回读中与链路有关的信号是model provider: custom provider name: CODELINK custom API base URL: https://api.codelink.chat reachable (HTTP 200) custom API route probe: https://api.codelink.chat/models route exists (HTTP 401) reachability mode: API key auth wire API: responses这里的/models401 是 doctor 的匿名路由探测它证明路由存在并要求认证不等于“你配置的 Key 已经失效”。真正的 Key 是否工作要看下一步的真实模型调用。五、在空目录完成第一次真实调用为了避免把仓库内容、AGENTS.md 或本地文件带进第一次验证我新建了一个临时空目录并使用只读、临时会话TEST_DIR$(mktemp-d)codexexec\--ephemeral\--skip-git-repo-check\--ignore-rules\--sandboxread-only\-C$TEST_DIR\Do not use tools. Reply with exactly CODELINK_EVIDENCE_OK and nothing else.这次调用最终得到provider: custom CODELINK_EVIDENCE_OK这两个信号比“配置文件看起来没问题”更有价值前者证明 Codex 选中了自定义 provider后者证明真实模型请求已经完成并返回预期内容。测试提示词不含项目代码、账号信息或隐私文本。运行时如果看到插件加载、文档连接器或本地 Skill 的警告要把它们与模型响应分开判断。只要最终 provider 正确且出现预期模型回复就不能把所有启动日志都笼统归咎于 CodeLink。六、失败时按层定位不要反复换 Key现象已经证明了什么下一步codex命令不存在还没进入 API 层修安装与 PATHstrict_config_exit非 0配置未通过解析查 TOML、字段名和 provider 对应关系doctor 看不到 CODELINK当前配置没有选中目标 provider查CODEX_HOME与model_provider基址不可达、DNS/TLS 失败请求还没到鉴权层查网络、代理、证书和域名匿名/models探测为 401路由存在且要求认证继续做真实调用不要据此轮换 Key真实调用返回 401当前进程的认证未通过查环境变量是否存在、Key 是否属于当前账号返回model_not_found请求已越过部分认证链路从当前模型列表复制真实 ID有模型回复但后台无记录客户端链路已通观测链未闭环查账号、Key 归属、日志延迟和筛选条件把这些层分开才能避免“网络问题换 Key、模型问题改 Base URL、日志问题重装客户端”这种无效排查。七、首次成功后后台要核对什么一次回复不代表整个接入已经可运营。登录 CodeLink 后建议在用量记录中核对是否出现刚才的 Codex 调用Key 名称是否是单独创建的 Codex Key模型 ID 是否与配置一致接口类型是否与responses配置对应时间、状态和用量字段是否能与本地调用对上。这次登录后的回读出现了一个很有价值的反例当前账号的 Key 页面显示“暂无 API 密钥”近 24 小时使用记录也是0 请求 / 0 Token / $0.0000但本机 Codex 已经获得真实模型回复。两者同时成立只能说明本机 Codex 使用的存量 Key 不属于当前登录账号。因此“客户端能回复”不能替代“账号归属正确”。如果后台仍是 0先核对当前登录邮箱、Key 是在哪个账号创建的、是否切错环境再考虑日志延迟。不要为了让截图看起来完整把另一个账号的成功调用硬归到当前账号。八、从安装流量走到注册不要把文章写成广告读者搜索 Codex 安装或换肤真正的下一步不是先看价格而是完成一个可验证的小任务。合适的转化顺序是确认产品 - 注册 - 创建独立 Key - 配置 provider - 最小调用成功 - 用量回读我这次真实调用使用的是 CODELINK provider。需要复现时可以从本文底部经审核的 CODELINK 官网卡进入未登录用户在登录页选择“注册”。正文不放充值、折扣或稳定性承诺先让第一次调用成功再决定是否继续使用。总结Codex 装好只是起点。真正可交付的首次接入至少要有三类证据codex doctor证明配置和 provider 被读取空目录中的最小请求得到真实模型回复服务端用量记录能回读同一次调用。本文前两项已经用 Codex CLI0.144.1和 CODELINK 完成第三项真实复现了“登录账号与 Key 归属不一致所以用量为 0”的分支。以后再遇到 401、model_not_found、“配置不生效”或“后台没有记录”就按配置、网络、认证、模型、账号归属、观测六层逐项排查不要靠反复重装和换 Key 碰运气。