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 | 简体中文
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 atalho de distância.
Site · Página do produto em inglês · Guia de busca de conteúdo de arquivos no Windows(中文)
O nome vem de uma varinha de radiestesia.

Motivação
Nenhuma ferramenta para Windows atende às três condições a seguir ao mesmo tempo:
- Manter um índice persistente do conteúdo dos arquivos, não apenas dos nomes (o Everything pode escanear conteúdos 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+
- Um atalho 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 administrador, 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) | escaneamento 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) | — | limitado | ✗ (trigramas) |
| Totalmente local, sem rede | ✓ | ✓ | ✓ | ✓ |
| Sobreposição com atalho 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 dos 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 corromper silenciosamente esses arquivos.
- Consultas com vários termos usam semântica AND por padrão. Consultas com 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 design; excedê-las é tratado como defeito. "Medido" refere-se a 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 JSON de resultados) é mantida no diretório de trabalho do benchmark, fora deste repositório.
| Métrica | Meta de design | Medido (v0.7.0, 2026-07-12) |
|---|---|---|
| Atalho até a janela visível | < 50ms | não medido — benchmark apenas via CLI, sem instrumentação do app de sobreposição |
| Tecla até os resultados renderizados | < 80ms | não medido — idem |
| OCR, imagem única | ~112ms / captura 1080p | ~170ms isolado (imagem sintética 480×200), inalterado em relação ao 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 do sistema operacional, não reconhecimento real, e são excluídas aqui. Não são capturas 1080p reais |
| Memória residente | < 150MB ocioso | não medido (ocioso); pico de working set durante indexação do corpus completo foi ~327MB — 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 apenas por nome) | 10,0–10,6s — dowse index atual de conteúdo completo, não o caminho MFT planejado apenas por nome |
| 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 segunda passada necessária |
| Latência de busca, P50 (5 categorias exigidas) | — | 30,7–161,1ms entre palavra única / frase em chinês / frase em inglês / AND com 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 nulos |
| 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 480×200 para OCR (89,8MB) usadas nos números da rodada 3 do v0.6.1 acima — byte-idênticas, reutilizadas diretamente em vez de regeneradas. A indexação está aproximadamente 2x mais rápida e o índice de texto em disco cerca de um terço menor que o 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 com zero resultados caiu de 135ms (v0.6.1) para 31ms, no nível de ruído de inicialização, 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, pois 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 do sistema operacional, 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 veloz.
Início rápido
Download — baixe o instalador da última versão (dowse-app_*_x64-setup.exe), execute-o e depois `Alt+`` para invocar.
O instalador não é assinado, então o Windows SmartScreen 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 em uma versão futura.
Instale a CLI — a biblioteca e a ferramenta de linha de comando são fornecidas 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,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 o painel de configurações — geral (redefinição de atalhos, transparência, inicialização automática, idioma da interface) e regras de índice (diretórios excluídos, extensões de texto adicionais, 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
Três ferramentas: search (consulta, limite, sort por relevância / mtime / tamanho, filtro ext separado por vírgulas, paginação offset com contagem total_hits), preview (trecho completo + metadados para um resultado), index_status (contagem de documentos, saúde do índice, regras de índice ativas). O servidor nunca toca no gravador do índice — 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: durante a execução, eventos do sistema de arquivos conduzem 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 administrador, as mesmas duas camadas são atendidas por enumeração MFT e USN Journal em vez de varreduras de diretório 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.
Roadmap
| # | Escopo | Status |
|---|---|---|
| 1 | Indexação e busca via CLI: segmentação de chinês, detecção GBK, realce | ✅ Concluído |
| 2 | Sobreposição: atalho global, material Acrílico, 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 administrador 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
Dupla licença 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 a 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 QNAP e descobri o Qsirch, algo genuinamente bom, exceto que vivia apenas no NAS e não tinha versão para Windows. 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 é agora.
Então eu fiz o dowse.
O filme Her parece uma profecia: em breve, a IA vai rodar nossos computadores pessoais. dowse se inspira nisso e expõe uma interface MCP para a IA chamar, exceto que o que ela busca são 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 seu próprio sistema de arquivos, isso é para você. Desempenho e beleza são coisas com as quais me importei igualmente.