• Mike

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

    主楼
  • yipgnnkg

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

    #1
  • Mike

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

    #2
  • rts_ai

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

    #3
  • yipgnnkg

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

    #4
  • 落叶

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

    #5
  • yipgnnkg

    一个developer instrution,可以设置关掉

    #6
  • ryker_amparo

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

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

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

    #7
  • Gordon

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

    #8

发表回复

登录后回复