跳到主要内容

Store 长期记忆

Store 是 Graph Core 的长期记忆接口,用于跨会话保存结构化数据。它不同于 checkpoint saver:checkpoint saver 保存一次图执行的状态快照,Store 保存应用或用户层面的长期数据,例如用户偏好、外部检索结果索引、业务画像或可复用上下文。

核心模型​

类型说明
Store长期记忆接口,提供写入、读取、删除、搜索、列出 namespace、清空、计数等操作。
StoreItem单条数据,包含 namespace、key、value、createdAt、updatedAt。
StoreSearchRequest搜索请求,支持 namespace、query、filter、sortFields、ascending、offset、limit。
StoreSearchResult搜索结果,包含命中的 StoreItem 列表和分页信息。
NamespaceListRequestnamespace 查询请求,支持 prefix、maxDepth、offset、limit。

namespace 是层级路径,类型是 List<String>。同一个 namespace 内通过 key 唯一定位数据。

内置实现​

refactor 分支当前可确认的实现如下:

实现说明
MemoryStore基于内存的实现,适合测试、开发或轻量场景,进程重启后数据丢失。
FileSystemStore将 StoreItem 作为 JSON 文件保存在本地目录中,适合单节点文件系统持久化。
RedisStoreRedis-like 内存实现,当前代码使用内存 Map 模拟 Redis 行为。生产 Redis 集成应替换为真实 Redis 客户端实现。
MongoStoreMongoDB-like 内存实现,当前代码使用内存 Map 模拟 MongoDB 行为。生产 MongoDB 集成应替换为真实 MongoDB 客户端实现。
DatabaseStoreJDBC 实现,源码中已标记 @Deprecated(since = "2.1.0", forRemoval = true),注释建议迁移到 argi-graph-persistence-jdbc 中的替代实现。

写入与读取​

import io.github.agentic.ai.graph.store.Store;
import io.github.agentic.ai.graph.store.StoreItem;
import io.github.agentic.ai.graph.store.stores.MemoryStore;

import java.util.List;
import java.util.Map;
import java.util.Optional;

Store store = new MemoryStore();

store.putItem(StoreItem.of(
List.of("users", "alice", "preferences"),
"ui",
Map.of("theme", "dark", "language", "en-US")
));

Optional<StoreItem> item = store.getItem(
List.of("users", "alice", "preferences"),
"ui"
);

搜索与列出 namespace​

import io.github.agentic.ai.graph.store.NamespaceListRequest;
import io.github.agentic.ai.graph.store.StoreSearchRequest;
import io.github.agentic.ai.graph.store.StoreSearchResult;

StoreSearchRequest searchRequest = StoreSearchRequest.builder()
.namespace("users", "alice")
.query("dark")
.limit(10)
.build();

StoreSearchResult result = store.searchItems(searchRequest);

List<String> namespaces = store.listNamespaces(
NamespaceListRequest.builder()
.namespace("users")
.maxDepth(2)
.build()
);

在 Graph 中使用 Store​

Store 可以在编译期配置,也可以在单次运行中通过 RunnableConfig 提供。

import io.github.agentic.ai.graph.CompileConfig;
import io.github.agentic.ai.graph.RunnableConfig;
import io.github.agentic.ai.graph.store.stores.MemoryStore;

MemoryStore store = new MemoryStore();

CompiledGraph graph = stateGraph.compile(
CompileConfig.builder()
.store(store)
.build()
);

RunnableConfig config = RunnableConfig.builder()
.threadId("alice-session")
.store(store)
.build();

graph.invoke(Map.of("input", "remember my preference"), config);

如果节点需要读取 Store,可以使用带 RunnableConfig 的节点动作,并从 config.store() 取得当前 Store。

import static io.github.agentic.ai.graph.action.AsyncNodeActionWithConfig.node_async;

stateGraph.addNode("load_memory", node_async((state, config) -> {
return config.store()
.getItem(List.of("users", "alice", "preferences"), "ui")
.map(item -> Map.<String, Object>of("preference", item.getValue()))
.orElseGet(Map::of);
}));

与 checkpoint saver 的区别​

项目Storecheckpoint saver
目标保存长期业务记忆。保存图执行状态快照。
主要键namespace + key。threadId + checkPointId。
数据形态Map<String, Object> 结构化数据。Checkpoint / StateSnapshot。
使用方式节点主动读写。图运行时自动保存和恢复。

ARGI(Agent Runtime and Graph Intelligence)是面向 Java 开发者的智能体运行时与工作流框架。