Skip to content

疑难问题

本页面收录不容易从报错信息直接判断原因的问题,以及对应的处理方法。

1. 长上下文没有自动压缩,导致请求变慢和费用增加

问题表现

当 Codex 会话持续时间很长,聊天记录、工具输出和文件内容会不断累积。如果没有及时压缩上下文,后续请求可能携带大量历史内容发送到模型服务,常见表现包括:

  • 新消息发送后等待时间明显变长。
  • 相同任务消耗的输入 token 持续增加。
  • 长上下文进入更高的计费区间,产生明显高于普通会话的费用。
  • 上下文接近上限后,请求失败或会话无法继续。

解决方法

打开 Codex 配置文件 config.toml,加入以下两行:

toml
model_auto_compact_token_limit = 180000
model_context_window = 272000

这两行应该放在哪里

Windows 和 macOS 的放置规则一样:这两行都要放在 config.toml 的顶层配置区,也就是文件开头的全局配置部分。

建议放在 model、model_provider 等模型基础配置后面,并且必须放在任何方括号分组之前,例如 [model_providers.xxx]、[projects...]、[profiles...] 之前。

推荐放置方式:

toml
model = "gpt-6-astra"
model_provider = "sequenceq"

model_auto_compact_token_limit = 180000
model_context_window = 272000

[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
requires_openai_auth = true

如果你的 config.toml 里已经有这两行,就直接把值改成上面的值,不需要重复添加。如果你的 model、model_provider 或服务商配置与示例不同,保留原有值,只新增或修改这两个上下文配置即可。

Windows 如何添加

  1. 打开 Codex 配置文件:
text
%USERPROFILE%\.codex\config.toml

也可以在资源管理器地址栏输入:

text
%USERPROFILE%\.codex

然后打开里面的 config.toml。

  1. 在文件开头找到 model、model_provider 等配置。
  2. 把下面两行放在 model、model_provider 后面,并且放在任何 [model_providers.xxx]、[projects...]、[profiles...] 分组之前:
toml
model_auto_compact_token_limit = 180000
model_context_window = 272000
  1. 保存文件,完全退出 Codex CLI 或 Codex 桌面版,然后重新启动。

macOS 如何添加

  1. 打开 Codex 配置文件:
text
~/.codex/config.toml

可以在终端中执行:

bash
open -e ~/.codex/config.toml

如果文件不存在,可以先创建:

bash
mkdir -p ~/.codex
touch ~/.codex/config.toml
open -e ~/.codex/config.toml
  1. 在文件开头找到 model、model_provider 等配置。
  2. 把下面两行放在 model、model_provider 后面,并且放在任何 [model_providers.xxx]、[projects...]、[profiles...] 分组之前:
toml
model_auto_compact_token_limit = 180000
model_context_window = 272000
  1. 保存文件,完全退出 Codex CLI 或 Codex 桌面版,然后重新启动。

IMPORTANT

不要把这两行写到 [model_providers.xxx] 下面。写在分组下面时,它们会被当成该分组的配置项,可能不会作为 Codex 的全局上下文设置生效。

错误放置示例:

toml
[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
model_auto_compact_token_limit = 180000
model_context_window = 272000

为什么设置成这两个值

  • model_auto_compact_token_limit = 180000:当会话上下文接近 18 万 token 时,让 Codex 提前压缩较早的对话和工具结果,避免每次请求都继续携带完整的长历史。
  • model_context_window = 272000:把 Codex 可使用的上下文窗口设置为 27.2 万 token,防止客户端按过大的窗口持续堆积内容。
  • 两个值之间保留约 9.2 万 token 的余量,可供新输入、工具结果、模型输出和压缩过程使用,降低到达窗口上限后才开始处理的风险。

这组设置的目的不是让模型使用更长的上下文,而是让压缩更早发生,在保留足够工作空间的同时减少超长请求,从而改善响应速度并控制输入 token 成本。

修改后如何确认

  1. 保存 config.toml。
  2. 完全退出正在运行的 Codex CLI 和 Codex 桌面版。
  3. 重新启动 Codex。
  4. 建议新建一个会话继续工作,避免旧会话已经累积的大量历史继续影响请求。
  5. 长时间使用后观察响应速度和 token 消耗是否恢复正常。

如果修改后仍然没有自动压缩,请检查配置项是否拼写正确,以及它们是否误放在某个 [分组] 下。

2. 新版 Codex 报 unexpected status 401 Unauthorized: Invalid token

问题表现

新版 Codex 使用自定义接口时,如果认证配置不完整,可能会出现类似下面的报错:

text
unexpected status 401 Unauthorized: Invalid token (request id:a2e65fc4fd12774b-AMS
202608210258065367612608268d9d62YiBhBxi), url: https://api.sequenceq.com/v1/responses, cf-ray

上面是完整报错示例。实际报错里的 request id、url、cf-ray 等内容每次请求可能不同,url 也可能是本地代理地址或其他第三方接口地址,不需要用某个固定 url 判断。

升级新版 Codex 后出现类似 401 Unauthorized: Invalid token 时,优先检查当前系统的配置是否缺少 requires_openai_auth = true。

原因说明

新版 Codex 对认证方式的声明要求更明确。使用 OpenAI 兼容接口,或通过本地代理转发到 OpenAI 兼容接口时,需要配置 requires_openai_auth = true,告诉 Codex 按 OpenAI 兼容方式读取并发送认证信息。

Windows 和 macOS 都需要这个配置,但放置位置不同:

系统requires_openai_auth 的位置
Windows当前 [model_providers.xxx] provider 分组内
macOSconfig.toml 顶层,与 model_provider、openai_base_url 同级

Windows 如何添加

  1. 打开配置文件:
text
%USERPROFILE%\.codex\config.toml
  1. 查看文件顶部的 model_provider。例如:
toml
model_provider = "sequenceq"

这表示当前 provider 分组是 [model_providers.sequenceq]。

  1. 在对应的 provider 分组内加入 requires_openai_auth = true:
toml
model = "gpt-6-astra"
model_provider = "sequenceq"

[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
requires_openai_auth = true

如果 provider 名称或请求地址不同,保留自己的名称和地址,只把 requires_openai_auth = true 加到当前 model_provider 对应的分组内。

macOS 如何添加

  1. 打开配置文件:
text
~/.codex/config.toml

可以在终端中执行:

bash
open -e ~/.codex/config.toml
  1. 在 config.toml 顶层加入 requires_openai_auth = true。SeqeuenceQ 的新版 macOS 配置示例如下:
toml
model_provider = "openai"
openai_base_url = "https://api.sequenceq.com/v1"
model = "gpt-6-astra"
requires_openai_auth = true
generate_memories = false
background_agents = false

macOS 的 requires_openai_auth = true 与 model_provider、openai_base_url 同级。不要放进 [model_providers.sequenceq];这份 macOS 配置不使用 Windows 的 provider 分组结构。

如果请求经过本地代理,只需要保留实际使用的 openai_base_url,requires_openai_auth = true 的顶层位置不变。

IMPORTANT

requires_openai_auth 与长上下文配置的放置规则如下:

  • Windows:model_auto_compact_token_limit、model_context_window 在顶层;requires_openai_auth 在当前 provider 分组内。
  • macOS:三个配置都在 config.toml 顶层。

修改后如何确认

  1. 保存 config.toml。
  2. 完全退出正在运行的 Codex CLI 和 Codex 桌面版。
  3. 重新启动 Codex。
  4. 新建会话并再次发送请求,确认不再出现 401 Unauthorized: Invalid token。

如果仍然报 401,请继续检查 API Key 是否复制完整、是否已失效、当前系统的认证文件是否正确,以及请求实际使用的配置是否就是刚刚修改的 config.toml。

RelayStation 产品使用与配置中心