SCM(屏幕记忆)AI 搜索 for macOS
SCM(屏幕记忆)是一款面向 macOS 的本地优先 AI 搜索工具,允许用户使用本地视觉模型在指定文件夹内的每一张照片和视频的每一帧中进行搜索。通过在设备上运行所有推理任务,SCM 确保媒体文件永远不会离开设备,为云媒体索引提供了一种私密的替代方案。
五种专用搜索模式
SCM 实现了五种不同的搜索模式,以应对不同类型的数据,确保用户无论格式如何,都能找到特定的时刻或文本。
语义文件与场景搜索
SCM 使用视觉模型根据图像嵌入的余弦相似度对结果进行排序。
- 文件模式:通过语义搜索整个照片和视频,利用视觉排序并结合文件名和短语权重提升。
- 场景模式:将视频分割为镜头并进行嵌入,允许用户直接跳转到视频中的特定时间码,而不仅仅是找到文件。
OCR 与对话搜索
对于精确的文本检索,SCM 跳过视觉模型以确保速度和离线可用性。
- OCR 模式:使用 Tesseract 将查询词元与图像和帧中的可见文本进行字面匹配。支持英语和 35 种可切换的语言。
- 对话模式:使用 OpenAI 的 Whisper(
tiny.en或base.en)对视频字幕进行精确的字面检索。提供三个层级的匹配:完全匹配的行、8 秒窗口内的完全匹配词,以及同一视频中任意说出的词。
本地 LLM 集成(可选)
SCM 包含一个可选的「提问」模式,由 llama.cpp 侧车提供支持。这允许用户使用 RAG(检索增强生成)方法与本地媒体库进行对话,模型根据提取的对话、OCR 文本和文件名回答问题。支持的模型包括 Qwen3 1.7B(默认)和 Llama 3.2 3B。
技术架构与流程
SCM 使用 Electron 和 Bun 构建,利用多种专用工作线程进行索引和推理。
视觉模型选择
用户可根据对速度与细节的需求在四种 ONNX Runtime 模型之间切换:
- CLIP ViT-L/14@336:适用于现实世界视频场景搜索的默认模型。
- SigLIP-2-B/16:专为最快批量导入优化。
- SigLIP-2-L/16@256:高细节模型,适用于小物体和屏幕文本。
- SigLIP-B/16@384:最大细节。
视频处理流程
为应对视频索引的计算负载,SCM 使用 ffmpeg 扫描镜头边界并构建分段计划。用户可从五种采样预设中选择,范围从「节能」(每点 60 秒)到「超专业」(每点 2.5 秒)。每个分段嵌入其中心帧,并存储缩略图以实现快速检索。
库管理与隐私
SCM 采用「构建时即隐私」的理念。所有权重(Hugging Face、Tesseract CDN、GitHub)仅下载一次,并通过 SHA-256 进行验证。媒体文件被复制到由应用管理的库中,并从磁盘流式传输。系统使用 SHA-256 内容哈希进行去重,确保重命名的文件不会被不必要的重新索引。
社区见解与考量
Hacker News 上的用户讨论突显了该工具的若干技术权衡和潜在改进方向:
- 索引性能:用户指出帧采样率对性能至关重要。一位开发者提到,以每秒一帧的速度处理 12,000 个视频可能需要数天时间,强调了 SCM 可配置采样预设的重要性。
- OCR 框架:部分用户建议,对于 macOS 专用应用,使用苹果原生 Vision 框架比 Tesseract 更具性能和准确性优势。
- 替代工具:Immich 被提及为一个跨平台替代方案,提供类似的 AI 驱动的照片和视频搜索功能。
- 资源消耗:有用户询问处理大型媒体库(例如 12,000 个视频)所需的时间和计算成本,SCM 通过后台重新嵌入流程和缓存的镜头计划来应对这一问题。
"既然这是为 macOS 设计的,你真的应该使用苹果的 Vision 框架来做 OCR。它在速度和准确性上都远超 Tesseract。"
安装与要求
SCM 需要 macOS 12+ 和 Bun 包管理器。可通过 Homebrew 使用以下命令安装:
brew tap allenv0/scm
brew trust allenv0/scm
brew install --cask allenv0/scm/scm
Sources
相关
- 项目
- 项目
- 项目
- Dispatch
- Dispatch