Files
deerflow-code/docs/agentscope-多智能体报告协作工作台-交互重设计方案.md
T
2026-09-08 09:40:31 +08:00

11 KiB
Raw Blame History

报告协作工作台 — 交互重设计方案(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 单测,不引入对其他模块的影响。