any router codex 能不能用?先核对 Base URL、Key 与 Responses API
简答:可以尝试接入,但不要把首页的 Chat Completions 示例直接填进 Codex。先核对 anyrouter.cfd 当前公开的 Base URL 是否为 <code>https://anyrouter.cfd/api/v1</code>、服务方是否列出 <code>POST /responses</code>,再用服务方模型目录中的准确 ID 发一次最小 Responses 请求;请求返回 JSON 且状态为成功后,才继续写入 Codex 配置。本文不是 anyrouter.cfd 官方文档,而是基于 2026-10-30 可见页面与 Codex 官方资料整理的核验指南。
定义:any router codex 接入,是让 Codex CLI 通过兼容网关的 Base URL 和 API Key 调用模型,而不是默认直连 OpenAI API。
先看 3 步结论:能否接入取决于这三个核验项
| 核验项 | 当前可见信息 | 你要做的动作 |
|---|---|---|
| Base URL | 服务方的 agents.md 页面列出 https://anyrouter.cfd/api/v1 | 只把 Base URL 填到 .../api/v1,不要把 /chat/completions 或 /responses 一并填入 |
| 协议 | 首页展示 Chat Completions;agents.md 另外列出 POST /responses | Codex 测试时请求 POST /responses,不能用 Chat Completions 成功结果替代 |
| 模型 | 模型目录列出多个 owner/model 格式的 ID,也列出 anyrouter/auto | 优先从当前模型目录或 /models 响应复制准确 ID,不要手写或猜测 |
最快判断:先查询模型,再发一次 Responses 请求;如果返回 401,先查 Key;如果返回 404,先查路径或 Base URL;如果返回模型错误,改用目录中实际存在的模型 ID。服务方页面能够证明“公开列出了这些配置”,但不能替代你对当前账户权限、模型可用性和 Codex 任务行为的实际验证。Base URL、认证头和 Responses 端点可参考 服务方公开的 AI coding agents 配置页;首页的 Chat Completions 示例见 服务方首页。
第 1 步:安装 Codex CLI,并确认本地命令可用
Codex 官方 README 当前提供 macOS/Linux 安装脚本和 Windows PowerShell 安装脚本。安装完成后,先确认 codex 命令能运行,再进行网关配置。安装说明见 Codex 官方 README。
macOS 或 Linux
在终端执行官方安装命令:
curl -fsSL https://chatgpt.com/codex/install.sh | sh。重新打开终端,执行
codex --version。进入一个可备份的测试项目目录,运行
codex,确认 CLI 本身能够启动。
Windows PowerShell
在 PowerShell 执行:
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"。重新打开 PowerShell,执行
codex --version。如果提示找不到命令,先检查安装目录是否已加入 PATH,不要先修改 API 配置。
安装成功只代表 Codex CLI 可以启动,不代表网关、Key、协议和模型已经通过验证。先把本地安装问题与 API 接入问题分开处理。
第 2 步:创建 Key、设置变量并检查变量是否为空
服务方公开页面列出了 API Key 控制台路径和 ANYROUTER_API_KEY 变量名;Key 应从当前账户页面生成,不能把真实密钥写进项目、截图、Git 提交或命令参数中。变量名统一使用 ANYROUTER_API_KEY,避免前文设置一个变量、请求却读取另一个变量。
macOS/Linux 临时设置
export ANYROUTER_API_KEY="替换为你的真实Key"
test -n "$ANYROUTER_API_KEY" && echo "Key 已设置" || echo "Key 为空"
Windows PowerShell 临时设置
$env:ANYROUTER_API_KEY = "替换为你的真实Key"
if ([string]::IsNullOrWhiteSpace($env:ANYROUTER_API_KEY)) { "Key 为空" } else { "Key 已设置" }
本文不把 OPENAI_BASE_URL 当作 Codex CLI 已确认会自动读取的通用开关。OpenAI 的其他 CLI 文档确实说明该变量可以改变 API 主机,但 Codex 的自定义 provider 应以当前 Codex 配置文档和本机版本行为为准。对于 Codex,优先检查 ~/.codex/config.toml 或当前版本帮助信息,而不是只设置一个未经验证的环境变量。OpenAI 官方资料可参考 OpenAI CLI 的 Base URL 说明和 Codex 配置文档入口。
第 3 步:先查模型,再发最小 Responses 请求
这一步是完整闭环的关键:先确认 Key 能访问模型列表,再确认 /responses 路径和请求体能返回 JSON。服务方公开 agents.md 页面列出 GET /models、POST /responses,但本文不替你保证当前账户一定有权限调用每个模型。
macOS/Linux:查询模型
curl -sS -i "https://anyrouter.cfd/api/v1/models" -H "Authorization: Bearer $ANYROUTER_API_KEY"
从 JSON 中复制一个当前存在的模型 ID,例如页面目录显示的 anyrouter/auto,但最终应以你实际收到的模型列表为准。
macOS/Linux:最小 Responses 请求
curl -sS -i "https://anyrouter.cfd/api/v1/responses" -H "Authorization: Bearer $ANYROUTER_API_KEY" -H "Content-Type: application/json" --data '{"model":"替换为模型目录中的准确ID","input":"Reply with OK"}'
PowerShell:查询模型和读取响应
$headers = @{ Authorization = "Bearer $env:ANYROUTER_API_KEY" }
if ([string]::IsNullOrWhiteSpace($env:ANYROUTER_API_KEY)) { throw "ANYROUTER_API_KEY 为空" }
$modelResponse = Invoke-WebRequest -Uri "https://anyrouter.cfd/api/v1/models" -Headers $headers -Method Get
$modelResponse.StatusCode
$modelResponse.Content
Responses 请求的请求体至少要使用服务方和兼容协议都接受的字段;OpenAI 官方 Responses API 参考使用 model 与 input 创建响应,可参考 Responses 创建接口参考。成功判定应同时满足:HTTP 状态为成功、响应正文是 JSON、存在响应 ID 或服务方定义的成功字段,并能看到可读输出。只返回 HTML、登录页或网关错误页面,不算调用成功。
确认最小请求成功后,再写 Codex provider 配置
如果模型查询和 Responses 最小请求都通过,可以再尝试 Codex 自定义 provider。OpenAI 官方 Codex app-server 文档公开示例使用 base_url、env_key、wire_api = "responses" 等字段;这能说明字段含义和 Responses provider 的配置方向,但不同 Codex CLI 版本的配置入口仍应以本机帮助和当前官方文档为准。示例见 Codex app-server 官方配置说明。
可先在 ~/.codex/config.toml 中保留一个占位模板,只有在前面的请求已成功并且字段被当前版本接受后再启用:
model = "替换为模型目录中的准确ID"
model_provider = "anyrouter_cfd"
[model_providers.anyrouter_cfd]
name = "AnyRouter cfd"
base_url = "https://anyrouter.cfd/api/v1"
env_key = "ANYROUTER_API_KEY"
wire_api = "responses"
如果当前 Codex 版本不接受这些字段,不要靠猜测修改配置;先执行 codex --help、检查当前版本文档,或暂时回到最小 HTTP 请求定位问题。wire_api = "responses" 只表示按 Responses 协议发送请求,不能把一个实际只支持 Chat Completions 的接口转换成 Responses API。
不要把完整路径填进 base_url:错误示例是 https://anyrouter.cfd/api/v1/responses。通常 Base URL 应停在 /api/v1,具体资源路径由客户端拼接;但如果当前 Codex 版本或服务方文档明确要求不同格式,应以其明确说明为准。
401、403、404、429 和直连问题:按顺序分流
401 或认证失败:先检查当前进程是否能看到
ANYROUTER_API_KEY,确认没有多余空格、换行或失效 Key;不要把完整 Key 打印到日志。403:检查账户权限、模型权限和服务方账户状态。Codex 本地配置无法推断余额或权限,需查看服务方当前控制台信息。
404 或 endpoint not found:检查是否把完整端点写进了 Base URL,是否重复拼接了
/api/v1,以及请求是否确实发往/responses。Model not found:重新请求
/models,复制准确的id;不要因为首页示例出现某个模型就推断当前账户一定可用。429:先查看响应正文和服务方给出的限流信息。只有临时限流且有明确重试条件时,才在总时限内有限重试;余额、权限和未知错误不要自动重试。
请求仍直连默认服务:检查 provider 是否真正被选择、
base_url是否生效,以及环境变量是否存在于启动 Codex 的同一进程。可以先在测试目录运行,再通过服务端日志或响应信息确认请求目的地。Responses 请求能通但 Codex 任务失败:这说明基础链路已通,但不等于工具调用、流式事件、上下文长度或模型能力都兼容。先使用短输入、只读任务和目录中明确支持的模型,再逐项增加复杂能力。
推荐排查顺序是:Key 可见性 → 模型列表 → Base URL → Responses 路径 → 模型 ID → Codex provider → 复杂任务能力。这样可以避免把认证问题误判成模型问题,也避免把 Chat Completions 的成功误判成 Codex 成功。
安全检查与适用边界
API Key 只放在环境变量或受保护的密钥存储中,不提交到 Git。
排错日志只保留域名、状态码、错误类型和时间,不记录完整 Authorization 头。
撤销或轮换 Key 后,重新打开终端并检查旧变量是否仍存在,避免测试时发送了意外凭据。
模型、价格、限速、免费额度和可用性属于动态信息;本文只引用 2026-10-30 可见页面,不对未核实的账户待遇作结论。
如果服务方后续修改端点或模型目录,应以其当前公开文档和实际 API 响应为准,不要继续沿用旧配置。
本文的结论是条件性的:anyrouter.cfd 当前公开页面列出了 OpenAI-compatible Base URL、模型列表和 Responses 端点,但 Codex 是否能完成具体任务,仍需用你的 Key、准确模型 ID 和当前 Codex 版本完成最小请求验证。
常见问题
any router codex 可以直接使用吗?
可以尝试,但不能把首页的 Chat Completions 示例直接当成 Codex 配置。先用当前 Key 查询模型,再请求 https://anyrouter.cfd/api/v1/responses;只有 Responses 请求返回成功 JSON 后,才继续配置 Codex provider。
anyrouter.cfd 的 Codex Base URL 应该填什么?
服务方公开 agents.md 页面列出的 Base URL 是 https://anyrouter.cfd/api/v1。通常不要把 /responses 或 /chat/completions 追加到 Base URL;具体仍要以当前 Codex 版本和服务方文档要求为准。
为什么 Chat Completions 能用,Codex 还是报错?
两者不是同一个核验。Chat Completions 成功只能说明该请求路径和请求体可能可用,不能证明 Responses 协议、Codex provider、工具调用、流式行为或模型权限都可用。应单独测试 /responses。
应该使用 anyrouter/auto 还是其他模型?
优先使用当前 GET /models 返回的准确模型 ID。服务方页面列出 anyrouter/auto,但这只能证明页面公开展示了该 ID,不能保证你的账户、当前 Codex 版本和具体任务一定可用。
设置 OPENAI_BASE_URL 就能让 Codex 改走 AnyRouter 吗?
不能直接这样假定。OpenAI 的其他 CLI 文档说明 OPENAI_BASE_URL 可改变 API 主机,但 Codex 是否读取该变量取决于当前版本和配置方式。Codex 接入应优先检查 model_providers 配置、base_url 和实际请求结果。
PowerShell 如何确认没有发送空 Key?
先执行 if ([string]::IsNullOrWhiteSpace($env:ANYROUTER_API_KEY)) { "Key 为空" } else { "Key 已设置" },再发请求。不要打印完整 Key,也不要把真实 Key 写入脚本、命令参数或日志。