Skip to main content
Glama

Memoria duradera para agentes de IA: grafo de conocimiento temporal, recuperación híbrida, SQLite o PostgreSQL.

crates.io Docker MCP Registry License

java-ai-memory.dev · Código fuente · Documentación de JamJet · Discord


Engram es una capa de memoria duradera para agentes de IA. Extrae hechos de las conversaciones, los almacena en un grafo de conocimiento temporal y los recupera mediante una búsqueda híbrida semántica y por palabras clave, respaldada por un único archivo SQLite o una base de datos PostgreSQL.

Este repositorio aloja el registro de Glama. El código fuente reside en el repositorio principal de JamJet.

Inicio rápido: 30 segundos

# Docker — uses local Ollama by default
docker run --rm -i \
  -v engram-data:/data \
  ghcr.io/jamjet-labs/engram-server:0.5.0

O instálelo desde crates.io:

cargo install jamjet-engram-server
engram serve

Configuración de Claude Desktop

Añada esto a ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "engram": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "engram-data:/data",
        "ghcr.io/jamjet-labs/engram-server:0.5.0"
      ]
    }
  }
}

Tras reiniciar, el modelo tendrá disponibles 11 herramientas MCP.

Herramientas MCP (11)

Herramientas de memoria (7)

Herramienta

Descripción

memory_add

Extrae y almacena hechos de los mensajes de conversación utilizando la extracción de hechos basada en LLM. Efectos secundarios: llama al LLM configurado para analizar los hechos y luego los escribe en el grafo de conocimiento. Devuelve los IDs de los hechos extraídos. Requiere el array messages y user_id.

memory_recall

Búsqueda semántica sobre hechos almacenados utilizando similitud vectorial. Solo lectura, sin efectos secundarios. Devuelve hechos clasificados que coinciden con la consulta, limitados por user_id y un org_id opcional. Úselo para recuperar contexto relevante antes de generar una respuesta.

memory_context

Ensambla un bloque de contexto con presupuesto de tokens para prompts de LLM con selección de hechos basada en niveles. Solo lectura. Devuelve una cadena formateada con los hechos más relevantes, limitada al presupuesto de tokens especificado. Úselo en lugar de memory_recall cuando necesite un fragmento de prompt listo para usar.

memory_search

Búsqueda por palabras clave sobre hechos utilizando búsqueda de texto completo (SQLite FTS5 / Postgres). Solo lectura, sin efectos secundarios. Devuelve hechos que coinciden con palabras clave exactas. Úselo cuando necesite una coincidencia de términos precisa en lugar de la similitud semántica de memory_recall.

memory_forget

Eliminación lógica de un hecho por ID con un motivo opcional. Efecto secundario: marca el hecho como eliminado en el grafo de conocimiento (no lo elimina físicamente). Irreversible mediante esta herramienta. Úselo cuando un usuario solicite eliminar información específica.

memory_stats

Obtiene estadísticas agregadas: total de hechos, hechos válidos (no eliminados), recuento de entidades y recuento de relaciones. Solo lectura, sin efectos secundarios. Úselo para comprender el tamaño y el estado del almacén de memoria.

memory_consolidate

Ejecuta un ciclo de mantenimiento sobre el grafo de conocimiento: degrada hechos obsoletos, promueve los de alta confianza, elimina duplicados cercanos y resume clústeres. Efectos secundarios: modifica las puntuaciones de los hechos y puede fusionar o archivar hechos. Ejecútelo periódicamente para mantener la memoria precisa.

Herramientas de almacenamiento de mensajes (4)

Herramienta

Descripción

messages_save

Guarda mensajes de chat para una conversación por ID. Efectos secundarios: escribe mensajes en el almacén y, opcionalmente, activa la extracción de hechos (controlada por --extract-on-save). Úselo para persistir el historial completo de la conversación junto con los hechos extraídos.

messages_get

Recupera todos los mensajes de una conversación por ID. Solo lectura, sin efectos secundarios. Devuelve el array de mensajes ordenado. Úselo para reproducir o inspeccionar una conversación pasada.

messages_list

Lista todos los IDs de conversación en el almacén de mensajes. Solo lectura, sin efectos secundarios. Devuelve un array de cadenas de ID de conversación. Úselo para descubrir qué conversaciones están almacenadas antes de recuperarlas con messages_get.

messages_delete

Elimina todos los mensajes de una conversación por ID. Efecto secundario: elimina permanentemente los mensajes de la conversación del almacén. Irreversible. No afecta a los hechos extraídos; use memory_forget para eso.

Todas las herramientas de memoria están limitadas por (org_id, user_id, session_id): org es el nivel más general, session el más específico.

Proveedores de LLM

Agnóstico al proveedor. Un binario, configure ENGRAM_LLM_PROVIDER=... y listo:

Proveedor

Valor de entorno

Notas

Ollama

ollama (predeterminado)

Local, gratuito, sin claves API

Compatible con OpenAI

openai-compatible

OpenAI, Azure, Groq, Together, Mistral, DeepSeek, vLLM, LM Studio, ...

Anthropic

anthropic

Claude mediante Messages API

Google

google

Gemini mediante generateContent

Comando de shell

command

Redirigir a cualquier script externo

Mock

mock

Determinista, solo para pruebas

# Example: use Groq instead of Ollama
docker run --rm -i \
  -e ENGRAM_LLM_PROVIDER=openai-compatible \
  -e ENGRAM_OPENAI_BASE_URL=https://api.groq.com/openai/v1 \
  -e OPENAI_API_KEY=gsk_... \
  -v engram-data:/data \
  ghcr.io/jamjet-labs/engram-server:0.5.0

¿Por qué Engram?

Problema

Respuesta de Engram

Cada biblioteca de memoria de agentes es primero para Python

Núcleo en Rust con clientes nativos para Python, Java y MCP

Necesita Postgres + Qdrant + Neo4j solo para probar

Un solo archivo SQLite (cero infraestructura) o Postgres cuando lo necesite

El historial de conversación no es memoria de conocimiento

Pipeline de extracción de hechos: hechos estructurados a partir de mensajes

Los hechos antiguos se desvían y contradicen

Detección de conflictos + consolidación: degradar, promover, eliminar duplicados, resumir

La recuperación de memoria es semántica O por palabras clave

Recuperación híbrida: búsqueda vectorial + FTS5 en una sola consulta

El soporte MCP es una ocurrencia tardía

Nativo de MCP: 11 herramientas expuestas por un solo binario

No se puede aislar la memoria por usuario o inquilino

Ámbitos de primera clase: org / usuario / sesión integrados en cada consulta

SDKs de cliente

Lenguaje

Paquete

Instalación

Python

jamjet (incluye EngramClient)

pip install jamjet

Java

dev.jamjet:jamjet-sdk (incluye EngramClient)

Maven Central

Spring Boot

dev.jamjet:engram-spring-boot-starter

Maven Central

Rust

jamjet-engram (incrustar directamente)

cargo add jamjet-engram

Relacionado

Licencia

Apache 2.0: consulte LICENSE.


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/jamjet-labs/engram-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server