跳到正文
Hacker News· cgranier·· 8 天前AI 评分62

Glimpse:在 Windows 上按文字或外观查找任意截图

Show HN: Glimpse – Find any screenshot on Windows by its text or how it looks

AI 导读

作者发布 Windows 本地截图检索工具 Glimpse,按 Win+Alt+S 后输入记得的字母即可定位截图,也可用 network diagram 这类描述按外观搜索。

正文 · AI 翻译

Glimpse logo

通过截图中的文字——或它的外观——找到任意截图。
按 Win+Alt+S,输入你记得见过的几个字母,它就在那里。

Latest release Downloads Build MIT license
Windows 10 and 11 .NET 9 WinUI 3 100% local

Glimpse searching for "glimpse in:glimpse": a grid of matching screenshots, the selected one previewed with every occurrence of the word Glimpse outlined

你截下了那条错误信息、那张网络图、那张收据。你记得里面有什么,而不是它叫什么或什么时候截的。Glimpse 会读取你文件夹中的每一张图片,所以你只需输入你记得的内容:"moca"、"invoice 2024"、"in:notes network"。或者描述它——"network diagram"、"dark dashboard"——它就能找到看起来像那样的图片,即使没有匹配的文字。

  • 图片中的文字:每张截图、照片和图表都用 Windows 内置的 OCR 读取;任意 3 个字母的片段都能匹配,匹配到的词会在预览中高亮标出
  • 按外观搜索:在你的 GPU(或 CPU)上运行的 CLIP 模型能理解图片展示的内容; Ctrl+M 可找到与所选图片相似的图片
  • 取走你找到的内容:Ctrl+C 复制图片,Ctrl+Shift+T 复制其中的文字
  • 随时待命:驻留在托盘中,新截图一出现就建立索引,并可接入 PowerToys Command Palette
  • 私密:不上传任何内容,无需账户,无遥测

数据一览

在一台笔记本电脑(Core i9-10980HK、RTX 2080 Super Max-Q)上测得,已索引 10,038 张图片 (截图、笔记附件、下载):

文字搜索 中位数 1.8 ms
按外观搜索(视觉) 中位数 21 ms——其中大部分是用 CLIP 编码你的查询
文字 + 视觉一起(默认) 中位数 27 ms
"更多类似内容" 中位数 1.9 ms,覆盖约 1 万张图片
从图片中读取文字 约 64 张图片/秒(9,284 张用时 2 分 25 秒,8 个工作线程)
视觉索引 GPU 上约 95 张图片/秒(9,246 张用时 1 分 37 秒)
索引大小 每张图片约 10 KB(1 万张图片为 99 MB,含文字 + 词框 + 视觉向量)
内存 加载视觉搜索后驻留托盘时约 250 MB
下载 92 MB,无需安装其他任何东西

搜索耗时是引擎在热索引下的表现;运行 glimpse-cli bench 来测量你自己的机器。

试一试

从 Releases 下载 Glimpse-<version>-win-x64.zip,解压后双击 Install.cmd。测试版尚未代码签名,因此 Windows 可能会提示 "Windows 已保护你的电脑": 点击 更多信息 → 仍要运行。一个简短的欢迎界面会让你选择文件夹,并(可选)下载 视觉搜索模型;然后按 Win+Alt+S。

  • 仅为你当前用户安装(%LOCALAPPDATA%\Programs\Glimpse),无需管理员权限,无需安装 .NET
  • Windows 10 1809+ / Windows 11,x64;DirectX 12 GPU 可加速视觉搜索,但并非必需
  • 从设置 → 应用 → 已安装的应用卸载(是否保留索引由你决定)
  • 任何内容都不会离开你的电脑;唯一的网络访问是可选的视觉模型下载
  • 可选:Glimpse-CmdPal-<version>-win-x64.zip 将 Glimpse 添加到 PowerToys Command Palette(需要开发者模式)

工作原理

OCR 是 Windows 内置的引擎(Windows.Media.Ocr)。索引是 SQLite:一个使用 trigram 分词器的 FTS5 表(因此任意 3 个及以上字符的片段都能匹配词中任意位置),加上 CLIP ViT-B/16 图像 嵌入,在内存中用 SIMD 进行比较。结果先合并精确文字命中,然后松散文字和视觉 匹配交错排列(倒数排名融合)。灵感来自 Linux 上的 gyotaku。

src/Glimpse.Core   OCR, SQLite index, incremental indexer, folder watcher
src/Glimpse.Cli    `glimpse-cli` command: index / embed / model / search / ocr / stats / sources
src/Glimpse.App    WinUI 3 search window (unpackaged, Mica, global hotkey, tray, pipe server)
src/Glimpse.CmdPal PowerToys Command Palette extension (MSIX, talks to the app over a named pipe)

从源码安装

pwsh scripts/install.ps1                # Release build → %LOCALAPPDATA%\Programs\Glimpse, start with Windows, launch in tray
pwsh scripts/install.ps1 -NoAutoStart   # same, without the login entry

重新运行以更新。Glimpse 驻留在托盘中:左键单击切换窗口,右键单击显示 立即重建索引 / 设置 / 退出。X 按钮隐藏到托盘。 再次启动它只会调出正在运行的副本。Windows 11 将新的托盘图标放在 ^ 溢出区域中; 将其拖到任务栏上以保持可见。

开发

dotnet build src/Glimpse.App
src/Glimpse.App/bin/x64/Debug/net9.0-windows10.0.19041.0/win-x64/Glimpse.exe           # window
src/Glimpse.App/bin/x64/Debug/net9.0-windows10.0.19041.0/win-x64/Glimpse.exe --hidden  # background, hotkey only

dotnet run --project src/Glimpse.Cli -- index           # all sources
dotnet run --project src/Glimpse.Cli -- search moca

应用在启动时建立索引(仅新建/更改的文件),然后监视这些文件夹。

视觉搜索

除了 OCR 文本外,每张图像都使用 CLIP ViT-B/16(ONNX,通过 DirectML 在 GPU 上运行,CPU 回退)进行嵌入,因此你可以根据图像的外观进行搜索:“网络图”、“条形图”、“深色仪表板”。在 RTX 2080 上处理 9k 张图像大约需要 1.5 分钟。

结果是混合的:精确文本匹配(单词查询,或按输入顺序的单词组合)排在最前面,然后是 松散文本匹配和视觉匹配交错排列(倒数排名融合)。视觉匹配带有 “≈ 看起来像”徽章。视觉切换(Ctrl+T)或 ~ 前缀 = 仅视觉。Ctrl+M = 更像 选中的图像。

该模型是一次性约 392 MB 的下载(设置 → 视觉搜索 → 下载,或 glimpse-cli model) 到 %LOCALAPPDATA%\Glimpse\models\clip-vit-b16,支持可恢复、大小检查的文件。没有它,视觉 搜索就关闭了。应用在每次 OCR 处理后嵌入新图像;从 CLI 运行 glimpse-cli embed。

命令面板

src/Glimpse.CmdPal 是一个 PowerToys 命令面板 扩展:在面板中(Win+Alt+Space)输入 Glimpse,即可获得带有详细信息窗格的实时缩略图网格。 Enter 打开,Ctrl+Enter 复制图像,Ctrl+Shift+T 复制其文本,Ctrl+K 用于复制路径 / 在文件夹中显示 / 更多类似项 / 在 Glimpse 中打开。筛选器下拉菜单可切换到仅视觉。在面板主页输入 3 个以上字符 还会在回退项下提供 搜索图像“…”。

pwsh scripts/install-cmdpal.ps1              # build + register (needs Developer Mode, no signing)
pwsh scripts/install-cmdpal.ps1 -Uninstall

提示:在命令面板 → 设置 → 扩展 → Glimpse 中为其设置别名(例如 ss),然后 ss moca 直接跳转到结果。(每个命令都有一个稳定的 ID,因此别名和固定项在更新后仍然有效。)

如何协同工作:该扩展是一个 MSIX 打包的 COM 服务器(这就是面板加载 扩展的方式)。它本身不打开索引;它通过每用户命名 管道(Glimpse.Core/Ipc/GlimpseIpc.cs,编译到两者中)询问正在运行的 Glimpse 应用。应用从其热搜索引擎 回答,并包含 256px 缩略图作为字节,因为打包应用获得 AppData 的虚拟化视图, 无法按路径读取缩略图缓存。

搜索语法

查询 含义
moca network 两个片段都出现(文本或文件名),加上视觉匹配
~network diagram 仅视觉(与视觉切换相同)
like:1234 看起来像图像 1234 的图像(Ctrl+M)
"network map" 精确短语
in:notes 源名称前缀(in:screen = 两个截图文件夹)
after:2026-05 修改于/之后(也 2026 或 2026-05-14)
before:2026-06-15 修改于之前

按键

Win+Alt+S 切换 · Enter 打开 · Ctrl+C 复制图像 · Ctrl+Shift+T 复制文本 · Ctrl+Shift+C 复制路径 · Ctrl+E 在文件夹中显示 · Ctrl+T 仅视觉 · Ctrl+M 更多类似项 · Ctrl+, 设置 · Esc 清除 / 隐藏 · Ctrl+Q 退出

设置

托盘 → 设置,搜索栏中的齿轮,或 Ctrl+,。更改立即生效,无需重启:

  • 键盘快捷键:修饰键 + 键,实时检查 Windows 和其他应用已使用的组合
  • 随 Windows 启动
  • 文件夹:添加(文件夹选择器)、移除、重命名(名称是 in: 匹配的内容)、包含子文件夹。 移除或重命名文件夹会将其图像从索引中移除;文件永远不会被修改
  • 视觉搜索:开/关,模型下载/删除并显示进度,GPU 开/关
  • 索引:OneDrive 仅在线文件、并行工作线程、索引统计、立即重新索引、重建、缩略图缓存大小 + 清除
  • 关于:版本、数据文件夹、日志

首次运行默认使用 Windows 的 屏幕截图 和 下载 已知文件夹(跟随 OneDrive 备份或重定位)。所有内容都存储在 %LOCALAPPDATA%\Glimpse(config.json、index.db、models\、thumbs\、glimpse.log)。

发布

pwsh packaging/build-release.ps1 -Version 0.5.0   # local: artifacts\*.zip + SHA256SUMS.txt
git tag v0.5.0; git push origin v0.5.0            # CI: builds the same zips and publishes a GitHub release

带后缀(v0.6.0-beta.1)的标签会作为预发布版本发布。Actions → Release → Run workflow 会将 zip 构建为工件而不发布。发布说明从 packaging/release-notes.md 开始。

许可证

MIT,参见 LICENSE。捆绑组件及其许可证:THIRD-PARTY-NOTICES.md。

路线图

  • 视觉搜索(通过 ONNX 的 CLIP 嵌入)——“网络图”、“深色仪表盘”
  • 托盘图标 + 随 Windows 启动
  • 命令面板扩展(ss moca)
  • 设置页面(文件夹、热键、视觉模型下载、索引)
  • 复制文本(Ctrl+Shift+T,也可在命令面板中使用)
  • GitHub 发布:自包含 zip、每用户安装程序/卸载程序
  • 代码签名(SmartScreen)、用于命令面板扩展的已签名 MSIX、自动更新
  • 首次运行欢迎:选择文件夹、提供视觉模型、显示快捷键
  • 仅剪贴板截图(Win+Shift+S 不自动保存)
  • OCR + 嵌入多个 GIF 帧,而不仅仅是第一帧

来源:Hacker News · github.com