Skip to content

支持压缩请求体下的 Fast service_tier 注入#6

Open
Basic-XYZ wants to merge 1 commit into
gaoguobin:mainfrom
Basic-XYZ:codex/support-compressed-request-bodies
Open

支持压缩请求体下的 Fast service_tier 注入#6
Basic-XYZ wants to merge 1 commit into
gaoguobin:mainfrom
Basic-XYZ:codex/support-compressed-request-bodies

Conversation

@Basic-XYZ
Copy link
Copy Markdown

@Basic-XYZ Basic-XYZ commented May 15, 2026

背景

Codex App 通过本地代理发送 /v1/responses 请求时,请求体可能不是普通 JSON,而是带有压缩或分块传输。例如实际流量里会出现:

  • Content-Encoding: zstd
  • Content-Encoding: gzip
  • Transfer-Encoding: chunked

在这些情况下,proxy 如果直接按 UTF-8 JSON 解码请求体,会解析失败,导致 service_tier_policy=inject_missing 无法正确兜底注入 service_tier: "priority"

改动

  • 支持在 patch service_tier 前读取并合并 chunked 请求体。
  • 支持 Content-Encoding: gzip 请求体:解压、注入、再按 gzip 压回。
  • 支持 Content-Encoding: zstd 请求体:解压、注入、再按 zstd 压回。
  • 为 zstd 解压增加兜底路径:当 python-zstandard 无法处理某些 frame 时,尝试使用本机 zstd -dc
  • 新增脱敏诊断字段:只记录 body 长度、前 4 字节 magic、content encoding,不记录 prompt 或请求正文。
  • 新增回归测试覆盖 gzip、zstd、无 content size 的 zstd、zstd fallback,以及 chunked 请求体。
  • 在项目依赖中加入 zstandard>=0.25.0,保证安装后具备 zstd 处理能力。

行为说明

这个改动不会覆盖已有 service_tier

  • 如果请求本身已经带 service_tier: "priority",proxy 会保留原值,记录为 priority -> priorityInject = no
  • 如果请求没有 service_tier,且策略是 inject_missing,proxy 会补上 service_tier: "priority",记录为 <absent> -> priorityInject = yes

验证

本地已执行:

python -m unittest discover -s tests -p 'test_proxy.py'

结果:

Ran 30 tests
OK

同时执行了本地可执行入口校验:

python -m pip install -e . --quiet
python -m codex_fast_proxy --help

@Basic-XYZ Basic-XYZ marked this pull request as ready for review May 15, 2026 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant