Files
DevFlow/docs/02-架构设计/构想审查/多主题上下文管理愿景-2026-06-19.md
绝尘 998a2f243d 文档: 架构方案文档(意图识别论证+多主题愿景/论证+文档物理分类+边界清晰化)
squash合并:
- 意图识别层论证(8维度+10业界佐证)
- 多主题上下文管理愿景+并存论证+补充论证(多轮agentic)
- 架构设计文档物理分类(四子目录+INDEX+命名规范+引用同步+边界清晰化)
- 前端架构技术债清单归档
2026-06-19 15:04:04 +08:00

7.2 KiB

多主题上下文管理愿景

来源:用户架构愿景(2026-06-19)。未来方向,非近期实施。 关联:意图识别层论证(主题检测前置) / F-15 上下文管理(基础已落地)

愿景

无感多主题对话(交织并行):同一对话中多主题交织并行(A-B-A-B,非线性前 A 后 B 分段),系统自动识别主题归属 + 多主题上下文并存 + 交织路由,实现:

  • 省 token:每主题独立摘要,非全历史(交织场景 A-B 混杂,主题隔离收益更大)
  • 提速:短上下文(当前主题摘要),LLM 处理快
  • 提精准:主题聚焦(B 噪声不干扰 A 处理),LLM 注意力集中,回复更准

场景(交织并行,用户深化)

消息1 → 主题 A(新,如"处理 bug X")
消息2 → 主题 B(新,A 仍活跃,如"加 feature Y")
消息3 → 主题 A(补充,A-B 交织)
消息4 → 主题 B(补充,A-B 并行)

关键:多主题同时活跃 + 交织(非"前 A 段|后 B 段"线性,非"一主题完成才切")。主题数不定(2+)。

意图识别 = 核心前置(用户深化)

多主题并存 → 每消息必须识别"归属哪个主题"(否则无法路由:消息3 是 A 补充还是新主题 C?)。

  • 意图识别(输入意图/会话意图)= 多主题并存的前置依赖(每消息主题归属)
  • 多主题并存是意图识别的核心应用场景
  • 两者绑定:做多主题并存,必须先做意图识别
  • 触发条件调整:多主题并存需求 = 意图识别的强触发(非仅图片/文档输入 或 工具>40)

与 F-09 多会话的关系(架构复用)

  • F-09 多会话(已落地 d899c58)= 会话级隔离(conv_id,HashMap<conv_id, PerConvState>)
  • 多主题并行 = 会话内主题级隔离(topic = 轻量会话)
  • 架构复用:F-09 per_conv 模式 → 会话内 topic 层级
conv_id(会话)
  └─ topics: HashMap<topic_id, {messages, summary, last_active}>
       ├─ topic A(消息1,3...)
       ├─ topic B(消息2,4...)
       └─ ...

多主题 = F-09 多会话的"会话内"深化(topic 级 per-conv)。PerConvState/ContextManager 隔离模式复用到 topic 层。

与现有架构关系

现有 现状 愿景进化
F-15 上下文管理(分段 archived_segment / 压缩 compressed) 已落地(commit 4194842 等),按 token 阈值(budget*0.6)触发压缩 主题感知:按主题边界分段,非 token 阈值
ContextManager(context.rs) 单摘要/单分段 多摘要并存(每主题一份)
意图识别(预留 coordinator/intent.rs) 空白(近期不做) 主题检测前置(主题=意图维度;图片/文档输入时启动)
router(模型路由) 静态 weight 主题/意图→模型(远期)

多主题识别与摘要

主题切换检测

  • embedding 相似度:当前消息 vs 历史主题向量,相似度低于阈值 = 新主题
  • LLM 分类:fast model 判主题归属(准但延迟)
  • 关键词/规则:主题关键词变化(快但弱)
  • 渐进:规则→embedding→LLM(随规模升级)

每主题独立摘要

  • 主题段(主题边界内消息)→ LLM 摘要 → 多摘要并存(ContextManager 扩展:HashMap<topic_id, summary>)
  • 复用 F-15 compress_prompt 四段式(意图/决策/文件/约束),按主题
  • 摘要触发:主题切换时(非 token 阈值)

上下文按主题分段

  • 当前:build_eviction_units 三元组(保护区 + 可压缩)
  • 愿景:主题边界分段(每主题一段,切换时归档前主题 + 摘要)

智能摘要切换

当前主题识别

  • 用户消息 → 归属主题(检测:延续当前主题 / 切换新主题 / 回到旧主题)

上下文路由(主题→摘要)

  • 当前主题摘要 + 关键历史(其他主题摘要压缩/可选展开)
  • 无感切换(用户不手动切,系统自动选摘要)

场景

  • 用户聊主题 A(代码)→ 切主题 B(闲聊)→ 回主题 A:系统保留 A 摘要,B 切换时归档,回 A 时恢复 A 摘要(非全历史 reload)

收益量化(预估)

  • 省 token:多主题对话,每主题摘要 ~500-1000 token,vs 全历史 ~5-10K token(累积),降幅 80%+(长对话多主题)
  • 提速:短上下文(当前主题),LLM 首 token 快 + 处理快
  • 提精准:主题聚焦,LLM 不被跨主题噪声干扰

可行性

组件 实现 基础
主题检测 embedding/LLM/关键词 新增(intent.rs 扩展)
多主题摘要 ContextManager 扩展(HashMap<topic, summary>) F-15 压缩基础
智能切换 上下文路由(topic→summary) 新增
持久化 每主题摘要落 DB conversation 扩展

实现路径(远期,分阶段)

  1. 主题检测(规则/embedding):消息→主题标签
  2. 主题分段:ContextManager 按主题边界分段(替代 token 阈值)
  3. 多主题摘要:每主题 LLM 摘要 + HashMap 存
  4. 智能切换:当前主题识别 + 摘要路由
  5. 持久化:主题摘要落 DB(跨会话恢复)

风险评估(用户深化·误判代价不对称)

误判代价不对称(核心风险)

  • 不做多主题(全历史 A-B 混杂):LLM 信息在,可能跑题但用户可纠正(信息未丢)
  • 多主题误判(消息3[A 补充]误判为 B):路由 B 上下文 → LLM 用 B 回 A → 完全错位(比全历史更糟,信息丢失)

误判 > 不隔离代价。意图识别准确性是硬约束(必须高准确,否则不如不做)。

fallback 策略(前提,降误判代价)

  • 低置信度→全历史:意图识别不确定时不隔离(安全降级,避免走偏)
  • 摘要并存:即使误判 A/B 摘要都在,信息不丢(LLM 可选/用户纠正)
  • 用户显式纠正:"这是 A 主题"→ 重新路由(手动 override)

复杂度 vs 收益 vs 准确性

  • 复杂度(高):主题识别(意图瓶颈)+ 多主题上下文管理(HashMap/交织路由/摘要)+ 持久化
  • 收益(中,长对话交织):省 token + 提精准
  • 准确性风险(高):embedding/LLM 分类中文意图+交织主题挑战大,准确率不够→误判走偏→比不做更糟

结论(近期不值得,远期可行)

  • 近期不值得:复杂度高 + 意图准确性瓶颈 + 误判代价不对称 → ROI 低。F-15(token 阈值)+ F-09(多会话手动切)够用
  • 远期可行:意图识别准确率有保障(技术成熟/数据积累)+ 长对话交织场景多时,fallback 是前提(低置信度降级全历史)

触发条件(何时做)

  • 当前 F-15(token 阈值压缩)够用,多主题是长对话多主题场景优化
  • 触发:用户反馈长对话跨主题时上下文混乱 / token 成本高 / 回复跑题
  • 依赖:意图识别(主题检测)准确率有保障 + fallback 健壮(非仅预留就绪)

与意图识别关系

  • 主题识别 = 意图识别的一种(主题是意图维度:代码/闲聊/搜索/项目/...)
  • 意图识别预留(图片/文档输入时启动),主题摘要可先于完整意图识别(主题检测独立于模型路由)
  • 两者共享前置层(coordinator/intent.rs 落地)

备注

  • 用户原话:「多主题识别与摘要 + 智能摘要切换 → 无感多主题对话 + 上下文压缩(省 token)+ 提速 + 提精准」
  • 这是远期愿景,近期 F-15(token 阈值)够用。触发条件达成时启动。