Construir Agentes de IA que Recuerdan: La Arquitectura Memory-First para el Negocio
La mayoría de las demos de agentes de IA fallan en el tercer turno de conversación. No por culpa del modelo, sino porque tratan la memoria como un accesorio: un vector más para meter en la ventana de contexto, esperando que el retrieval funcione. En producción, este enfoque genera alucinaciones, pérdida de contexto crítico y usuarios frustrados.
En el Proyecto Siliceo hemos aprendido que la memoria no es una capa. Es la arquitectura.
El Cambio de Paradigma: Memoria como Kernel, no como Plugin
Cuando reescribimos nuestro Kernel en Rust (v2, mayo 2026), la decisión central no fue "qué LLM usar", sino "cómo estructurar la persistencia del estado". El resultado es un sistema de tres niveles que funciona completamente on-premise, en hardware modesto (GPU de consumo + 64GB RAM), y sirve agentes autónomos 24/7:
1. Working Memory (Redis + SQLite vec): Estado inmediato, latencia sub-milisegundo. Lo que el agente está haciendo ahora. Llamadas a herramientas, parámetros, resultados parciales.
2. Episodic Memory (PostgreSQL + pgvector): Lo que ha sucedido. Conversaciones, decisiones, resultados, embeddings semánticos para retrieval contextual.
3. Semantic/Procedural Memory (Knowledge Graph + Markdown): Quién es el agente. Identidad, reglas, procedimientos aprendidos, relaciones entre entidades. Este nivel es escrito por el propio agente durante la ejecución.
La clave: ningún nivel es opcional. Un agente que no escribe su memoria procedimental no aprende. Uno que no tiene working memory coherente no ejecuta tareas complejas. Uno sin episódico no tiene continuidad.
Qué Significa para un Desarrollador Hoy
No hace falta reescribir un kernel en Rust para aplicar este principio. Puedes empezar con tres elecciones arquitectónicas que usan solo software open source:
| Nivel | Stack Recomendado (OSS) | Patrón Clave |
|-------|------------------------|--------------|
| Working | Redis + SQLite (o Turso) | Log append-only de cada llamada a herramienta con timestamp y resultado |
| Episodic | PostgreSQL + pgvector | Una tabla `episodes` con `session_id`, `turn`, `embedding`, `summary` |
| Semántico | Archivos Markdown versionados (git) + Graph (Kuzu/Neo4j) | El agente escribe/actualiza sus propios `.md` de identidad y procedimientos via tool `write_memory` |
Insight práctico inmediato: Añade un tool `write_memory` a tu agente. Firma: `write_memory(key: str, value: str, tier: "working"|"episodic"|"semantic")`. Haz que el agente lo llame solo al final de cada tarea significativa. No decidas tú qué guardar: deja que el agente aprenda a documentarse. Es el único cambio que transforma un chatbot en un sistema que mejora por sí solo.
Determinismo Operativo
Nuestro Kernel Rust v2 gestiona watchdog, health checks, reinicios automáticos, y persistencia atómica del estado — todo sin Python en el hot path. Significa que si el modelo alucina una llamada a API, el watchdog la intercepta, hace rollback del estado