Skip to content

DSCodex v1.2.1 — Keep the Wire

Choose a tag to compare

@fish2lab fish2lab released this 12 Sep 09:59
· 14 commits to main since this release

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/responses upgrade 透传到 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/responses WebSocket 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 使用时出现。