ENΒ·ESΒ·DEΒ·PTΒ·FR
⌘K

Gestion de Estado y Memoria

Persistencia respaldada por SQLite con memoria de trabajo en memoria, busqueda semantica via embeddings y recuperacion tri-hibrida.

ActualizaciΓ³n v0.9.x
La persistencia principal de conversaciones ahora usa la tabla events. Los datos antiguos de messages se migran a events durante la actualizaciΓ³n.

Esquema de Base de Datos

Tabla messages

KeyTypeDefaultDescription
idTEXT PKβ€”Clave primaria UUID
session_idTEXTβ€”Identificador de sesion (indexado)
roleTEXTβ€”user, assistant o tool
contentTEXTnullContenido de texto del mensaje
tool_call_idTEXTnullID para mensajes de resultado de herramienta
tool_nameTEXTnullNombre de herramienta para mensajes de herramienta
tool_calls_jsonTEXTnullArray JSON de llamadas a herramientas
created_atTEXTβ€”Marca de tiempo RFC3339
importanceREAL0.5Puntuacion de importancia (0.0–1.0)
embeddingBLOBnullEmbedding codificado en JSON Vec<f32>
embedding_errorTEXTnullMensaje de error si el embedding fallo
consolidated_atTEXTnullMarca de tiempo de consolidacion de memoria

Tabla facts

KeyTypeDefaultDescription
idINTEGER PKautoClave primaria auto-incremental
categoryTEXTβ€”Categoria de agrupacion
keyTEXTβ€”Clave del hecho (unica por categoria)
valueTEXTβ€”Contenido del hecho
sourceTEXT""Quien lo almaceno: "agent" o "user"
created_atTEXTβ€”Marca de tiempo RFC3339
updated_atTEXTβ€”Marca de tiempo RFC3339

Tabla macros

KeyTypeDefaultDescription
idINTEGER PKautoClave primaria auto-incremental
trigger_toolTEXTHerramienta que activa la macro
trigger_args_patternTEXTnullPatron de argumentos a coincidir
next_toolTEXTHerramienta a encadenar a continuacion
next_argsTEXTArgumentos para la herramienta encadenada
confidenceREAL0.0Puntuacion de confianza de la macro
used_countINTEGER0Numero de veces que se ha usado la macro
created_atTEXTMarca de tiempo RFC3339
updated_atTEXTMarca de tiempo RFC3339

Tabla scheduled_tasks

KeyTypeDefaultDescription
idTEXT PKβ€”Clave primaria UUID
nameTEXTβ€”Etiqueta legible de la tarea
cron_exprTEXTβ€”Expresion cron de 5 campos calculada
original_scheduleTEXTβ€”Entrada del usuario (lenguaje natural o cron)
promptTEXTβ€”Prompt del agente a ejecutar segun programacion
sourceTEXTβ€”"tool" (creada via herramienta) o "config" (desde config.toml)
is_oneshotINTEGER0Ejecutar una vez y luego auto-eliminar
is_pausedINTEGER0Las tareas pausadas no se ejecutan
is_trustedINTEGER0Las tareas trusted omiten la aprobacion de terminal
next_run_atTEXTβ€”Marca de tiempo RFC3339 de la proxima ejecucion programada
last_run_atTEXTnullMarca de tiempo RFC3339 de la ultima ejecucion
created_atTEXTβ€”Marca de tiempo RFC3339
updated_atTEXTβ€”Marca de tiempo RFC3339

Tabla terminal_allowed_prefixes

KeyTypeDefaultDescription
prefixTEXT PKβ€”Prefijo de comando persistido desde aprobaciones "Permitir Siempre"

Memoria de Trabajo

Un HashMap<String, VecDeque<Message>> en memoria por sesion, limitado a working_memory_cap (por defecto 50). Evita consultas a la base de datos para el historial de conversacion reciente.

Recuperacion Tri-Hibrida

El metodo get_context combina tres estrategias de recuperacion:

EstrategiaFuenteLimiteProposito
RecenciaUltimos N mensajes10Continuidad conversacional
Relevanciaimportance ≥ 0.85Memorias criticas marcadas
SimilitudSimilitud vectorial > 0.655Busqueda semantica via embeddings

Los resultados se deduplican por ID de mensaje antes de incluirse en el contexto.

Servicio de Embeddings

  • Modelo: AllMiniLML6V2 (via fastembed)
  • Se ejecuta en segundo plano β€” genera embeddings de nuevos mensajes despues de agregarlos
  • Habilita la rama de similitud de la recuperacion tri-hibrida

Consolidacion de Memoria

Una tarea en segundo plano se ejecuta cada consolidation_interval_hours (por defecto 6). Comprime conversaciones antiguas en resumenes usando el modelo rapido, reduciendo almacenamiento y uso de ventana de contexto.

Puntuacion de Importancia

RolPuntuacion por Defecto
Mensaje de usuario0.5
Respuesta del asistente0.5
Salida de herramienta0.3
Mensaje del sistema0.1

Pool de Conexiones

  • Pool SQLite: maximo 5 conexiones
  • Modo de journal: WAL (Write-Ahead Logging) para lecturas concurrentes
  • Crea automaticamente la base de datos y las tablas si no existen