Files
DevFlow/docs/02-架构设计/专项设计/跨会话召回四层架构-设计-2026-10-11.md
lxy cb23061088 新增: 跨会话召回四层架构与脉络卡
- 会话终态提炼: 删除前+停靠双挂点,快照与清水位同临界区
- 目标快照: 恢复引导按最终有效意图生成,旧目标不复活
- 知识检索项目维度软排序,WorkingContext 持久化迁移
- 脉络卡: published 知识按项目聚合纯读侧,带入上下文经输入框显式注入
- 压缩与缓存能力在主循环/子代理/提示词三面接线
- 两份专项设计文档与看板销账
2026-10-11 22:27:20 +08:00

24 KiB

跨会话召回四层架构 — 设计

日期: 2026-10-11 | 状态: 设计稿(待拍板) | 勘察: 只读实测锚点 决策背景: 用户拍板决策单 C1 走 B 重量路线(对齐 u-claw 分身养成层四层架构), 推翻原「先 A 后 B」建议(见 aichat上下文管理-派工与决策单-2026-09-29.md C1)。 前序文档: 跨会话记忆四层架构-设计-2026-09-29.md(首版四层稿, W1-W4 批次均未实施)与跨会话召回最小闭环-设计-2026-10-04.md(已拍板并落地, 构成本设计的存量底座)。本文档是 09-29 首版按 2026-10-11 现状的重勘与收编, 实施以本文档为准。 铁律(继承 u-claw, 09-29 首版已立): 跨会话召回内容严禁进 system prompt 与常驻组装段, 只走工具按需查。工具描述可进 system(静态文本, 属稳定缓存前缀), 召回内容不进。u-claw 原案教训: 频繁变更的注入毁 provider 前缀缓存。 勘察基线: 2026-10-11 工作区。crates/df-ai 的 context/mod.rs 与 context_helpers.rs 有并行代理在改, 引用行号实施前须复核。


一、四层口径与 u-claw 的对齐

u-claw 分身养成层原案按数据流阶段分层(捕获/精炼/召回/验证, 见 memory project-uclaw-avatar-layers); devflow 侧 09-29 首版起按记忆的时间半径分层(轮内/跨轮/跨会话/跨重启), 本设计沿用时间半径口径, 理由是它与 devflow 现有基建一一对应, 逐层可独立验收。两套口径的语义交点在第三层: u-claw 的「召回严禁进 system prompt」铁律原样继承, 并在 devflow 语境下收紧(u-claw 原案保留了低频 CLAUDE.md 摘要注入通道, rollover 级更新保缓存; devflow 侧跨会话召回不做任何形式的自动注入, 连低频摘要注入也不要, 只走工具)。

u-claw 阶段口径 devflow 时间半径口径 对应关系
L1 捕获(hooks 零延迟) L1 轮内 轮内上下文采集与组装
L2 精炼(信号过滤+小模型) L2 跨轮 压缩精炼+WorkingContext 回填
L3 召回(严禁进 system prompt) L3 跨会话 本设计主体
L4 验证(观察项) L4 跨重启 目标快照+恢复语义(验证语义落在恢复续接正确性)

二、四层在 devflow 的映射(存储/写入/读取/生命周期/现状)

2.1 L1 轮内(现状已建, 本设计不动)

  • 存储载体: per_conv 内存(ContextManager.messages, crates/df-ai/src/context/mod.rs)+ ai_conversations.messages 落库。
  • 写入时机: 每轮 push, 大工具结果引用化入账(src-tauri/src/commands/ai/audit/mod.rs:1184-1191)。
  • 读取通道: 每轮组装, 滑窗 build_for_request(context/mod.rs:185)+ system 段 build_runtime_prompt(agentic/mod.rs:3042)。
  • 生命周期: 会话级, 随会话存亡。
  • 现状标注: 分层组装器方案(上下文分层组装器-落地方案-2026-10-10.md)管辖此层与组装结构, 本设计零改动。

2.2 L2 跨轮(现状已建, 2026-10-11 新增压缩存档, 本设计不动)

  • 存储载体: 内存视图(compressed 状态标记/淘汰摘要)+ 压缩摘要锚点(system anchor 尾部追加, agentic/context_lifecycle.rs:335)+ 压缩原文存档(<data_dir>/context-archive/<conv_id>-archive.jsonl 追加写, crates/df-ai/src/context/archive.rs:35-39)。
  • 写入时机: 压缩水位 available*6/10 < history_tokens 触发(context_lifecycle.rs:133-135), 后台 LLM 产 nl_summary+json_card; WorkingContext 写入链 begin_turn(commands/chat.rs:950、:2444)与 sync_after_compress(context_lifecycle.rs:337); 存档追加写(archive.rs:44), 开关 df-ai-compress-recall 默认开(commands/ai/prompt.rs:709-718)。
  • 读取通道: 摘要常驻锚点(会话内每轮可见); 原文经摘要尾部召回句柄行 read_file 按需回读(archive.rs:72-74)。
  • 生命周期: 会话级; 存档文件跨重启仍在, 会话删除级联清理是已记录缺口(archive.rs:7 注释自证「留待后续挂点」)。
  • 现状标注: 压缩可召回 2026-10-11 刚落地(工作区未提交); 记忆卡四类卡(C-m1, 上下文三层记忆-设计-2026-10-04.md)设计已立未实施, 落地后是 L2 的结构化产物。

2.3 L3 跨会话(本设计主体)

存量底座(A 路线已落地部分, 2026-10-11 实测):

  • 写入: 自动提炼 maybe_spawn_extraction(commands/ai/knowledge_inject.rs:660)挂在正常收敛点(agentic/mod.rs:1636, save 之后), 水位制防重(EXTRACT_WATERMARKS :70, 新增 10 条用户消息起提 :52, 提炼窗口 40 条 :48), 产 candidate 带 source_project 弱推断归属(:1180、:1212)与 source_ref 会话级溯源(:1216-1219); knowledge_insert 工具(commands/ai/tools/knowledge.rs:95, 固定 candidate, 但 handler 无会话上下文拿不到 conv_id, source_ref 记 "ai-chat" 渠道兜底, :13-16 注释自证)。
  • 读取: 注入侧 auto_inject top-3 带项目软排序(knowledge_inject.rs:520-521, 检索走 search_keywords_scoped, crates/df-storage/src/crud/idea_repo.rs:834, 同项目第一档/全局第二档/异项目第三档); 工具侧 knowledge_search(tools/knowledge.rs:51, 仅 published, 分词检索, 单条 content 截 500 字 :41, 空结果带可执行指引 :72-77)。
  • 把关: knowledge_promote 显式转正工具(tools/knowledge.rs:165), 复用达标自动晋升(默认关, knowledge_inject.rs:549-565), 生命线留痕(KnowledgeTimeline)。

缺口(本设计补齐): 会话终态提炼(删除/停靠时点无提炼挂点)、工具写入的归属补全(缺会话上下文注入机制)、工具读取的项目维度(knowledge_search 未接 scoped 检索)、用户侧脉络卡通道。详见第三节。

2.4 L4 跨重启(持久化面盘点)

已有:

  • 消息与上下文重建: messages 落库 + restore_from_messages(context/mod.rs:310 附近)。
  • 目标钉扎持久化(G1 已落地): pinned_goals 每轮 save 落库(commands/ai/conversation.rs:466-468), 会话载入恢复(commands/conversation.rs:492-495)。
  • 任务边界: boundary_json(V45, crates/df-storage/src/migrations.rs:1366)。
  • 断点续跑(V49): loop_state 列(migrations.rs:1446), 启动扫描 running 改 parked(src/state.rs:455-460), 恢复链 ai_list_recoverable/ai_recover_parked/recover_parked_inner(commands/conversation.rs:292-337), 前端 G5 可恢复分组(src/components/ai/ConversationSidebar.vue:208), B5 无人值守引擎自动恢复优先于领单(agentic/unattended.rs:1017-1018)。
  • 收敛快照事件: AiCompleted 透传 pinned_goals_snapshot(agentic/mod.rs:1663)。

缺口(本设计补齐, 详见第四节): WorkingContext 不持久化(df-storage 全仓零引用, 重启后 goals/decisions/unresolved 全丢, 压缩重锚定与目标钉扎跨重启断裂); namespace_store 重启清空(agentic/mod.rs:1975 注释自证「重启后 namespace 清空」, 懒重建未做); 目标快照槽语义缺失(看板 D4 挂账); 压缩存档文件无删除级联。


三、L3 主体设计

3.1 写入侧: 三通道加一挂点

通道 时机 状态
自动提炼 每轮正常收敛后, 水位制(10 条新用户消息起提) 已落地
工具沉淀 用户说「记住/记一下」时 agent 调 knowledge_insert 已落地, 归属待补
显式转正 用户认可时 knowledge_promote 已落地
会话终态提炼(新增) 会话删除前 + parked 停靠时 本设计新增

终态提炼设计:

  • 触发点两处: ① ai_conversation_delete(commands/conversation.rs:854)删除动作前, 后台 fire-and-forget 执行, 提炼失败或未完成不阻塞删除(删除是用户显式意图, 延迟它属于体验倒退; 未及落库的条目随会话消失是可接受损失, 与「历史数据默认保留」不冲突, 因候选未及产生即无产物); ② emit_task_parked 停靠三件套处(agentic/mod.rs:1464-1477), 停靠意味着任务未完结, 此刻的目标/决策/未解项最有提炼价值。手动触发已有(trigger_extraction_now, knowledge_inject.rs:819), 不重复建。
  • 强制清水位: 复用 trigger_extraction_now 的清哨兵语义(:827-828), 终态提炼不受「10 条新用户消息」水位限制, 短会话有实质产出也应提炼一次; 防重仍走 InFlight 水位, 与可能在飞的常规提炼互斥。
  • 提炼范围: 常规提炼只看尾部 40 条窗口(:48); 终态提炼取全量 active 消息, 并把 WorkingContext 的 decisions/unresolved 一并喂给提炼提示词(此刻 working_context 在内存中是最新态), 让「本会话定了什么、卡在哪」成为提炼输入而非仅靠消息流重放。
  • 提炼什么与不提炼什么的边界: 提炼产出限「跨会话可复用的经验」: 决策与依据、事实发现(环境约束/结构/坑)、偏好与约定、踩坑。未完成事项不进知识表: 它是会话态不是知识, 归 L4 目标快照与停靠说明承接(与根治设计分工矩阵一致: knowledge 是高蒸馏沉淀, pinned_goals/任务态是实时意图, docs/02-架构设计/上下文根治设计-20261006.md 第十节)。此边界修正 09-29 首版「未完成事项提炼进知识库」的含糊表述。
  • 工具写入归属补全: knowledge_insert 拿不到 conv_id 的根因是工具 handler 只有 args 入参(tools/knowledge.rs:13-16)。补法: 工具注册或执行侧传入当前活跃会话 id(与 R1 批的会话上下文注入机制同一件基建, 见 3.3), insert 前 resolve_source_project(knowledge_inject.rs:948)算归属, source_ref 记 conv:{id}, 与自动提炼产物同格式。

3.2 存储选型: 复用 knowledge 表, 零 schema 变更

选项 评价
A 复用 knowledges 表(推荐) 检索/复用计数/晋升/生命线/归属/溯源全套机制已在; kind 七种语义(踩坑/架构模式/诊断/评审规则等, migrations.rs:1828-1830)覆盖决策与事实类产出; 零迁移零新面
B knowledges 补 scope 层级字段 知识库模型重审(2026-10-05)UC6 提案(会话/项目/全局); 触发制后置, 单项目桌面场景 source_project 已够, 宁少勿预留
C 新建 session_memories 表 与 knowledges 的检索/晋升/代谢/留痕重复建设, 双轨违背 DRY; 09-29 首版未选, 本版明确否决
D 复用压缩存档 JSONL 当跨会话记忆 存档是原文不是蒸馏产物, 无结构化元数据, 检索需全文件扫描; 根治设计第八节定位明确: 知识条目是晋升终点, 原文页池是全程。存档维持现状(会话内 read_file 召回, 已落地), 不升级为 L3 存储

推荐 A。与根治设计晋升单向门一致: 会话内页(压缩存档, 原始)到记忆卡(会话内, 中蒸馏, C-m1)到 knowledge 条目(跨会话, 高蒸馏)。L3 只收蒸馏产物, 原料留在 L2 侧。

3.3 读取侧: 只走工具按需查

铁律的两层精确表述(消解与组装器方案的表面冲突):

  • 跨会话层(本设计): 召回内容一律走工具, 无任何自动注入通道。prompt 总 token 不随历史会话数增长(09-29 首版 W3 验收口径沿用)。
  • 会话内层(组装器管辖): 分层组装器 P2.3 的 recall 段(会话内窗口外页/记忆卡)落发送视图尾部 user 角色、带配额闸, 不进 system 段, 与铁律字面一致; 其 v1 半径拍板已锁「仅当前会话」(组装器方案拍板点 4 选 A), 跨会话被明确延后到本设计, 且本设计选择工具通道而非注入通道, 比组装器的会话内置尾注入更保守。两文档无冲突: 组装器治会话内, 本设计治跨会话, 共用 knowledge_inject 检索面。

工具语义(不新造 recall_memory, 强化学员 knowledge_search):

09-29 首版提案的 recall_memory 专用工具与已落地的 knowledge_search 语义重合(查「之前怎么解决的/有没有记过」, tools/knowledge.rs:55 描述已含使用时机引导), 再造一个违背 DRY。本设计对 knowledge_search 做两点强化:

  1. 项目软排序接入: 检索改走 search_keywords_scoped, project_id 由调用时上下文解析(见下条)。同项目经验排前, 异项目与全局知识仍可召回不淹没(三档排序已在 df-storage 侧就绪, idea_repo.rs:834-880, 零新存储逻辑)。
  2. 会话上下文注入机制: 工具 handler 现拿不到 conv_id(tools/knowledge.rs:13-16 自证), 需要在工具执行侧补一个「当前会话 id」的注入通道(注册时捕获或执行时从 conv_states 解析)。这是本设计唯一的新基建件, 同时服务 3.1 的写入归属与 3.3 的读取排序, 一件基建两处收益。

引导注入方式: 靠工具描述(静态, 随 system 进稳定缓存前缀, 现有描述已含使用时机)与空结果指引(:72-77 已有), 不新增每轮注入文字。易变尾段是每轮变化区, 放常量引导既占 token 又无增量价值。

注入侧与工具侧分工: 注入侧(auto_inject, top-3, 项目软排序已接)是「高蒸馏 published 知识的被动注入」, 服务「agent 不知道自己不知道」的场景; 工具侧是「agent 主动按需查」, 服务明确的历史问题。两者互补且都已存在, 本设计不扩大注入剂量(top-3 配额不动)。

脉络卡(用户侧辅助通道): 新会话或会话列表项上, 按 source_project 聚合展示同项目近期会话的决策/结论摘要(数据源: knowledge 表按 source_ref 反查会话 + ai_conversations 元数据, 纯前端读侧)。用户点「带入上下文」才转为显式 @提及注入。非 LLM 注入, 不触碰铁律; 把「要不要带历史」的决策权交给用户, 与 bot 决策接口哲学(用户只做决策)一致。


四、L4 与目标快照: 重启恢复还缺什么

现有 parked 续跑链(V49 扫描、ai_recover_parked、B5 引擎自动恢复)解决的是「loop 死了能接着跑」; 缺的是「接着跑时脑子里还带着之前的记忆与最终意图」。三个缺口:

缺口 1: WorkingContext 持久化(最重)。重启后 goals/decisions/unresolved 全丢, 压缩重锚定(sync_after_compress 回填的决策)与目标钉扎跨重启断裂, 恢复的会话等于半失忆续跑。设计:

  • 载体: ai_conversations 加 working_context_json 列(V50, ALTER TABLE 可逆, 与 boundary_json V45/loop_state V49 同款模式)。
  • 写入时机: save_conversation 每轮落库点, 与 pinned_goals 同段序列化 conv.working_context(commands/ai/conversation.rs:466 附近)。
  • 恢复时机: 会话载入(commands/conversation.rs:492 恢复 pinned_goals 的同段)与 recover_parked_inner 反序列化回 per_conv。
  • 不选 settings KV 单键: 全会话映射挤一个键, 清理随会话删除无法级联, 单点膨胀。

缺口 2: 目标快照槽(对齐 u-claw goal.go L1/L2/L3 语义, 看板 D4 并入本设计)。现状恢复语义是注入恢复引导消息重走 spawn 正典链, 没有「按最终有效意图续, 不重放历史目标流」的快照裁决。设计:

  • 快照内容: Active 目标(WorkingContext.goals)+ pinned_goals + unresolved + updated_at + source。不另立存储, 就是 working_context_json 列的语义化读取(单一事实源, 宁少勿预留), pinned_goals 已有独立列继续沿用。
  • 恢复语义: 恢复/续接时按快照对齐当前有效意图, 中途被调整作废的目标不复活; 停靠卡与恢复引导消息由快照生成, 防止「按旧目标继续跑偏」(D4 原始动机)。
  • 验收沿用 09-29 首版 W4 口径: 会话 A 调整目标后重启, 续接时只认最终目标。

缺口 3: namespace 懒重建。重启后 namespace 引用只读得到淘汰占位(agentic/mod.rs:1975), 而 DB messages 存的是展开后原文(namespace_store 侧既有约定)。设计: per_conv 重建时从 messages 原文回填 store(懒: 首次展开命中该引用时回填, 避免载入即全量扫描)。独立小批, 量级 S。

顺带挂点: 压缩存档的会话删除级联清理(archive.rs:7 记录的缺口)挂在 R3 批的删除提炼同一条链路上(提炼完成后清理存档文件, 顺序: 先提炼后删文件), 避免单独再开删除挂点。


五、与既有机制的关系

知识库读写闭环(看板「观察进化系统只写不读」验收, docs/todo.md:414-415): 本设计 L3 写入侧(自动提炼+工具沉淀+终态提炼三通道)与读取侧(注入面+工具面+脉络卡三面)就是该验收的实现载体。质量闸引用知识库模型重审(2026-10-05)的实施序: 准入分级(candidate 不注入, published 且 verified 或 reuse 达标才可注入)与置信重估(自动提取默认 medium, 治 87% high 通胀)是该设计已立项项, 本设计不重复立项, 仅保证终态提炼产物走同一套把关。

与分层组装器方案(2026-10-10): 见 3.3 两层表述。补充一点衔接: 组装器的 MemoryCardSource(C-m1 记忆卡)属会话内 L2 产物; 记忆卡中被验证可复用的条目, 未来经终态提炼通道晋升进 knowledge 表(会话内中蒸馏到跨会话高蒸馏的单向门), 这是两套设计的汇合点, 实施上互不阻塞。

与 u-claw 分身的关系: 各自实现, 语义对齐, 不共享组件。理由: ①语言栈不同(Go 网关 vs Rust/Tauri 桌面应用), 抽公共 crate 的跨语言成本远大于收益; ②数据载体不同(u-claw 账本 JSONL+CLAUDE.md 通道 vs devflow SQLite knowledge 表+工具注册表), 硬对齐载体必有一方扭曲; ③真正需要一致的是四层语义、召回铁律、目标快照续接语义, 这些走设计档互引即可(本文档第一节即为对齐记录)。与「devflow集成u-claw-可行性研究-2026-09-28.md」的通道集成(ask_uclaw 工具形态)正交: 那是能力互调, 这是各自体内记忆架构, 不冲突。


六、分期(每批独立验收)

批 内容 依赖 量级 验收
R1 L3 读取强化: 会话上下文注入机制 + knowledge_search 接项目软排序 无(scoped 检索 df-storage 侧已就绪) S-M 新会话问「这个项目之前定了什么」调工具命中且同项目排前; prompt token 不随历史会话数增长
R2 L4 重启不失忆: working_context_json 列 + 保存/恢复接线 无 M 重启应用后压缩重锚定与目标钉扎仍生效
R3 L3 写入收口: 会话终态提炼(删除前+parked 停靠) + knowledge_insert 归属补全 + 存档级联清理 R1(共用会话上下文注入机制) M 关会话/停靠后知识库新增归属正确条目; 删除会话后存档文件消失
R4 目标快照槽+恢复续接语义(D4 并入) R2(载体) M 调整目标后重启续接只认最终目标, 作废目标不复活
R5 namespace 懒重建 无 S 重启后旧引用可读原文, 淘汰占位消失
R6 脉络卡(前端读侧) R3(数据在) S-M 新会话可见同项目近期决策摘要, 「带入上下文」为显式动作

顺序: R1(读取先行见效, 依赖最少)到 R2 到 R3 到 R4, R5/R6 可随批插空。后置触发制(不在本设计实施): scope 层级字段、代谢任务、语义检索(知识库模型重审已立项, 触发制)。


七、拍板点(6 项)

  1. 终态提炼触发点集合: 建议三触发(删除前后台非阻断+parked 停靠+手动已有); 备选仅停靠+手动(删除走静默, 防删除动作被后台提炼占用资源, 代价是删除会话的经验流失)。见 3.1。
  2. knowledge_search 工具级项目软排序与会话上下文注入机制: 建议做(跨会话工具查询才有项目维度, 且一件基建服务读写两处); 备选不做(工具保持全局检索, 项目维度仅注入侧, 量级降为 S)。见 3.3。
  3. WorkingContext 持久化载体: 建议加列 working_context_json(V50 模式, 可迁移可回退, 随会话级联); 备选 settings KV 单键(免迁移, 但清理难、单点膨胀)。见四节缺口 1。
  4. 目标快照与 D4 合并: 建议并入本设计 R4 批(D4 原始诉求与快照槽同一件事, 拆开必双实现); 备选留 D4 单独走(则本设计 R4 改为只做存储载体)。见四节缺口 2。
  5. 脉络卡是否本期做: 建议做(用户可见收益最大, 纯读侧零注入风险); 备选后置(先跑工具通道看真实使用率)。见 3.3。
  6. 未完成事项是否进知识表: 建议不进(归 L4 快照与停靠说明, 知识表只收可复用经验, 防任务态污染知识面); 备选兼容收(kind 用 workflow_optimization+tags 标注 todo, 有「过期待办变死知识」风险, 依赖代谢任务兜底)。见 3.1 边界。

八、风险

存储膨胀: 终态提炼加自动提炼的 candidate 增长(基线 1073 条, 知识库模型重审 2026-10-05 快照)。治理: 提炼查重(title 相似命中即跳过或 reuse+1, 最小闭环设计第四节已列)、代谢任务(重审 UC4, 触发制后置)、存档级联清理(R3 子项)、注入与检索配额上限不动(top-3/top-10)。万条量级 LIKE+索引可承受(重审 E2 前提)。

提炼质量与幻觉: LLM 提炼可能编造事实或置信通胀(87% high 已实证)。治理: candidate 不进检索面(误写代价低, 人工审核可弃)、自动提取置信默认 medium(high 需证据, 重审 E4)、reasoning 字段留判断依据(knowledge_inject.rs:1197-1198 已回填)、promote 显式转正为唯一人为把关口、蒸馏来源质量权重(重审 E5, 后置)。终态提炼喂入 WorkingContext 决策属结构化输入, 幻觉面小于全文重放, 但仍按同一候选通道把关不豁免。

隐私边界: 全链本地 SQLite+本地 JSONL, 与「本地优先, 数据不出门」pivot 一致。三个注意点: embedding 管道维持默认关(C2 已拍板, 本设计不触碰); 终态提炼调用 LLM 发送会话内容, 与普通对话同一 provider 同一外发面, 无增量风险; 压缩存档明文落 data_dir, 敏感度与 DB messages 同级, 确保不进任何同步/上传/日志路径(现状无此路径, 保持即可)。

缓存与注入纪律回归: 最大长期风险是未来实现把召回内容「顺手」拼进 system 或常驻段(毁前缀缓存, u-claw 原案教训)。结构防线: 工具通道在组装结构上就不进组装、脉络卡纯前端、组装器召回段落尾 user 角色; 验收红线: 「prompt token 不随历史会话数增长」进每批回归口径, R1 验收即含此项。


附录: 证据坐标索引

论断 坐标
自动提炼挂正常收敛点 src-tauri/src/commands/ai/agentic/mod.rs:1636; 水位制 knowledge_inject.rs:660-720(:52 阈值/:48 窗口/:70 水位)
提炼产 candidate 带 source_project/溯源 knowledge_inject.rs:1180(:1212)/(:1216-1219); 归属弱推断 :948
注入侧项目软排序已接 knowledge_inject.rs:520-521; crates/df-storage/src/crud/idea_repo.rs:834-880(三档 CASE :862-867)
三知识工具与归属缺口自证 src-tauri/src/commands/ai/tools/knowledge.rs:49(register)/(:51 search)/(:95 insert)/(:165 promote); 拿不到 conv :13-16
压缩链与 WorkingContext 写入 context_lifecycle.rs:133-135(水位)/(:335 锚点)/(:337 sync); chat.rs:950(:2444) begin_turn; context_helpers.rs:886-996(结构与方法)
压缩存档(今日落地, 未提交) crates/df-ai/src/context/archive.rs:17(:35 路径/:44 追加/:72 句柄); 开关 prompt.rs:709-718; 清理缺口 archive.rs:7
knowledge 表 schema crates/df-storage/src/migrations.rs:1835-1858(V7, source_project :1846, kind 注释 :1828-1830)
L4 已有持久化面 conversation.rs:466-468(pinned 落库)/commands/conversation.rs:492-495(恢复); V45 migrations.rs:1366; V49 :1446; 启动扫描 state.rs:455-460; 恢复链 commands/conversation.rs:292-337; 前端 ConversationSidebar.vue:208
L4 缺口自证 df-storage 全仓无 working_context 引用(grep 实测); namespace 重启清空 agentic/mod.rs:1975; AiCompleted 快照透传 agentic/mod.rs:1663
删除与停靠挂点 commands/conversation.rs:854(ai_conversation_delete); agentic/mod.rs:1464-1477(emit_task_parked 三件套)
上位设计与衔接 上下文根治设计-20261006.md(第七/八/九/十节); 上下文分层组装器-落地方案-2026-10-10.md(3.3/P2.3/拍板点4); 上下文三层记忆-设计-2026-10-04.md(C-m1); 知识库模型重审-精细化设计-2026-10-05.md(UC6/E4/E5/实施序)