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,下载过程中保留当前引擎状态。