EN·ES·DE·PT·FR
⌘K

Gerenciamento de Estado & Memória

Persistência em SQLite com memória de trabalho em memória, busca semântica via embeddings e recuperação tri-híbrida.

Atualização v0.9.x
A persistência principal das conversas agora usa a tabela events. Os dados antigos de messages são migrados para events durante a atualização.

Esquema do Banco de Dados

Tabela messages

KeyTypeDefaultDescription
idTEXT PKChave primária UUID
session_idTEXTIdentificador da sessão (indexado)
roleTEXTuser, assistant ou tool
contentTEXTnullConteúdo textual da mensagem
tool_call_idTEXTnullID para mensagens de resultado de ferramenta
tool_nameTEXTnullNome da ferramenta para mensagens de ferramenta
tool_calls_jsonTEXTnullArray JSON de chamadas de ferramentas
created_atTEXTTimestamp RFC3339
importanceREAL0.5Pontuação de importância (0.0–1.0)
embeddingBLOBnullEmbedding codificado em JSON Vec
embedding_errorTEXTnullMensagem de erro se o embedding falhou
consolidated_atTEXTnullTimestamp de consolidação de memória

Tabela facts

KeyTypeDefaultDescription
idINTEGER PKautoChave primária auto-incrementável
categoryTEXTCategoria de agrupamento
keyTEXTChave do fato (única por categoria)
valueTEXTConteúdo do fato
sourceTEXT""Quem armazenou: "agent" ou "user"
created_atTEXTTimestamp RFC3339
updated_atTEXTTimestamp RFC3339

Tabela macros

KeyTypeDefaultDescription
idINTEGER PKautoChave primária auto-incrementável
trigger_toolTEXTFerramenta que aciona a macro
trigger_args_patternTEXTnullPadrão de argumentos para correspondência
next_toolTEXTFerramenta a encadear em seguida
next_argsTEXTArgumentos para a ferramenta encadeada
confidenceREAL0.0Pontuação de confiança da macro
used_countINTEGER0Número de vezes que a macro foi usada
created_atTEXTTimestamp RFC3339
updated_atTEXTTimestamp RFC3339

Tabela scheduled_tasks

KeyTypeDefaultDescription
idTEXT PKChave primária UUID
nameTEXTRótulo legível da tarefa
cron_exprTEXTExpressão cron de 5 campos calculada
original_scheduleTEXTEntrada do usuário (linguagem natural ou cron)
promptTEXTPrompt do agente para executar no agendamento
sourceTEXT"tool" (criada via ferramenta) ou "config" (do config.toml)
is_oneshotINTEGER0Disparar uma vez e depois auto-excluir
is_pausedINTEGER0Tarefas pausadas não disparam
is_trustedINTEGER0Tarefas trusted ignoram aprovação do terminal
next_run_atTEXTTimestamp RFC3339 da próxima execução agendada
last_run_atTEXTnullTimestamp RFC3339 da última execução
created_atTEXTTimestamp RFC3339
updated_atTEXTTimestamp RFC3339

Tabela terminal_allowed_prefixes

KeyTypeDefaultDescription
prefixTEXT PKPrefixo de comando persistido a partir de aprovações "Permitir Sempre"

Memória de Trabalho

Um HashMap> em memória por sessão, limitado a working_memory_cap (padrão 50). Evita acessos ao banco de dados para o histórico recente da conversa.

Recuperação Tri-Híbrida

O método get_context combina três estratégias de recuperação:

EstratégiaFonteLimitePropósito
RecênciaÚltimas N mensagens10Continuidade conversacional
Saliênciaimportance ≥ 0.85Memórias críticas sinalizadas
RelevânciaSimilaridade vetorial > 0.655Busca semântica via embeddings

Os resultados são deduplicados por ID da mensagem antes de serem incluídos no contexto.

Serviço de Embedding

  • Modelo: AllMiniLML6V2 (via fastembed)
  • Roda em segundo plano — gera embeddings de novas mensagens após serem adicionadas
  • Habilita a etapa de relevância da recuperação tri-híbrida

Consolidação de Memória

Uma tarefa em segundo plano roda a cada consolidation_interval_hours (padrão 6). Ela comprime conversas antigas em resumos usando o modelo fast, reduzindo armazenamento e uso da janela de contexto.

Pontuação de Importância

PapelPontuação Padrão
Mensagem do usuário0.5
Resposta do assistente0.5
Saída de ferramenta0.3
Mensagem do sistema0.1

Pool de Conexões

  • Pool SQLite: máximo de 5 conexões
  • Modo de journal: WAL (Write-Ahead Logging) para leituras concorrentes
  • Cria automaticamente o banco de dados e tabelas se ausentes