Magpie:一个尊重隐私的本地全文+语义+图片搜索启动器

8 月 21 日
 stebest

magpie:本地优先的 Spotlight 式启动器,找回你 star 过就忘的项目、存过就丢的文件和书签

不知道大家有没有同感:

我做了个小工具解决这件事:magpie,一个开源( MIT )的桌面启动器, Alt+Space 唤出一个搜索框,检索三类你「存过就忘」的东西。

仓库: https://github.com/newdee/magpie

能搜什么

GitHub Stars —— 贴一个无 scope 的 PAT ,同步全部 star:名称、描述、topics 、 README 全文(分块嵌入)。搜「视频超分」能命中英文 README 里的 video super resolution 。可按相关度 / 收藏时间 / 星数排序。

本地文件 —— 只索引你显式添加的文件夹(详见下面隐私部分)。近 80 种文本/ 代码格式全文检索,PDF ( pdf-inspector 转 markdown )、Word/Excel/PPT 都能解析; 其余文件按文件名索引。命中的段落高亮显示上下文。

图片 —— SigLIP 2 嵌入,两种玩法:

浏览器书签 —— 不走任何 API ,直接读浏览器本地存储。不光是 Chrome/Edge/ Firefox:任何 Chromium 内核的浏览器( Vivaldi 、Arc 、各种小众分支)都按磁盘 profile 结构自动发现。

检索是混合的,不只是关键词

SQLite FTS5 ( BM25 )+ 本地语义向量( multilingual-e5-small ,100+ 语言), RRF 融合排名。中文查询命中英文文档,反之亦然。长文档分块(~1600 字符带重叠), 第 100 页里的一句话也能被搜到。

隐私:靠架构保证,不靠承诺

国内网络下载模型可以在设置里一键切到 hf-mirror.com 镜像。

技术栈(感兴趣的话)

Tauri v2 + Rust ,前端 React 。核心是一个无 UI 依赖的 Rust 库:SQLite + FTS5 external content 表、fastembed/ort 跑 ONNX 、向量就是 L2 归一化的 f32 BLOB 存 SQLite 内存暴力点积——几万个 chunk 15ms 内出结果,100% 召回, 不需要向量数据库。

安装

Windows / macOS (Apple Silicon) / Linux: https://github.com/newdee/magpie/releases/latest

macOS 未签名,curl 安装可跳过 Gatekeeper:

curl -L https://github.com/newdee/magpie/releases/latest/download/magpie_aarch64.app.tar.gz | tar xz -C /Applications

刚发第一个正式版,功能建议和 bug 欢迎提 issue ,觉得有用的话给个 star (然后 用 magpie 搜它 :)

精简版(纯文本场合) 做了个开源小工具 magpie:Alt+Space 唤出的本地搜索框,专治「存过就忘」。

搜 GitHub stars (含 README 全文,中文能搜英文文档)、搜本地文件全文 ( PDF/Office 都解析,只索引你指定的文件夹,永不全盘扫描)、搜图片 (文字描述画面或以图搜图,SigLIP 2 )、搜浏览器书签(任意 Chromium 内核浏览器自动发现)。

关键词 + 语义混合检索,全部本地推理,数据不出本机,MIT 开源, Win/mac/Linux 都有包。

https://github.com/newdee/magpie

9599 次点击
所在节点    分享创造
31 条回复
run2
8 月 25 日
我之前也写了个类似的,不过是用的 dioxus 和复用 openclaw 的 embedding😂
搜索+整理日渐复杂的 workspace 目录
stebest
8 月 25 日
@run2 哈哈,可以的,不过我最初动机还只是是每次写代码时候想翻一下 github 的 star ,看看之前有没有 比较好的项目可以用的,但找起来太费劲了,就写了这个,然后顺便把 local search 以及图像检索也加了,然后又想到了浏览器历史记录和书签,就又加了,顺便把应用启动和快速网页搜索页加了一下~
run2
8 月 25 日
- 想说集成 app intents 结果拦路虎是免费 ADP 即使申请了 app group 也不会给 provisionprofile 里写😂
- star(别人的 repo 2.5K 个) search 本身之前也想做,+browser ext 调用本地 embedding 和 GitHub api 或存 supabase (结果耽误在 supabase worker 上了)
stebest
8 月 25 日
@run2 确实涉及到云端比较麻烦,所以我没有做成知识库,rag 那套在模型记忆中还是差点意思,但用来检索够用了,所以也没有 llm ,纯做检索,所有数据在本地,初始化完成后离线就能运行,没任何外部依赖了。
sora2blue
8 月 26 日
赞一个,最近刚想搞类似的东西
hyphenhhh
8 月 27 日
希望支持拼音英文搜索 如 daili 搜索到代理
stebest
8 月 27 日
@hyphenhhh 在设置里切换中文后,输入拼音或相关词汇标签,可以直接匹配应用。目前主要对启动应用做了,至于对文件和浏览器记录,性价比还在衡量中。
qwertooo
8 月 27 日
以图搜视频有没有搞头
stebest
8 月 27 日
@qwertooo 不难,需要的话后续可以加上
stebest
8 月 27 日
还有什么需求,可以提一下,有意思的话可以马上加 hh
hyphenhhh
8 月 27 日
@stebest #7 没找到设置里哪里可以切换语言;且窗口里没有通往设置的地方,只能挪动鼠标到右下角任务栏,这一点可以学一下 raycast
stebest
8 月 27 日
@hyphenhhh 设置一般是访问频次很少的,所以之前的设计是只给任务栏图标入口,后续如果经常需要访问设置的话,可以增加一个快捷键切换。
另外如果找不到语言切换的话,可以在设置里尝试一下更新版本,v0.1.14 及之后的版本有。
v0.1.15 新增了图搜视频,晚点发布。
stebest
8 月 27 日
目前用户不多,确实可能会有很多问题,欢迎随时提出。
stebest
8 月 27 日
@qwertooo 搞完了,还有没有什么有搞头的 ::doge::
JackalZhao
8 月 27 日
需要能记录浏览器看过的网页里的文字。很多新闻啊,知乎文章啊,过一段时间就和谐,又忘记保存。这个需求很有用,但是会比较难,例如如何获得历史记录,如何解析网页,涉及到 cookie 复用和网页解析,或许可以通过浏览器插件实现?
stebest
8 月 27 日
@JackalZhao 浏览器历史记录检索有,但是 cookie 后面可能都消失了,解析都是小事,除非实时监控浏览器,这个是不是不太好?
JackalZhao
8 月 27 日
@stebest 浏览器历史记录只能检索到标题,页面中的内容无法检索。对的,所以我上面就提到了,用浏览器插件监控用户的网页,并解析结果返回给本地的 magpie 客户端。
stebest
8 月 28 日
@JackalZhao 我的意思其实并不是实现难度,而是这种方式,设计初衷是隐私优先,只索引用户主动添加的东西,持续监控浏览器,保存用户浏览器内容这件事本身就违背了设计初衷。前面的 microsoft recall 就是个很好的例子~
Hansah
8 月 28 日
我搓过类似的,但是完成度太低了,你这个好,直接用了,主要手机里面图太多了,经常要斗图
stebest
8 月 28 日
@Hansah 欢迎使用,有什么问题随时提!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1236302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX