# Memory 与知识

> PentAGI 如何在 flow 中记忆命令、结果及关联关系。

PentAGI 保留三种 [memory](https://pentagi.com/zh-cn/docs/glossary/#memory)，使 [agents](https://pentagi.com/zh-cn/docs/glossary/#agent) 能够在先前工作的基础上继续推进，而无需从头开始。

| Memory    | 存储位置                             | 存储内容                                          |
| --------- | -------------------------------- | --------------------------------------------- |
| 长期 memory | 带 pgvector 的 PostgreSQL          | 结果、成功方法及 [tool](https://pentagi.com/zh-cn/docs/glossary/#tool) 知识的向量嵌入 |
| 工作 memory | [Flow](https://pentagi.com/zh-cn/docs/glossary/#flow) 上下文 | 当前目标、[task](https://pentagi.com/zh-cn/docs/glossary/#task) 状态及可用资源     |
| 情景 memory | 命令历史                             | 过往操作、执行结果及有效的模式                               |

每条命令及其输出均存储在 PostgreSQL 中。Agents 在执行操作前会查询 [vector store](https://pentagi.com/zh-cn/docs/glossary/#vector-store) 以检索相似案例，并将 [findings](https://pentagi.com/zh-cn/docs/glossary/#finding) 写回——`memorist` 和 `searcher` agents 承担了大部分此类检索工作。

## [Knowledge graph（可选）](https://pentagi.com/zh-cn/docs/concepts/memory/#knowledge-graph-optional)

启用 [knowledge graph](https://pentagi.com/zh-cn/docs/glossary/#knowledge-graph) 技术栈后，PentAGI 会将 agent 响应和 tool 执行发送至 Neo4j 上的 [Graphiti](https://github.com/getzep/graphiti)。借助 `.env` template 的摄取规则，它会从终端和文件操作中提取实体与关系——包括主机、服务、漏洞、技术以及它们随时间演变的关联——并保持其他事件可搜索而不进行提取。

```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 运行其自有模型：`GRAPHITI_LLM_CLIENT_TYPE` 选择预设 — `openai`、`gemini`、`litellm` 或 `custom` — 其模型在 `./graphiti/<preset>.yaml` 中设置，匹配的密钥来自 `.env`（`openai` 对应 `OPEN_AI_KEY`）。2.2.0 之前的 `.env` 缺少这些行和 `GRAPHITI_INGEST_*` 规则：请从当前的 `.env.example` 中复制它们。

> [!WARNING]
> Graphiti 为测试版集成，默认处于关闭状态。检索范围仅限于当前活跃 flow；内置的 Graphiti API 未提供身份验证，因此请务必将其与 Neo4j 部署在私有网络中。提取与向量嵌入的费用与 flow 自身的模型费用分开计算。

PentAGI 仅在启动时检查 Graphiti，持续几秒钟。如果届时 Graphiti 尚未就绪，PentAGI 将记录警告并在下次重启前不使用 knowledge graph 运行，因此一旦 Graphiti 报告健康状态，请运行 `docker restart pentagi`。