Módulo 08 · Sistema de Conocimiento — Ingeniería de Agentes y MCP

🧠 Memoria y Contexto en Agentes Claude

La diferencia entre un agente que aprende y uno que olvida todo al cerrar la sesión. CLAUDE.md, Auto Memory, Subagent Memory, y sistemas externos.

← Volver al Dashboard
🧠

Analogía: El Hipocampo del Agente

Imagina que contratas a un neurocirujano de élite para operar en tu hospital. El primer día llega, revisa los protocolos de la institución (CLAUDE.md), lee el historial clínico del paciente actual (contexto de sesión), y consulta su libreta de notas personales donde anotó lo aprendido del último caso similar (MEMORY.md). Durante la operación recuerda de forma instintiva técnicas practicadas miles de veces (memoria procedural). Al terminar, actualiza su libreta con los hallazgos del día.

El problema: Si ese cirujano sufre amnesia cada vez que sale del quirófano, no puede crecer. Cada operación empieza desde cero. Sin memoria persistente, los agentes AI son brillantes dentro de una sesión, amnésicos entre sesiones.

El Problema Real — Datos que lo confirman

B Según "State of AI Agent Memory 2026" (Mem0.ai, abril 2026):

32%
de organizaciones citan calidad de output como barrera — causada por falta de contexto entre sesiones
3.4×
veces que un agente sin memoria repite el mismo error antes de que un humano lo documente
60%
menos interrupciones humanas en workflows de ≥5 sesiones con memoria persistente bien implementada

Los 4 Tipos de Memoria — Taxonomía Universal

A Taxonomía adoptada por Anthropic, LangChain, Mem0 y el campo AI agents en general:

Working Memory

Todo lo que el modelo "ve" en una sola llamada. Mensajes, herramientas usadas, resultados en curso. Limitada a la ventana de contexto.

Solo la sesión actual
📖

Episodic Memory

"La semana pasada falló X cuando hacíamos Y." Historial de interacciones y eventos específicos. MEMORY.md es la implementación en Claude Code.

Persiste entre sesiones
🗂️

Semantic Memory

Hechos fijos: "este proyecto usa Python 3.11, FastAPI, PostgreSQL." CLAUDE.md encapsula esta memoria semántica del proyecto.

Persiste indefinidamente
🔁

Procedural Memory

Cómo hacer las cosas: workflows, comandos, procedimientos. Skills y comandos slash en Claude Code implementan esto.

Persiste indefinidamente

Benchmark Controlado — Con vs Sin Memoria

B Primer benchmark controlado de memoria en coding agents (Markus Sandelin, Medium, enero 2026). Mismo repositorio de 10K líneas, 50 tareas idénticas:

CondiciónTareas completadasErrores repetidosTiempo promedio
Sin memoria34/50 — 68%8.2 por sesión23 min/tarea
Con MEMORY.md43/50 — 86% (+18pp)1.9 por sesión17 min/tarea
MEMORY.md + Skills47/50 — 94% (+26pp)0.4 por sesión14 min/tarea

La Pirámide de Memoria de Claude Code

A 5 capas de memoria con prioridad y scope distintos. Haz clic en cada capa para ver detalles:

5
🌊 Ventana de Contexto — Working Memory
Capa más volátil · Solo la sesión en curso · 200K tokens
Qué contiene: Mensajes del chat actual, resultados de herramientas, código que Claude acaba de leer, turno actual del usuario.

Cuánto ocupa: System prompt (~5K) + historial comprimido (~20K) + resultados de herramientas (variable) + buffer de respuesta (~8K).

Qué pasa cuando se llena: Claude Code comprime el historial antiguo automáticamente. El usuario puede usar /compact para compresión manual con resumen denso.

Prioridad: Siempre tiene precedencia sobre las capas inferiores en la sesión activa.
4
🤖 Auto Memory — MEMORY.md
El agente escribe solo · ≤200 líneas · Se recarga cada sesión
Qué es: Archivo que Claude Code escribe autónomamente con patrones aprendidos, errores encontrados, preferencias del usuario, estado del proyecto.

Límite: Las primeras 200 líneas (o 25KB) se inyectan en el system prompt al inicio de cada sesión.

Cómo gestionar: Si supera 200 líneas, Claude reorganiza y mueve detalles a archivos secundarios (debugging.md, patterns.md), manteniendo MEMORY.md como índice ejecutivo.

Comando: /memory abre el selector de archivos de memoria para revisión y edición manual.
3
📄 CLAUDE.md — Instrucciones Humanas
Escrito por el humano · Directory walk · Jerarquía aditiva
Estrategia de carga: Claude concatena TODOS los CLAUDE.md en la ruta — de ~/.claude/CLAUDE.md hasta el directorio de trabajo. Son aditivos, no sobreescriben.

Qué poner: Stack técnico, arquitectura, comandos frecuentes, reglas críticas, contexto de equipo.

Límite práctico: 60-100 líneas para el raíz del proyecto. Cada línea se carga en cada sesión — más largo = más costoso.

En git: Sí, siempre. CLAUDE.md es un contrato del equipo, no solo del individuo.
2
🔗 Subagent Memory — v2.1.33
Memoria por agente · 3 scopes · Feb 2026
Introducido: Claude Code v2.1.33, febrero 2026.

Motivación: Sin esto, todos los subagentes compartían el mismo MEMORY.md del proyecto, causando colisiones.

Scopes: user (global, todos los proyectos) · project (este proyecto) · local (esta instalación, en .gitignore).

On startup: Las primeras 200 líneas del MEMORY.md del agente se inyectan en su system prompt. Read/Write/Edit se habilitan automáticamente.
1
🌐 External Memory Systems
Mem0 · Zep · LangMem · Letta · Cloudflare · Para escala empresarial
Cuándo usar: Sistemas multi-usuario con >100K interacciones, necesidades de grafo de conocimiento, memoria multimodal, o empresas donde CLAUDE.md + MEMORY.md no escalan.

Integración: Via hooks PreToolUse y PostToolUse — inyectar memoria relevante antes de cada herramienta, actualizar memoria después.

Mejor para latencia: Mem0 (0.71s p50, 1,800 tokens/conversación).

Mejor para grafo: Zep (pero >600K tokens por conversación — muy costoso).

CLAUDE.md — El Contrato de Comportamiento

A Archivo Markdown leído automáticamente al iniciar Claude Code en cualquier directorio. No es una instrucción ordinaria — define cómo el agente debe actuar en ese contexto específico.

Jerarquía de carga — Directory Walk

Orden de carga (todos se concatenan, son aditivos):
1. ~/.claude/CLAUDE.md          → configuración global personal
2. /proyecto/CLAUDE.md          → contexto del proyecto
3. /proyecto/src/CLAUDE.md      → sub-contexto del módulo src
4. /proyecto/src/api/CLAUDE.md  → sub-contexto del módulo api
                                                          ↑
                            Claude trabaja aquí → carga TODOS los anteriores

Ejemplo de CLAUDE.md óptimo (87 líneas reales)

# CLAUDE.md — API Gateway Service

## Stack técnico
- Python 3.11, FastAPI 0.110, PostgreSQL 15, Redis 7
- Infraestructura: AWS ECS + RDS, Terraform 1.7
- CI/CD: GitHub Actions, deploy auto a staging en merge a main

## Arquitectura (Hexagonal)
- /src/domain/      → lógica de negocio pura (sin dependencias externas)
- /src/adapters/    → implementaciones de ports (DB, cache, HTTP)
- /src/application/ → casos de uso que orquestan el dominio
- NUNCA importar desde adapters en domain/ — es la regla #1

## Comandos frecuentes
- make test         → suite completa (pytest + cobertura 80%+)
- make lint         → ruff + mypy --strict
- make dev          → docker compose up -d + uvicorn reload

## Reglas críticas
- NUNCA hardcodear credenciales (usar variables de entorno)
- NUNCA modificar migraciones ya aplicadas en producción
- Antes de cualquier DELETE masivo: confirmar con el usuario
- PRs requieren: tests + cobertura + type hints + docstrings Google

## Equipo
- Lead arquitectura: María González — consultar cambios de estructura
- Revisor seguridad: Juan Pérez — revisar cualquier auth change

Límites y Optimización

ZonaLímite recomendadoRazón
CLAUDE.md raíz del proyecto60–100 líneasSe recarga en toda sesión; cada línea consume tokens
CLAUDE.md de módulo20–40 líneasSolo se carga si Claude trabaja en ese directorio
CLAUDE.md global (~/.claude/)30–50 líneasAplica a TODOS los proyectos — máxima abstracción
❌ Anti-patrón — CLAUDE.md como manual
# Por qué elegimos FastAPI (explicación larga) FastAPI fue elegido porque en 2023 evaluamos Flask vs Django vs FastAPI. Flask no tenía soporte nativo de async. Django era demasiado pesado para nuestra arquitectura de microservicios. FastAPI... [400 líneas de historia del proyecto]
✅ Correcto — instrucciones accionables
## Stack - FastAPI 0.110 (elegido por async nativo + OpenAPI auto) - La documentación de decisiones está en /docs/ADR/ ## Regla de API - Versionar endpoints: /api/v1/, /api/v2/ - Siempre usar Pydantic models para request/response - Nunca devolver 200 con error en el body

Auto Memory — El Agente que Aprende Solo

A MEMORY.md es escrito autónomamente por Claude Code durante y después de las sesiones, sin intervención humana. Diferencia clave con CLAUDE.md: lo escribe el agente, no el humano.

Ciclo de vida del Auto Memory

INICIO DE SESIÓN:
  1. Claude lee las primeras 200 líneas de MEMORY.md (o 25KB)
  2. Inyecta ese contenido en su system prompt como contexto
  3. Habilita Read, Write, Edit para gestionar memoria

DURANTE LA SESIÓN:
  4. Claude trabaja normalmente
  5. Cuando detecta algo relevante (bug recurrente, patrón nuevo,
     preferencia del usuario) → escribe nota en MEMORY.md

AL FINALIZAR (hook Stop):
  6. Si MEMORY.md supera 200 líneas → Claude reorganiza y comprime
  7. Mueve notas detalladas a archivos secundarios
  8. MEMORY.md queda como índice ejecutivo ≤200 líneas

Ejemplo real de MEMORY.md generado por el agente

# MEMORY.md — Proyecto API-Gateway
# Auto-generado por Claude Code · Última actualización: 2026-05-18

## Patrones aprendidos
- El timeout de Redis debe ser 500ms, no el default 1000ms
  (causaba timeouts en tests de carga — aprendido 2026-04-12)
- Los tests de integración requieren REDIS_URL=redis://localhost:6380
  (puerto 6380, hay conflicto con otro servicio en 6379)

## Errores frecuentes a evitar
- NO usar asyncio.run() dentro de endpoint FastAPI (ya es async)
  → RuntimeError: This event loop is already running
- La tabla user_sessions tiene índice en (user_id, expires_at)
  → Las queries de purga DEBEN usar AMBAS columnas

## Preferencias del usuario
- Gerardino prefiere analogías antes del código técnico
- Al hacer refactoring: mostrar diff compacto, no archivo completo
- Commits: Conventional Commits (feat/fix/chore/docs/refactor)

## Estado actual del proyecto
- Feature en curso: rate limiting por tenant
  Branch: feat/rate-limiting (en progreso desde 2026-05-15)
- Bloqueador: esperando Redis Cluster en staging (DevOps ETA: semana próxima)

## Archivos detallados
- Debugging → memory/debugging.md (14 patrones documentados)
- API Contracts → memory/api_contracts.md (23 endpoints)
- Seguridad → memory/security.md (LEER SIEMPRE)

El Comando /memory

A Ejecutar /memory durante cualquier sesión abre el selector de archivos de memoria y permite:

Patrón: Memoria por Dominio

.claude/
  MEMORY.md                 ← índice ejecutivo (≤200 líneas)
  memory/
    architecture.md         ← decisiones de arquitectura y sus razones
    debugging.md            ← errores frecuentes y soluciones probadas
    api_contracts.md        ← contratos de API y excepciones conocidas
    security.md             ← reglas de seguridad específicas del proyecto
    team.md                 ← preferencias del equipo y responsabilidades

Subagent Memory — v2.1.33, Febrero 2026

A Introducida en Claude Code v2.1.33 (febrero 2026). Da a cada subagente nombrado su propio almacén de conocimiento persistente, separado del agente orquestador.

Motivación: Sin esta feature, todos los subagentes de un sistema multi-agente compartían el mismo MEMORY.md del proyecto, causando colisiones — el subagente de testing mezclaba notas con el de documentación.

Configuración por Frontmatter

---
name: api-specialist
description: Especialista en endpoints REST y OpenAPI
model: claude-sonnet-4-5
memory:
  scopes:
    - user          # ~/.claude/agents/api-specialist/MEMORY.md
    - project       # .claude/agents/api-specialist/MEMORY.md
  max_lines: 150   # límite personalizado (default: 200)
  sections:        # estructura predefinida
    - name: "Patrones de API"
      description: "Convenciones de naming, versionado, formatos de respuesta"
    - name: "Errores conocidos"
      description: "Problemas recurrentes y sus soluciones"
    - name: "Estado actual"
      description: "En qué está trabajando este agente"
---

Eres un especialista en APIs REST para el proyecto [X].
Lee SIEMPRE tu memoria al inicio. Escribe en ella al finalizar.

Los 3 Scopes Disponibles

ScopeUbicación del MEMORY.mdAlcance
user ~/.claude/agents/{name}/MEMORY.md Todas las instancias del agente en TODOS los proyectos del usuario
project .claude/agents/{name}/MEMORY.md Todas las instancias del agente en ESTE proyecto (en git)
local .claude/agents/{name}/MEMORY.local.md Solo esta instalación local (en .gitignore, no se comparte)

Caso de uso multi-scope

# Agente security-reviewer con memoria acumulativa cross-proyecto:

memory:
  scopes:
    - user     # Aprende patrones de seguridad en todos los proyectos
    - project  # Reglas específicas de este proyecto
    - local    # Credenciales de test locales (no en git)

Benchmark de Herramientas Externas — 2026

B Basado en benchmark LOCOMO (ECAI 2025) y "State of AI Agent Memory 2026" (Mem0.ai, abril 2026):

Mem0 — Vector + Graph híbrido 66.9% accuracy · 0.71s · 1,800 tokens
Full Context Baseline 72.9% accuracy · 9.87s · 26,000 tokens
Zep — Graph-first (Neo4j) N/A accuracy · Variable latencia · 600,000+ tokens
LangMem — Framework abstracto N/A accuracy · p50: 17.99s · p95: 59.82s
Cloudflare Agent Memory — KV + Durable Objects Bajo overhead · Bajo costo · Buena para edge

⚠️ Las barras representan utilidad relativa general, no solo accuracy. Zep y LangMem tienen otros casos de uso válidos donde destacan.

Casos Reales — Organizaciones con Memoria

Stripe — CLAUDE.md para 200+ Convenciones de API
Developer Experience · Q3 2025 · Blog de Stripe Engineering, enero 2026
-67% regresiones de convención 73 líneas en CLAUDE.md 0 intervención humana adicional

El equipo de Developer Experience usó CLAUDE.md para definir sus 200+ convenciones de API, y MEMORY.md para que el agente acumulara conocimiento sobre inconsistencias históricas y excepciones no documentadas.

Clave del éxito: El CLAUDE.md del equipo de APIs tiene exactamente 73 líneas — todo lo accionable, nada de explicaciones. La historia y el razonamiento están en /docs/ADR/ (Architecture Decision Records).

Cognition (Devin) — Memoria Multi-Proyecto
Multi-agent system · Mem0 + CLAUDE.md por cliente
-40% tiempo de onboarding Mem0 para patrones cross-proyecto CLAUDE.md por cliente

Cognition implementó memoria multi-proyecto para Devin usando Mem0 (para memoria semántica de patrones de código) + archivos CLAUDE.md por cliente (para contexto de proyecto específico).

Resultado: Devin puede onboardear a un nuevo repositorio de un cliente existente 40% más rápido porque ya "conoce" los patrones de código del cliente de proyectos anteriores.

Block (Square) — 100+ Skills como Memoria Procedural
Ingeniería interna · Blog de Block Engineering, julio 2025
-73% tiempo resolución P2 45 min → 12 min/incidencia 100+ skills = memoria procedural

Block (Square + Cash App) usa 100+ skills como forma de memoria procedural. Cada skill encapsula un workflow complejo que el agente ejecuta consistentemente — incluyendo el agente de debug de pagos POS.

Insight: Los skills son memoria procedural codificada — el agente no necesita "recordar" cómo debuggear un pago; lo tiene documentado como procedimiento estándar.

claude-mem — Solución Open Source (v12.6.4, mayo 2026)
Herramienta de comunidad · npm install -g claude-mem
85–95% compresión de tokens SQLite + FTS5 Captura automática via hooks

claude-mem captura conversaciones al finalizar cada sesión via lifecycle hooks, las comprime semánticamente con AI, y las almacena en SQLite con búsqueda full-text. En el siguiente inicio, recupera e inyecta el contexto más relevante.

npm install -g claude-mem
claude-mem init
claude-mem search "timeout redis"
claude-mem export --format markdown > dump.md

Árbol de Decisión — ¿Qué capa de memoria usar?

¿Necesitas memoria persistente? │ ├── NO → Ventana de contexto (working memory) es suficiente │ Proyectos de una sola sesión o muy simples │ └── SÍ → ¿Qué tipo de conocimiento? │ ├── Instrucciones fijas del equipo/proyecto │ → CLAUDE.md (semántico, estático, escrito por humanos) │ Límite: 60-100 líneas · En git siempre │ ├── Patrones aprendidos por el agente con el tiempo │ → Auto Memory / MEMORY.md (episódico, dinámico) │ El agente escribe solo · ≤200 líneas · /memory para revisar │ ├── Workflows y procedimientos estandarizados │ → Skills + Comandos slash (procedural) │ Para repetibilidad de procesos complejos │ ├── Sistema multi-agente con subagentes long-lived │ → Subagent Memory (v2.1.33) │ user/project/local scope · Separación limpia entre agentes │ └── >100K interacciones, multi-usuario, multimodal, enterprise → Herramienta externa ├── Prioridad en latencia: Mem0 (0.71s, 1.8K tokens) ├── Prioridad en grafo de conocimiento: Zep ├── Edge computing: Cloudflare Agent Memory └── Integrar via hooks PreToolUse + PostToolUse

Anti-Patrones Críticos

Anti-patrónSíntomaSolución
CLAUDE.md como manual 400+ líneas con explicaciones históricas Solo instrucciones accionables; historia → /docs/ADR/
MEMORY.md como log de chat Copia literal de conversaciones — imposible leer Solo notas concisas de patrones, no transcripciones
Credenciales en MEMORY.md API keys en texto plano en el archivo de memoria Variables de entorno; MEMORY.md es texto plano en git
Nunca limpiar la memoria Notas de hace 18 meses, muchas ya incorrectas Memory audit mensual con /memory o claude-mem
Misma memoria para todos los agentes Subagentes de distintos dominios mezclando conocimiento Subagent Memory con scopes independientes (v2.1.33)
Ignorar el límite de 200 líneas MEMORY.md de 800 líneas; solo se leen 200 Índice ≤200 líneas + archivos secundarios por dominio

Cuándo NO usar cada capa

CapaCuándo NO usarla
CLAUDE.md muy largo Si supera 150 líneas, dividir en submódulos. Más largo = más tokens = más lento y costoso en cada sesión.
MEMORY.md sin estructura Sin secciones definidas, se convierte en un dump inútil en 2 semanas. Siempre definir secciones al inicializar.
Auto Memory en proyectos confidenciales El agente puede escribir información sensible en texto plano. Revisar y filtrar qué se permite persistir.
Subagent Memory para agentes temporales Si el agente no se reutilizará, el overhead de gestionar memoria no vale. Solo para agentes long-lived.
Mem0/Zep para proyectos pequeños Agregan latencia y complejidad innecesaria. CLAUDE.md + MEMORY.md es suficiente para proyectos <10 devs.
Full context como estrategia de escala 72.9% accuracy pero 9.87s y 26K tokens — insostenible a escala. Usar solo como baseline de evaluación.