Codex Desktop → CLIProxyAPI → OpenAI 请求分析讨论可能的降智原因

Mike 2026-09-13 19:12 1

最近饱受codex降智之苦,身边的朋友们也多多少少受到了波折。遍寻方法无果,看到站内时不时有佬友说改改请求头就可能可以解决降智的问题,但没有看到任何具体的方法。


今天看到一个帖子: 我解决Codex降智的全过程与分析 - 搞七捻三 - LINUX DO,佬的IP很纯净,经过摸索,改了个时区,静置了一会儿就不降智了,他说:“我想也许可能是静置后智商已经恢复,是第一次对话的环境导致账号再次降智。问题不是第二次对话,而是还是环境问题。” 仔细一想,这句话确实有道理啊。感谢 kafukasun 佬友的探索,这个帖子在此基础上继续讨论:


我的环境是:

请求设备:MacOS 26.6.2,Codex Desktop/0.154.0-alpha.6.2

CPA部署设备:美国家宽,版本号7.2.144

账号:菲区pro x20


首先是请求头:








































































































请求头 入站(Desktop → CPA) 出站(CPA → OpenAI) 处理方式
Authorization Bearer sk-J***(CPA key) Bearer eyJ***(OAuth JWT) 替换
User-Agent Codex Desktop/0.154.0-alpha.6.2 (Mac OS 26.6.2; arm64)… codex-tui/0.146.0 (Mac OS 26.5.0; arm64) iTerm.app/3.6.10… 伪装改写(写死常量)
Originator Codex Desktop codex-tui 伪装改写
Chatgpt-Account-Id 78c2734e-… 新增(OAuth 账号 ID)
Session-Id 01a09a1e-… 原值 白名单透传
Thread-Id 01a09a1e-… 原值 白名单透传
X-Client-Request-Id 01a09a1e-… 原值 白名单透传
X-Codex-Window-Id 01a09a1e-…:0 原值 白名单透传
X-Codex-Turn-Metadata `{installation_id, session_id, sandbox: “danger-full-access”, turn_started_at_unix_ms: 1789293131822, …}` 原值 白名单透传(**全链路唯一的时间信息就藏在头的这个 JSON 字段里**:epoch 毫秒、无时区语义;body 的 client_metadata 中还有重复一份)
X-Codex-Beta-Features remote_compaction_v2 原值 白名单透传
X-Openai-Internal-Codex-Responses-Lite true 原值 白名单透传
Accept / Content-Type text/event-stream / application/json 透传
Connection close Keep-Alive 重写
X-Forwarded-For / -Host / -Port / -Proto、X-Real-Ip / -Port、Remote-Host Cloudflare/反代附加 全部消失 溯源头清洗
Accept-Encoding gzip 删除(Go 运行时自动补 gzip) 清洗

Codex Desktop 带着自己的身份(User-Agent: Codex Desktop/0.154…Originator: Codex DesktopSession-Id/Thread-Id/X-Codex-* 全套会话头,以及一张 CPA 分发的 Authorization: Bearer sk-…)把请求发给 CPA,途中 Cloudflare 会顺手贴上 X-Forwarded-For 等快递单;CPA 收到后做四件事:把快递单全部撕掉(清洗 X-Forwarded-*X-Real-Ip 等溯源头)、把会话身份头原样转给上游(Session-Id、X-Codex-Turn-Metadata 等白名单,其余客户端头一律丢弃)、把 Authorization 换成真正的 ChatGPT OAuth token 并补上 Chatgpt-Account-Id、最后强制把 User-Agent/Originator 改写成硬编码的 codex-tui/0.146.0 (Mac OS…) iTerm.app,再用 Chrome TLS 指纹发出。于是 OpenAI 看到的就是一个干净的官方 CLI 请求。

请求头里是没有包含时区的,但包含UTC时间戳turn_started_at_unix_ms。


然后再看看请求体:

请求体中 Codex Desktop → CLIProxyAPI 与 CLIProxyAPI → OpenAI唯一的变化只是 CLIProxyAPI → OpenAI 在 body 顶层补了一个 "instructions": "" 字段(为了了伪装成cli发送的请求)。其他几乎是纯透传。


但在透传的请求里面,包含着:


<environment_context>
<cwd>/Users/mike/Personal/workspace/PORTAL2</cwd>
<shell>zsh</shell>
<current_date>2026-09-13</current_date>
<timezone>Asia/Shanghai</timezone>
<filesystem>…<file_system type="unrestricted"/></filesystem>
</environment_context>

这里面是包含时区信息的。


OpenAI的风控是黑盒的,看了很多帖子,普遍认为风控是多因素造成的,也许请求的时区真的算一个其中的一个维度呢?各方面都没啥问题的佬友,可以试试看有无作用。有降智处理思路的佬友,可以多指导,真的不胜感激。

最新回复 (8)
  • yipgnnkg 09-13 19:21
    1

    这个基本只适合 网页 work 不降智的,过去 astra 没出 sol 降智改这个有用的,事实上 desktop 还不是最优先级,最高,是带 origiator desktop work 那个,然后 desktop 如果模仿 Oauth 还要有xoai atdestination 这些,然后还有 tls,go 的 tls 不同于 rust,且默认 http1.2

  • Mike 楼主 09-13 19:24
    2

    佬说得对,所以cpa模仿的是cli的请求而非desktop

  • rts_ai 09-13 19:26
    3

    讲究,太讲究了,方正就是cpa还可以,我明白了

  • yipgnnkg 09-13 19:26
    4

    其实没必要,还不如直登,把电脑时区改一下。但一般直登也没用,这次是账户级的

  • 落叶 09-13 19:50
    5

    老哥,你提到的透传请求xml是在哪里看见的呢?我抓包倒是没见着

  • yipgnnkg 09-13 19:51
    6

    一个developer instrution,可以设置关掉

  • ryker amparo 09-13 19:53
    7

    我时区等都改了,用专门的网站查也都是绿色,codex都是专门走的家宽,还是不行

    可能有其他原因,但是光时区一个因素真不一定

    最有可能的是中文识别到就风控?要不然老外为什么一声不吭?

  • Gordon 09-13 19:57
    8

    佬,这个我已经尝试过,修改时区后,在冷却后可以正常回复最多 13 次正常消息,之后继续降智。 修改前一次就会降智。修改后,这个数量做到了 8~13 次。

* 帖子来源Linux.do
返回