amem
La capa de memoria para herramientas de codificación de IA. Local-primero, semántica, 9 herramientas MCP con consolidación y alcance de proyecto. Funciona con Claude Code, Cursor, Windsurf y cualquier cliente MCP.
Documentación
amem
La capa de memoria para herramientas de IA de codificación.
Dile a tu IA una vez — lo recuerda en todas partes.
| 🎯 97.8% R@5 | ⚡ ~14ms p50 | 🛠 33 Herramientas | 🔒 100% Local |
|---|---|---|---|
| LongMemEval-S, 500q | Pipeline de recuperación completo | Kit de herramientas de memoria completo | Sin necesidad de nube |
Inicio rápido · Cómo funciona · Puntos de referencia · Herramientas · Panel · Arquitectura
💡 El problema
Cada herramienta de IA empieza desde cero. Cada sesión. Cada herramienta.
- You: "Don't use 'any' in TypeScript" → told Claude 3 times. Copilot still doesn't know.
- You: "We chose PostgreSQL over MongoDB" → explained in Cursor. Claude has no idea.
+ With amem: tell it once, every AI tool remembers — forever.
Verlo en acción
You (in Claude Code): "Don't use any type in TypeScript"
└─ amem stores this as a correction (priority 1.0, confidence 100%)
You (switch to Copilot): starts coding
└─ Copilot already knows — amem feeds it the same correction
You (open Cursor): "What do you remember about TypeScript?"
└─ Instantly recalls: "Don't use any type" + all related preferences
Sin nube. Sin claves API. Un archivo SQLite. Todo permanece en tu máquina.
🚀 Inicio rápido
|
Claude Code (recomendado)
|
GitHub Copilot CLI
|
📦 Cursor / Windsurf / Cualquier cliente MCP
npm install -g @aman_asmuei/amem
amem-cli init # Detects & configures all installed AI tools
amem-cli rules # Generates extraction rules for proactive memory use
O añádelo a tu configuración de MCP manualmente:
{
"mcpServers": {
"amem": {
"command": "npx",
"args": ["-y", "@aman_asmuei/amem"]
}
}
}
Verifica que funciona:
amem-cli stats # Should show "0 memories" initially
💬 Dile a tu IA: "Recuerda: usa siempre TypeScript estricto, nunca uses el tipo any"
🔄 Inicia una nueva sesión: "¿Qué recuerdas sobre TypeScript?" — lo recuerda al instante.
🧬 Impulsado por amem-core
amem es el servidor MCP. El motor de recuperación vive en @aman_asmuei/amem-core.
Claude Code / Copilot / Cursor / any MCP client
│
│ MCP (stdio)
▼
┌──────────────────────────────────┐
│ @aman_asmuei/amem (this pkg) │
│ 33 Tools · 7 Resources · 2 Prompts
│ CLI · Hooks · Dashboard │
└───────────────┬──────────────────┘
│ imports
▼
┌──────────────────────────────────┐
│ @aman_asmuei/amem-core │
│ Embeddings · HNSW · Recall │
│ Knowledge Graph · Reflection │
│ 97.8% R@5 on LongMemEval-S │
└───────────────┬──────────────────┘
▼
┌────────────────────┐
│ SQLite + WAL │
│ ~/.amem/memory.db │
└────────────────────┘
¿Por qué dos paquetes?
| Paquete | Rol | Instalación |
|---|---|---|
@aman_asmuei/amem (este) | Servidor MCP + CLI + hooks | npm i -g @aman_asmuei/amem |
@aman_asmuei/amem-core | Librería TS pura, sin dependencias de MCP | npm i @aman_asmuei/amem-core |
El mismo motor impulsa amem (servidor MCP), aman-agent (CLI), aman-tg (bot de Telegram) y cualquier aplicación Node a la que le des memoria. Las mejoras de recuperación se distribuyen mediante amem-core. Los cambios de herramientas MCP se distribuyen mediante amem. Versionan de forma independiente.
El titular 97.8% R@5 es la calidad del motor de
amem-core(LongMemEval-S, nivel de sesión, 500 preguntas, cero llamadas API) — exactamente lo que obtienes ya sea que lo llames a través de MCP o importes la librería directamente.
⚙️ Cómo funciona
amem captura conocimiento en tres capas — desde completamente automático hasta completamente manual:
| Capa | Cómo | Qué hace |
|---|---|---|
| Automática | Ganchos de ciclo de vida | Captura observaciones de herramientas, extrae automáticamente correcciones/decisiones/patrones al final de la sesión |
| Impulsada por IA | Reglas de extracción | Tu IA llama proactivamente a memory_store cuando la corriges, tomas decisiones o expresas preferencias |
| Manual | Lenguaje natural | "Recuerda: usamos PostgreSQL" o "Olvida la memoria de Redis" |
Tipos de memoria
| Prioridad | Tipo | Ejemplo |
|---|---|---|
| 1.0 | corrección | "No hagas mock de la base de datos en pruebas de integración" |
| 0.85 | decisión | "Elegimos Postgres sobre Mongo por ACID" |
| 0.7 | patrón | "Prefiere retornos tempranos sobre anidamiento" |
| 0.7 | preferencia | "Usa pnpm, no npm" |
| 0.5 | topología | "El módulo de autenticación vive en src/auth/" |
| 0.4 | hecho | "API lanzada en enero de 2025" |
Las correcciones siempre aparecen primero — son las restricciones duras de tu IA.
🔄 Niveles de memoria y validez temporal
Niveles de memoria
| Nivel | Comportamiento |
|---|---|
| Núcleo | Siempre se inyecta al inicio de la sesión (~500 tokens). Tus correcciones más críticas. |
| Trabajo | Alcance de sesión, se muestra automáticamente para la tarea actual. |
| Archivo | Predeterminado. Buscable pero no se inyecta automáticamente. |
Validez temporal
Los recuerdos no son para siempre. Cuando los hechos cambian:
- Los recuerdos antiguos se expiran (no se eliminan) — se conservan para "¿qué era verdad en marzo?"
- Las contradicciones se detectan automáticamente — almacenar una nueva decisión expira automáticamente la anterior
- Consulta cualquier punto en el tiempo con
memory_since
🧠 Bucle de memoria auto-evolutiva
Tu memoria no solo almacena — aprende de su propia estructura. Llama a memory_reflect para activar el motor de reflexión:
memory_reflect → Analyzes your entire memory graph
│
├─ Clusters related memories (HNSW neighbor graph)
├─ Detects contradictions (negation pairs, numerical, low-overlap)
├─ Identifies synthesis candidates
├─ Surfaces knowledge gaps (topics with sparse recall)
└─ Returns a structured report with suggested actions
El bucle de evolución:
- Reflexiona —
memory_reflectagrupa tus recuerdos y encuentra patrones - Sintetiza — la IA fusiona grupos relacionados en principios de orden superior mediante
memory_store - Enlaza —
memory_relateconecta las síntesis con los recuerdos fuente (seguimiento mediante linaje de síntesis) - Repite — en cada ciclo, el grafo se vuelve más coherente y abstracto
El sistema avisa automáticamente cuando la reflexión es necesaria (>7 días o >50 nuevos recuerdos desde la última ejecución).
📊 Cómo se ve el informe de reflexión
# Memory Reflection Report
Analyzed 127 memories in 12ms
Health Score: 68/100
## Stats
- Clusters: 8 (avg size: 4.2)
- Clustered: 34 | Orphans: 93
- Contradictions: 2
- Synthesis candidates: 3
- Knowledge gaps: 4
## Contradictions Found
⚠ Opposing language detected (23d apart, 87% similar)
A: a1b2c3d4 "Always use semicolons in JavaScript..."
B: e5f6g7h8 "Never use semicolons in JavaScript..."
→ Expire older memory a1b2c3d4 — newer supersedes it
## Synthesis Candidates
### cluster-0 (4 patterns)
"These 4 related memories form a cluster about 'typescript, types':
[patterns]:
- 'Always use strict TypeScript types'
- 'Prefer strict null checks'
- 'Use unknown instead of any'
- 'Enable strictNullChecks in tsconfig'
Synthesize into a higher-order principle..."
## Knowledge Gaps
- "kubernetes deployment" — asked 3x, avg 25% confidence
- "database migration strategy" — asked 2x, avg 0% confidence
📈 Puntos de referencia
Precisión de recuperación (LongMemEval)
Todos los números provienen de amem-core v0.5.1 — el motor de recuperación que impulsa este servidor MCP. Cero llamadas API, todo local, totalmente reproducible.
|
LongMemEval-S (nivel de sesión) — métrica principal
500 preguntas · solo CPU · cero llamadas API |
LongMemEval Oracle (nivel de turno)
479 preguntas puntuables · 301s de ejecución · Node 22 |
Pipeline: bge-small-en-v1.5 bi-encoder local + ms-marco-MiniLM-L-6-v2 cross-encoder (int8, por lotes, activado por defecto). Consulta los puntos de referencia de amem-core para desgloses completos por tipo, evolución del pipeline y notas honestas.
Por qué esto importa para la cuestión de "reescribirlo en Rust". La cifra de rerank de 10.3ms anterior refleja una aceleración de ~30% sobre la implementación por pares que reemplazó — lograda con ~20 líneas de procesamiento por lotes más cuantización int8, sin reescritura nativa. Los caminos críticos ya eran eficientes; las ganancias restantes vinieron de usarlos con más cuidado. Nos mantenemos en TypeScript.
Latencia de búsqueda
|
Pipeline de recuperación completo (v0.5.1+)
|
Solo índice HNSW (búsqueda vectorial)
|
Medido: promedio de 100 búsquedas, embeddings de 384 dimensiones, resultados top-10. Sub-0.1ms a cualquier escala — efectivamente O(log n). HNSW es una dependencia opcional; se usa fuerza bruta como respaldo cuando no está disponible. |
🛠️ Referencia de herramientas
Memoria principal (7 herramientas)
| Herramienta | Descripción |
|---|---|
memory_store | Almacena un recuerdo con tipo, etiquetas y confianza. Redacta automáticamente contenido privado y expira contradicciones automáticamente. |
memory_recall | Búsqueda semántica — modo compacto por defecto (~10x ahorro de tokens). Usa memory_detail para contenido completo. |
memory_detail | Recupera el contenido completo por ID después de un recuerdo compacto. |
memory_context | Carga todo el contexto relevante para un tema, organizado por tipo con presupuesto de tokens. |
memory_extract | Guarda múltiples recuerdos de la conversación en lote. |
memory_forget | Elimina por ID o consulta (con confirmación). |
memory_inject | Muestra correcciones + decisiones + vecinos del grafo antes de comenzar a codificar. |
Herramientas de precisión, historial, avanzadas, administración, recordatorios y mantenimiento (26 más)
Precisión e historial (5 herramientas)
| Herramienta | Descripción |
|---|---|
memory_patch | Edición quirúrgica a nivel de campo con instantánea automática. |
memory_versions | Ver el historial completo de ediciones o restaurar cualquier versión. |
memory_search | Búsqueda exacta de texto completo mediante FTS5 con modo compacto. |
memory_since | Consulta temporal con rangos en lenguaje natural (7d, 2w, 1h). |
memory_relate | Construye un grafo de conocimiento tipado entre recuerdos. |
Avanzado (6 herramientas)
| Herramienta | Descripción |
|---|---|
memory_multi_recall | Búsqueda multi-estrategia con modo compacto: semántica + FTS5 + grafo + temporal. |
memory_tier | Mueve recuerdos entre niveles: núcleo / trabajo / archivo. |
memory_expire | Marca como ya no válido — se conserva para el historial, excluido de la recuperación. |
memory_summarize | Almacena un resumen estructurado de sesión con decisiones, correcciones y métricas. |
memory_history | Ver resúmenes de sesiones anteriores. |
memory_reflect | Motor de reflexión auto-evolutivo — agrupa recuerdos, detecta contradicciones, identifica candidatos de síntesis y muestra brechas de conocimiento. |
Administración y sincronización (4 herramientas)
| Herramienta | Descripción |
|---|---|
memory_doctor | Ejecuta diagnósticos de salud de solo lectura en la base de datos de amem. |
memory_repair | Realiza reparaciones seguras y específicas en la base de datos de amem. |
memory_config | Obtiene o establece la configuración de amem con salvaguardas de seguridad. |
memory_sync | Importa o exporta recuerdos entre amem y otros sistemas (auto-memoria de Claude, instrucciones de Copilot). |
Recordatorios (4 herramientas)
| Herramienta | Descripción |
|---|---|
reminder_set | Crea un recordatorio con fecha límite y alcance opcionales. |
reminder_list | Lista recordatorios activos (o todos), filtrables por alcance. |
reminder_check | Muestra vencidos, de hoy y próximos (7 días). |
reminder_complete | Marca como completado (admite ID parcial). |
Registro y mantenimiento (7 herramientas)
| Herramienta | Descripción |
|---|---|
memory_log | Añade turnos de conversación en bruto (sin pérdida, solo añadir). |
memory_log_recall | Busca o reproduce el registro por sesión, palabra clave o antigüedad. |
memory_log_cleanup | Poda entradas antiguas con retención configurable. |
memory_stats | Conteos, desglose por tipo, distribución de confianza. |
memory_export | Exporta como Markdown o JSON. |
memory_import | Importación masiva desde JSON con deduplicación automática. |
memory_consolidate | Fusiona duplicados, poda obsoletos, promueve frecuentes, decae inactivos. |
📖 Guía de uso
Almacenar recuerdos
|
Lenguaje natural (más fácil)
|
Llamadas explícitas a herramientas
|
Recuperar recuerdos
// Step 1: Compact index — ~50-100 tokens (default)
memory_recall({ query: "auth decisions", limit: 5 })
// -> a1b2c3d4 [decision] Auth service uses JWT tokens... (92%)
// -> e5f6g7h8 [correction] Never store tokens in localStorage... (100%)
// Step 2: Full details only for what you need
memory_detail({ ids: ["a1b2c3d4", "e5f6g7h8"] })
Más opciones de búsqueda
// Multi-strategy: semantic + FTS5 + graph + temporal
memory_multi_recall({
query: "authentication architecture",
limit: 10,
weights: { semantic: 0.4, fts: 0.3, graph: 0.15, temporal: 0.15 }
})
// Exact keyword search (FTS5 syntax)
memory_search({ query: "OAuth PKCE" })
memory_search({ query: '"event sourcing"' }) // phrase match
memory_search({ query: "auth* NOT legacy" }) // boolean
Gestionar recuerdos
Editar, expirar, promover, vincular
// Surgical edit with auto-snapshot for rollback
memory_patch({ id: "a1b2c3d4", field: "content", value: "Updated text", reason: "clarified" })
// View edit history / restore
memory_versions({ memory_id: "a1b2c3d4" })
// Expire (preserve for history, exclude from recall)
memory_expire({ id: "a1b2c3d4", reason: "Migrated to GraphQL" })
// Promote to core tier (always loaded at session start)
memory_tier({ id: "a1b2c3d4", tier: "core" })
// Link related memories (graph builds itself, but you can add manual links)
memory_relate({ action: "relate", from_id: "abc", to_id: "xyz", relation_type: "supports" })
Tipos de relación: supports, contradicts, depends_on, supersedes, related_to, caused_by, implements — o define los tuyos propios.
Recordatorios
Seguimiento de plazos entre sesiones
reminder_set({ content: "Review PR #42", due_at: 1743033600000, scope: "global" })
reminder_check({})
// -> [OVERDUE] Review PR #42
// -> [TODAY] Deploy auth service
// -> [upcoming] Write quarterly report
reminder_complete({ id: "a1b2c3d4" })
Privacidad
Redacción automática
// Private blocks stripped before storage
memory_store({
content: "DB password is <private>hunter2</private>, connect to prod at db.example.com",
type: "topology", tags: ["database"]
})
// Stored: "DB password is [REDACTED], connect to prod at db.example.com"
// API keys, tokens, passwords auto-redacted by pattern matching
// Configure patterns in ~/.amem/config.json
⚔️ Comparación honesta: amem vs graphify
Haz clic para expandir — cómo se compara amem con graphify
graphify es la pregunta "¿y qué tal X?" más común cuando la gente descubre amem. Resuelven problemas fundamentalmente diferentes y son genuinamente complementarios.
Qué hace cada herramienta
| amem | graphify | |
|---|---|---|
| En una frase | Memoria persistente entre sesiones de IA | Base de código → grafo de conocimiento |
| Pregunta central | "¿Qué ha aprendido mi IA sobre mí?" | "¿Cómo es esta base de código?" |
| Entrada | Lenguaje natural (correcciones, decisiones, preferencias) | Archivos (código, documentación, PDFs, imágenes, vídeo) |
| Salida | Recuerdos recuperados ordenados por relevancia | Grafo estructural + informe + HTML interactivo |
| Persistencia | Siempre — la memoria sobrevive entre sesiones y herramientas | Instantánea — graph.json persiste, pero no aprende con el tiempo |
| Cuándo se ejecuta | Continuamente, en cada sesión | Bajo demanda (/graphify .) o al hacer commit mediante git hook |
Comparación técnica
| amem | graphify | |
|---|---|---|
| Runtime | TypeScript / Node (≥18) | Python (≥3.10) |
| Protocolo | Servidor MCP (33 herramientas, 7 recursos) | Habilidad de IA (comando de barra) + servidor MCP opcional |
| Almacenamiento | SQLite + FTS5 + WAL | Grafo NetworkX → archivo JSON |
| Búsqueda | Embeddings semánticos + FTS5 + grafo + reordenamiento | Recorrido de grafo (BFS/DFS) + búsqueda de nodos |
| Embeddings | bge-small-en-v1.5 local (384-dim) | Ninguno — usa topología de grafo, no similitud vectorial |
| Comprensión de código | Ninguna — almacena lo que le cuentas | Profunda — AST tree-sitter para 25 lenguajes |
| Multimodal | Solo texto | Código, documentación, PDFs, imágenes, vídeo, audio |
| LLM requerido | No (todo local) | Sí para documentación/imágenes (el código no requiere LLM gracias a tree-sitter) |
| Benchmark | 97.8% R@5 en LongMemEval-S | Reducción de tokens 71.5x frente a lectura de archivos en bruto |
| Soporte de herramientas de IA | Claude Code, Copilot, Cursor, cualquier cliente MCP | Claude Code, Codex, Copilot, Cursor, Gemini, Aider, Kiro, +10 más |
Dónde gana cada uno
amem gana en:
- Recordar tus preferencias, correcciones y decisiones entre proyectos y herramientas
- Recuperación semántica — encontrar el recuerdo correcto a partir de una consulta vaga (97.8% R@5)
- Inteligencia temporal — rastrear qué era verdad cuándo, expirando contradicciones automáticamente
- Auto-evolución — el motor de reflexión agrupa, detecta contradicciones, identifica vacíos
- Cero dependencia de LLM — todo se ejecuta localmente, sin llamadas a API
graphify gana en:
- Comprender la estructura del código — grafos de llamadas, importaciones, jerarquías de clases, relaciones entre archivos
- Ingestión multimodal — introduce código, artículos, capturas de pantalla, vídeos, y los grafica todos
- Eficiencia de tokens — la compresión 71.5x significa que tu IA lee estructura, no archivos en bruto
- Amplitud de soporte de lenguajes — 25 lenguajes de programación mediante AST tree-sitter
- Amplitud de soporte de herramientas de IA — 15+ plataformas con comandos de instalación dedicados
Conclusiones honestas
-
No compiten. amem recuerda tu conocimiento (decisiones, correcciones, preferencias). graphify mapea la estructura de la base de código (grafos de llamadas, dependencias, arquitectura). Datos diferentes, patrones de acceso diferentes.
-
Usa ambos si quieres. Ejecuta
graphify .para obtener un mapa estructural de tu proyecto. Usa amem para recordar "elegimos esta arquitectura porque X". El grafo le dice a tu IA qué existe. La memoria le dice por qué las cosas son así. -
graphify tiene mayor cobertura de plataformas (15+ herramientas de IA). amem tiene integración más profunda donde funciona (protocolo MCP con 33 herramientas, recursos estructurados, prompts).
-
graphify necesita un LLM para archivos que no son código. amem es completamente local — sin llamadas a API, sin inferencia de modelos más allá del modelo de embeddings local.
-
La elección real depende de tu punto de dolor. Si tu IA sigue olvidando tus preferencias y decisiones → amem. Si tu IA no puede navegar eficientemente por tu base de código → graphify. Si ambos → usa ambos.
🌐 Compatibilidad de plataformas
| Característica | Claude Code | GitHub Copilot CLI | Cursor / Windsurf / Otros |
|---|---|---|---|
| Instalación de plugin con un comando | Sí | Sí | -- |
| 33 herramientas MCP | Sí | Sí | Sí |
| Habilidades de IA | 14 | 7 | -- |
| Hooks de captura automática | Sí | Sí | -- |
| Resumen automático de sesión | Sí | Sí | -- |
| Sincronización automática de memoria | Sí | -- | -- |
Configuración CLI (amem-cli init) | Sí | Sí | Sí |
Claude Code tiene la integración más profunda (plugin + hooks + sincronización automática de memoria). Copilot CLI es un cercano segundo. Otros clientes MCP obtienen el servidor completo de 33 herramientas mediante configuración manual.
Habilidades de IA
Habilidades disponibles por plataforma
| Lo que dices | Habilidad | Claude Code | Copilot CLI |
|---|---|---|---|
| "Recuerda nunca usar any type" | remember | Sí | Sí |
| "¿Qué recuerdas sobre auth?" | recall | Sí | Sí |
| "Carga contexto para esta tarea" | context | Sí | Sí |
| "Muestra estadísticas de memoria" | stats | Sí | Sí |
| "Ejecuta memory doctor" | doctor | Sí | Sí |
| "Exporta mis recuerdos" | export | Sí | Sí |
| "Lista todas las correcciones" | list | Sí | Sí |
| "Sincroniza mi memoria de Claude" | sync | Sí | -- |
| "Abre el panel de memoria" | dashboard | Sí | -- |
| "Instala hooks" | hooks | Sí | -- |
🔄 Trabajando con la Auto-Memoria de Claude Code
amem complementa la auto-memoria integrada de Claude — no la reemplaza.
| Auto-memoria de Claude | amem | |
|---|---|---|
| Captura | Automática, cero configuración | Tipada con puntuaciones de confianza |
| Almacenamiento | Archivo markdown único | SQLite con búsqueda, grafo, temporal |
| Recuperación | Archivo completo cargado en cada sesión | Solo se muestran los recuerdos relevantes |
| Historial | Sobrescrito al actualizar | Versionado, validez temporal |
| Búsqueda | Ninguna | Semántica + FTS5 + grafo + reordenamiento |
Recomendado: Mantén ambos activados. Ejecuta amem-cli sync para importar los recuerdos de Claude en amem para acceso unificado y estructurado.
Sincronización Claude → amem
amem-cli sync # Import all projects
amem-cli sync --dry-run # Preview what would be imported
amem-cli sync --project myapp # Import specific project
| Tipo de Claude | Tipo de amem | Confianza |
|---|---|---|
feedback | correction | 1.0 |
project | decision | 0.85 |
user | preference | 0.8 |
reference | topology | 0.7 |
Sincronización amem → Copilot
Exporta los recuerdos de amem a .github/copilot-instructions.md para que Copilot los lea como contexto persistente:
amem-cli sync --to copilot # Export to current project
amem-cli sync --to copilot --dry-run # Preview without writing
amem-cli sync --to copilot --project /path/to/repo
Esto genera markdown estructurado agrupado por prioridad:
- Correcciones (DEBEN seguirse) — restricciones estrictas
- Decisiones — elecciones arquitectónicas
- Preferencias — preferencias del usuario
- Patrones — convenciones de código
- Contexto — topología + hechos
La sección de amem está envuelta en marcadores <!-- amem:start/end --> — el contenido existente que no es de amem en el archivo se conserva.
Sincronización entre herramientas: Las decisiones tomadas en sesiones de Claude informan automáticamente a Copilot:
Claude Code → amem sync → amem DB → amem sync --to copilot → copilot-instructions.md
📊 Panel de control y Grafo de conocimiento
amem-cli dashboard # Opens at localhost:3333
amem-cli dashboard --port=8080 # Custom port
Panel web con todas las funciones que incluye:
- 🔍 Explorador de memoria — búsqueda, filtro por tipo/nivel/fuente, acciones en línea (promover, degradar, expirar)
- 🕸️ Grafo de conocimiento interactivo — zoom, desplazamiento, clic para enfocar con resaltado de vecindario, panel de detalles, búsqueda, aristas direccionales
- 📈 Analíticas — distribución de confianza, desglose por tipo, línea temporal de sesiones
- ⏰ Recordatorios — ver y gestionar tareas entre sesiones
- 📋 Vista previa de Copilot — ver lo que se exportaría a
copilot-instructions.md
💻 Referencia CLI
# Setup
amem-cli init # Auto-configure AI tools
amem-cli rules # Generate extraction rules
amem-cli hooks # Install hooks for Claude Code
amem-cli hooks --target copilot # Install hooks for GitHub Copilot CLI
amem-cli hooks --uninstall # Remove hooks
amem-cli sync # Import Claude auto-memory → amem
amem-cli sync --to copilot # Export amem → copilot-instructions.md
amem-cli doctor # Health diagnostics
amem-cli repair # Repair corrupted database from backups
# Dashboard
amem-cli dashboard # Web dashboard (localhost:3333)
# Memory operations
amem-cli recall "authentication" # Semantic search
amem-cli stats # Statistics
amem-cli list --type correction # List by type
amem-cli export --file memories.md # Export to file
amem-cli forget abc12345 # Delete by short ID
amem-cli reset --confirm # Wipe all data
🏗 Arquitectura
Your AI Tool
Claude Code / Copilot CLI / any MCP client
│ │
│ MCP (stdio) │ Lifecycle Hooks
▼ ▼
┌─────────────────────────────────┐
│ @aman_asmuei/amem │ ← this package
│ │
│ 33 Tools · 7 Resources · 2 Prompts
│ Slash commands · CLI · Hooks │
│ Config: ~/.amem/config.json │
└────────────────┬────────────────┘
│ imports
▼
┌─────────────────────────────────┐
│ @aman_asmuei/amem-core │ ← the engine
│ │
│ Multi-Strategy Retrieval │
│ [HNSW] + [FTS5] + [Graph] + [Temporal]
│ + query expansion │
│ + cross-encoder reranker │
│ │
│ Self-Evolving Reflection │
│ [Clustering] + [Contradictions]│
│ + [Synthesis] + [Gap Detection]│
│ │
│ Embeddings: bge-small-en-v1.5 │
│ Reranker: ms-marco-MiniLM int8 │
│ 97.8% R@5 on LongMemEval-S │
└────────────────┬────────────────┘
│
▼
┌─────────────────────────────────┐
│ SQLite + WAL + FTS5 │
│ ~/.amem/memory.db │
│ │
│ memories (tiered) │
│ conversation_log (raw) │
│ memory_versions (history) │
│ memory_relations (graph) │
│ synthesis_lineage │
│ knowledge_gaps │
│ session_summaries │
│ reminders │
└─────────────────────────────────┘
El servidor MCP amem es un envoltorio delgado alrededor de amem-core. El motor de recuperación, los embeddings, el grafo de conocimiento, la reflexión — todo vive en amem-core y versiona de forma independiente. ¿Error en el cableado MCP? Republica amem. ¿Mejora de recuperación? Republica amem-core. Sin acoplamiento.
Fórmula de clasificación
score = relevance x 0.45 + recency x 0.2 + confidence x 0.2 + importance x 0.15
| Factor | Cómo funciona |
|---|---|
| Relevancia | Similitud coseno mediante índice HNSW; respaldo de palabras clave con expansión de consulta |
| Actualidad | Decaimiento exponencial (0.995^hours) |
| Confianza | Reforzada por confirmación repetida (0-1) |
| Importancia | Basada en tipo: correcciones 1.0 ... hechos 0.4 |
La puntuación aditiva asegura que ningún factor bajo por sí solo elimine la clasificación.
⚙️ Configuración
Variables de entorno
| Variable | Predeterminado | Descripción |
|---|---|---|
AMEM_DIR | ~/.amem | Directorio de almacenamiento |
AMEM_DB | ~/.amem/memory.db | Ruta de la base de datos |
AMEM_PROJECT | (auto desde git) | Anulación del ámbito del proyecto |
Archivo de configuración (~/.amem/config.json)
Se crea automáticamente con valores predeterminados:
{
"retrieval": {
"semanticWeight": 0.4,
"ftsWeight": 0.3,
"graphWeight": 0.15,
"temporalWeight": 0.15,
"rerankerEnabled": true
},
"privacy": {
"enablePrivateTags": true,
"redactPatterns": ["..."]
},
"tiers": {
"coreMaxTokens": 500,
"workingMaxTokens": 2000
},
"hooks": {
"enabled": true,
"captureToolUse": true,
"captureSessionEnd": true
}
}
📋 Historial de versiones
v0.23.0 — Panel de Grafo de Conocimiento Interactivo
Explorador de grafos a ancho completo con zoom/desplazamiento, clic para enfocar con resaltado de vecindario, panel de detalles con navegación de relaciones, búsqueda y filtro, aristas direccionales, diseño dirigido por fuerzas. Herramientas de administración (doctor, reparación, configuración, sincronización). 255 pruebas en 18 suites.
v0.19.0 — Bucle de Memoria Auto-Evolutiva
Motor de reflexión con agrupación basada en HNSW, detección de contradicciones en 3 capas (negación + numérica + baja superposición), candidatos de síntesis con seguimiento de linaje, detección de vacíos de conocimiento, puntuación de utilidad, aviso de activación automática en memory_inject. Nuevas tablas de BD: synthesis_lineage, knowledge_gaps, reflection_meta. Migración v5.
v0.18.0 — Divulgación Progresiva y Escala
Índice vectorial HNSW (67x más rápido a 10k), modo compacto predeterminado en recuperación/búsqueda, CLI de reparación de BD, seguridad de acceso concurrente, extractor de conversaciones heurístico, extracción automática al final de sesión.
v0.13.0 — Recuperación de Clase Mundial
Embeddings bge-small-en-v1.5, puntuación aditiva, expansión de consulta, grafo de conocimiento auto-relacionado, inyección consciente del grafo, amem doctor, benchmarks CI.
v0.9.x — Inteligencia Temporal
Validez temporal, expiración automática de contradicciones, recuperación multi-estrategia, reordenamiento cross-encoder, niveles de memoria, etiquetas de privacidad, hooks de ciclo de vida, resúmenes de sesión, panel de control, sistema de configuración.
v0.7.0 — v0.8.0
Importación/exportación, decaimiento de confianza, caché de embeddings, seguridad multi-proceso, CLI de auto-configuración, panel de control.
v0.1.0 — v0.5.x
Almacenamiento/recuperación central, embeddings locales, SQLite + WAL, consolidación, ámbito de proyecto, recordatorios, registro de conversaciones, grafo de conocimiento, FTS5, divulgación progresiva.
🧰 Stack tecnológico
| Capa | Tecnología |
|---|---|
| Protocolo | MCP SDK ^1.25 |
| Lenguaje | TypeScript 5.6+, modo estricto |
| Base de datos | SQLite + WAL + FTS5 |
| Embeddings | HuggingFace bge-small-en-v1.5 (local, 80MB) + índice vectorial HNSW |
| Reranking | ms-marco-MiniLM-L-6-v2 (activado por defecto, int8, por lotes, local) |
| Validación | Zod 3.25+ con esquemas .strict() |
| Pruebas | Vitest — 281 pruebas en 19 suites + benchmarks de recall |
| CI/CD | GitHub Actions, publicación npm en release |
🤝 Contribuciones
git clone https://github.com/amanasmuei/amem.git
cd amem && npm install
npm run build # zero TS errors
npm test # 281 tests pass
Los PRs deben pasar CI antes de fusionarse. Consulta Issues para tareas abiertas.
Hecho con ❤️ en 🇲🇾 Malasia por Aman Asmuei
Licencia MIT · Da una estrella ⭐ si amem salva a tu IA de la amnesia