---
date: 2026-06-18
version: V1.4.4
tag: V1.4.4
commit: d6fda8d0a0bc15ef453e276c917ede826b518d05
author: William
license: MIT
---

V1.4.4 是一次**「上线即用」**的版本——解决了「公网访问 AI 动漫化模型加载失败」这个长期卡脖子问题,并把版本号**收回到后台**。

### 1. 修复外网无法使用动漫风格模型问题

**问题**:在公网(`dsm.wizs.vip`)访问设计器时,AI 动漫化模型**第一次加载会卡住 / 失败**。

**根因**:

- `onnxruntime-web` 启动时需要加载配套的 **WASM 运行时**(`ort-wasm-simd-threaded.*`)。
- 默认配置下,浏览器会去 **`jsDelivr CDN` 拉取 WASM 文件**。
- 内地公网访问 jsDelivr **经常超时**,导致模型加载一直转圈。

**修复方案**:

- 在 `server/wasm/` 下**内置全部 ONNX Runtime WASM 文件**(6 个):
- `ort-wasm-simd-threaded.mjs` / `.wasm`
- `ort-wasm-simd-threaded.jsep.mjs` / `.wasm`
- `ort-wasm-simd-threaded.jspi.mjs` / `.wasm`
- `ort-wasm-simd-threaded.asyncify.mjs`
- `server/index.js` **静态托管** `/ort-wasm` 目录。
- `vite.config.ts` 新增 `/ort-wasm` 代理到后端 3001。
- `src/core/animeStyleTransfer.ts` 中显式指定:

```ts
ort.env.wasm.wasmPaths = `${apiBase}/../ort-wasm/`
```

- 公网访问时,WASM 走**本机反代**,不再依赖外网 CDN,**内地 / 海外用户都能秒级加载**。

> WASM 版本与 `onnxruntime-web@1.26.0` 严格匹配,**不会出现版本不一致导致的运行时错误**。

### 2. 支持后台修改版本号

V1.4.3 之前,`AppFooter` 中显示的版本号是**前端硬编码字符串**,每次发版都要改代码、重新构建。

V1.4.4 把版本号**收回到后台数据库**:

- **数据结构**:`db.json` 新增 `settings.version` 字段。
- **API**:
- `GET /api/settings`(公共)—— 任何用户都能读取。
- `PUT /api/admin/site-settings`(管理员)—— 仅管理员可改。
- **前端**:
- `src/stores/settingsStore.ts` 新增 `setVersion(version)` action。
- `AppFooter` 通过 `useSettingsStore(s => s.version)` 实时读取。
- 加载未完成时使用硬编码兜底 `FALLBACK_VERSION = 'V1.4.4'`。
- **后台 UI**:
- 管理员可在「**网站设置**」中直接修改版本号。
- 修改后**全站所有页面**脚注立即同步更新。
- 配合 V1.4.3 的「使用情况统计」,**后续发版效果可量化追踪**。

看似无关,实则都是**「让公网部署更好用」**:

1. AI 模型是拼豆设计器的**最大卖点**,外网加载失败会直接劝退新用户——**这是生死线**。
2. 版本号显示是**最低成本的运营抓手**——发版后用户能看到自己跑在最新版。

### WASM 自托管

| 资源 | 大小 | 说明 |
| --- | --- | --- |
| `ort-wasm-simd-threaded.wasm` | ~6 MB | 主 SIMD 多线程版 |
| `ort-wasm-simd-threaded.jsep.wasm` | ~6 MB | JSEP 加速版(备用) |
| `ort-wasm-simd-threaded.jspi.wasm` | ~6 MB | JSPI 异步版(备用) |
| `*.mjs` × 4 | ~100 KB × 4 | 对应 JS glue 代码 |

- 后端用 Express `express.static` 托管,设置 `immutable` + 长 `max-age`。
- 浏览器**首次访问会缓存**,**第二次起无开销**。

### 版本号体系

```ts
// 硬编码兜底
export const FALLBACK_VERSION = 'V1.4.4'

// settingsStore 加载流程
GET /api/settings
└─ settings.version = 'V1.4.4' // 后端控制
└─ useSettingsStore.version // 前端 store
└─ <AppFooter /> 实时显示
```

**升级与回滚**:

- 升级后**无需手动改任何代码**,后台改版本号即可。
- 出现回滚时,把后台版本号改回上一个版本,**全站立即生效**。

| 场景 | 旧版 | V1.4.4 |
| --- | --- | --- |
| 公网首次加载 Hayao 模型 | 一直转圈 / 失败 | 3~5 秒完成加载 |
| 海外用户加载动漫模型 | 受 jsDelivr 影响 | 与内地一致稳定 |
| 管理员改版本号 | 改源码 + 重新构建 + 部署 | 后台改一字段,**全站实时生效** |
| 紧急回滚到旧版本 | git revert + 重新部署 | 后台改字段,**秒级回滚** |

- **公网部署用户**(推荐):**必升级**——外网 AI 模型可用性问题彻底解决。
- **本地开发用户**:建议升级——版本号后台可改,**开发体验更顺滑**。
- **零数据风险升级**:`db.json` 自动兼容旧结构,**直接替换代码即可**。
- **部署提示**:升级后请确认 `server/wasm/` 目录 6 个文件**全部到位**,否则模型加载会回退到 CDN。

- `package.json` 中 `version: "1.4.4"`。
- `onnxruntime-web` 维持 `^1.26.0`,**未升级主版本**,WASM 文件与之严格匹配。
- 无新增 npm 依赖。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。