- Mike2026-09-1315978
最近饱受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 Desktop、Session-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的风控是黑盒的,看了很多帖子,普遍认为风控是多因素造成的,也许请求的时区真的算一个其中的一个维度呢?各方面都没啥问题的佬友,可以试试看有无作用。有降智处理思路的佬友,可以多指导,真的不胜感激。
主楼 - yipgnnkg2026-09-1325220
这个基本只适合 网页 work 不降智的,过去 astra 没出 sol 降智改这个有用的,事实上 desktop 还不是最优先级,最高,是带 origiator desktop work 那个,然后 desktop 如果模仿 Oauth 还要有xoai atdestination 这些,然后还有 tls,go 的 tls 不同于 rust,且默认 http1.2
- Mike2026-09-1315978
佬说得对,所以cpa模仿的是cli的请求而非desktop
- rts_ai2026-09-1337856
讲究,太讲究了,方正就是cpa还可以,我明白了
- yipgnnkg2026-09-1325220
其实没必要,还不如直登,把电脑时区改一下。但一般直登也没用,这次是账户级的
- 落叶2026-09-1326185
老哥,你提到的透传请求xml是在哪里看见的呢?我抓包倒是没见着
- yipgnnkg2026-09-1325220
一个developer instrution,可以设置关掉
- ryker_amparo2026-09-1317749
- Gordon2026-09-1334555
佬,这个我已经尝试过,修改时区后,在冷却后可以正常回复最多 13 次正常消息,之后继续降智。 修改前一次就会降智。修改后,这个数量做到了 8~13 次。