El registro oficial de la memoria de agentes v0.3.0 · pre-release · MIT

El problema de la memoria de los agentes

La memoria de los agentes lo guarda todo. Sea verdad o no.

Verimem es una capa de memoria persistente cuyo add() hace pasar cada escritura por una puerta de admisión anti-confabulación — ¿la fuente realmente implica el hecho? — y cuyo search() devuelve procedencia en cada lectura. Un hipocampo con un notario en la puerta.

100% gratuito y open source — licencia MIT. Autoalojado y local-first: sin cuenta, sin API key, sin facturación.

Admitidogrounding 0.97
Escritura candidata
«El despliegue usa PostgreSQL 16.»
fuente ⊢ hecho — la nota de versión citada implica la afirmación.
estado ADMITIDO · guardado con procedencia.
§01 La puerta de admisión

Las demás capas de memoria guardan lo que sea que emita su extractor. Verimem no.

Al escribir, un hecho candidato es admitido, degradado o rechazado — según si la fuente citada realmente lo implica. Un filtro léxico barato, sin LLM, degrada primero las afirmaciones sin respaldo del tipo «funciona / verificado / hecho»; el modo más estricto añade una comprobación de implicación fuente⊢hecho. Medido en SNLI alcanza AUROC 0.971, y ese número es independiente del juez.

Una revisión estructurada de mem0, Zep, Letta, Cognee y MemOS encontró que ninguno lleva una puerta de admisión en escritura. Esa puerta — más la procedencia que cada lectura trae de vuelta — es todo el punto.

Ilustrativo — la puerta en tres veredictos

Admitido0.97
Escritura · implicada
«El despliegue usa PostgreSQL 16.»
ADMITIDO · guardado con procedencia
Degradado0.41
Escritura · sin respaldo
«La migración está hecha y todo funciona.»
DEGRADADO · conservado, marcado como baja confianza
Rechazado0.08
Escritura · contradicha
«El límite de la API es 10 000 req/s.»
RECHAZADO · la fuente dice 1000 — no guardado

Procedencia en cada lectura

Las lecturas no solo devuelven texto — devuelven de cada hecho su status y el grounding_score del momento de escritura, para que tu código condicione por confianza en vez de fiarse a ciegas. Y update() nunca destruye el hecho anterior: lo sustituye, dejando un rastro history() auditable.

memory.py · la escritura pasa por la puerta, la lectura devuelve la procedencia

from engram import Memory

mem = Memory()                                  # local SQLite, offline
mem.add("The deployment uses PostgreSQL 16.")   # write goes THROUGH the gate

for hit in mem.search("which database?"):       # read returns provenance
    print(hit["text"], hit["status"], hit["grounding_score"])
# -> The deployment uses PostgreSQL 16.  ADMITTED  0.97
§02 Evidencia — medida, no proclamada
MétricaResultadoPara que conste
Entailment de la puerta de escritura AUROC 0.971 Fuente⊢hecho, independiente del juez (SNLI). El moat del camino de escritura.
Alucinación aguas abajo 95.9% → 12.2% −83,7 pp; McNemar p≈6e-44, replicado en 2 semillas. Funciona convirtiendo la confabulación en abstención (omisión 3%→85%), no elevando la corrección — y este brazo está acoplado al juez.
Over-rejection de hechos limpios 30–39% El coste honesto en el umbral estricto. La puerta local destilada (v2) admite el 0,924 de los hechos limpios, cerrando en gran parte esto.
Retrieval recall@5 · LongMemEval-s 0.8745 500 completo, sin juez, mismo embedder e5, cero APIs externas. Fusion ON vs 0.8525 OFF (+2,2 pp). Un n=300 anterior daba 0.909 — optimista; el número sobre 500 completo es el honesto. Esto es recall@k, no exactitud QA de extremo a extremo.
Retrieval en italiano MRR +52% 0.466 → 0.710 al cambiar al embedder e5, con cero regresión en inglés.
Detección de contradicciones · HaluMem TPR 0.66 / FPR 0.0125 Tras la corrección de la supersesión temporal.
Suite de tests 5830 en verde 764 archivos de test, ~84k líneas. Auto-ejecutados, reproducibles desde el repo.

Cada cifra aquí es auto-ejecutada y reproducible desde el repositorio — no es un puesto en una clasificación de terceros. Los números de retrieval son recall@k, no la exactitud QA de extremo a extremo que Mem0 y Zep destacan, así que no son directamente comparables.

§03 La diferencia — una combinación honesta

01Puerta de admisión en escritura

Admite, degrada o rechaza cada escritura por implicación de la fuente. Ningún competidor aquí lleva una.

02Procedencia en lectura

Cada hecho devuelve status + grounding_score; update() sustituye, history() sigue siendo auditable.

03Valid-time bitemporal

valid_until con caducidad neta — una memoria que sabe cuándo un hecho dejó de ser verdad.

04Corre en tu suscripción

Modo MCP hosted: sin API key, sin facturación por token — el LLM del host hace el trabajo.

05Pantalla anti-injection multilingüe

Una pantalla anti prompt-injection en escritura — italiano incluido, no solo inglés.

06MCP-native

228 herramientas de memoria al inicio de sesión en Claude Code, Cursor, Cline, Continue, Zed.

SistemaPuerta de escrituraProcedencia en lecturaEnfoqueMadurez
Mem0 Vector plano + resumen LLM Consolidado, ampliamente adoptado
Zep / Graphiti parcial (temporal) Grafo de conocimiento temporal Comercial, maduro
HippoRAG OpenIE + PageRank Investigación
Verimem Fusion recall + puerta + consolidación en el sueño Recién salido · 0 adopción todavía

Los puntajes y la adopción de competidores varían por fuente y con el tiempo; las dos columnas en las que nos apoyamos — una puerta de escritura y procedencia en lectura — vienen de una revisión estructurada, no de una tabla de marketing.

§04 Lo que Verimem NO es
para que conste
  • 0 adopción.

    Un lanzamiento público recién salido. Nadie depende de él aún — nosotros incluidos, más allá del uso diario del maintainer.

  • No está en PyPI.

    Por ahora se instala desde fuente / git. Un paquete engram-memory es un objetivo post-v0.4.0.

  • Benchmarks propios.

    Cada número es reproducible desde el repo, pero ninguno está auditado por terceros. Trátalos como reproducibles, no certificados.

  • SQLite de un nodo.

    Un solo usuario y local. El scoping multi-tenant existe en la capa de hechos; un store hosted / distribuido no.

  • Grafo de entidades regex-tier.

    El motor entidad+PageRank está vivo sobre datos reales pero el extractor es regex determinista, ejecutado como backfill — aún no conectado al camino de escritura en vivo.

  • Answer-path no probado.

    Una revisión adversaria encontró inflada la primera demo de condicionamiento en respuesta. Solo el moat del camino de escritura se sostiene con su propia evidencia — así que es todo lo que afirmamos.

§05 Instala en 2 minutos

① Python — desde fuente

pip install "git+https://github.com/aureliocpr-ctrl/verimem.git"

Proporciona el comando engram y el SDK from engram import Memory. SQLite local, offline, puerta activa por defecto.

github.com/aureliocpr-ctrl/verimem ↗ · MIT · README · BENCHMARKS.md

② Como servidor MCP — Claude Code, Cursor, Cline, Zed

{
  "mcpServers": {
    "engram": {
      "command": "engram",
      "args": ["mcp"],
      "env": { "ENGRAM_HOSTED": "1" }
    }
  }
}

Reinicia tu host; las herramientas de memoria quedan disponibles con cero API key. El motor se distribuye ahora como engram — el cambio de nombre a Verimem está en curso.