OpenClaw + Codex 连接失败排查:从 HTML 页面到 Pro 会员直连
OpenClaw + Codex 连接失败排查:从 HTML 页面到 Pro 会员直连
问题现象
在 OpenClaw 控制台启动 Codex 时,报错:
MCP client connection error - unexpected HTML response
Codex 请求 https://xingjiabiapi.org/responses 返回的不是 API 响应,而是一个 HTML 前端页面。重启、重装都无法解决。
背景:为什么会配成这样?
我用了第三方 API 中转站(xingjiabiapi.org)来连接 Claude,在 OpenClaw 里配置如下:
{
"custom-xingjiabiapi-org": {
"baseUrl": "https://xingjiabiapi.org",
"api": "anthropic-messages"
}
}
这个配置对 Claude 完全没问题。但问题是——Codex CLI 的配置也被"污染"了。
连锁反应
1. OpenClaw 配置了 xingjiabiapi.org 作为 Claude 中转
└── 用于 Anthropic Messages API ✅
2. Codex CLI 的 config.toml 也被配成了同一个地址
└── model_provider = "custom"
└── base_url = "https://xingjiabiapi.org" ❌
3. Codex 用 OpenAI Responses API 拼出请求地址
└── https://xingjiabiapi.org/responses → 返回前端 HTML 页面 💥
本质原因:一个给 Claude 用的中转地址,被错误地用在了 Codex 上。而这两个产品的 API 格式完全不同。
| Claude(正确配置) | Codex(被错误配置) | |
|---|---|---|
| API 格式 | Anthropic Messages | OpenAI Responses |
| 正确地址 | xingjiabiapi.org | chatgpt.com/backend-api |
| 认证方式 | API Key | ChatGPT Pro OAuth |
排查过程
第一步:怀疑是代理问题 ❌
检查发现系统代理开着(127.0.0.1:21603),怀疑代理拦截了请求。但关掉代理后直接请求 xingjiabiapi.org,依然返回 HTML。
排除代理问题。
第二步:测试 API 端点 🔍
# 请求 /responses → 返回 HTML(前端页面)
Invoke-WebRequest "https://xingjiabiapi.org/responses" # ← 200, HTML
# 请求 /v1/responses → 返回 401(需要认证,说明 API 在 /v1 下)
Invoke-WebRequest "https://xingjiabiapi.org/v1/responses" # ← 401
关键发现:API 路径需要 /v1 前缀,根路径只是前端页面。
第三步:找到真正的配置问题 🎯
检查 Codex 配置文件 ~/.codex/config.toml:
model_provider = "custom"
[model_providers.custom]
name = "custom"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://xingjiabiapi.org" # ← 问题在这里!
Codex 拼出的请求:base_url + /responses = https://xingjiabiapi.org/responses → HTML 页面 💥
第四步:发现更好的方案 💡
查看 OpenClaw 的认证配置,发现已经存在 ChatGPT Pro 的 OAuth 认证,plan 类型是 pro,token 有效。
完全不需要第三方中转站,ChatGPT Pro 会员可以直接用官方 Codex!
解决方案
修改 ~/.codex/config.toml:
# 修改前(错误)
model_provider = "custom"
[model_providers.custom]
name = "custom"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://xingjiabiapi.org"
# 修改后(正确)
model_provider = "openai"
# 删掉 [model_providers.custom] 整个配置块
将 model_provider 从 "custom" 改为 "openai",删掉自定义 provider 配置。Codex 自动使用 ChatGPT Pro 的 OAuth 认证直连官方 API。
验证修复成功
修改配置后,Codex 聊天框底部的 provider 标签从之前的 Curre(Custom Provider 的缩写)变成了 openai(黄色标签),确认已经切换到官方 OpenAI 直连。

Vscode 插件页面

Codex客户端
可以看到:
- Provider 标签:
openai(黄色)✅ - 模型:
5.5✅ - 推理等级:超高(Extra High)✅
这说明 Codex 已经成功通过 ChatGPT Pro OAuth 直连官方 API,不再走第三方中转站了。
关键知识点
-
ChatGPT Pro ≠ OpenAI API:Pro 是网页订阅($200/月),API 是按 token 独立计费。但 Codex 是 Pro 会员的官方功能,通过 OAuth 直接使用,不需要额外付费。
-
不同 AI 服务的 API 不能混用:Claude 用 Anthropic Messages API,Codex 用 OpenAI Responses API。一个中转站地址不能同时服务两种格式。
-
第三方中转站的坑:中转站通常在根路径部署前端页面,API 在
/v1/路径下。配置 base_url 时要注意是否需要加/v1。 -
报错 “unexpected HTML response” 的本质:API 客户端期望 JSON,却收到 HTML —— 通常意味着请求打到了错误的地址(前端页面、代理拦截页等)。
-
配置污染要警惕:当你为一个服务配置了中转地址,要检查是否影响到了其他服务的配置。不同的 AI 产品应该用各自正确的连接方式。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)