dowse

io.github.ltspace由 GitHub 帳號 ltspace 發布v0.10.0更新於 Oct 24, 2026

Fast local full-text search for Windows files (tantivy + jieba), exposed to AI agents over MCP.

已驗證STDIO僅桌面檔案與儲存知識與記憶

概覽

AI 產生的概覽

僅限 Windows 的本機全文搜尋伺服器,讓 AI 助理透過 stdio 檢索本機已建立索引的檔案、預覽命中結果並讀取文字片段。

可以做什麼
依查詢檢索本機索引,支援 limit/offset、依相關度、修改時間或大小排序、副檔名篩選與命中總數。預覽單筆命中結果,回傳較長上下文與中繼資料。從已索引快照中分頁讀取有長度限制的文字片段。查看索引狀態:文件數量、索引健康狀況與目前索引規則。
適用情境
當需要助理在 Windows 電腦上已建立索引的檔案中尋找並引用內容時使用,例如文件、原始碼、PDF、Office 檔案或截圖中的文字,且不需上傳到外部。
執行需求
僅限 Windows 桌面;以本機程序透過 stdio 執行,用 dowse mcp 指令啟動。需要 dowse CLI(Rust/cargo 套件)以及事先用 dowse index 指令建立的在本機索引。未宣告驗證、環境變數或請求標頭。
安裝前請注意
伺服器為唯讀,不會開啟任意路徑,但會把已索引檔案的內容提供給所連線的助理。索引存放在本機 %LOCALAPPDATA% 下,專案聲明無網路存取、無遙測。Windows 安裝程式未簽章,首次執行會被 SmartScreen 攔截提示。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 dowse,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

English | 简体中文 | 日本語 | 한국어 | Español | Italiano

[dowse logo]

dowse

Open-source local file content search for Windows. Find file names, PDF and Office contents, source code, and text inside screenshots — one hotkey away.

Website · English product page · Windows file-content search guide(中文)

[License] [Latest release] [CI status] [GitHub stars] [Platform: Windows] [Rust edition 2024] [Downloads] [Glama MCP server score]

The name comes from a dowsing rod.

[Dowse searching the fictional Northstar workspace, with ranked project files on the left and a live brief preview on the right]

Motivation

No Windows tool satisfies all three of the following at once:

  • Keep a persistent index of file contents, not just file names (Everything can scan contents on demand, but its instant index is centered on names and paths)
  • Recognize and index text inside images on ordinary Windows PCs without requiring a Copilot+ device
  • One hotkey to summon, full keyboard operation, no perceptible latency

The closest open-source implementation is sist2, but it targets Linux (on Windows it only runs via Docker), treats Chinese text as trigrams, and the project is no longer maintained. dowse is a Windows-native implementation built around these three points.

Features

🔍 File name searchInstant, as you type
📄 Document content searchPlain text, Markdown, code, and document formats (PDF, Word, Excel, PowerPoint)
🖼️ Screenshot / image OCRText inside PNG/JPG/WebP/BMP images, fully offline (Windows.Media.Ocr)
🈶 Chinese word segmentationjieba + BM25 ranking, not trigrams — plus automatic GBK encoding detection
⚡ Incremental indexingFile-watch during runtime, mtime/size reconciliation at startup
🤖 MCP serverExposes local search to AI agents over stdio
🚀 NTFS fast pathMFT enumeration + USN Journal, admin-only, falls back transparently otherwise

dowse vs. the alternatives

dowseEverythingWindows Searchsist2
File name search✓✓✓✓
Document content search✓ (persistent index)on-demand scandepends on indexed locations and filters✓
Screenshot / image OCR✓✗device/version dependentlimited (optional Tesseract)
Proper Chinese segmentation✓ (jieba)—limited✗ (trigrams)
Fully local, no network✓✓✓✓
Global hotkey overlay✓✓✓ (Win key)✗ (web UI)
Windows-native✓✓✓✗ (Linux-first, Docker on Windows)

Chinese text handling

  • Word segmentation via jieba, ranking via BM25 (tantivy engine). No trigrams.
  • Automatic file encoding detection (chardetng). GBK-encoded files are decoded correctly before indexing — this matters because a large share of Chinese-language documents on Windows, especially older ones, are still saved in GBK rather than UTF-8, and a search tool that assumes UTF-8 will silently mis-index or garble them.
  • Multi-term queries default to AND semantics. Quoted phrase queries match on exact position. Inline operators narrow things down further: path:reports, mtime:>2026-01-01, size:>10mb, uppercase OR between groups, -term to exclude.
  • OCR runs on the Windows-native engine (Windows.Media.Ocr), fully offline. The zh-Hans language pack also covers mixed Chinese/English text, no extra configuration required.

Performance

Design targets; exceeding them is treated as a defect. "Measured" is a from-scratch benchmark of dowse 0.7.0 (i7-13700K / 24 logical cores / 64GB RAM, single machine, single session, 2026-07-12), reusing the byte-identical corpus from the v0.6.1 round-3 benchmark for direct comparability. Full raw output (index/search logs, JSON result files) is kept with the benchmark working directory, outside this repo.

MetricDesign targetMeasured (v0.7.0, 2026-07-12)
Hotkey to window visible< 50msnot measured — CLI-only benchmark, no overlay-app instrumentation
Keystroke to results rendered< 80msnot measured — same
OCR, single image~112ms / 1080p screenshot~170ms isolated (480×200 synthetic image), unchanged from v0.6.1 — the OCR pipeline was not modified this release. Sub-30ms readings on immediate repeat runs of the same image reflect OS-level recognition caching, not real recognition, and are excluded here. Not real 1080p screenshots
Resident memory< 150MB idlenot measured (idle); peak working set during full-corpus indexing was ~327MB — a different metric, not a regression against the idle target
Installer size< 50MB (revised 2026-07 — the original 15MB target predates the bundled CLI sidecar)14.98MB (dowse-app_0.9.0_x64-setup.exe, published release)
Full-text index build, 10,000 files / 437MBseconds (planned filename-only fast path)10.0–10.6s — current full-content dowse index, not the planned filename-only MFT path
Full-text index build + OCR, 15,100 files (incl. 5,100 images)—~46.6s first pass, all 5,100/5,100 images OCR'd in that same pass — no pending, no second pass needed
Search latency, P50 (5 required categories)—30.7–161.1ms across single word / Chinese phrase / English phrase / multi-word AND / zero-result, on a 15,100-document index
Search latency, P95—39.1–172.3ms, same 5 categories
ext: filter query latency—P50 155.6ms, same band as the non-zero-result query categories
Index size ÷ corpus size—0.36 (text-only), down from 0.54 in the v0.6.1 round

Full-corpus rows measured on the same 10,000-file / 437.66MB text corpus plus 5,100 synthetic 480×200 OCR images (89.8MB) used for the v0.6.1 round-3 numbers above — byte-identical, reused directly rather than regenerated. Indexing is roughly 2x faster and the on-disk text index roughly a third smaller than v0.6.1; both track the new tokenizer (lowercase normalization, alphanumeric-boundary splitting of Latin words) producing a leaner term dictionary. The zero-result query dropped from 135ms (v0.6.1) to a startup-noise-level 31ms, consistent with less index to scan before concluding a term is absent. OCR recognition speed is unchanged this release, since the pipeline was not touched: single-image recognition stays around 170ms, and the sub-30ms readings on repeated identical images are OS-level caching artifacts, not real recognition. The full-corpus text-plus-OCR pass got faster (83s to 46.6s) from the quicker tokenizer and write path, not from faster recognition.

Quick start

Download — grab the installer from the latest release (dowse-app_*_x64-setup.exe), run it, then `Alt+`` to summon.

The installer is unsigned, so Windows SmartScreen will flag it on first run. To proceed, click More info and then Run anyway. A code-signing certificate is a recurring cost that is hard to justify for an independent project; it may be reconsidered for a future release.

Install the CLI — the library and command-line tool ship as one dowse package:

powershell
cargo install dowse                 # once published to crates.iocargo install --path crates/dowse   # from a local checkout

Build from source:

powershell
git clone https://github.com/ltspace/dowse && cd dowse
# CLIcargo run -p dowse -- index D:\docs      # build the indexcargo run -p dowse -- search 限流         # searchcargo run -p dowse -- search "精确短语"   # phrase querycargo run -p dowse -- add E:\projects     # add another root incrementally (no full rebuild)cargo run -p dowse -- rules show          # view index rules (excluded dirs, extra extensions, size cap)
# Overlay app (Tauri 2 + Svelte 5)cd crates/dowse-appnpm installcargo tauri build      # produces the installer under target/release/bundle

Overlay app: Alt+\`` to summon, ↑↓to select,Enterto open,Ctrl+Enterto reveal in Explorer,Ctrl+Cto copy path,Escto hide. Results are paginated in groups of 50; the compact‹ 1 / N ›control shows only when needed, and pressing↓past the last result or↑ before the first moves between pages. Two nearly invisible dropdowns sit at the right of the search bar — file type filter (Ctrl+P) and sort order (Ctrl+S, relevance / newest / oldest / largest); both stay faint until you select a non-default value. Right-click a result row for a native Explorer-style context menu (open / reveal in folder / copy path / copy name). A pin toggle at the top-right keeps the window open when it loses focus (session-only, resets on restart). With an empty input, the overlay lists your recent searches (last 10, stored locally) — ↑↓/Enterto reuse one,Deleteto remove it.Ctrl+,` opens the settings panel — general (hotkey rebinding, autostart, interface language) and index rules (excluded directories, extra text extensions, per-file size cap).

[Dowse settings panel in English, with controls for the global shortcut, startup behavior, and interface language]

[Preview pane for an image result: the source image rendered inline next to its OCR-extracted text with the matched terms highlighted]

MCP server

dowse mcp starts a read-only MCP server over stdio, exposing the local index to AI agents:

claude mcp add --scope user dowse -- dowse mcp

Four tools: search (query, bounded limit / offset, sort by relevance / mtime / size, comma-separated ext filter, and a total_hits count), preview (long context + metadata for one hit), read_file_chunk (bounded, paginated text from the indexed snapshot), and index_status (document count, index health, active index rules). The server never touches the index writer or opens arbitrary paths — it only reloads the reader before each call, so it can run alongside the overlay app or a live dowse watch session without write contention.

Architecture

                 ┌─────────────────────────────────────────┐                 │                   dowse                   │                 │  library core: tantivy index · jieba      │                 │  segmentation · encoding detection ·      │                 │  text extraction (txt/md/pdf/code/        │                 │  docx/xlsx/pptx) · OCR pipeline           │                 │  ─────────────────────────────────────    │                 │  CLI + MCP server (default `cli` feature) │                 └────────────────────┬────────────────────┘                                      │ library API                                      │ (default-features = false)                              ┌───────┴────────┐                              │    dowse-app    │                              └────────────────┘

Two crates. dowse is both the search library and the command-line tool: the library core exposes the search API, and the CLI plus the read-only MCP server ride behind the default cli feature in a single binary — the CLI for scripting and debugging, the MCP server for AI agents. dowse-app, a Tauri 2 + Svelte 5 resident overlay, is a separate crate that depends on dowse as a library only (default-features = false, so it pulls in neither the CLI nor its dependencies).

Index updates run on a two-tier scheme: while running, file system events drive incremental updates (500ms debounce window, batched commits); at startup, an mtime/size comparison reconciles changes made while the app was not running. On NTFS volumes with admin rights, the same two tiers are served by MFT enumeration and the USN Journal instead of directory walks and file-system-event watching; both paths produce identical results and the upper layers cannot tell which one is active.

Roadmap

#ScopeStatus
1CLI indexing and search: Chinese segmentation, GBK detection, highlighting✅ Done
2Overlay: global hotkey, opaque panel, keyboard navigation✅ Done
3Incremental indexing: file watching, startup reconciliation✅ Done
4OCR pipeline: screenshot text into the index✅ Done
5MCP server✅ Done
6NTFS MFT / USN Journal fast path✅ Done (the admin-only fast path itself is not yet verified on real hardware — see the design doc's implementation notes)
7Semantic search (embeddings, hybrid ranking)🔍 Exploring

Stack

Rust · tantivy · jieba · Tauri 2 · Svelte 5 · Windows.Media.Ocr · notify · Win32 (MFT/USN Journal)

Design docs

Privacy Policy

The index is stored locally (%LOCALAPPDATA%\dowse). No network access, no telemetry. You can verify this yourself: watch the process in Resource Monitor or a firewall tool and confirm it opens no outbound connections. Releases also include a SHA-256 checksum for the installer so you can verify the download.

Full policy — data collection, storage, retention, and contact: PRIVACY.md.

License

Dual-licensed under MIT or Apache-2.0, at your option.

A note

As a kid I had a single Coolpad phone. In the long stretches without internet, I would open the file manager and study the files one by one, trying to figure out what they were and how they fit together, forever lost among files scattered everywhere with no idea what any of them held.

In college I bought a QNAP NAS and discovered Qsirch, a genuinely good thing, except it lived only on the NAS and had no Windows version.

screenpipe got there first, a kind of primitive version of the memory grain from Black Mirror S1E3, The Entire History of You. Very future, very post-modern, close to the ultimate form of local search, but far too heavy for the world as it is now.

So I made dowse.

The film Her reads like a prophecy: before long, AI will run our personal computers. dowse takes its cue from that and exposes an MCP interface for AI to call, except what it searches is your own files, on your own machine.

If you are a little obsessive, if you like keeping things in order, if you want real control over your own file system, this is for you. Performance and beauty are things I cared about just as much.

來源:README.md,提交 2449f90

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.10.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分