在多代理 LLM 系统(如 CrewAI 或 AutoGen)中,代理间记忆共享往往面临写放大、高并发读写与长期积累的挑战。Memori 项目通过 SQL 数据库构建的类日志结构化合并树(LSM-tree)机制,提供高效的持久化分层记忆层:对话日志顺序追加至 chat_history 表,形成 L0 层;经 Memory Agent 处理后归档至 long_term_memory,形成 L1+ 层;Conscious Agent 周期性合并提升至 short_term_memory,作为高速缓存层。这种设计借鉴 LSM 的分层写与有序合并,避免了 B-tree 的随机写瓶颈,实现多代理场景下 O(log N) 检索与 compaction。
核心观点在于:Memori 的“日志结构化”并非传统 SSTable,而是将 LLM 会话视为不可变日志追加,利用多代理协作实现分层 compaction 与检索优化。chat_history 表作为写日志,记录完整 user_input、ai_output、timestamp 与 namespace,支持多代理隔离(每个代理或用户独占 namespace)。Memory Agent 实时解析会话,提取实体(memory_entities 表)、关系(memory_relationships 表)与分类(facts、preferences、skills),计算 importance_score,存入 long_term_memory。架构中,short_term_memory 仅存高频精华,配备 recency_score、frequency_score 与 expires_at,支持 TTL 自动过期。
证据显示,这种分层在多代理系统中高效:例如 CrewAI 示例中,多个代理共享 namespace,Retrieval Agent 动态搜索 top-5 记忆注入上下文,减少 token 消耗 80%[GitHub Memori]。Conscious Agent 每 6 小时后台分析全量 long_term_memory,基于模式识别(如实体共现频率)提升至 short_term,模拟人类“工作记忆”优先级。数据库 schema 优化关键:FTS5 虚拟表跨 summary、entities 全文检索;复合索引 idx_memory_category、idx_memory_importance 加速过滤。实际部署中,PostgreSQL 连接池大小 20,批处理存储降低 I/O。
落地参数与清单需精确调优 compaction 与检索,避免内存膨胀或延迟。
Compaction 参数配置(Conscious Agent):
- 触发周期:默认 6h,自定义 via trigger_conscious_analysis(),高负载降至 2h。
- 提升阈值:importance_score > 0.7(Pydantic 结构化输出,范围 0-1);frequency_score > 3(过去 24h 提及次数);recency_score = 1 - (age_days / 30),保留 30 天内 >0.5。
- 容量限:short_term_memory 限 1000 条,超阈值强制降级(移回 long_term,置 retention_type='archived')。
- 合并策略:实体关系强度 >0.6 时,融合 summary(如“用户偏好 Flask 而非 FastAPI”),减重冗余 40%。
- 回滚:分析失败 fallback 至纯 recency 排序,日志记录 MemoriError。
检索参数(Retrieval Agent & Auto Mode):
- 查询限:limit=5,注入前 token 检查 <2000(essential 2 条 + relevant 3 条)。
- 搜索策略:semantic 先(query intent 解析),fallback 关键词;relevance_scores >0.6 过滤。
- 命名空间隔离:namespace='multi-agent-prod',代理间共享仅显式允许。
- 缓存:Redis 辅助,TTL 1h,命中率目标 >70%。
- 监控点:Prometheus 指标 - memory_growth(DB 大小/日)、agent_success_rate(>95%)、context_tokens_avg(<300)。
多代理部署清单:
- 初始化:Memori(database_connect='postgresql://...', conscious_ingest=True, auto_ingest=True),enable() 拦截 LiteLLM。
- Schema 建置:initialize_schema() 创表索引,FTS5 on long_term_memory。
- 代理协作:Memory Agent 后置处理;Retrieval 前置注入;Conscious 后台 celery/cron。
- 规模扩展:分表 namespace;读写分离(PostgreSQL replicas);compaction 并行化(多 Conscious 实例)。
- 风险缓解:连接池 50,重连 backoff 指数(1s→60s);API 限流 fallback gpt-4o-mini。
- 测试:模拟 10k 会话,验证 short_term 占比 <5%,检索延迟 <200ms。
此 LSM-like 设计在 Memori 中证明:SQLite 单机持 1M+ 记忆,PostgreSQL 集群超 10M,无 vendor lock-in。相比纯向量 DB,SQL 原生查询审计性强,成本降 90%。生产中,监控 short_term 命中率 >60%,否则调高提升阈值。
资料来源:
[1] https://github.com/GibsonAI/Memori
[2] https://memorilabs.ai/docs/open-source/architecture
(正文字数:1028)