# Round 4 代码复审记录:Parakeet English 高级模型 状态:未发现研发自测阻断问题,待 QA 真机验证 日期:2026-06-03 ## 1. 复审结论 本轮代码满足 Round 4 PRD 的研发交付边界,可以进入 QA。 ## 2. 已重点复核 - English 默认模型保持为 `moonshine-en`。 - `parakeet-en` 只挂在 English 的 `UpgradeModelIDs` 下。 - 中文语言 profile 未加入 Parakeet。 - 模型选择 API 会校验目标模型是否属于当前语言。 - 手动选择 Parakeet 后,如果当前有效语言变为中文,resolver 会回落到中文默认 SenseVoice。 - 未安装模型不能直接选择。 - Parakeet 下载失败不会写入 `SelectedModelID`。 - Parakeet required files 缺失时不会被判定为可用模型。 - Nemo transducer config 设置了 encoder、decoder、joiner、tokens、model type。 ## 3. 残余风险 - Parakeet 的真实 sherpa-onnx 初始化必须依赖真机下载后的模型文件验证,单元测试只能验证 config wiring。 - 已安装但文件内容损坏的 Parakeet 仍可能在引擎初始化阶段失败;当前行为是显示引擎错误,QA 需要确认用户可以切回 Moonshine。 - Parakeet 约 478 MiB 下载包,首次下载耗时和失败恢复需要真实网络测试。 ## 4. 代码范围 - `privatevoice.src/internal/model/*` - `privatevoice.src/internal/modelselection/*` - `privatevoice.src/internal/engine/*` - `privatevoice.src/services/engine_service.go` - `privatevoice.src/services/config_service.go` - `privatevoice.src/frontend/src/components/settings/GeneralPage.svelte` - `privatevoice.src/frontend/src/lib/i18n/en.json` - `privatevoice.src/frontend/src/lib/i18n/zh.json` ## 5. QA 预检发现与处理 - 发现:Parakeet 下载过程中如果 App 中途退出,`.downloads/parakeet-en` 会保留大体积 partial。 - 处理:`DownloadProfile` 现在会在同模型新下载开始前清理旧 partial。 - 发现:Parakeet 下载时设置页 Engine 显示 Loading,但实际 Moonshine 仍可用。 - 处理:前端只在已安装模型切换或下载完成后进入 Loading,下载过程中保留当前引擎状态。