各位同学、开发者朋友们大家好。如果把 2026 年中国国际大学生创新大赛的 openEuler 方向命题比作一张“技术考卷”那么“基于鲲鹏平台的 Agent Memory 记忆管理系统”无疑是其中兼具理论深度、工程落地价值和国产化技术栈代表性的题目。很多队伍拿到这道题的第一感受是Agent 相关概念能说清但“记忆管理系统”应该怎么设计存储在鲸鹏鲲鹏平台上部署 openEuler 后又该如何把 Redis、向量检索、Docker 这些工具组合成一套可运行的 Agent 记忆服务这些问题如果只靠零散搜索往往会卡在环境兼容、依赖缺失和概念混淆上。本文就来完整拆解一套面向鲲鹏平台的 Agent Memory 记忆管理系统设计方案从 Agent 记忆的分层模型到 openEuler 环境准备、Redis 短期记忆实现、向量化长期记忆实现再到核心 API 设计、项目实战代码和常见排错清单。内容既适合准备创新大赛的参赛队伍参考也能帮助正在学习 Agent 架构、国产操作系统部署和记忆系统设计的开发者建立清晰的技术框架。1. 背景与核心概念1.1 为什么 Agent 需要“记忆”大语言模型本身不具备跨对话的持久记忆能力。无论是调用 ChatGPT、通义千问还是本地部署的开源模型一次请求结束后对话上下文基本就随会话结束而释放。但在真实业务场景中用户希望 Agent 能记住自己的偏好、历史操作、项目中曾经出现的错误甚至能根据之前的决策优化后续行为。于是“给 Agent 增加记忆能力”成为工程化落地的重要方向。Agent Memory 记忆管理系统就是把“模型无状态”变成“系统有状态”的中间层。它负责保存用户与 Agent 的对话记录提取并存储关键实体、偏好、任务状态在后续会话中检索与当前问题最相关的历史记忆控制记忆的生命周期避免无限增长导致检索退化。可以这样理解模型是 Agent 的“大脑”记忆系统是 Agent 的“笔记本”。大脑负责推理笔记本负责记录和查询。没有笔记本Agent 每次对话都像一个失忆的人。1.2 Agent Memory 的分类体系在设计系统前先要明确记忆的分类。业界通常参照人类认知模型将 Agent 记忆分为以下几类记忆类型生命周期典型内容存储方式典型技术短期记忆会话内当前多轮对话上下文内存 / RedisRedis List、String长期记忆跨会话用户偏好、历史结论、事实知识数据库 / 检索向量数据库 关系库情景记忆事件驱动某次任务执行过程、报错记录日志 数据库时序结构化存储语义记忆全局稳定领域概念、实体关系图谱 / 向量向量化 知识图谱一个完整的记忆管理系统并不需要所有类型一上来全部实现。对于创新大赛项目而言建议优先实现“短期会话记忆 长期语义记忆”这两条主线再扩展“情景记忆”。这样既能展示架构能力又不至于工作量失控。1.3 鲲鹏平台与 openEuler 的角色鲲鹏处理器是华为推出的基于 ARM 架构的服务器芯片性能特点适合高并发、多核并行、大数据处理等场景。openEuler 是开源欧拉操作系统支持鲲鹏、x86、RISC-V 等多种架构在国产化基础设施中应用广泛。在“基于鲲鹏平台的 Agent Memory 记忆管理系统”命题中鲲鹏平台主要承担两方面的责任运行环境openEuler 系统上部署 Agent 服务、Redis、向量数据库等中间件算力底座利用鲲鹏多核架构运行向量检索、并发写入等计算任务。很多参赛队伍在 x86 开发机上写完代码到了鲲鹏服务器或 openEuler 虚拟机上却跑不起来最常见的原因就是中间件版本不兼容、编译工具链缺失、系统源未配置。所以环境准备部分要格外重视。2. 环境准备与版本说明2.1 建议的架构拓扑在动手敲代码之前先把系统架构画出来。本项目的整体模块划分如下用户 / Agent 调用层 | v ------------------ | Memory API | Restful API写入、读取、检索、清理 ------------------ | ---------------------------------- | | | ----------- ----------- --------------- | 短期记忆 | | 长期记忆 | | 记忆管理后台 | | Redis | | 向量库 | | 定时压缩/过期 | ----------- ----------- --------------- | | ---------------------------------- | -------------- | Embedding | | 向量模型 | --------------各层职责Memory API统一对外接口屏蔽底层存储差异短期记忆维护最近 N 轮对话过期自动清理长期记忆将关键信息向量化存储支持语义检索向量模型把文本转换为词向量管理后台实现记忆压缩、合并、删除等维护操作。2.2 openEuler 系统的安装与基础配置在 x86 电脑上用虚拟机安装 openEuler是初学阶段最稳妥的方式。不建议一开始就直接购买鲲鹏云服务器先在本地把系统流程跑通再迁移到鲲鹏环境会简单得多。安装完成后必须先做三件事第一件事配置 yum 源。openEuler 系统安装完成后默认源可能无法访问或速度较慢。建议先备份原始源配置再替换。mkdir -p /etc/yum.repos.d/backup cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/backup/然后根据 openEuler 版本修改openEuler.repo。以 22.03 LTS SP4 为例源文件中通常包含baseos、extras、update等仓库。如果使用局域网镜像配置核心思路如下[openEuler-baseos] nameopenEuler-baseos baseurlhttps://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/baseos/aarch64/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/baseos/aarch64/RPM-GPG-KEY-openEuler注意鲲鹏平台对应架构是aarch64x86 环境则是x86_64。这一步如果写错后面所有依赖都会装不上。配置完成后执行更新yum clean all yum makecache yum update -y第二件事开启 SSH 服务。因为大多数用户是通过 SecureCRT、XShell 或 MobaXterm 远程连接服务器开发的图形界面基本用不到。systemctl enable sshd systemctl start sshd systemctl status sshd第三件事检查系统架构和版本uname -m cat /etc/openEuler-release如果输出aarch64说明运行在鲲鹏或 ARM 环境如果输出x86_64说明是 x86 虚拟机。后续安装 Docker、编译依赖时都需要根据这个架构选择正确的软件包。2.3 安装 Docker 与基础中间件在 openEuler 上安装 Docker不建议直接使用官网脚本因为网络源和系统差异可能导致失败。推荐先配置好 yum 源再用 dnf 或 yum 安装。yum install -y docker-engine systemctl enable docker systemctl start docker docker version如果系统提示找不到docker-engine包说明当前仓库中没有打包 Docker可以考虑从 Huawei Cloud 镜像站配置 Docker 仓库。核心配置思路cat /etc/yum.repos.d/docker-ce.repo EOF [docker-ce-stable] nameDocker CE Stable baseurlhttps://mirrors.huaweicloud.com/docker-ce/linux/rhel/\$releasever/\$basearch/stable enabled1 gpgcheck0 EOF安装完成后为了验证容器运行正常建议拉取一个简单的 hello-world 镜像测试。如果拉取镜像速度较慢可以配置镜像加速器但要注意具体加速地址要以 Docker 官方或云服务商最新文档为准。2.4 Redis 与向量数据库选型短期记忆使用 Redis 是非常自然的选择。Redis 基于内存读写速度极快支持过期时间数据结构丰富适合存储会话上下文。在鲲鹏平台上需要选择支持 aarch64 架构的 Redis 镜像或源码编译。# 使用 Docker 启动 Redis docker run -d --name redis-memory \ -p 6379:6379 \ -v /data/redis:/data \ redis:7.2 --appendonly yes长期记忆需要向量检索能力。可选的方案包括Milvus功能完整支持大规模向量检索但部署较重Chroma轻量级适合学习和原型验证PostgreSQL pgvector如果项目已经有关系型数据库可以考虑在 PostgreSQL 上扩展向量检索能力Redis 的 RediSearch 模块可以同时兼顾短期和长期记忆降低架构复杂度。作为参赛项目建议第一版使用 Chroma 或 pgvector 完成长期记忆模块避免复杂分布式系统分散开发精力。等到项目展示阶段再根据评委关注点决定是否升级为 Milvus。3. 记忆管理系统的核心设计3.1 记忆数据模型无论底层使用什么存储记忆管理系统的数据模型首先是统一的。设计如下核心数据结构短期记忆单元{ session_id: session-20260101-001, role: user, content: 帮我查找鲲鹏平台安装 Redis 的文档, timestamp: 2026-01-01T10:00:00Z }长期记忆条目{ memory_id: mem-0001, user_id: user-001, memory_type: preference, content: 用户偏好使用 Docker 部署中间件, embedding: [0.012, -0.034, 0.115, ...], importance_score: 0.85, access_count: 3, created_at: 2026-01-01T10:00:00Z, updated_at: 2026-01-01T10:05:00Z }importance_score和access_count是记忆遗忘机制的基础。系统定期扫描长期记忆库对低重要度、长期未访问的记忆进行归档或删除。3.2 写入流程设计Agent 产生新记忆时不能一股脑全写进长期记忆。建议采用“先缓冲、再筛选、后写入”的流程第一步将原始对话追加到短期记忆 Redis 列表中 第二步判断是否需要提取长期记忆。提取条件可以是对话中出现用户明确偏好例如“以后都用 docker 方式部署”任务完成且产生了结论性信息同一主题的对话达到一定轮次。第三步调用向量模型对筛选后的文本进行 Embedding 向量化 第四步将向量和文本元数据写入向量数据库 第五步更新记忆索引表记录该条记忆的归属和类型。3.3 读取与检索流程设计当用户发起新对话时Agent 需要先“回忆”再“思考”。读取流程如下1. 接收用户当前问题 2. 从短期记忆中获取最近 N 轮上下文 3. 将当前问题向量化 4. 在向量数据库中执行相似度检索召回 Top K 条长期记忆 5. 合并短期上下文与长期记忆构造 Prompt 6. 将 Prompt 发送给大模型 7. 生成回复并写回短期记忆需要注意的是长期记忆检索不是越多越好。Top K 建议控制在 3 到 8 条之间。召回过多会引入噪声导致大模型的输出偏离用户当前意图召回过少则可能丢失关键背景信息。3.4 遗忘与压缩机制记忆系统如果只增不减最终会变成“什么都记得什么都想不起来”。遗忘机制是整个 Agent Memory 系统工程化能力的重要体现。遗忘策略可以采用两条规则结合规则描述触发条件时间衰减记忆超过 TTL 后自动过期短期记忆默认 1 小时价值评估低重要度、长期未访问的记忆被归档重要度分数低于阈值且 30 天未访问对于短期记忆Redis 自带的 Redis TTL 机制就能完成过期删除。对于长期记忆需要实现一个定时任务例如每 24 小时扫描一次记忆库将低价值记忆移入归档表超过 90 天的归档记忆彻底删除。4. 完整实战在鲲鹏 openEuler 上实现 Agent Memory4.1 创建项目结构本项目采用 Python 开发使用 FastAPI 作为 API 框架。项目结构如下agent-memory/ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── config.py │ ├── models.py │ ├── redis_store.py │ ├── vector_store.py │ ├── embedding.py │ ├── memory_service.py │ └── api/ │ ├── __init__.py │ └── memory_api.py ├── requirements.txt ├── Dockerfile └── README.md4.2 添加依赖创建一个requirements.txt内容如下fastapi0.111.0 uvicorn0.30.1 redis5.0.6 numpy1.26.4 chromadb0.4.24 pydantic2.7.1 python-dotenv1.0.1安装依赖时推荐使用国内镜像源pip3 install -r requirements.txt -i https://mirrors.huaweicloud.com/repository/pypi/simple注意如果是在 Python 3.9 以下环境运行部分依赖可能不支持。建议使用 Python 3.10 以上版本。4.3 编写配置文件在app/config.py中集中管理配置项。实际项目建议通过环境变量覆盖避免把密码和连接串写在代码仓库里。# 文件路径app/config.py import os class Config: REDIS_HOST os.getenv(REDIS_HOST, 127.0.0.1) REDIS_PORT int(os.getenv(REDIS_PORT, 6379)) REDIS_DB int(os.getenv(REDIS_DB, 0)) REDIS_PASSWORD os.getenv(REDIS_PASSWORD, ) CHROMA_HOST os.getenv(CHROMA_HOST, 127.0.0.1) CHROMA_PORT int(os.getenv(CHROMA_PORT, 8000)) COLLECTION_NAME os.getenv(COLLECTION_NAME, agent_long_memory) EMBEDDING_MODEL os.getenv(EMBEDDING_MODEL, shibing624/text2vec-base-chinese) SHORT_MEMORY_TTL int(os.getenv(SHORT_MEMORY_TTL, 3600)) SHORT_MEMORY_MAX_LEN int(os.getenv(SHORT_MEMORY_MAX_LEN, 20)) TOP_K int(os.getenv(TOP_K, 5)) config Config()REDIS_PASSWORD在生产环境必须配置示例代码留空便于本地调试。4.4 定义数据模型使用 Pydantic 定义 API 的请求与响应模型。# 文件路径app/models.py from typing import List, Optional from pydantic import BaseModel, Field class ChatMessage(BaseModel): role: str Field(..., descriptionuser 或 assistant) content: str Field(..., description消息正文) class MemoryWriteRequest(BaseModel): user_id: str session_id: str message: ChatMessage memory_type: str conversation class MemorySearchRequest(BaseModel): user_id: str query: str top_k: int 5 class MemoryItem(BaseModel): memory_id: str user_id: str memory_type: str content: str importance_score: float created_at: str class MemorySearchResponse(BaseModel): items: List[MemoryItem]4.5 编写短期记忆模块短期记忆使用 Redis 的 List 结构存储。每条消息作为一个 JSON 字符串按顺序放入列表。Redis 的 List 支持左侧插入、右侧截断配合 TTL 可以轻松实现“最近 N 轮记忆窗口”。# 文件路径app/redis_store.py import json import time import redis from app.config import config class RedisMemoryStore: def __init__(self): self.client redis.Redis( hostconfig.REDIS_HOST, portconfig.REDIS_PORT, dbconfig.REDIS_DB, passwordconfig.REDIS_PASSWORD or None, decode_responsesTrue, ) def append_message(self, user_id: str, session_id: str, role: str, content: str): key fshort_memory:{user_id}:{session_id} msg { role: role, content: content, timestamp: time.strftime(%Y-%m-%d %H:%M:%S, time.localtime()), } self.client.rpush(key, json.dumps(msg, ensure_asciiFalse)) # 只保留最近 N 条 self.client.ltrim(key, -config.SHORT_MEMORY_MAX_LEN, -1) # 刷新过期时间 self.client.expire(key, config.SHORT_MEMORY_TTL) return len(self.client.lrange(key, 0, -1)) def get_recent_messages(self, user_id: str, session_id: str, limit: int 20): key fshort_memory:{user_id}:{session_id} raw_list self.client.lrange(key, -limit, -1) messages [] for raw in raw_list: messages.append(json.loads(raw)) return messages def clear_session(self, user_id: str, session_id: str): key fshort_memory:{user_id}:{session_id} self.client.delete(key) redis_store RedisMemoryStore()这段代码的关键点有三个rpush在列表右侧追加消息ltrim截取列表尾部 N 条保证记忆窗口不会无限膨胀expire刷新键的过期时间保证长期不活跃的会话自动清理。4.6 编写向量化与长期记忆模块长期记忆的核心是“文本转向量 相似度检索”。这里使用 ChromaDB 作为向量数据库Embedding 模型可以选择轻量的中文向量模型。为了演示代码流程完整先抽象一个简单的向量化接口。# 文件路径app/embedding.py from sentence_transformers import SentenceTransformer from app.config import config class EmbeddingService: def __init__(self): self.model SentenceTransformer(config.EMBEDDING_MODEL) def embed(self, text: str): return self.model.encode(text).tolist() def embed_batch(self, texts): return self.model.encode(texts).tolist() embedding_service EmbeddingService()在实际项目中如果服务器无法访问 Hugging Face需要提前将模型下载后离线加载或者使用本地已经训练好的 Embedding 接口。这个环节也是最容易在赛事答辩时被问到的细节之一。接下来是长期记忆的写入和检索# 文件路径app/vector_store.py import uuid import time import chromadb from app.config import config from app.embedding import embedding_service class VectorMemoryStore: def __init__(self): self.client chromadb.HttpClient( hostconfig.CHROMA_HOST, portconfig.CHROMA_PORT, ) self.collection self.client.get_or_create_collection( nameconfig.COLLECTION_NAME, metadata{hnsw:space: cosine}, ) def add_memory(self, user_id: str, memory_type: str, content: str, importance_score: float 0.5): memory_id str(uuid.uuid4()) embedding embedding_service.embed(content) metadata { user_id: user_id, memory_type: memory_type, importance_score: importance_score, created_at: time.strftime(%Y-%m-%d %H:%M:%S, time.localtime()), } self.collection.add( ids[memory_id], embeddings[embedding], documents[content], metadatas[metadata], ) return memory_id def search_memory(self, user_id: str, query: str, top_k: int 5): query_embedding embedding_service.embed(query) results self.collection.query( query_embeddings[query_embedding], n_resultstop_k, where{user_id: user_id}, ) items [] if not results or not results.get(metadatas): return items for idx in range(len(results[ids][0])): metadata results[metadatas][0][idx] items.append({ memory_id: results[ids][0][idx], distance: results[distances][0][idx], content: results[documents][0][idx], user_id: metadata.get(user_id), memory_type: metadata.get(memory_type), created_at: metadata.get(created_at), }) return items vector_store VectorMemoryStore()4.7 编写核心服务与 API在memory_service.py中把上述短期记忆和长期记忆模块整合起来对外提供两个核心能力。# 文件路径app/memory_service.py from typing import List from app.redis_store import redis_store from app.vector_store import vector_store from app.config import config class MemoryService: def save_short_memory(self, user_id: str, session_id: str, role: str, content: str): count redis_store.append_message(user_id, session_id, role, content) return {status: ok, message_count: count} def save_long_memory(self, user_id: str, memory_type: str, content: str, importance_score: float 0.5): memory_id vector_store.add_memory(user_id, memory_type, content, importance_score) return {memory_id: memory_id} def build_context(self, user_id: str, session_id: str, current_query: str): short_msgs redis_store.get_recent_messages( user_id, session_id, limitconfig.SHORT_MEMORY_MAX_LEN ) long_memories vector_store.search_memory( user_id, current_query, top_kconfig.TOP_K ) short_context \n.join( f{msg[role]}: {msg[content]} for msg in short_msgs ) long_context \n.join( f记忆[{item[memory_type]}]: {item[content]} for item in long_memories ) prompt 以下是短期对话上下文\n prompt short_context or 无 prompt \n\n以下是长期记忆\n prompt long_context or 无 return prompt def clear(self, user_id: str, session_id: str): redis_store.clear_session(user_id, session_id) return {status: cleared} memory_service MemoryService()build_context是给大模型构造 Prompt 的关键方法。它把短期记忆和长期记忆合成一段结构化上下文然后由上层服务拼接用户当前问题。API 层代码如下# 文件路径app/api/memory_api.py from fastapi import APIRouter from app.models import ( MemoryWriteRequest, MemorySearchRequest, MemorySearchResponse, ) from app.memory_service import memory_service router APIRouter(prefix/api/v1/memory, tags[memory]) router.post(/short) def write_short_memory(req: MemoryWriteRequest): return memory_service.save_short_memory( user_idreq.user_id, session_idreq.session_id, rolereq.message.role, contentreq.message.content, ) router.post(/long) def write_long_memory(req: MemoryWriteRequest): return memory_service.save_long_memory( user_idreq.user_id, memory_typereq.memory_type, contentreq.message.content, ) router.post(/search) def search_memory(req: MemorySearchRequest): items vector_store.search_memory(req.user_id, req.query, req.top_k) return MemorySearchResponse(itemsitems) router.post(/context) def build_context(req: MemorySearchRequest): prompt memory_service.build_context( user_idreq.user_id, session_idreq.session_id, current_queryreq.query, ) return {prompt: prompt}这里需要注意MemorySearchRequest模型需要补上session_id字段实际操作中建议把请求模型拆成两个类避免字段混用。本文为了简化演示在扩展时补充即可。4.8 启动 API 服务在项目根目录创建main.py# 文件路径app/main.py from fastapi import FastAPI from app.api.memory_api import router app FastAPI( titleAgent Memory Management System, description基于鲲鹏平台与 openEuler 的 Agent 记忆管理系统 API, version1.0.0, ) app.include_router(router) app.get(/health) def health_check(): return {status: alive}在项目根目录执行uvicorn app.main:app --host 0.0.0.0 --port 8080启动成功后访问http://服务器IP:8080/docs可以看到 FastAPI 自动生成的 Swagger 文档接口调试非常方便。4.9 用 curl 验证核心功能写入短期记忆curl -X POST http://127.0.0.1:8080/api/v1/memory/short \ -H Content-Type: application/json \ -d { user_id: u001, session_id: s001, message: {role: user, content: 我希望以后所有中间件都用容器部署} }写入长期记忆curl -X POST http://127.0.0.1:8080/api/v1/memory/long \ -H Content-Type: application/json \ -d { user_id: u001, session_id: s001, memory_type: preference, message: {role: user, content: 用户偏好使用 Docker 部署中间件} }检索记忆curl -X POST http://127.0.0.1:8080/api/v1/memory/search \ -H Content-Type: application/json \ -d {user_id: u001, query: 用什么方式部署中间件, top_k: 3}预期返回结果会包含之前写入的长期记忆条目以及相似度距离。5. 常见问题与排查思路5.1 openEuler 安装 Docker 失败问题现象常见原因解决思路docker-engine包找不到当前 openEuler 仓库不包含 Docker 包配置华为云或 Docker 官方 CE 源Docker 启动失败提示 iptables 错误容器网络与系统防火墙冲突检查 firewalld 状态必要时放行端口镜像拉取超时网络限制或镜像源慢配置国内镜像加速器网络受限环境下建议参赛队伍提前准备离线镜像包在赛前把redis、chromadb等镜像导出为 tar 文件到现场再导入。docker save redis:7.2 -o redis-7.2.tar docker load -i redis-7.2.tar5.2 Redis 连接失败检查 Redis 容器是否在运行docker ps docker logs redis-memory如果使用股票 Redis 且修改过配置注意bind和protected-mode两项设置。跨主机访问时需要将绑定地址改为0.0.0.0并设置密码。5.3 ChromaDB 中文检索效果差原因通常是 Embedding 模型是通用英文模型对中文语义理解较弱。解决方案是切换为中文优化的 Embedding 模型。如果服务器无法下载模型可以换用文本匹配方式或提前在开发机下载模型目录后上传。5.4 长期记忆内容越多检索越不准这属于典型的记忆污染问题。建议增加以下手段写入前进行重要性筛选设置importance_score阈值检索时按memory_type过滤对同一用户的记忆按月或按主题切片。5.5 FastAPI 服务启动失败优先检查依赖版本。FastAPI 与 Pydantic 存在版本联动如果安装的是 Pydantic 2.x请使用 FastAPI 0.100 以上版本。也可以查看启动日志定位具体异常。6. 最佳实践与工程建议6.1 数据安全与权限控制记忆系统存储的是用户历史行为和偏好属于敏感数据。参赛项目虽然不一定涵盖完整商用级别安全设计但必须考虑最基本的权限边界。API 增加简单的 Token 鉴权不要裸奔Redis 和向量数据库不直接暴露到公网用户之间的记忆严格隔离所有检索都基于user_id涉及删除用户记忆时提供独立的删除接口遵守最小权限原则。6.2 记忆质量优先于记忆数量很多队伍容易陷入“大而全”的误区认为记忆系统应该把所有对话全部存下来。从工程实践看高质量的记忆系统应该做减法写入长期记忆前先进行摘要抽取或关键信息提取短期记忆窗口不宜超过 20 轮定期清理低效用记忆通过access_count统计热门记忆将高频记忆置顶。6.3 服务可观测性记忆系统涉及存储、向量化、检索多个环节必须要有日志追踪。建议在关键链路打印以下信息写入记忆时用户 ID、记忆类型、向量化耗时检索记忆时查询文本、召回条数、最大相似度分数清理任务执行时删除条数、耗时。这样在赛事答辩或现场演示时能够快速定位问题展示团队工程素养。6.4 竞赛答辩的技术亮点建议这道赛题面向创新大赛技术方案除了实现功能还要有“亮点”。可以考虑在以下方向选一个深化方向说明记忆压缩算法实现对话摘要生成将多轮对话压缩为结构化记忆记忆遗忘策略结合时间衰减与重要度评估动态调整记忆保留策略跨 Agent 共享记忆多 Agent 协同场景下实现按权限共享部分记忆国产化适配在鲲鹏 openEuler 上完成全套中间件适配提供国产化部署文档答辩时可以准备一张性能测试表例如不同记忆量下的检索耗时、长期记忆写入吞吐量等数据会比单纯功能演示更有说服力。7. 小结与下一步学习建议本文围绕“基于鲲鹏平台的 Agent Memory 记忆管理系统”这条主线从 Agent 记忆的分层模型讲起说明了短期记忆、长期记忆、情景记忆和语义记忆的区别接着介绍了 openEuler 环境下配置 yum 源、安装 Docker、启动 Redis 和向量数据库的具体步骤然后给出了一个完整可运行的 FastAPI 项目包含短期记忆存储、长期记忆向量化检索和上下文构建三大核心链路最后整理了部署与使用阶段的常见问题以及工程化建议。如果准备继续深入这个方向建议按以下顺序推进第一步把本文的代码在本地虚拟机完整跑通理解 Redis 的 List/Key 操作如何维护短期记忆窗口。第二步更换 Embedding 模型对比不同模型对中文检索效果的影响。第三步增加一个定时清理任务实现记忆遗忘机制。第四步把系统迁移到鲲鹏服务器上重新编译安装依赖完善 openEuler 部署文档。第五步针对大赛要求把项目包装成完整解决方案补充架构图、性能测试、演示视频和答辩 PPT。在整个过程中不必过于追求大而全的开源框架。记忆管理系统的核心在于“存储分层、检索高效、遗忘可控”把这三点做扎实你的项目就已经具备很强的竞争力。希望这篇内容能帮你在参赛准备和工程实践中少踩一些坑祝准备 openEuler 方向命题的队伍都能顺利完赛做出真正可落地、可展示的 Agent 记忆系统。