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 logo

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(中文)

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

O nome vem de uma varinha de radiestesia.

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

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 arquivoInstantânea, conforme você digita
📄 Busca por conteúdo de documentosTexto puro, Markdown, código e formatos de documento (PDF, Word, Excel, PowerPoint)
🖼️ OCR de capturas de tela / imagensTexto dentro de imagens PNG/JPG/WebP/BMP, totalmente offline (Windows.Media.Ocr)
🈶 Segmentação de palavras em chinêsjieba + ranqueamento BM25, não trigramas — além de detecção automática de codificação GBK
Indexação incrementalObservação de arquivos em tempo de execução, reconciliação por mtime/tamanho na inicialização
🤖 Servidor MCPExpõe a busca local a agentes de IA via stdio
🚀 Caminho rápido NTFSEnumeração MFT + USN Journal, somente administrador, com fallback transparente caso contrário

dowse vs. as alternativas

dowseEverythingWindows Searchsist2
Busca por nome de arquivo
Busca por conteúdo de documentos✓ (índice persistente)escaneamento sob demandadepende dos locais e filtros indexados
OCR de capturas de tela / imagensdepende do dispositivo/versãolimitado (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, OR maiúsculo entre grupos, -term para 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étricaMeta de designMedido (v0.7.0, 2026-07-12)
Atalho até a janela visível< 50msnão medido — benchmark apenas via CLI, sem instrumentação do app de sobreposição
Tecla até os resultados renderizados< 80msnã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 ociosonã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 / 437MBsegundos (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, P9539,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 corpus0,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).

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

#EscopoStatus
1Indexação e busca via CLI: segmentação de chinês, detecção GBK, realce✅ Concluído
2Sobreposição: atalho global, material Acrílico, navegação por teclado✅ Concluído
3Indexação incremental: observação de arquivos, reconciliação na inicialização✅ Concluído
4Pipeline de OCR: texto de capturas de tela no índice✅ Concluído
5Servidor MCP✅ Concluído
6Caminho 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)
7Busca 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

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.