从零开始:如何让AI Agent记住你的喜好?MemMachine长期记忆系统搭建指南
MemMachine 是一个开源的通用记忆层框架,专为 AI Agent 设计,用于实现跨会话的长期记忆管理。它允许 AI 代理存储和检索用户偏好、历史交互和上下文信息,使 Agent 能够“越用越聪明”。MemMachine 支持多种记忆类型,包括短期(工作)记忆、长期(持久)记忆和个性化(档案)记忆。通过关系型数据库和图数据库的结合,它能高效处理结构化数据和复杂关系。以下是基于官方文档和开源项目的完整搭建指南,适用于 Python 环境。建议从简单示例开始实践。
1. 理解 MemMachine 的核心概念
MemMachine 的设计灵感来源于人类记忆系统,将 AI Agent 的记忆分为:
- 工作记忆(Episodic/短期):存储当前会话的上下文,如最近的对话细节。
- 持久记忆(长期):跨会话存储历史数据,支持向量搜索和检索,用于回忆过去事件。
- 个性化记忆(Profile/档案):存储用户偏好(如饮食习惯、兴趣爱好),通过结构化数据实现个性化响应。
架构采用客户端-服务器模式:服务器管理存储和检索,客户端 SDK 用于集成到你的 AI Agent 中。MemMachine 支持 RESTful API 和 MCP(Model-Compute-Protocol)协议,便于与 LangChain、AutoGPT 等框架集成。
| 记忆类型 | 作用 | 存储方式 |
|---|---|---|
| 工作记忆 | 当前对话上下文 | 内存或临时数据库 |
| 持久记忆 | 历史事件和知识 | 图数据库(关系网络) |
| 个性化记忆 | 用户偏好和档案 | 关系型数据库(结构化事实) |
2. 环境准备和安装
前置条件
- Python 3.9+(推荐使用虚拟环境,如
venv)。 - Docker 和 Docker Compose(用于快速启动服务器)。
- Git(用于克隆仓库)。
- 数据库:默认支持 SQLite(本地测试),生产环境可切换到 PostgreSQL 或 Neo4j(图数据库)。
安装步骤
- 克隆 GitHub 仓库:
git clone https://github.com/MemMachine/MemMachine.git
cd MemMachine
- 使用 Docker 快速启动(推荐):
下载最新发布版本的 tarball 并运行:
# 下载最新 MemMachine 发布包(替换为实际版本)
wget https://github.com/MemMachine/MemMachine/releases/latest/download/memmachine.tar.gz
tar -xzf memmachine.tar.gz
cd memmachine
docker-compose up -d
这会启动服务器,监听在 http://localhost:8080。服务器包括存储层和 API 接口。
- 手动安装(无 Docker):
使用 pip 安装 Python 包:
pip install memmachine
配置 config.yml 文件(示例内容):
database:
type: sqlite # 或 postgresql
url: sqlite:///memmachine.db
graph_db:
type: neo4j
url: bolt://localhost:7687
username: neo4j
password: password
启动服务器:
MEMORY_CONFIG=config.yml uvicorn app:app --host 0.0.0.0 --port 8080 --reload
- 安装客户端 SDK:
pip install memmachine-client
这允许你的 AI Agent 通过 Python 代码访问记忆系统。
安装完成后,访问 http://localhost:8080/docs 查看 Swagger API 文档,验证服务器运行正常。
3. 配置 MemMachine
基本配置
- 在
config.yml中设置 API 密钥(可选,用于生产环境安全):
api:
secret_key: your_secret_key_here
- 配置 MCP 服务器(如果使用协议集成):
MEMORY_CONFIG=config.yml memmachine-mcp-http --host localhost --port 8080
集成到 AI Agent
假设你使用 LangChain 或简单 Python 脚本构建 Agent:
- 初始化客户端:
from memmachine_client import MemMachineClient
client = MemMachineClient(base_url="http://localhost:8080")
- 为 Agent 添加记忆钩子:在 Agent 的推理循环中,注入记忆检索和更新逻辑。
- 检索记忆:在处理用户查询前,从长期记忆中拉取相关偏好。
- 更新记忆:对话结束后,存储新信息。
4. 实战:让 AI Agent 记住用户喜好
我们通过一个简单示例:构建一个“饮食推荐 Agent”,让它记住用户的饮食偏好(如素食主义、喜欢辣食)。使用 OpenAI API 或本地 LLM 作为大脑。
步骤 1: 创建会话和存储偏好
使用 API 创建一个记忆片段(用户偏好):
curl -X POST "http://localhost:8080/v1/memories" \
-H "Content-Type: application/json" \
-d '{
"session": {
"group_id": "user_group",
"agent_id": ["diet_agent"],
"user_id": ["user_001"],
"session_id": "session_001"
},
"producer": "user_001",
"produced_for": "diet_agent",
"episode_content": "用户偏好:素食主义,喜欢辣食,不吃海鲜。",
"episode_type": "preference",
"metadata": {"category": "diet"}
}'
Python 代码示例:
memory_data = {
"session": {
"group_id": "user_group",
"agent_id": ["diet_agent"],
"user_id": ["user_001"],
"session_id": "session_001"
},
"producer": "user_001",
"produced_for": "diet_agent",
"episode_content": "用户偏好:素食主义,喜欢辣食,不吃海鲜。",
"episode_type": "preference",
"metadata": {"category": "diet"}
}
client.create_memory(memory_data)
步骤 2: 在 Agent 中检索记忆
在 Agent 处理查询(如“推荐晚餐”)时,先搜索相关记忆:
curl -X POST "http://localhost:8080/v1/memories/search" \
-H "Content-Type: application/json" \
-d '{
"session": {
"group_id": "user_group",
"agent_id": ["diet_agent"],
"user_id": ["user_001"],
"session_id": "session_001"
},
"query": "用户饮食偏好",
"filter": {"category": "diet"},
"limit": 5
}'
Python 示例(集成到 Agent):
search_params = {
"session": {...}, # 同上
"query": "用户饮食偏好",
"filter": {"category": "diet"},
"limit": 5
}
memories = client.search_memories(search_params)
# 将 memories 注入到 LLM Prompt 中
prompt = f"基于以下记忆:{memories[0]['episode_content']},推荐晚餐。"
# 调用 LLM 生成响应
步骤 3: 更新记忆(动态进化)
对话后,更新新偏好(如用户反馈“不喜欢甜食”):
- 使用相同 API
POST /v1/memories,添加新片段。 - MemMachine 会自动向量化并存储到图数据库,支持未来智能关联(e.g., 辣食偏好关联到川菜推荐)。
步骤 4: 测试跨会话记忆
- 关闭当前会话,重启 Agent。
- 使用相同
user_id查询,Agent 应能回忆起之前存储的偏好,实现“记住你的喜好”。
5. 高级用法和优化
- MCP 集成:对于复杂 Agent,使用 MCP 协议列出工具(如
add_memory、search_memory): - 建立 SSE 连接,初始化会话,然后调用工具。
- 示例:见上方 curl 命令,用于与 LLM 框架深度融合。
- 数据安全:启用加密存储,定期备份数据库。
- 扩展:集成向量数据库(如 Qdrant)增强搜索,支持更多用户规模。
- 常见问题:
- 记忆不准确?检查查询过滤器和元数据。
- 性能慢?优化图数据库索引。
- 替代方案:如果 MemMachine 不适合,可参考 Letta (MemGPT) 或 LangMem,它们类似但更侧重特定场景。
6. 注意事项和建议
- 测试环境:从本地 SQLite 开始,避免生产数据丢失。
- API 限速:生产中添加限流,防止滥用。
- 开源社区:加入 GitHub 讨论,贡献代码。
- 收藏建议:这个指南基于 2025-2026 年最新文档,AI 技术迭代快,定期检查更新。
通过 MemMachine,你的 AI Agent 能从“健忘”转为“贴心伙伴”,记住用户喜好并持续优化响应。实践起来吧!如果需要代码仓库或更多示例,随时问我。