# Memory e conhecimento

> Como o PentAGI memoriza comandos, resultados e relações ao longo de um flow.

O PentAGI mantém três tipos de [memory](https://pentagi.com/pt-br/docs/glossary/#memory) para que os [agents](https://pentagi.com/pt-br/docs/glossary/#agent) possam aproveitar o trabalho anterior em vez de começar do zero.

| Memory      | Onde fica armazenada                     | O que contém                                                                                         |
| ----------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Longo prazo | PostgreSQL com pgvector                  | Embeddings de resultados, abordagens bem-sucedidas e conhecimento sobre [tool](https://pentagi.com/pt-br/docs/glossary/#tool) |
| Trabalho    | Contexto do [flow](https://pentagi.com/pt-br/docs/glossary/#flow) | O objetivo atual, estado da [task](https://pentagi.com/pt-br/docs/glossary/#task) e recursos disponíveis                      |
| Episódica   | Histórico de comandos                    | Ações anteriores, seus resultados e padrões que funcionaram                                          |

Cada comando e sua saída são armazenados no PostgreSQL. Os agents consultam o [vector store](https://pentagi.com/pt-br/docs/glossary/#vector-store) em busca de casos semelhantes antes de agir e registram seus [findings](https://pentagi.com/pt-br/docs/glossary/#finding) de volta — os agents `memorist` e `searcher` realizam a maior parte desse trabalho de consulta.

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

Com a pilha do [knowledge graph](https://pentagi.com/pt-br/docs/glossary/#knowledge-graph) habilitada, o PentAGI envia as respostas do agent e as execuções de tool para o [Graphiti](https://github.com/getzep/graphiti) no Neo4j. Com as regras de ingestão do template `.env`, ele extrai entidades e relacionamentos — hosts, serviços, vulnerabilidades, técnicas e como eles se relacionam ao longo do tempo — de operações de terminal e de arquivo, e mantém os outros eventos pesquisáveis sem extração.

```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
```

O Graphiti executa seu próprio modelo: `GRAPHITI_LLM_CLIENT_TYPE` escolhe o preset — `openai`, `gemini`, `litellm` ou `custom` — cujos modelos são definidos em `./graphiti/<preset>.yaml`, e a chave correspondente vem de `.env` (`OPEN_AI_KEY` para `openai`). Um `.env` anterior à versão 2.2.0 não tem essas linhas nem as regras do `GRAPHITI_INGEST_*`: copie-as do `.env.example` atual.

> [!WARNING]
> O Graphiti é uma integração beta e está desativado por padrão. A recuperação é restrita ao flow ativo; a API do Graphiti incluída não possui autenticação, portanto mantenha-a e o Neo4j em uma rede privada. A extração e os embeddings são cobrados separadamente do modelo do próprio flow.

O PentAGI verifica o Graphiti apenas na inicialização, por alguns segundos. Se o Graphiti não estiver pronto nesse período, o PentAGI registra um aviso e executa sem o knowledge graph até a próxima reinicialização; portanto, assim que o Graphiti informar que está saudável, execute `docker restart pentagi`.