sub2api使用5.5进行compact步骤

2026-04-29 09:353阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

根据GPT5.5在触发上下文压缩的时候报错404了,这个是OpenAI上游的问题还是sub2的问题呢? · Issue #1865 · Wei-Shaw/sub2api · GitHub 这个issue的评论,把codex_cli_rs/0.104.0改成codex_cli_rs/0.124.0 及以上可以修复使用5.5进行compact报404找不到模型的问题。让GPT写了以下脚本进行一键修复。
image1188×497 24.1 KB
如果你是通过脚本安装的sub2api可以尝试一下这个办法
修复完自己测试是可以用5.5进行compact的
e4b134a761c29838df3f50aa8a238fac573×216 2.92 KB

# 安装 strings 所需工具,如果已经有会跳过 if ! command -v strings >/dev/null 2>&1; then if command -v apt >/dev/null 2>&1; then sudo apt update sudo apt install -y binutils elif command -v yum >/dev/null 2>&1; then sudo yum install -y binutils fi fi # 创建 Sub2API Codex UA/version 自动补丁脚本 sudo tee /usr/local/sbin/sub2api-patch-codex-ua.sh >/dev/null <<'EOF' #!/usr/bin/env bash set -euo pipefail BIN="${1:-/opt/sub2api/sub2api}" FROM_UA="codex_cli_rs/0.104.0" TO_UA="${SUB2API_CODEX_UA:-codex_cli_rs/0.125.0}" FROM_VER="0.104.0" TO_VER="${SUB2API_CODEX_VERSION:-0.125.0}" if [ ! -f "$BIN" ]; then echo "[sub2api-patch] binary not found: $BIN" exit 0 fi if [ "${#FROM_UA}" -ne "${#TO_UA}" ]; then echo "[sub2api-patch] ERROR: UA replacement must have same length" echo "[sub2api-patch] FROM=$FROM_UA len=${#FROM_UA}" echo "[sub2api-patch] TO=$TO_UA len=${#TO_UA}" exit 1 fi if [ "${#FROM_VER}" -ne "${#TO_VER}" ]; then echo "[sub2api-patch] ERROR: version replacement must have same length" echo "[sub2api-patch] FROM=$FROM_VER len=${#FROM_VER}" echo "[sub2api-patch] TO=$TO_VER len=${#TO_VER}" exit 1 fi python3 - "$BIN" "$FROM_UA" "$TO_UA" "$FROM_VER" "$TO_VER" <<'PY' import os import sys import time from pathlib import Path bin_path = Path(sys.argv[1]) from_ua = sys.argv[2].encode() to_ua = sys.argv[3].encode() from_ver = sys.argv[4].encode() to_ver = sys.argv[5].encode() data = bin_path.read_bytes() old_ua_count = data.count(from_ua) old_ver_count = data.count(from_ver) new_ua_count = data.count(to_ua) if old_ua_count == 0 and old_ver_count == 0: if new_ua_count > 0: print(f"[sub2api-patch] already patched: {bin_path}") else: print(f"[sub2api-patch] old markers not found; upstream may already use another version: {bin_path}") sys.exit(0) backup = bin_path.with_name( bin_path.name + ".backup.before-codex-ua-patch." + time.strftime("%Y%m%d%H%M%S") ) backup.write_bytes(data) patched = data.replace(from_ua, to_ua) patched = patched.replace(from_ver, to_ver) st = bin_path.stat() tmp = bin_path.with_name(bin_path.name + ".patched.tmp") tmp.write_bytes(patched) os.chmod(tmp, st.st_mode) os.replace(tmp, bin_path) print(f"[sub2api-patch] patched {bin_path}") print(f"[sub2api-patch] backup: {backup}") print(f"[sub2api-patch] replaced UA occurrences: {old_ua_count}") print(f"[sub2api-patch] replaced version occurrences: {old_ver_count}") PY chown sub2api:sub2api "$BIN" 2>/dev/null || true chmod +x "$BIN" EOF sudo chmod +x /usr/local/sbin/sub2api-patch-codex-ua.sh # 先给当前二进制打一次补丁 sudo /usr/local/sbin/sub2api-patch-codex-ua.sh /opt/sub2api/sub2api # 添加 systemd override:每次启动 sub2api 前自动重新打补丁 sudo mkdir -p /etc/systemd/system/sub2api.service.d sudo tee /etc/systemd/system/sub2api.service.d/10-codex-ua-patch.conf >/dev/null <<'EOF' [Service] ExecStartPre=+/usr/local/sbin/sub2api-patch-codex-ua.sh /opt/sub2api/sub2api EOF # 重载 systemd 并重启服务 sudo systemctl daemon-reload sudo systemctl restart sub2api # 查看服务状态 sudo systemctl status sub2api --no-pager # 验证二进制里的 Codex UA echo echo "==== Codex UA markers in binary ====" strings /opt/sub2api/sub2api | grep -oE 'codex_cli_rs/[0-9]+\.[0-9]+\.[0-9]+' | sort -u || true echo echo "==== Version markers around 0.104.0 / 0.125.0 ====" strings /opt/sub2api/sub2api | grep -oE '0\.104\.0|0\.125\.0' | sort | uniq -c || true echo echo "==== Recent sub2api logs ====" sudo journalctl -u sub2api -n 60 --no-pager

作者不知道啥时候发新版就先用这个顶一下吧

网友解答:
--【壹】--:

我觉得不一定下个版本就会修复,哎。之前我做测试的时候,远程压缩这个端点一直是找不到模型 ID, 我一直以为是 OpenAI 那边没写。看这位老哥说的意思,我有点明白了:因为 SUB 在伪装时伪装的是 104 的版本,这个版本没有这个端点,而 105 的端点是有的。也就是说 OpenAI 那边把不同版本单独做了一个模型列表。104 里没有 5.5,所以你用 104 伪装的时候,请求到的对应模型缓存列表也没有 5.5 的模型,远程压缩就会一直失败。然后需要改成 125 的版本。如果 SUB 想不到这一点,我觉得也不一定什么时候会修复。


--【贰】--:

sub应该做成动态设置的,后端ui上改改就可以多好哈哈


--【叁】--:

你是不是有点太小看开源社区了,我昨天就看到一大堆issue和PR了,今早一看就发新版本修复了


--【肆】--:

fix(openai): bump codex CLI version from 0.104.0 to 0.125.0 #1940
这边已经merged了


--【伍】--:

这种下个版本就修复的bug,为什么要做这种持久性的修改?


--【陆】--:

不至于要那么久 其实昨天下午就已经推送新版本彻底修复了


--【柒】--:

昨天118的版本好像已经更新了,我用5.5开强制模式没什么问题

问题描述:

根据GPT5.5在触发上下文压缩的时候报错404了,这个是OpenAI上游的问题还是sub2的问题呢? · Issue #1865 · Wei-Shaw/sub2api · GitHub 这个issue的评论,把codex_cli_rs/0.104.0改成codex_cli_rs/0.124.0 及以上可以修复使用5.5进行compact报404找不到模型的问题。让GPT写了以下脚本进行一键修复。
image1188×497 24.1 KB
如果你是通过脚本安装的sub2api可以尝试一下这个办法
修复完自己测试是可以用5.5进行compact的
e4b134a761c29838df3f50aa8a238fac573×216 2.92 KB

# 安装 strings 所需工具,如果已经有会跳过 if ! command -v strings >/dev/null 2>&1; then if command -v apt >/dev/null 2>&1; then sudo apt update sudo apt install -y binutils elif command -v yum >/dev/null 2>&1; then sudo yum install -y binutils fi fi # 创建 Sub2API Codex UA/version 自动补丁脚本 sudo tee /usr/local/sbin/sub2api-patch-codex-ua.sh >/dev/null <<'EOF' #!/usr/bin/env bash set -euo pipefail BIN="${1:-/opt/sub2api/sub2api}" FROM_UA="codex_cli_rs/0.104.0" TO_UA="${SUB2API_CODEX_UA:-codex_cli_rs/0.125.0}" FROM_VER="0.104.0" TO_VER="${SUB2API_CODEX_VERSION:-0.125.0}" if [ ! -f "$BIN" ]; then echo "[sub2api-patch] binary not found: $BIN" exit 0 fi if [ "${#FROM_UA}" -ne "${#TO_UA}" ]; then echo "[sub2api-patch] ERROR: UA replacement must have same length" echo "[sub2api-patch] FROM=$FROM_UA len=${#FROM_UA}" echo "[sub2api-patch] TO=$TO_UA len=${#TO_UA}" exit 1 fi if [ "${#FROM_VER}" -ne "${#TO_VER}" ]; then echo "[sub2api-patch] ERROR: version replacement must have same length" echo "[sub2api-patch] FROM=$FROM_VER len=${#FROM_VER}" echo "[sub2api-patch] TO=$TO_VER len=${#TO_VER}" exit 1 fi python3 - "$BIN" "$FROM_UA" "$TO_UA" "$FROM_VER" "$TO_VER" <<'PY' import os import sys import time from pathlib import Path bin_path = Path(sys.argv[1]) from_ua = sys.argv[2].encode() to_ua = sys.argv[3].encode() from_ver = sys.argv[4].encode() to_ver = sys.argv[5].encode() data = bin_path.read_bytes() old_ua_count = data.count(from_ua) old_ver_count = data.count(from_ver) new_ua_count = data.count(to_ua) if old_ua_count == 0 and old_ver_count == 0: if new_ua_count > 0: print(f"[sub2api-patch] already patched: {bin_path}") else: print(f"[sub2api-patch] old markers not found; upstream may already use another version: {bin_path}") sys.exit(0) backup = bin_path.with_name( bin_path.name + ".backup.before-codex-ua-patch." + time.strftime("%Y%m%d%H%M%S") ) backup.write_bytes(data) patched = data.replace(from_ua, to_ua) patched = patched.replace(from_ver, to_ver) st = bin_path.stat() tmp = bin_path.with_name(bin_path.name + ".patched.tmp") tmp.write_bytes(patched) os.chmod(tmp, st.st_mode) os.replace(tmp, bin_path) print(f"[sub2api-patch] patched {bin_path}") print(f"[sub2api-patch] backup: {backup}") print(f"[sub2api-patch] replaced UA occurrences: {old_ua_count}") print(f"[sub2api-patch] replaced version occurrences: {old_ver_count}") PY chown sub2api:sub2api "$BIN" 2>/dev/null || true chmod +x "$BIN" EOF sudo chmod +x /usr/local/sbin/sub2api-patch-codex-ua.sh # 先给当前二进制打一次补丁 sudo /usr/local/sbin/sub2api-patch-codex-ua.sh /opt/sub2api/sub2api # 添加 systemd override:每次启动 sub2api 前自动重新打补丁 sudo mkdir -p /etc/systemd/system/sub2api.service.d sudo tee /etc/systemd/system/sub2api.service.d/10-codex-ua-patch.conf >/dev/null <<'EOF' [Service] ExecStartPre=+/usr/local/sbin/sub2api-patch-codex-ua.sh /opt/sub2api/sub2api EOF # 重载 systemd 并重启服务 sudo systemctl daemon-reload sudo systemctl restart sub2api # 查看服务状态 sudo systemctl status sub2api --no-pager # 验证二进制里的 Codex UA echo echo "==== Codex UA markers in binary ====" strings /opt/sub2api/sub2api | grep -oE 'codex_cli_rs/[0-9]+\.[0-9]+\.[0-9]+' | sort -u || true echo echo "==== Version markers around 0.104.0 / 0.125.0 ====" strings /opt/sub2api/sub2api | grep -oE '0\.104\.0|0\.125\.0' | sort | uniq -c || true echo echo "==== Recent sub2api logs ====" sudo journalctl -u sub2api -n 60 --no-pager

作者不知道啥时候发新版就先用这个顶一下吧

网友解答:
--【壹】--:

我觉得不一定下个版本就会修复,哎。之前我做测试的时候,远程压缩这个端点一直是找不到模型 ID, 我一直以为是 OpenAI 那边没写。看这位老哥说的意思,我有点明白了:因为 SUB 在伪装时伪装的是 104 的版本,这个版本没有这个端点,而 105 的端点是有的。也就是说 OpenAI 那边把不同版本单独做了一个模型列表。104 里没有 5.5,所以你用 104 伪装的时候,请求到的对应模型缓存列表也没有 5.5 的模型,远程压缩就会一直失败。然后需要改成 125 的版本。如果 SUB 想不到这一点,我觉得也不一定什么时候会修复。


--【贰】--:

sub应该做成动态设置的,后端ui上改改就可以多好哈哈


--【叁】--:

你是不是有点太小看开源社区了,我昨天就看到一大堆issue和PR了,今早一看就发新版本修复了


--【肆】--:

fix(openai): bump codex CLI version from 0.104.0 to 0.125.0 #1940
这边已经merged了


--【伍】--:

这种下个版本就修复的bug,为什么要做这种持久性的修改?


--【陆】--:

不至于要那么久 其实昨天下午就已经推送新版本彻底修复了


--【柒】--:

昨天118的版本好像已经更新了,我用5.5开强制模式没什么问题