Codex使用自定义 Provider 无法生图解决方法

当Codex使用自定义 Provider 时生成图片没有返回,根本原因是Codex内置的 ​image_generation 工具在自定义 Provider下被客户端主动禁用。

Codex 的源码中存在一个认证门控逻辑:内置图片生成工具仅对 ​"auth_mode": "chatgpt"(即OAuth登录)开放。当你使用自定义Provider的API Key认证时,该工具不会被注入请求,因此表现为“静默失败”——没有报错,也没有图片返回。

在Codex的配置文件中,为你当前使用的​[model_providers.xxx]段手动写入以下配置,绕过上述认证门控:

[model_providers.custom]
name = "custom"
wire_api = "responses"
base_url = "https://your-api-endpoint.com/v1"
requires_openai_auth = false  # 关键:设为false关闭 OpenAI 官方账号鉴权要求;或删除不写
env_key = "OPENAI_API_KEY"    # 指定读取哪个环境变量
http_headers = { "x-openai-actor-authorization" = "local-relay" }  # 关键:门控占位,值可任意非空

配置文件位置:

  • Windows:​%USERPROFILE%\.codex\config.toml
  • macOS / Linux:​~/.codex/config.toml

关键配置在于 ​config.toml​ 文件中的 ​​requires_openai_auth​​ 和 ​​http_headers​ 两项。

  • ​requires_openai_auth = false​​:让 Codex 不要走官方 OpenAI 的认证流程。只要​​requires_openai_auth​​被设为 ​true​,Codex 就会认为这是一个需要走官方API Key鉴权流程的 Provider,从而不会为它注册本地的 ​image_gen 工具。
  • ​http_headers = { "x-openai-actor-authorization" = "任意非空值" }​ ​:这是一个关键的“开关”。Codex 会检查这个请求头是否存在且非空,只有满足条件,它才会激活本地的 ​image_gen​ 工具,从而让自定义Provider也能触发图片生成工具。这个值本身并不重要,可以填 ​"local-relay"​ 或 ​"local-image-extension" 等任意非空字符串。

设置API Key环境变量,Windows(PowerShell):

setx OPENAI_API_KEY "sk-你的ApiKey"

setx 是 Windows 自带的命令行工具,用来永久设置环境变量。它会把变量写入注册表,之后新启动的程序都能读到这个变量,但当前已经打开的窗口和程序不会立即生效。

修改后必须彻底重启 Codex,并新建一个会话进行测试。旧会话不会重新加载配置。

‍

posted @ 2026-11-04 09:24  星墨  阅读(22)  评论(0)    收藏  举报