<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>苹果 on 小盒子的技术分享</title><link>https://xiaobox.github.io/tags/%E8%8B%B9%E6%9E%9C/</link><description>Recent content in 苹果 on 小盒子的技术分享</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 05:00:00 +0000</lastBuildDate><atom:link href="https://xiaobox.github.io/tags/%E8%8B%B9%E6%9E%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>苹果微软都没做好搜索这件最基本的事</title><link>https://xiaobox.github.io/p/2026-05-05-ping-guo-wei-ruan-dou-mei-zuo-hao-sou-suo-zhe-jian-zui-ji-ben-de-shi/</link><pubDate>Tue, 05 May 2026 05:00:00 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-05-05-ping-guo-wei-ruan-dou-mei-zuo-hao-sou-suo-zhe-jian-zui-ji-ben-de-shi/</guid><description>&lt;p&gt;我家两台机器，一台 Windows，一台 MacBook。&lt;/p&gt;
&lt;p&gt;每次重装系统，第一批装的软件里一定有一个搜索工具。Win 那台装 Everything，Mac 那台装 Raycast。&lt;/p&gt;
&lt;p&gt;做开发十几年，认识的开发同行十有八九都这么干。&lt;/p&gt;
&lt;p&gt;Win 和 Mac 是两个完全不同的操作系统，连搜索的底层架构都长得不一样，但开发者在两边的反应一致，&lt;strong&gt;装机第一件事是把 OS 自带的搜索绕开&lt;/strong&gt;。 因为自带的功能太难用了！&lt;/p&gt;
&lt;p&gt;如果微软自带的搜索做得足够好，Everything 不会有市场。如果 Spotlight 做得足够好，Alfred 和 Raycast 也不会有市场。&lt;/p&gt;
&lt;p&gt;那这两个生态到底各自做错了什么？第三方又分别是怎么钻进这些缝隙里的？&lt;/p&gt;
&lt;p&gt;最近翻了翻这两边的搜索底层架构，发现两个 OS 的失败方式完全不同，第三方填补缝隙的方式也完全不同，但市场结果却惊人一致。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;先说 Win 这边。&lt;/p&gt;
&lt;p&gt;Win 自带搜索的问题不复杂，慢、索引不全、还经常给你弹网页。&lt;/p&gt;
&lt;p&gt;慢是因为它的搜索服务 Windows Search 走的是后台索引模式，初次扫一遍硬盘要小时级，而且索引常年容易出问题。索引不全是因为系统会自动跳过很多目录（比如 Program Files 的子目录），你想要它索引得手动加。&lt;/p&gt;
&lt;p&gt;最离谱的是 Win 11 把 Bing 塞进搜索结果，你按 Win 键想找本地的一个 PDF，跳出来一堆网页推荐，本地文件还在最下面。&lt;/p&gt;
&lt;p&gt;Everything 这个东西就是冲着这个缺口来的。作者是个独立开发者叫 David Carpenter，公司叫 voidtools，连续做了快 20 年。整个程序的核心逻辑加起来不到 200 行 C 代码，一秒索引十几万文件，输三个字符瞬时返回。&lt;/p&gt;
&lt;p&gt;它能做到这个速度，靠的不是更聪明的算法，是&lt;strong&gt;作弊&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它根本没有「搜索」这个动作。它干的事是直接读 NTFS 文件系统自己的总账本。&lt;/p&gt;
&lt;p&gt;NTFS 是微软 1993 年随 Windows NT 一起出的文件系统，它内部维护一张表叫 MFT，全称 Master File Table，主文件表。咱们硬盘上每一个文件、每一个文件夹，都在这张表里有一条记录，记录里有文件名、大小、创建时间、修改时间、所在目录。&lt;/p&gt;
&lt;p&gt;也就是说，操作系统自己就维护了一份「全盘文件名索引」，只不过它用这个索引是为了管文件读写，不是为了给用户搜东西。&lt;/p&gt;
&lt;p&gt;Everything 干的事，就是把这张表整个抄一遍到内存里。一台装了 12 万个文件的 Win 系统，抄完只要 1 秒。然后你输入搜索关键词，它就在内存里这张表上做字符串匹配，0.3 秒返回结果。&lt;/p&gt;
&lt;p&gt;那文件如果有变动呢？&lt;/p&gt;
&lt;p&gt;NTFS 还有第二个东西叫 USN Change Journal，更新序列号变更日志。任何文件变化都会在这条日志里追加一条记录，时间戳、变化类型、文件路径全都有。Everything 在后台监听这条日志，有变化就更新内存里的那张表。&lt;/p&gt;
&lt;p&gt;整个机制干净到让人怀疑微软是不是故意留的口子。事实上，&lt;strong&gt;就是故意留的&lt;/strong&gt;。微软在 NTFS 设计之初就把 MFT 和 USN 当作公开 API 暴露出来，文档齐全，调用方法白纸黑字写在 MSDN 上。&lt;/p&gt;
&lt;p&gt;Everything 不是发明了什么新技术，它只是把微软早就放在桌面上的钥匙捡起来用了。它能成功，是因为微软自己用这把钥匙做出来的 Windows Search 太烂，而 Everything 把同一把钥匙用在了一个极度聚焦的场景上，&lt;strong&gt;只搜文件名、不搜内容、不搜邮件、不搜网页&lt;/strong&gt;，反而做到了极致。&lt;/p&gt;
&lt;p&gt;Everything 的成功公式很简单，单一场景做到极致。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;那 Mac 这边呢？&lt;/p&gt;
&lt;p&gt;Spotlight 的问题跟 Win 自带搜索完全不是一回事。&lt;/p&gt;
&lt;p&gt;Spotlight 不慢吗？也慢，初次索引一块 1TB 硬盘要小时级，新版 macOS 升级完那两天，活动监视器里 mds_stores 经常吃满一个核。&lt;/p&gt;
&lt;p&gt;但 Spotlight 真正让人受不了的，是&lt;strong&gt;杂&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;按 Cmd+空格弹出来，输个文件名，等半秒，给你返回邮件正文匹配、词典词条、Siri 建议、应用、网页历史、备忘录、提醒事项、日历事件，文件本身排第七位。你想找昨天那个 PDF，得在十几条不相关的结果里翻。&lt;/p&gt;
&lt;p&gt;为什么会这样？因为 Spotlight 的架构跟 Win Search 完全不同。&lt;/p&gt;
&lt;p&gt;Spotlight 后台跑着一组进程，主进程叫 mds，全称 metadata server 元数据服务器，下面挂着一群叫 mdworker 的子进程，再下面是一组叫 mdimporter 的插件。&lt;/p&gt;
&lt;p&gt;这组进程干的事不是抄文件系统的账本，而是&lt;strong&gt;逐个文件解析内容&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你硬盘上每多一个文件，mds 就唤起对应类型的 mdimporter 去把这个文件打开、解析、提取关键字段，比如 PDF 的标题作者摘要、邮件的发件人正文、图片的拍摄日期 GPS、源代码的函数名注释，然后把这些字段写进一个叫 .Spotlight-V100 的隐藏文件夹里建立倒排索引。&lt;/p&gt;
&lt;p&gt;每种文件类型都有一个对应的 mdimporter 插件，系统自带几十个，第三方应用还能注册自己的。&lt;/p&gt;
&lt;p&gt;这套机制功能上比 Win Search 强得多，是个完整的语义搜索引擎。它能搜文件&lt;strong&gt;内容&lt;/strong&gt;，能搜邮件正文，能搜词典定义。&lt;/p&gt;
&lt;p&gt;但代价是排序混乱，因为返回结果太杂。&lt;/p&gt;
&lt;p&gt;还特慢，因为每个文件都得打开解析。&lt;/p&gt;
&lt;p&gt;还脏，因为新版 macOS 不停往里塞 Siri 建议、Apple Music 歌词匹配这些东西，搜索结果列表越来越长，文件本身越来越靠后。&lt;/p&gt;
&lt;p&gt;那 Alfred 和 Raycast 是怎么钻进这个缝隙的？&lt;/p&gt;
&lt;p&gt;很多人以为它们是「更好的 Spotlight」，&lt;strong&gt;其实不是&lt;/strong&gt;。它们走了一条完全不同的产品路线。&lt;/p&gt;
&lt;p&gt;Alfred 第一版 2010 年发布，Raycast 第一版 2020 年发布。它们都没有去重新做一个文件搜索引擎，而是在 Spotlight 之上做了三件 Spotlight 自己没做或做不好的事。&lt;/p&gt;
&lt;p&gt;第一件，应用启动 cache 自己维护。Alfred 文档里写得清楚，它对常用应用单独建了一个独立索引，所以你按 option+空格输个 chr 想启动 Chrome，0.05 秒出结果，比 Spotlight 还快。&lt;/p&gt;
&lt;p&gt;第二件，命令面板范式。这是 Raycast 真正改写游戏规则的地方。它不只是个搜索框，是个生产力枢纽。你在同一个面板里能查计算器、剪贴板历史、窗口管理、日历事件、Notion 页面、AI 对话，全部用键盘完成。这套范式是从 VSCode 的命令面板继承来的，Spotlight 至今都没这么玩儿。&lt;/p&gt;
&lt;p&gt;第三件，插件市场。Raycast 现在有上千个第三方扩展，从管 Docker 容器到操作 Figma，全都集成进同一个搜索框。Alfred 的 workflow 体系也很成熟，但门槛高一些。&lt;/p&gt;
&lt;p&gt;至于文件搜索这件事本身，Alfred 用的是 mdfind 命令包装，本质走 Spotlight 索引。Raycast 在 macOS 上的「搜索文件」功能官方文档明确说用的是 Spotlight 索引检索结果。&lt;/p&gt;
&lt;p&gt;所以这两个工具在文件搜索的速度上限被 Spotlight 卡得死死的，但&lt;strong&gt;它们根本不在这个维度上跟 Spotlight 较劲&lt;/strong&gt;。它们抓住的是 Spotlight 完全没做的另一片市场，把启动器扩展成生产力枢纽。&lt;/p&gt;
&lt;p&gt;Alfred 和 Raycast 的成功公式跟 Everything 完全不同。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这么一对比，两条路线就清楚了。&lt;/p&gt;
&lt;p&gt;Everything 走的是「单一场景做到极致」，靠绕开 OS 自带、直接读文件系统底层这条作弊路线，做到了 OS 自己都做不到的速度。&lt;/p&gt;
&lt;p&gt;Alfred 和 Raycast 走的是「功能扩张到生产力枢纽」，靠借力 OS（Spotlight 索引）+ 自建应用 cache + 命令面板 + 插件市场，把搜索框从一个工具变成了开发者的桌面操作中枢。&lt;/p&gt;
&lt;p&gt;技术路线相反，产品路线也相反，但都成功了。&lt;/p&gt;
&lt;p&gt;为什么都能成功？因为原生 OS 都失败了，且失败的方式各不相同，当然留出的市场缺口也不同。&lt;/p&gt;
&lt;p&gt;Win 自带搜索失败在「性能差 + 索引不全 + Bing 干扰」，留出的缺口是「极致快速的本地文件名搜索」这个具体场景。Everything 抓住了。&lt;/p&gt;
&lt;p&gt;Spotlight 失败在「结果杂乱 + 排序混乱 + 没有命令面板」，留出的缺口是「干净统一的快速操作枢纽」这个抽象场景。Alfred 和 Raycast 抓住了。&lt;/p&gt;
&lt;p&gt;两个 OS 犯的错其实可以归到同一句话上，&lt;strong&gt;它们都试图把&amp;quot;搜索&amp;quot;做得太通用，反而失去了核心场景&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Win Search 想搜本地文件、Bing 网页、应用、设置、Office 365 全套，结果搜个本地 PDF 跳出来网页推荐。Spotlight 想搜文件、邮件、词典、Siri 建议、Apple Music 歌词、网页书签，结果搜个本地文件返回十几条不相关的杂项。&lt;/p&gt;
&lt;p&gt;通用搜索的代价就是没有任何一个场景被做到极致。第三方反过来抓住其中一个具体场景做透，自然就赢了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;当然了，话说回来，OS 自带搜索想做&amp;quot;通用&amp;quot;是有合理性的。&lt;/p&gt;
&lt;p&gt;普通用户不分什么文件名搜索和语义搜索，他们想要的是「我输个词，电脑帮我找到我需要的东西，不管它是文件、邮件还是 Siri 建议」。从这个角度看，Spotlight 的设计逻辑是对的，Win Search 把 Bing 塞进来也是对的。&lt;/p&gt;
&lt;p&gt;但问题在于，&lt;strong&gt;OS 自带产品要服务全体用户，第三方产品可以只服务特定人群&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;开发者人群对搜索的需求跟普通用户不一样。咱们不需要 Spotlight 帮我们搜邮件，邮件直接在 Mail 里搜更精准。咱们不需要 Win Search 帮我们搜 Bing 网页，浏览器开着呢。咱们要的就是输几个字符，0.3 秒里把那个文件或者那个命令调出来。&lt;/p&gt;
&lt;p&gt;OS 自带产品永远没法只服务开发者，因为它要对所有人负责。第三方产品没这个负担，所以 Everything 可以坚持只搜文件名 20 年不变，Raycast 可以专心做开发者的命令面板。&lt;/p&gt;
&lt;p&gt;Everything 卖的不是技术，是「我比微软更专心听开发者的话」。Raycast 也同样如此。&lt;/p&gt;
&lt;p&gt;两个产品都赚到了同一笔钱。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;如果哪天微软真的把 Win Search 做对，Everything 会消失。如果哪天苹果真的把 Spotlight 做对，Alfred 和 Raycast 也会消失。&lt;/p&gt;
&lt;p&gt;但现在看起来，这一天遥遥无期。微软去年又往 Win Search 里塞了更多 Copilot 和 Bing 入口，苹果今年的 macOS 升级里 Spotlight 又多了一组 Apple Intelligence 建议。两家都在往「更通用更全」的方向走，第三方反而成为最大受益者。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;OS 大厂越想讨好所有人，搜索就做得越烂。独立开发者就只服务开发者，反而能成功。&lt;/p&gt;
&lt;p&gt;这是个结构性错配，不是哪家公司的失误，所以也不会自己结束。&lt;/p&gt;</description></item></channel></rss>