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

4.9 KiB

构想:AI Chat 信息密度优化 — 折叠 + 会话详情面板 — 2026-06-14

性质:功能升级构想(瞬时灵感),未实现。记录作为后期优化参考。

背景

提高 AI chat 对话区有用信息密度。当前长回复/代码块/历史轮次全展开,信息密度低,关键内容被淹没。两个构想:① 卡片与消息折叠策略;② 会话详情面板组件。


构想一:卡片与消息折叠

当前折叠现状(2026-06-14 探索)

已有折叠:

  • 工具卡片:卡片级折叠(ToolCardList.vue expandedCards)+ read_file 内容级折叠(expandedTools,max-height 180px + 渐隐)+ list_directory max-height 220px + 通用 result max-height 100px。
  • shouldKeepOpen:running/pending_approval/rejected/write_file 保持展开。
  • auto-collapse(AiChat.vue:639-667 watch):新内容追加时收起旧已完成/已拒绝卡。
  • 侧栏归档分组可折叠。

未折叠(可优化):

  • AI 消息正文:template AiChat.vue:191-198 v-html 全展开,长 markdown 无截断。
  • 代码块:markdown pre code 无折叠(:1103-1118 仅样式)。
  • 用户消息:ai-msg-bubble--user 全展开(:1058)。
  • 同消息多 toolCall:逐卡渲染,无聚合。
  • 历史 agent 轮次:每轮独立气泡全展开,无折叠。

可折叠优化点

对象 当前 折叠策略建议
AI 消息正文 全展开 >N 行(如 15)截断 + 渐隐 + "展开"(复用 read_file 卡的 max-height + ::after 模式);折叠态显示首行摘要
代码块 全展开 >20 行折叠,显示"展开 N 行";默认显示首尾几行
用户消息 全展开 >5 行折叠为摘要 + "展开"
同消息多 toolCall 逐卡 ≥3 个聚合成"完成 N 个工具调用 [展开]",展开后逐卡(已有 auto-collapse 配合)
历史 agent 轮次 每轮全展开 非最新轮折叠为单行(轮次标识 + 文本摘要 + 工具数),点击展开
错误消息 各自气泡 连续多条错误可堆叠折叠

设计原则

  • 折叠态必须有摘要(避免光秃秃):AI 消息取首行/工具卡已有 toolResultSummary
  • 最新/活跃内容默认展开,历史默认折叠(与现有 auto-collapse 一致)。
  • 流式生成中不折叠(避免重渲染抖动,与 H1 流式重解析问题联动)。
  • 折叠状态可记忆(同会话内持久,刷新重置)。

构想二:会话详情面板

在 AI Chat 对话面板增加"会话详情"功能组件,聚合展示当前会话的全维度信息。

功能建议

1. 当前会话整体信息

  • 标题 / provider / model / conversation_id
  • token 总量(prompt + completion,来自 conversation 表累加字段)
  • 消息数 / 工具调用数 / 审批数(通过/拒绝/待审)
  • 创建时间 / 更新时间 / 持续时长

2. 历史整体对话

  • 侧栏已有对话列表;详情面板补:搜索(标题/内容)、按时间/provider/状态筛选、批量归档/删除、导出(Markdown/JSON)。

3. 审计类能力

  • 工具执行时间线(来自 ai_tool_executions 表:tool_name / arguments / result / status / risk_level / requested_at / executed_at / decided_by)。
  • 风险分布(Low/Medium/High 统计)、审批通过率。
  • token 消耗趋势(按轮次/按时间)。
  • 决策记录跳转(若有 DecisionJournal 关联)。

4. 快捷获取某类信息

  • 按工具类型筛选(只看 read_file / 只看 create_project)。
  • 按风险/状态筛选(只看待审批)。
  • 关键词搜消息全文。
  • 时间范围筛选。

后端数据支撑(已有,无需新建)

数据 来源
对话元信息 + token conversations 表(title/model/provider_id/prompt_tokens/completion_tokens/messages),conversation.rs 累加
工具执行审计 ai_tool_executions 表,audit.rs 写入 + list_pending / find_by_tool_call_id 查询
消息全文 ai_conversation_detail IPC(已返回 messages JSON)

待补 IPC:工具执行按 conversation 聚合查询(现有 list_pending / find_by_tool_call_id,需加 by_conversation 全量时间线);token 趋势(按轮次拆分,当前只存总量)。

组件设想

  • 入口:header 加"详情"按钮,或对话项右键菜单。
  • 形态:侧滑面板(drawer,不离开对话)/ modal / 独立路由(/ai-detail/:id)。
  • 结构:Tab 分「概览 / 审计时间线 / 消息检索」。

评估

构想 复杂度 依赖 建议
折叠策略 纯前端,复用现有 max-height 模式 优先做 AI 消息正文 + 代码块折叠,收益最大
会话详情面板 中高 前端新组件 + 后端补聚合 IPC 审计时间线最有价值(数据已在),先做概览 + 审计两 tab

两者都与信息密度相关:折叠压缩单条信息,详情面板聚合全局信息。可并行推进。

关联

  • 折叠与 devflow-aichat-review-pending H1(流式重解析)联动——流式中不折叠,完成后折叠。
  • 会话详情审计能力复用 audit.rs 已有审计表。