Skip to content

Latest commit

 

History

History
276 lines (206 loc) · 11.9 KB

File metadata and controls

276 lines (206 loc) · 11.9 KB

PaperBot 记忆系统

跨平台记忆中间件 + 完整架构设计提案。基于 Manus 上下文工程、EverMemOS/Mem0/Zep/Letta 等主流实现、以及近期顶会论文的综合调研。


第一部分:已实现能力 — 跨平台记忆中间件

目标:把来自不同大模型平台(ChatGPT / Gemini / Claude / OpenRouter 等)的聊天记录统一解析、提炼为"长期记忆",并在后续对话里作为上下文注入,避免各平台记忆割裂。

核心概念

  • Source(来源):一次导入的聊天记录文件(会记录 sha256、平台、文件名、解析统计)。
  • Memory Item(记忆条目):从对话中提炼出的稳定信息,例如偏好、目标、约束、长期项目背景等。
  • Context(上下文块):把若干记忆条目格式化成可直接塞进 system prompt 的片段。

解析导入

  • ChatGPT 导出(conversations.json 结构,尽量容忍分支/缺字段)
  • Gemini / 各类 API 日志(宽松 JSON:支持多种常见结构)
  • 纯文本(User:/Assistant: 或中文 我:/助手: 前缀的松散格式)
  • 其它 JSON:尝试 {"messages": [{"role": "...", "content": "..."}]} 通用结构

记忆提炼

  • 默认:启发式规则(离线可用,不依赖 API)
  • 可选:LLM 抽取(需配置 API Key,失败自动回退规则)

API 端点

端点 方法 说明
/api/memory/ingest POST 导入聊天记录并抽取记忆
/api/memory/context POST 获取可注入的记忆上下文块
/api/memory/list GET 列出记忆条目
/api/memory/items/{item_id} PATCH 编辑记忆条目
/api/memory/items/{item_id} DELETE 删除记忆条目
/api/memory/metrics GET 记忆指标概览
/api/memory/metrics/{metric_name} GET 指标历史

Chat API 中启用记忆:POST /api/chat body 增加 user_id + use_memory: true

数据库

默认 SQLite:sqlite:///data/paperbot.db(可用 PAPERBOT_DB_URL 覆盖)。表:memory_sourcesmemory_items


第二部分:调研综述

外部系统调研

系统 架构 LoCoMo 核心思想
EverMemOS 4 层仿脑架构 92.3% 前额叶皮层+大脑皮层网络类比,当前 SOTA
Zep/Graphiti 时序知识图谱(Neo4j) 85.2% 双时态模型,P95 延迟 300ms
Letta 文件系统即记忆 74.0% 迭代文件搜索优于专用记忆工具
Mem0 向量+图双存储 64.2% 生产级 SaaS,自动记忆提取管线
memU 基于文件的 Agent 记忆 66.7% 面向 24/7 主动式 Agent

Manus 上下文工程核心原则

  1. KV-Cache 命中率是第一指标 — 缓存 vs 非缓存 token 成本差 10x
  2. 上下文即 RAM — LLM 是 CPU,上下文窗口是 RAM
  3. Raw > Compaction > Summarization — 可逆压缩优先
  4. 文件系统是无限记忆 — 上下文只保留引用
  5. 渐进式披露(Skills) — 三级加载:元数据 → 指令 → 资源

关键论文

论文 会议 关键贡献
A-MEM NeurIPS 2025 Zettelkasten 式自组织互联笔记网络
HiMem arXiv 2026.01 Episode + Note 两层层级 + 冲突感知重整合
Agent Workflow Memory ICML 2025 从历史轨迹归纳可复用工作流模板
RMM (Reflective Memory) ACL 2025 前瞻/回顾双向反思 + RL 精化检索
Memoria arXiv 2025.12 SQL + KG + 向量三存储混合

第三部分:现状分析

现有架构

src/paperbot/memory/
├── schema.py           # NormalizedMessage, MemoryCandidate, MemoryKind (11种)
├── extractor.py        # 双策略提取:LLM + 启发式 (中文正则)
├── eval/collector.py   # 5 个 P0 指标
└── parsers/            # 多格式聊天记录解析

src/paperbot/context_engine/
├── engine.py           # ContextEngine — build_context_pack()
├── track_router.py     # TrackRouter — 多特征 track 评分
└── embeddings.py       # EmbeddingProvider (OpenAI)

src/paperbot/infrastructure/stores/
├── memory_store.py     # SqlAlchemyMemoryStore (CRUD + 粗粒度搜索)
└── models.py           # MemoryItemModel, MemorySourceModel, MemoryAuditLogModel

现有问题

问题 严重度 说明
无向量检索 search_memories() 使用 SQL CONTAINS + 内存 token 评分,无语义匹配
无时间感知 记忆无衰减机制,无时序推理能力
无记忆整合 记忆只有 CRUD,无 consolidation/forgetting
层级耦合 ContextEngine 直接依赖 SqlAlchemyMemoryStore
无跨记忆关联 记忆项之间无链接关系

现有优势(可复用)

  • 完整的 schema 设计(MemoryKind 11 种、scope、confidence、status lifecycle)
  • 审计日志(全量变更记录)
  • PII 检测与脱敏
  • 基于 confidence 的自动审核
  • 使用量追踪(last_used_at, use_count)
  • 评估指标框架

第四部分:架构设计

设计原则

  1. 记忆即基础设施 — 独立 infra 层服务,不依赖业务模块
  2. 混合存储 — 向量(语义)+ 结构化(关系/时间)+ 文件(全文)
  3. 层级记忆 — Episode Memory(具体事件)+ Note Memory(抽象知识)
  4. 时间感知 — 双时态模型(事件时间 + 录入时间)
  5. 渐进式上下文 — 三级加载控制 token 消耗
  6. 自组织链接 — Zettelkasten 式记忆项双向关联

分层架构

┌── Application Layer(业务消费者) ────────────────────────┐
│  DailyPaper · Judge · TopicSearch · ScholarPipeline      │
│        ↓                                                  │
│  Context Assembly Service(上下文装配)                     │
└──────────────────────────┬────────────────────────────────┘
                           │ MemoryService Protocol
┌──────────────────────────│────────────────────────────────┐
│  Memory Infrastructure Layer                              │
│                          │                                │
│  MemoryService (Facade)                                   │
│  - write / recall / forget / consolidate / link           │
│           │            │              │                    │
│     Extractor     Retriever     Consolidator              │
│      (Write)       (Read)       (Maintain)                │
│           │            │              │                    │
│  ┌── Storage Backends ────────────────────────────────┐   │
│  │  SQLite (结构化) · Vector (语义) · File (全文)      │   │
│  └────────────────────────────────────────────────────┘   │
└───────────────────────────────────────────────────────────┘

记忆类型体系

Memory Types
├── Episode Memory(具体事件)
│   ├── paper_read / search_query / feedback
│   ├── workflow_run / interaction
│
└── Note Memory(抽象知识)
    ├── profile / preference / interest / fact
    ├── goal / constraint / decision / insight

Episode → Note 整合规则:多次同领域 paper_read → interest Note;多次 like 同 venue → preference Note 等。

存储层设计

新增 SQLite 表:memory_links(记忆关联)、memory_embeddings(记忆向量)。扩展 memory_items 增加 memory_layerevent_atembedding_iddecay_factor 字段。

向量检索策略:Phase 1 SQLite + numpy cosine(<5000 条延迟 <50ms),Phase 2 sqlite-vec,Phase 3 可选 Qdrant/FAISS。

检索管线(Hybrid Recall)

Query → ┌── 向量检索(语义匹配) ─── weight: 0.50
        ├── 关键词匹配(BM25/token)── weight: 0.25
        └── scope/tag 精确过滤    ── weight: 0.25
                    │
             Merge & Re-rank → Time Decay → Token Budget Trim

渐进式上下文管理(三级加载)

级别 何时加载 内容 Token 消耗
L0: 元数据 每次 LLM 调用 用户名 + track 名 ~50 tokens
L1: 画像 task 开始时 profile + preferences ~300 tokens
L2: 任务记忆 query 确定后 recall(query) top-k ~1200 tokens
L3: 深度上下文 仅在需要时 insights + linked items 按需分配

第五部分:迁移计划

Phase 0: 接口定义 + 向量化(无破坏性变更)

  • memory/protocol.py — MemoryService Protocol
  • memory/retriever.py — 向量检索 + 混合检索
  • memory_embeddings + memory_links 表迁移
  • 扩展 MemoryItemModel 新字段
  • add_memories() 中异步计算 embedding
  • search_memories() 中加入向量检索分支

Phase 1: 分离 Facade + Consolidator

  • memory/service.py — MemoryServiceImpl (Facade)
  • memory/consolidator.py — 记忆整合器
  • Episode/Note 双层记忆类型支持
  • recall() 混合检索管线
  • link() 记忆关联
  • 迁移 ContextEngine 记忆逻辑到 ContextAssemblyService

Phase 2: 业务集成 + 自动记忆生成

  • DailyPaper 自动写入 Episode
  • Judge 高分论文洞察写入 Note
  • feedback 路由写入 Episode
  • Judge prompt 注入用户画像和研究偏好
  • Track Router 使用向量化记忆
  • Consolidator 注册到 ARQ Worker

Phase 3: 高级功能

  • 时间衰减调度 / 冲突检测 / 自动链接发现
  • 记忆导出/快照
  • 可选升级到 sqlite-vec 或 Qdrant

文件清单

文件 类型 Phase 说明
src/paperbot/memory/protocol.py 新建 0 MemoryService Protocol
src/paperbot/memory/retriever.py 新建 0 向量检索 + 混合检索
src/paperbot/memory/service.py 新建 1 MemoryServiceImpl (Facade)
src/paperbot/memory/consolidator.py 新建 1 记忆整合器
src/paperbot/memory/types.py 新建 0 数据类定义
src/paperbot/infrastructure/stores/models.py 修改 0 扩展模型
src/paperbot/infrastructure/stores/memory_store.py 修改 0-1 向量检索/链接 CRUD
src/paperbot/application/services/context_assembly.py 新建 1 上下文装配服务

参考文献

系统与框架

学术论文

  1. A-MEM: Agentic Memory for LLM Agents — NeurIPS 2025
  2. HiMem: Hierarchical Long-Term Memory — arXiv 2026
  3. Agent Workflow Memory — ICML 2025
  4. RMM: Reflective Memory Management — ACL 2025
  5. Memoria: Scalable Agentic Memory — arXiv 2025
  6. TiMem: Temporal-Hierarchical Memory — arXiv 2026
  7. Collaborative Memory — ICML 2025
  8. Survey of Context Engineering — arXiv 2025

Benchmarks

  • LoCoMo — 300-turn 长对话记忆评估
  • LongMemEval — 500 问题,5 核心记忆能力 (ICLR 2025)