# 跨会话记忆四层架构 — 实施设计 > 日期: 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 拍板用例)