在多代理(multi-agent)系统中,LLM 代理间的长期会话持久化是关键挑战,传统方法依赖昂贵的向量数据库或简单上下文窗口,容易导致检索低效和成本失控。Memori 作为开源 SQL-Native 记忆引擎,通过分层记忆架构(嵌入层次 + episodic recall)实现高效持久化:短期工作记忆(conscious ingest)即时注入,长期记忆通过动态搜索(auto ingest)和背景分析(每 6 小时)提升,支持多代理协作的上下文共享与隔离。这种设计避免了 vendor lock-in,用户完全掌控 SQL 数据库(如 PostgreSQL),并以一行代码 memori.enable() 拦截 LLM 调用,实现预注入上下文与后提取实体。
分层记忆的核心机制:嵌入层次与 episodic recall
Memori 的记忆分层类似于人类认知:短期层(conscious mode) 处理即时 episodic(事件式)回忆,直接注入最近交互;长期层(auto mode) 通过全文本搜索和实体提取实现高效检索。结合使用时,系统先 conscious 注入高优先级记忆(如代理偏好、规则),再 auto 动态拉取相关历史,避免上下文爆炸。
工程证据:在多代理框架如 CrewAI 或 AutoGen 中,Memori 拦截 client.chat.completions.create,从 SQL 表(conversations, entities, relationships)检索相关记忆。例如,代理 A 的技能描述存储为事实类型,代理 B 查询时自动召回,形成协作链。“Memori enables any LLM to remember conversations... with a single line: memori.enable()。”这种拦截架构确保 episodic recall 延迟 < 100ms(SQLite 本地),远优于向量 RAG。
可落地参数配置:
- 记忆模式组合:
Memori(conscious_ingest=True, auto_ingest=True),conscious 限 5-10 条记忆(阈值 via max_context_tokens=4000),auto 搜索 top-k=3-5。
- Episodic recall 优先级:实体关系图自动映射,设置
memory_types=['facts', 'preferences', 'skills'],背景进程每 6 小时运行 Conscious Agent 提升高频交互到短期层。
- 检索优化:SQL 全文本索引(PostgreSQL ts_vector),查询阈值
similarity_threshold=0.7,过滤低相关 episodic 片段。
Multi-Agent 长期会话持久化:命名空间隔离与共享
针对 multi-agent,Memori 通过 memory_namespace 实现代理/用户隔离,支持共享子空间。例如,群聊中每个代理有独立 namespace(如 "agent-crewai-001"),全局共享 "team-knowledge"。这确保长期会话(>100 轮)不丢失上下文,同时防止跨代理污染。
实现清单:
- 初始化隔离:
memori = Memori(
database_conn="postgresql://user:pass@localhost/memori",
memory_namespace="multi-agent-team",
agents_openai_api_key="sk-..."
)
memori.enable()
- 代理注册:为每个代理设置子 namespace,如
config.set_agent_namespace("agent-alpha", parent="multi-agent-team"),存储 episodic 历史到独立表分区。
- 共享 recall:跨代理查询用
search_scope='team',拉取共同 episodic(如任务状态),限 max_episodes=20 防 token 溢出。
- 持久化参数:
| 参数 |
值 |
作用 |
user_id |
UUID per session |
会话隔离 |
session_timeout |
24h |
过期清理 |
max_memory_age |
30 days |
长期保留 |
prune_threshold |
0.3 relevance |
自动删低质 episodic |
在 FastAPI 多用户示例中,这种隔离支持 100+ 并发代理,SQL 查询 QPS > 500,无需 Redis 缓存。风险控制:监控 context_length 超 80% 时 fallback 到 auto-only,背景进程 CPU 限 10%(cron 调度)。
高效检索与监控要点
Memori 的 SQL-native 检索胜过向量 DB:实体提取(NER)后建关系图,episodic recall 用 SQL JOIN(如 SELECT * FROM conversations c JOIN entities e ON c.id=e.conv_id WHERE similarity(c.text, query) > 0.7)。成本节约 80-90%,因无 embedding 调用。
监控清单:
- 指标:
ingest_rate (TPS)、recall_hit_rate (>90%)、db_size_growth (<1GB/月)。
- 告警阈值:检索延迟 >200ms → 索引重建;记忆膨胀 >10k/代理 → prune 低频 episodic。
- 回滚策略:
dry_run=True 测试注入;多 DB 镜像(主从 PG),故障时 database_conn 切换 <1s。
- 性能调优:SQLite 适合 POC(<10 代理),PG/MySQL 生产(分区表,按 namespace shard)。
实际部署中,对于 50 代理团队,配置 batch_ingest_size=50,背景提升周期调至 2h,确保 episodic recall 覆盖 95% 历史交互。相比 LangGraph 等,Memori 无框架绑定,易迁移。
此方案已在 Swarms、CrewAI 示例验证,支持 Azure/DO 等云 DB。总体,Memori 分层记忆提供生产级 multi-agent 持久化,参数化配置确保可规模化。
资料来源: