dowse

Búsqueda local rápida de texto completo para archivos de Windows: nombres, contenidos y texto OCR de capturas de pantalla; herramientas MCP de solo lectura.

Documentación

English | 简体中文

dowse logo

dowse

Búsqueda local de contenido de archivos de código abierto para Windows. Encuentra nombres de archivos, contenido de PDF y Office, código fuente y texto dentro de capturas de pantalla — a una tecla de distancia.

Sitio web · Página de producto en inglés · Guía de búsqueda de contenido de archivos en Windows(中文)

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

El nombre proviene de una vara de zahorí.

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

Motivación

Ninguna herramienta de Windows satisface las tres condiciones siguientes a la vez:

  • Mantener un índice persistente del contenido de los archivos, no solo de los nombres (Everything puede escanear contenido bajo demanda, pero su índice instantáneo se centra en nombres y rutas)
  • Reconocer e indexar texto dentro de imágenes en PC Windows ordinarios sin requerir un dispositivo Copilot+
  • Una tecla de acceso rápido para invocarla, operación completa con teclado, sin latencia perceptible

La implementación de código abierto más cercana es sist2, pero está orientada a Linux (en Windows solo se ejecuta mediante Docker), trata el texto chino como trigramas y el proyecto ya no se mantiene. dowse es una implementación nativa de Windows construida en torno a estos tres puntos.

Características

🔍 Búsqueda de nombres de archivoInstantánea, mientras escribes
📄 Búsqueda de contenido de documentosTexto plano, Markdown, código y formatos de documento (PDF, Word, Excel, PowerPoint)
🖼️ OCR de capturas / imágenesTexto dentro de imágenes PNG/JPG/WebP/BMP, totalmente sin conexión (Windows.Media.Ocr)
🈶 Segmentación de palabras chinasjieba + clasificación BM25, no trigramas — además de detección automática de codificación GBK
Indexación incrementalVigilancia de archivos en tiempo de ejecución, reconciliación de mtime/tamaño al inicio
🤖 Servidor MCPExpone la búsqueda local a agentes de IA a través de stdio
🚀 Ruta rápida NTFSEnumeración MFT + USN Journal, solo administrador, con respaldo transparente en caso contrario

dowse frente a las alternativas

dowseEverythingWindows Searchsist2
Búsqueda de nombres de archivo
Búsqueda de contenido de documentos✓ (índice persistente)escaneo bajo demandadepende de las ubicaciones y filtros indexados
OCR de capturas / imágenesdepende del dispositivo/versiónlimitado (Tesseract opcional)
Segmentación china adecuada✓ (jieba)limitada✗ (trigramas)
Totalmente local, sin red
Superposición con tecla de acceso rápido global✓ (tecla Win)✗ (interfaz web)
Nativo de Windows✗ (primero Linux, Docker en Windows)

Manejo de texto chino

  • Segmentación de palabras mediante jieba, clasificación mediante BM25 (motor tantivy). Sin trigramas.
  • Detección automática de codificación de archivos (chardetng). Los archivos codificados en GBK se decodifican correctamente antes de la indexación — esto importa porque una gran proporción de documentos en chino en Windows, especialmente los más antiguos, todavía se guardan en GBK en lugar de UTF-8, y una herramienta de búsqueda que asume UTF-8 los indexará mal o los distorsionará silenciosamente.
  • Las consultas de múltiples términos usan semántica AND por defecto. Las consultas de frases entre comillas coinciden por posición exacta. Los operadores en línea afinan más: path:reports, mtime:>2026-01-01, size:>10mb, OR en mayúsculas entre grupos, -term para excluir.
  • El OCR se ejecuta en el motor nativo de Windows (Windows.Media.Ocr), totalmente sin conexión. El paquete de idioma zh-Hans también cubre texto mixto chino/inglés, sin configuración adicional requerida.

Rendimiento

Objetivos de diseño; superarlos se trata como un defecto. "Medido" es un punto de referencia desde cero de dowse 0.7.0 (i7-13700K / 24 núcleos lógicos / 64GB RAM, una sola máquina, una sola sesión, 2026-07-12), reutilizando el corpus byte-idéntico del punto de referencia de la ronda 3 de v0.6.1 para comparabilidad directa. La salida bruta completa (registros de indexación/búsqueda, archivos de resultados JSON) se conserva con el directorio de trabajo del punto de referencia, fuera de este repositorio.

MétricaObjetivo de diseñoMedido (v0.7.0, 2026-07-12)
Tecla de acceso rápido a ventana visible< 50msno medido — punto de referencia solo CLI, sin instrumentación de la app de superposición
Tecla a resultados renderizados< 80msno medido — igual
OCR, imagen única~112ms / captura 1080p~170ms aislado (imagen sintética 480×200), sin cambios respecto a v0.6.1 — la canalización de OCR no se modificó en esta versión. Las lecturas por debajo de 30ms en ejecuciones repetidas inmediatas de la misma imagen reflejan el almacenamiento en caché de reconocimiento a nivel del sistema operativo, no reconocimiento real, y se excluyen aquí. No son capturas 1080p reales
Memoria residente< 150MB en reposono medido (en reposo); el conjunto de trabajo máximo durante la indexación del corpus completo fue ~327MB — una métrica diferente, no una regresión frente al objetivo de reposo
Tamaño del instalador< 50MB (revisado 2026-07 — el objetivo original de 15MB es anterior al CLI auxiliar incluido)14.98MB (dowse-app_0.9.0_x64-setup.exe, versión publicada)
Construcción del índice de texto completo, 10,000 archivos / 437MBsegundos (ruta rápida planificada solo nombres)10.0–10.6s — dowse index actual de contenido completo, no la ruta MFT planificada solo nombres
Construcción del índice de texto completo + OCR, 15,100 archivos (incl. 5,100 imágenes)~46.6s primera pasada, las 5,100/5,100 imágenes con OCR en esa misma pasada — sin pendientes, sin necesidad de segunda pasada
Latencia de búsqueda, P50 (5 categorías requeridas)30.7–161.1ms entre palabra única / frase china / frase inglesa / AND de múltiples palabras / cero resultados, en un índice de 15,100 documentos
Latencia de búsqueda, P9539.1–172.3ms, mismas 5 categorías
Latencia de consulta con filtro ext:P50 155.6ms, misma banda que las categorías de consulta con resultados no nulos
Tamaño del índice ÷ tamaño del corpus0.36 (solo texto), frente a 0.54 en la ronda de v0.6.1

Las filas del corpus completo se midieron en el mismo corpus de texto de 10,000 archivos / 437.66MB más 5,100 imágenes OCR sintéticas de 480×200 (89.8MB) utilizadas para los números de la ronda 3 de v0.6.1 anteriores — byte-idéntico, reutilizado directamente en lugar de regenerado. La indexación es aproximadamente 2x más rápida y el índice de texto en disco aproximadamente un tercio más pequeño que v0.6.1; ambos siguen al nuevo tokenizador (normalización de minúsculas, división de palabras latinas por límites alfanuméricos) que produce un diccionario de términos más reducido. La consulta de cero resultados bajó de 135ms (v0.6.1) a un nivel de ruido de inicio de 31ms, consistente con menos índice que escanear antes de concluir que un término está ausente. La velocidad de reconocimiento OCR no cambió en esta versión, ya que la canalización no se tocó: el reconocimiento de imagen única se mantiene alrededor de 170ms, y las lecturas por debajo de 30ms en imágenes idénticas repetidas son artefactos de caché a nivel del sistema operativo, no reconocimiento real. La pasada de texto más OCR del corpus completo se aceleró (83s a 46.6s) gracias al tokenizador más rápido y a la ruta de escritura, no a un reconocimiento más rápido.

Inicio rápido

Descarga — obtén el instalador desde la última versión (dowse-app_*_x64-setup.exe), ejecútalo y luego `Alt+`` para invocarla.

El instalador no está firmado, por lo que Windows SmartScreen lo marcará en el primer uso. Para continuar, haz clic en Más información y luego en Ejecutar de todos modos. Un certificado de firma de código es un costo recurrente difícil de justificar para un proyecto independiente; podría reconsiderarse para una versión futura.

Instala el CLI — la biblioteca y la herramienta de línea de comandos se distribuyen como un solo paquete dowse:

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

Compilar desde el código fuente:

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

App de superposición: Alt+\`` to summon, ↑↓to select,Enterto open,Ctrl+Enterto reveal in Explorer,Ctrl+Cto copy path,Esc to hide. 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+,` abre el panel de configuración — general (reasignación de teclas de acceso rápido, transparencia, inicio automático, idioma de la interfaz) y reglas de indexación (directorios excluidos, extensiones de texto adicionales, límite de tamaño por archivo).

Dowse settings panel in English, with controls for the global shortcut, transparency, 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

Servidor MCP

dowse mcp inicia un servidor MCP de solo lectura a través de stdio, exponiendo el índice local a agentes de IA:

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

Tres herramientas: search (consulta, límite, sort por relevancia / mtime / tamaño, filtro ext separado por comas, offset paginación con un recuento de total_hits), preview (fragmento completo + metadatos para un resultado), index_status (recuento de documentos, salud del índice, reglas de indexación activas). El servidor nunca toca el escritor del índice — solo recarga el lector antes de cada llamada, por lo que puede ejecutarse junto a la app de superposición o a una sesión dowse watch activa sin contención de escritura.

Arquitectura

                 ┌─────────────────────────────────────────┐
                 │                   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    │
                              └────────────────┘

Dos crates. dowse es tanto la biblioteca de búsqueda como la herramienta de línea de comandos: el núcleo de la biblioteca expone la API de búsqueda, y el CLI más el servidor MCP de solo lectura viajan detrás de la característica cli predeterminada en un solo binario — el CLI para scripting y depuración, el servidor MCP para agentes de IA. dowse-app, una superposición residente de Tauri 2 + Svelte 5, es un crate separado que depende de dowse solo como biblioteca (default-features = false, por lo que no incorpora ni el CLI ni sus dependencias).

Las actualizaciones del índice se ejecutan en un esquema de dos niveles: mientras se ejecuta, los eventos del sistema de archivos impulsan actualizaciones incrementales (ventana de debounce de 500ms, confirmaciones por lotes); al inicio, una comparación de mtime/tamaño reconcilia los cambios realizados mientras la app no estaba en ejecución. En volúmenes NTFS con derechos de administrador, los mismos dos niveles se atienden mediante enumeración MFT y USN Journal en lugar de recorridos de directorios y vigilancia de eventos del sistema de archivos; ambas rutas producen resultados idénticos y las capas superiores no pueden saber cuál está activa.

Hoja de ruta

#AlcanceEstado
1Indexación y búsqueda CLI: segmentación china, detección GBK, resaltado✅ Hecho
2Superposición: tecla de acceso rápido global, material Acrílico, navegación con teclado✅ Hecho
3Indexación incremental: vigilancia de archivos, reconciliación al inicio✅ Hecho
4Canalización OCR: texto de capturas en el índice✅ Hecho
5Servidor MCP✅ Hecho
6Ruta rápida NTFS MFT / USN Journal✅ Hecho (la ruta rápida solo administrador aún no se ha verificado en hardware real — consulta las notas de implementación del documento de diseño)
7Búsqueda semántica (embeddings, clasificación híbrida)🔍 Explorando

Stack

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

Documentos de diseño

Política de privacidad

El índice se almacena localmente (%LOCALAPPDATA%\dowse). Sin acceso a la red, sin telemetría. Puedes verificarlo tú mismo: observa el proceso en el Monitor de recursos o en una herramienta de firewall y confirma que no abre conexiones salientes. Las versiones también incluyen una suma de verificación SHA-256 para el instalador, de modo que puedas verificar la descarga.

Política completa — recopilación de datos, almacenamiento, retención y contacto: PRIVACY.md.

Licencia

Doble licencia bajo MIT o Apache-2.0, a tu elección.

Una nota

De niño tenía un único teléfono Coolpad. En los largos períodos sin internet, abría el administrador de archivos y estudiaba los archivos uno por uno, tratando de averiguar qué eran y cómo encajaban, perdido para siempre entre archivos esparcidos por todas partes sin idea de qué contenía cada uno.

En la universidad compré un NAS QNAP y descubrí Qsirch, algo genuinamente bueno, excepto que vivía solo en el NAS y no tenía versión para Windows. screenpipe llegó primero, una especie de versión primitiva del grano de memoria de Black Mirror T1E3, The Entire History of You. Muy futurista, muy posmoderno, cercano a la forma definitiva de búsqueda local, pero demasiado pesado para el mundo tal como es ahora.

Así que hice dowse.

La película Her se lee como una profecía: antes de mucho, la IA ejecutará nuestras computadoras personales. dowse toma su inspiración de eso y expone una interfaz MCP para que la IA la llame, excepto que lo que busca son tus propios archivos, en tu propia máquina.

Si eres un poco obsesivo, si te gusta mantener las cosas en orden, si quieres control real sobre tu propio sistema de archivos, esto es para ti. El rendimiento y la belleza son cosas que me importaron tanto como eso.