新闻详情

新闻详情

首页 / 资讯中心 / 详情

Agent Memory实战:从存储到检索的记忆工程全解析

发布时间:2026/9/8 12:27:27来源:尧图网络
Agent Memory实战:从存储到检索的记忆工程全解析
Agent 应用要做“真”记忆层是关键。现在很多教程只讲“怎么让 Agent 调用工具”却很少讲“Agent 怎么记住用户、怎么在后续对话里回忆起上次的需求、用户改主意之后怎么更新之前存下来的信息”。今天这篇不是概念科普而是一套能照着实现的 Agent Memory 工程笔记。从持久化存储、语义检索、记忆修改到电商导购 Agent 的完整代码链路从头到尾过一遍记忆在 Agent 中的落地方式。如果你做过 Chatbot 或者客服系统单轮对话能力其实很容易难的是“换一个会话之后它还记得你是谁、上次看了什么、这次想解决什么问题”。这个“记得”就是 Memory 系统要做的事。本文尝试用电商导购 Agent 作为主线案例逐步实现记忆的存储、修改、查询和接口化。为了保证教程适用范围足够广代码示例尽量保持精简结构只依赖最常见的 Python 生态组件方便迁移到 LangChain、LangGraph、Coze 工作流或者其他 Agent 框架里。先给结论Agent Memory 并不依赖昂贵的 GPU 资源大部分能力在普通开发机上就能完成模型接入和存储层开发真正决定效果的不是模型大小而是数据模型设计、存储选型、批量任务结构和记忆修改策略。本文会给出最小可运行的存储代码、语义检索示例、接口服务模板以及电商场景下的偏好记忆更新逻辑。整套内容适合正在学习 Agent 开发、想把记忆层做进自己的 Chatbot/客服/导购系统、需要一套可以快速改造的代码模板的同学。看完之后你能跑通最小记忆系统并且理解为什么“记忆修改”比“记忆存储”更考验工程能力。1. Agent Memory 核心能力速览能力项说明技术范围Agent 短期上下文记忆、长期用户画像记忆、向量检索、记忆修改与失效策略典型硬件需求普通开发机即可CPU 可跑通存储与检索模型接入部分按实际模型版本调整建议开发环境Python 3.10需要安装 FastAPI、LangChain、向量数据库客户端记忆存储形态JSON 文件、SQLite、Redis、Chroma / FAISS 向量库、对象存储核心操作写入记忆、读取记忆、更新记忆、删除记忆、按语义召回相关记忆批量任务支持用户批量记忆导入、定时摘要、历史记忆归档、批量失效清理接口服务可通过 FastAPI / Flask 暴露 REST API供上层 Agent 或业务系统调用电商场景用户偏好记录、商品浏览历史、咨询上下文、购物车意图、售后状态跟踪使用边界必须获得用户授权涉及人脸、声音、联系方式等信息需脱敏处理这套能力组合并不复杂但要做到“随时可写、快速可查、改得了、删得掉”要比表面看起来复杂不少。很多 Agent 项目挂在记忆上不是模型不会回答而是记忆写入太乱、读取太慢、修改逻辑缺失。2. 先搞清楚Agent 的“记忆”到底指什么在动手写代码之前先把概念理清。Agent Memory 通常可以拆成三层。第一层是短期记忆。短期记忆对应模型的上下文窗口也就是当前对话中 Agent 能看到的历史消息。它的特点是读取快、容量有限对话一轮之后如果不做处理就丢失。很多 Agent 框架里叫“会话窗口”或者“对话缓存”解决的是“当前任务中 Agent 不要忘记前面说过的内容”这个问题。短期记忆的工程实现比较简单通常是一个消息列表按时间顺序存进上下文。第二层是长期记忆。长期记忆对应跨会话的持久化信息比如用户偏好、历史订单、商品浏览记录、上次沟通的结论。如果每次对话都从零开始用户就要反复说明自己的需求体验很差。长期记忆需要落地到数据库或者文件系统里并且要设计一套“什么时候写、什么时候读、什么时候更新”的规则。第三层是工作记忆。工作记忆更像 Agent 在执行复杂任务过程中的临时变量例如多步工具的中间结果、任务状态标记、等待用户确认的商品清单。它不一定需要长期落盘但需要可靠的状态管理否则任务中途重启或者超时Agent 就不知道自己进行到哪一步了。所以网上说的“Agent 记忆”经常是这三层的组合。本文后面要讲的存储与修改主要聚焦长期记忆持久化同时在电商案例中会用到短期记忆和工作记忆的思路。也就是下面这张认知模型记忆类型生命周期典型载体Agent 中的作用短期记忆当前会话内消息列表、上下文缓存维持多轮对话连贯性工作记忆任务执行期间内存变量、状态机记录任务进度和中间结果长期记忆跨会话持久数据库、文件、向量库沉淀用户画像和业务事实语义记忆长期向量存储 Embedding按含义召回历史相关记忆而非按关键字把这个模型想清楚之后再写代码就有章法了。很多项目的问题就是三层混用比如把临时任务状态写进长期库或者把用户敏感偏好放在上下文里导致每次请求都很长。记忆系统设计的第一步就是分清楚每一份数据应该住在哪一层。3. 适用场景与使用边界Agent Memory 适合解决问题的场景典型的有三类。第一类是长期用户型 Agent。比如电商导购、课程助手、企业知识助手用户会反复回来找它。没有长期记忆每次对话都是陌生人用户需要重复描述自己的身份、历史情况、偏好体验很差。第二类是复杂多步任务 Agent。比如帮用户对比商品、生成购买建议、跟进订单售后整个流程需要跨多轮对话维护状态Agent 必须记住已经完成和待办的事项。这一类重点用工作记忆和任务状态管理。第三类是批量处理场景。比如对大量用户的历史行为做总结、构建统一用户记忆库或者在夜间批量清理过期记忆、生成周报摘要。这类场景需要接口 API 和批处理任务设计不是单次对话能完成的。使用边界同样重要而且必须说清楚。记忆能力越强意味着系统越了解用户也意味着隐私和数据安全责任更重。在实际开发中至少要注意以下几点不能私自采集用户未授权的数据涉及个人身份、联系方式、人脸、声纹等信息必须获得用户明确授权。需要给用户提供“查看、修改、删除”记忆的权利。也就是说记忆系统不能只做写入和读取还必须支持修改与删除这是合规底线。不能存储明文敏感信息手机号、地址、支付信息等应脱敏或加密存储。在记忆系统中使用任何用户生成内容做训练或模型微调之前都要确认是否有相应授权。电商导购案例同样如此。记录用户偏好和购物历史没问题但如果把浏览记录直接明文堆在向量库里被导出之后风险非常高。正确的做法是模型层设计时就加入脱敏字段和访问控制。4. 环境准备与前置条件这篇教程的代码基于 Python 生态第一次跑通建议使用以下环境。# 建议 Python 版本 Python 3.10 # 安装核心依赖按实际项目需要选择版本 pip install fastapi uvicorn pip install pydantic pip install langchain-core langchain-openai langchain-community pip install chromadb如果你本机不想装太多依赖可以先把核心存储部分跑通也就是用标准库 json 和 pathlib 完成的记忆读写。这一部分不需要任何第三方框架能帮你建立对记忆操作流程的基本感觉。第二步再加入向量库做语义检索。第三步才把 FastAPI 接口层和电商业务逻辑接进去。操作系统方面Windows、macOS、Linux 都可以跑代码没有平台独占逻辑。如果你的电脑上 Python 版本比较老建议先升级到 3.10 以上因为新版类型注解写起来更顺手生态兼容性也更好。向量数据库选型这里说明一下Chroma 适合本地开发和中等规模数据量FAISS 更适合纯向量检索场景Redis 适合结合缓存做实时读写。如果项目还没到万级用户量先用本地文件型存储完全够用不要一上来就引入分布式数据库。记忆系统的瓶颈往往不在存储引擎而在写入策略和检索策略。端口方面FastAPI 默认用 8000本地冲突时改成 8090 或其他空闲端口即可。模型接入部分请按你自己的 LLM 服务配置 API 地址和密钥本教程的示例代码不会把密钥写死。5. 第一段代码用文件存储实现最小可用的 Agent Memory先写一个不依赖第三方框架的最小记忆存储模块。这里用 JSON 文件保存用户长期记忆适合单机开发和小规模场景。文件路径可以按年、月、用户 ID 分目录方便后续清理和归档。import json import uuid from datetime import datetime from pathlib import Path class FileMemoryStore: 基于 JSON 文件的 Agent Memory 存储实现 def __init__(self, base_dir: str ./memory_data): self.base_dir Path(base_dir) self.base_dir.mkdir(parentsTrue, exist_okTrue) def _user_file(self, user_id: str) - Path: 每个用户单独一个 JSON 文件避免并发冲突 return self.base_dir / f{user_id}.json def load_memory(self, user_id: str) - dict: path self._user_file(user_id) if path.exists(): with open(path, r, encodingutf-8) as f: return json.load(f) return {user_id: user_id, memories: []} def save_memory(self, user_id: str, memory_data: dict) - None: path self._user_file(user_id) with open(path, w, encodingutf-8) as f: json.dump(memory_data, f, ensure_asciiFalse, indent2) def add_memory(self, user_id: str, content: str, metadata: dict None) - str: memory_id uuid.uuid4().hex memory { id: memory_id, content: content, metadata: metadata or {}, created_at: datetime.now().isoformat(), updated_at: datetime.now().isoformat(), } data self.load_memory(user_id) data[memories].append(memory) self.save_memory(user_id, data) return memory_id def update_memory(self, user_id: str, memory_id: str, new_content: str) - bool: data self.load_memory(user_id) for mem in data[memories]: if mem[id] memory_id: mem[content] new_content mem[updated_at] datetime.now().isoformat() self.save_memory(user_id, data) return True return False def delete_memory(self, user_id: str, memory_id: str) - bool: data self.load_memory(user_id) original_len len(data[memories]) data[memories] [m for m in data[memories] if m[id] ! memory_id] self.save_memory(user_id, data) return len(data[memories]) original_len def search_memory(self, user_id: str, keyword: str): data self.load_memory(user_id) return [ mem for mem in data[memories] if keyword in mem[content] ]这份代码做了几件基础但关键的事新增记忆时分配唯一 ID记录创建时间和更新时间修改记忆时保留原文结构只替换内容删除记忆时从列表中移除对应条目搜索记忆时先按用户隔离数据再做简单关键字匹配。很多 Agent 项目连这套基础逻辑都没有直接把历史记录拼进 prompt导致上下文越堆越长、token 消耗越来越大。最小文件存储的价值不在于性能而在于让团队先把记忆操作边界定下来谁负责写、谁负责读、用户怎么行使删除权。从这份代码继续扩展可以很自然切换到 SQLite、PostgreSQL 或 MongoDB。测试调用方式很简单可以写一个临时脚本验证store FileMemoryStore(base_dir./memory_data) # 写入一条用户偏好 user_id user_10001 memory_id store.add_memory( user_id, 用户偏好白色衬衫预算在 300 元以内, {source: chat, intent: shopping} ) print(新增记忆 ID:, memory_id) # 模拟用户改主意更新记忆 store.update_memory(user_id, memory_id, 用户偏好白色衬衫预算改为 500 元以内) # 查看更新后的全部记忆 for mem in store.load_memory(user_id)[memories]: print(mem)从运行结果可以看出用户改预算之后原来那条记忆的内容被完整替换更新时间也变了。这就是所谓的“记忆修改”面向 Agent 的长期记忆不能只追加还要支持更新和纠正。如果用户说“我之前说的不要了现在我要换个需求”Agent 必须能定位到旧记忆并修改否则就会一直按照过时信息推荐。6. 升级基于向量数据库的语义记忆关键字搜索的问题在于用户换一种表达方式就搜不到。例如用户之前说过“我喜欢浅色、显瘦的连衣裙”下次说“帮我找几件白色长裙”如果只做字符串匹配两条记忆之间没有直接关联。解决办法是把记忆内容转成向量然后做语义相似度检索。这里以 Chroma 为例给出一个轻量级实现思路。import chromadb from chromadb.utils import embedding_functions client chromadb.PersistentClient(path./vector_memory) embed_fn embedding_functions.SentenceTransformerEmbeddingFunction( model_nameBAAI/bge-small-zh ) collection client.get_or_create_collection( nameagent_memory, embedding_functionembed_fn ) def add_memory_vector(user_id: str, memory_id: str, content: str): collection.upsert( ids[f{user_id}:{memory_id}], documents[content], metadatas[{user_id: user_id, memory_id: memory_id}] ) def search_memory_vector(user_id: str, query: str, top_k: int 3): results collection.query( query_texts[query], n_resultstop_k, where{user_id: user_id} ) return results[documents]这里注意几个工程细节Embedding 模型选择决定检索效果。本地开发先用bge-small-zh这类轻量中文向量模型效果够用资源占用不高。如果追求更高准确率可以换更大的模型但需要评估推理耗时。where{user_id: user_id}用来做用户隔离保证一个用户只能召回自己的历史记忆。这是记忆检索的安全底线。upsert方法会按 ID 覆盖已有向量天然支持记忆修改。当用户偏好变更时用同一个记忆 ID 重新写入即可。向量检索和关键字检索不是替代关系。在实际系统中可以先用向量召回候选记忆再用关键字或规则进行过滤和排序降低误召回概率。向量记忆适合存储“语义型”的记忆内容比如用户喜好、咨询目标、问题描述。它不适合存储精确型事实例如订单号、手机号、价格金额这类数据应该继续用结构化数据库保存。合理的设计是混合存储结构化事实放关系型库语义偏好放向量库Agent 在需要时分别查询。7. 代码实战电商导购 Agent 案例现在把前面两部分整合起来实现一个电商导购 Agent。这个例子重点演示三类记忆能力用户偏好记忆、浏览历史记录、偏好修改与商品推荐联动。首先定义用户记忆模型。from dataclasses import dataclass, field dataclass class UserProfile: user_id: str preferred_styles: list field(default_factorylist) price_min: float 100.0 price_max: float 1000.0 browse_history: list field(default_factorylist) last_intent: str 接着写一个管理类负责把用户画像同步到文件存储和向量存储。class EcommerceMemory: def __init__(self, file_store: FileMemoryStore, user_id: str): self.file_store file_store self.user_id user_id self.profile: UserProfile | None None self._load() def _load(self): data self.file_store.load_memory(self.user_id) memories data.get(memories, []) profile_data {} for mem in memories: if mem[metadata].get(type) profile: profile_data mem[metadata].get(profile, {}) self.profile UserProfile( user_idself.user_id, preferred_stylesprofile_data.get(preferred_styles, []), price_minprofile_data.get(price_min, 100.0), price_maxprofile_data.get(price_max, 1000.0), browse_historyprofile_data.get(browse_history, []), last_intentprofile_data.get(last_intent, ), ) def update_style_preference(self, styles: list): # 更新向量记忆中关于偏好的描述 add_memory_vector( self.user_id, fstyle_pref, 用户偏好的商品风格 、.join(styles) ) self.profile.preferred_styles styles self._save_profile() def add_browse_record(self, item_desc: str): self.profile.browse_history.append(item_desc) if len(self.profile.browse_history) 20: self.profile.browse_history self.profile.browse_history[-20:] # 向量记忆追加浏览记录 add_memory_vector( self.user_id, fbrowse_{len(self.profile.browse_history)}, item_desc ) self._save_profile() def _save_profile(self): self.file_store.add_memory( self.user_id, 用户画像信息, { type: profile, profile: { preferred_styles: self.profile.preferred_styles, price_min: self.profile.price_min, price_max: self.profile.price_max, browse_history: self.profile.browse_history[-5:], last_intent: self.profile.last_intent, }, } )这里的核心逻辑是更新偏好时写入新的向量记忆新增浏览记录时保留最近 20 条保存画像时只保存最近 5 条浏览记录作为轻量画像完整历史通过向量库召回。接下来是和 LLM 联动的导购函数。这段代码不绑定具体厂商模型只是给出思路。def generate_recommendations(memory: EcommerceMemory, user_question: str): # 1. 从向量记忆召回用户可能相关的历史偏好 recalled search_memory_vector( memory.user_id, user_question, top_k3 ) # 2. 把召回内容作为上下文 memory_context \n.join(recalled[0]) if recalled else 暂无历史记忆 prompt f 你是电商导购助手。用户当前问题是{user_question} 以下是该用户的历史记忆请结合历史记忆给出个性化推荐 {memory_context} 用户画像 - 偏好风格{memory.profile.preferred_styles} - 预算范围{memory.profile.price_min} - {memory.profile.price_max} 元 - 近期浏览{memory.profile.browse_history[-3:]} 要求 1. 优先召回与历史偏好一致的商品 2. 如果用户修改了预算或偏好以用户最新说法为准 3. 输出商品名称、价格区间、推荐理由。 return prompt从这段代码能看到电商导购 Agent 的记忆闭环用户进来提问 - 向量库召回历史记忆 - 结合画像生成推荐 - 用户在对话中调整偏好 - 更新画像和向量记忆。下一次提问时Agent 就会基于新偏好重新推荐。特别需要注意“用户最新说法为准”这一条。记忆系统最怕的就是和当前用户意图冲突的信息残留。如果用户说“之前喜欢黑色现在想买白色”Agent 不能继续拿旧偏好推荐黑色。所以在电商场景中偏好更新时间戳优先级最高检索结果应该带上时间过滤。8. 记忆服务的接口设计与批量任务单独写记忆逻辑还不够生产环境需要把记忆能力暴露成接口服务。这样前端商城、客服后台、营销系统都可以接入同一个记忆中心。下面给出一个 FastAPI 实现的最小接口层。from fastapi import FastAPI, HTTPException from pydantic import BaseModel app FastAPI(titleAgent Memory Service) memory_store FileMemoryStore(./memory_data) class MemoryCreate(BaseModel): user_id: str content: str metadata: dict {} class MemoryUpdate(BaseModel): new_content: str app.post(/memory) def create_memory(item: MemoryCreate): memory_id memory_store.add_memory( item.user_id, item.content, item.metadata ) return {code: 0, memory_id: memory_id} app.get(/memory/{user_id}) def list_memory(user_id: str): data memory_store.load_memory(user_id) return {code: 0, data: data[memories]} app.put(/memory/{user_id}/{memory_id}) def update_memory(user_id: str, memory_id: str, item: MemoryUpdate): ok memory_store.update_memory(user_id, memory_id, item.new_content) if not ok: raise HTTPException(status_code404, detailmemory not found) return {code: 0, message: updated} app.delete(/memory/{user_id}/{memory_id}) def delete_memory(user_id: str, memory_id: str): ok memory_store.delete_memory(user_id, memory_id) if not ok: raise HTTPException(status_code404, detailmemory not found) return {code: 0, message: deleted}启动命令uvicorn main:app --host 0.0.0.0 --port 8000接口跑通后上层 Agent 或者业务系统可以直接通过 HTTP 调用记忆服务不需要关心底层存储是 JSON 还是向量库。这也是批量任务的基础批量导入用户历史记录、批量更新过期偏好、批量清理无效记忆都可以通过接口或者任务脚本完成。批量任务的思路可以参考下面这个队列结构from dataclasses import dataclass from typing import List import time dataclass class BatchTask: user_ids: List[str] action: str # import / update / delete payload: dict status: str pending error_log: List[str] field2(default_factorylist) # 示意字段实际开发需定义 def run_batch_import(task: BatchTask): for user_id in task.user_ids: try: # 示例批量写入记忆 for item in task.payload.get(items, []): memory_store.add_memory( user_id, item[content], item.get(metadata, {}) ) task.status done except Exception as e: task.error_log.append(f{user_id}: {e}) task.status partial_failed time.sleep(0.1) # 避免冲击下游服务 return task批量任务建议加入日志、失败重试和幂等设计。例如重复导入同一批用户历史不应该产生重复记忆可以通过记忆 ID 冲突处理和去重逻辑解决。电商系统里低频更新偏好、高频写入浏览记录批量任务的设计节奏完全不同需要根据实际场景拆分。9. 性能与资源观察Agent Memory 的工程性能重点不是模型显存而是磁盘读写、向量检索耗时和接口并发情况。首先是显存和普通内存。如果你的 Agent 通过 API 调用大模型本地只需要运行存储服务和向量检索整体内存占用非常低。如果使用本地开源模型显存占用取决于模型版本例如 7B 模型在量化后通常需要 6G 到 8G 显存这和记忆系统本身没有直接关系。记忆存储层的资源占用更多来自 Embedding 模型和向量库索引用 4G 内存跑本地小向量模型也没有压力。其次是检索性能。JSON 文件存储适合单机几百个用户的开发验证用户量增加后应该切换到 SQLite 或 PostgreSQL。向量库方面几万条记忆的全量检索在本地也很快但超过十万条时建议加分区、索引和缓存避免每次请求都做全量扫描。再就是写入频率。电商 Agent 中浏览历史通常高频写入但并不是每条记录都值得放进长期记忆。一个常见优化是设置阈值用户在同一页面停留超过一定时间才记录或者同一个商品只更新计数不重复新增记忆。这样可以避免向量库被大量低价值记录撑爆。批量任务观察点批量导入时观察 CPU 和磁盘 IOEmbedding 生成是主要耗时点。大量用户同时写入时观察数据库锁冲突情况必要时引入消息队列削峰。清理过期记忆时先统计命中条数再执行删除避免误删活跃记忆。性能优化的第一原则永远是“减少写入”。记忆不是越多越好只有用户明确表达过的偏好、关键行为、长期稳定的信息才值得持久化。大量临时噪音记忆会让向量检索的质量快速下降。10. 常见问题与排查方法问题现象可能原因排查方式解决方案记忆写入后读取不到文件存储路径不一致或用户 ID 拼接错误检查存储目录和日志输出统一用户 ID 生成规则检查路径参数向量检索结果与用户无关检索时没有按 user_id 过滤查看向量查询 where 条件是否生效强制在 where 中加入 user_id 隔离用户修改偏好后推荐仍用旧偏好记忆修改没有同步到向量库检查 update 逻辑是否同时触发向量 upsert画像更新时统一走管理类避免跳过向量层对话历史全部塞进 prompttoken 消耗巨大短期记忆没有做摘要或滑动窗口观察请求日志引入对话摘要或滑动窗口策略保留最近 N 轮批量任务重复导入产生重复记忆缺乏幂等设计检查导入日志和记忆 ID导入前先查重使用稳定业务 ID 作为记忆 ID服务启动后端口 8000 被占用端口冲突查看日志报错信息更换端口uvicorn main:app --port 8090用户要求删除记忆但向量库中还检索到删除操作未级联到向量库检索向量库遗留内容删除接口同时调用向量集合 deleteAgent 回答前后矛盾未区分记忆时间优先级打印记忆召回详情检索结果按 updated_at 排序优先采用最新记忆上面这些坑在真实的 Agent 项目里非常容易遇到。大多数记忆系统不是在设计阶段出问题而是在迭代阶段随着接口越来越多、写入路径越来越多某个环节忘了同步用户就开始觉得 Agent“记忆错乱”。解决方法是把记忆读写封装成唯一入口不允许业务代码直接改数据库文件。11. 最佳实践记忆系统的工程化把记忆模块做成真正能上线的工程而不是演示脚本需要关注如下几个方面。第一设计稳定的数据模型。记忆核心字段至少应该包括用户 ID、记忆 ID、内容、类型、来源、创建时间、更新时间、失效时间。电商场景还要加维度标签例如“偏好-风格”“偏好-价格”“行为-浏览”“行为-收藏”。标签方便批量任务和定向清理。第二所有写入走统一服务。记忆状态不应该被多个业务模块直接改。每个写入入口都维护一套校验逻辑和审计日志即使后面要加 Redis 缓存或消息队列也可以平滑替换。第三保证修改和删除的实时性。用户改变偏好和行使删除权是最考验系统的两个动作。变更偏好时需要同步更新结构化字段和向量库删除记忆时必须级联删除向量、缓存和导出副本。否则就会出现“主库删了、向量库还留着”的数据残留问题。# 一个推荐的目录结构示例 project/ ├── main.py # FastAPI 入口 ├── memory/ │ ├── store.py # 文件/SQLite 存储 │ ├── vector_store.py # 向量存储封装 │ ├── profile.py # 用户画像管理 │ └── schema.py # Pydantic 数据模型 ├── batch/ │ ├── import_tasks.py # 批量导入任务 │ └── clean_tasks.py # 过期清理任务 └── logs/ └── memory_service.log # 服务日志第四隐私合规要落到代码里。接口请求必须走鉴权用户数据应该加密存储查看权限按角色控制。设计时就留出“数据删除”的接口而不是上线后被要求补功能。涉及人脸、声音、联系方式等敏感信息处理前必须确认合法授权且仅用于授权范围内的功能。第五设置记忆的“回收机制”。不是所有记忆都要永久保留。浏览历史设置保留周期临时偏好设置失效时间超过时效自动归档或删除。这样可以控制存储成本也避免过时信息干扰 Agent 判断。12. 总结与下一步Agent Memory 的价值不在于“能记住”三个字而在于记住的内容准确、读取是实时的、用户可以修改和删除、批量维护可以自动化。从这篇教程的代码来看实现第一版最小记忆系统只需要文件存储和一个向量库真正要花时间设计的是数据模型、更新策略和批量任务流程。建议你先不要直接套电商案例而是新建一个最小测试项目用 5 个虚拟用户跑一遍记忆的写入、修改、查询和删除闭环。再把 FastAPI 接口接起来用 curl 做一轮接口回归。这个基础跑稳之后再引入向量检索和批量导入。最容易踩的坑总结下来就三个忘记按用户隔离数据、修改偏好时没同步向量库、删除记忆没有级联清理。只要把这三个问题在架构设计阶段提前堵住后面的迭代会顺畅很多。实际学习路线可以这样安排花一天时间把文件存储和接口跑通再用一天接入向量检索接下来用两天完成电商案例的偏好更新和商品推荐逻辑最后留一天做批量任务和清理策略。这样一周之内基本能把 Agent Memory 的主流开发思路过一遍。下一步可以继续研究多 Agent 场景下的共享记忆、基于记忆的自动摘要以及把记忆系统接入现有客服或者电商中台的实践方案。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

智能车竞赛‘走马观碑‘赛题:视觉识别与控制系统实战复盘 2026/9/8 13:06:31

智能车竞赛‘走马观碑‘赛题:视觉识别与控制系统实战复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
单片机计算机毕设之基于 STM32 的按键可控多设备消防应急系统设计与开发 基于 STM32 的室内温感燃气火灾险情预警联动系统设计(012607) 2026/9/8 13:06:31

单片机计算机毕设之基于 STM32 的按键可控多设备消防应急系统设计与开发 基于 STM32 的室内温感燃气火灾险情预警联动系统设计(012607)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

阅读更多 →
低电平点亮LED:灌电流驱动原理与ESP32 GPIO设计实战 2026/9/8 13:06:31

低电平点亮LED:灌电流驱动原理与ESP32 GPIO设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
高德导航9.5.13车机升级全攻略:先看系统条件再动手 2026/9/8 13:06:31

高德导航9.5.13车机升级全攻略:先看系统条件再动手

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
算法全景图谱:从排序、动态规划到深度学习的核心原理与工程实战 2026/9/8 13:06:31

算法全景图谱:从排序、动态规划到深度学习的核心原理与工程实战

很多读者一直在追更这个系列,从第一期到现在,我其实很少对“算法”这个东西本身做全局性的梳理。大多数人要嘛一头扎进LeetCode刷题里,要嘛被深度学习的论文砸得晕头转向,很少有人停下来问一句:算法这个庞杂的体系&…

阅读更多 →
HOJ前端容器化部署:Docker镜像构建与宝塔发布排坑指南 2026/9/8 13:03:31

HOJ前端容器化部署:Docker镜像构建与宝塔发布排坑指南

到了第7篇,整个HOJ部署链条里就剩前端这一块没落地了。前几篇我们在CentOS上装了宝塔、配好了数据库和中间件、把后端服务容器化跑起来了,但如果前端不发布,整个在线判题系统依然只是“后端API活着”的状态,浏览器里什么都没有。这…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞