# Memory i wiedza

> Jak PentAGI zapamiętuje polecenia, wyniki i relacje w trakcie flow.

PentAGI przechowuje trzy rodzaje [memory](https://pentagi.com/pl/docs/glossary/#memory), dzięki czemu agenci mogą opierać się na wcześniejszej pracy, zamiast zaczynać od zera.

| Memory         | Gdzie jest przechowywana              | Co zawiera                                                                      |
| -------------- | ------------------------------------- | ------------------------------------------------------------------------------- |
| Długoterminowa | PostgreSQL z pgvector                 | Osadzenia wyników, sprawdzonych podejść i wiedzy o [tool](https://pentagi.com/pl/docs/glossary/#tool) |
| Robocza        | Kontekst [flow](https://pentagi.com/pl/docs/glossary/#flow) | Bieżący cel, stan [task](https://pentagi.com/pl/docs/glossary/#task) i dostępne zasoby                |
| Epizodyczna    | Historia poleceń                      | Przeszłe akcje, ich wyniki i wzorce, które się sprawdziły                       |

Każde polecenie i jego wynik są zapisywane w PostgreSQL. Przed podjęciem akcji agenci przeszukują [vector store](https://pentagi.com/pl/docs/glossary/#vector-store) w poszukiwaniu podobnych przypadków, a następnie zapisują w nim swoje [findings](https://pentagi.com/pl/docs/glossary/#finding) — większość tej pracy wyszukującej wykonują agenci `memorist` i `searcher`.

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

Po włączeniu infrastruktury [knowledge graph](https://pentagi.com/pl/docs/glossary/#knowledge-graph), PentAGI wysyła odpowiedzi agentów oraz wykonania tool do [Graphiti](https://github.com/getzep/graphiti) na Neo4j. Zgodnie z regułami ingestu szablonu `.env` wyodrębnia encje i relacje — hosty, usługi, podatności, techniki oraz to, jak powiązania między nimi zmieniają się w czasie — z operacji terminala i plików, a pozostałe zdarzenia utrzymuje w stanie umożliwiającym wyszukiwanie bez ekstrakcji.

```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 uruchamia własny model: `GRAPHITI_LLM_CLIENT_TYPE` wybiera preset — `openai`, `gemini`, `litellm` lub `custom` — którego modele są ustawione w `./graphiti/<preset>.yaml`, a pasujący klucz pochodzi z `.env` (`OPEN_AI_KEY` dla `openai`). Plik `.env` sprzed wersji 2.2.0 nie zawiera tych linii ani reguł `GRAPHITI_INGEST_*`: skopiuj je z bieżącego pliku `.env.example`.

> [!WARNING]
> Graphiti to integracja w fazie beta, domyślnie wyłączona. Zakres przywoływania obejmuje tylko aktywny flow; wbudowane API Graphiti nie posiada uwierzytelniania, dlatego trzymaj je i Neo4j w sieci prywatnej. Ekstrakcja i osadzanie są rozliczane osobno, niezależnie od modelu używanego przez flow.

PentAGI sprawdza Graphiti tylko podczas uruchamiania, przez kilka sekund. Jeśli Graphiti nie będzie wtedy gotowe, PentAGI loguje ostrzeżenie i działa bez knowledge graph aż do następnego restartu, więc gdy Graphiti zgłosi gotowość, uruchom `docker restart pentagi`.