diff --git a/CLAUDE.md b/CLAUDE.md index 50043ad..abd673d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,8 +23,8 @@ | 持久化 | SwiftData | 见 §5 数据模型 | | 图表 | Swift Charts | iOS 16+ 原生 | | **AI 运行时** | **MLX Swift (Apple 官方)** | 不要建议 Core ML / llama.cpp / Ollama | -| LLM | Qwen3-1.7B (MLX 4bit 量化) | ~1.0GB,负责文本生成、关键词抽取、趋势解读 | -| VL | Qwen2.5-VL-3B (MLX 4bit 量化) | ~2.0GB,负责拍照→结构化指标 | +| LLM | Qwen3-1.7B 4bit (HF: `mlx-community/Qwen3-1.7B-4bit`) | ~1.0GB,负责文本生成、关键词抽取、趋势解读 | +| VL | Qwen2.5-VL-3B-Instruct 4bit (HF: `mlx-community/Qwen2.5-VL-3B-Instruct-4bit`) | ~2.0GB,负责拍照→结构化指标 | | 文档扫描 | VisionKit `VNDocumentCameraView` | 不要自己写透视校正 | | Face ID | LocalAuthentication | | | Live Activity | ActivityKit + WidgetExtension | demo 杀手锏,真机才能测 | diff --git a/docs/superpowers/specs/2026-05-25-kangji-features-design.md b/docs/superpowers/specs/2026-05-25-kangji-features-design.md index c2764d6..bbb4645 100644 --- a/docs/superpowers/specs/2026-05-25-kangji-features-design.md +++ b/docs/superpowers/specs/2026-05-25-kangji-features-design.md @@ -112,7 +112,7 @@ struct TokenChunk { | 项 | 决策 | |---|---| -| 模型来源 | HuggingFace MLX 社区版 Qwen3-1.7B-MLX-4bit + Qwen2.5-VL-3B-MLX-4bit | +| 模型来源 | HuggingFace `mlx-community/Qwen3-1.7B-4bit` + `mlx-community/Qwen2.5-VL-3B-Instruct-4bit` | | 体积 | LLM ~1.0GB + VL ~2.0GB ≈ 3GB | | 存储 | `Application Support/Models/`,`URLSession.downloadTask` + 断点续传 | | 首启动 | 启动屏 → 隐私承诺 → "下载模型"页(进度 + WiFi 提示) → 主界面 | diff --git a/体己/AI/ModelStore.swift b/体己/AI/ModelStore.swift index 057feba..e9167a5 100644 --- a/体己/AI/ModelStore.swift +++ b/体己/AI/ModelStore.swift @@ -1,8 +1,9 @@ import Foundation enum ModelKind: String, CaseIterable { - case llm = "Qwen3-1.7B-MLX-4bit" - case vl = "Qwen2.5-VL-3B-MLX-4bit" + /// 与 HuggingFace mlx-community 仓库名一一对应,也是沙盒 Models/ 下的子目录名。 + case llm = "Qwen3-1.7B-4bit" + case vl = "Qwen2.5-VL-3B-Instruct-4bit" var displayName: String { switch self { @@ -11,6 +12,9 @@ enum ModelKind: String, CaseIterable { } } + /// HuggingFace 仓库 ID(org/name),用于下载 + var huggingFaceRepo: String { "mlx-community/\(rawValue)" } + /// 用于判定该模型是否已就绪的最小标志文件 var sentinelFilename: String { "config.json" } }