22
33> 真值以 ` docker ps ` 为准,不信文档。文档滞后时以线上状态为准并反向更新本文。
44
5- ## 1. 线上状态(截至 2026-05-10 22:40 )
5+ ## 1. 线上状态(截至 2026-05-13 11:30 )
66
77| 项 | 值 |
88| ---| ---|
9- | 镜像 | ` codex2api:v1.7.48-upstream-may10-paid ` (` latest ` )|
9+ | 镜像 | ` codex2api:v1.7.49-tool-calls-fix ` (` latest ` )|
1010| 容器 | ` codex2api ` |
11- | 端口 | ` 8123 ` (nginx upstream 指向 127.0.0.1:8123 )|
11+ | 端口 | ` 8121 ` (nginx upstream 指向 127.0.0.1:8121 )|
1212| 部署目录 | ` /data/codex2api/ ` |
1313| Admin | https://cx.wyzai.top/admin/ secret = ` 65187777 ` |
1414| 数据库 | PG ` codex2api-postgres ` , Redis ` codex2api-redis ` , 网络 ` codex2api_codex2api-net ` |
1818| 容器 body 上限 | ** 64 MB** (` CODEX_MAX_REQUEST_BODY_SIZE_MB=64 ` )|
1919| Dialog 采集 | ✅ 启用(默认 true,写入 PG ` dialog_logs ` )|
2020| Prefer-paid 调度 | Admin 面板运行时开关(默认 OFF = prefer_free)|
21- | 本地 git HEAD | ` 9fcd50b ` (` main ` / ` merge/upstream-2026-05-10 ` )|
21+ | 本地 git HEAD | ` 5194ab7 ` (` merge/upstream-2026-05-10 ` ,未 push )|
2222
2323## 2. SSH 接入
2424
@@ -33,17 +33,19 @@ sshpass -p '2R18UapfDNoT' ssh -p 24598 root@156.238.226.55
3333
3434## 3. 蓝绿 SOP(端口轮换)
3535
36- 端口: ` 8120 → 8121 → 8122 → 8123 → 8120 … `
36+ 端口候选: ` 8121 / 8122 / 8123 ` ( ** 8120 已被 sms-relay 容器永久占用,跳过 ** )
3737
3838** 🚨 不要把多步串成一行 bash——stdout buffer 会让你误以为卡死。每步独立跑。**
3939
4040``` bash
4141SSH=' sshpass -p f3t7uCBeTCizT12 ssh -p 22222 -o StrictHostKeyChecking=no root@152.53.240.159'
4242SCP=' sshpass -p f3t7uCBeTCizT12 scp -P 22222 -o StrictHostKeyChecking=no'
43- OLD=8123 ; NEW=8120 ; TAG=v1.7.49 -xxx
43+ OLD=8121 ; NEW=8122 ; TAG=v1.7.50 -xxx
4444```
4545
46- > ** 下次端口** :8123 → 8120(轮换到最老的回收端口即可)
46+ > ** 下次端口** :8121 → 8122(或 8123,都空着;切忌选 8120 = sms-relay)
47+ >
48+ > ** 起容器前先验空** :` ss -tlnp | grep ":81[12][0-9]" ` 确认目标端口无人监听
4749
4850### Step 1 · 本地 tar 打包(5-10s)
4951
@@ -173,7 +175,8 @@ docker exec codex2api-postgres psql -U codex2api -d codex2api -c \
173175| v1.7.44-unlock-banned | 8121 | - | 封禁 plus 账号自动解锁可清理 |
174176| v1.7.45-sse-keepalive | 8122 | 2026-05-04 | SSE/JSON 双路径 keepalive 防 CF 100s idle |
175177| v1.7.47-prefer-paid | 8125 | 2026-05-08 | 付费账号优先 Free 兜底(admin 开关)+ Dialog logs 异步采集(⚠️ 代码曾仅在服务器,已合并回本地 9fcd50b)|
176- | ** v1.7.48-upstream-may10-paid** | ** 8123** | ** 2026-05-10** | ** upstream port(流式 usage / 5h 紧迫性 / 工具参数剥离 / validation 扩充)+ 合并回 v1.7.47 的 prefer-paid & dialog logs + 413 提到 64MB** |
178+ | v1.7.48-upstream-may10-paid | 8123 | 2026-05-10 | upstream port(流式 usage / 5h 紧迫性 / 工具参数剥离 / validation 扩充)+ 合并回 v1.7.47 的 prefer-paid & dialog logs + 413 提到 64MB |
179+ | ** v1.7.49-tool-calls-fix** | ** 8121** | ** 2026-05-13** | ** 修复非流式 ChatCompletions tool_calls 丢失:从 ` response.output_item.done ` 收 function_call(上游不一定在 ` completed.output[] ` 回填)** ,stream=true 不受影响 |
177180
178181## 8. 不要再做的事
179182
@@ -200,7 +203,7 @@ docker exec codex2api-postgres psql -U codex2api -d codex2api -c \
200203
201204``` bash
202205# /data/codex2api/.env
203- CODEX_PORT=8123 # 当前端口(随蓝绿轮换)
206+ CODEX_PORT=8121 # 当前端口(随蓝绿轮换)
204207CODEX_MAX_REQUEST_BODY_SIZE_MB=64 # 请求体上限,默认 32MB;v1.7.48 起调到 64MB 解决 413
205208DIALOG_COLLECTION_ENABLED=true # 对话采集总开关(默认 true,启动级);false=不创建实例
206209CODEX_TRANSPORT_MODE=standard # TLS 指纹:standard=Go 原生 / utls_chrome=仿 Chrome
0 commit comments