前言

各位好,我是枯白,一名产品设计师,也兼做“App 图标设计师”。在成为“少数派”用户 2000 余天后,我终于鼓起勇气写下第一篇文章,介绍我的个人开发作品:

🦋 Lumno —— 一款由我维护半年、已稳定服务 6000+ 用户,并保持 5.0 评分的浏览器提效插件。

一言以蔽之

Lumno(/ˈluːm.noʊ/)是一款浏览器端的“聚焦搜索”插件。它可以搜索书签、历史记录、常用网站,也可以执行站内搜索、AI 网页搜索、浏览器页面搜索等操作。

它开源、免费,不收集任何用户浏览器数据,也兼容 Dia、Comet、Atlas、Helium 等各类 Chromium 内核的 AI 浏览器。

Lumno 的 slogan 是 “Your browser, at command”,借了 command 的双关

缘起

年初,我将主力浏览器从 Arc 切换回了 Chrome。都说“生命在于折腾”,我给 Chrome 开启了垂直标签页,又打开了 Gemini 侧边栏,让它尽可能贴近自己的使用习惯,但总觉得还差点意思。

思来想去,我发现自己最忘不了的,还是 Arc 的搜索框。它抽离了传统浏览器地址栏的部分功能,又几乎取代了新标签页,非常适合我这种喜欢键鼠同步操作的人。

Arc 浏览器的标志性设计之一:搜索框

为了复刻这一体验,我启动了 Lumno,也希望借此探索更多浏览器交互的可能性。

让浏览器的一切,一搜即达

对于熟悉 macOS 聚焦搜索(Spotlight)、Arc 浏览器、Raycast 或 HapiGo 等产品的朋友来说,Lumno 的交互形式应该并不陌生:通过快捷键唤起,键入关键词,再按回车执行。

目前,插件支持以下几类搜索结果,可用中文、英文、日语搜索,并支持汉语拼音

基础搜索

搜索书签(Bookmarks)、历史记录(History)和常用网站(Top Sites),帮你减少“收藏即吃灰”的情况。

在网页上唤起 Lumno「搜索栏」

搜索浏览器页

搜索浏览器页面(Browser Page),如下载页、书签管理器、扩展页、flags 页、商店页等。不必再苦苦寻找按钮,也不用输入一长串 URL。

可快速跳转至浏览器页,支持中英文

搜索特定站点内容

这是浏览器地址栏里的经典功能,在 Lumno 中也能用。

输入触发词后,按下 Tab 即可进入站内搜索模式。插件内置了近 20 个网站的站点搜索配置;如果你想自定义,也可以在「设置」中添加包含 query 参数的 URL。

直接展示特定站点的搜索结果

一键问 AI

Lumno 可以帮你把 prompt 直达 AI 网页,减少中间操作。例如输入“豆包”后,按下 Tab,再输入 prompt 并回车,浏览器会直接打开豆包网页版并开始对话。

目前支持 Gemini、GPT 等数十种常用 AI 网页

搜索网页结果

除了上述内容,搜索结果中也会包含搜索引擎联想词。

展示搜索引擎联想词

总而言之,Lumno 会通过一套内置的相关性评分与排序逻辑呈现以上结果。你可以自定义结果优先级,也可以控制某类或某条内容是否显示。

搜索结果的相关可配置项

标签页开多了,就搜一下

Lumno 支持搜索已打开的标签页,回车即可切换。按住 Shift 再回车,则会在新标签页中打开同一网页。

搜索已打开的标签页

对于习惯窗口切换器的朋友,Lumno 也提供了类似功能。按下 Alt/Option + Q,可以在最近访问的 5 个标签页之间快速切换,适合需要频繁参考、对照的工作场景。

使用「窗口切换器」

精美的新标签页

Lumno 的新标签页包含搜索框、书签栏和最近访问三个区域。

「新标签页」一览

对于「书签栏」,你可以调整显示数量,也可以设置文件夹的下钻方式。

「书签栏」悬停效果

「最近访问」可切换为「最常访问」,并带有悬停效果。

「最近访问」悬停效果

除此之外,我最喜欢的部分是壁纸。你可以使用内置的数十张精美壁纸,也可以调用本地壁纸。如果想更个性化一些,还可以添加噪点,或将壁纸转换为半调、ASCII 等效果。后续我也会继续扩充滤镜样式。

深浅模式一览

有趣的小细节

为了让界面更有趣,我搭建了一套获取网页 favicon 和主题色的逻辑。你可以在搜索结果、最近访问卡片、窗口切换器等位置,看到这些颜色和图标对 UI 的影响。

主题色效果(左上:最近访问卡片;右上:窗口切换器;左下:站点搜索;右下:一般搜索结果)

Lumno 的「搜索栏」会根据网页 UI 自动切换明暗模式,以规避强明暗对比带来的不适。判断结果会综合参考网页主题色,以及网页自身声明的明暗模式。

「搜索栏」的明暗自适应

在新标签页中,书签栏提供了一种列表模式。由于书签层级不固定,这里采用了「级联菜单」。为了保证级联菜单的稳定性,让用户在切换层级时不被打断,Lumno 引入了经典的“安全三角”设计。

级联菜单的三角安全区演示

Lumno 还提供了生动的新手引导动画,帮助你快速上手。

引导动画(画质糊见谅,看个意思)

另外还有两个必备小功能:「视频自动 PiP」与「置顶标签页存储」,它们都借鉴自 Arc 浏览器。

「视频自动 PiP」:从视频播放页切走时,会自动开启画中画,方便用小窗继续观看
「置顶标签页存储」:关闭浏览器窗口,或退出/重启浏览器后,可以恢复此前的置顶标签页

隐私、权限与数据安全

Lumno 是一个本地运行的浏览器扩展,基于 GPL-3.0 开源,仅使用 chrome.storage.sync 在浏览器之间同步配置。为了让各类功能正常工作,它需要一些浏览器权限。但这些权限不会用于广告、追踪,也不会上传你的浏览数据。

安装时的权限提示

书签、历史记录、标签页信息和设置,只会在你的浏览器内用于生成搜索结果、展示新标签页内容,或执行你主动触发的操作。Lumno 不会收集、出售或上传你的浏览历史、书签内容、页面文本、表单内容或账号信息。

结语

有人说,没有工程经验的人很容易写出“屎山代码”,也很容易做出极不稳定的产品。我非常同意这一观点。

对我而言,Lumno 是一个学习 Vibe Coding 的练手项目。在开发过程中,它曾经历过一次翻天覆地的重构。重构时问题多如牛毛,糟心事也接踵而至。最后还是请开发者朋友 Karl 帮忙,才顺利摆平,也让插件性能得到了明显提升。

而这还只是一个不含数据库的插件项目,更遑论复杂产品。

工具越强大,越会照见不同职业的边界。这也让我前所未有地意识到:涉猎新的领域,以及和不同领域的朋友合作,是多么重要。

因此,如果你介意 Lumno 的代码质量,我会更推荐你使用更成熟的 Raycast、HapiGo 等产品。如果你想一起维护,欢迎访问 Lumno 的 GitHub 仓库。

但要说积极的感受,那就是 AI 正在帮助设计师把想法变成现实,而这种感觉确实令人上瘾。

为此,我从 0 手搓了 Lumno 中的所有组件,并以构建组件库的思路统一管理,同时尽量考虑各个原子组件在不同场景中的适应性。当然,从设计到实现,其中仍有大量课题要做。期待伟大的产品和企业们能将这些能力变成通途,也期待我个人能在其中发挥一点微小的作用。


你可以在 Chrome 商店下载 Lumno,或访问官网以查看更多信息。如果你已登录 Google 账号,在手机上访问并安装后,也会自动同步到电脑端 Chrome 中。

如果你对 Lumno 有任何宝贵建议,欢迎在评论区指出。