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 条回复还没有人回复,快来发表你的看法吧!