dowse について
dowse は Windows 向けのオープンソースのローカル全文検索ツールで、ファイル名、文書本文、ソースコード、スクリーンショット内のテキストを索引化します。中国語の分かち書きに jieba を使用し、MCP サーバー経由で AI エージェントに読み取り専用の検索を提供します。
主な機能
- 01ファイル名と本文の永続的な索引
- 02PDF、Office、コードファイルの検索
- 03Windows.Media.Ocr によるオフライン画像 OCR
- 04jieba による分かち書きと GBK エンコーディング検出
- 05ファイル監視による増分索引
- 06検索とプレビューのツールを持つ読み取り専用 MCP サーバー
活用シーン
- 01中国語の語句によるローカル Windows 文書の検索
- 02スクリーンショット内の文字のオフライン検索
- 03AI エージェントによるローカル索引の検索とファイル抜粋の読み取り
MCP 対応
dowse は dowse mcp コマンドで stdio 上の読み取り専用 MCP サーバーを起動します。search、preview、read_file_chunk、index_status などのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
English | 简体中文 | 日本語 | 한국어 | Español | Italiano
dowse
Windows 向けのオープンソースのローカルファイル内容検索ツールです。ホットキーひとつで、ファイル名、PDF や Office ファイルの内容、ソースコード、スクリーンショット内のテキストを検索できます。
ウェブサイト · 英語の製品ページ · Windows のファイル内容検索ガイド(中国語)
名前はダウジングロッドに由来します。

開発の動機
Windows 向けのツールで、次の 3 つすべてを同時に満たすものはありません。
- ファイル名だけでなく、ファイルの内容も永続的にインデックスに保持すること(Everything はオンデマンドで内容をスキャンできますが、即時検索用のインデックスは主に名前とパスを対象としています)
- Copilot+ デバイスを必要とせず、一般的な Windows PC で画像内のテキストを認識してインデックス化すること
- ホットキーひとつで呼び出せ、すべてキーボードで操作でき、体感できる遅延がないこと
最も近いオープンソース実装は sist2 ですが、Linux 向けであり(Windows では Docker 経由でのみ動作します)、中国語テキストをトライグラムとして扱い、プロジェクトはすでにメンテナンスされていません。dowse は、この 3 点を中心に構築された Windows ネイティブの実装です。
機能
| 🔍 ファイル名検索 | 入力と同時に瞬時に検索 |
| 📄 ドキュメント内容検索 | プレーンテキスト、Markdown、コード、ドキュメント形式(PDF、Word、Excel、PowerPoint) |
| 🖼️ スクリーンショット/画像の OCR | PNG/JPG/WebP/BMP 画像内のテキストを完全オフラインで認識(Windows.Media.Ocr) |
| 🈶 中国語の単語分割 | トライグラムではなく jieba + BM25 ランキングを使用。GBK エンコーディングも自動検出 |
| ⚡ 差分インデックス作成 | 実行中はファイルを監視し、起動時に更新日時とサイズを照合 |
| 🤖 MCP サーバー | stdio 経由でローカル検索機能を AI エージェントに公開 |
| 🚀 NTFS 高速処理 | MFT 列挙 + USN ジャーナルを使用。管理者権限が必要で、利用できない場合は透過的にフォールバック |
dowse と代替ツールの比較
| dowse | Everything | Windows Search | sist2 | |
|---|---|---|---|---|
| ファイル名検索 | ✓ | ✓ | ✓ | ✓ |
| ドキュメントの内容検索 | ✓(永続インデックス) | オンデマンドスキャン | インデックス対象の場所とフィルターによる | ✓ |
| スクリーンショット/画像の OCR | ✓ | ✗ | デバイス/バージョンによる | 制限あり(オプションの Tesseract) |
| 適切な中国語の分かち書き | ✓(jieba) | — | 制限あり | ✗(トライグラム) |
| 完全ローカルでネットワーク不要 | ✓ | ✓ | ✓ | ✓ |
| グローバルホットキーのオーバーレイ | ✓ | ✓ | ✓(Win キー) | ✗(Web UI) |
| Windows ネイティブ | ✓ | ✓ | ✓ | ✗(Linux 優先、Windows では Docker) |
中国語テキストの処理
- jieba による分かち書きと、BM25(tantivy エンジン)によるランキングを使用します。トライグラムは使いません。
- ファイルのエンコーディングを自動検出します(chardetng)。GBK エンコードのファイルはインデックス作成前に正しくデコードされます。これは重要です。Windows 上の中国語ドキュメントの多く、特に古いものは、今でも UTF-8 ではなく GBK で保存されています。UTF-8 を前提とする検索ツールでは、気づかないうちにインデックスが不正になったり、文字化けしたりします。
- 複数語のクエリは、デフォルトで AND の意味になります。引用符で囲んだフレーズクエリは、正確な位置で一致します。インライン演算子を使うと、さらに絞り込めます。
path:reports、mtime:>2026-01-01、size:>10mb、グループ間の大文字のOR、除外する-termを使用できます。 - OCR は Windows ネイティブエンジン(Windows.Media.Ocr)で完全オフラインで実行されます。zh-Hans 言語パックは中国語と英語が混在するテキストにも対応しており、追加の設定は不要です。
パフォーマンス
設計目標です。これを超える場合は不具合として扱います。「測定値」は dowse 0.7.0 をゼロからベンチマークした結果です(i7-13700K/論理コア24個/RAM 64GB、単一マシン、単一セッション、2026-07-12)。直接比較できるよう、v0.6.1の第3ラウンドのベンチマークで使用したものとバイト単位で同一のコーパスを再利用しています。インデックス作成/検索ログやJSON結果ファイルを含む生データ一式は、リポジトリ外のベンチマーク作業ディレクトリに保管しています。
| 指標 | 設計目標 | 測定値(v0.7.0、2026-07-12) |
|---|---|---|
| ホットキーからウィンドウ表示まで | < 50ms | 未測定 — CLIのみのベンチマークで、オーバーレイアプリの計測なし |
| キーストロークから結果の描画まで | < 80ms | 未測定 — 同上 |
| OCR、画像1枚 | ~112ms/1080pのスクリーンショット | 単独測定で約170ms(480×200の合成画像)、v0.6.1から変更なし — 今回のリリースではOCRパイプラインを変更していません。同じ画像を直後に再実行した際の30ms未満の値は、実際の認識ではなくOSレベルの認識キャッシュを反映しているため、ここでは除外しています。実際の1080pスクリーンショットではありません |
| 常駐メモリ | アイドル時 < 150MB | 未測定(アイドル時)。コーパス全体のインデックス作成中のワーキングセットのピークは約327MB — 別の指標であり、アイドル時の目標に対する回帰ではありません |
| インストーラーのサイズ | < 50MB(2026-07改訂 — 当初の15MBという目標は、CLIサイドカーの同梱前に設定されたものです) | 14.98MB(dowse-app_0.9.0_x64-setup.exe、公開リリース) |
| 全文インデックスの作成、10,000ファイル/437MB | 数秒(予定しているファイル名のみの高速パス) | 10.0~10.6s — 現在の全文 dowse index。予定しているファイル名のみのMFTパスではありません |
| 全文インデックス作成+OCR、15,100ファイル(画像5,100枚を含む) | — | 初回の処理で約46.6s。5,100枚すべての画像を同じ処理でOCR済み — 保留分はなく、2回目の処理も不要 |
| 検索レイテンシ、P50(必須の5カテゴリ) | — | 15,100ドキュメントのインデックスで、単語1つ/中国語の語句/英語の語句/複数語のAND/結果なしの各検索で30.7~161.1ms |
| 検索レイテンシ、P95 | — | 同じ5カテゴリで39.1~172.3ms |
ext: フィルタークエリのレイテンシ | — | P50 155.6ms。結果が0件ではない検索カテゴリと同程度 |
| インデックスのサイズ ÷ コーパスのサイズ | — | 0.36(テキストのみ)。v0.6.1の第3ラウンドの0.54から減少 |
コーパス全体に関する行は、上記のv0.6.1第3ラウンドの数値に使用した10,000ファイル/437.66MBのテキストコーパスと、OCR用の合成画像5,100枚(89.8MB)を使って測定しています。これらはバイト単位で同一のデータで、再生成せずそのまま再利用しています。インデックス作成はv0.6.1より約2倍高速で、ディスク上のテキストインデックスは約3分の1のサイズになりました。どちらも、新しいトークナイザー(小文字化、ラテン文字の単語を英数字の境界で分割)によって用語辞書が軽量化された結果です。結果なしのクエリは135ms(v0.6.1)から起動時のノイズレベルである31msに短縮されており、検索語が存在しないと判定するまでに走査するインデックスが小さくなったことと一致しています。今回のリリースではOCRパイプラインに手を加えていないため、OCRの認識速度は変わりません。画像1枚の認識は約170msのままで、同じ画像を繰り返し処理した際の30ms未満の値は、実際の認識ではなくOSレベルのキャッシュによるものです。テキストとOCRを合わせたコーパス全体の処理が83sから46.6sに短縮したのは、トークナイザーと書き込み処理の高速化によるもので、認識自体が速くなったためではありません。
クイックスタート
ダウンロード — 最新リリースからインストーラー(dowse-app_*_x64-setup.exe)をダウンロードして実行し、`Alt+``を押すと呼び出せます。
インストーラーは署名されていないため、初回起動時にWindows SmartScreenの警告が表示されます。続行するには、詳細情報をクリックしてから実行をクリックしてください。コード署名証明書には継続的な費用がかかり、個人プロジェクトでは正当化が難しいため、今後のリリースで再検討する可能性があります。
CLIをインストール — ライブラリとコマンドラインツールは、1つのdowseパッケージとして提供されています。
cargo install dowse # once published to crates.io
cargo install --path crates/dowse # from a local checkout
ソースからビルド:
git clone https://github.com/ltspace/dowse && cd dowse
# CLI
cargo run -p dowse -- index D:\docs # build the index
cargo run -p dowse -- search 限流 # search
cargo run -p dowse -- search "精确短语" # phrase query
cargo 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-app
npm install
cargo tauri build # produces the installer under target/release/bundle
オーバーレイアプリ:Alt+\``で呼び出し、↑↓で選択、Enterで開く、Ctrl+Enterでエクスプローラーに表示、Ctrl+Cでパスをコピー、Escで非表示にできます。検索結果は50件ずつページ分けされます。必要な場合にのみコンパクトな‹ 1 / N ›コントロールが表示され、最後の検索結果より先へ↓を押すか、最初の検索結果より前へ↑を押すと、ページ間を移動します。検索バーの右側には、ほとんど見えないドロップダウンが2つあります。ファイルタイプのフィルター(Ctrl+P)と並べ替え順(Ctrl+S、関連度/新しい順/古い順/サイズ順)です。どちらもデフォルト以外の値を選択するまで薄く表示されます。検索結果の行を右クリックすると、エクスプローラーと同様のネイティブなコンテキストメニュー(開く/フォルダーに表示/パスをコピー/名前をコピー)が表示されます。右上のピン切り替えを有効にすると、フォーカスを失ってもウィンドウが開いたままになります(セッション中のみ有効で、再起動するとリセットされます)。入力欄が空の場合、オーバーレイには最近の検索(直近10件、ローカルに保存)が表示されます。↑↓/Enterで再利用し、Deleteで削除できます。Ctrl+,`で設定パネルを開きます。設定には一般(ホットキーの割り当て変更、自動起動、インターフェースの言語)とインデックスルール(除外するディレクトリ、追加のテキスト拡張子、ファイルごとのサイズ上限)があります。


MCP サーバー
dowse mcpは、標準入出力を介して読み取り専用のMCPサーバーを起動し、ローカルインデックスをAI エージェントに公開します。
claude mcp add --scope user dowse -- dowse mcp
4つのツールがあります。search(クエリ、上限付きのlimit/offset、関連度/更新日時/サイズによるsort、カンマ区切りのextフィルター、total_hits件数)、preview(1件の検索結果の詳細なコンテキストとメタデータ)、read_file_chunk(インデックス化されたスナップショットからの、上限付きページ分けテキスト)、index_status(ドキュメント数、インデックスの健全性、有効なインデックスルール)。サーバーはインデックスの書き込み処理には一切触れず、任意のパスを開くこともありません。各呼び出しの前にリーダーを再読み込みするだけなので、オーバーレイアプリや稼働中のdowse watchセッションと並行しても、書き込みの競合は発生しません。
アーキテクチャ
┌─────────────────────────────────────────┐
│ 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 │
└────────────────┘
クレートは2つです。dowseは検索ライブラリとコマンドラインツールを兼ねています。ライブラリのコアは検索APIを提供し、CLIと読み取り専用のMCPサーバーは、どちらもデフォルトのcli機能を通じて1つのバイナリに組み込まれています。CLIはスクリプト作成とデバッグ用、MCPサーバーはAI エージェント用です。常駐型のオーバーレイアプリであるdowse-appは、Tauri 2 + Svelte 5を使用した別のクレートで、ライブラリとしてのみdowseに依存します(default-features = falseのため、CLIもその依存関係も取り込みません)。
インデックスの更新には2段階の方式を採用しています。実行中はファイルシステムイベントによって増分更新を行い(500msのデバウンス期間、バッチコミット)、起動時にはmtime/サイズの比較によって、アプリが停止している間に加えられた変更を照合します。管理者権限のあるNTFSボリュームでは、ディレクトリ走査とファイルシステムイベントの監視の代わりに、MFT列挙とUSNジャーナルを使用して、同じ2段階の処理を行います。どちらの方式でも同じ結果が得られ、上位レイヤーからはどちらが有効かを判別できません。
ロードマップ
| # | 範囲 | ステータス |
|---|---|---|
| 1 | CLI のインデックス作成と検索:中国語の分かち書き、GBK の検出、ハイライト表示 | ✅ 完了 |
| 2 | オーバーレイ:グローバルホットキー、不透明パネル、キーボードナビゲーション | ✅ 完了 |
| 3 | 増分インデックス作成:ファイル監視、起動時の整合性確認 | ✅ 完了 |
| 4 | OCR パイプライン:スクリーンショット内のテキストをインデックスに追加 | ✅ 完了 |
| 5 | MCP サーバー | ✅ 完了 |
| 6 | NTFS MFT/USN Journal の高速処理経路 | ✅ 完了(管理者専用の高速処理経路自体は、実機でまだ検証されていません。設計ドキュメントの実装メモを参照してください) |
| 7 | セマンティック検索(埋め込み、ハイブリッドランキング) | 🔍 検討中 |
スタック
Rust · tantivy · jieba · Tauri 2 · Svelte 5 · Windows.Media.Ocr · notify · Win32(MFT/USN Journal)
設計ドキュメント
- docs/DESIGN-M2-浮窗.md(オーバーレイ設計、中国語)
- docs/DESIGN-M3-增量索引.md(増分インデックス作成の設計、中国語)
- docs/DESIGN-M4-OCR管线.md(OCR パイプラインの設計、中国語)
- docs/DESIGN-M5-MCP.md(MCP サーバーの設計、中国語)
- docs/DESIGN-M6-NTFS快速层.md(NTFS 高速処理経路の設計、中国語)
プライバシーポリシー
インデックスはローカル(%LOCALAPPDATA%\dowse)に保存されます。ネットワークアクセスやテレメトリーはありません。ご自身で確認するには、リソースモニターやファイアウォールツールでプロセスを監視し、外部への接続が一切開かれていないことをご確認ください。リリースにはインストーラーの SHA-256 チェックサムも含まれているため、ダウンロードを検証できます。
ポリシーの全文 — データの収集、保存、保持、お問い合わせ先:PRIVACY.md。
ライセンス
MIT または Apache-2.0 のいずれかを選択できる、デュアルライセンスです。
ひとこと
子どもの頃、私は Coolpad の携帯電話を一台だけ持っていました。インターネットにつながらない長い時間には、ファイルマネージャーを開いてファイルを一つずつ調べ、それが何なのか、どうつながっているのかを考えていました。あちこちに散らばったファイルの中で、どれに何が入っているのかもわからず、いつまでも迷子になっていました。
大学時代に QNAP NAS を買い、Qsirch を知りました。本当に優れたものでしたが、NAS 上でしか使えず、Windows 版もありませんでした。
screenpipe が先を行っていました。『ブラック・ミラー』シーズン1第3話「人生の軌跡のすべて」に登場する記憶の粒子の、原始的なバージョンのようなものです。とても未来的で、とてもポストモダンで、ローカル検索の究極形に近いものでしたが、今の世界には重すぎました。
そこで dowse を作りました。
映画『her/世界でひとつの彼女』は、予言のように感じられます。遠からず、AI が私たちのパーソナルコンピューターを動かすようになるでしょう。dowse はその発想に着想を得て、AI が呼び出せる MCP インターフェースを公開します。ただし、検索するのは自分のマシンにある、自分自身のファイルです。
少しこだわりが強く、物事をきちんと整理するのが好きで、自分のファイルシステムを本当に自分で管理したい方に、これはぴったりです。パフォーマンスと美しさも、同じくらい大切にしました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。