Desarrollo IAOpen Source

Hindsight: la Memoria de Agentes que Retiene, Recuerda y Reflexiona

14 de octubre de 2026
10 min de lectura
Ilustración editorial de la memoria para agentes Hindsight con retain, recall y reflect
Compartir:

La mayoría de las herramientas de memoria para agentes responden una sola pregunta: ¿qué dijo el usuario antes? Hindsight, de Vectorize, suma una segunda: ¿qué debería creer el agente ahora por eso? Su README lo describe como un sistema de memoria pensado para que los agentes “aprendan, no solo recuerden”, organizado en tres operaciones: retain, recall y reflect.

Esta es una guía pensada como comparación, no un curso básico de memoria. Te muestro el pipeline en 4 pasos, el quickstart de Docker y pip copiado del README, una tabla chequeada contra Mem0 y OpenViking, y cuándo conviene saltearlo.

1. Qué es Hindsight: Stars, Licencia y la Idea

Hindsight es un sistema de memoria para agentes construido por Vectorize.io y publicado como vectorize-io/hindsight en GitHub. El repositorio se creó el 2025-10-30 y, al 2026-10-14, muestra 49,7k estrellas (49.680 en los metadatos del repo), unos 6,1k forks y licencia MIT. La última release es v1.0.0, publicada el 2026-10-13, después de las cuatro releases 0.10.x listadas entre el 14 de septiembre y el 8 de octubre.

Datos del Repo (verificados 2026-10-14)

  • Repositorio: github.com/vectorize-io/hindsight
  • Estrellas: 49,7k en la página del repo · repositorio creado el 2025-10-30
  • Licencia: MIT
  • Última release: v1.0.0 (2026-10-13)
  • Instalación del server: pip install hindsight-api (PyPI, Python 3.11+) · imagen Docker ghcr.io/vectorize-io/hindsight
  • Respaldo: Vectorize.io · self-hosted o Hindsight Cloud gestionado

La propuesta del README es que la mayoría de los sistemas de memoria se enfocan en recordar el historial de conversación, mientras que Hindsight está “enfocado en hacer agentes que aprenden”. En concreto mantiene cuatro tipos de memoria en bancos aislados: hechos del mundo, experiencias, observaciones (creencias consolidadas y respaldadas por evidencia) y modelos mentales. Escribís con retain, buscás con recall y razonás sobre lo guardado con reflect.

Leé los claims como claims

Frases como “el sistema de memoria para agentes más preciso jamás probado” o “elimina las falencias de RAG y knowledge graph” son afirmaciones del vendor. El README dice que los números de Hindsight fueron reproducidos de forma independiente por investigadores del Sanghani Center de Virginia Tech y The Washington Post, y que los puntajes de otros vendors en su gráfico son autoreportados. Yo no pude verificar esa reproducción, así que cada número de abajo trae su fuente.

2. Arquitectura en 4 Pasos: Retain, Consolidar, Recall, Reflect

Así describen el flujo el README y los docs para desarrolladores. Los nombres de parámetros y defaults salen de las páginas de retain, recall y reflect, leídas el 2026-10-14.

📥

Paso 1 — retain() extrae hechos con un LLM

El contenido entra como string o como lista ordenada de bloques. Un LLM extrae hechos, entidades, relaciones y datos temporales, clasifica cada hecho como experience (el propio agente del banco) o world, y normaliza todo en entidades canónicas, series de tiempo e índices de búsqueda. retain_extraction_mode es concise por defecto; retain_mission guía qué se conserva.

🧬

Paso 2 — consolidación en segundo plano en observaciones

Después de que retain devuelve, los hechos relacionados se consolidan en observaciones: creencias deduplicadas que conservan su evidencia (citas exactas y un conteo de pruebas) y se refinan, no se pisan, cuando llega evidencia nueva. Los modelos mentales son respuestas permanentes a preguntas que definís; el README dice que leer uno es una lectura de base de datos, sin retrieval ni llamada al LLM.

🔍

Paso 3 — recall() corre cuatro estrategias en paralelo

Semántica, por keywords (estilo BM25), recorrido de grafo y filtro temporal corren en paralelo. Los resultados se fusionan con reciprocal rank fusion (k = 60 según los docs), se reordenan con un cross-encoder y se empaquetan en un presupuesto de tokens (max_tokens, 4096 por defecto). El parámetro budget (low, mid, high) fija la profundidad: 100, 300 (default) o 1000 candidatos por estrategia.

🧠

Paso 4 — reflect() razona en un loop con herramientas

Según los docs, reflect mira primero los modelos mentales, después las observaciones, y cae a recall crudo como respaldo. Corre hasta 10 iteraciones y solo puede citar ids de memoria que realmente recuperó. Los rasgos de disposición del banco (skepticism, literalism, empathy, de 1 a 5) inclinan la interpretación, y un response_schema opcional devuelve JSON estructurado.

Benchmarks: con fuente vs autoreportados

El paper (arXiv 2512.12818, 14 dic 2025) reporta un backbone open-source de 20B que pasa de 39% a 83,6% de precisión frente a un baseline de contexto completo con el mismo backbone, y backbones más grandes que llegan a 91,4% en LongMemEval y 89,61% en LoCoMo. El sitio de benchmarks del proyecto, consultado el 2026-10-14, lista 94,6% en LongMemEvalS y 92% en LoCoMo10, pero esa página no declara modelos, latencia, costo ni metodología. Mem0 y OpenViking publican sus propios números con otros harnesses, así que no los pongas en un mismo ranking.

3. Quickstart: un Banco de Memoria en 5 Minutos (Verificado con el README)

Todo lo de abajo está copiado del Quick Start del README; lo verifiqué contra el README el 2026-10-14. No ejecuté estos comandos para este post, así que confirmá la primera corrida por tu cuenta. Elegí un camino para el server y después conectá un cliente.

Opción 1 — Docker (el camino recomendado del README): API en :8888, UI en :9999

export OPENAI_API_KEY=sk-xxx

docker run -it --pull always --name hindsight --restart unless-stopped -p 8888:8888 -p 9999:9999 \
  -e HINDSIGHT_API_LLM_API_KEY=$OPENAI_API_KEY \
  -v hindsight-data:/home/hindsight/.pg0 \
  ghcr.io/vectorize-io/hindsight:latest

Opción 2 — bare metal con pip

pip install hindsight-api
export HINDSIGHT_API_LLM_API_KEY=sk-xxx

hindsight-api

Conectá un cliente (Python) y llamá a las tres operaciones

pip install hindsight-client -U

from hindsight_client import Hindsight

client = Hindsight(base_url="http://localhost:8888")

# Retain: Store information
client.retain(bank_id="my-bank", content="Alice works at Google as a software engineer")

# Recall: Search memories
client.recall(bank_id="my-bank", query="What does Alice do?")

# Reflect: Generate disposition-aware response
client.reflect(bank_id="my-bank", query="Tell me about Alice")

Hindsight funciona con 25+ proveedores de LLM vía HINDSIGHT_API_LLM_PROVIDER, incluidos los locales (ollama, lmstudio, llamacpp). El README lista tres puertas más: un wrapper basado en LiteLLM (pip install hindsight-litellm y después wrap_openai() o wrap_anthropic()), un endpoint MCP integrado por banco en http://localhost:8888/mcp/{bank_id}/ y un modo Python embebido (pip install hindsight-all -U) que levanta un server en el mismo proceso.

Tip: un banco por usuario o proyecto, tags para segmentar

Los bancos están estrictamente aislados, sin fugas entre bancos según el README, así que un banco por usuario, agente o proyecto es el default seguro. El FAQ suma dos trampas: los bancos por usuario no pueden hacer análisis entre usuarios (usá un banco con tags si lo necesitás) y metadata no es un filtro, los tags sí. Definí el esquema de tags antes del primer retain().

Tu contenido va al LLM que configures

Retain envía lo que guardás al proveedor de modelo configurado, y el README documenta Memory Defense (redacción o bloqueo de secretos y PII contra 45 patrones) como opt-in por banco. Activalo y probalo, o usá un proveedor local, antes de retener algo sensible.

4. Casos de Uso: Dónde Rinden Retain, Recall y Reflect

El README es explícito sobre el punto ideal: agentes que necesitan una mezcla de capacidades, como empleados de IA que manejan tareas abiertas y cambian su comportamiento según feedback. Estos son los cuatro patrones en los que se apoyan él y los docs.

🧑‍💼

Asistentes por usuario

El caso más simple del README: retené inputs y llamadas a herramientas del usuario con tags o metadata y filtrá el recall por usuario. Los bancos te dan aislamiento; las observaciones evitan que las preferencias sean una pila plana de duplicados.

💻

Memoria de proyecto para coding agents

Un paquete aparte arma un banco por repo a partir del historial de git y sesiones pasadas, y lo inyecta cuando el agente arranca. Lista Claude Code, Codex CLI, Cursor CLI, opencode y otros. Ojo: el historial de tu repo pasa entonces por el LLM configurado.

🧭

Agentes que aprenden del feedback

Los ejemplos de reflect del README: un project manager que reflexiona sobre riesgos, un agente de ventas sobre por qué algunos mensajes tuvieron respuesta, un agente de soporte sobre huecos en la documentación. Los modelos mentales mantienen esas respuestas frescas en segundo plano.

🔌

Memoria drop-in para un stack existente

El wrapper de LiteLLM agrega memoria cambiando el cliente, el endpoint MCP expone las tres herramientas a cualquier cliente MCP, y el README cuenta 60+ integraciones entre coding agents, frameworks y herramientas no-code.

Hay una línea del README que vale la pena guardar: Hindsight se puede usar con workflows simples hechos con n8n y similares, pero “puede ser excesivo” para ellos. Si tu agente habla con un usuario una vez y olvida, no necesitás nada de esto.

5. Hindsight vs Mem0 vs OpenViking: Lo que Puedo Verificar

Misma categoría, apuestas distintas. La tabla se limita a hechos que pude leer en el README o los docs de cada proyecto el 2026-10-14. Las estrellas están redondeadas desde los metadatos del repositorio de ese día.

AspectoHindsightMem0OpenViking
Repo · estrellas (2026-10-14)vectorize-io/hindsight · ~49,7kmem0ai/mem0 · ~67,2kvolcengine/OpenViking · ~39,9k
Repo creado2025-10-302023-06-202026-01-05
LicenciaMITApache 2.0AGPLv3 el proyecto principal · Apache 2.0 en crates/ov_cli y ejemplos
Modelo centralBancos con cuatro tipos de memoria · retain / recall / reflectadd() / search() con estado de usuario, sesión y agenteFilesystem virtual bajo viking:// para recursos, memorias y skills · capas L0/L1/L2
Recuperación (según docs)Semántica + keyword + grafo + temporal en paralelo, fusión RRF, rerank con cross-encoderUn solo paso: semántica, keyword BM25 y entidades fusionadas (algoritmo de abril 2026)find / search acotado por directorio; resúmenes (L0, L1) antes del contenido completo (L2)
Paso de razonamientoreflect(): loop con herramientas y rasgos de disposiciónEl README documenta add y search; sin operación de razonamiento aparteEl commit de sesión extrae memorias en Markdown; ov compile arma wiki, grafo o reporte (con VikingBot)
Necesita un LLMSí · 25+ proveedores, incluidos locales (ollama, lmstudio, llamacpp)Sí · gpt-5-mini es el default del READMESí · un proveedor de modelos con modelo de embeddings y un VLM
Camino self-hostdocker run · pip install hindsight-api · Helm · compose con Postgres externolibrería con pip · server con docker compose (cd server && make bootstrap)uv tool install openviking --upgrade && openviking-server init
Opción gestionadaHindsight Cloud (por uso)Mem0 Platform (app.mem0.ai)OpenViking Service hospedado por Volcengine
Benchmark principal (autoreportado)LongMemEvalS 94,6%, LoCoMo10 92% (sitio del proyecto) · paper: 91,4% / 89,61%LoCoMo 92.5, LongMemEval 94.4 (abril 2026, plataforma gestionada con optimizaciones propietarias)LoCoMo 80 a 83% de precisión en tres integraciones de agentes (README, v0.3.22, modelos Doubao)

Los benchmarks usan harnesses y modelos distintos y, en el caso de Mem0, un stack gestionado, así que la última fila no es comparable entre columnas. No corrí los tres sistemas sobre un mismo workload.

Cómo elegiría

Hindsight cuando el agente tiene que formar y revisar creencias, con preguntas temporales o multi-hop y un paso de razonamiento. Mem0 cuando querés la API más chica y el ecosistema más grande. OpenViking cuando querés memoria, conocimiento y skills como un filesystem inspeccionable y podés convivir con AGPLv3 en el core. Es un juicio a partir de los docs, no un bake-off.

6. Cuándo NO Usar Hindsight: Límites Honestos

Una memoria que razona cuesta más que una que solo guarda. Estos son los límites que revisaría antes de comprometerme, cada uno atado a los docs del propio proyecto.

❌ Mejor otra cosa cuando

  • • No querés un LLM en cada escritura: retain extrae con un modelo, y la página de modelos dice que los modelos fuera de su lista probada deberían soportar al menos 65.000 tokens de salida para una extracción confiable (con límites menores hay que bajar HINDSIGHT_API_RETAIN_MAX_COMPLETION_TOKENS). Estimá tokens antes de ingerir historial en bloque.
  • • Necesitás escrituras determinísticas: los docs de retain dicen que la extracción no es del todo determinística, una misión que excluye todo produce un documento con cero memorias, y las páginas muy densas se muestrean en vez de extraerse completas.
  • • Tenés un presupuesto de latencia ajustado: el FAQ cita unos 50 a 100 ms para recall sin reranking, 200 a 500 ms con él y 1 a 10 s para reflect. Son cifras del proyecto, no mías.
  • • Tu tarea son respuestas citadas sobre un corpus estático: la propia página RAG-vs-memoria del proyecto recomienda RAG simple para Q&A de documentos y búsqueda sin necesidades temporales.
  • • Actualizás sin leer las notas de release: v1.0.0 lista cambios incompatibles (los callers limitados por tag son rechazados en operaciones de todo el banco, el load shedding devuelve 503 con Retry-After en vez de 500, el paquete agent-sdk de OpenClaw desapareció) y la página de la release no trae guía de migración.
  • • Pensás conectarlo a un coding agent sin revisar: el paquete coding-agents se conecta a tus agentes e ingiere historial de git y sesiones pasadas. Leé qué cambia antes de correr cualquier npx que toque tu agente.

✅ Hindsight encaja genial cuando

  • • El agente debe revisar creencias cuando cambia la evidencia (observaciones con conteo de pruebas, refinadas y no pisadas).
  • • Las preguntas tienen forma temporal o multi-hop: “¿qué pasó en junio?”, “¿quién más trabajó con ella?”.
  • • Querés un servicio self-hosteable con endpoint MCP, métricas de Prometheus y tu propio Postgres.
  • • Ya usás varios proveedores de modelos y querés elegir por operación, incluidos modelos locales.

Regla de oro

Tratá cada benchmark de este rubro, el de Hindsight incluido, como una hipótesis. Tomá 50 conversaciones reales de tu producto, retenelas y compará las respuestas de recall y reflect contra tu capa de memoria actual y un baseline de RAG simple. Si no podés definir esa evaluación, estás eligiendo por claims del README.

Conclusión

La apuesta de Hindsight es que la memoria de agentes es un problema de razonamiento y no solo de recuperación, y la división retain, recall, reflect vuelve concreta esa apuesta y fácil de probar: un comando de Docker, tres llamadas a métodos, un endpoint MCP. La primera 1.0 llegó el 2026-10-13, así que esperá que la API siga moviéndose.

Corrélo sobre un banco descartable, medí el costo en tokens con tus datos, activá Memory Defense si pasa algo sensible y decidí con tu propia evaluación y no con el gráfico de nadie.

Diego Rodriguez

Diego Rodriguez

Ingeniero Senior Full-Stack & AI

Diego tiene mas de 9 anos de experiencia construyendo aplicaciones potenciadas por IA de produccion, desde orquestacion de LLMs y pipelines RAG hasta deteccion de riesgos con ML y sistemas de trading algoritmico.

Conoce mas sobre Diego →