- todo: AR-2/3/4 标完成 + 已完成区加 WF-F(含审查误判记录) - docs 落地 3 份历史遗留(todo/memory 指针此前断链):aichat-review-2026-06-14.md(审查报告,todo AR 段引用)+ aichat-async-approval-concept.md + aichat-info-density-concept.md(构想) - task-advance-concept.md 为 Wave2 agent 越权自主产出,保留未追踪待评估
103 lines
4.9 KiB
Markdown
103 lines
4.9 KiB
Markdown
# 构想: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 已有审计表。
|