状态:产品与架构评审草案
负责人:产品经理 / 架构师
功能:快速建议
所属能力:快速搜索
版本:7.5
快速建议是快速搜索在空查询状态下显示的默认建议列表。
当用户打开快速搜索,但还没有输入任何内容时,TagLauncher 不应该展示完整应用列表,也不应该显示空白界面,而应该主动给出一组“此刻最可能想打开的应用”。
快速建议的目标是:
Enter 直接打开最可能的应用。一句话定义:
快速建议 = 用户还没输入时,TagLauncher 对“你现在可能想打开什么”的本地预测。
快速搜索有两个状态:
| 状态 | 用户输入 | 产品行为 |
|---|---|---|
| 快速建议 | 查询为空 | 显示推荐应用 |
| 搜索结果 | 查询不为空 | 显示匹配应用 |
快速建议不是搜索结果,也不是完整应用目录。
它的定位是:
打开即建议。
默认可回车。
少量、高质量、动态变化。
快速建议的生成原则是:
近期优先,频率兜底,当前上下文轻微加权。
快速建议列表上方不显示“快速建议”“最近使用”“推荐应用”等标题。
快速搜索输入框下方直接显示建议列表。这样可以保持接近 Spotlight / Raycast 的快速感,避免界面变成列表页或管理页。
快速建议最多显示 6 个应用。
规则:
每个建议项默认显示应用备注,但只显示一行。
展示优先级:
备注过长时:
新用户或历史不足的用户进入冷启动模式。
冷启动触发条件:
通过 TagLauncher 成功启动应用的总次数少于 3 次
或
通过 TagLauncher 成功启动过的不同应用少于 3 个
冷启动时,快速建议优先展示本机已安装且属于高价值分类的应用。
高价值分类顺序:
浏览器 > 沟通 > AI 工具 > 开发 > 效率 > 设计 > 系统工具
冷启动候选来源:
冷启动不允许随机。
7.5 不提供用户手动固定快速建议项的功能。
不做的内容:
可以预留的数据和架构能力:
isPinned 字段。7.5 使用简单、可解释、可测试的本地评分模型。
排序公式:
总分 =
最近启动分
+ 高频启动分
+ 当前标签加权分
+ 冷启动分
核心约束:
最近启动分 > 高频启动分 > 当前标签加权分
也就是说:
Enter 打开默认选中的第一个建议。↑ / ↓ 在建议列表中移动选择。当快速搜索被打开时:
Enter,打开当前选中的建议应用。状态流:
打开快速搜索
↓
查询为空
↓
显示快速建议
↓
用户输入
↓
显示搜索结果
↓
用户清空输入
↓
重新显示快速建议
快速建议显示在快速搜索输入框下方。
列表规则:
每个建议项至少包含:
每个建议项推荐包含:
展示优先级:
应用图标 + 应用名称 + 一行备注
应用图标 + 应用名称 + 标签信息
应用图标 + 应用名称
如果没有任何可用建议:
Enter 不执行任何操作。空状态文案:
输入应用、标签或备注开始搜索
最近启动是快速建议的第一优先级。
数据来源:
最近启动分规则:
| 最近成功启动时间 | 分数 |
|---|---|
| 10 分钟内 | 100 |
| 1 小时内 | 80 |
| 今天内 | 60 |
| 7 天内 | 40 |
| 30 天内 | 20 |
| 30 天以前或从未启动 | 0 |
规则说明:
高频启动用于补充“最近启动”的不足。
原因:
高频启动分规则:
高频启动分 =
min(过去 7 天成功启动次数 × 4, 24)
+ min(过去 30 天成功启动次数 × 1, 20)
分数上限:
高频启动分最高 44 分
规则说明:
如果用户是在主界面的某个标签上下文中打开快速搜索,则当前标签下的应用获得轻微加权。
当前标签加权分:
属于当前标签:+12 分
不属于当前标签:+0 分
重要规则:
错误行为:
当前标签是“设计”,所以快速建议只显示设计类应用。
正确行为:
当前标签是“设计”,所以设计类应用获得 12 分加权。
Chrome、Cursor、ChatGPT 等高意图应用仍然可以出现。
冷启动分只在冷启动模式下启用。
冷启动触发条件:
通过 TagLauncher 成功启动应用的总次数少于 3 次
或
通过 TagLauncher 成功启动过的不同应用少于 3 个
冷启动分类分:
| Smart Start 分类 | 分数 |
|---|---|
| 浏览器 | 50 |
| 沟通 | 45 |
| AI 工具 | 42 |
| 开发 | 40 |
| 效率 | 36 |
| 设计 | 32 |
| 系统工具 | 25 |
| 其他分类 | 0 |
规则说明:
7.5 不启用用户手动固定功能。
实现上可以预留:
固定项加权分 = 0
未来如果支持固定项,可以在不重写排序架构的情况下加入固定加权。
每个候选应用计算一次总分:
总分 =
最近启动分
+ 高频启动分
+ 当前标签加权分
+ 冷启动分
排序规则:
候选去重规则:
bundleIdentifier 去重。bundleIdentifier 时按稳定应用标识去重。数量规则:
排序后取前 6 个。
用户最近通过 TagLauncher 打开过:
Cursor
Chrome
Figma
ChatGPT
用户过去 30 天高频打开:
Chrome
Notion
WeChat
Finder
快速建议可能显示:
Cursor
Chrome
ChatGPT
Figma
Notion
WeChat
当前主界面标签是:
设计
最近启动:
Chrome
Cursor
ChatGPT
设计标签下高相关应用:
Figma
Photoshop
Sketch
快速建议可能显示:
Chrome
Cursor
Figma
ChatGPT
Photoshop
说明:
用户没有足够启动历史。
本机已安装:
Finder
Safari
Chrome
WeChat
Cursor
Figma
Notion
快速建议可能显示:
Chrome
Safari
WeChat
Cursor
Notion
Figma
说明:
快速建议需要以下本地数据:
| 字段 | 是否必须 | 说明 |
|---|---|---|
| 应用稳定标识 | 必须 | 本地稳定身份 |
| 包标识 | 推荐 | 用于去重和应用身份识别 |
| 应用名称 | 必须 | 用于展示和兜底排序 |
| 应用图标 | 必须 | 用于展示 |
| 标签标识 / 标签名称 | 必须 | 用于当前标签加权和展示 |
| 应用备注 | 可选 | 用于展示一行备注 |
| 最近成功启动时间 | 必须 | 用于最近启动分 |
| 过去 7 天成功启动次数 | 推荐 | 用于高频启动分 |
| 过去 30 天成功启动次数 | 推荐 | 用于高频启动分 |
| 总成功启动次数 | 推荐 | 用于判断历史是否充足 |
| 成功启动过的不同应用数量 | 推荐 | 用于判断历史是否充足 |
| 是否固定 | 预留 | 7.5 不暴露用户操作 |
| Smart Start 分类 | 推荐 | 用于冷启动分 |
启动历史记录要求:
快速建议必须是本地优先能力。
要求:
这点很重要,因为快速建议可能反映用户的使用习惯。
快速建议应该在以下时机重新计算:
当快速搜索已经打开且查询为空时:
Enter 时选中项突然移动。要求:
Enter 打开选中的建议应用。↑ 和 ↓ 移动选择。如果建议为空:
Enter 不执行任何操作。进入冷启动模式,使用 Smart Start 高价值分类生成建议。
如果排序结果少于 6 个:
不允许使用随机应用补齐。
如果历史中的应用已经不在本机可启动应用列表中:
重复应用只显示一次。
去重优先级:
快速建议只在快速搜索被明确打开后显示。
如果用户正在其他输入框中输入空格,不应触发快速搜索,也不应显示快速建议。
7.5 不做以下内容:
快速建议行为:
Enter 打开选中的建议应用。↑ / ↓ 改变选中项。展示:
排序:
隐私:
稳定性:
Enter,确认选中的应用被打开。↓ 后再按 Enter,确认第二个建议被打开。快速建议第一版不需要复杂,但必须稳定、直觉、可解释。
它应该让用户在打开快速搜索的第一眼就感觉:
这些就是我大概率现在要打开的应用。
快速搜索负责输入后的搜索命中。
快速建议负责输入前的启动预测。