Engram
Engram
Cada pensamiento deja una huella.
Dale a tu Agente de IA un cerebro que sabe olvidar.
Engram es un servicio de memoria MCP que se ejecuta completamente de forma local. No se trata solo de "almacenar y recuperar"; simula los mecanismos humanos de olvido, refuerzo y asociación, permitiendo que el Agente recuerde lo que realmente importa a través de las sesiones y olvide naturalmente los detalles innecesarios.
Sin dependencia de la nube, tus datos siempre están en tu máquina.
¿Qué problemas resuelve?
Problema 1: Ruptura del estado entre sesiones
Cada conversación con un Agente de IA es una hoja en blanco. Las preferencias que le contaste ayer, las decisiones arquitectónicas tomadas la semana pasada, los errores que cometiste el mes pasado... todo se borra en la siguiente conversación. Limpiar la ventana de contexto es como formatear el cerebro.
Problema 2: Entropía de archivos
Meter todo el contexto en CLAUDE.md o .cursorrules parece resolver el problema, pero en realidad crea uno nuevo: los archivos se vuelven interminables, la información obsoleta se mezcla con la nueva y el costo de mantenimiento manual aumenta constantemente. No estás gestionando la memoria, estás manteniendo un documento cada vez más difícil de leer.
Problema 3: Pérdida del estado de ingeniería
Qué hizo el Agente, dónde se quedó atascado, qué debe hacer a continuación... no hay lugar donde guardar estos estados de ingeniería estructurados. Cada nueva sesión requiere 10 minutos de "re-alineación" antes de poder hacer el trabajo real.
La solución de Engram: No es "guardar todo", sino simular el mecanismo humano de olvido-refuerzo-asociación:
Las preferencias y decisiones importantes tienen una degradación muy lenta, conservándose casi permanentemente.
El contexto temporal de depuración se desvanece naturalmente en 11 días.
El conocimiento que se recuerda repetidamente se vuelve más sólido con cada uso.
La información contradictoria se sobrescribe automáticamente, evitando conflictos internos.
Nuevo en v0.2: Traspaso de sesión estructurado (session handoff), permitiendo que la siguiente sesión continúe desde el punto de interrupción en lugar de empezar de cero.
Nuevo en v0.4: Centro de estado de ingeniería — atribución de fallos estructurada (
track_failure) y seguimiento de progreso (track_progress), para que el Agente no solo recuerde información, sino también el estado del proyecto.
Related MCP server: Ori Mnemos
Mecanismos principales
1. Curva del olvido de Ebbinghaus
Cada memoria tiene un valor de fuerza (strength) que decae siguiendo una curva exponencial con el tiempo:
effective_λ = base_λ × (1 - importance × 0.8)
strength = importance × e^(-λ × days) × (1 + recall_count × 0.2)Tres factores determinan cuánto tiempo sobrevive una memoria:
Factor | Función | Mecanismo |
Importancia (importance) | Cuanto más importante, más lenta la degradación | Puede reducir la tasa de degradación hasta un 80% |
Categoría (category) | Diferentes tipos tienen diferentes vidas medias | Ver tabla inferior |
Recuento de recuerdo (recall_count) | Cuanto más se usa, más fuerte es | +20% de fuerza por cada recuperación |
Cuatro categorías de memoria:
Categoría | Tasa de degradación λ | Vida media | Escenario de uso |
| 0.10 | ~38 días | Metodologías validadas, patrones de arquitectura |
| 0.16 | ~24 días | Preferencias de usuario, identidad, selección técnica |
| 0.20 | ~19 días | Contexto inferido, información incierta |
| 0.35 | ~11 días | Errores cometidos, problemas de entorno, parches temporales |
Intención del diseño: Las estrategias exitosas se recuerdan por más tiempo (strategy ~38 días), mientras que las lecciones de los fallos se recuerdan por menos tiempo (failure ~11 días), ya que el entorno cambia y los problemas de ayer pueden estar resueltos mañana.
2. Deduplicación inteligente y resolución de contradicciones
Al almacenar una nueva memoria, el sistema no solo la añade, sino que primero realiza una comparación semántica con las memorias existentes:
相似度 ≥ 0.85 → REINFORCE 只增加回忆次数,不重复存储
相似度 0.65~0.84 → 检测矛盾
├── 语义矛盾 → REPLACE 用新内容覆盖旧内容
└── 语义兼容 → MERGE 合并为一条更完整的记忆
相似度 < 0.65 → NEW 存为新记忆La detección de contradicciones se logra mediante análisis de polaridad: extrayendo palabras positivas (prefer/love/adopt) y negativas (avoid/hate/reject), junto con negaciones (not/don't/never), para determinar si dos memorias expresan posturas opuestas.
Ejemplo: Si ya existe "El usuario prefiere TypeScript" y se intenta guardar "El usuario decide abandonar TypeScript por Go", el sistema identifica la contradicción y reemplaza automáticamente la memoria antigua por la nueva.
3. Recuperación híbrida (Vector + BM25 + Grafo)
Al recuperar memorias, se utiliza una puntuación híbrida de tres vías:
最终得分 = 0.4 × BM25关键词得分 + 0.6 × (语义相似度 × 衰减强度) + 图谱加成¿Por qué no usar solo búsqueda vectorial?
Método de búsqueda | Especialidad | Debilidad |
Búsqueda vectorial | "Esa forma de despliegue que mencionó" → Comprensión semántica | Coincidencia exacta de términos |
BM25 | "DuckDB" → Palabras clave precisas | Semántica similar pero con distinta redacción |
Expansión de grafo | A→B→C descubrimiento de asociaciones | Memorias aisladas sin relación |
Resultado de la fusión: Al buscar "rendimiento de base de datos", no solo se encuentran memorias que mencionan explícitamente el rendimiento, sino que a través del grafo se encuentran estrategias de indexación o decisiones de caché relacionadas.
4. Grafo semántico
Cada memoria establece automáticamente asociaciones semánticas con las existentes al ser almacenada:
Calcula la similitud de coseno con todas las memorias existentes.
Si la similitud ≥ 0.40, se crea una arista bidireccional con peso = similitud × 0.5.
Cada memoria se conecta como máximo a sus 5 vecinos más similares.
Dos funciones clave del grafo:
Descubrimiento asociativo: Al recuperar, se realiza un BFS (profundidad máxima 2) desde la memoria encontrada para hallar memorias asociadas, incluso si no tienen similitud semántica directa con el término de búsqueda. Es como la asociación humana de "ir de un tema a otro".
Protección en cadena: Cuando una memoria cae por debajo del umbral de degradación, si sus vecinos siguen siendo memorias fuertes, se conserva, ya que podría ser el puente que conecta dos puntos de conocimiento importantes.
5. Consolidación y eliminación automática
El sistema ejecuta una tarea de mantenimiento cada 12 horas:
Consolidación (Consolidation):
Identifica clústeres de memoria con similitud ≥ 0.70.
Conserva la memoria con mayor importancia como memoria principal.
Fusiona la información única de las demás memorias.
Recalcula los vectores y las relaciones del grafo.
Elimina las memorias redundantes fusionadas.
Eliminación (Pruning):
Calcula la fuerza actual de cada memoria.
Si la fuerza < 0.05 y pasa la comprobación de seguridad en cadena → Eliminar.
Si la fuerza < 0.05 pero sus vecinos siguen siendo fuertes → Conservar (protección en cadena).
Esto significa que la base de memoria se mantiene concisa automáticamente, sin necesidad de limpieza manual ni crecimiento infinito.
Centro de estado de ingeniería (v0.4)
Engram no es solo un plugin de memoria para "guardar información", es una capa de estado que entiende los procesos de ingeniería.
Atribución de fallos (track_failure)
Cuando el Agente encuentra un error, fallo en pruebas o problema de despliegue, se registra en un formato estructurado:
# MCP 调用
track_failure(
error="CSRF token missing on checkout",
component="payment",
severity="critical", # → importance=0.9
root_cause="middleware not loaded after refactor",
fix="re-add CsrfMiddleware to pipeline",
related_test_ids=["test_checkout_01", "test_payment_csrf"]
)Decisiones de diseño:
severityse mapea automáticamente aimportance(critical=0.9, major=0.7, minor=0.5).Se utiliza la categoría
failure(degradación más rápida λ=0.35, vida media ~11 días) — el entorno cambia, los registros de fallos antiguos caducan naturalmente.El campo
componentpermite estadísticas agregadas por módulo para localizar rápidamente áreas de alto riesgo.
Seguimiento de progreso (track_progress)
Seguimiento del estado de funciones/tareas entre sesiones:
track_progress(
feature="login-flow-refactor",
status="in_progress", # → importance=0.8
completion=60,
blockers=["waiting for API design review"],
quality_score=0.85,
notes="auth module done, UI pending"
)Decisiones de diseño:
statusse mapea automáticamente aimportance(blocked=0.9 máximo, done=0.5 mínimo).Se utiliza la categoría
strategy(degradación más lenta λ=0.10, vida media ~38 días) — el estado de progreso debe recordarse por más tiempo.Las funciones completadas desaparecen naturalmente por degradación, sin necesidad de limpieza manual.
Métricas de ingeniería (mejora de memory_stats)
memory_stats ahora agrega automáticamente datos de ingeniería:
{
"total": 42,
"categories": {"fact": 20, "failure": 8, "strategy": 14},
"engineering": {
"failures": {
"total": 8,
"by_component": {"auth": 5, "payment": 3},
"by_severity": {"critical": 2, "major": 6}
},
"features": {
"total_tracked": 4,
"active": {
"login-refactor": {"status": "in_progress", "completion": 60},
"payment-fix": {"status": "blocked", "completion": 30}
}
}
}
}Arquitectura técnica
┌──────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / Cursor / ...) │
└──────────────────┬───────────────────────────┘
│ stdio (JSON-RPC)
┌──────────────────▼───────────────────────────┐
│ server.py │
│ 8 MCP tools · APScheduler (12h 维护) │
├──────────────────────────────────────────────┤
│ │
│ ┌─ 写入路径 ──────┐ ┌─ 读取路径 ──────┐ │
│ │ resolve.py │ │ retrieve.py │ │
│ │ 去重/矛盾消解 │ │ 混合检索+评分 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ┌─ 维护路径 ──────┐ ┌─ 统计路径 ──────┐ │
│ │ consolidator │ │ decay.py │ │
│ │ 聚类合并+剪枝 │ │ 遗忘曲线+强度 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
├──────────────────────────────────────────────┤
│ embedding.py │ graph.py │
│ 768d / 1024d 向量编码 │ NetworkX 语义图谱 │
├──────────────────────────────────────────────┤
│ db.py — DuckDB │
│ 向量存储 · BM25 全文索引 · CRUD │
└──────────────────────────────────────────────┘
数据文件(~/.engram/):
├── memories.duckdb # 向量数据库(单文件,零运维)
├── graph.json # 语义图谱(JSON 序列化)
└── model_cache/ # 嵌入模型缓存Interfaz de herramientas MCP
Herramienta | Parámetros | Propósito |
|
| Recuperación semántica de memoria, llamada al inicio de cada tarea. Devuelve metadatos |
|
| Almacena nueva memoria (deduplicación automática), devuelve memory_id |
|
| Actualiza una memoria existente |
|
| Traspaso de sesión estructurado, registra el progreso actual para continuar en la siguiente sesión |
|
| v0.4 Atribución de fallos estructurada, asocia automáticamente componentes/severidad/soluciones |
|
| v0.4 Instantánea de progreso de funciones, seguimiento entre sesiones |
|
| Dispara manualmente la consolidación de memoria |
|
| Estadísticas de memoria + v0.4 métricas de ingeniería (tendencias de fallos, salud de componentes, funciones activas) |
Referencia de importancia
Valor | Escenario de uso |
0.9–1.0 | Identidad central, hechos permanentes ("El usuario es ingeniero backend") |
0.7–0.8 | Preferencias fuertes, decisiones de arquitectura ("El proyecto usa Go + PostgreSQL") |
0.5 | Hechos generales del proyecto ("Recientemente refactorizando el módulo de login") |
0.2–0.3 | Contexto de sesión temporal ("Cuenta de prueba usada para esta depuración") |
Beneficios para el usuario
1. El Agente realmente te "conoce"
Ya no tienes que presentar tu stack tecnológico, hábitos de codificación y contexto del proyecto en cada conversación. El Agente recuerda que prefieres Go sobre Java, sabe que el proyecto usa un monorepo y conoce las decisiones arquitectónicas que tomaste la semana pasada.
2. El conocimiento evoluciona naturalmente
La resolución de contradicciones significa que el conocimiento del Agente siempre está actualizado. ¿Cambiaste de React a Vue? Una conversación lo actualiza automáticamente. No necesitas mantener manualmente una lista de "lo que el Agente debería saber".
3. Cero mantenimiento
No necesitas limpiar memorias antiguas manualmente: la curva de olvido las elimina.
No necesitas fusionar duplicados manualmente: el consolidador lo hace.
No te preocupes por la expansión de datos: mantenimiento automático cada 12 horas.
No necesitas servicios externos: DuckDB en un solo archivo, listo para usar.
4. Privacidad total
Todos los datos se guardan en ~/.engram/, sin conexión a internet, sin subidas, sin depender de servicios en la nube. El modelo de embedding también se ejecuta localmente. Tus recuerdos son tuyos.
5. Descubrimiento asociativo
La expansión del grafo permite que el Agente no solo "busque y devuelva", sino que pueda encontrar conocimientos relacionados pero no coincidentes directamente. Es como preguntarle a un colega veterano: no solo responde, sino que añade: "Por cierto, esto está relacionado con aquello de la otra vez".
6. Más inteligente con el uso
Refuerzo de memoria: las memorias recuperadas repetidamente aumentan su fuerza y disminuyen su tasa de degradación. El Agente aprende automáticamente qué conocimiento es más valioso para ti.
Inicio rápido
# 安装
pip install mcp-engram
# 初始化(下载模型、创建数据库)
engram-setup
# 按照输出提示将配置块添加到 Claude Code 配置中Configuración de Claude Code
{
"mcpServers": {
"engram": {
"command": "engram",
"env": {
"HF_ENDPOINT": "https://hf-mirror.com"
}
}
}
}Integración con CLAUDE.md
Añade esto a tu CLAUDE.md:
## Memory Rules
### Step 1 — 先回忆再行动
每次任务开始时,用请求中的关键词调用 `recall_memory`。
### Step 2 — 学到新东西就存
| 情况 | 操作 |
|------|------|
| 全新知识 | `store_memory(content, importance)` |
| 补充已有 | `update_memory(memory_id, merged_content)` |
| 推翻已有 | `update_memory(memory_id, new_content)` |Variables de entorno
Variable | Valor por defecto | Descripción |
|
| Espejo del modelo HuggingFace |
|
| Nombre del modelo de embedding |
Consulta rápida de umbrales clave
Parámetro | Valor | Significado |
Dimensión de embedding | 768 | all-mpnet-base-v2 |
Deduplicación REINFORCE | ≥ 0.85 | Casi idéntico, solo incrementa recuento de recuerdo |
Deduplicación MERGE/REPLACE | 0.65~0.84 | Detecta contradicción o fusión |
Clustering de consolidación | ≥ 0.70 | Fusión automática de memorias similares |
Creación de aristas en grafo | ≥ 0.40 | Crea asociación semántica |
Umbral de eliminación | < 0.05 | Elimina memorias degradadas |
Umbral alto de recuperación | ≥ 0.50 | Búsqueda vectorial principal |
Umbral bajo de recuperación | ≥ 0.20 | Búsqueda degradada |
Peso BM25 | 40% | Contribución de coincidencia de palabras clave |
Peso vectorial | 60% | Contribución de coincidencia semántica |
Bonificación de grafo | 30% | Puntuación extra por memorias asociadas |
Evaluación de referencia LoCoMo
Evaluación de calidad de recuperación basada en LoCoMo (referencia de memoria de conversación a largo plazo de Snap Research). LoCoMo es el estándar de evaluación utilizado por productos como Mem0/Zep/Memobase/MemMachine.
Configuración de evaluación
Dataset: locomo10.json (2/10 conversaciones, 233 QA, excluyendo adversarial)
Recuperación: recall() top-k=5
LLM: DeepSeek-V3.2 / GLM-5.1 (Nota: los productos base usan GPT-4o-mini)
Métricas: Token-level F1 (métrica oficial de LoCoMo) + Hit@5 (tasa de acierto de recuperación independiente del LLM)
Turn Mode — Mejor configuración (bge-m3 + bge-reranker-v2-m3, DeepSeek-V3.2)
Recuperación en dos etapas: recall top-50 → CrossEncoder rerank to top-5, corrección de peso importance=1.0
Categoría | Cantidad | F1 | Hit@5 |
Single-Hop | 114 | 0.5121 | 76.3% |
Temporal | 63 | 0.4501 | 95.2% |
Multi-Hop | 43 | 0.3181 | 60.5% |
Open-Domain | 13 | 0.1324 | 61.5% |
General | 233 | 0.4383 | 77.7% |
Turn Mode — Ruta de optimización (DeepSeek-V3.2)
Configuración | F1 General | Hit@5 General |
bge-m3 + reranker + weight fix | 0.4383 | 77.7% |
bge-m3 + reranker (r20) | 0.3913 | 69.1% |
bge-m3 (API, 1024d) | 0.3514 | 61.8% |
all-mpnet-base-v2 (local, 768d) | 0.2916 | 51.5% |
Cuatro rondas de optimización acumulan F1 +50.3% (0.29 → 0.44), Hit@5 +26.2pp (51.5% → 77.7%).
Turn Mode — Comparativa de LLM (all-mpnet-base-v2)
LLM | F1 General | Single-Hop | Temporal | Multi-Hop | Open-Domain | Tiempo |
DeepSeek-V3.2 | 0.2916 | 0.3470 | 0.3257 | 0.1772 | 0.0192 | 239s |
GLM-5.1 | 0.2477 | 0.2672 | 0.3214 | 0.1430 | 0.0659 | 2011s |
Observation Mode (hechos abstractos asertivos)
Categoría | Cantidad | F1 |
Single-Hop | 114 | 0.3000 |
Multi-Hop | 43 | 0.1837 |
Open-Domain | 13 | 0.0659 |
Temporal | 63 | 0.0590 |
General | 233 | 0.2003 |
Comparativa con la industria
Sistema | F1 General | LLM | Embedding |
MemMachine | 0.8487 | GPT-4o-mini | — |
Memobase | 0.7578 | GPT-4o-mini | — |
Zep | 0.7514 | GPT-4o-mini | — |
Mem0 | 0.6688 | GPT-4o-mini | — |
Engram | 0.4383 | DeepSeek-V3.2 | bge-m3 + reranker |
Conclusión: Cuatro rondas de optimización mpnet(0.29) → bge-m3(0.35) → +reranker(0.39) → +weight fix+r50(0.44). Hit@5: 51.5% → 77.7%. La brecha con Mem0(0.67) se redujo del 56% al 35%.
Consulta rápida de mejor configuración
Configuración recomendada:
bge-m3(1024d) +bge-reranker-v2-m3recuperación en dos etapas
Métrica
Valor
Descripción
F1 General
0.4383
Token-level, DeepSeek-V3.2
Hit@5 General
77.7%
Tasa de acierto de recuperación pura, independiente del LLM
Hit@5 Temporal
95.2%
Rendimiento destacado en preguntas temporales
Magnitud de optimización
F1 +50.3%, Hit +26.2pp
Acumulado en 4 rondas (respecto al mpnet inicial)
Parámetros clave:
recall top-50 → rerank to top-5,importance=1.0corrección de peso. Despliegue local sin dependencia de la nube, brecha con Mem0 (usando GPT-4o-mini) reducida al 35%.
Desarrollo
git clone https://github.com/hugfeature/engram.git
cd engram
pip install -e ".[dev]"
pytest tests/ -vLicencia
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Persistent memory for AI agents. EU-hosted, privacy-first, hybrid recall, contradiction detection.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local memory engine for AI agents. Stores conversation episodes, consolidates knowledge through a neuroscience-inspired lifecycle, and builds a personal knowledge graph — all in a local SQLite database.14MIT
- AlicenseNot gradedqualityAmaintenanceOpen-source persistent memory infrastructure for AI agents.150323Apache 2.0
- AlicenseNot gradedqualityDmaintenancePersistent memory for AI coding agents with local-first, zero-cost, privacy-first SQLite/FTS5 storage and biological-inspired decay.182MIT
- AlicenseNot gradedqualityBmaintenanceLocal-first, multi-user shared memory for AI agents with semantic search, offline support, and team synchronization.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hugfeature/engram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server