# 2026-06-29 双构建线 ## 用户目标 - 解决 2.1.36 本地验证包在 macOS Monterey 12.7.4 M1 上无法打开的问题。 - 必须采用双构建线: - macOS 14+ 默认构建继续支持 Qwen3-ASR。 - macOS 14 以下兼容构建禁用 Qwen3-ASR。 - 为保证 UI 一致性,Monterey 兼容包中 Qwen3-ASR 不隐藏,只置灰禁用并说明需要 macOS 14+。 ## 已完成事项 - 确认根因:默认依赖 `github.com/k2-fsa/sherpa-onnx-go-macos@v1.13.2` 内置 `libonnxruntime.1.24.4.dylib`,最低系统版本为 macOS 14.0,导致 Monterey 不能启动。 - 新增 Monterey 兼容构建线: - `privatevoice.src/go.monterey.mod` - `privatevoice.src/go.monterey.sum` - `privatevoice.src/scripts/build-local-macos-monterey.sh` - 保持主 `go.mod` 不降级,默认 macOS 14+ 构建继续使用 sherpa `v1.13.2` 并支持 Qwen3-ASR。 - 默认 macOS 14+ 构建声明 `LSMinimumSystemVersion=14.0`;Monterey 兼容脚本覆盖为 `LSMinimumSystemVersion=11.0`。 - 用 `monterey_compat` build tag 隔离 Qwen3-ASR 编译路径: - 默认构建编译 Qwen3-ASR 配置。 - Monterey 构建编译 Qwen3-ASR 拒绝路径。 - 后端新增模型构建能力状态: - 默认构建:`qwen3-asr-0.6b` 支持。 - Monterey 构建:`qwen3-asr-0.6b` 返回 `supportedInBuild=false` 与 `unsupportedReason=requires_macos_14`。 - 前端输入配置页保留 Qwen3-ASR 条目,但在 Monterey 兼容包里置灰、禁用按钮,并提示“Qwen3-ASR 需要 macOS 14 或更高版本,本兼容包暂不支持下载。” - 版本更新为 `2.1.37 (build 20260629.0059)`,并更新 `CHANGELOG.md`。 ## 关键决策 - 不再把整个项目依赖降级到旧 sherpa;改为双构建线,避免牺牲 macOS 14+ 用户的 Qwen3-ASR 能力。 - Monterey 兼容线使用 sherpa `v1.12.20`,因为该线的 onnxruntime 最低系统版本为 macOS 11.0,且比 v1.11.4 更新。 - Qwen3-ASR 在 Monterey 包中不隐藏,只置灰禁用,避免 UI 列表结构在不同包中跳变。 ## 文件变更 - Commit: `4f52723 Add Monterey compatibility build line` - 主要文件: - `privatevoice.src/internal/engine/engine_darwin_qwen3.go` - `privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go` - `privatevoice.src/internal/model/build_capabilities*.go` - `privatevoice.src/internal/modelselection/selection.go` - `privatevoice.src/services/engine_service.go` - `privatevoice.src/frontend/src/components/settings/LanguagePage.svelte` - `privatevoice.src/scripts/build-local-macos.sh` - `privatevoice.src/scripts/build-local-macos-monterey.sh` - `privatevoice.src/go.monterey.mod` - `privatevoice.src/go.monterey.sum` - `CHANGELOG.md` ## 验证结果 - `go test ./...` 通过。 - `go test -modfile=go.monterey.mod -tags=monterey_compat ./...` 通过。 - `npm run build` 通过;仍有既有 Svelte a11y warning,非本轮新增。 - 默认 macOS 14+ DMG 与 Monterey 兼容 DMG 均构建通过,签名和 `hdiutil verify` 通过。 - 构建产物: - 默认 macOS 14+ 包:`/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-build20260629.0059-arm64-local.dmg` - `/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-build20260629.0059-arm64-monterey-local.dmg` - 兼容短名:`/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-arm64-monterey-local.dmg` - SHA256: - 默认 macOS 14+ 包:`8ebdcbbc7f25a8dc1e30bd9289a705b180ff47bdc68532f20678c63ec6007073` - Monterey 兼容包:`fb930fdc279773f9431649f0655fa4a3582be5f31d2f1a0922c1ee20d4097e63` - 最低系统版本校验: - 默认 macOS 14+ 包:`Info.plist LSMinimumSystemVersion=14.0`,`libonnxruntime.1.24.4.dylib minos 14.0` - Monterey 兼容包:`Info.plist LSMinimumSystemVersion=11.0` - `libonnxruntime.1.17.1.dylib`:`minos 11.0` - `libsherpa-onnx-c-api.dylib`:`minos 11.0` - Monterey 包内 Frameworks 只包含: - `libonnxruntime.1.17.1.dylib` - `libsherpa-onnx-c-api.dylib` - 未发现 `com.apple.quarantine` 扩展属性。 ## 未决问题 - 仍需用户在真实 macOS Monterey 12.7.4 M1 上安装打开验证。 - 默认 macOS 14+ 包尚未重新打包,本轮只交付 Monterey 兼容验证包。 - Go 链接阶段在当前机器上会输出“object file built for newer macOS version”的 warning,但最终 Monterey 兼容包的主程序和 dylib `minos` 均为 11.0。 ## 后续建议 - 若 Monterey 真实机验证通过,可以保留两个分发入口: - macOS 14+:默认包,支持 Qwen3-ASR。 - macOS 11-13:Monterey 兼容包,禁用 Qwen3-ASR。 - 发布文案或下载页需要明确说明 Qwen3-ASR 需要 macOS 14 或更高版本。