
半年前开始做的本地媒体搜索工具 Vixel 更新到 v0.4.1 了,继续完全离线、免费开源( MIT )。
它做的事:把你现有的文件夹(照片、视频、音频、SVG/PSD/PDF/AI 设计文件)原地只读索引, 然后用一句话去找——「海边的日落」「火箭发射」「等一列车」。视频按 32 秒切段,画面和声音 一起编码,搜到直接跳到命中的那一段;截图、票据、视频画面里出现过的字也能搜( PaddleOCR v5 + 结巴分词,中文很稳)。
0.4.1 的主要变化:
- 全局快速搜索:任何应用里按 ⇧⌘Space ( Windows:Alt+Shift+Space )呼出一个 Spotlight 式面板, ↩ 打开直接跳到命中片段,Space 快速查看,⌘C 把文件本身拷进剪贴板(不是路径文字), 结果还能直接拖进剪辑软件的时间轴。
- 笔记本更省电:接电池 / 低电量模式 / 机器过热时,大批量的回填索引自动等待(新文件照常即时索引), 状态栏会写清楚在等什么。
- 爬虫更懂分寸:永远不读密钥 / 凭证类文件;跳过 node_modules 、应用包、照片图库包; 识别并跳过机器生成的数据集目录( frame_000042 那种,相机命名 IMG_1234 不受影响); iCloud / OneDrive 的云端占位文件不会被触发下载。
- 搜索质量:整词命中(文件名 / 图中文字 / 标签)优先;同一视频几段都像时选更早的那段;
"火车的视频"这类带媒体类型词的查询不再被稀释。公开评测集上 demo 库 top-1 1.00 、
素材库 0.94 (评测脚本在仓库
evals/,npm run eval可复现)。 - 修了 Windows 退出残留进程、Ctrl+C 拷贝文件在资源管理器里粘不出来、快速搜索抢输入法按键三个麻烦事。
隐私这块还是老规矩:模型( EmbeddingGemma 2 ,经 LiteRT-LM 跑 GPU )全部打包在安装包里,
装好断网就能用;没有账号、没有遥测,渲染进程的网络请求在代码里被整体拦截。
不想信口说,可以断网用,或者看源码里的 enforceOfflinePolicy。
安装包约 600 MB (模型内置的代价),macOS ( Apple Silicon )和 Windows ( x64 )。 暂时没买签名证书:macOS 第一次打开要在 系统设置 → 隐私与安全性 里点「仍要打开」, Windows 在 SmartScreen 里点「更多信息 → 仍要运行」。介意的话可以从源码自己编译。
演示 GIF 是公有领域素材库录的( Immich test-assets + 公有领域影像),没有私人照片。 欢迎试用、欢迎挑刺,搜不准的例子对我最有价值。