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 | 简体中文 | 日本語 | 한국어 | Español | Italiano

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 con Windows ordinarios sin requerir un dispositivo Copilot+
  • Una tecla de acceso rápido para invocar, operación completa con teclado, sin latencia perceptible

La implementación de código abierto más cercana es sist2, pero está dirigida 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 de pantalla / imágenesTexto dentro de imágenes PNG/JPG/WebP/BMP, totalmente sin conexión (Windows.Media.Ocr)
🈶 Segmentación de palabras en chinojieba + clasificación BM25, no trigramas — además de detección automática de codificación GBK
⚡ Indexación incrementalVigilancia de archivos durante la 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 otros casos

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 ubicaciones y filtros indexados✓
OCR de capturas de pantalla / imágenes✓✗depende 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 parte de los 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 en posición exacta. Los operadores en línea reducen aún 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, máquina única, sesión única, 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 aplicación de superposición
Tecla a resultados renderizados< 80msno medido — igual
OCR, imagen única~112ms / captura de pantalla 1080p~170ms aislado (imagen sintética 480×200), sin cambios desde v0.6.1 — la canalización de OCR no se modificó en esta versión. Lecturas por debajo de 30ms en ejecuciones repetidas inmediatas de la misma imagen reflejan caché de reconocimiento a nivel de sistema operativo, no reconocimiento real, y se excluyen aquí. No son capturas de pantalla reales de 1080p
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 en reposo
Tamaño del instalador< 50MB (revisado 2026-07 — el objetivo original de 15MB es anterior al sidecar CLI 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 de nombres)10.0–10.6s — dowse index actual de contenido completo, no la ruta MFT planificada solo de nombres
Construcción del índice de texto completo + OCR, 15,100 archivos (incl. 5,100 imágenes)—~46.6s primera pasada, todas 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 en palabra única / frase china / frase inglesa / AND de múltiples palabras / resultado cero, en un índice de 15,100 documentos
Latencia de búsqueda, P95—39.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 resultado no cero
Tamaño del índice ÷ tamaño del corpus—0.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énticas, reutilizadas directamente en lugar de regeneradas. La indexación es aproximadamente 2 veces 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 en minúsculas, división de límites alfanuméricos de palabras latinas) que produce un diccionario de términos más reducido. La consulta de resultado cero 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 de 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 de sistema operativo, no reconocimiento real. La pasada de texto más OCR del corpus completo se aceleró (83s a 46.6s) gracias al tokenizador y la ruta de escritura más rápidos, 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 invocar.

El instalador no está firmado, por lo que Windows SmartScreen lo marcará en la primera ejecución. 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; puede reconsiderarse para una versión futura.

Instala la 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

Aplicación de superposición: 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+,` abre el panel de configuración — general (reconfiguración de tecla de acceso rápido, inicio automático, idioma de la interfaz) y reglas de índice (directorios excluidos, extensiones de texto adicionales, límite de tamaño por archivo).

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

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

Cuatro herramientas: search (consulta, limit / offset limitados, sort por relevancia / mtime / tamaño, filtro ext separado por comas y un recuento total_hits), preview (contexto largo + metadatos para un resultado), read_file_chunk (texto limitado y paginado de la instantánea indexada) y index_status (recuento de documentos, salud del índice, reglas de índice activas). El servidor nunca toca el escritor del índice ni abre rutas arbitrarias — solo recarga el lector antes de cada llamada, por lo que puede ejecutarse junto a la aplicación de superposición o una sesión dowse watch en vivo 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 la CLI más el servidor MCP de solo lectura viajan detrás de la característica cli predeterminada en un solo binario — la 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 la 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 aplicación no estaba en ejecución. En volúmenes NTFS con derechos de administrador, los mismos dos niveles se sirven 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 distinguir 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, panel opaco, navegación con teclado✅ Hecho
3Indexación incremental: vigilancia de archivos, reconciliación al inicio✅ Hecho
4Canalización de OCR: texto de capturas de pantalla 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 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, para 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 de QNAP y descubrí Qsirch, algo genuinamente bueno, salvo que solo vivía 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 igualmente.