课题二:跨 Session 上下文共享与连续性
优先级:P1 — 跨 channel/session 上下文共享是 Agent 走向生产环境的刚需
当前情况
- 理论设计完成:三层架构(预处理→增量倒排索引→路由懒加载)
- 调研完成:对比 8+ 社区方案(Graphiti、Mem0、Letta、LangMem、CrewAI 等),结论是无现有方案同时满足所有需求
- 记录 22 个待探索问题,涵盖架构、路由、群聊、安全、运维
- 工程实现尚未开始
可探索方向
- 预处理层的分块粒度对路由精度的影响
- 倒排索引的增量更新策略(触发频率、合并时机)
- 懒加载的触发条件——多少引用重叠才值得加载
- 并发读写冲突的解决方案
- 冷备数据的压缩比与检索速度 trade-off
- 课题三(记忆分层)完成后,与课题二的索引层如何合并
问题定义
用户通过不同渠道(Telegram、Web、微信等)或多个 session 与同一个 agent 交互时,agent 需要:
- 跨 session 延续对话上下文
- 跨 channel 保持一致的记忆和状态
- 不同 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 间上下文共享依赖标准化通信协议
补充资料
- Honcho 源码分析 + 集成方案 — 完整代码审查(2026-06-01),含 Dreaming/Deriver/Dialectic 模块详析、ACL 集成方案、自研 vs 集成对照