很多 Mac 用户第一次看到 SpacePeek,可能都会有一个疑问:
一个用来分析文件夹大小、搜索文件、查看压缩包内容的工具,为什么不提前把整个磁盘索引起来?
毕竟从技术实现上看,提前建立索引似乎是更合理的方案。
后台慢慢扫描一次,把文件名、路径、大小、类型等信息存下来。之后用户再搜索时直接查数据库,速度自然会很快。
但 SpacePeek 走的是另一条路线:
不建立后台目录,不持续扫描文件系统,而是在用户打开 Finder Quick Look 时才进行扫描。
官方目前明确说明,SpacePeek 不建立预先索引,也没有后台 catalog,文件夹数据不会上传到云端;扫描发生在打开 Quick Look 的时候。
这其实不是一个简单的“有没有索引”问题。
它背后涉及的是一个工具应该如何在性能、隐私、资源占用和数据新鲜度之间做取舍。
一、先说结论:SpacePeek 更像“按需检查器”,而不是“持续运行的文件数据库”
理解 SpacePeek 最重要的一点,是不要把它和系统级文件索引工具放在同一个模型里。
传统索引型工具的思路通常是:
文件系统
↓
后台扫描
↓
建立索引
↓
持续更新
↓
用户查询
↓
快速返回结果
SpacePeek 的思路则更接近:
用户发现某个文件夹需要检查
↓
打开 Finder
↓
选中文件夹
↓
按 Space
↓
开始扫描
↓
返回当前文件夹的结构和空间信息
也就是说:
SpacePeek 不负责“永远知道你的 Mac 上有什么”。
它更关注:
当我现在需要了解这个文件夹时,能不能给我一个足够清楚的答案?
这两种思路没有绝对的优劣,只是解决的问题不同。
二、为什么“后台索引”看起来很好,却不是免费的午餐?
先假设我们做一个完整的文件索引系统。
至少需要持续关注:
- 文件名
- 文件路径
- 文件大小
- 文件夹层级
- 文件类型
- 文件创建时间
- 修改时间
- 文件新增
- 文件删除
- 文件移动
- 文件重命名
如果范围扩大到整个 Mac,问题就更复杂。
用户的文件并不是静态的。
今天:
Downloads/
├── video.mp4
├── project.zip
└── image.psd
明天可能已经变成:
Downloads/
├── project.zip
├── image.psd
└── installer.dmg
甚至用户可能把整个 Downloads 文件夹移动到其他位置。
所以索引系统真正面对的不是:
“扫描一次文件夹。”
而是:
如何让数据库里的状态长期跟文件系统保持一致?
这才是后台索引真正复杂的地方。
三、索引最大的优势:查询速度
先承认后台索引的优势。
假设一个目录里面有几十万甚至上百万个文件。
如果已经建立好了索引:
搜索 *.zip
理论上可以直接查询数据库。
例如:
SELECT * FROM files
WHERE name LIKE '%.zip';
这种查询和重新遍历文件系统,是完全不同的事情。
所以:
如果用户经常重复查询同一批数据,索引非常有价值。
例如:
- 全盘搜索文件
- 查找过去半年修改过的文件
- 查询所有大于 1GB 的文件
- 查询某种扩展名
- 按时间统计文件
- 建立长期磁盘变化趋势
这些需求都天然适合索引。
四、但 SpacePeek 解决的不是这个问题
SpacePeek 的使用入口其实已经说明了它的定位。
用户不是先打开 SpacePeek,然后等待它把整个 Mac 建立数据库。
而是在 Finder 中:
选中文件夹 → 按 Space → 查看。
官方目前把它定位为 Finder Quick Look 的扩展,用来查看文件夹大小、最大项目、空间分布和 Contents,并且采用按需扫描。
这意味着它面对的核心问题不是:
“我需要一个永远存在的文件数据库。”
而是:
“这个文件夹为什么这么大?里面到底有什么?”
两者看起来接近,实际上工作方式完全不同。
五、按需扫描有一个很明显的优点:数据天然更接近当前状态
假设你昨天扫描过一个项目目录。
昨天:
project/
├── node_modules/
├── src/
└── dist/
今天你运行了一次构建。
目录变成:
project/
├── node_modules/
├── src/
├── dist/
└── build-cache/
如果工具依赖长期索引,就必须考虑:
索引有没有及时更新?
如果没有及时更新,用户看到的可能不是当前文件系统。
而按需扫描的逻辑简单很多:
现在打开
↓
现在扫描
↓
尽可能反映现在的目录状态
当然,这并不意味着扫描结果永远“实时”。
文件系统仍然可能在扫描过程中发生变化,而且权限、存储介质、目录结构等因素都会影响结果。
但至少它没有一个长期存在的“昨天数据库”需要解释。
六、第二个取舍:后台索引意味着持续消耗资源
这是很多用户容易忽略的一点。
“后台索引”听起来像:
反正电脑闲着的时候扫描一下就好了。
但实际需要考虑:
- CPU
- 磁盘 I/O
- 内存
- 文件系统事件
- 数据库空间
- 索引维护
如果 Mac 上有大量代码仓库、虚拟机、依赖目录、照片库或者大型素材目录,那么“扫描整个文件系统”本身就不是一个特别轻的事情。
而且一次扫描只是开始。
真正麻烦的是后面的维护:
文件变化
↓
检测变化
↓
更新索引
↓
写入数据库
↓
保持索引一致
这套机制长期运行,必然会有资源成本。
SpacePeek 的设计则反过来:
用户不用它的时候,它不需要为了“以后可能会用”而持续维护一个全局文件目录。
官方对这一点的描述很明确:SpacePeek 只在打开 Quick Look 时扫描,没有预建索引,也没有后台 catalog。
七、这也是一个隐私设计问题,而不只是性能问题
如果一个工具要提供“全盘快速搜索”,最自然的实现方式之一就是:
把文件系统信息长期保存成索引。
但这样就多了一份需要管理的数据。
即使索引里没有文件内容,它仍然可能包含:
文件名
文件路径
目录结构
文件大小
文件类型
时间信息
这些信息本身就可能暴露用户的工作目录结构。
例如:
~/Projects/company-a/
~/Projects/company-b/
~/Documents/contracts/
~/Downloads/client-materials/
这些目录名本身已经具有一定的信息量。
SpacePeek 采用的思路则是:
不需要为了以后查询而建立长期的全局文件 catalog。
官方目前明确强调:
- 不建立后台索引
- 不上传文件夹数据
- 在本机处理
- 以只读方式查看存储情况
这里值得注意的是:
“没有后台索引”并不等于“什么都不处理”。
它仍然需要扫描文件夹。
区别在于:
扫描发生在用户主动打开检查时,而不是长期在后台维护一个全局数据库。
八、那按需扫描是不是一定更慢?
这里反而是一个很容易被营销文章说过头的地方。
不能简单说:
“没有索引,所以一定更快。”
也不能说:
“有索引,所以一定更快。”
真正应该比较的是两个不同阶段:
第一次查看
索引型工具:
已有索引 → 查询
按需扫描:
遍历目录 → 分析 → 返回
这时候索引型方案通常更有优势。
第 N 次查询
如果索引已经存在:
查询 → 返回
优势依然明显。
但如果用户只是:
偶尔检查一个文件夹
那么“为了这一次检查,是否值得长期维护一套全盘索引”,就变成了另外一个问题。
所以真正的区别是:
| 场景 | 索引型方案 | SpacePeek 的按需方案 |
|---|---|---|
| 偶尔检查一个文件夹 | 未必必要 | 比较匹配 |
| 长期全盘搜索 | 更适合 | 不是主要定位 |
| 重复查询大量数据 | 有优势 | 需要重新扫描 |
| 数据长期统计 | 更适合 | 不属于核心用途 |
| 后台持续运行 | 通常需要 | 不依赖后台 catalog |
| 隐私控制 | 需要考虑索引数据 | 不建立全局后台索引 |
| 当前目录状态 | 依赖索引更新 | 打开时按需扫描 |
所以这里不是“谁先进”的问题。
而是:
工具到底准备解决哪一种问题。
九、SpacePeek 其实采用了一个很有意思的折中:渐进式扫描
如果按需扫描最大的缺点是:
“我要等它扫描完。”
那么用户体验就会比较差。
SpacePeek 目前采用的是渐进式结果。
官方说明,在较长的扫描过程中,有用结果可以逐步出现,而不是必须等整个目录扫描完成以后才看到任何信息。
这个思路很重要。
因为用户通常并不需要在第 0 秒知道:
“这个文件夹所有 100% 的信息。”
很多时候,第一个阶段只需要知道:
这个目录大概有多大?
最大的几个项目是什么?
主要空间花在哪里?
如果这些信息已经出现,用户就可以开始判断。
这其实是一个典型的:
Progressive Disclosure / 渐进式信息呈现
思路。
不是让用户等待所有数据完成,而是:
先给最有价值的信息
↓
继续扫描
↓
逐步补充细节
十、官方确实给过一次扫描性能数据,但不要把它当成固定速度
SpacePeek 官网展示过一个实际的 SpacePeek 1.3 capture:
1.6M items in 4.55 seconds
页面同时说明,这个扫描速率是根据展示结果计算出来的,实际性能会受到存储设备和文件夹结构影响。
这里有一个很值得注意的细节。
不要把:
1.6M / 4.55 ≈ 350K items/s
理解成:
SpacePeek 在任何 Mac 上都能稳定达到 35 万 items/s。
这是不成立的。
文件系统扫描速度至少会受到:
- SSD 性能
- 文件夹层级
- 文件数量
- 权限
- 文件系统状态
- 文件类型
- 目录结构
等因素影响。
所以如果自己写文章做测试,最好把测试环境一起记录下来:
Mac 型号:
CPU:
内存:
macOS:
存储设备:
文件数量:
目录结构:
SpacePeek 版本:
扫描时间:
这样数据才具有可复现性。
十一、还有一个容易误解的地方:扫描 ≠ 索引
这两个词经常被混在一起。
实际上:
扫描
更像:
现在检查一下这里有什么
索引
更像:
我把这里的信息保存下来,以后可以快速查询
因此:
SpacePeek 没有后台索引,不代表它不扫描。
恰恰相反。
它要给你显示:
文件夹大小
最大项目
内容列表
搜索结果
空间分布
当然需要读取目录信息。
区别只是:
读取之后是否长期维护一个可供未来查询的全局数据结构。
SpacePeek 选择了“不做”。
十二、这个设计对 Downloads 文件夹尤其合理
举一个很典型的场景。
Downloads 已经变成:
Downloads/
├── xxx.zip
├── macOS-installer.dmg
├── video.mp4
├── project/
├── old-project.zip
└── random-file/
用户真正想知道的通常只有几个问题:
哪几个东西最大?
哪个目录在持续增长?
这个 ZIP 里面到底是什么?
这个文件是不是可以删?
SpacePeek 的工作流刚好是:
Finder
↓
选中 Downloads
↓
Space
↓
Overview
↓
Largest Items
↓
Contents
↓
Search
↓
Preview
↓
自己决定下一步
这个流程并不试图自动替用户“清理垃圾”。
它做的是:
把“我不知道这个文件夹为什么这么大”变成“我已经知道里面主要是什么了”。
这也是为什么它更适合作为检查工具,而不是清理工具。
十三、开发者目录也是类似逻辑
例如一个项目目录:
my-project/
├── src/
├── node_modules/
├── .git/
├── dist/
├── build/
├── target/
└── cache/
如果项目突然变大,真正的问题不是:
“帮我删东西。”
而是:
“到底是哪一级目录在占空间?”
这时候先观察结构,比直接运行清理脚本更稳妥。
尤其是:
node_modules
.git
build
dist
target
cache
这些目录看起来都像“可以清理”。
但实际上是否可以删除,取决于具体项目和工作流。
所以一个只读分析工具有一个很现实的优势:
它不会因为“帮你优化空间”而顺手改变你的文件系统。
官方也将 SpacePeek 定义为 read-only,并强调扫描不会修改源文件。
十四、但“没有后台索引”也确实意味着一个代价
这一点必须说清楚。
如果你的需求是:
“我想随时搜索整个 Mac 上所有文件,而且搜索必须非常快。”
那么 SpacePeek 并不是为这个场景设计的。
因为它不是:
全盘数据库
而是:
Finder 中当前需要检查的对象
所以它不应该被拿来替代:
- 系统级搜索
- 长期文件索引
- 专业磁盘分析数据库
- 长期存储趋势统计
- 自动化文件资产管理系统
这也是选择工具时很重要的一个判断标准:
不要因为一个工具某个功能做得不错,就要求它承担完全不同的问题。
十五、那 SpacePeek 的边界到底在哪里?
可以简单画成这样:
文件系统分析
│
┌─────────────┴─────────────┐
│ │
“现在看看这个目录” “长期管理整个 Mac”
│ │
SpacePeek 索引/数据库型工具
│ │
Quick Look 全局索引
按需扫描 持续更新
只读分析 长期查询
文件夹浏览 全盘搜索
Archive Preview 趋势统计
所以如果你只是:
偶尔想知道一个目录为什么这么大。
SpacePeek 的设计很自然。
如果你每天都要:
跨整个磁盘查询数百万个文件。
那么索引型工具反而更合适。
这不是谁替代谁。
而是工作模型不同。
十六、2.1 又把这个思路往前推了一步
目前官方已经发布 SpacePeek 2.1。
从 2.1 的更新说明来看,它继续围绕“打开之后如何更顺畅地工作”进行优化,包括:
- 相关预览可以共享一次扫描
- Folder / Archive 窗口会记住尺寸
- 扫描过程中的实时更新更顺畅
- 内存能够更及时地释放
- 同时打开多个预览时,各自保持独立的导航和搜索状态
这些变化其实很有意思。
它们并没有把产品方向改成:
“让 SpacePeek 变成一个永远在后台运行的全盘数据库。”
而是在继续优化:
用户真正打开它以后,这一次检查应该尽可能顺畅。
这和“按需扫描”的整体设计是一致的。
十七、所以,“没有索引”到底是优点还是缺点?
答案是:
两者都是。
它的优点
- 不需要长期维护全局文件目录
- 不依赖后台 catalog
- 文件夹数据保持在本机
- 更符合偶尔检查目录的使用方式
- 打开时重新获取当前目录信息
- 不需要为了未来可能的查询长期运行
它的代价
- 第一次查看需要实际扫描
- 重复查看可能需要重新处理
- 不适合承担全盘长期搜索数据库的角色
- 不适合长期趋势统计
- 大型目录的扫描时间仍然取决于实际文件系统
所以真正准确的描述应该是:
SpacePeek 用“按需扫描”换取了更简单的资源模型和更明确的隐私边界,同时接受了它不适合做长期全盘索引工具的事实。
这比简单说一句“无索引更快”准确得多。
十八、如果你准备自己测试,建议这样测
如果这篇文章要从“产品分析”升级成真正的 优快云 实战文章,最好自己做一轮测试。
不要只截图首页。
可以准备三个目录:
测试 A:普通 Downloads
准备:
Downloads/
├── ZIP
├── DMG
├── MP4
├── PDF
└── 图片
记录:
- 总大小
- 文件数量
- 最大项目
- 首次显示时间
- 完整扫描时间
测试 B:大量小文件
例如一个包含大量源码、依赖文件的目录。
重点观察:
文件数量
目录深度
扫描时间
渐进式结果
搜索响应
这个测试比“一个 20GB 视频文件”更有意义。
因为:
20GB 不一定意味着大量文件。
而文件系统分析工具真正需要处理的往往是:
大量 metadata。
测试 C:开发项目目录
例如:
project/
├── src/
├── node_modules/
├── .git/
├── build/
├── dist/
└── cache/
然后观察:
哪个目录最大?
Contents 是否方便定位?
搜索能否快速找到目标?
是否需要进入更深层目录?
这样就能把文章从:
“SpacePeek 有什么功能?”
升级成:
“这种按需扫描架构在真实目录分析中表现如何?”
这才是更有价值的内容。
十九、一个容易踩的坑:不要拿一次测试结果代表所有 Mac
如果你后续自己测试出:
500,000 items
2.3 seconds
不要写成:
SpacePeek 500,000 个文件只需要 2.3 秒。
更严谨的写法应该是:
在本文测试环境中,包含约 50 万个项目的测试目录从打开 Quick Look 到完成扫描约耗时 2.3 秒。实际表现还会受到存储设备、目录结构、权限等因素影响。
这两句话看起来只是差了一点。
但对于技术文章来说,可信度完全不同。
尤其是小众工具评测。
越没有必要夸张,文章反而越像真实经验。
二十、最终应该怎么理解 SpacePeek?
如果只用一句话总结:
SpacePeek 不是在试图“知道你的 Mac 上所有文件”,而是在你需要的时候,快速解释“这个文件夹里到底有什么”。
所以它选择:
不做全局后台索引
↓
用户主动打开
↓
按需扫描
↓
渐进式展示
↓
继续浏览 / 搜索 / 预览
↓
用户自己决定下一步
这套设计最大的价值,并不是“没有索引”这四个字。
真正值得关注的是:
产品功能、数据处理方式和使用场景是一致的。
如果一个工具主要用于:
偶尔检查 Downloads、项目目录、素材目录、备份目录、压缩包。
那么每次需要时扫描一次,是一个相当容易理解的模型。
如果需求变成:
长期维护全盘文件数据库、跨磁盘查询、统计历史变化。
那么索引型工具会更合适。
工具设计没有绝对正确答案。
关键是它有没有为自己的使用场景做出合理取舍。
当前版本信息
截至本文撰写时,SpacePeek 官方网站显示当前版本为 2.1,支持 macOS 14.0 及以上版本。目前 Folder Search 和 Archive Search 可免费使用,Pro 为一次性购买;官方没有采用订阅模式。
如果你的 Mac 版本较老,建议安装前先确认系统要求。
写在最后
前几篇文章主要解决的是:
- SpacePeek 是什么;
- 如何用它分析越来越大的文件夹;
- 如何在不解压的情况下查看 ZIP 等压缩包。
这一篇则换一个角度:
为什么它选择“不建立后台索引”?
我觉得这是小众工具评测里比较值得写的部分。
因为真正有技术含量的文章,不应该只是:
“这个按钮可以干什么,那个按钮可以干什么。”
而应该继续追问:
为什么这么设计?
这种设计解决了什么问题?
它又牺牲了什么?
什么情况下应该换另一类工具?
把这些问题讲清楚,一篇工具介绍才真正有分析价值。
2603



被折叠的 条评论
为什么被折叠?



