BHGBrain se lanzó hace una semana como un servidor de memoria MCP de código abierto: un cerebro vectorial compartido para agentes de IA construido sobre SQLite y Qdrant, con recuperación semántica, deduplicación automática y búsqueda híbrida. El lanzamiento inicial cubrió la arquitectura central — pipeline de escritura de doble almacén, tipos de memoria, namespaces, colecciones, autenticación empresarial y escenarios multi-agente.

Esta actualización cubre lo que se ha enviado desde entonces: un sistema completo de ciclo de vida de memoria, búsqueda significativamente mejorada, funciones de seguridad operativa y documentación multilingüe. Estas no son adiciones menores — el sistema de retención por niveles en particular reemplaza lo que era almacenamiento plano con una gestión inteligente del ciclo de vida que cambia cómo los agentes interactúan con la memoria a lo largo del tiempo.


Ciclo de Vida de la Memoria: Niveles, Ventanas Deslizantes y Promoción Automática

Retención por Niveles (T0–T3)

Cada recuerdo en BHGBrain ahora se asigna a un nivel de retención en el momento de la escritura. Cuatro niveles cubren todo el espectro, desde conocimiento de referencia permanente hasta contexto de trabajo efímero:

NivelEtiquetaTTLContenido Típico
T0FundacionalNunca expiraReferencias de arquitectura, mandatos de cumplimiento, políticas de empresa
T1Institucional1 año sin accesoDecisiones de diseño, contratos de API, runbooks, estándares de codificación
T2Operacional90 días sin accesoEstado del proyecto, resultados de sprint, investigaciones técnicas
T3Efímero30 días sin accesoTickets de incidencias, resúmenes de correos, sesiones de depuración

La asignación de nivel sigue una cadena de prioridad: el retention_tier explícito proporcionado por quien llama tiene prioridad; en caso contrario, las categorías son siempre T0; luego se aplican heurísticas basadas en la fuente (recuerdos procedurales de agentes → T1, episódicos → T2); luego la clasificación por LLM cuando el pipeline de extracción está activo; y finalmente un valor predeterminado de T2 si nada más coincide.

Los recuerdos T0 nunca expiran. También están excluidos de todos los trabajos de limpieza, almacenados con contenido completo en SQLite para recuperación si el almacén de vectores necesita reconstruirse, y reciben un impulso de +0.1 en la puntuación de los resultados de búsqueda híbrida.

TTL de Ventana Deslizante

Los TTL se basan en el acceso, no en la fecha de creación. Cada vez que se recupera o busca un recuerdo, su reloj de caducidad se reinicia al TTL completo desde ese momento. Un recuerdo T3 creado hace 28 días que se recupera hoy se extiende a 30 días a partir de ahora.

Esto significa que la degradación de la memoria está impulsada por el uso real. Los recuerdos que tus agentes referencian activamente siguen vivos. Los recuerdos que genuinamente caen en desuso se degradan naturalmente sin gestión manual. No necesitas adivinar de antemano qué recuerdos importarán a largo plazo.

Promoción Automática

Cualquier recuerdo T2 o T3 accedido 5 o más veces dentro de su ventana TTL se promociona automáticamente un nivel — T3 a T2, T2 a T1. Si el conocimiento operativo demuestra ser consistentemente útil, el sistema lo reconoce y le proporciona almacenamiento más duradero sin que tengas que intervenir.

Combinado con el TTL de ventana deslizante, esto significa que el sistema de retención se adapta al comportamiento real del agente en lugar de requerir que la clasificación inicial sea perfecta.


Mejoras en la Búsqueda

Búsqueda Híbrida RRF

El motor de búsqueda ahora usa Fusión de Rango Recíproco (RRF) para fusionar resultados de dos rutas de recuperación independientes:

  • Búsqueda semántica vectorial — similitud coseno contra embeddings de Qdrant (70% de peso por defecto)
  • Búsqueda de texto completo BM25 — índice FTS5 en SQLite (30% de peso por defecto)

RRF funciona clasificando los resultados de cada sistema de forma independiente, luego calculando una puntuación combinada basada en la posición de cada resultado en ambas listas. Un recuerdo que ocupa el 3er lugar en semántica y el 8vo en texto completo puntúa mejor que uno que ocupa el 1er lugar en semántica y no aparece en texto completo.

Están disponibles tres modos de búsqueda: semantic, fulltext e hybrid. Los pesos son configurables en config.json si tu carga de trabajo se inclina hacia la recuperación por coincidencia exacta o la recuperación puramente semántica.

Deduplicación Semántica Mejorada

La deduplicación ahora ejecuta dos pasadas antes de almacenar un nuevo recuerdo:

  1. Coincidencia de suma de verificación SHA-256 — el contenido se normaliza (espacios en blanco colapsados, mayúsculas normalizadas, puntuación eliminada) antes del hash. El contenido funcionalmente idéntico con diferencias menores de formato se detecta aquí antes de que se calcule cualquier embedding.

  2. Umbral de similitud coseno — el embedding del nuevo recuerdo se compara con los recuerdos existentes. El umbral base es 0.92, con umbrales ajustados por nivel: los recuerdos T0 y T1 usan un umbral más estricto (más difícil de deduplicar contra conocimiento duradero) mientras que T3 usa un umbral más laxo (el contenido efímero se deduplica de forma más agresiva).

Cuando se detecta un duplicado, el recuerdo entrante se fusiona en el registro existente — actualizando la hora de acceso, fusionando etiquetas y preservando el nivel de retención más alto — en lugar de crear una segunda entrada. El espacio vectorial se mantiene limpio.


Seguridad Operativa

Presupuestos de Capacidad

Cada nivel ahora tiene un límite de memoria por namespace:

NivelLímite Predeterminado
T0Ilimitado
T1100,000 recuerdos
T2200,000 recuerdos
T3200,000 recuerdos

Cuando un nivel se acerca a su límite, el endpoint /health lo reporta. Los límites son configurables en config.json. Esto evita que el crecimiento sin límite en T2/T3 de cargas de trabajo de agentes de alto volumen desplace el conocimiento T0/T1 en el espacio vectorial.

Archivo Antes de Eliminar

Los recuerdos expirados nunca se eliminan directamente. Se mueven a una tabla de archive en SQLite antes de ser eliminados del almacén de memoria activo y de Qdrant. El archivo se puede consultar mediante la CLI y retiene el contenido completo, los metadatos y el historial de acceso.

Si un recuerdo fue archivado por error — o si algo que parecía efímero resultó ser importante — puedes restaurarlo. Nada se pierde permanentemente sin una eliminación explícita.


BHGBrain es código abierto, licencia MIT, y está disponible en github.com/Big-Hat-Group-Inc/BHGBrain. Si estás ejecutando agentes de IA en producción y lidiando con el impuesto de contexto — agentes redescubriendo estado que ya han visto, re-explicando arquitectura cada sesión, perdiendo decisiones entre ejecuciones — este es el problema que está diseñado para resolver.


Kevin Kaminski es un principal en Big Hat Group, enfocado en infraestructura de IA empresarial, Microsoft 365 y Windows 365. Construye herramientas de código abierto para equipos que ejecutan agentes de IA en el trabajo.