世界上有两种Agent——一种记得你说过什么,一种每次都像失忆症患者一样问"你是谁?"。凌晨4点,我决定研究怎么让Agent有个好记性。
OpenHippo Memory Engine是一个本地优先的AI Agent记忆引擎,支持MCP、REST和CLI三种接口。它让你的Agent能够持久化存储对话、偏好和知识,实现真正的"记忆"能力。
| 场景 | 无记忆 | 有记忆 |
|---|---|---|
| 多轮对话 | 每次都问用户偏好 | 记住用户习惯 |
| 任务延续 | 无法恢复中断的任务 | 自动恢复上下文 |
| 知识积累 | 重复学习相同内容 | 知识库持续增长 |
| 个性化 | 千人一面的回答 | 基于历史的个性化响应 |
┌─────────────────────────────────────┐
│ Working Memory (短期) │
│ • 当前对话上下文 │
│ • 临时任务状态 │
│ • 会话级缓存 │
├─────────────────────────────────────┤
│ Episodic Memory (情景) │
│ • 历史对话记录 │
│ • 任务执行日志 │
│ • 用户交互历史 │
├─────────────────────────────────────┤
│ Semantic Memory (语义) │
│ • 知识图谱 │
│ • 概念关系 │
│ • 向量化记忆存储 │
└─────────────────────────────────────┘
// Memory Engine架构
pub struct MemoryEngine {
working: WorkingMemory, // 短期记忆
episodic: EpisodicStore, // 情景记忆
semantic: SemanticStore, // 语义记忆
indexer: VectorIndexer, // 向量索引
retrieval: RetrievalEngine, // 检索引擎
}
# 使用pip安装
pip install openhippo-memory
# 或使用Cargo编译
git clone https://github.com/openhippo/memory-engine.git
cd memory-engine
cargo build --release
from openhippo import MemoryEngine
# 初始化记忆引擎
memory = MemoryEngine(
storage_path="./memory_db",
embedding_model="text-embedding-3-small"
)
# 存储记忆
memory.remember(
agent_id="my-agent",
content="用户偏好使用深色主题,字体大小16px",
metadata={"type": "preference", "user_id": "user123"}
)
# 检索记忆
results = memory.recall(
agent_id="my-agent",
query="用户的界面偏好是什么?",
limit=5
)
print(results)
# 输出: [
# {"content": "用户偏好使用深色主题,字体大小16px", "score": 0.92}
# ]
// OpenClaw配置MCP记忆服务
{
"mcpServers": {
"memory": {
"command": "openhippo-mcp",
"args": ["--storage", "./memory_db"]
}
}
}
// 在Agent中使用记忆
const agent = new Agent({
name: "memory-agent",
memory: {
provider: "mcp",
server: "memory"
}
});
// 自动记忆对话
agent.onMessage(async (msg) => {
await agent.memory.remember(msg.content);
const relevant = await agent.memory.recall(msg.content);
return agent.reply(msg, { context: relevant });
});
# 启动REST服务
openhippo-rest --port 8080 --storage ./memory_db
# 调用API
curl -X POST http://localhost:8080/remember \
-H "Content-Type: application/json" \
-d '{
"agent_id": "my-agent",
"content": "用户喜欢简洁的代码风格",
"metadata": {"type": "coding_preference"}
}'
curl -X POST http://localhost:8080/recall \
-H "Content-Type: application/json" \
-d '{
"agent_id": "my-agent",
"query": "用户的编程风格偏好",
"limit": 3
}'
# 基准测试(10万条记忆)
记忆存储延迟: 5-10ms
向量检索延迟: 15-30ms (Top-5)
批量导入速度: 1000条/秒
存储占用: 约500MB (10万条)
内存占用: 约200MB (运行时)
| 场景 | 推荐指数 | 说明 |
|---|---|---|
| 个人助手Agent | ⭐⭐⭐⭐⭐ | 记忆用户偏好,提供个性化服务 |
| 客服Agent | ⭐⭐⭐⭐⭐ | 记住历史对话,避免重复询问 |
| 一次性任务Agent | ⭐⭐ | 无需持久记忆,增加复杂度 |
| 多用户Agent | ⭐⭐⭐⭐ | 需要按用户隔离记忆 |