openJiuwen agent-core-java 记忆引擎解析:MemCheckItem 单条记忆检查结果对象详解

发布时间:2026/10/15 16:58:22

openJiuwen agent-core-java 记忆引擎解析:MemCheckItem 单条记忆检查结果对象详解 人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习【免费下载链接】agent-core-javaopenJiuwen agent core Java是 openJiuwen Core的 Java版本提供AI Agent开发、运行、调优与演进相关的全套SDK能力。项目地址https://gitcode.com/openJiuwen/agent-core-java点击查看免费下载MemCheckItem是 openJiuwen agent-core-java 记忆引擎中“记忆增量更新判定”环节的核心数据结构用于承载大模型对单条新记忆与既有记忆之间冗余 / 冲突 / 共存关系的检查结论。本文围绕该类的字段定义、JSON 契约、在MemUpdateChecker中的消费流程与配套测试展开帮助你理解 Agent 长期记忆如何通过“检查—动作”机制实现去重与纠偏。MemCheckItem 在记忆引擎中的定位在 openJiuwen 的记忆模块中增量更新不是简单的新旧记忆叠加而是先由模型判定语义关系再生成增删动作。com.openjiuwen.memory.manage.update包负责这一整套能力其核心类型包括类型说明CheckResult检查结果枚举redundant/conflicting/noneMemCheckItem单条检查结果对象即本文主角MemoryActionItem记忆更新动作对象ADD / DELETEMemoryStatus动作状态枚举MemUpdateChecker基于提示词和模型输出判断记忆冗余与冲突MemCheckItem描述的是“模型对一条新记忆给出的检查结论”这条新记忆是冗余、冲突还是可共存若冗余 / 冲突它与哪些旧记忆相关。它处于整个更新流程的“模型输出解析”与“动作生成”之间的桥梁位置。参见包说明文档 update.README.md。数据结构Java record 定义源码 MemCheckItem.java 将MemCheckItem实现为不可变的 Java record并使用 Jackson 的JsonProperty注解声明 JSON 字段名public record MemCheckItem( JsonProperty(info_id) String infoId, JsonProperty(info_text) String infoText, CheckResult result, JsonProperty(related_infos) MapString, String relatedInfos ) { public MemCheckItem { Objects.requireNonNull(infoId, info_id); Objects.requireNonNull(infoText, info_text); Objects.requireNonNull(result, result); relatedInfos relatedInfos null ? new LinkedHashMap() : new LinkedHashMap(relatedInfos); } }公开成员一览与原 API 文档一致字段类型说明infoIdString新记忆的 ID对应 JSON 键info_idinfoTextString新记忆的内容文本对应 JSON 键info_textresultCheckResult该条记忆的检查结论relatedInfosMapString, String相关联的旧记忆ID → 内容对应 JSON 键related_infos从源码结构看使用 record 意味着对象天然不可变便于在异步检查流程中安全传递紧凑构造器compact constructor还会在创建时执行非空校验并保证relatedInfos永远不为null。字段逐一解析infoId 与 infoText被检查的新记忆infoId标识被检查的新记忆条目infoText是它的内容。二者在构造器中均通过Objects.requireNonNull强制非空防止模型输出解析出缺失关键字段的对象。result模型给出的结论result的类型是枚举CheckResult定义见 CheckResult.java枚举值JSON 原始值语义REDUNDANTredundant新记忆与旧记忆语义冗余无需新增CONFLICTINGconflicting新记忆与旧记忆逻辑冲突需要以新替旧NONEnone可共存正常新增该枚举通过JsonValue/JsonCreator支持与字符串值的双向转换这也是MemCheckItem能被 Jackson 从模型输出 JSON 直接反序列化的前提。relatedInfos关联的旧记忆relatedInfos是一个MapString, String键为旧记忆 ID、值为旧记忆内容。其填充规则是仅当result为redundant或conflicting时携带关联旧记忆若为none则为空对象。构造函数会把入参复制为LinkedHashMap以保持插入顺序并在传入null时兜底为空 Map。JSON 序列化契约与模型输出严格对齐MemCheckItem的四个字段通过JsonProperty与蛇形命名snake_case的 JSON 键一一对应这正是为了直接解析大模型返回的检查结果。底层提示词模板 memory_update_check.md 明确要求模型输出如下结构[{info_id: , info_text: , result: , related_infos: {}}, ...]其中result取值限定为redundant、conflicting、nonerelated_infos仅在冗余或冲突时填充{旧信息ID: 旧信息内容, ...}none时为空对象{}。由此可见MemCheckItem的字段设计完全来自该提示词模板的输出规范二者共同构成“提示词要求—模型输出—Java 对象解析”的闭环。在 MemUpdateChecker 中的消费流程MemCheckItem的消费方是 MemUpdateChecker.java。其check方法支持无模型直接全量新增、以及带模型与重试次数的重载整体流程如下调用formatInput将新旧记忆格式化为ID: 内容文本新记忆逆序、旧记忆顺序填充提示词模板的new_information/old_information变量通过PromptApplier应用memory_update_check模板构造UserMessage参见 PromptApplier.java在独立 IO 线程池中调用模型使用JsonOutputParser解析响应将解析结果OBJECT_MAPPER.convertValue(item, MemCheckItem.class)反序列化为MemCheckItem列表遍历检查结果按result分发生成MemoryActionItem动作REDUNDANT跳过该新记忆不产生任何动作CONFLICTING为新记忆生成ADD动作同时为relatedInfos中仍存在于旧记忆的条目生成DELETE动作新替旧NONE为新记忆生成ADD动作。若模型输出解析失败且重试耗尽或未配置模型则回退为“全部新记忆直接 ADD”保证记忆更新流程不会因模型异常而中断。解析层同时兼容模型输出“单个对象”与“对象数组”两种形态normalizeParsedResult会统一归一为列表。动作对象MemoryActionItem(id, content, status)与状态枚举MemoryStatus(ADD/DELETE)的实现见 MemoryActionItem.java 与 MemoryStatus.java。通过测试用例掌握典型行为仓库测试 MemUpdateCheckerTest.java 覆盖了MemCheckItem相关的全部典型场景可作为使用参考冗余模型返回result: redundant且related_infos: {2: I enjoy books}时检查结果为空——新记忆被丢弃冲突模型返回result: conflicting且关联旧记忆{2: I hate books}时生成“新增新记忆 1 删除旧记忆 2”两个动作共存result: none时仅生成新记忆的ADD动作健壮性模型输出非法 JSON 时回退为全量新增单个对象输出会被归一化为列表处理重复 ID 仍正常消费模型响应构造校验memCheckItemCreation测试验证了四个访问器方法infoId()、infoText()、result()、relatedInfos()与字段值的正确性。此外enumValuesArePythonCompatible测试确认了CheckResult与MemoryStatus的字符串值与 Python 版本保持兼容——MemCheckItem的源码注释明确说明其镜像自 Python 侧openjiuwen/core/memory/manage/update/mem_update_checker.py这为跨语言实现的一致性提供了保障。小结MemCheckItem虽然只是一个四字段的数据对象却是 openJiuwen 记忆增量更新链路中承上启下的关键它向上承接大模型的 JSON 检查输出info_id、info_text、result、related_infos与提示词模板的字段规范一一对应向下驱动MemUpdateChecker生成具体的 ADD / DELETE 动作从而让 Agent 的长期记忆在持续写入过程中自动去重、自动纠偏、避免信息冲突累积。理解这一对象等于掌握了 openJiuwen 记忆引擎“先检查、后更新”的增量维护机制入口。赞分享人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习【免费下载链接】agent-core-javaopenJiuwen agent core Java是 openJiuwen Core的 Java版本提供AI Agent开发、运行、调优与演进相关的全套SDK能力。项目地址https://gitcode.com/openJiuwen/agent-core-java点击查看免费下载相关推荐FragmentMemoryUnit 碎记忆单元模型详解——openJiuwen agent-core-java 记忆引擎数据模型篇FragmentMemoryUnit 碎记忆单元模型详解——openJiuwen agent core java 记忆引擎数据模型篇 本文围绕 openJiuw人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习openJiuwen agent-core-java 记忆检索结果模型 MemResult 深度解析openJiuwen agent core java 记忆检索结果模型 MemResult 深度解析 MemResult 是 openJiuwen agent人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习DLSS Swapper9 种 DLL、8 个游戏库不更新游戏也能切换缩放版本DLSS Swapper9 种 DLL、8 个游戏库不更新游戏也能切换缩放版本 如果你的游戏还停在上一代 DLSS而新版早就发布你又不想等厂商推送补丁、桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/15 16:58:22

XXE漏洞详解:五大高危场景与防护实践

文件上传功能刚上线三天,某公司就被安全团队拉去复盘。原因很简单:某个看起来人畜无害的XML解析接口,被传入一段精心构造的文档后,服务器上好几个敏感文件的内容被原样返回到了前端。后来确认,这就是一次典型的XXE&…

2026/10/15 16:58:22

FPGA数字钟设计详解:从时钟使能到动态扫描的Verilog实战

简介:使用Verilog语言在FPGA上开发的数字钟完整工程,面向有基础数字电路概念、希望上手FPGA开发的初学者或相关课程学习者。设计覆盖计时、跑表、闹钟和时间调整等常用功能,包含时钟分频、计时计数、显示驱动、按键防抖与闹钟比较等模块&…

2026/10/15 17:48:44

研发数字化管理落地指南:从数据闭环到效能度量

我在和一些研发团队聊管理痛点时发现一个很有意思的现象:工具买了一大堆,系统上了七八套,该乱还是乱,该延期还是延期。老板问进度,负责人打开三个系统拼数据;工程师抱怨填了一堆表单,状态还是靠…

2026/10/15 17:48:44

MC9S08DZ60嵌入式开发资料包:含手册、例程与BDM调试全链路支持

简介:本资源是面向汽车电子开发工程师与嵌入式初学者的MC9S08DZ60全栈开发支持包,聚焦于飞思卡尔(现恩智浦)HCS08内核汽车级8位单片机的快速上手与工程实践。资源涵盖官方中英文技术手册、CodeWarrior配套开发环境配置文件、完整可…

2026/10/15 17:48:44

DS90UB947 Linux驱动深度调试:链路训练与SerDes信号完整性实战

简介:本资源是面向嵌入式Linux驱动开发者的DS90UB947串行器内核级I2C驱动实现,专为i.MX6平台适配,解决LVDS布线成本高、抗干扰弱的工程痛点,适用于车载仪表盘等对可靠性与成本敏感的汽车电子显示系统。驱动包共3个文件&#xff1a…

2026/10/15 17:48:44

基于C++的USB通信上位机开发:从枚举到批量传输的完整实现

简介:这是一份面向C开发者与嵌入式方向学习者的USB通信上位机完整工程源码,聚焦于通过C实现与USB设备的数据交互,涵盖设备枚举、驱动初始化、异步数据传输、错误处理及图形界面等核心模块,适合希望深入理解USB协议与底层硬件操作的…

2026/10/15 17:43:43

ArkData RDB:文搜图标签索引切换事务回滚与读侧隔离【鸿蒙心迹】

一、相册没有坏,检索结果却在更新时短暂消失 文搜图项目做到后期,用户真正关心的已经不是“输入一句话能不能找到照片”,而是收藏过的结果能否稳定留下。设想一个本地相册:旧版标签索引能够返回十八条“海边落日”相关记录&#x…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑