feat(AI): 集成MNN推理引擎替换MLX作为主AI运行时

- 引入MNN(alibaba) + Arm SME2 + CPU作为主AI运行时,支持A19/iPhone17的
  SME2和A17的NEON加速
- 添加MLX Swift作为兜底GPU推理方案,实现双后端切换机制
- 使用单一Qwen3.5-2B多模态模型(1.2GB),替代原有的LLM+VL分离架构
- 实现InferenceEngine.current引擎选择逻辑,真机默认MNN,模拟器回退MLX
- 更新AIAgent架构,通过MNNLLMBridge(ObjC++) → MNNBackend进行推理
- 修改队列机制防止并发推理导致OOM,使用信号量闸门控制显存占用
- 更新文档中的技术栈说明、模块边界和周次交付计划
```
This commit is contained in:
link2026
2026-06-15 09:24:59 +08:00
parent 6c6a950140
commit 9d856fcfc4
37 changed files with 2605 additions and 430 deletions

View File

@@ -53,6 +53,8 @@ struct RootView: View {
@State private var showVoiceCommand = false
/// :RootView MedicationScanFlow, sheet
@State private var showMedicationScan = false
/// · :sheet + NavigationStack
@State private var showMedicationLibrary = false
/// ( RecordSheet onPick )
private func route(_ intent: VoiceIntent) {
@@ -112,6 +114,7 @@ struct RootView: View {
case .indicator: showIndicator = true
case .reminder: showReminders = true
case .healthExport: showHealthExport = true
case .medicationLibrary: showMedicationLibrary = true
}
}
}
@@ -135,6 +138,9 @@ struct RootView: View {
// NavigationStack ;sheet
NavigationStack { RemindersListView(presentedAsSheet: true) }
}
.sheet(isPresented: $showMedicationLibrary) {
NavigationStack { MedicationLibraryView(presentedAsSheet: true) }
}
.fullScreenCover(isPresented: $showHealthExport) {
HealthExportSheet()
}
@@ -156,8 +162,8 @@ struct RootView: View {
}
.fullScreenCover(isPresented: $showMedicationScan) {
MedicationScanFlow(
onSave: { entries in
MedicationArchiver.archive(entries: entries, in: ctx)
onSave: { meds, images in
MedicationArchiver.archive(medications: meds, images: images, in: ctx)
},
onClose: { showMedicationScan = false }
)