课题二:跨 Session 上下文共享与连续性

优先级:P1 — 跨 channel/session 上下文共享是 Agent 走向生产环境的刚需

当前情况

  • 理论设计完成:三层架构(预处理→增量倒排索引→路由懒加载)
  • 调研完成:对比 8+ 社区方案(Graphiti、Mem0、Letta、LangMem、CrewAI 等),结论是无现有方案同时满足所有需求
  • 记录 22 个待探索问题,涵盖架构、路由、群聊、安全、运维
  • 工程实现尚未开始

可探索方向

  • 预处理层的分块粒度对路由精度的影响
  • 倒排索引的增量更新策略(触发频率、合并时机)
  • 懒加载的触发条件——多少引用重叠才值得加载
  • 并发读写冲突的解决方案
  • 冷备数据的压缩比与检索速度 trade-off
  • 课题三(记忆分层)完成后,与课题二的索引层如何合并

问题定义

用户通过不同渠道(Telegram、Web、微信等)或多个 session 与同一个 agent 交互时,agent 需要:

  1. 跨 session 延续对话上下文
  2. 跨 channel 保持一致的记忆和状态
  3. 不同 agent 之间共享用户画像

核心挑战

  • 上下文窗口有限,不能无限塞历史
  • 信息过时/遗忘策略
  • 多 channel 并发写入的一致性
  • 记忆的优先级和分层(短期 vs 长期)

场景

场景 1:跨 channel 实体引用

agent 在 channelA 和张三聊天,同时在 channelB 和李四聊天。李四在 channelB 提及”张三”时,agent 需要按需获取 channelA 的上下文(懒加载)。

关键点:

  • 实体(人名”张三”)触发跨 channel 上下文检索
  • 懒加载:不需要提前合并所有 channel 的上下文,只在需要时拉取
  • agent 需要知道”张三”这个实体在 channelA 中有相关对话

场景 2:群聊多话题多角色交织

agent 在群里同时服务多人。张三问项目架构、李四问部署问题,话题交叉出现。需要:

  • 根据话题涉及人物的权重进行上下文路由
  • 维护话题的逻辑顺序(同一话题的讨论流不被其他话题打断)
  • 处理第三方中途加入已有话题讨论(王五中途插入话题 A)

权重策略维度:

  • 时间衰减(话题的时效性)
  • 参与度(某人在话题中的活跃程度)
  • 话题热度(同一话题被提及的频率)
  • 角色相关性(某人与此话题的关联度)

与场景 1 对比:

  • 场景 1:跨 channel,单实体引用触发路由
  • 场景 2:同 channel 多输入流交织,需先分拣再路由

核心挑战

  • 上下文窗口有限,不能无限塞历史
  • 信息过时/遗忘策略
  • 多 channel 并发写入的一致性
  • 记忆的优先级和分层(短期 vs 长期)

架构思路

上下文预处理 + 增量倒排索引

原始上下文(对话流)
    │
    ▼
┌─────────────────────┐
│  上下文预处理层       │
│  - 结构分块           │
│  - 实体提取           │
│  - 关键词抽取         │
│  - 语义压缩           │
└──────┬──────────────┘
       │
       ├──────────────┐
       ▼              ▼
┌─────────────┐ ┌─────────────┐
│ 增量上下文    │ │ 历史压缩上下文 │
│ (hot path)   │ │ (cold path)  │
└──────┬──────┘ └──────┬──────┘
       │              │
       ▼              ▼
┌───────────────────────────┐
│  增量维护的倒排索引        │
│  关键字 → [channel#块ID]  │
│                           │
│  - 对增量上下文实时索引     │
│  - 对压缩后上下文批量重索引  │
│  - 定时后台压缩+索引优化    │
└───────────────────────────┘

上下文压缩策略

  • 定时任务(如每 N 条消息或每天)
  • 压缩方式:提取核心要点,而非全文摘要
  • 原始消息冷备:压缩后原始数据移到冷存储,不做删除
  • 审计回溯:压缩上下文出问题时,可与冷备原始消息对比校对
  • 压缩后的上下文类型变更:原始块 → 要点块
  • 索引更新:旧条目替换为压缩后的新条目

研究方向

  • 分层记忆架构(working / short-term / long-term)
  • 记忆检索与压缩策略
  • 跨 channel 事件同步机制
  • 遗忘与过期策略
  • 实体为中心的上下文路由
  • 懒加载上下文策略

现有方案调研(2026-05)

Graphiti / Zep

同一家公司出品(Zep AI),分别是开源引擎和商业云服务。

核心架构:时序知识图谱

  • 数据以实体(节点)+ 事实(边)组织,每条边有有效期窗口(valid_from / valid_to)
  • 信息变更时旧事实标记失效但不删除——可回溯”当时的事实是什么”
  • 混合检索(语义向量 + BM25 + 图遍历),查询不调 LLM,P95 <200ms
  • 增量更新,不批量重算

对标分析

设计维度Graphiti差距
时序追踪✅ 有效期窗口,天然处理矛盾信息覆盖
实体图谱✅ 实体+关系图
混合检索✅ 向量+BM25+图遍历
增量倒排索引❌ 只有向量+图遍历,无纯文本倒排你的设计补充
冷热路径❌ 全量入库,无分离你的设计补充
channel 路由❌ 无 channel 概念你的设计补充
懒加载❌ 全部索引入库,不按需加载你的设计补充
压缩+冷备审计⚠️ 保留时序历史,但原始消息非冷备设计你的设计补充

结论:Graphiti 是现有方案中与理论设计重叠度最高的(实体图谱+时序),但缺倒排索引和 channel 路由懒加载。

参考Zep | Graphiti GitHub | Best AI Agent Memory Frameworks 2026

Mem0

向量优先记忆方案,~48K stars。用户→session→记忆三层结构,向量检索+时间衰减。增量索引做在向量维度,不支持倒排索引。图特性锁在 $249/mo Pro 版。

Letta(原 MemGPT)

受操作系统虚拟内存启发,主上下文(working memory)↔ 外部存储(archival memory)自动交换。冷热路径思想与你的设计一致,但场景局限于单 agent 长上下文管理,无 channel 概念。

LangMem

LangChain 生态,Store 层按 namespace(user_id×session_id)组织,支持跨 session 记忆合并。不足之处:与 LangChain 深度耦合,倒排索引需额外搭建。

其他方案

  • CrewAI:多 agent 共享短期/长期/实体记忆,但纯内存向量存储,无持久化索引
  • AutoGen / Semantic Kernel:偏 RAG 集成,非原生上下文管理
  • GraphRAG(Microsoft):静态文档摘要,非动态记忆,批量处理非增量

调研结论

现有方案各自覆盖了部分设计维度,但没有项目同时做到:倒排索引 + 冷热路径 + 实体路由 + 懒加载 + 压缩冷备审计。你的设计填补了一个明确空白。

来自 codegraph 的启发

codegraph(本项目的代码索引工具)与你的设计有相似的架构思路——用树解析器构建代码符号的知识图谱,支持毫秒级查询,每次写入后约 500ms 增量更新索引。它证明了几点:

  • 增量索引在工程上是可行的:codegraph 对代码文件的实时监听 + 增量更新,等同于你的设计中对对话上下文的实时索引
  • 冷热分离天然存在于代码场景:codegraph 索引是热的,git history 是冷的——与你的热上下文+冷备设计完全对应
  • 图结构 vs 倒排:互补而非替代:codegraph 用图结构存储符号关系(谁调用了谁),但不替代全文搜索。你的设计可以考虑图+倒排双索引的方案

可以考虑将 codegraph 的增量索引机制作为实现参考,尤其它的文件监听 + 增量更新策略。

扩展方向(2026-05 补充)

Memory Portability(记忆可移植性)

  • 切换平台 = “lobotomizing” Agent——更换服务商意味着记忆无法迁移
  • 记忆格式标准化:如果 memory 有通用标准,Agent 可以在不同平台上携带记忆
  • 与 课题二十(自回归模型局限)的关系:记忆不能替代推理能力,但能减少对推理的依赖

隐私-个性化张力

  • Agent 需要记住用户偏好才能个性化服务
  • 但跨设备/跨平台记住用户信息触及隐私边界
  • 技术上可实现 vs 法律上允许的差距

经典理论映射

香农信息论(Shannon, 1948)为跨 session 上下文共享提供了理论基底。上下文窗口是一个有噪声的信道,信息在其中传递时会衰减和失真:

  • 信道容量:上下文窗口是有限的带宽资源。每轮对话占用带宽,历史信息被压缩或丢弃才能为新信息腾出空间。信道容量决定了”多少历史可以无损保留”
  • 率失真理论:上下文压缩的策略(原始消息→要点块)本质上是一个率失真优化问题——在信息保留率和压缩率之间寻找最优折衷。冷备 + 压缩索引的设计正好对应率失真理论的分级编码策略
  • 信源编码:增量倒排索引是一种信源编码——对原始对话流做特征提取,去除冗余信息,保留最大信息密度的部分
  • 互信息:懒加载的判断标准可以用互信息量化——“当前 channel 的上下文与当前问题的互信息量”是否超过加载阈值

信息论视角将上下文共享从”工程方案”提升为”有理论边界的问题”:信道容量的上限就是上下文共享的根本限制,任何工程方案都是在逼近这个极限——无论索引多高效、压缩多聪明,香农已经划定了不可跨越的天花板。

关联课题

  • 课题三(分层记忆系统) — 上下文共享的底层依赖:上下文如何通过分层记忆实现存储、索引和检索
  • 课题四(Agent 执行沙箱与 Harness 工程) — Harness 需要支持跨 session 的上下文持久化和恢复
  • 课题十二(Agent 可解释性与推理透明化) — 上下文路由决策(懒加载触发、实体提取)需要可解释
  • 课题十九(Agent 开发工作流) — 开发调试中跨 session 上下文的模拟和测试需求
  • 课题二十一(Agent 通信协议 A2A/MCP) — 多 agent 间上下文共享依赖标准化通信协议

补充资料

参考资料