Smart Start 是 Apptag 7.0 的核心升级方向。
它要解决的不是“用户不会启动 App”,而是:
用户第一次使用 Apptag 时,不想从零开始创建标签、理解分类、手动拖动几十个 App。
目标体验:
AI Improve 进一步优化。第一版必须默认本地完成,不依赖服务器、不上传用户数据、不需要用户注册。
原因:
所有智能分类都先生成“分类草案”,再决定是否应用。
对于全新用户,可以自动应用高置信度结果,但仍要显示摘要和撤销入口。
对于已有用户,默认只展示预览,不静默覆盖现有分类。
任何自动整理动作都必须可撤销。
应用分类前要保留备份快照,至少支持一次撤销。
内部分类必须使用稳定 ID,例如:
browser
communication
development
design
utilities
system
显示给用户时再本地化为:
浏览器
沟通
开发
设计
工具
系统
不要用中文、英文或其他界面显示名称作为内部身份。
采用方案三:
本地分类库 + 本地规则 + 可选云端 AI Improve
内置一个常见 Mac App 分类表。
主匹配字段:
bundleIdentifier
辅助匹配字段:
App 名称
安装路径类型
例子:
{
"bundleIdentifier": "com.figma.Desktop",
"names": ["Figma"],
"categoryID": "design",
"confidence": 0.98
}
用于处理没有进入分类库、但很容易判断的 App。
例子:
/System/Applications/* -> system
Xcode / VS Code / Terminal / GitHub Desktop -> development 或 utilities
Safari / Chrome / Firefox / Edge -> browser
Music / VLC / Spotify -> media
本地规则的置信度低于精确 bundleIdentifier 匹配。
后续版本再做,不作为第一版依赖。
用户主动点击 AI Improve 后,才上传最小必要信息到服务器。
AI 返回的也必须是草案,不直接覆盖本地数据。
SmartCategorizationDraft。建议新增目录:
Apptag/SmartCategorization/
建议文件:
SmartCategoryCatalog.json
SmartCategory.swift
SmartCategoryCatalog.swift
SmartCategorizationDraft.swift
SmartCategorizer.swift
SmartStartCoordinator.swift
TagBackupService.swift
SmartStartSummaryView.swift
负责定义稳定分类 ID 和默认显示信息。
核心内容:
SmartCategoryID
SmartCategoryDefinition
默认分类顺序
分类颜色建议
本地化 key
内置常见 App 分类表。
第一版可以先从 80-150 个高频 App 开始,验证机制跑通后再扩到 300-800。
负责读取、校验、查询分类库。
能力:
按 bundleIdentifier 查询
按 normalized app name 查询
校验重复项
校验 categoryID 是否存在
定义统一草案结构。
本地 Smart Start 和未来 AI Improve 都输出这个结构。
核心字段:
source
tags
tagOrder
assignments
unassigned
warnings
confidence
核心分类引擎。
输入:
[AppInfo]
当前 TagDatabase.Store
输出:
SmartCategorizationDraft
匹配顺序:
负责流程控制。
它不负责具体 UI,也不负责底层分类判断。
能力:
判断是否需要首次 Smart Start
生成草案
决定是否自动应用
调用备份
调用 TagDatabase 保存
生成摘要
记录 Smart Start 已执行
负责应用智能分类前备份现有数据。
第一版可以做轻量备份:
读取当前 TagDatabase.Store
保存到内存作为 undo snapshot
可选保存到本地 backup json
后续再升级成完整备份历史。
负责结果摘要 UI。
显示:
已整理 App 数
已创建分类
未分类 App 数
撤销按钮
继续编辑按钮
未来 AI Improve 入口
目标:
先定义数据结构和应用规则,避免后面边做边猜。
任务:
SmartCategoryID。SmartCategorizationDraft。验收标准:
目标:
跑通本地分类库机制。
任务:
SmartCategoryCatalog.json。验收标准:
AppInfo,能匹配出已知 App 的分类。目标:
生成完整 Smart Start 草案。
任务:
SmartCategorizer。unassigned。confidence 和 reason。验收标准:
目标:
让本地草案安全地落到现有 TagDatabase.Store。
任务:
TagBackupService。tagOrder。appTags。验收标准:
bash build.sh 通过。目标:
把 Smart Start 接入真实首次使用体验。
任务:
smartStartCompleted。验收标准:
目标:
让已有用户可以安全尝试 Smart Start。
任务:
CategorizationPlanPreviewView 或轻量 preview。验收标准:
目标:
提高命中率。
任务:
验收标准:
目标:
建立一个高覆盖的常见 Mac App 候选库,不追求“全球真实使用量绝对排名”,而追求对 Smart Start 有用的高概率覆盖。
数据源分层:
候选库字段:
name
normalizedName
bundleIdentifier
categoryCandidates
sources
sourceRanks
iconPackMentions
iconDownloads
regionHints
confidence
reviewStatus
notes
合并策略:
目标:
为后续云端增强预留接口,不阻塞本地 MVP。
任务:
SmartCategorizationDraft。AICategorizationClient 接口,但可以先不实现网络。验收标准:
满足全部条件时可以自动应用:
>= 0.85。出现任一情况时必须预览:
第一版稳定分类 ID:
browser
communication
productivity
development
design
writing
media
utilities
system
entertainment
finance
education
ai-tools
security
other
可以先不做太细。分类越细,越容易错。
宁可第一版分类少而准。
缓解:
缓解:
缓解:
缓解:
缓解:
第一版 Smart Start 可以用这些指标判断是否成功:
下一步不要先做 UI。
最合理的第一项开发任务是:
任务 3:建立 Smart Start 数据合同
具体内容:
Apptag/SmartCategorization/。SmartCategory.swift。SmartCategoryID 和默认分类。SmartCategorizationDraft.swift。bash build.sh 通过。这一步完成后,Architect 可以审查分类身份是否稳定,Designer 可以围绕 draft 设计预览体验,Coder 可以继续做本地 catalog loader。