自托管AI记忆系统Mnemonic:为智能体构建本地化记忆中枢

news2026/5/8 2:59:22
1. 项目概述为AI智能体构建本地化记忆中枢在AI智能体Agent的开发与使用过程中一个长期存在的核心痛点就是“健忘症”。无论是基于OpenAI GPT还是其他大语言模型的Agent在默认状态下每次对话都是全新的开始它无法记住你上一轮对话中提到的项目细节、个人偏好或是你们共同做出的某个决策。这种“失忆”严重限制了AI作为长期、个性化助手的潜力使得每一次交互都像是在与一个陌生的、需要重新介绍背景的助手对话。为了解决这个问题市面上出现了像Supermemory、mem0 Cloud这样的“AI记忆”服务。它们确实有效但代价是你的所有对话数据、个人偏好和决策历史都需要上传到第三方云端服务器。对于开发者、企业或是对数据隐私有高要求的用户来说这无疑是一个难以接受的妥协。数据主权和安全性的顾虑使得这些云端方案在许多场景下无法落地。正是在这样的背景下Mnemonic项目应运而生。它是一个完全自托管Self-hosted的AI记忆层专为OpenClaw智能体平台设计。其核心目标简单而强大为你的AI赋予持久、智能的记忆能力同时确保所有数据——从对话原文到提取的事实向量——都100%运行在你自己的服务器上。你可以把它理解为一个开源的、本地部署的“mem0”它继承了mem0项目的核心记忆引擎并围绕OpenClaw生态进行了深度集成和功能增强。我之所以花时间深入研究并部署Mnemonic是因为在构建企业内部自动化助手时数据不出域是铁律。我们需要一个能理解项目上下文、记住团队成员分工、并能基于历史决策给出连贯建议的AI伙伴而Mnemonic的架构完美契合了这种需求。它不仅仅是一个简单的聊天记录存储器而是一个具备层次化组织、自动摘要、矛盾消解和智能检索能力的记忆系统。2. 核心架构与工作原理深度解析Mnemonic的架构设计清晰地体现了其“高效、智能、可扩展”的设计哲学。它不是简单地将所有对话文本扔进向量数据库而是构建了一个多层次的智能处理流水线。理解这个架构是后续顺利部署和调优的关键。2.1 整体组件交互流程整个系统由三个核心部分组成它们协同工作形成一个闭环的记忆管理流程OpenClaw 网关与插件这是记忆系统的“触发器”和“消费者”。openclaw-mem0插件以TypeScript编写直接嵌入OpenClaw网关。它主要监听两个关键生命周期事件before_agent_start在AI智能体开始思考如何回复用户之前插件会向Mnemonic API发起搜索请求将当前用户查询与历史记忆进行语义匹配检索出最相关的记忆片段并将其作为上下文Context注入到本次对话的提示词Prompt中。这就是“记忆召回”的过程。agent_end在AI完成一轮回复后插件会将这一整轮完整的对话用户输入AI输出发送给Mnemonic API。API服务器不会直接存储冗长的对话文本而是会进行下一步的关键处理。Mnemonic API 服务器这是系统的“大脑”由Python和FastAPI构建。它接收来自插件的对话文本并执行核心的记忆处理逻辑LLM事实提取调用OpenAI GPT API或其他兼容API对对话文本进行智能分析提取出结构化的事实、偏好、决策等信息。例如从“我打算下周去上海出差记得帮我预订靠近地铁站的酒店”这句话中提取出{“action”: “book_hotel”, “location”: “Shanghai”, “time”: “next week”, “preference”: “near_subway”}。这个过程极大地压缩了信息密度。智能分类与评分提取出的事实会被自动分类到预定义的六个类别中个人、商业、技术、决策、关系、时间并赋予一个重要性分数1-10分。这为后续的层次化组织奠定了基础。矛盾消解这是体现“智能”的关键。如果新提取的事实与已有记忆冲突例如旧记忆是“住在北京”新事实是“搬到了上海”系统会自动将旧记忆标记为过时并用新事实覆盖确保记忆的一致性。向量化与存储将提取并结构化后的事实文本通过OpenAI的文本嵌入模型转换为高维向量然后发送给Qdrant向量数据库进行存储和索引。Qdrant 向量数据库这是系统的“海马体”负责记忆的持久化存储和高速检索。它以Docker容器形式运行专门为向量相似性搜索优化。当API服务器需要搜索相关记忆时它会将用户的查询语句也转换为向量并在Qdrant中执行最近邻搜索快速找到语义上最接近的历史记忆。这个插件 - API服务器 - 向量DB的流程构成了一个从记忆写入、处理、存储到读取的完整闭环使得OpenClaw智能体真正具备了跨会话的连续记忆能力。2.2 v4 版本的核心创新上下文树与图谱可视化Mnemonic v4 带来了两项革命性的改进彻底解决了早期版本在记忆容量增长后面临的上下文管理难题。上下文树架构当记忆条目成百上千后如何在一轮对话有限的上下文窗口内高效地装入最相关、信息量最大的记忆成了一个技术挑战。v4引入了层次化的上下文树来解决这个问题。L0类别摘要系统会为每个记忆类别如“商业”、“技术”自动生成一个约50个token的超级摘要概括该类别的核心信息。这些摘要非常精简成本极低因此始终被加载到每轮对话的上下文窗口中为AI提供一个全局的、高层次的背景知识。L1详细摘要当用户查询明确涉及某个类别时例如询问“我有哪些待办项目”会触发“商业”类别系统会加载该类别下更详细的摘要约200个token提供更丰富的细节。L2具体记忆对于非常具体的问题例如“我上周三和Alice开会讨论了什么”系统会通过向量搜索精准定位并加载最相关的那几条原始记忆条目。这种三级加载机制就像一本智能书籍的目录、章节摘要和具体页面的关系。AI先看目录了解全书结构再根据需求翻阅章节摘要最后精读具体页面从而在有限的注意力范围内实现了记忆利用效率的最大化。记忆图谱可视化记忆不再是孤立的条目。v4版本通过计算记忆向量之间的余弦相似度自动构建了一个动态的记忆关联图谱。通过访问http://localhost:8765/explorer你可以看到一个交互式的网络图节点每一个记忆事实。边表示记忆之间的语义关联度线条越粗相似度越高。 例如所有关于“Python编程”的记忆可能会聚集在一起并与“机器学习项目”的记忆簇产生连接。这张图让你直观地理解AI的“知识网络”是如何形成的对于调试和洞察AI的“思考”过程具有无可估量的价值。配套的仪表板还提供了时间线视图和各类统计图表让记忆系统的状态一目了然。3. 从零开始部署与配置实战理论清晰后我们来动手搭建一套属于自己的Mnemonic系统。以下步骤我在Ubuntu 22.04 LTS服务器和macOS本地开发环境均验证通过。3.1 基础环境准备首先确保你的系统满足以下条件Docker Docker Compose这是运行Qdrant最简便的方式。通过docker --version和docker compose version命令检查是否已安装。Python 3.10Mnemonic API服务器基于现代Python。使用python3 --version确认版本。OpenAI API密钥这是最大的依赖项。Mnemonic使用GPT来提取事实和生成摘要你需要一个有效的OpenAI API密钥。虽然项目理论上支持其他兼容OpenAI API的模型但默认配置和优化都是围绕GPT进行的。注意OpenAI API调用会产生费用。记忆提取和摘要生成属于GPT调用虽然单次成本不高但在高频使用下仍需关注。建议在初期设置用量提醒。3.2 启动向量数据库 QdrantQdrant是整个系统的存储基石。我们使用Docker来运行它并持久化数据以避免容器重启后记忆丢失。# 创建用于持久化存储的目录 mkdir -p ~/.data/qdrant # 使用Docker运行Qdrant容器 docker run -d \ --name qdrant \ --restart unless-stopped \ -p 6333:6333 \ -p 6334:6334 \ -v ~/.data/qdrant:/qdrant/storage \ qdrant/qdrant参数解析与实操心得--restart unless-stopped确保服务器重启后Qdrant容器能自动启动这对生产环境至关重要。-p 6333:6333将容器的6333端口映射到主机这是Qdrant的HTTP API端口Mnemonic API通过它进行通信。-p 6334:6334映射6334端口这是Qdrant的管理控制台端口可选你可以通过浏览器访问http://localhost:6334/dashboard来查看集合状态和进行简单查询。-v ~/.data/qdrant:/qdrant/storage将主机上的~/.data/qdrant目录挂载到容器内的存储路径。这是关键步骤所有向量数据都会保存在主机这个目录下即使容器被删除数据也不会丢失。执行后使用docker ps命令检查容器状态是否为Up。可以通过curl http://localhost:6333快速测试API是否就绪正常会返回一个JSON格式的欢迎信息。3.3 部署 Mnemonic API 服务器API服务器是核心逻辑所在。建议使用Python虚拟环境来隔离依赖。# 1. 克隆项目代码 git clone https://github.com/omarnagy91/mnemonic.git cd mnemonic # 2. 创建并激活虚拟环境推荐 python3 -m venv venv source venv/bin/activate # Linux/macOS # 对于Windows: venv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 如果项目没有requirements.txt则手动安装核心包 pip install mem0ai fastapi uvicorn openai qdrant-client python-dotenv # 4. 配置环境变量 # 复制示例配置文件并编辑 cp .env.example .env # 使用你喜欢的编辑器如nano, vim打开 .env 文件 # 最关键的一步填入你的OpenAI API密钥 echo OPENAI_API_KEYsk-your-actual-key-here .env # 同时检查并配置Qdrant的主机和端口默认localhost:6333通常无需更改 # 5. 启动API服务器 cd server # 根据项目结构进入server目录 uvicorn server:app --host 0.0.0.0 --port 8765 --reload关键配置详解OPENAI_API_KEY必须正确设置否则事实提取功能将完全失效。QDRANT_HOST和QDRANT_PORT如果Qdrant运行在其他机器或不同端口需在此修改。--host 0.0.0.0让服务器监听所有网络接口方便从同一网络的其他机器访问。如果仅本地使用可改为127.0.0.1。--reload开发模式代码修改后自动重启。生产环境应移除此参数并使用gunicorn等WSGI服务器配合进程管理。启动成功后终端会显示Uvicorn running on http://0.0.0.0:8765。访问http://localhost:8765/health应返回包含各组件状态的健康检查信息。3.4 集成 OpenClaw 插件最后一步是将记忆系统接入你的OpenClaw智能体。# 假设你的OpenClaw扩展目录是默认的 ~/.openclaw/extensions/ # 将Mnemonic插件复制过去 cp -r /path/to/mnemonic/plugin/ ~/.openclaw/extensions/openclaw-mem0/接下来需要修改OpenClaw的配置文件~/.openclaw/openclaw.json。你需要找到对应智能体Agent的配置部分添加或修改plugins配置。{ agent: { name: my_assistant, // ... 其他配置 ... plugins: [ { name: openclaw-mem0, config: { api_url: http://localhost:8765, // Mnemonic API地址 user_id: user_alice, // 必填用于区分不同用户的记忆空间 auto_recall: true, // 是否在每次对话前自动召回记忆 auto_store: true, // 是否在每次对话后自动存储记忆 context_limit: 1000 // 注入上下文的token数限制 } } // ... 其他插件 ... ] } }配置项核心解析user_id这是最重要的配置。它定义了记忆的命名空间。如果你在开发一个多用户助手必须为每个用户设置唯一的ID如用户账户ID否则所有用户的记忆会混在一起造成严重混乱。对于单用户可以设置为default或你的用户名。auto_recall和auto_store建议在初期都设为true以体验完整的记忆功能。在调试阶段你可以暂时关闭auto_store避免测试对话污染记忆库。api_url如果OpenClaw网关和Mnemonic API不在同一台机器需填写正确的IP和端口。配置完成后重启OpenClaw网关。现在你的智能体就具备了持久化记忆能力4. 核心功能使用与API调用指南部署完成后除了通过OpenClaw插件自动交互我们还可以直接调用Mnemonic API进行更精细的控制和系统状态查看。以下是一些最常用的API端点实战。4.1 手动管理记忆虽然插件可以自动处理但直接调用API进行手动操作在调试和特定场景下非常有用。添加记忆 你可以直接提交一段文本让系统提取事实并存储。curl -X POST http://localhost:8765/add \ -H Content-Type: application/json \ -d { text: 我们的项目‘凤凰’将于下周启动主要目标是完成用户认证模块的开发。技术栈决定使用React前端和FastAPI后端。我是项目负责人团队成员有Bob和Charlie。, user_id: user_alice }系统会调用LLM分析这段文本提取出多个事实点如项目名、时间、目标、技术栈、角色、成员分别存储并建立向量索引。搜索记忆 这是最核心的功能测试记忆检索是否准确。curl -X POST http://localhost:8765/search \ -H Content-Type: application/json \ -d { query: 我负责什么项目用了什么技术, user_id: user_alice, limit: 5 }返回的结果会是一个按相关性排序的记忆列表每条记忆都包含提取的原始事实、所属类别和重要性分数。4.2 利用v4高级功能获取层次化上下文 这是v4上下文树功能的直接体现。当你需要为一次LLM调用组装背景信息时使用此接口。curl -X POST http://localhost:8765/context \ -H Content-Type: application/json \ -d { query: 接下来项目‘凤凰’的开发重点是什么, user_id: user_alice, max_tokens: 1500 }API会返回一个精心组装的文本块其中按L0、L1、L2的层次包含了最相关的记忆摘要和细节你可以直接将这个文本块作为系统提示词或上下文的一部分发送给LLM。触发记忆压缩 当对话历史非常长即将超出模型的上下文窗口时你可以主动调用压缩钩子。curl -X POST http://localhost:8765/compact \ -H Content-Type: application/json \ -d { messages: [{role: user, content: 很长的历史对话...}], user_id: user_alice, session_id: session_123 }这个接口会分析冗长的消息历史识别出最关键的信息并将其作为结构化记忆存储起来。之后冗长的原始对话就可以从上下文窗口中移除了AI通过回忆这些压缩后的核心记忆来保持连贯性。4.3 可视化监控与洞察探索记忆图谱 在浏览器中打开http://localhost:8765/explorer。页面加载后在侧边栏输入你的user_id如user_alice点击加载。你会看到所有记忆以节点图的形式呈现。你可以拖动、缩放点击节点查看详情直观地发现记忆之间的关联簇。这对于理解AI“知识”的结构化程度非常有帮助。查看分析仪表板 访问http://localhost:8765/dashboard。这个页面提供了丰富的统计视图记忆数量随时间变化折线图展示记忆的增长趋势。记忆类别分布饼图展示个人、商业等各类记忆的占比。记忆重要性分布柱状图展示不同重要性分数的记忆数量。近期记忆时间线按时间顺序列出最近添加的记忆。这些可视化工具使得Mnemonic从一个黑盒模块变成了一个可观测、可分析的系统极大提升了开发和运维体验。5. 性能调优、问题排查与进阶技巧在实际部署和长期使用中你可能会遇到一些性能和操作上的问题。以下是我在实战中积累的经验和解决方案。5.1 性能优化与成本控制1. 向量数据库调优Qdrant默认配置适用于开发。在生产环境尤其是记忆量较大10万条时需要考虑调优。创建集合时指定参数Mnemonic默认会创建集合。你可以通过Qdrant的API在初始化后调整集合配置例如使用HNSW索引并调整ef_construct和m参数在召回率和搜索速度之间取得平衡。持久化与内存确保数据目录挂载正确。对于大量数据可以考虑为Docker容器分配更多内存Qdrant的性能对内存比较敏感。2. OpenAI API成本控制记忆提取和摘要生成依赖GPT API这是主要成本来源。选择合适模型在server.py或配置文件中查找openai.chat.completions.create调用处。默认可能是gpt-3.5-turbo。对于事实提取gpt-3.5-turbo通常足够且成本更低。只有在需要复杂推理进行矛盾消解或深度摘要时才考虑使用gpt-4。设置速率限制和缓存考虑在API服务器前添加一个简单的缓存层对完全相同的对话文本进行缓存避免重复提取。也可以在代码中实现简单的速率限制防止意外循环调用导致巨额账单。批量处理如果是从历史日志中导入大量记忆可以修改代码将多段文本合并成一个批次发送给GPT API进行提取这比逐条发送更经济。3. 上下文树参数调整L0/L1/L2的token长度限制如50, 200定义在代码中。你可以根据你主要使用的LLM的上下文窗口大小进行调整。如果使用gpt-4-128k可以适当增大L1的token限制以携带更多细节。如果使用上下文窗口较小的模型则需要更激进地压缩L0和L1的摘要确保核心记忆能被装入。5.2 常见问题排查速查表问题现象可能原因排查步骤与解决方案OpenClaw插件无法连接API1. API服务未启动2. 网络/端口不通3. 配置错误1. 检查uvicorn进程是否运行 (ps aux健康检查/health返回Qdrant连接失败1. Qdrant容器未运行2. 端口被占用或防火墙阻止3..env配置错误1.docker ps检查Qdrant容器状态。2.curl http://localhost:6333测试Qdrant本身是否可达。3. 检查API服务器的.env文件中QDRANT_HOST和QDRANT_PORT设置。记忆无法被正确召回搜索无结果1. 记忆未成功存储2. 向量搜索相似度阈值过高3. 用户ID不匹配1. 调用/addAPI后调用/profile/{user_id}查看记忆是否已存在。2. 检查搜索API的score_threshold参数如果有或查看代码中的默认阈值尝试调低。3. 确认存储和搜索时使用的user_id完全一致大小写敏感。OpenAI API调用超时或报错1. API密钥无效或余额不足2. 网络问题3. 请求速率超限1. 在OpenAI官网检查密钥状态和余额。2. 在服务器上直接运行一个简单的Python脚本测试openai.ChatCompletion.create调用。3. 在代码中添加重试逻辑和更详细的错误日志。可视化页面/explorer空白或报错1. 静态文件路径错误2. 浏览器跨域问题3. 图谱数据接口/graph报错1. 查看服务器日志确认静态文件服务正常。2. 打开浏览器开发者工具查看Console和Network标签页的具体错误信息。3. 直接调用GET /graph?user_idxxx看是否返回有效JSON数据。5.3 进阶技巧与扩展思路1. 实现记忆的主动遗忘与清理Mnemonic目前侧重于记忆的添加和智能组织但缺乏主动清理机制。你可以定期调用/profile/{user_id}接口获取所有记忆根据created_at时间和importance分数编写脚本删除过于陈旧或不重要的记忆。扩展API添加一个/forget_old端点接受时间阈值和重要性阈值参数自动清理记忆。2. 集成其他向量数据库或LLM项目当前紧密绑定OpenAI和Qdrant。如果你希望使用本地模型或其他向量库更换LLM修改server.py中调用openai.ChatCompletion.create的部分替换为调用本地Ollama、vLLM或通义千问等兼容API的代码。更换向量库mem0ai库可能抽象了向量操作。你需要查看其内部实现或者直接修改代码中与Qdrant交互的部分使用qdrant-client的地方替换为Chroma、Weaviate或Milvus的客户端。3. 为记忆添加自定义元数据当前记忆的分类是固定的六类。你可以修改事实提取和分类的逻辑为记忆添加自定义标签。例如为所有与“项目A”相关的记忆打上project:A的标签。这样在搜索或构建上下文时可以结合语义搜索和标签过滤实现更精准的记忆召回。4. 监控与告警对于生产系统建议添加基础监控日志确保API服务器的访问日志和错误日志被妥善记录例如使用structlog或loguru库。指标使用Prometheus客户端库暴露关键指标如记忆总数、各分类记忆数、API调用延迟、OpenAI API调用次数/失败率等。通过Grafana进行可视化。告警对向量数据库连接失败、OpenAI API持续错误等关键异常设置告警。部署和运行Mnemonic的过程让我深刻体会到为AI赋予记忆不仅仅是技术上的拼接更是对交互体验的一次重塑。当你发现你的AI助手能记得一周前你提过的需求偏好并能基于此给出更精准的建议时那种连贯性和智能感是质的飞跃。这个项目的价值在于它提供了一个高性能、可掌控的起点剩下的想象空间比如如何让记忆更安全、更结构化、更能动就交给我们这些使用者来探索了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2593478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…