找回密码
立即注册
搜索
发回帖 发新帖

6783

积分

0

好友

859

主题
发表于 10 小时前 | 查看: 1| 回复: 0

项目简介

你不记得文件名,但你记得文件里有什么内容。

  • 关于数据库索引的 PDF,保存成了 notes-final-2.pdf。
  • 部署失败的那一行日志,藏在某个日志文件夹里。
  • 截了一张带 CUDA 错误的截图,文件名完全没意义。

输入你记得的内容。Kensaku 会同时搜索文件名、文件内文本和语义含义,并高亮匹配的词。按 Enter 即可打开。

Kensaku 本地文件搜索工具界面截图,显示最近文件列表与索引进度

其他工具做不到的事

文件名搜索工具到处都有。但本地、即时、免费地读取文件内部内容的,却不多。

对比项 Kensaku Everything Listary PowerToys Run
文件名搜索(毫秒级) ✅ ✅ ✅ ✅
PDF/DOCX/EPUB 等全文搜索 ✅ ❌ ❌ ❌
截图与图片内文字(OCR) ✅ ❌ ❌ ❌
多语言与中日韩文本(自动分词) ✅ ❌ ❌ ❌
按语义搜索(“关于索引的 PDF”) ✅ ❌ ❌ ❌
自然语言时间(“上周的截图”) ✅ ❌ 部分支持 ❌
AI 代理可通过 MCP 搜索 ✅ ❌ ❌ ❌
启动器行为(呼出、输入、Enter) ✅ ❌ ✅ ✅
开源(MIT) ✅ ❌ ❌ ✅

Spotlight 和 Raycast 很优秀,但仅限 macOS;Alfred 的内容搜索和 AI 功能是付费层级。Kensaku 是一个应用、三个平台、免费且 MIT 许可。

第一天就值得试试的三件事:

  1. 截图考古。 你记得在某张截图里见过那个错误。Kensaku 已经读取了像素——直接搜索错误文本即可。
  2. 描述,而不是回忆。 “上个月的大视频”是有效查询。无需点击过滤器。
  3. 给你的 AI 代理一双眼睛。 Claude 或 Cursor 可以通过 MCP 搜索同一个本地索引——只读、本地、无云。

功能特性

快速

  • 在暖缓存下,约 10 万个文件的文件名搜索可在毫秒内完成。具体方法、硬件和各平台数据见性能表现。
  • 输入时实时更新结果。没有单独的搜索页面。
  • 增量索引:变更的文件会被自动拾取,无需全盘重新扫描。
  • 关闭窗口后索引仍保持热状态,重新打开几乎即时。

找得更多

  • 文件名、全文、容忍拼写错误的模糊匹配以及语义,一次搜索搞定。
  • 文档与办公文件:PDF、DOCX、PPTX、XLSX、EPUB、ODT/ODS/ODP、RTF、CSV/TSV、邮件(.eml、.msg)以及纯文本。
  • 默认支持多语言与中日韩:针对中文(汉字/注音)、日文(汉字/假名)、韩文(谚文)的自定义一元 + 二元分词器,以及混合脚本边界处理。详细说明见 docs/LANGUAGES.md。
  • 50+ 代码与数据格式:Rust、Python、TypeScript、Go、C/C++、Java、Shell、SQL、JSON、YAML、TOML、Dockerfile 等。
  • 图片与 OCR:默认使用 PP-OCRv6(内置运行时;约 6.1 MB 模型包只需下载一次)。更高质量的 Indra 引擎(去倾斜、多脚本拉丁/中日韩/RTL/世界识别,约 27 MB 包)以及经典 Tesseract 可在设置中选择。
  • 可调内容深度:默认每文件最高 100 MB、提取 4 MB 文本、48 个语义块;提供 quick / balanced / deep 预设。

精准

  • 过滤与排序:最佳匹配、最新、最旧、最大、名称。
  • 时间穿越:“上周二”、“3 天前”、“上周”、“今天”、“昨天”。
  • 需要时可使用查询语言(见下文)。

真正的启动器

  • 从托盘启动,可通过快捷键呼出。最近打开的文件按实际使用频率排序,并跨重启持久保存。
  • 也可切换到桌面应用模式:普通任务栏窗口。启动器是默认设置,桌面应用可在安装或设置中一键切换。
  • 空格预览(Quick Look)支持 PDF、图片和文本。网格或列表布局。完整键盘导航。Cmd/Ctrl+Shift+L 切换布局。

与 AI 代理协作

  • 兼容的代理可通过 MCP 搜索同一本地索引。默认只读。详见连接 AI 代理。
  • 还支持:find_symbol(tree-sitter 定义)、有界正则搜索、作用域根目录以及游标分页。

查询语言

用于脚本和精确搜索:

type:pdf invoice          ext:md in:"~/Notes"       modified:7d
size:>10mb                path:"client/2026"        lang:rust
name:resume               content:"timeout"         re:"fn \w+_test"
-draft                    mode:exhaustive

完整参考:docs/USAGE.md · 语言与格式支持:docs/LANGUAGES.md。

安装

从最新发布下载对应系统的安装包。

平台 下载
Windows(Intel/AMD) kensaku_<version>_x64-setup.exe 或 kensaku_<version>_x64_en-US.msi
Windows(ARM,Snapdragon) kensaku_<version>_arm64-setup.exe 或 kensaku_<version>_arm64_en-US.msi
Windows 便携版 kensaku-portable-<version>-x64.zip(或 -arm64.zip)
macOS(Apple Silicon 与 Intel) kensaku_<version>_universal.dmg
Linux kensaku_<version>_amd64.AppImage、.deb 或 .rpm
Agent CLI kensaku-cli-{linux,macos,windows}-*

每个发布都附带 SHA256SUMS,可用于验证下载内容。1.0.16 Windows x64 的 NSIS 安装包约 14.3 MB,MSI 约 20.1 MB;安装后的应用二进制约 36 MB。

目前构建尚未代码签名,因此 macOS 和 Windows 首次打开时会显示警告。这是独立应用的正常现象,并非问题。

  • Windows: 在 SmartScreen 提示中点击更多信息 → 仍要运行。
  • macOS: 打开应用后,前往系统设置 → 隐私与安全性,点击仍要打开。

完整步骤见 docs/INSTALL.md。

首次运行: 选择要索引的文件夹、排除项、启动器或桌面模式,并可选择下载 OCR 或模型包。首次扫描进行时即可开始搜索。关闭窗口后 Kensaku 会在托盘中继续运行;从托盘退出。

命令行: 每个发布都附带 kensaku-cli。

kensaku-cli search "docker error"
kensaku-cli search "invoice" --ext pdf --since 30d
kensaku-cli search "resume" --json
kensaku-cli state
kensaku-cli mcp
kensaku-cli serve --port 8765

从源码构建

git clone https://github.com/yjid/kensaku
cd kensaku
bun install
bun run tauri build

需要 Rust(stable)、Bun 1.1 或更高版本,以及对应平台的 webview 库。详见 docs/INSTALL.md。Makefile 覆盖常见任务:make dev、make build、make test、make reset。

连接 AI 代理(MCP)

要让 AI 代理接入,只需把 MCP 客户端指向 CLI:

{
  "mcpServers": {
    "kensaku": {
      "command": "kensaku-cli",
      "args": [
        "mcp"
      ]
    }
  }
}

对于通过 HTTP 连接的客户端,运行 kensaku-cli serve。它仅监听本地回环,并需要存储在配置目录中的 bearer token。

响应大小有预算限制,文件内容作为数据返回,绝不会作为指令。完整指南:docs/AGENTS.md。

性能表现

速度是 Kensaku 的核心。以下所有数据均为实测;完整方法、语料、硬件和注意事项见 docs/BENCHMARKS.md。

项目 结果
文件名搜索,10 万文件(Windows 11,1.0.16,默认线程) 平均 18 ms(最佳 8.3 ms)
文件名搜索,10 万文件(Windows 11,4 线程) 平均 3.1 ms
文件名搜索,10 万文件(Linux 参考,暖缓存) 平均 1.3 ms(最佳 0.5 ms)
10 万文件的元数据 12.2 MB(每条目 128 B)
首次运行 10.1 万混合文件(早期 Linux 参考) 184 秒,峰值 183 MB
无变更时重新索引(同一语料) 0.56 秒

Windows 与 Linux 行是同一工作负载在不同机器上的结果,并非性能回退:Windows NTFS 元数据读取和杀毒软件使遍历慢得多,而 16 线程 rayon 池在 char-bloom 预过滤已使扫描很便宜的情况下增加了调度开销。同一 10 万语料下,4–8 线程平均 3–5 ms。Linux 数字是历史暖缓存参考。两者都不是跨平台“最快”声明。

同一文件夹类别,文件名搜索,每次冷进程(Linux 参考):

工具 “invoice” “deploy_error”
Kensaku(内存中,无启动) 平均 1.3 ms 平均 1.3 ms
plocate 34 ms 6 ms
fd 109 ms 98 ms

这两行并非完美对比:Kensaku 的搜索是模糊的,且运行在已启动的应用中,而 plocate 和 fd 每次搜索都启动新进程。Spotlight、Everything 和 Listary 尚未测量,这些数字来自 Linux,而非 macOS 或 Windows。

内存。 内存中元数据层每个 FileEntry 为 128 字节:100,201 条目共 12.2 MB。索引本身、Tantivy 以及可选的嵌入表是分开的。在 Windows 上,关闭窗口会销毁 webview 并保持 Rust 索引热状态,因此空闲占用是索引而非完整 UI。

索引是单次遍历:每个文件只读取一次,同时喂给文件名和文本索引。工作以有界批次排队,因此大文件夹上内存保持平坦。

项目地址

https://github.com/yjid/kensaku




上一篇:抹掉虚函数吞吐反而降了?C++ CRTP 动静态多态底层博弈
下一篇:Anthropic发布Fable 5.2:机器人控制涨2.35倍,降价20%但成本翻倍
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-13 17:19 , Processed in 0.068506 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表