# 2026-10-24 代码检查与发布记录 目标版本:**0.5.4**。基线:GitHub / npm 0.5.3,原有 204 项检查通过。 ## 修复结果 | 模块 | 已复现的问题 | 修复方向 | | --- | --- | --- | | Web Speech | 已完成句子存在时丢失未完成尾句,预览漏掉前面句子 | 按完整结果列表重建 final + interim,终稿合并两者 | | 草稿 | 第一条识别结果到达前手输的字仍可能被预览覆盖;空润色丢失原文 | 预览建立时验证基线,空润色回退 | | 录音生命周期 | 引擎切换走错停止路径,重复停止/并发新录音破坏共享状态 | 按实际活跃录音路径处理,停止与处理中状态防重入 | | 取消与卸载 | watchdog 误提交取消/报错录音;旧识别事件影响下一轮;卸载后麦克风仍开 | 统一收尾与轮次守卫,释放媒体/计时器/请求,取消后的异步任务不得补发上传 | | 服务端 body | 请求提前关闭或 abort 后等待不能结束 | 统一 settle,移除监听并清空累积缓冲 | | 云端与润色 | 只依靠上游协作取消,正文/输出缺少预算,非文本媒体类型接受过宽 | 外层等待与输出预算、严格类型、取消后保留原始转写 | | 凭据 | 换端点继承旧 key,供应商错误可回显配置密钥,写设置可损坏旧内容 | 按 URL 关联 key,错误脱敏,临时文件原子写入 | | 音频 | base64 静默忽略坏字符,PCM 残缺/NaN 值进入推理,MIME codec 导致后缀错误 | 规范编码、采样率/数值/时长验证,媒体主类型处理 | | 模型下载 | 新下载不执行真实尺寸检查,镜像错误内容可进入缓存,响应体与临时文件清理不完整 | 固定 revision + 大小 + SHA-256,流式字节限制、错误响应取消与原子发布 | | 本地推理 | 不同目录共享同一在途加载、释放后加载回写、排队无界 | 目录/代数隔离,最多 4 个等待或运行任务,解码前后取消检查 | | 热词 | 复杂正则灾难回溯,字面替换链可膨胀输出 | API 热词在可终止 worker 内执行:2 秒、64 MiB V8 老生代、最多 4 并发与 1 Mi 字符输出,失败返回原转写 | | 发布 | 分支可绕过 tag 检查,npm 补丁版本遗漏,重复事件撞传播窗口 | 校验真实 tag/提交/版本、准确工具链门槛、发布冲突核验完整性值 | ## 模型来源与完整性 固定 [上游 revision 的文件清单](https://huggingface.co/api/models/csukuangfj/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/tree/2365baeacb507f821a0c8120fcee3d484dba7a07),两个镜像使用同一 revision。 | 文件 | 字节数 | SHA-256 | | --- | --- | --- | | model.int8.onnx | 239233841 | c71f0ce00bec95b07744e116345e33d8cbbe08cef896382cf907bf4b51a2cd51 | | tokens.txt | 315894 | f449eb28dc567533d7fa59be34e2abca8784f771850c78a47fb731a31429a1dc | 新下载执行完整哈希验证;已缓存文件的频繁状态查询仅检查真实尺寸,避免每次扫描约 239 MB。 测试使用小型下载桩与稀疏模型占位文件,未下载或运行真实模型。 ## 验证范围 - 原有检查加三份独立行为回归,覆盖服务端、浏览器生命周期与模型/队列。 - Windows 本地原有 204 项通过;新增 58 项中 57 项通过、1 项 POSIX 权限检查按平台跳过,无失败。 - `npm test`、lint、security、依赖审计、独立打包/安装检查;CI 为 Linux Node 18/20/22/24 + Windows Node 24。 - 浏览器通过 VM + MediaRecorder / SpeechRecognition / FileReader 桩验证,未启用真实麦克风。 - 服务端使用 DSH 服务接口桩;未运行完整 DSH 宿主,也未验证真实模型识别质量。 - 包含音频的网络交互均使用 mock;没有把用户语音或配置密钥发送给第三方服务。 ## 保留边界与后续优化 - 原生 sherpa 解码没有强制取消接口:已开始的推理仍可能继续占用 CPU,但取消后结果不会再提交。 - `@` 引用芯片的按选区插入接口尚未适配;当前整段草稿通道仍可能把芯片展开成纯文本。 - 尚需真机验证 Chrome/Edge 权限、蓝牙设备切换、长录音、完整 DSH 载入及原生 SenseVoice 推理。 - 安全扫描仍是轻量启发式检查,不能代替完整审计。