Skip to content

Releases: Alice-Marx/dsh-model-router

Model Router v0.16.0

Choose a tag to compare

@Alice-Marx Alice-Marx released this 04 Oct 16:49

Model Router 0.16.0

正式版,声明兼容 DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2。升级后请完全退出 Harness(包括托盘进程)再启动,确保 Host 与客户端都加载新版本。

更新

  • 动态公共数据:可选LiveBench及严格策展价格快照,TTL、失败退避、原子更新、最后有效快照保留;人工价格优先,取消源立即停止使用,记录冻结当时费率与数据版本。
  • 持续明确反馈:按准确路线和任务类型,以时间衰减及低样本收缩调整独立主观效用;可停用、撤回或重置,不修改客观质量分/硬门槛,不自动付费探索。学习限本地共享DSH_HOME最近200运行。
  • 求解器与证据:固定费用参考、低价候选保护、小空间精确分配、大空间有界搜索、约束/截断/评分来源说明;基准镜像必须声明分数比例并准确匹配模型身份。
  • 数学推导、可复现合成机制实验、LiveBench证据审计和真实同题实验步骤纳入完整源码;双语README、安装与工作台指南更新。

验证与边界

严格冻结锁文件安装、客户端构建核对及实际组件mock预览编译通过。558项测试:555通过、3条件跳过、0失败;9项合成适应机制检查通过。发布包53文件、30个本地Host运行依赖与源码commit逐字节核验。

没有真实付费模型调用或Harness桌面端到端验收;机制测试不证明真实质量—成本改善。公开动态源默认关闭;价格格式不是通用全厂商官网计费器,准确推理档位执行仍需实测。历史研究保留原开发版本与日期,公开记录路径已脱敏。

安装

本Release的.tgz及SHA256提供可验证的版本化安装包,可在Harness“插件→添加插件”填写下载文件的绝对路径,或解压后的内层package目录。npm正式版已发布,latest为0.16.0;安装输入为@ljwei-stak/dsh-model-router@0.16.0,源为https://registry.npmjs.org/。registry重新下载的包与本Release安装包逐字节一致,SHA512及53个发布文件对源码核验通过。

0.15.0 · Workbench navigation and reliable cost tracking

Choose a tag to compare

@Alice-Marx Alice-Marx released this 03 Oct 09:21

0.15.0 · 更清晰的工作台与可靠的费用统计

本版将工作台整理为「任务与执行」「模型配置」「官方工具」「预算与安全」四个页面,并根据面板宽度调整布局。切换页面会保留草稿、工具安装进度和终端会话;支持键盘切换。

主要变化

  • 任务规划结果紧接输入区域,工作包和依赖说明更易读。
  • 输入、模型配置或路由设置改变后,丢弃过期预览,避免确认执行旧任务。
  • 历史裁剪和步骤重试不再丢失已记录的 API 费用、未知计费次数及订阅参考费用。保留 200 条详细执行记录和有限日/月汇总;升级前已经丢失的数据无法恢复。
  • 新增 npm run preview:ui 本地模拟预览:仅监听 localhost,不执行真实模型、安装命令或终端进程。
  • 重写中英文 README、安装说明与工作台指南,发布包附带指南及明确标注为模拟数据的 UI 截图。

安装与更新

@ljwei-stak/dsh-model-router@0.15.0

更新后请完全退出 Harness(包括托盘图标),再重新启动,确保后台与客户端使用同一版本。

验证范围

220 项测试通过,3 项现有 Windows 平台测试跳过。已核对生成客户端、发布文件字节,并在浏览器模拟预览中检查导航、窄面板、输入校验、草稿保留和过期预览拒绝。此轮未验证真实供应商账号、付费 CLI 调用或 Harness Desktop 端到端执行。

附件 .tgz 是经过校验的 npm 发布包,.sha256 提供下载校验值。旧版本与历史标签保留。

Model Router 0.14.0

Choose a tag to compare

@Alice-Marx Alice-Marx released this 03 Oct 08:14

Stable release under the npm latest tag. It folds in the 0.14.0-beta.1 – beta.4 prereleases (published under next only). After updating, quit Harness completely (including the tray icon) and start it again: Harness serves the new workbench UI at once, but the running Host keeps the plugin code it already imported, so the new Host methods are missing until a full restart. The workbench now warns when the Host and client versions differ.

Added

  • 官方工具终端 workbench card: interactive sessions of the system shell (PowerShell on Windows, the login $SHELL elsewhere) or an installed official CLI (codex, claude, kimi, mcode, mimo, grok, gemini), in tabs, rendered with xterm.js 6 (bundled into client.js). Each CLI also has a fixed 登录 mode (codex login, claude auth login, …). Sessions start only after a confirmation showing the command, the absolute working directory, and that the terminal runs outside the Harness process sandbox with the user's own CLI login and environment.
  • Host session manager (shared/cli-terminal.mjs) on the prebuilt N-API @lydell/node-pty@1.2.0-beta.15 (optional dependency, per-platform binaries, no install scripts), with a pipe fallback and a clear limitation note when the PTY cannot load. Verified on Windows inside Harness Desktop (Electron 44 as Node).
  • Typert remote methods terminalInfo, terminalStart, terminalRead (long poll), terminalWrite, terminalResize, terminalStop; every request is validated on both sides (shared/cli-terminal-protocol.mjs). The client unwraps both the Host and gateway { ok, value } envelopes, never sends reads or writes for an invalid session id, and clamps resizes into the accepted 10–500 × 3–300 range.
  • Session metadata (tool, mode, directory, start/end, duration, exit code, end reason) in state.json → terminalSessions and in the card's history. Input and output are never logged or stored. Sessions end on tab stop, panel close, plugin unload/reload, Host exit, after about 2 minutes without a reader, or after 6 hours; at most 4 at once.
  • list() reports hostVersion, the plugin version the Host actually loaded. When it differs from the client's version (or is missing), the workbench shows "插件后台版本较旧,请完全退出并重启 Harness(包括托盘图标)后再使用。" and the terminal's 开始 is disabled for missing methods.

Changed: official tools follow the vendors' latest releases

  • The plugin no longer pins Codex, Claude Code, Kimi Code, MiniMax Code, MiMo, Grok Build, Gemini CLI or ZCode versions. One-click installs use <package>@latest from https://registry.npmjs.org/; the MiniMax Windows fallback runs the official installer script as published; ZCode downloads the newest Windows installer linked from https://zcode.z.ai/en/docs/install (HTTPS, cdn-zcode.z.ai only, size cap).
  • 健康检查 no longer flags installs as "older"/mismatched. Each card shows the installed version and, when available, the latest version with an 有新版本 hint and an 更新到最新版 X button. Latest versions come from the npm registry <package>/latest documents and the ZCode download page, cached ~12 h in model-router/latest-versions.json; failures are non-fatal (stale value or "最新版本未知"; retried after 30 min). An install newer than the latest release is never downgraded.
  • The health card notes that new vendor versions are untested by the plugin. Parsers stay tolerant of output changes.

Security checks

  • Kept (version-independent): Authenticode publisher checks for codex.exe (OpenAI OpCo, LLC), claude.exe (Anthropic, PBC; plus ≥ 2.1.259 for restricted flags), ZCode.exe and the ZCode installer (北京智谱华章科技股份有限公司). The ZCode 3.14.3 version gate is gone: any validly signed build is enabled, with the version read from the signed file.
  • Replaced: the per-version hash of ZCode's unsigned resources/glm/zcode.cjs became a trust-on-first-use record per (install root, signed build, signer thumbprint) in model-router/zcode-trust.json, plus a .node-bundle-meta.json entry check. A script that changes under the same signed build is refused; a new signed build re-records it.
  • Replaced: the per-version sha256 pins for MiMo mimo.exe, Grok grok.exe(.br) and MiniMax cli.js (these vendors do not sign them) became registry attestation: every code file must equal the file in the official npm tarball for the installed version, whose sha512 comes from registry.npmjs.org (the npm cache is reused when it matches). Results are cached per package@version in model-router/npm-attestations.json; the first run of a new version needs network.
  • Removed: the hash of MiniMax's official installer script (it now runs as published; only a sanity check that it is the official PowerShell script remains).

Tests

  • tests/cli-terminal.test.mjs (protocol, launch resolution, env, manager with a fake PTY, pipe fallback, real PTY on Linux, Host wiring, client transport); tests/cli-terminal-gateway.test.mjs with tests/helpers/typert-gateway.mjs (the card's real payloads through a copy of Harness's gateway boundary); tests/latest-versions.test.mjs (latest lookup with mocked fetch, cache, offline fallback; npm attestation; ZCode/Codex/Claude signer-only acceptance; ZCode first-use record; installer URL validation). Version-pin assertions removed.

npm: @ljwei-stak/dsh-model-router@0.14.0 (latest and next). Update in the Harness plugin manager, or remove and re-add @ljwei-stak/dsh-model-router@0.14.0, then restart Harness completely. Settings and history carry over.

The attached tarball is the exact npm pack output of tag v0.14.0 (commit 6242c2f) and is byte-identical to the one published to npm.

SHA-256 f7357283b95cdb9b35f84fac7d74b05799c830bdf975e3c2204b648e1ac67186

Model Router 0.13.3

Model Router 0.13.3 Pre-release
Pre-release

Choose a tag to compare

@Alice-Marx Alice-Marx released this 02 Oct 18:19

Bug-fix release for DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2, published under the npm next and latest tags.

After updating, quit Harness completely (including the tray icon) and start it again. A live patch reload does not replace plugin code that the running Host has already imported.

Fixed

  • On Harness Desktop for Windows, every official CLI run that went through the Harness process sandbox exited 0 with no output, so the step paused with "Codex 未返回完整成功终态和回答" and no model was called. The sandbox runner is started as DeepSeek Harness.exe …/runner.js, which needs ELECTRON_RUN_AS_NODE=1; the plugin's minimal CLI environment dropped it, so the executable started the desktop app instead, lost the single-instance lock and quit. The runner now gets that variable whenever it is the Electron executable.
  • Codex cannot start inside the Harness Windows sandbox at all: it must write CODEX_HOME (~/.codex) and the sandbox denies those writes (failed to initialize in-process app-server client: … (os error 5)). On Windows, Codex now skips the Harness sandbox and starts directly with its own --sandbox read-only. This is the launch the "不经沙箱启动 CLI" confirmation already describes.
  • A CLI that exits without writing anything to stdout or stderr is now reported as such, for example "Codex 退出码 0,无任何输出(stdout 与 stderr 均为空)。", instead of a generic "incomplete answer" message.

npm: @ljwei-stak/dsh-model-router@0.13.3 (next and latest). Update in the Harness plugin manager, or remove and re-add @ljwei-stak/dsh-model-router@0.13.3, then restart Harness completely. Settings and history carry over.

The attached tarball is the exact npm pack output of tag v0.13.3 (commit d6909ee) and is byte-identical to the one published to npm.

SHA-256 c48925bc64928df1748ab7a0728242f5b75e561a4963de8bb37bbfeb697b3897

Model Router 0.13.2

Model Router 0.13.2 Pre-release
Pre-release

Choose a tag to compare

@Alice-Marx Alice-Marx released this 02 Oct 17:55

Bug-fix release for DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2, published under the npm next and latest tags.

Fixed

  • Codex runs through the signed Windows runner failed in any workspace that is not a Git repository (for example a plain project folder chosen in the workbench). The step paused with "Codex 未返回完整成功终态和回答" and no model call was made. Codex 0.157.1 refuses such directories unless --skip-git-repo-check is passed (Not inside a trusted directory and --skip-git-repo-check was not specified.). The flag was only in the portable adapter; the signed runner now passes it too. Read-only runs stay confined by --sandbox read-only and the Harness process sandbox.
  • When Codex exits without a successful turn, the error now names the cause: an untrusted directory, or no JSON events at all (with the last CLI output line). The pause detail no longer comes out empty when stderr is empty but stdout has output.

npm: @ljwei-stak/dsh-model-router@0.13.2 (next and latest). Update in the Harness plugin manager, or remove and re-add @ljwei-stak/dsh-model-router@0.13.2; settings and history carry over.

The attached tarball is the exact npm pack output of tag v0.13.2 (commit 1bd7942) and is byte-identical to the one published to npm.

SHA-256 60113434cc6a4c859d3a8de17a6e0fbd3bf7585e84993c3f054bc353416e33cd

Model Router 0.13.1

Model Router 0.13.1 Pre-release
Pre-release

Choose a tag to compare

@Alice-Marx Alice-Marx released this 02 Oct 17:45

Bug-fix release for DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2, published under the npm next and latest tags.

Fixed

  • Workbench runs ("在工作台执行": preview, then confirm), model_router_execute and step reruns failed in the Harness with cannot get property "credentials" without inject. The executor read ctx?.credentials, which is not in the plugin's inject list; Cordis throws for every non-injected ctx.<service> read, and optional chaining does not help. Optional services are now read through ctx.get(name), as the Harness itself does, so nothing new is required at load time. The run never started, so no model was called and nothing was billed. The failed run stays in history with that error.
  • The source-only npm update helper (not shipped in the package) reads connection, desktopProfiles and desktopPnpm the same safe way.

Tests

  • Test mocks for Host code paths now enforce inject like Cordis (tests/helpers/strict-ctx.mjs).
  • New tests/cordis-inject.test.mjs runs the workbench preview and run, executeConfiguredAssignment and a step rerun in a real Cordis plugin context with the Host inject list and sibling-provided services, with and without a credentials service. It also scans Host sources for ctx.<name> reads of non-injected services.

npm: @ljwei-stak/dsh-model-router@0.13.1 (next and latest). Update in the Harness plugin manager, or remove and re-add @ljwei-stak/dsh-model-router@0.13.1; settings and history carry over.

The attached tarball is the exact npm pack output of tag v0.13.1 (commit d88b030) and is byte-identical to the one published to npm.

SHA-256 17df24d0e7c6a1f0bb5f2319bb87292c00d190251ee6f1eac3b3bd7ea10f6e67

Model Router 0.13.0

Model Router 0.13.0 Pre-release
Pre-release

Choose a tag to compare

@Alice-Marx Alice-Marx released this 02 Oct 16:58

Model Router 0.13.0 — prerelease for DeepSeek Harness Desktop 0.2.0-rc.1 / rc.2. Merges #1 (official CLI execution, direct single-model mode) and #2 (health check, routing visibility, cost control and budgets, presets, subscription-first billing, run history/DAG with reruns, workbench run launcher, combined approvals, quality loop, Windows fixes). See CHANGELOG.md.

npm: @ljwei-stak/dsh-model-router@0.13.0 (npm i @ljwei-stak/dsh-model-router@next). The package was renamed in 0.13.0. The last version under the old name @ljwei-stak/model-router-galgame is 0.13.0, with the same content as @ljwei-stak/dsh-model-router@0.13.0; the old name will get no further updates. To upgrade, remove the old plugin in the plugin manager and add the new package; settings and history carry over. See MIGRATION.md.

The attached tarball is the exact npm pack output of commit d45b04e ("chore: rename package to @ljwei-stak/dsh-model-router"). That commit comes after tag v0.13.0 and changes only the package name, its references and docs (a later docs-only commit, 02bb886, corrects the old-name note); runtime behavior is the same as v0.13.0. It is byte-identical to the tarball published to npm.

SHA-256 6ee31e475fb2552651dd8e80684595d0e007d44b15bd940846450a0289298cc1

Known limitations: the workbench launcher starts read-only runs only; Kimi/ZCode report no token usage; only ZCode 3.14.3 is verified; not yet verified end to end in the Desktop UI.

Model Router 0.12.0 · 独立路由插件

Choose a tag to compare

@Alice-Marx Alice-Marx released this 02 Oct 07:24

Model Router 0.12.0 — independent router plugin

模型路由与 GAL 已拆分。此版本保持原 npm 包身份以支持升级,只提供模型路由、费用/质量规划、团队工作包及官方工具探测、安装和执行。

安装

在官方 DeepSeek Harness Desktop 的「插件 → 添加插件」输入:

@ljwei-stak/model-router-galgame@0.12.0

支持 Desktop 0.2.0-rc.1 / rc.2。安装源使用 https://registry.npmjs.org。本版本发布在 npm next 渠道,请使用上述精确版本。

GAL 可按需单独安装 @ljwei-stak/dsh-galgame@0.1.0,源码见 独立 GAL 仓库。

旧合并版用户:先导出两个剧目的进度,再升级/停用旧合并版,最后安装独立 GAL,避免相同面板重复注册。同 origin/profile 可读取旧存档;跨 origin/profile 需导入 JSON。JSON 不包含全部槽位、设置或本地音频。

验证

  • 路由 70/70、独立 GAL 100/100、可选剧情归档 11/11 测试通过。
  • 冻结依赖安装、peer 检查及客户端构建/生成一致性检查通过。
  • 官方 rc.2 隔离 profile:只装路由、只装 GAL、两者同时安装均通过。验证了路由规划、两剧目、场景与设置预览、保存和重载继续阅读,客户端运行错误为 0。
  • 路由安装包 333,507 字节;29 个发布文件已逐一与 Git 提交核对。npm 下载包 SHA-256 为 c3b2f354374b355df1751dc64229beee2c09053b8cd7f9443bca9fd36bae0a06。
  • 本轮没有使用用户真实模型凭据或执行付费调用;真实账单、质量和官方 CLI 登录状态需使用本人账号验收。

完整工作台使用指南在源码仓库中可在线阅读。旧剧情和制作源未删除,保存在独立归档及原 Git 历史中。

下载本 Release 的 .tgz 和 .sha256 可进行校验;源码标签 v0.12.0 固定在已验证的发布提交。

v0.11.1 — README and installation repair

Choose a tag to compare

@Alice-Marx Alice-Marx released this 01 Oct 18:47

Model Router Galgame 0.11.1

This release keeps the 0.11.0 runtime and updates installation guidance, package README metadata, and the npm package image allowlist. It declares compatibility with DeepSeek Harness Desktop 0.2.0-rc.1 and 0.2.0-rc.2.

  • Full English and Chinese installation steps, model-routing algorithm notes, and Gal usage documentation.
  • Bundled every local image referenced by the READMEs (49 files in the npm archive).
  • Verification: 153/153 tests pass, client build check passes, peer check passes, and all local README image links resolve inside the archive.
  • npm 0.11.1 publication is not yet confirmed: registry upload attempts timed out, and the public version endpoint currently returns 404. Use this GitHub release archive for installation. Do not rely on the npm package name until the registry lists 0.11.1.

SHA-256: 5abe474da7b63da18b7d27a4d3d41451274c7dc2ea9df0100a74d85d818f41ea

Full task report: https://github.com/Alice-Marx/model-router-galgame/blob/main/PROJECT-TASK-REPORT-2026-10-02-NPM-RELEASE-AND-README-FIX.md

v0.11.0 — Gal Player

Pre-release

Choose a tag to compare

@Alice-Marx Alice-Marx released this 01 Oct 13:35

v0.11.0 — Gal player and Harness rc.2 compatibility

This prerelease adds a full visual-novel player to the Gal module and updates the plugin peer requirements for the official DeepSeek Harness desktop 0.2.0-rc.2 line.

Gal player

  • Full-body character stage with persistent size and position controls for main and companion characters.
  • Title menu, fullscreen play, reading/history controls, keyboard shortcuts, quick/manual saves, JSON save export/import, and gallery.
  • Seven built-in WebAudio music loops, independent music and effects volume/mute controls, plus optional local music files.
  • Full-body art uses supplied character source images; expression portraits remain available as close-ups.

Install

Install @ljwei-stak/model-router-galgame@next from the DeepSeek Harness plugin manager, or install the attached ljwei-stak-model-router-galgame-0.11.0.tgz locally. Requires DeepSeek Harness 0.2.0-rc.2 and matching @deepseek-ai/dsh-* peer packages.

Verification

  • 153 main test cases passed; 75 additional Gal player and compatibility checks passed.
  • Client bundle check and frozen-lockfile install passed.
  • SHA-256: 1401173a9ea29da1375d0b8fca3a8f80c3742c10c011e520c424af8586a1224e

Please report desktop-specific issues before this version is promoted from the next channel.