Repository navigation
DSCodex v1.2.2 — Spawn and Switch
DSCodex v1.2.2 — Spawn and Switch
三条社区报告一起落地:DeepSeek 上 spawn 子 agent 必炸、同一任务 DeepSeek → GPT 切换在 v1.2.1 上再次 400、DeepSeek 任务首轮要等 10–15 秒的 WebSocket 重连。感谢 @Yilmhi(#24)、@danielkuang666(#25)、@zhuzw1990(#23)。
Highlights
- 🤖 DeepSeek 上可以 spawn 子 agent 了(#24)。 Codex 把交给子 agent 的任务放在
agent_message里,内容块类型是encrypted_content(实际是明文)。DeepSeek 的内容枚举只认input_text/output_text/input_image/input_file,整个请求 422;改成assistant角色重放后又因为缺reasoning_text400。现在路由器把这类块改写成input_text、把agent_message以user角色重放,并剥掉internal_chat_message_metadata_passthrough。任何 DeepSeek 不认识的内容块都按同一规则处理:有文字的保留文字,没有的丢弃。 - 🔁 DeepSeek → GPT 切换再次修好(#23)。 DeepSeek 现在给 reasoning item 填一个 38 字符的 UUID 占位
encrypted_content,v1.2.0 的「encrypted_content为空才算外来」判据因此失效。新判据不再看该字段是否为空:带reasoning_text内容的 reasoning 一律剥掉(官方 GPT reasoning 从不带content),encrypted_content非空且不是 ChatGPT 密文(base64gAAAAA开头)的也剥掉;compaction 同理。HTTP 与 WebSocket 两条路一致。 - ⚡ DeepSeek 的 WS 握手直接 426(#25)。 ChatGPT 登录的桌面端在握手时带
x-codex-routing-hint: model=<slug>;tier=<tier>。识别为 DeepSeek 就在握手阶段回 HTTP 426,客户端走零重试的 HTTP 回退,不再吃 5 次退避重连;本机实测首轮从 10–15 秒降到约 1.4 秒。没有该头的客户端保持原来的首帧 close 1008 路径。 - 🎙 Voice 说明更新。 桌面端 26.908 起语音由客户端自己直连
chatgpt.com/wham/realtime/calls,不经过openai_base_url,路由器无事可做;PR #21 据此关闭。
升级
git pull --ff-only
npm install
node src/cli.mjs stop && node src/cli.mjs start
node src/cli.mjs doctor随后完全退出(⌘Q)并重开 ChatGPT 桌面端,再新建一个任务。已有任务保留旧模型状态。
验收
- 版本号在
package.json、src/constants.mjs、CITATION.cff、node src/cli.mjs --version四处对齐1.2.2。 - 本机测试:131 项,0 失败;Windows 原生项在 macOS 上跳过。
git diff --check干净。 - 活探针:
codex -m deepseek/deepseek-flash … exec工具循环通过;server.log显示deepseek websocket upgrade rejected with 426 … (hint model=deepseek/deepseek-flash)后 1.4 秒内 HTTP 200。 - #24 作者对真实 DeepSeek 端点做过 400 → 200 与子 agent 端到端验证(含子 agent 调工具、子 agent 再 spawn)。
未验收
- GPT 模型的子 agent仍在客户端侧失败(
Encrypted function output content could not be decrypted or decoded),属上游问题:https://github.com/openai/codex/issues/33267。 - Windows 实机(桌面端 + 自启动)未在发布机上跑过,仅有 CI 覆盖。