当前位置: 首页 > article >正文

【自动思考记忆系统】demo (Java版)

背景:看了《人工智能》中的一段文章,于是有了想法。想从另一种观点(⭕️)出发,尝试编码,告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️,于是想写一个自动思考记忆系统。
最初的思路::
【大数据集】 流到 【知识集】 使用 【工具集】 得到 【新知识集】 改造【工具集】
在这里插入图片描述
以下是"自动思考与记忆模型"的设计思路和Java实现代码。该模型模拟了大数据经过工具处理生成知识,并能持续改造知识的过程。

设计思路

使用
改造
存储
提供历史
大数据集
思考引擎
工具集
新知识集
记忆系统

核心组件

  1. 大数据集(DataSet):原始输入数据
  2. 知识集(KnowledgeSet):结构化知识存储
  3. 工具集(ToolSet):可扩展的处理工具
  4. 思考引擎(ThinkingEngine):协调处理流程
  5. 记忆系统(MemorySystem):存储历史知识

Java实现代码

import java.util.*;
import java.util.concurrent.atomic.AtomicLong;// 数据集基类
abstract class DataSet {protected String source;public DataSet(String source) {this.source = source;}public abstract String getContent();
}// 知识表示
class Knowledge {private static final AtomicLong idCounter = new AtomicLong(0);private final long id;private final String content;private final String source;private final long timestamp;public Knowledge(String content, String source) {this.id = idCounter.getAndIncrement();this.content = content;this.source = source;this.timestamp = System.currentTimeMillis();}// Getterspublic long getId() { return id; }public String getContent() { return content; }public String getSource() { return source; }public long getTimestamp() { return timestamp; }@Overridepublic String toString() {return String.format("Knowledge#%d [%tF %<tT]: %s", id, new Date(timestamp), content);}
}// 知识集合
class KnowledgeSet {private final Map<Long, Knowledge> knowledgeMap = new HashMap<>();public void addKnowledge(Knowledge knowledge) {knowledgeMap.put(knowledge.getId(), knowledge);}public void merge(KnowledgeSet other) {knowledgeMap.putAll(other.knowledgeMap);}public List<Knowledge> getAllKnowledge() {return new ArrayList<>(knowledgeMap.values());}public int size() {return knowledgeMap.size();}
}// 工具接口
interface KnowledgeTool {String getName();KnowledgeSet process(DataSet input);
}// 工具集管理
class ToolSet {private final Map<String, KnowledgeTool> tools = new HashMap<>();public void registerTool(KnowledgeTool tool) {tools.put(tool.getName(), tool);}public KnowledgeSet applyTools(DataSet input) {KnowledgeSet result = new KnowledgeSet();for (KnowledgeTool tool : tools.values()) {KnowledgeSet toolResult = tool.process(input);result.merge(toolResult);}return result;}public void upgradeTool(String name, KnowledgeTool newTool) {tools.put(name, newTool);}
}// 记忆系统
class MemorySystem {private final KnowledgeSet longTermMemory = new KnowledgeSet();private final Map<String, KnowledgeSet> contextualMemory = new HashMap<>();public void store(KnowledgeSet knowledge) {longTermMemory.merge(knowledge);}public KnowledgeSet recallContext(String context) {return contextualMemory.getOrDefault(context, new KnowledgeSet());}public void setContext(String context, KnowledgeSet knowledge) {contextualMemory.put(context, knowledge);}public List<Knowledge> searchMemory(String keyword) {List<Knowledge> results = new ArrayList<>();for (Knowledge k : longTermMemory.getAllKnowledge()) {if (k.getContent().contains(keyword)) {results.add(k);}}return results;}
}// 思考引擎
class ThinkingEngine {private final ToolSet toolSet;private final MemorySystem memory;public ThinkingEngine(ToolSet toolSet, MemorySystem memory) {this.toolSet = toolSet;this.memory = memory;}public KnowledgeSet process(DataSet input) {// 步骤1: 使用工具集处理输入数据KnowledgeSet newKnowledge = toolSet.applyTools(input);// 步骤2: 与记忆中的知识结合KnowledgeSet contextKnowledge = memory.recallContext(input.source);newKnowledge.merge(contextKnowledge);// 步骤3: 存储到记忆系统memory.store(newKnowledge);memory.setContext(input.source, newKnowledge);return newKnowledge;}public void upgradeTool(String name, KnowledgeTool newTool) {toolSet.upgradeTool(name, newTool);}
}// 示例工具实现
class AnalysisTool implements KnowledgeTool {@Overridepublic String getName() { return "DataAnalyzer"; }@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();// 模拟数据分析过程String content = input.getContent();String analysis = "分析结果: " + content.toUpperCase() + " 长度=" + content.length();result.addKnowledge(new Knowledge(analysis, "Analyzer"));return result;}
}class PatternTool implements KnowledgeTool {@Overridepublic String getName() { return "PatternFinder"; }@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();// 模拟模式发现String content = input.getContent();if (content.contains("Java")) {result.addKnowledge(new Knowledge("发现Java相关模式", "PatternFinder"));}return result;}
}// 示例数据集
class TextDataSet extends DataSet {private final String text;public TextDataSet(String source, String text) {super(source);this.text = text;}@Overridepublic String getContent() {return text;}
}// 使用示例
public class AutoThinkingSystem {public static void main(String[] args) {// 初始化系统ToolSet toolSet = new ToolSet();toolSet.registerTool(new AnalysisTool());toolSet.registerTool(new PatternTool());MemorySystem memory = new MemorySystem();ThinkingEngine engine = new ThinkingEngine(toolSet, memory);// 处理第一份数据DataSet data1 = new TextDataSet("Source1", "Java是一种编程语言");KnowledgeSet result1 = engine.process(data1);System.out.println("===== 第一轮处理结果 =====");result1.getAllKnowledge().forEach(System.out::println);// 处理第二份数据DataSet data2 = new TextDataSet("Source2", "Python也是一种编程语言");KnowledgeSet result2 = engine.process(data2);System.out.println("\n===== 第二轮处理结果 =====");result2.getAllKnowledge().forEach(System.out::println);// 升级工具engine.upgradeTool("PatternFinder", new PatternTool() {@Overridepublic KnowledgeSet process(DataSet input) {KnowledgeSet result = new KnowledgeSet();String content = input.getContent();if (content.contains("Python")) {result.addKnowledge(new Knowledge("发现Python高级模式", "UpgradedPatternFinder"));}return result;}});// 使用升级后的工具处理数据DataSet data3 = new TextDataSet("Source2", "Python在AI领域很流行");KnowledgeSet result3 = engine.process(data3);System.out.println("\n===== 工具升级后处理结果 =====");result3.getAllKnowledge().forEach(System.out::println);// 记忆检索System.out.println("\n===== 记忆检索结果 =====");memory.searchMemory("Python").forEach(System.out::println);}
}

关键特性说明

  1. 动态工具系统

    • 工具可热升级(upgradeTool方法)
    • 新工具自动加入处理流程
    • 每个工具独立处理原始数据
  2. 记忆机制

    • 长期记忆存储所有知识
    • 上下文记忆关联数据来源
    • 支持关键词检索历史知识
  3. 知识进化流程

    大数据集 思考引擎 工具集 记忆系统 输出 原始数据 应用处理工具 生成新知识 存储知识 提供关联知识 增强后的知识集 反馈改进需求 自我改造升级 大数据集 思考引擎 工具集 记忆系统 输出
  4. 执行示例输出

===== 第一轮处理结果 =====
Knowledge#0 [2025-06-03 17:26:25]: 分析结果: JAVA是一种编程语言 长度=11
Knowledge#1 [2025-06-03 17:26:25]: 发现Java相关模式===== 第二轮处理结果 =====
Knowledge#2 [2025-06-03 17:26:25]: 分析结果: PYTHON也是一种编程语言 长度=14===== 工具升级后处理结果 =====
Knowledge#4 [2025-06-03 17:26:25]: 发现Python高级模式
Knowledge#2 [2025-06-03 17:26:25]: 分析结果: PYTHON也是一种编程语言 长度=14
Knowledge#3 [2025-06-03 17:26:25]: 分析结果: PYTHON在AI领域很流行 长度=14===== 记忆检索结果 =====
Knowledge#4 [2025-06-03 17:26:25]: 发现Python高级模式

后期改进

  1. 分布式处理

    • 将大数据集分片处理
    • 并行执行工具处理
    • 使用MapReduce合并结果
  2. 工具链编排

    // 示例:添加工具依赖管理
    class ToolChain {private List<KnowledgeTool> sequence = new ArrayList<>();public void addTool(KnowledgeTool tool, int position) {sequence.add(position, tool);}public KnowledgeSet execute(DataSet input) {KnowledgeSet result = new KnowledgeSet();for (KnowledgeTool tool : sequence) {result.merge(tool.process(input));}return result;}
    }
    
  3. 知识关联分析

    // 在Knowledge类中添加
    private Set<Long> relatedKnowledgeIds = new HashSet<>();// 在MemorySystem中添加
    public void relateKnowledges(long id1, long id2) {Knowledge k1 = longTermMemory.get(id1);Knowledge k2 = longTermMemory.get(id2);if(k1 != null && k2 != null) {k1.addRelation(k2.getId());k2.addRelation(k1.getId());}
    }
    

此模型实现了从数据到知识的自动化转换流程,支持工具热更新和知识记忆,可作为智能决策系统的基础框架。
后期会持续更新,同步到GitHub(https://github.com/vvsvv/MI.git)上。

相关文章:

【自动思考记忆系统】demo (Java版)

背景&#xff1a;看了《人工智能》中的一段文章&#xff0c;于是有了想法。想从另一种观点&#xff08;⭕️&#xff09;出发&#xff0c;尝试编码&#xff0c;告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️&#xff0c;于是想写一个自动思考记…...

【AAOS】【源码分析】用户管理(二)-- 整体架构

整体介绍 Android多用户功能作为 Android Automotive 的重要组成部分,为不同驾驶员和乘客提供了一个更加定制化、隐私保护的使用环境。Android 多用户的存在,它可以让多个用户使用同一台设备,同时保持彼此的数据、应用和设置分隔开来。 各用户类型的权限 能力SystemAdminS…...

51单片机基础部分——独立按键检测

前言 在单片机开发中&#xff0c;我们会经常对单片机的状态进行控制&#xff0c;比如我们会控制某个灯点亮&#xff0c;某个灯熄灭&#xff0c;这个时候我们就要开始做控制&#xff0c;我们可以通过什么控制呢&#xff0c;这个地方我们选择按键控制 按键实物及工作原理 生活…...

【Docker管理工具】部署Docker可视化管理面板Dpanel

【Docker管理工具】部署Docker可视化管理面板Dpanel 一、Dpanel介绍1.1 DPanel 简介1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Dpanel镜像五、部署Dpanel…...

Github 2025-06-02 开源项目周报 Top11

根据Github Trendings的统计,本周(2025-06-02统计)共有11个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6Jupyter Notebook项目2Shell项目1Dockerfile项目1TypeScript项目1Vue项目1PowerShell项目1MindsDB:定制企业数据人工智能的开源平台…...

springboot实现查询学生

文章目录 数据库前端 请求mybatis 数据库 前端 请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <a href"/list">启动学生管理…...

深入解析C++五大常用设计模式:原理、实现与应用场景

设计模式是解决特定软件设计问题的经典方案&#xff0c;掌握它们能显著提升代码的可维护性和扩展性。本文详细解析C中五种最常用的设计模式&#xff0c;附带完整代码示例和实战技巧。 一、设计模式概述 设计模式是面向对象编程中可复用的解决方案&#xff0c;它们源于工程师们…...

标识符Symbol和迭代器的实现

Symbol基础 Symbol("描述") 创建唯一标识符&#xff08;每次调用返回新值&#xff09; Symbol.for("key") 全局注册表模式&#xff08;相同key返回同一Symbol&#xff09; Symbol特性 作为对象属性键时&#xff1a;obj[SymbolKey] value不参与常规遍历&…...

Appium+python自动化(九)- 定位元素工具

简介 环境搭建好了&#xff0c;其他方面的知识也准备的差不多了&#xff0c;那么就开始下一步元素定位&#xff0c;元素定位主要介绍如何使用uiautomatorviewer&#xff0c;通过定位到页面上的元素&#xff0c;然后进行相应的点击等操作. 此外在介绍另一款工具&#xff1a;Insp…...

Unity 中实现可翻页的 PageView

之前已经实现过&#xff1a; Unity 中实现可复用的 ListView-CSDN博客文章浏览阅读5.6k次&#xff0c;点赞2次&#xff0c;收藏27次。源码已放入我的 github&#xff0c;地址&#xff1a;Unity-ListView前言实现一个列表组件&#xff0c;表现方面最核心的部分就是重写布局&…...

clickhouse常用语句汇总——持续更新中

一、查询判断是否包含指定列 1.根据数据库&#xff0c;表名查看表包含的列 SELECT name FROM system.columns WHERE table table_name AND database databasename;2.查找指定列target_column是否是表table_name的列 SELECT count() > 0 AS column_exists FROM system…...

云计算 Linux Rocky day05【rpm、yum、history、date、du、zip、ln】

云计算 Linux Rocky day05【rpm、yum、history、date、du、zip、ln】 目录 云计算 Linux Rocky day05【rpm、yum、history、date、du、zip、ln】1.RPM包的一般安装位置2.软件名和软件包名3.查询软件信息4.查询软件包5.导入红帽签名信息&#xff0c;解决查询软件包信息报错6.利用…...

LuaJIT2.1 和 Lua5.4.8 性能对比

说明 最近在学习 LuaJIT&#xff0c;想看看把它接入到项目中使用&#xff0c;会提高多大的性能。 今天抽时间&#xff0c;简单地测试了一下 LuaJIT 2.2 和 Lua5.4.8 的性能。 测试平台&#xff1a; 系统&#xff1a;Windows 10 WSLCPU&#xff1a;Intel Core™ i7-8700 CPU…...

深度学习姿态估计实战:基于ONNX Runtime的YOLOv8 Pose部署全解析

本文将详细介绍如何脱离YOLO官方环境&#xff0c;使用ONNX Runtime部署YOLOv8姿态估计模型。内容包括模型加载、图像预处理&#xff08;Letterbox缩放和填充&#xff09;、推理执行、输出解码&#xff08;边界框和关键点处理&#xff09;、非极大值抑制&#xff08;NMS&#xf…...

深度探索:如何用DeepSeek重构你的工作流

前言:AI时代的工作革命 在人工智能浪潮席卷的今天,DeepSeek作为国产大模型的代表之一,正以其强大的自然语言处理能力、代码生成能力和多模态交互特性,重新定义着人类的工作方式。根据IDC报告显示,2024年企业级AI应用市场规模已突破800亿美元,其中智能办公场景占比达32%,…...

深入解析与解决方案:处理Elasticsearch中all found copies are either stale or corrupt未分配分片问题

目录 引言 1 问题诊断深入分析 1.1 错误含义深度解析 1.2 获取详细的诊断信息 2 解决方案选择与决策流程 2.1 可用选项全面对比 2.2 推荐处理流程与决策树 3 具体操作步骤详解 3.1 优先尝试 - 分配最新副本&#xff08;最低风险&#xff09; 3.2 中等风险方案 - 分配…...

【NLP 78、手搓Transformer模型结构】

你以为走不出的淤泥&#xff0c;也迟早会云淡风轻 —— 25.5.31 引言 ——《Attention is all you need》 《Attention is all you need》这篇论文可以说是自然语言处理领域的一座里程碑&#xff0c;它提出的 Transformer 结构带来了一场技术革命。 研究背景与目标 在 Transfo…...

yum更换阿里云的镜像源

步骤 1&#xff1a;备份原有源配置&#xff08;重要&#xff01;&#xff09; sudo mkdir /etc/yum.repos.d/backup sudo mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/步骤 2&#xff1a;下载阿里云源配置 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https:…...

如何自定义WordPress主题(5个分步教程)

如果您已经安装了一个 WordPress 主题&#xff0c;但它不太适合您&#xff0c;您可能会感到沮丧。在定制 WordPress 主题方面&#xff0c;您有很多选择。 挑战在于找到正确的方法。 在本篇文章中&#xff0c;我将引导您了解自定义 WordPress 主题的各种选项&#xff0c;帮助您…...

ios版本的Tiktok二次安装不上,提示:Unable to Install “TikTok”

问题&#xff1a;Domain: IXUserPresentableErrorDomain Code: 1 Recovery Suggestion: Failed to load Info.plist from bundle at path /private/var/containers/Bundle/Application/E99D86D4-F96E-48F9-86C5-FE095A22E13A/DouyinDev.app/PlugIns/AwemeNotificationService.a…...

react实现markdown文件预览

文章目录 react实现markdown文件预览1、实现md文件预览2、解决图片不显示3、实现效果 react实现markdown文件预览 1、实现md文件预览 1️⃣第一步&#xff1a;安装依赖&#xff1a; npm install react-markdown remark-gfmreact-markdown&#xff1a;将 Markdown 渲染为 Rea…...

Neo4j 认证与授权:原理、技术与最佳实践深度解析

Neo4j 作为领先的图数据库,其安全机制——认证(Authentication)与授权(Authorization)——是保障数据资产的核心防线。本文将深入剖析其工作原理、关键技术、实用技巧及行业最佳实践,助您构建坚不可摧的图数据安全体系。 Neo4j 提供了强大且灵活的认证授权框架,涵盖从基…...

Android Studio 配置之gitignore

1.创建或编辑.gitignore文件 在项目根目录下检查是否已有.gitignore文件。如果没有&#xff0c;创建一个新文件&#xff0c;命名为.gitignore&#xff08;注意文件名前有个点&#xff09;。 添加忽略规则&#xff1a;在.gitignore中添加以下内容&#xff1a; 忽略整个 .idea …...

PDF处理控件Aspose.PDF教程:在 C# 中更改 PDF 页面大小

PDF 的页面大小决定了其内容的显示、打印或处理方式。我们通常在准备打印、转换格式或标准化布局时需要更改 PDF 页面大小。在本文中&#xff0c;您将学习如何使用 C# 更改任何 PDF 文件的页面大小。我们将通过完整的代码示例&#xff0c;逐步指导您完成操作。 Aspose.PDF最新…...

Perl One-liner 数据处理——基础语法篇【匠心】

Perl(Practical Extraction and Report Language)是一种功能强大且灵活的脚本语言,因其强大的文本处理能力和简洁的语法而广受开发者和系统管理员的喜爱。特别是在命令行环境下,Perl 的 one-liner(单行脚本)以其高效、简洁的特点,成为数据处理、文本转换和快速原型设计的…...

PHP 打印扩展开发:从易联云到小鹅通的多驱动集成实践

目前已有易联云WIFI打印机扩展 扩展入口文件 文件目录 crmeb\services\printer\Printer.php namespace crmeb\services\printer;use crmeb\basic\BaseManager; use think\facade\Config; use think\Container;/*** Class Printer* package crmeb\services\auth* mixin \crme…...

rust或tauri项目执行命令的时候,cmd窗口也会弹出显示解决方法

阻止 Tauri 执行命令时弹出 CMD 窗口 当你在 Tauri 中使用 tokio::process::Command 执行命令时弹出 CMD 窗口&#xff0c;这是因为 Windows 默认会为控制台程序创建可见窗口。以下是几种解决方法&#xff1a; 1. 使用 Windows 特有的创建标志 (推荐) #[tauri::command] pub…...

[软件工程] 文档 | 技术文档撰写全流程指南

技术文档撰写全流程指南 一份优秀的技术文档需平衡 “技术严谨性” 与 “用户友好性”&#xff0c;其本质是降低信息传递成本&#xff0c;让读者能快速获取所需信息&#xff0c;减少沟通与试错成本。在实际操作中&#xff0c;从明确目标、结构化内容、可视化表达&#xff0c;到…...

使用Python进行函数作画

前言 因为之前通过deepseek绘制一下卡通的人物根本就不像&#xff0c;又想起来之前又大佬通过函数绘制了一些图像&#xff0c;想着能不能用Python来实现&#xff0c;结果发现可以&#xff0c;不过一些细节还是需要自己调整&#xff0c;deepseek整体的框架是没有问题&#xff0…...

Python应用continue关键字初解

大家好!对于刚接触编程的初学者来说&#xff0c;理解循环控制语句是掌握编程语言的重要一步。在Python中&#xff0c;continue关键字是一个非常实用的循环控制工具&#xff0c;本文将通过简易示例帮助大家理解它的作用。 基本概念: continue关键字用于中断本次循环&#xff0c;…...