Cache de resultados avançado (com reconhecimento de estado)

Visão geral

O Aura apresenta um cache de resultados persistente e sensível ao contexto, projetado para eliminar processamento redundante. Quando um comando de voz é reconhecido e corresponde a uma regra, o Aura verifica se exatamente o mesmo resultado foi gerado antes nas mesmas circunstâncias. Se uma correspondência for encontrada, o Aura ignora operações caras, como verificações gramaticais do LanguageTool ou geração Ollama LLM, entregando o resultado com latência quase zero.

Principais recursos

  • Context-Aware: O cache é específico para o título da janela ativa. Um comando dito no “LibreOffice” pode ter um resultado em cache diferente do mesmo comando no “Terminal”.

  • Self-Healing (Auto-Invalidation): O cache expira automaticamente se você modificar o arquivo de regra subjacente (mapa .py).

  • Privacidade em primeiro lugar: Todos os resultados armazenados em cache são armazenados em um banco de dados SQLite local (data/_aura_result_cache.db).

  • Manutenção Zero: Para a maioria dos usuários, isso funciona inteiramente em segundo plano, sem configuração.

Como funciona

O sistema gera um cache_id exclusivo baseado em três variáveis:

  1. A saída da regra: O texto gerado pelo mapa.

  2. O Idioma: O código do idioma ativo atual (por exemplo, de-DE).

  3. A Janela Ativa: O título da janela atualmente em foco.

Lógica de Validade

O cache garante que você nunca receba informações “obsoletas”. Ele usa dois tipos de verificações de validade:

Tipo

Nome

Lógica

Caso de uso

Digite 0

Sincronização automática de arquivos

Usa o horário de modificação (mtime) do arquivo de mapa.

Padrão. Se você editar seu Sandbox ou Mapa, todas as entradas de cache associadas serão invalidadas instantaneamente.

Tipo 1

Carimbo de data e hora manual

Usa um timestamp fixo fornecido nos atributos da regra.

Desenvolvedor. Codifique uma versão/carimbo de data/hora para forçar ou manter um estado de resultado específico.

Exemplos de configuração de regras

Você pode controlar o comportamento do cache diretamente nos arquivos FUZZY_MAP_pre.py ou FUZZY_MAP.py.

1. Comportamento padrão (cache automático)

Por padrão, o cache está habilitado e usa o horário de modificação do arquivo.

# No extra attributes needed. 
# If this file is saved, the cache for this rule refreshes.
('Bold', r'^make it bold$', 100)

2. Desativando cache

Se um comando produzir dados dinâmicos (como a hora atual ou uma piada aleatória), você deverá desabilitar o cache.

('Current Time', r'^what time is it$', 100, {
    'cache': False 
})

3. Carimbo de data/hora manual (versão fixa)

Se você quiser que o cache persista independentemente das edições do arquivo (a menos que você altere a versão), use um carimbo de data/hora manual.

('Stable Command', r'^run complex task$', 100, {
    'timestamp': '2026-05-09-v1'
})

Impacto no desempenho

  • Cache Miss: Processamento padrão (0,05s - 5,0s dependendo do uso do LLM).

  • Cache Hit: Processamento instantâneo.

Este mecanismo faz com que comandos ou erros de digitação corrigidos sejam retornados instantaneamente sem sobrecarregar a CPU.