资讯动态

openJiuwen agent-core-java 记忆类型枚举 SupportMemoryType 全解析:用户画像与摘要记忆的标识约定

发布时间:2026/10/14 18:26:55 来源:尧图企业网站定制
人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习【免费下载链接】agent-core-javaopenJiuwen agent core Java是 openJiuwen Core的 Java版本提供AI Agent开发、运行、调优与演进相关的全套SDK能力。项目地址https://gitcode.com/openJiuwen/agent-core-java点击查看免费下载SupportMemoryType是 openJiuwen agent-core-java 记忆引擎com.openjiuwen.memory中用于标识「受支持的记忆类型」的公开枚举位于 mem_model 数据模型包 之下。它只定义了两个值USER_PROFILE用户画像与SUMMARY摘要记忆但这两个值贯穿了长期记忆的写入、检索与向量库 schema 迁移全链路。读完本文你将掌握该枚举的源码结构、与MemoryType的职责差异以及它在向量迁移白名单校验中的实际用法能够准确理解记忆引擎中用户画像 / 摘要记忆两种记忆类型的标识约定。一、枚举定位管理层支持的记忆类型在 SupportMemoryType.java 中枚举被定义为com.openjiuwen.memory.manage.mem_model包下的公开类型其 Javadoc 明确说明它的用途Memory types supported by summary/vector-specific paths.即它是摘要记忆 / 向量专用路径所支持的记忆类型清单。从源码结构看该枚举与 Python 版openjiuwen/core/memory/manage/mem_model/memory_unit.py中的SupportMemoryType一一对应注释中注明 Mirrors Pythons ...是 Java 版对 Python 实现的对齐镜像。完整源码如下package com.openjiuwen.memory.manage.mem_model; public enum SupportMemoryType { USER_PROFILE(user_profile), SUMMARY(summary); private final String value; SupportMemoryType(String value) { this.value value; } public String getValue() { return value; } }二、枚举值两个成员与原始值约定SupportMemoryType仅包含两个枚举成员每个成员都绑定一个字符串原始值value该原始值是与 Python 版保持一致的底层标识用于存储层与迁移层的匹配。枚举值原始值getValue()说明USER_PROFILEuser_profile用户画像记忆。对应长期记忆中描述用户偏好、身份等画像类信息的记忆类型。SUMMARYsummary摘要记忆。对应跨多轮会话压缩生成的历史摘要记忆类型。两个原始值均为小写蛇形命名snake_case与存储层使用的字符串标识完全一致而不是 Java 惯例的USER_PROFILE大写形式——这一点在对接 SQL / 向量 / KV 存储时至关重要。三、字段与公开方法单字段枚举的标准形态成员类型说明字段valueString枚举的原始值构造时通过私有构造器注入不可变更。方法public String getValue()String返回当前枚举对应的原始值字符串。这是一个非常标准的值绑定枚举模式私有构造器接收字符串参数getValue()暴露给外部使用。由于枚举实例本身是单例且value为final因此getValue()返回的值在 JVM 生命周期内恒定不变可以安全地作为存储键、集合名后缀或校验白名单使用。与 MemoryType 的职责差异同包下还有一个更完整的枚举 MemoryType.java它定义了 7 个成员FRAGMENT_MEMORY、USER_PROFILE、SEMANTIC_MEMORY、EPISODIC_MEMORY、VARIABLE、SUMMARY、UNKNOWN并提供了fromValue(String)的字符串反查方法。两者的关系可以这样理解MemoryType是全量记忆类型枚举覆盖长期记忆引擎中出现的所有记忆分类并负责字符串 → 枚举的反向解析未知值回退为UNKNOWNSupportMemoryType是受支持类型白名单只列出向量 / 摘要专用路径允许出现的两种类型。从 LongTermMemory.java 的管理器装配代码可以看到五种MemoryType值被映射到三类管理器managers.put(MemoryType.USER_PROFILE.getValue(), fragmentMemoryManager); managers.put(MemoryType.EPISODIC_MEMORY.getValue(), fragmentMemoryManager); managers.put(MemoryType.SEMANTIC_MEMORY.getValue(), fragmentMemoryManager); managers.put(MemoryType.VARIABLE.getValue(), variableManager); managers.put(MemoryType.SUMMARY.getValue(), summaryManager);其中USER_PROFILE走fragmentMemoryManager分片记忆管理器SUMMARY走summaryManager摘要记忆管理器。可以看到user_profile与summary这两个字符串值正是管理器注册表、向量集合命名与检索类型过滤所使用的底层标识。四、实战场景一向量迁移白名单校验SupportMemoryType最直接的生产级用法出现在向量存储迁移器 VectorMigrator.java 中。向量迁移流程会先根据记忆类型字符串查找对应的集合再用枚举构建合法类型白名单进行校验private void validateMemoryType(String memTypeStr) { ListString supportedTypes Arrays.stream(SupportMemoryType.values()) .map(SupportMemoryType::getValue) .sorted() .toList(); if (!supportedTypes.contains(memTypeStr)) { throw ErrorHelper.buildError( StatusCode.MEMORY_MIGRATE_MEMORY_EXECUTION_ERROR, error_msg, Unsupported memory type: memTypeStr . Supported types: supportedTypes ); } }这段逻辑说明了两点关键行为集合命名约定向量集合通过_ normalized后缀匹配即user_profile对应形如xxx_user_profile的集合summary对应形如xxx_summary的集合实体键允许带vector_前缀会被normalizeMemoryType剥离最终以后缀匹配集合名非法类型拦截如果传入的记忆类型不在SupportMemoryType白名单中会抛出MEMORY_MIGRATE_MEMORY_EXECUTION_ERROR错误码并列出当前支持的类型避免迁移器对未知类型的集合执行 schema 更新。迁移流程由 RunMigrations.java 统一驱动通过MigrationPlan.getVectorRegistry()注册的操作逐实体执行tryMigrate因此SupportMemoryType实质上充当了向量迁移的输入合法性闸门。五、实战场景二与记忆单元的固定类型约束联动SupportMemoryType的两个成员在记忆单元模型中也有一一对应的落地载体摘要记忆单元 SummaryUnit.java构造时强制super(MemoryType.SUMMARY, memId)且setMemType(...)被重写为总是写回MemoryType.SUMMARY确保摘要单元的类型不可被篡改用户画像类记忆则通过 FragmentMemoryUnit.java 承载允许显式指定MemoryType包括USER_PROFILE配合OperationType如ADD记录记忆变更操作。这种枚举常量 固定类型单元的组合使记忆类型标识user_profile/summary在写入、存储、检索与迁移各环节保持一致。六、测试验证原始值契约被测试固化仓库中的单元测试 MemoryUnitModelsTest.java 明确固化了SupportMemoryType的原始值契约assertThat(SupportMemoryType.SUMMARY.getValue()).isEqualTo(summary);同一条测试方法还断言了MemoryType.USER_PROFILE.getValue()等于user_profile、SEMANTIC_MEMORY等于semantic_memory等说明user_profile/summary等字符串值是被测试锁定的稳定契约任何改动都会导致测试失败。七、记忆引擎中的使用背景从整体功能定位看参见 记忆引擎指南openJiuwen agent-core-java 的长期记忆以LongTermMemory单例为唯一公开入口通过registerStore(kvStore, vectorStore, dbStore, embeddingModel)注册 KV、向量、SQL 三类存储后按userId scopeId sessionId边界写入与检索。AgentMemoryConfig中的enableLongTermMem、enableFragmentMemory、enableSummaryMemory、memVariables四个开关分别对应长期记忆总开关、片段画像记忆、摘要记忆与变量记忆——其中前两者正是SupportMemoryType覆盖的范围。因此SupportMemoryType可以理解为在长期记忆的两条专用路径用户画像分片路径、摘要路径上唯一被允许出现的记忆类型集合。八、使用建议取原始值用getValue()对接存储或迁移时永远通过SupportMemoryType.USER_PROFILE.getValue()/SupportMemoryType.SUMMARY.getValue()获取字符串不要硬编码避免与 Python 版契约脱节区分两个枚举需要全量类型判断含UNKNOWN兜底、fromValue反查时使用MemoryType需要受支持类型白名单语义如迁移校验时使用SupportMemoryType保持值的小写蛇形user_profile、summary同时充当集合名后缀与管理器注册键变更需同步评估存储层兼容性。参考入口枚举源码SupportMemoryType.java全量类型枚举MemoryType.java摘要记忆单元SummaryUnit.java向量迁移器白名单校验VectorMigrator.java迁移调度入口RunMigrations.java长期记忆主入口LongTermMemory.java单元测试值契约MemoryUnitModelsTest.java包索引文档mem_model.README.md使用背景记忆引擎.md赞分享人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习【免费下载链接】agent-core-javaopenJiuwen agent core Java是 openJiuwen Core的 Java版本提供AI Agent开发、运行、调优与演进相关的全套SDK能力。项目地址https://gitcode.com/openJiuwen/agent-core-java点击查看免费下载相关推荐openJiuwen agent-core-java 长期记忆管理层manage 包源码解析分片/摘要/变量记忆与统一写入协调openJiuwen agent core java 长期记忆管理层manage 包源码解析分片/摘要/变量记忆与统一写入协调 导读 本文聚焦 openJ人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习DLSS Swapper9 种 DLL、8 个游戏库不更新游戏也能切换缩放版本DLSS Swapper9 种 DLL、8 个游戏库不更新游戏也能切换缩放版本 如果你的游戏还停在上一代 DLSS而新版早就发布你又不想等厂商推送补丁、桌面应用openJiuwen 记忆引擎 MemoryStatus 枚举详解记忆增量更新中的 ADD 与 DELETE 动作语义openJiuwen 记忆引擎 MemoryStatus 枚举详解记忆增量更新中的 ADD 与 DELETE 动作语义 导读 MemoryStatus 是 o人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑