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客户端


Vscode 插件页面



Codex 客户端

Codex客户端




可以看到:

  • Provider 标签openai(黄色)✅
  • 模型5.5
  • 推理等级:超高(Extra High)✅

这说明 Codex 已经成功通过 ChatGPT Pro OAuth 直连官方 API,不再走第三方中转站了。

关键知识点

  1. ChatGPT Pro ≠ OpenAI API:Pro 是网页订阅($200/月),API 是按 token 独立计费。但 Codex 是 Pro 会员的官方功能,通过 OAuth 直接使用,不需要额外付费。

  2. 不同 AI 服务的 API 不能混用:Claude 用 Anthropic Messages API,Codex 用 OpenAI Responses API。一个中转站地址不能同时服务两种格式。

  3. 第三方中转站的坑:中转站通常在根路径部署前端页面,API 在 /v1/ 路径下。配置 base_url 时要注意是否需要加 /v1

  4. 报错 “unexpected HTML response” 的本质:API 客户端期望 JSON,却收到 HTML —— 通常意味着请求打到了错误的地址(前端页面、代理拦截页等)。

  5. 配置污染要警惕:当你为一个服务配置了中转地址,要检查是否影响到了其他服务的配置。不同的 AI 产品应该用各自正确的连接方式。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐