sub2api使用5.5进行compact步骤

根据 GPT5.5在触发上下文压缩的时候报错404了,这个是OpenAI上游的问题还是sub2的问题呢? · Issue #1865 · Wei-Shaw/sub2api · GitHub 这个issue的评论,把codex_cli_rs/0.104.0改成codex_cli_rs/0.124.0 ...
sub2api使用5.5进行compact步骤
sub2api使用5.5进行compact步骤

根据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写了以下脚本进行一键修复。

image
如果你是通过脚本安装的sub2api可以尝试一下这个办法
修复完自己测试是可以用5.5进行compact的
e4b134a761c29838df3f50aa8a238fac

# 安装 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

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

2 个帖子 - 2 位参与者

阅读完整话题

来源: linux.do查看原文