Files
DevFlow/docs/02-架构设计/专项设计/跨会话记忆四层架构-设计-2026-09-29.md
T

3.6 KiB

跨会话记忆四层架构 — 实施设计

日期: 2026-09-29 | 决策: 用户拍板走重(四层养成层) | 参照: u-claw 分身养成层四层+目标快照机制(均生产验证) 前置: 会话内侧 L2 已修(WorkingContext 写入链+视图裁剪滚动摘要,dfa38f6 及 B 系后续);知识工具已注册(tools/knowledge.rs 待提交) 铁律(继承 u-claw 教训): L3 召回严禁进 system prompt——高频变更注入毁前缀缓存;跨会话记忆走工具按需查+低频结构化入口


一、四层现状与目标

层 现状 本设计补齐
L1 轮内 全量历史+预算+namespace 引用化,已 wired 不动
L2 跨轮 压缩摘要+WorkingContext 重锚定+裁剪滚动摘要(B 系落地中) 不动
L3 跨会话 零召回(新会话全空) 写入: 会话终态提炼进知识库;召回: 工具按需查+会话脉络卡
L4 跨重启 消息恢复但 working_context/namespace 丢失 working_context 持久化+namespace 懒重建+目标快照槽

二、L3 跨会话(核心新建)

写入侧: 会话终态提炼

  • 触点: 会话关闭/删除/压缩达标时,将本会话「目标/决策/结论」提炼为知识条目(复用 knowledge_inject auto_extract 管道,扩展触发时机从"每会话 1 次"到"终态必提炼一次")
  • 归属: 填 source_project 字段(表已有未用),项目维度可检索
  • 把关: 走已拍板的阈值晋升策略(high 直接发布/medium 复用晋升/low 留审核)

召回侧: 双通道(严禁自动进 prompt)

  1. 工具通道(主): agentic loop 注册 recall_memory(项目历史决策/目标/结论检索)——复用 tools/knowledge.rs 的检索实现,按 source_project 过滤+reuse_count 排序;agent 在需要上下文时按需调用,prompt 零污染
  2. 脉络卡(辅,用户侧): 新会话顶部轻量展示同项目近期会话的目标/决策摘要(前端读知识库,非 LLM 注入);用户点「带入上下文」才转为 @提及注入

三、L4 跨重启

  • working_context 持久化: 会话表扩展或 app_settings KV 存 WorkingContext JSON(goals/decisions/unresolved/version),会话恢复时反序列化回 ContextManager——压缩重锚定与目标钉扎跨重启连续
  • namespace 懒重建: 重启后 namespace_store 置空,首次命中引用时从 DB 原文重建(tooltip「已超出内存上限」占位消失)
  • 目标快照槽(对齐 u-claw goal.go L2 语义): 每会话维护 goal_snapshot(当前有效目标+updated_at+source),恢复/续接会话时按快照续,不重放消息流——中间被调整作废的目标不复活

四、实施批次

批 内容 依赖 量级
W1 working_context 持久化+namespace 懒重建(L4 最小闭环,重启不失忆) WorkingContext 已落地 中
W2 会话终态提炼进知识库+source_project 填充(L3 写入) 晋升机制(等 C3 配套落地) 中
W3 recall_memory 工具+会话脉络卡(L3 召回) tools/knowledge.rs 提交 小-中
W4 目标快照槽+恢复续接语义(L4 语义层) W1 中

顺序: W1 → W3 → W2 → W4(召回先行见效,写入依赖晋升策略配套)。每批独立可回滚,设计红线: 任何跨会话数据不得自动拼进 system prompt。

五、验证口径

  • W1: 重启应用后压缩重锚定/目标钉扎仍生效;namespace 引用可读原文
  • W2: 关会话后知识库新增 source_project 非空条目,符合置信分布
  • W3: 新会话问"这个项目之前定了什么"能调工具命中;prompt token 数不随历史会话增长
  • W4: 会话 A 调整目标后重启,续接时只认最终目标(时间序列用例,参照 u-claw 拍板用例)