Hub Chat Message 重构 · 4 方向原型对照
演示场景 用户问 「帮我做一个 10 秒日本旅游短片」 → Agent 思考、查工具、列计划(5 步:文生图 / 文生视频 / 旁白 / 后期)、中途遇到一个 API 报错。下面 5 列同一场景,对比当前 Hub 渲染 vs 4 个改造方向。
0当前现状(基准)

基于 app/desktop/src/renderer/pages/workspace/components/chat/messages/ 的 14 个组件直接渲染 — Thought / Response / Tool Call / Todo 全平铺,emoji 状态,tool args 裸露,报错全英文。

DEBUG-LOG-LIKE · 用户体感
问题:信息同权重堆叠 · 思考默认全展开 · 工具参数 (hub_canvas_list_nodes / glob pattern: **/*.png) 直接暴露给用户 · 待办用 emoji · 报错是英文技术栈 + 长 request id + 无重试按钮
帮我做一个 10 秒日本旅游短片
用户想要一个短视频,10 秒钟。我应该先看看画布上有没有相关素材,让我先调用 hub_canvas_list_nodes 看看现有节点,然后再考虑要不要新生成。让我先看看…
hub_canvas_list_nodes { "session_id": "ses_abc123", "include_metadata": true, "filter": null }
让我获取更多信息。画布上有 2 张图片节点指向同一个文件,但都不是日本主题。我打算重新生成所有素材。
glob { "pattern": "**/*.png" }
现在我打算调用 todowrite 工具,把任务拆解成 5 个步骤…
todowrite { "todos": [...] }
待办列表 1/5
✅ Step 1: 分析策划 - 确定主题、风格、时长
⏳ Step 2: 创建分镜脚本 - 4 个场景的日本旅游片段
⬜ Step 3: 生成场景图片 - 通过 image agent 生成首帧
⬜ Step 4: 生成旁白音频 - 通过 speech agent 生成中文旁白
⬜ Step 5: 后期合成 - 通过 editing agent 拼接配乐
hub_seedance_image_to_video { "image_path": "/tmp/scene01.png", "prompt": "Cherry blossoms in slow motion...", "duration": 5, "model": "seedance-pro" }
messages.95: 'tool_use' ids ['toolu_vrtx_xxx'] in 'assistant' messages must have matching 'tool_result' blocks in 'user' messages following them. request_id: req_abc123def456ghi789jkl012mno345pqr
推荐合体方案 · B 审批 Dock × C 节点 Chip

把方向 B 的「阻塞 + 蓝色审批 dock + Confirm & run」和方向 C 的「节点 chip 化 + 类型色系」合在一起。骨架用 C,决策入口用 B —— 既看清类型分布,又有强决策时机。

合体推荐 · 一阶段就能落地
帮我做一个 10 秒日本旅游短片
思考了 5 秒 查看画布素材 · 查询本地图片
已为你拆成 5 个生成步骤,请审一下方案 ↓
执行计划 5 步 · 预计 2-3 min
分镜脚本 · 4 个场景 文生文 Claude
生成 4 张首帧 · 樱花 / 神社 / 街景 / 富士山 文生图 香蕉 2
视频片段 · 4 段拼接 图生视频 Seedance
中文旁白 文生语音 海螺 Speech
后期合成 · 拼接 + BGM 编辑
需要你确认才会开始执行 本次预计消耗 · 12 credits · 不含失败重试
— 用户点击 Confirm & run 后 —
执行中 2 / 5
分镜脚本 · 4 个场景文生文
生成 4 张首帧文生图
视频片段拼接中…图生视频
中文旁白文生语音
后期合成编辑
视频片段失败 · Seedance 接口超时
已暂停后续步骤 · 不会扣费 · 可重试或跳过这一步
合体哲学(设计要点)
  • 骨架用 C 的节点列表 — 每行 = 一个生成产物,左色点 + 图标 + 名 + 类型 chip + 模型名
  • 类型色文生文绿 / 文生图紫 / 图生视频橙 / 文生语音蓝 / 后期灰,方角 chip,跟 hub 中性调性兼容
  • 决策入口底部 brand 紫 dock — 阻塞 + "需要你确认才执行" + credits 显示 + 大 Confirm & run 按钮
  • 总是允许次级灰按钮,给老用户绕开重复审批的逃生口
  • 运行中同一个 plan card 视觉延续:节点变 done(划线灰)/ running(脉冲点 + brand 色)/ 头部进度从 "5 步" 变 "2 / 5"
  • 思考折叠默认折叠成 chip — "思考了 N 秒" + "查看画布素材"。点开看详情
  • 报错独立红条 + 人话标题 + "不会扣费" 安抚 + 重试 / 跳过 / 详情 三按钮 + 不暴露 request_id
  • 复用底层是现成的 confirm message type + ConfirmRequest 组件,不用新造
24 个改造方向(探索过程对照)

推荐合体方案的设计来源 — 4 个独立哲学的对照。每个应用同一份 Hub design token,区别在于信息分档逻辑、折叠规则、决策入口的视觉权重

方向 A

极简折叠风

参考:Runway / Poe Agent · 状态标签精简,思考默认折叠,产物 artifact 抽离
核心:所有过程信息默认折叠成一行状态标签("读取了画布"/"调用了 X 工具"),点开看详情。Agent 给用户的话独占主区。
帮我做一个 10 秒日本旅游短片
查看画布素材 搜索本地图片
思考了 5 秒 · 点开展开
已为你规划成 5 步,先生成 4 个分镜首帧 + 旁白 + 视频片段,最后拼成 10s 成片。
执行进度 1 / 5
分析策划 · 主题/风格/时长
创建分镜脚本 · 4 个场景
生成场景图片(首帧)
生成中文旁白
后期合成 · 拼接 + BGM
生成视频:scene_01.mp4
视频生成失败
Seedance 接口偶发抖动,可重新生成。不会扣费
方向 B

审批中断风

参考:Monica / Anthropic Auto Mode · 强调用户决策入口
核心:Agent 列完计划后阻塞,弹出 brand 色审批 dock(Confirm & run),用户审过参数才执行。失败也直接给重试。
帮我做一个 10 秒日本旅游短片
思考了 5 秒
查看画布素材 完成
已为你规划成 5 步,请审一下方案 ↓
执行计划 5 步 · 预计 2-3 min
1 分析策划 · 主题/风格/时长 文 · GPT-5
2 创建 4 个场景分镜脚本 文 · Claude
3 生成 4 张首帧 图 · 香蕉 2
4 中文旁白 音 · 海螺 Speech
5 后期合成 · 拼接 + BGM 后期
需要你确认才会开始执行
本次预计消耗 · 12 credits
Step 3 暂停 · 视频接口超时
Seedance 这次没响应。已暂停后续步骤,不会扣费。你可以重试或跳过这一步。
方向 C

节点 Chip 风

参考:rhtv Canvas nodes · 每步独立小标签 + 大 Confirm & run
核心:把每步当画布节点呈现,左侧色点 + 类型 chip(文生图/文生视频/...),底部大 Confirm 按钮。用户一眼看清类型分布。
帮我做一个 10 秒日本旅游短片
已分析画布 · 查询了相关素材
已为你拆成 5 个生成节点,确认后开始:
Plan nodes (5)
分镜脚本 — 4 个场景 文生文
场景 1 首帧 — 樱花特写 文生图
场景 2 首帧 — 神社 文生图
视频 · 樱花 → 神社 拼接 图生视频
中文旁白 文生语音
场景 1 首帧 — 已生成 文生图
视频拼接中… 图生视频
视频生成节点失败
Seedance 接口偶发抖动,可重试。其他步骤已暂停。
方向 D

拟人化创作流

参考:视频创作流 · 4 档严格分层(主回复/产物/步骤/系统元)+ "Director" 角色
核心:Agent 有 avatar + 拟人化称呼("Director"),4 档视觉权重严格分明,系统元信息斜体灰字几乎隐身,产物独立强容器。
帮我做一个 10 秒日本旅游短片
思考了 5 秒 · 查询画布 · 搜索本地素材
D
Director · Orchestrator
已为你规划成 5 步,先生成分镜,再做首帧 + 旁白,最后拼成 10s 成片。
创作步骤 2 / 5
分析策划 文生文
创建分镜脚本 文生文
生成场景首帧 文生图 · 香蕉 2
生成中文旁白 文生音
后期合成 编辑
scene_01_sakura.png
文生图1024×1792已加入画布
Step 3 视频生成失败
Seedance 接口偶发抖动 · 不会扣费 · 可重试或跳过
+ 加 BGM 风格 + 改成竖屏 + 换风格参考

🪧 还要拍板 2 件事

  1. "思考折叠"的默认状态:合体方案当前默认折叠思考。但 9 那条反馈说"用户感觉卡住" —— 是否运行中应该展开实时进度("正在写第 2 个分镜…"),结束后再折叠成 "思考 N 秒"?
  2. Confirm & run 的颗粒度:整个 plan 一次审(合体方案当前做法)还是 每个高成本步骤独立审(如视频生成才弹)?前者快但粗,后者细但烦。你怎么选?