上周二下午,我写代码写到一半卡住了,想找一个之前 star 过的 Rust PDF 处理库。我只记得两点:它是 Rust 写的,跟 PDF 有关。打开 GitHub 的 star 列表,翻了快 30 页,眼睛快瞎了,愣是没找着。
GitHub 网页版的 star 列表,这么多年了,还是只能按仓库名模糊过滤,搜不了 README 内容,更别说用中文去搜一个英文项目。这功能我盼了三年,它就是不给你。
那你可能想问了,800 个项目,大概名字总记得吧?问题是,我想找的是那种"当时觉得有用、现在忘了叫啥"的东西,脑子里只剩"rust pdf"这种碎片。存过,等于没存过。
后来在 V2EX 上刷到一个帖子,有人推荐了 magpie。说白了,这玩意儿就是给你所有"存过又忘了"的东西开了一个本地搜索框:GitHub stars、本地文件、截图、书签历史、剪贴板,全塞进同一个框里,按一下 Alt+Space 就能搜。名字叫 magpie,喜鹊的意思——喜鹊最爱囤亮闪闪的东西,然后转头就忘放哪了。像极了 star 完就再也不看的我们。
项目地址:https://github.com/newdee/magpie

大白话翻译:你收藏夹里的东西,终于有人帮你记着放哪了。
安装倒是简单,GitHub Releases 里直接下 dmg,双击就能跑。第一次启动,它说要下载嵌入模型,好家伙,700MB。我这边直连 Hugging Face,进度卡在 0%,转了半天一动不动。当时我就想,完了,又是一个网不好就白下的工具。
后来在设置里翻到一个一键换源,切到 hf-mirror.com,进度条终于动了。等模型下完,语义搜索就全活了。关键词搜索倒是不用等模型,启动就能用,这点设计得还算贴心。
模型装完我干的第一件事,就是输入"pdf rust"。唰,那个我想了两天的仓库,排在第一个。我又试了句人话:"处理 pdf 的开源库",它居然也把一堆英文 README 的项目翻出来了。中文搜英文,这波真的惊到我了。

原理我翻了下 README,大概是这样:关键词靠 SQLite 自带的 FTS5 全文索引,语义靠一个 multilingual-e5-small 模型在本地跑,两路结果再合并排序。向量没存在什么向量数据库里,就在 SQLite 一个文件里躺着,几万条 chunk 内存暴力扫,15 毫秒内出结果,100% 召回。
说实话,那个 reciprocal rank fusion 具体怎么融合的,我没完全搞懂。原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。
那它有没有毛病?有,还挺实在的。
第一,macOS 版只支持 Apple Silicon,Intel 的 Mac 直接被劝退。第二,700MB 模型是道门槛,网不好的时候首次体验会很难受。第三,这项目 8 月 20 号才建,到现在两周出头,80 来个 star,感觉作者一个人在维护。功能铺得很大,文档写得也用心,但年轻项目嘛,谁也说不好哪天就停更了。我反正是想好了,哪天它不更新了也不慌——索引全在本地 SQLite 里,说导就能导出来。
说句公道话,在"把语义搜索塞进日常工具"这件事上,它做得是真利索。Rust 写底层,Tauri 包壳,装完就是一个干净的小搜索框,没有云端账号,没有遥测,数据不出本机。这个东西,怎么说呢……就是那种,你装了不一定天天用,但一旦想找点什么,就离不开的。
反正我现在已经把它挂后台了,Alt+Space 一按,800 多个 star 随便捞。你要是也存了一堆东西找不到,试试,不亏。
顺嘴说一句,如果只是想按文件名找本地文件,Windows 老牌的 Everything、Linux 上的开源替代 FSearch 都够用。但 magpie 的野心明显更大,它想把你 star 过、截图过、复制过的东西一网打尽。对这类"本地优先"的效率工具感兴趣的话,我此前还整理过一份清单,关注后回复「工具」就能拿到。
好了,我又想起一个上周 star 的 CLI 工具还没翻出来,先去找它了。回见。