187 lines
11 KiB
Markdown
187 lines
11 KiB
Markdown
# 报告协作工作台 — 交互重设计方案(v2)
|
||
|
||
> 日期:2026-09-07
|
||
> 状态:**待确认**(确认后按 §7 分期实施)
|
||
> 取代:现行「规则澄清 + 三张模板方案卡 + 画布为主」的交互
|
||
> 原则:回到最初设计 —— **协调者智能体全程与用户对话的主线**
|
||
|
||
---
|
||
|
||
## 1. 设计目标与总体形态
|
||
|
||
用户视角只有一条主线:**和一个规划师智能体对话 → 它摸清意图并规划工作流 → 确认后执行、过程在流程图上可见 → 随时插话干预、指定智能体重跑 → 最终成稿、继续对话式修改**。
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 阶段1 计划模式 阶段2/3 执行+干预 阶段4 成稿 │
|
||
│ ┌───────────┐ ┌───────────┐ ┌──────────┐ │
|
||
│ │ 规划师对话 │ 确认 │ 聊天时间线 │ 审稿过 │ 对话改稿 │ │
|
||
│ │ 需求摘要卡 │ ─────→ │ +成员Tab │ ─────→ │ 版本/diff│ │
|
||
│ │ 工作流卡 │ 冻结 │ +流程图动画│ 报告卡 │ 上游重跑 │ │
|
||
│ └───────────┘ └───────────┘ └──────────┘ │
|
||
│ ↑ 回到计划模式(replan)随时可触发 ↑ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
与现行的核心差异:
|
||
|
||
| 维度 | 现行(做偏的) | v2 |
|
||
|------|----------------|-----|
|
||
| 需求澄清 | 规则模板问句秒回 | 规划师智能体(LLM)领域化提问 |
|
||
| 工作流来源 | 3 张确定性模板 | LLM 按意图生成自定义 DAG,对话迭代修改 |
|
||
| 执行展示 | 画布为主、聊天为辅 | **聊天时间线为主**(成员 Tab 切换保留),**执行状态在流程图上动画呈现** |
|
||
| 干预 | 命令确认卡体系 | 输入框常开 → 协调者智能体分类;支持**指定智能体重跑** |
|
||
| 报告修改 | 改写候选(纯文字层) | 意图分流:润色走改写;**事实性问题触发上游节点重跑** |
|
||
|
||
---
|
||
|
||
## 2. 阶段 1:计划模式 — 需求梳理与工作流规划
|
||
|
||
### 2.1 计划模式状态
|
||
|
||
- 用户发出第一条需求消息起进入**计划模式**,Header 显示徽章「📋 计划模式」,输入框提示语切换为「梳理需求中,你可以随时补充或纠正…」。
|
||
- 计划模式在**工作流确认冻结**时结束;执行期大改可通过 replan 回到计划模式(见 §5.4)。
|
||
|
||
### 2.2 规划师对话(LLM,替换现行规则路由)
|
||
|
||
- 模型:`report_collaboration.planner_model`(回退 `coordinator_model` → 默认模型,复用现有 model_resolver 冻结机制)。
|
||
- 提问是领域化的:写市场分析就问「关注整车还是供应链 / 要不要竞品对比 / 给谁看 / 篇幅」,而非固定模板问句。
|
||
- 澄清轮次上限沿用 `max_clarification_rounds`;用户随时可以说「直接开始」按默认假设推进。
|
||
|
||
### 2.3 需求摘要卡
|
||
|
||
信息足够后,规划师在对话中输出一张**结构化需求摘要卡**(业务卡插槽渲染):主题 / 目的 / 读者 / 角度清单 / 篇幅与重点 / 默认假设。用户逐项看,可在对话里继续改(「读者改成投资人」→ 卡片更新出新版)。
|
||
|
||
### 2.4 工作流生成与迭代
|
||
|
||
- 用户确认摘要后,规划师生成**一份**工作流方案(不是三选一):以工作流卡(成员构成、各节点使命、预计时长/成本)+ 右侧流程图预览呈现。
|
||
- 生成约束(保证可执行):**节点类型受词表约束** — `research / verify / analyze / write / review`;自由的是结构(几条线、并行还是串行、核验深度)与每个节点的使命/角度/工具。
|
||
- 对话式修改:「把价格策略单独拆一条线」「加一个政策风险分析」→ 规划师修订后出新版工作流卡(带变更说明),再确认。
|
||
- 「开始执行」→ 冻结需求 + 工作流(含模型/预算快照,沿用现有 freeze 机制)。
|
||
|
||
---
|
||
|
||
## 3. 阶段 2:执行 — 过程在流程图上可见
|
||
|
||
### 3.1 流程图动画规格(执行状态的可视化主载体)
|
||
|
||
节点状态 → 样式(`ReportFlowCanvas` / `ReportFlowNode`,状态源 `selectNodeStatusMap`,事件源 `node.status.changed` SSE):
|
||
|
||
| 状态 | 节点样式 | 连入边 |
|
||
|------|----------|--------|
|
||
| planned / queued | 灰色常态 | 静态 |
|
||
| **running** | 主色描边 + **呼吸脉冲动画**(ring)+ 角标 spinner | **流动动画**(@xyflow 内置 `animated: true` 的 dash 流动) |
|
||
| **completed** | 绿色 + ✓ 角标,常驻 | 恢复静态实线 |
|
||
| failed | 红色 + 错误角标 | 红色虚线 |
|
||
| awaiting_input | 橙色 + ?角标 | 橙色静态 |
|
||
| interrupted / superseded | 半透明降级 | 灰 |
|
||
|
||
- 语义:**边流动 = 数据正在流入该节点**(该节点执行中);节点完成即停动画换完成样式。
|
||
- 实现成本:@xyflow 原生支持 animated 边与自定义节点 className,纯 CSS 补呼吸动画即可,无需新依赖。
|
||
|
||
### 3.2 聊天区(保留现有 Tab 切换)
|
||
|
||
- 并行成员沿用 **AgentStageSelector Tab 切换**(维持现状,不改交错时间线)。
|
||
- 每个 Tab 内是该成员的完整流式输出:思考、工具调用卡、检索过程、正文 —— 与普通智能体问答同观感(message-adapter 已具备映射能力)。
|
||
- 协调者播报(「研究线 A 完成,核心发现 X,开始交叉核验」)进入总时间线 Tab。
|
||
|
||
---
|
||
|
||
## 4. 阶段 3:干预 — 对话即干预 + 指定重跑
|
||
|
||
### 4.1 输入框常开,协调者智能体分流
|
||
|
||
执行期输入框永远可用,所有输入先到协调者(LLM 分类,规则高精度直判兜底——复用 RC-BE-014 IntentRouter 骨架,把「规则优先」反转为「LLM 优先 + 规则快路径」):
|
||
|
||
| 用户意图 | 协调者行为 | 生效时机 |
|
||
|----------|-----------|----------|
|
||
| 提问(「查到什么了?」) | 直接回答 | 立即,不打断 |
|
||
| 修正方向(「重点看下沉市场」) | 小改:在安全点注入 overlay,并回复说明 | 下个安全点 |
|
||
| **指定重跑**(见 §4.2) | 出确认卡 → 重开节点 attempt | 确认后 |
|
||
| 大改(砍线/加线) | 提议 replan → 回计划模式 | 用户确认 |
|
||
| 停止 | 直接取消 | 立即 |
|
||
|
||
### 4.2 指定智能体重跑(新增核心交互)
|
||
|
||
**场景**:用户发现某节点传给下游的信息不对(如研究线 B 的结论有误)。
|
||
|
||
两个入口,同一后端动作:
|
||
|
||
1. **对话**:「研究线 B 的结果不对,重新查,重点看价格战」→ 协调者解析出 `node_id` + 新指令;
|
||
2. **画布**:点节点 → 抽屉(NodeInspectorDrawer)加「↻ 重新执行」按钮。
|
||
|
||
**级联规则**(复用并补全 ledger 的 targeted rework):
|
||
|
||
```
|
||
重跑节点 N(attempt+1,带用户新指令作为 mission overlay)
|
||
→ N 完成 → 所有直接/间接依赖 N 产物的下游节点标记 superseded
|
||
→ 按 DAG 依赖序逐波重跑(边动画重新流动,用户全程可见)
|
||
→ 受影响章节重新生成
|
||
```
|
||
|
||
- 确认卡必须展示**影响面**:「将级联重跑 核验B / 分析 / 写作 共 3 个节点,预计 +8 分钟」。
|
||
- 成本保护:级联重跑计入 run 预算(现有 budget 机制),预算不足时明确报因。
|
||
|
||
---
|
||
|
||
## 5. 阶段 4:报告成稿与对话式修改
|
||
|
||
### 5.1 成稿
|
||
|
||
审稿通过 → 报告卡出现在时间线(点开 ReportPreviewDialog 全文),协调者播报总结(各线核心发现 → 结论如何形成)。
|
||
|
||
### 5.2 修改意图分流(协调者 LLM 判定)
|
||
|
||
| 用户说 | 判定 | 动作 |
|
||
|--------|------|------|
|
||
| 「把第二章结论写得更笃定」 | 文字润色 | 改写候选(现有 rewrite API)→ 对比预览 → apply → 新版本 |
|
||
| 「这个数据不对 / 重新收集一下」 | **事实性问题** | 定位来源节点 → **触发该节点重跑(可带新角度)→ 级联 §4.2 → 受影响章节重生成 → 新版本** |
|
||
| 「再从供应链角度补一节」 | 结构性新增 | replan:回计划模式改工作流(只增不删已完成部分) |
|
||
| 「恢复到上一版」 | 版本回退 | 现有 restore API |
|
||
|
||
- 版本链:每次 apply / restore / 级联重跑产出均产生新 head,历史完整保留(现有机制)。
|
||
- 修改对话里协调者必须先**复述理解**(「你是想让研究线 B 换个角度重查,然后重写第三章,对吗?」)再执行,避免误触发昂贵的级联。
|
||
|
||
---
|
||
|
||
## 6. 工程改造清单
|
||
|
||
### 6.1 保留(本次联调已验证)
|
||
|
||
- 持久化 13 张表 + durable SSE + `after_seq` 断线续传;幂等键 / 乐观锁 / 预算框架。
|
||
- MessageList 复用链路(message-adapter → LangGraph Message → 业务卡插槽)。
|
||
- AgentStageSelector Tab、commands 安全点骨架(RC-BE-014)、报告版本三件套(RC-BE-015)、前端 hooks/reducer/selectors 主体。
|
||
- 「清空历史」「生成候选方案」等本次新增入口。
|
||
|
||
### 6.2 后端重做 / 新建
|
||
|
||
| 项 | 说明 |
|
||
|----|------|
|
||
| 规划师智能体 | LLM 多轮澄清(替换 `requirement/intent_router.py` 规则路由)+ 需求摘要结构化 + **工作流 LLM 生成**(受 §2.4 词表约束,替换 `planning/controller.py` 三模板)+ 对话式工作流修订 |
|
||
| 协调者智能体升级 | 干预分类 LLM 优先;修改意图分流(§5.2);执行前复述确认 |
|
||
| 指定重跑 + 级联 | ledger targeted rework 补全级联 superseded/重跑波次;确认卡带影响面计算 |
|
||
| AgentScope 适配器修复 | `count_tokens` 协议缺失(上下文压缩必崩);attempt 耗尽终态化(防僵尸 run) |
|
||
| 事件补齐 | 边流动所需的节点状态事件已有;补「级联影响预告」事件 |
|
||
|
||
### 6.3 前端重做 / 新建
|
||
|
||
| 项 | 说明 |
|
||
|----|------|
|
||
| 计划模式 UI | Header 徽章、composer 提示切换、需求摘要卡、工作流卡(替换现三张模板卡) |
|
||
| 流程图动画 | running 节点呼吸动画 + 入边 `animated`、completed ✓ 样式、级联重跑时边动画重流(§3.1) |
|
||
| 节点抽屉 | 加「重新执行」按钮 → 确认卡 |
|
||
| 干预交互 | 执行期输入框常开;意图确认卡(含影响面);修改对话复述确认 |
|
||
| 布局 | 聊天为主、画布为辅的默认比例微调(不动整体两栏结构) |
|
||
|
||
---
|
||
|
||
## 7. 实施分期
|
||
|
||
| 期 | 内容 | 验收 |
|
||
|----|------|------|
|
||
| **P0 地基** | AgentScope `count_tokens` 修复;attempt 耗尽终态化;级联重跑的 ledger 补全 | 执行阶段不崩、无僵尸 run、单节点重跑级联正确(后端测试) |
|
||
| **P1 计划模式 + 执行可视化** | 规划师 LLM 对话、需求摘要卡、工作流 LLM 生成与迭代、计划模式 UI、流程图动画 | 从新会话到确认工作流全程对话完成;执行时动画正确随状态流转 |
|
||
| **P2 干预 + 成稿修改** | 协调者 LLM 分类、指定重跑(两入口 + 影响面确认卡)、报告修改意图分流、上游级联重跑 | 四类干预各自走通;「数据不对→重跑→新章节→新版本」全链路 |
|
||
|
||
每期结束跑 RC 全量测试(当前基线 233 通过)+ 前端 26 单测,不引入对其他模块的影响。
|