Repository navigation
DSCodex v1.2.1 — Keep the Wire
DSCodex v1.2.1 — Keep the Wire
ChatGPT 桌面端 26.908 起,官方 GPT 模型会先连 ws://127.0.0.1:10110/<token>/v1/responses。DSCodex 原先对所有 upgrade 回 426,路由器一停官方模型就 Reconnecting 1/5…5/5。本版本把这条线接到 chatgpt.com,DeepSeek 仍走 HTTP Responses。
Highlights
- 🔌 官方 GPT 走回 Responses WebSocket。 授权过的
/v1/responsesupgrade 透传到wss://chatgpt.com/backend-api/codex/responses,OAuth 头与 query 原样转发。桌面端 warmup 在 accept 时就向上游握手,首个 turn 不再多付一次 TLS。--use-env-proxy下 wss 走 HTTPS_PROXY 的 CONNECT,loopback 仍直连。 - 🐳 DeepSeek 仍是原生 HTTP Responses。 Flash 的 catalog 保持
prefer_websockets = false。若桌面端还是先打 WS,看到 DeepSeek model(含嵌套 envelope)就 close 1008,客户端回POST api.deepseek.com/responses。DeepSeek 请求不会进 OpenAI 的 WebSocket。 - 🧹 同一条 WS 上的后续 turn 也会剥外来
reasoning_text。 不只第一条response.create。DeepSeek 中途切到这条连接同样 1008。 - 🛡 关停与畸形请求。 闲置透传 WS 不再让
server.close()挂死,dscodex stop/ autostart 交接能结束。畸形 upgrade 请求行回 400 而不是把路由器打死。上游空 close 帧(1005)会映射成合法 close,客户端不再悬挂。
升级
git pull --ff-only
npm install
node src/cli.mjs sync
node src/cli.mjs stop && node src/cli.mjs start
node src/cli.mjs doctor
node src/cli.mjs autostart enable # 建议:避免路由器停掉后官方模型再次 5/5随后完全退出(⌘Q)并重开 ChatGPT 桌面端,再新建一个任务。已有任务保留旧模型状态。
验收
- 版本号在
package.json、src/constants.mjs、CITATION.cff、node src/cli.mjs --version四处对齐1.2.1。 - 本机测试:0 失败;Windows 原生项在 macOS 上跳过。
git diff --check干净。 - 活探针:带 token 的
/v1/responsesWebSocket handshake 为open;无 token 仍为426;畸形请求行后/health仍 200。 - DeepSeek HTTP 路径本次未改:目标仍是
https://api.deepseek.com/responses。
未验收
- Voice / Realtime(PR #21)仍未合并。
- Windows 实机(桌面端 + 自启动)未在发布机上跑过,仅有 CI 覆盖。
- 桌面端是否每个 turn 按当前模型选传输:若按 session 锁 WS,DeepSeek 任务会先吃一次 1008 再回 HTTP。上线后看
server.log里deepseek websocket rejected是否在正常 DeepSeek 使用时出现。