ai-ml

Memoria Persistente para Agentes Ofensivos

Un pentest no cabe en una ventana de contexto. Una campaña real cruza reconocimiento, explotación y post-explotación durante horas; si el agente olvida lo que vio en la fase 1 cuando llega a la 4, repite trabajo, pierde hallazgos y toma malas decisiones. La memoria persistente es lo que convierte a un LLM en un operador.

Tres tipos de memoria, no uno

  • Episódica: el log inmutable de qué se ejecutó, cuándo y con qué salida. Base de la trazabilidad y del replay.
  • De trabajo: el estado vivo de la campaña — hosts, credenciales, rutas de pivote, hipótesis abiertas. Se compacta y resume entre fases.
  • Semántica: conocimiento reutilizable (TTPs, writeups) servido por Beorn vía RAG, no específico del objetivo.

Recuperar con disciplina

El error típico es volcar toda la memoria en cada prompt. Recuperamos por relevancia y fase: el agente pide "credenciales válidas para 10.0.0.0/24" y recibe solo eso, con su procedencia. Cada fragmento lleva su origen para que el razonamiento sea auditable.

memory.query({ scope: "10.0.0.0/24", kind: "credential",
  phase: "lateral-movement", max_tokens: 800 })

Memoria con scope, no fuga de datos

La memoria es una superficie de exfiltración si no se controla. Toda escritura pasa por Sentinel: nada fuera del scope aprobado se persiste, y el kill-switch purga la memoria de trabajo al instante. La episódica se conserva cifrada para forense; la de trabajo es efímera por diseño.

Lo que enviamos

En Gandalf, la memoria persistente es de primera clase: cada agente arranca una fase con un resumen reconstruido de la anterior, no con una ventana en blanco. Menos trabajo repetido, decisiones con contexto y un rastro completo de por qué el agente hizo lo que hizo.