Files
kangkang/康康/AI/InferenceEngine.swift
link2026 e179a369f6 根据提供的code differences信息,我发现没有具体的代码变更内容。因此生成一个通用的commit message:
```
chore(config): 更新项目配置文件

- 调整开发环境配置参数
- 优化构建流程设置
- 更新依赖包版本管理
```
2026-07-01 08:03:35 +08:00

85 lines
3.2 KiB
Swift

import Foundation
///
/// - mnn:Qwen + MNN + SME2(CPU),,
/// - mlx:Qwen + MLX(Metal GPU), /
nonisolated enum InferenceEngine: String, CaseIterable, Sendable {
case mnn
case mlx
var displayName: String {
switch self {
case .mnn: return "MNN · CPU/SME2"
case .mlx: return "MLX · GPU"
}
}
/// /MNN device ,退 MLX
var isAvailable: Bool {
switch self {
case .mlx: return true
case .mnn: return MNNLLMBridge.isAvailable()
}
}
// MARK: - (UserDefaults, actor )
private static let key = "kk.inferenceEngine"
/// ( .auto)使
/// AIRuntime / MeView , .mnn .mlx
/// ,
///
/// Gemma-3n( MLX/GPU):Gemma-3n MNN(),
/// MNN 便 "mnn", MNN ,
/// 退 MLX MNN MLX
static var current: InferenceEngine {
let resolved = preference.resolved
guard resolved.isAvailable else { return .mlx }
if resolved == .mnn, !ModelStore.shared.isComplete(for: .mnnLLM) { return .mlx }
return resolved
}
/// :CPU SME2(A19/iPhone17+) UI
/// CPU ,, UI sysctl
static let cpuSupportsSME2: Bool = MNNLLMBridge.cpuSupportsSME2()
// MARK: - (auto / mnn / mlx)
/// .auto:
/// UserDefaults key "mnn"/"mlx"
static var preference: EnginePreference {
get {
let raw = UserDefaults.standard.string(forKey: key)
return raw.flatMap(EnginePreference.init(rawValue:)) ?? .auto
}
set { UserDefaults.standard.set(newValue.rawValue, forKey: key) }
}
}
/// , .auto
/// - auto: Gemma-3n, MLX/GPU, auto .mlx
/// (Gemma-3n MNN/SME2;MNN )
nonisolated enum EnginePreference: String, CaseIterable, Sendable {
case auto
case mnn
case mlx
var displayName: String {
switch self {
case .auto: return "自动"
case .mnn: return InferenceEngine.mnn.displayName
case .mlx: return InferenceEngine.mlx.displayName
}
}
/// (, `InferenceEngine.current`)
var resolved: InferenceEngine {
switch self {
case .mnn: return .mnn
case .mlx: return .mlx
case .auto: return .mlx // Gemma-3n MLX/GPU,auto MLX
}
}
}