# Memory y conocimiento

> Cómo PentAGI recuerda comandos, resultados y relaciones a lo largo de un flow.

PentAGI mantiene tres tipos de [memory](https://pentagi.com/es/docs/glossary/#memory) para que los [agents](https://pentagi.com/es/docs/glossary/#agent) puedan aprovechar el trabajo previo en lugar de empezar desde cero.

| Memory        | Dónde reside                              | Qué almacena                                                                                |
| ------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------- |
| A largo plazo | PostgreSQL con pgvector                   | Embeddings de resultados, enfoques exitosos y conocimiento de [tool](https://pentagi.com/es/docs/glossary/#tool)  |
| De trabajo    | Contexto del [flow](https://pentagi.com/es/docs/glossary/#flow) | El objetivo actual, el estado de la [task](https://pentagi.com/es/docs/glossary/#task) y los recursos disponibles |
| Episódica     | Historial de comandos                     | Acciones pasadas, sus resultados y patrones que funcionaron                                 |

Cada comando y su salida se almacenan en PostgreSQL. Los agents consultan el [vector store](https://pentagi.com/es/docs/glossary/#vector-store) en busca de casos similares antes de actuar y guardan allí sus [findings](https://pentagi.com/es/docs/glossary/#finding); los agents `memorist` y `searcher` realizan la mayor parte de este trabajo de búsqueda.

## [Knowledge graph (opcional)](https://pentagi.com/es/docs/concepts/memory/#knowledge-graph-optional)

Con la pila del [knowledge graph](https://pentagi.com/es/docs/glossary/#knowledge-graph) habilitada, PentAGI envía las respuestas de agent y las ejecuciones de tool a [Graphiti](https://github.com/getzep/graphiti) sobre Neo4j. Con las reglas de ingestión de la template `.env`, extrae entidades y relaciones —hosts, servicios, vulnerabilidades, técnicas y cómo se relacionan a lo largo del tiempo— de las operaciones de terminal y de archivo, y mantiene los demás eventos buscables sin extracción.

```bash
GRAPHITI_ENABLED=true
GRAPHITI_URL=http://graphiti:8000
GRAPHITI_CONFIG_DIR=llm_configs
GRAPHITI_LLM_CLIENT_TYPE=openai
NEO4J_URI=bolt://neo4j:7687
NEO4J_PASSWORD=replace_with_a_strong_password
```

```bash
git clone --depth 1 https://github.com/vxcontrol/pentagi.git pentagi-src
cp -r pentagi-src/examples/graphiti ./graphiti
cp -r pentagi-src/examples/neo4j ./neo4j
rm -rf pentagi-src
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-graphiti.yml
docker compose -f docker-compose.yml -f docker-compose-graphiti.yml up -d
```

Graphiti ejecuta su propio modelo: `GRAPHITI_LLM_CLIENT_TYPE` elige el preset — `openai`, `gemini`, `litellm` o `custom` — cuyos modelos se configuran en `./graphiti/<preset>.yaml`, y la clave correspondiente proviene de `.env` (`OPEN_AI_KEY` para `openai`). Un `.env` anterior a la versión 2.2.0 carece de estas líneas y de las reglas del `GRAPHITI_INGEST_*`: cópialas del `.env.example` actual.

> [!WARNING]
> Graphiti es una integración en fase beta y está desactivada por defecto. La recuperación de información se limita al flow activo; la API de Graphiti incluida no tiene autenticación, así que mantenla junto con Neo4j en una red privada. La extracción y los embeddings se facturan por separado del modelo propio del flow.

PentAGI comprueba Graphiti solo cuando se inicia, durante unos segundos. Si Graphiti no está listo para entonces, PentAGI registra una advertencia y funciona sin el knowledge graph hasta su próximo reinicio, así que una vez que Graphiti informe de que está saludable, ejecuta `docker restart pentagi`.