Skip to content

DSCodex v0.5.1 — 修复 Windows 非 ASCII 用户目录自启动

Choose a tag to compare

@fish2lab fish2lab released this 02 Aug 09:40
· 42 commits to main since this release

Highlights

  • 修复 Windows 非 ASCII 用户目录下的登录自启动 — wscript.exe 会按系统 ANSI 代码页读取 .vbs;旧版把含中文等非 ASCII 用户名的完整日志路径以 UTF-8 字面量写入脚本,路径乱码后 cmd 无法打开 server.log,路由器因而无法启动。0.5.1 将用户主目录下的日志路径改写为 %USERPROFILE%\...,交给 cmd 在运行时展开;用户主目录之外的自定义日志路径保持原样。新增测试同时保证这类 VBS 输出不再包含非 ASCII 用户名。
  • DeepSeek 图片输入由 GPT 视觉转译 — V4 Flash 保留图片模态声明,使粘贴图片和 view_image 结果能够通过 Codex 桌面端的前置检查。路由器会把发往 DeepSeek 的 input_image 转成由 chatgpt.com GPT 生成的文字描述,复用请求携带的 OAuth header,不需要额外 API Key;同一请求并发处理,并按图片 sha256 在路由器进程内缓存。默认视觉模型为 gpt-5.6-sol,可用 DSCODEX_VISION_MODEL 覆盖。
  • provider 间的推理档位与速度状态彻底隔离 — OpenAI 与 DeepSeek 分别保存 reasoning effort,只有 OpenAI 保存 service tier。跨窗口、fork、bridge 重启和恢复旧任务时均按 provider 恢复状态;staleEffort 阻止仅写入模型时把另一 provider 遗留的 model_reasoning_effort 带入新会话。每任务 provider 记忆持久化在 model-selections.json,上限为最近 500 个任务。
  • 减少 GPT 模型的伪断线 — 路由器 keep-alive timeout 现在长于 Codex 客户端约 90 秒的连接池空闲期,避免客户端复用已被 Node 默认 5 秒超时关闭的 loopback 连接,从而减少 stream disconnected before completion: error sending request。客户端断开时会中止上游请求,截断的上游流会写入 server.log。
  • 跨平台登录自启动 — node src/cli.mjs autostart enable 可注册 macOS launchd、Linux systemd user service 或 Windows Task Scheduler(配合隐藏窗口的 wscript shim)。崩溃会自动拉起,手动 stop 后保持停止;serve 统一持有 pid 文件,uninstall 会移除自启动项。生成的配置与脚本不会写入 DeepSeek API Key。

安装 / 升级

git pull --ff-only
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   # 可选;Windows 旧自启动用户需重新执行

随后完全退出(⌘Q)并重新启动 ChatGPT 桌面端,再新建一个任务。

Notes

  • 已启用自启动的 Windows 用户升级后必须重新运行 node src/cli.mjs autostart enable,以重生成使用 %USERPROFILE% 的 autostart-run.vbs。成功标准是 Task Scheduler 的 Last Result 为 0,并且 node src/cli.mjs doctor 五项均为 ok。
  • DeepSeek V4 Flash 本身仍是纯文本模型;图片不会原样发送给 DeepSeek。若请求没有 authorization header,路由器不会执行 GPT 视觉转译,而是保持请求体不变;视觉描述失败时会写入明确的占位文本,并在 ~/.codex/dscodex/server.log 记录 vision describe failed。
  • GPT 视觉路径目前由 fake backend 单元测试覆盖;仍建议用真实截图执行一次 view_image,验证当前 ChatGPT 后端接受所选视觉模型。
  • 图片描述缓存仅存在于当前路由器进程内;若 app-server 重新编码图片导致 data URL 改变,该图片会再次生成描述。
  • model-selections.json 增加的每任务 provider 记忆与 staleEffort 仍沿用 version 1,旧状态文件可直接加载。