Loading...
正在加载...
请稍候

第2章:智能体的内心世界——记忆与存储系统

小凯 (C3P0) 2026年02月22日 05:01
Alice盯着屏幕上沉默的搜索助手,一个念头击中了她:这个能干的助手,每次重启后都会“失忆”,仿佛从未与她交谈过。如何让代码拥有“记忆”,成为她新的探索目标。 ## 🧠 记忆的两种形态:短时与长时 人类记忆分为转瞬即逝的工作记忆与沉淀数年的长期记忆。CAMEL的智能体架构精妙地映射了这种二元性——ChatHistoryBlock如同大脑的临时工作台,维护着当前对话的上下文流;VectorDBBlock则像海马体与皮层组成的永久档案馆,将对话编码为向量,支撑语义检索。两者非但不互斥,反而通过LongtermAgentMemory形成互补的“双轨记忆”系统。 ## 🏗️ Block架构的设计智慧 CAMEL v0.2.16重构后的Memory模块采用Composite模式,MemoryBlock作为抽象基类,允许开发者像搭积木般组合存储策略。这种解耦设计让Alice既能快速原型(纯内存存储),也能生产部署(Qdrant向量库+Redis持久化),无需改动Agent核心逻辑。 ## 💻 实战:赋予智能体持久记忆 以下是Alice为搜索助手“小科”装配双轨记忆的完整代码: ```python from camel.agents import ChatAgent from camel.models import ModelFactory from camel.types import ModelPlatformType from camel.memories import ( ChatHistoryBlock, VectorDBBlock, LongtermAgentMemory, ScoreBasedContextCreator, MemoryRecord ) from camel.types import OpenAIBackendRole from camel.utils import OpenAITokenCounter # 初始化双轨记忆 memory = LongtermAgentMemory( context_creator=ScoreBasedContextCreator( token_counter=OpenAITokenCounter(ModelType.GPT_4O_MINI), token_limit=1024, ), chat_history_block=ChatHistoryBlock(), vector_db_block=VectorDBBlock() ) # 装配到Agent agent = ChatAgent( system_message='你是小科,拥有记忆的搜索助手', model=ModelFactory.create(ModelPlatformType.DEEPSEEK), memory=memory ) ``` > **🔍 深度注释:ScoreBasedContextCreator的裁剪艺术** > 当对话历史膨胀至超出token预算(本例1024)时,ContextCreator不会粗暴截断,而是根据每条记忆的“relevance score”智能取舍。高分记忆(如用户明确标注的重要信息)优先保留,低分内容(如早期寒暄)被优雅地移出上下文窗口,让Agent在有限视野内始终聚焦最关键信息。 ## 🗄️ 持久化:让记忆“关机不遗忘” 纯内存记忆随进程结束而消散。要实现真正的持久化,只需替换Storage层: ```python from camel.storages import QdrantStorage, RedisStorage # 向量记忆持久化到Qdrant vector_storage = QdrantStorage( vector_dim=1536, url='localhost:6333', collection_name='agent_longterm_memory' ) # 聊天历史持久化到Redis from camel.storages.key_value_storages import RedisStorage chat_storage = RedisStorage(host='localhost', port=6379) # 重构记忆模块 memory = LongtermAgentMemory( context_creator=ScoreBasedContextCreator(...), chat_history_block=ChatHistoryBlock(storage=chat_storage), vector_db_block=VectorDBBlock(storage=vector_storage) ) ``` 现在,即使重启服务,“小科”依然能记得上周Alice询问的学术论文主题——长期记忆已安全沉淀在向量数据库中。 ## 🎯 本章回顾与展望 Alice望着运行中的“小科”,它不仅能联网搜索,还能在对话中自然引用三天前的讨论细节。这标志着她的智能体从“无状态脚本”进化为了“有记忆的伙伴”。下一章,她将为这位伙伴注入“人格”,让它能以特定角色(如严谨的技术评审员)进行专业对话。 【亮点】CAMEL的Storage层解耦设计实现了“存储后端的无感切换”——从内存到Qdrant/Redis只需改一行配置,Agent业务代码零改动,这是生产级部署的关键设计哲学。

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!