dowse
Busca local rápida de texto completo em arquivos do Windows — nomes, conteúdos e texto de capturas de tela com OCR; ferramentas MCP somente leitura.
Documentação
English | 简体中文 | 日本語 | 한국어 | Español | Italiano
dowse
Busca local de conteúdo de arquivos open-source para Windows. Encontre nomes de arquivos, conteúdos de PDF e Office, código-fonte e texto dentro de capturas de tela — a um toque de hotkey.
Website · Página do produto em inglês · Guia de busca de conteúdo de arquivos no Windows(中文)
O nome vem de uma vara de radiestesia.

Motivação
Nenhuma ferramenta para Windows atende a todos os três requisitos a seguir ao mesmo tempo:
- Manter um índice persistente do conteúdo dos arquivos, não apenas dos nomes (o Everything pode escanear conteúdo sob demanda, mas seu índice instantâneo é centrado em nomes e caminhos)
- Reconhecer e indexar texto dentro de imagens em PCs Windows comuns, sem exigir um dispositivo Copilot+
- Uma hotkey para invocar, operação totalmente por teclado, sem latência perceptível
A implementação open-source mais próxima é o sist2, mas ele é voltado para Linux (no Windows só roda via Docker), trata texto chinês como trigramas e o projeto não é mais mantido. O dowse é uma implementação nativa para Windows construída em torno desses três pontos.
Recursos
| 🔍 Busca por nome de arquivo | Instantânea, conforme você digita |
| 📄 Busca por conteúdo de documentos | Texto puro, Markdown, código e formatos de documento (PDF, Word, Excel, PowerPoint) |
| 🖼️ OCR de capturas de tela / imagens | Texto dentro de imagens PNG/JPG/WebP/BMP, totalmente offline (Windows.Media.Ocr) |
| 🈶 Segmentação de palavras em chinês | jieba + ranqueamento BM25, não trigramas — além de detecção automática de codificação GBK |
| ⚡ Indexação incremental | Observação de arquivos em tempo de execução, reconciliação por mtime/tamanho na inicialização |
| 🤖 Servidor MCP | Expõe a busca local a agentes de IA via stdio |
| 🚀 Caminho rápido NTFS | Enumeração MFT + USN Journal, somente admin, com fallback transparente caso contrário |
dowse vs. as alternativas
| dowse | Everything | Windows Search | sist2 | |
|---|---|---|---|---|
| Busca por nome de arquivo | ✓ | ✓ | ✓ | ✓ |
| Busca por conteúdo de documentos | ✓ (índice persistente) | varredura sob demanda | depende dos locais e filtros indexados | ✓ |
| OCR de capturas de tela / imagens | ✓ | ✗ | depende do dispositivo/versão | limitado (Tesseract opcional) |
| Segmentação adequada de chinês | ✓ (jieba) | — | limitada | ✗ (trigramas) |
| Totalmente local, sem rede | ✓ | ✓ | ✓ | ✓ |
| Sobreposição com hotkey global | ✓ | ✓ | ✓ (tecla Win) | ✗ (interface web) |
| Nativo para Windows | ✓ | ✓ | ✓ | ✗ (prioriza Linux, Docker no Windows) |
Tratamento de texto em chinês
- Segmentação de palavras via jieba, ranqueamento via BM25 (mecanismo tantivy). Sem trigramas.
- Detecção automática de codificação de arquivos (chardetng). Arquivos codificados em GBK são decodificados corretamente antes da indexação — isso importa porque uma grande parcela de documentos em chinês no Windows, especialmente os mais antigos, ainda é salva em GBK em vez de UTF-8, e uma ferramenta de busca que assume UTF-8 irá indexar ou embaralhar silenciosamente esses arquivos.
- Consultas com vários termos usam semântica AND por padrão. Consultas de frases entre aspas correspondem à posição exata. Operadores inline refinam ainda mais:
path:reports,mtime:>2026-01-01,size:>10mb,ORmaiúsculo entre grupos,-termpara excluir. - O OCR roda no mecanismo nativo do Windows (Windows.Media.Ocr), totalmente offline. O pacote de idiomas zh-Hans também cobre texto misto chinês/inglês, sem configuração adicional necessária.
Desempenho
Metas de projeto; excedê-las é tratado como defeito. "Medido" é um benchmark
do zero de dowse 0.7.0 (i7-13700K / 24 núcleos lógicos / 64GB RAM, máquina única,
sessão única, 2026-07-12), reutilizando o corpus byte-idêntico do benchmark da rodada 3
do v0.6.1 para comparabilidade direta. A saída bruta completa (logs de indexação/busca,
arquivos de resultado JSON) é mantida com o diretório de trabalho do benchmark, fora deste repositório.
| Métrica | Meta de projeto | Medido (v0.7.0, 2026-07-12) |
|---|---|---|
| Hotkey até janela visível | < 50ms | não medido — benchmark somente CLI, sem instrumentação do app de sobreposição |
| Tecla até resultados renderizados | < 80ms | não medido — o mesmo |
| OCR, imagem única | ~112ms / captura de tela 1080p | ~170ms isolado (imagem sintética 480×200), inalterado desde o v0.6.1 — o pipeline de OCR não foi modificado nesta versão. Leituras abaixo de 30ms em execuções repetidas imediatas da mesma imagem refletem cache de reconhecimento em nível de SO, não reconhecimento real, e são excluídas aqui. Não são capturas de tela reais 1080p |
| Memória residente | < 150MB ocioso | não medido (ocioso); pico de conjunto de trabalho durante indexação do corpus completo foi ~327MB — uma métrica diferente, não uma regressão em relação à meta ociosa |
| Tamanho do instalador | < 50MB (revisado em 2026-07 — a meta original de 15MB é anterior ao sidecar CLI empacotado) | 14.98MB (dowse-app_0.9.0_x64-setup.exe, versão publicada) |
| Construção do índice de texto completo, 10.000 arquivos / 437MB | segundos (caminho rápido planejado somente para nomes) | 10,0–10,6s — dowse index de conteúdo completo atual, não o caminho MFT planejado somente para nomes |
| Construção do índice de texto completo + OCR, 15.100 arquivos (incl. 5.100 imagens) | — | ~46,6s na primeira passada, todas as 5.100/5.100 imagens com OCR na mesma passada — sem pendências, sem necessidade de segunda passada |
| Latência de busca, P50 (5 categorias exigidas) | — | 30,7–161,1ms entre palavra única / frase em chinês / frase em inglês / AND de várias palavras / zero resultados, em um índice de 15.100 documentos |
| Latência de busca, P95 | — | 39,1–172,3ms, mesmas 5 categorias |
Latência de consulta com filtro ext: | — | P50 155,6ms, mesma faixa das categorias de consulta com resultados não zero |
| Tamanho do índice ÷ tamanho do corpus | — | 0,36 (somente texto), abaixo de 0,54 na rodada do v0.6.1 |
Linhas do corpus completo medidas no mesmo corpus de texto de 10.000 arquivos / 437,66MB mais 5.100 imagens sintéticas de OCR 480×200 (89,8MB) usadas para os números da rodada 3 do v0.6.1 acima — byte-idênticas, reutilizadas diretamente em vez de regeneradas. A indexação é aproximadamente 2x mais rápida e o índice de texto em disco é cerca de um terço menor que o do v0.6.1; ambos acompanham o novo tokenizador (normalização em minúsculas, divisão por limites alfanuméricos de palavras latinas) produzindo um dicionário de termos mais enxuto. A consulta de zero resultados caiu de 135ms (v0.6.1) para um nível de ruído de inicialização de 31ms, consistente com menos índice para escanear antes de concluir que um termo está ausente. A velocidade de reconhecimento de OCR não mudou nesta versão, já que o pipeline não foi tocado: o reconhecimento de imagem única permanece em torno de 170ms, e as leituras abaixo de 30ms em imagens idênticas repetidas são artefatos de cache em nível de SO, não reconhecimento real. A passada de texto mais OCR do corpus completo ficou mais rápida (83s para 46,6s) devido ao tokenizador e ao caminho de escrita mais rápidos, não por reconhecimento mais rápido.
Início rápido
Download — baixe o instalador da última versão (dowse-app_*_x64-setup.exe), execute-o e depois pressione `Alt+`` para invocar.
O instalador não é assinado, então o SmartScreen do Windows o sinalizará na primeira execução. Para continuar, clique em Mais informações e depois em Executar mesmo assim. Um certificado de assinatura de código é um custo recorrente difícil de justificar para um projeto independente; pode ser reconsiderado para uma versão futura.
Instale a CLI — a biblioteca e a ferramenta de linha de comando são distribuídas como um único pacote dowse:
cargo install dowse # once published to crates.io
cargo install --path crates/dowse # from a local checkout
Compile a partir do código-fonte:
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 sobreposição: 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 o painel de configurações — geral (redefinição de hotkey, inicialização automática, idioma da interface) e regras de índice (diretórios excluídos, extensões de texto extras, limite de tamanho por arquivo).


Servidor MCP
dowse mcp inicia um servidor MCP somente leitura via stdio, expondo o índice local a agentes de IA:
claude mcp add --scope user dowse -- dowse mcp
Quatro ferramentas: search (consulta, com limit / offset limitados, sort por relevância / mtime / tamanho, filtro ext separado por vírgulas e uma contagem total_hits), preview (contexto longo + metadados para um resultado), read_file_chunk (texto limitado e paginado do snapshot indexado) e index_status (contagem de documentos, saúde do índice, regras de índice ativas). O servidor nunca toca no gravador do índice nem abre caminhos arbitrários — ele apenas recarrega o leitor antes de cada chamada, então pode rodar junto com o app de sobreposição ou uma sessão dowse watch ativa sem contenção de escrita.
Arquitetura
┌─────────────────────────────────────────┐
│ 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 │
└────────────────┘
Duas crates. dowse é tanto a biblioteca de busca quanto a ferramenta de linha de comando: o núcleo da biblioteca expõe a API de busca, e a CLI mais o servidor MCP somente leitura ficam atrás do recurso padrão cli em um único binário — a CLI para scripts e depuração, o servidor MCP para agentes de IA. dowse-app, uma sobreposição residente Tauri 2 + Svelte 5, é uma crate separada que depende de dowse apenas como biblioteca (default-features = false, então não puxa nem a CLI nem suas dependências).
As atualizações de índice seguem um esquema de duas camadas: enquanto está em execução, eventos do sistema de arquivos impulsionam atualizações incrementais (janela de debounce de 500ms, commits em lote); na inicialização, uma comparação de mtime/tamanho reconcilia mudanças feitas enquanto o app não estava em execução. Em volumes NTFS com direitos de admin, as mesmas duas camadas são atendidas por enumeração MFT e USN Journal em vez de varreduras de diretórios e observação de eventos do sistema de arquivos; ambos os caminhos produzem resultados idênticos e as camadas superiores não conseguem distinguir qual está ativo.
Roteiro
| # | Escopo | Status |
|---|---|---|
| 1 | Indexação e busca via CLI: segmentação de chinês, detecção de GBK, realce | ✅ Concluído |
| 2 | Sobreposição: hotkey global, painel opaco, navegação por teclado | ✅ Concluído |
| 3 | Indexação incremental: observação de arquivos, reconciliação na inicialização | ✅ Concluído |
| 4 | Pipeline de OCR: texto de capturas de tela no índice | ✅ Concluído |
| 5 | Servidor MCP | ✅ Concluído |
| 6 | Caminho rápido NTFS MFT / USN Journal | ✅ Concluído (o caminho rápido somente admin em si ainda não foi verificado em hardware real — veja as notas de implementação no documento de design) |
| 7 | Busca semântica (embeddings, ranqueamento híbrido) | 🔍 Explorando |
Stack
Rust · tantivy · jieba · Tauri 2 · Svelte 5 · Windows.Media.Ocr · notify · Win32 (MFT/USN Journal)
Documentos de design
- docs/DESIGN-M2-浮窗.md (design da sobreposição, chinês)
- docs/DESIGN-M3-增量索引.md (design da indexação incremental, chinês)
- docs/DESIGN-M4-OCR管线.md (design do pipeline de OCR, chinês)
- docs/DESIGN-M5-MCP.md (design do servidor MCP, chinês)
- docs/DESIGN-M6-NTFS快速层.md (design do caminho rápido NTFS, chinês)
Política de Privacidade
O índice é armazenado localmente (%LOCALAPPDATA%\dowse). Sem acesso à rede, sem telemetria. Você pode verificar isso por conta própria: observe o processo no Monitor de Recursos ou em uma ferramenta de firewall e confirme que ele não abre conexões de saída. As versões também incluem uma soma de verificação SHA-256 para o instalador, para que você possa verificar o download.
Política completa — coleta de dados, armazenamento, retenção e contato: PRIVACY.md.
Licença
Duplamente licenciado sob MIT ou Apache-2.0, à sua escolha.
Uma nota
Quando criança, eu tinha um único celular Coolpad. Nos longos períodos sem internet, eu abria o gerenciador de arquivos e estudava os arquivos um por um, tentando descobrir o que eram e como se encaixavam, para sempre perdido entre arquivos espalhados por toda parte, sem ideia do que cada um continha. Na faculdade, comprei um NAS da QNAP e descobri o Qsirch, uma coisa genuinamente boa, exceto que ele vivia apenas no NAS e não tinha versão para Windows.
O screenpipe chegou primeiro, uma espécie de versão primitiva do grão de memória de Black Mirror S1E3, The Entire History of You. Muito futurista, muito pós-moderno, próximo da forma definitiva de busca local, mas pesado demais para o mundo como ele é agora.
Então eu fiz o dowse.
O filme Her parece uma profecia: em breve, a IA vai rodar nossos computadores pessoais. O dowse se inspira nisso e expõe uma interface MCP para a IA chamar, exceto que o que ele busca são os seus próprios arquivos, na sua própria máquina.
Se você é um pouco obsessivo, se gosta de manter as coisas em ordem, se quer controle real sobre o seu próprio sistema de arquivos, isto é para você. Desempenho e beleza são coisas com as quais me importei igualmente.