项目地址
https://github.com/longqiyua/goto
类别
Kotlin
项目标题
GOTO:记得一点,就能找到
项目描述
GOTO 当前阶段已实现为 以单一搜索框为核心的 Android 本地应用搜索与智能启动工具。它试图解决的并不只是“更快搜索应用”,而是让用户在记不清名称、输错字符,甚至只记得用途的情况下,依然能够找到目标应用。
用户可以输入中文名、拼音、首字母、英文缩写、T9 数字、用途词或带有错字的模糊线索。GOTO 会结合精确匹配、拼音检索、模糊纠错、键盘距离、应用标签与使用行为,从多个维度召回候选并进行排序,让搜索不再依赖准确记忆和准确输入。
项目由四个边界清晰、彼此解耦,并可独立演进的核心模块构成。四者分别负责输入预联想、搜索与排序、知识与状态存储,以及主动情境决策,共同组成 GOTO 的本地智能启动体系。
-
GOTO Prethink:搜索开始前的可解释预联想层:负责在正式搜索前分析用户的原始输入,针对重复字符、字符交换、键盘误触、不完整前缀和相近拼写,生成少量带有置信度与解释信息的平行候选。例如,用户输入 ggooogoto 时,它可以联想到 goto;输入 chorme 时,可以生成 chrome 候选。Prethink 不会偷偷修改用户输入,原始查询始终保留最高权重,所有联想结果最终仍交由 GOTO Engine 统一匹配和排序。
模块同时提供 JavaScript、Kotlin 和 Rust 实现,并通过统一 API 契约保持跨平台行为一致。
仓库地址:https://github.com/longqiyua/goto-prethink
-
GOTO Engine:无状态的本地搜索与智能排序引擎,它是整个系统的核心计算层,负责搜索触发、索引构建、关键词匹配、输入纠错、候选召回、语义检索和个性化重排,但自身不保存任何用户数据。搜索流程按照“精确匹配 → 前缀匹配 → 模糊匹配”的优先级执行,支持中文名称、拼音、英文名称、缩写、T9、分类和标签等多种检索方式,并结合 Trie 前缀树、IndexTree、Jaccard 相似度、字符顺序恢复和键盘物理距离处理误触与模糊输入。Engine 还包含一套不依赖大型语言模型的“模拟智能”机制:它会读取 GOTO Base 中的启动热力图、时段排名、应用转移矩阵、用户上下文和反馈链,根据当前时间、前序应用与历史选择,对搜索结果进行无状态重排。当常规规则搜索无法得到结果时,Engine 可以通过 BM25 对应用描述进行本地语义检索;同时支持基于 BGE-small 嵌入模型定期重建个人化 RAG 数据库,并以灰度过渡方式更新新旧索引。
模块提供 JavaScript、Kotlin 和 Rust 三种实现,共用相同的算法契约、功能开关和接口定义。
仓库地址:https://github.com/longqiyua/goto-engine
-
GOTO Base:本地优先的知识、记忆与模型数据底座,他是 GOTO 唯一的持久状态层。它不负责搜索、评分或提醒决策,而是统一保存整个系统需要的公共知识、个人习惯和设备特征,并向 Engine 与 Where 提供结构化读写接口。
Base 将数据物理划分为三个层级:
公共层:保存应用名称、别名、分类、近义词、功能描述、意图标签、RAG 向量库、提示词模板和节假日等可跨用户共享的数据。
个人层:保存用户的启动热力图、分时段排名、应用转移矩阵、搜索点击反馈和个性化偏好。
设备层:承载与当前设备相关的电池、音频、运动、屏幕、网络等瞬时特征,以及可选的本地文件索引。
公共层内置基于 bge-small-zh-v1.5 的本地嵌入模型和 512 维应用向量数据,可完全离线运行,也允许切换为其他本地模型或云端接口。公共知识库支持版本化批量更新与回滚,而个人层和设备层不会因为公共库升级而被覆盖。
用户可以分别清除个人记忆、设备数据或全部学习状态,使本地智能能力保持可查看、可重置和可控制。
仓库地址:https://github.com/longqiyua/goto-base
-
GOTO Where:判断“现在是否应该出现”的主动决策层,他并不是一个简单的通知模块,而是 GOTO 的主动情境决策层。它负责读取当前信号与历史使用模式,生成可能的操作候选,并依次判断:用户现在可能需要什么、当前是不是合适的时机、是否值得打断,以及应该通过什么方式呈现。
Where 会结合时间模式、前台应用、应用转移关系、设备状态和历史提醒反馈生成候选。例如,当用户在特定时间经常打开某个应用,或使用完相机后通常进入图片分享应用,Where 可以根据这些稳定模式形成提醒建议。
为了避免智能提醒变成骚扰,它内置独立的时机判断和防打扰策略,并根据用户的打开、忽略、拒绝和关闭行为调整后续权重。正反馈缓慢增加权重,负反馈快速降低权重,连续忽略则会逐渐停止对应提醒。
Where 本身不直接依赖 Android 通知 API,通知只是其中一种可替换的投递方式。核心决策通过平台无关的 Port 接口实现,并提供 Kotlin、JavaScript 和 Rust 三种版本,使其可以用于 Android、Web、桌面端或其他宿主环境。
仓库地址:https://github.com/longqiyua/goto-where
软件的搜索、统计与行为学习全部均在设备本地完成,无需登录云端账号;相关数据可查看、可清理,智能学习能力也可以关闭。
GOTO 希望实现的最终目标不是让用户更擅长搜索,而是让应用在需要时更容易出现—最好的搜索,是不再需要搜索。
2026.08.03
亮点
-
记得一点线索,就能找到应用:不需要准确记住应用名称。中文名、拼音全拼、拼音首字母、英文缩写、T9 数字、用途标签,甚至一段不完整的模糊输入,都可以成为搜索线索。
-
输错了,也不必重新输入:GOTO 针对手机小键盘上的误触、漏字、字符交换和邻位按键错误设计了专门的容错机制,能够区分“只是打错了”和“输入内容根本不相关”,尽可能从错误输入中恢复真实意图。
-
所有操作,都围绕一个搜索框完成。首页默认不提供层叠复杂菜单和多层入口。输入线索、查看候选、启动应用、记录反馈形成一条完整路径,让用户几乎不需要学习操作方式,打开即可使用。
-
越用越顺手,但不会自作主张:GOTO 会根据启动频率、使用时段、搜索点击和忽略行为逐渐调整结果排序。明确输入和确定性匹配始终优先,学习机制只负责优化候选顺序,不会擅自替用户决定要打开什么。
-
本地也有“类智能”,数据由用户控制:搜索记录、行为统计、个性化排序和主要智能能力在设备本地完成,无需登录云端账号。相关数据可以查看、清理或关闭,在获得个性化体验的同时,保留对数据和功能的控制权。
-
不只帮你找到,也尝试在需要时提前出现: GOTO 会结合时间、当前应用和近期使用关系,在合适的情境下提供应用建议,进一步减少主动搜索。
示例代码
截图或演示视频
无需安装,直接在浏览器中体验 GOTO 的核心交互:
https://longqiyua.github.io/goto/
补充说明:具体的应用演示 已部署在仓库对应的github page;具体请跳转查看
项目地址
https://github.com/longqiyua/goto
类别
Kotlin
项目标题
GOTO:记得一点,就能找到
项目描述
GOTO 当前阶段已实现为 以单一搜索框为核心的 Android 本地应用搜索与智能启动工具。它试图解决的并不只是“更快搜索应用”,而是让用户在记不清名称、输错字符,甚至只记得用途的情况下,依然能够找到目标应用。
用户可以输入中文名、拼音、首字母、英文缩写、T9 数字、用途词或带有错字的模糊线索。GOTO 会结合精确匹配、拼音检索、模糊纠错、键盘距离、应用标签与使用行为,从多个维度召回候选并进行排序,让搜索不再依赖准确记忆和准确输入。
项目由四个边界清晰、彼此解耦,并可独立演进的核心模块构成。四者分别负责输入预联想、搜索与排序、知识与状态存储,以及主动情境决策,共同组成 GOTO 的本地智能启动体系。
GOTO Prethink:搜索开始前的可解释预联想层:负责在正式搜索前分析用户的原始输入,针对重复字符、字符交换、键盘误触、不完整前缀和相近拼写,生成少量带有置信度与解释信息的平行候选。例如,用户输入 ggooogoto 时,它可以联想到 goto;输入 chorme 时,可以生成 chrome 候选。Prethink 不会偷偷修改用户输入,原始查询始终保留最高权重,所有联想结果最终仍交由 GOTO Engine 统一匹配和排序。
模块同时提供 JavaScript、Kotlin 和 Rust 实现,并通过统一 API 契约保持跨平台行为一致。
仓库地址:https://github.com/longqiyua/goto-prethink
GOTO Engine:无状态的本地搜索与智能排序引擎,它是整个系统的核心计算层,负责搜索触发、索引构建、关键词匹配、输入纠错、候选召回、语义检索和个性化重排,但自身不保存任何用户数据。搜索流程按照“精确匹配 → 前缀匹配 → 模糊匹配”的优先级执行,支持中文名称、拼音、英文名称、缩写、T9、分类和标签等多种检索方式,并结合 Trie 前缀树、IndexTree、Jaccard 相似度、字符顺序恢复和键盘物理距离处理误触与模糊输入。Engine 还包含一套不依赖大型语言模型的“模拟智能”机制:它会读取 GOTO Base 中的启动热力图、时段排名、应用转移矩阵、用户上下文和反馈链,根据当前时间、前序应用与历史选择,对搜索结果进行无状态重排。当常规规则搜索无法得到结果时,Engine 可以通过 BM25 对应用描述进行本地语义检索;同时支持基于 BGE-small 嵌入模型定期重建个人化 RAG 数据库,并以灰度过渡方式更新新旧索引。
模块提供 JavaScript、Kotlin 和 Rust 三种实现,共用相同的算法契约、功能开关和接口定义。
仓库地址:https://github.com/longqiyua/goto-engine
GOTO Base:本地优先的知识、记忆与模型数据底座,他是 GOTO 唯一的持久状态层。它不负责搜索、评分或提醒决策,而是统一保存整个系统需要的公共知识、个人习惯和设备特征,并向 Engine 与 Where 提供结构化读写接口。
Base 将数据物理划分为三个层级:
公共层:保存应用名称、别名、分类、近义词、功能描述、意图标签、RAG 向量库、提示词模板和节假日等可跨用户共享的数据。
个人层:保存用户的启动热力图、分时段排名、应用转移矩阵、搜索点击反馈和个性化偏好。
设备层:承载与当前设备相关的电池、音频、运动、屏幕、网络等瞬时特征,以及可选的本地文件索引。
公共层内置基于 bge-small-zh-v1.5 的本地嵌入模型和 512 维应用向量数据,可完全离线运行,也允许切换为其他本地模型或云端接口。公共知识库支持版本化批量更新与回滚,而个人层和设备层不会因为公共库升级而被覆盖。
用户可以分别清除个人记忆、设备数据或全部学习状态,使本地智能能力保持可查看、可重置和可控制。
仓库地址:https://github.com/longqiyua/goto-base
GOTO Where:判断“现在是否应该出现”的主动决策层,他并不是一个简单的通知模块,而是 GOTO 的主动情境决策层。它负责读取当前信号与历史使用模式,生成可能的操作候选,并依次判断:用户现在可能需要什么、当前是不是合适的时机、是否值得打断,以及应该通过什么方式呈现。
Where 会结合时间模式、前台应用、应用转移关系、设备状态和历史提醒反馈生成候选。例如,当用户在特定时间经常打开某个应用,或使用完相机后通常进入图片分享应用,Where 可以根据这些稳定模式形成提醒建议。
为了避免智能提醒变成骚扰,它内置独立的时机判断和防打扰策略,并根据用户的打开、忽略、拒绝和关闭行为调整后续权重。正反馈缓慢增加权重,负反馈快速降低权重,连续忽略则会逐渐停止对应提醒。
Where 本身不直接依赖 Android 通知 API,通知只是其中一种可替换的投递方式。核心决策通过平台无关的 Port 接口实现,并提供 Kotlin、JavaScript 和 Rust 三种版本,使其可以用于 Android、Web、桌面端或其他宿主环境。
仓库地址:https://github.com/longqiyua/goto-where
软件的搜索、统计与行为学习全部均在设备本地完成,无需登录云端账号;相关数据可查看、可清理,智能学习能力也可以关闭。
GOTO 希望实现的最终目标不是让用户更擅长搜索,而是让应用在需要时更容易出现—最好的搜索,是不再需要搜索。
2026.08.03
亮点
记得一点线索,就能找到应用:不需要准确记住应用名称。中文名、拼音全拼、拼音首字母、英文缩写、T9 数字、用途标签,甚至一段不完整的模糊输入,都可以成为搜索线索。
输错了,也不必重新输入:GOTO 针对手机小键盘上的误触、漏字、字符交换和邻位按键错误设计了专门的容错机制,能够区分“只是打错了”和“输入内容根本不相关”,尽可能从错误输入中恢复真实意图。
所有操作,都围绕一个搜索框完成。首页默认不提供层叠复杂菜单和多层入口。输入线索、查看候选、启动应用、记录反馈形成一条完整路径,让用户几乎不需要学习操作方式,打开即可使用。
越用越顺手,但不会自作主张:GOTO 会根据启动频率、使用时段、搜索点击和忽略行为逐渐调整结果排序。明确输入和确定性匹配始终优先,学习机制只负责优化候选顺序,不会擅自替用户决定要打开什么。
本地也有“类智能”,数据由用户控制:搜索记录、行为统计、个性化排序和主要智能能力在设备本地完成,无需登录云端账号。相关数据可以查看、清理或关闭,在获得个性化体验的同时,保留对数据和功能的控制权。
不只帮你找到,也尝试在需要时提前出现: GOTO 会结合时间、当前应用和近期使用关系,在合适的情境下提供应用建议,进一步减少主动搜索。
示例代码
截图或演示视频
无需安装,直接在浏览器中体验 GOTO 的核心交互:
https://longqiyua.github.io/goto/
补充说明:具体的应用演示 已部署在仓库对应的github page;具体请跳转查看