Skip to content

UI 设计

对话优先、克制留白的个人 Agent 桌面 UI。
只反映真实后端能力;无假进度、假设置、不可执行控制。

目标

  1. 对话主线:目标 → 执行状态流 → 结果交付;过程细节默认收起,完成后可展开扁平列表。
  2. 克制视觉浅色优先(深色为夜间模式)、留白、弱边框;Mist Teal 色板(灰底 + 闷青绿 accent,阴影/软面带绿相),主按钮走 --accent 而非近黑。
  3. 可控:停止、审批、编辑重试、分支等均调真实 API。
  4. 本地可信:页脚展示引擎在线与模式;离线禁用发送。

信息架构

┌────────────┬──────────────────────────┬────────────────────┐
│ 侧栏历史    │ 对话流 + Composer         │ 编码工作台(可选)   │
│ 动作入口    │                          │ 文件树 + 预览页签    │
└────────────┴──────────────────────────┴────────────────────┘
区域必须不要
侧栏新对话、历史(时间倒序)、设置/记忆/搜索等真入口统计仪表盘、装饰卡片
主区空态引导句 + 建议 prompt 卡 + 大 Composer教程墙
主区对话用户右胶囊、裸 Markdown 交付、过程状态流/扁平列表运行中默认展开工具卡时间轴;常驻「运行详情」侧栏
ComposerEnter 发送、模型选择、Agent 状态、busy 时停止未配置时仍假装可聊
工作台固定文件树 + 打开文档/产物预览把树做成页签;叫 inspector
输出栏右侧 grid 列(与工作台同列位、互斥);卡式视觉,主对话不压在其下absolute 叠层挡内容

窄窗:侧栏可收;工作台可关。

过程层(呈现语法)

阶段呈现
运行中 (live)单行灰字状态流(phaseDetail / 当前工具 / 子代理活动),进出场动画;渲染可展开工具卡树
完成后已处理(有真实耗时才带秒数)+ 可展开扁平活动列表:已运行 … / 子代理行;默认收起
交付左对齐裸 Markdown(无气泡、无 Agent 头像条);代码块带语言 + 复制;路径/文件 chip 可开工作台
门禁工具/计划审批贴在 Composer 上方;ask-user 追问留在 对话流;共用紧凑 gate-card
子代理与工具同构的状态行,不做主视觉大「工作组卡」

状态展示

TaskStatus文案倾向
pending / planning / running等待 / 规划 / 执行
paused等待确认(审批、追问、预算)
completed / failed / cancelled完成 / 失败 / 已取消

细粒度只用后端 TaskPhase(thinking、calling_tool、waiting_approval…),前端不猜。

核心流程

启动: health + tasks(+ 需要时 tools)。在线可发送;离线禁用。

发任务: POST /api/tasks → 订 stream → 按 AgentEvent 增量更新。
迟到订阅:先任务快照(含 subagentRuns 等)再实时事件。

续聊: 同任务 POST .../messages;运行中可 steering/follow_up。

控制: 停止 cancel;工具/计划审批;追问回答;预算触顶后 resume / budget continue。

编辑重试(一步)

  1. 用户消息铅笔 → 气泡内联改文案(取消 / 发送)。
  2. 「发送」= revert(默认 code_and_conv)+ 立刻 messages(编辑稿 + 原附件)。
  3. 取消只关编辑态,不截断历史。
  4. 无 Composer「编辑模式」、不用 removedContent 覆盖稿;UI 不暴露恢复范围切换。
  5. continue 失败时可用「撤销编辑」(archivedMessages);成功 continue 后归档清空。

分支: branch 新任务并切换。压缩: /compact 或 API。

子代理

  • delegate 不重复成普通工具步骤;主对话以扁平活动行展示创建/完成状态。
  • 进度来自 subagent_updated / Task.subagentRuns;不刷子代理 token 进主正文。

多模态

  • 拖拽/粘贴图片 → 上传 → 消息 attachments;由当前选择且支持图片输入的模型处理。
  • 气泡内缩略图 + 查看器;attach_content 进对话与工作台。

组件边界(web-ui)

组件职责
App视图切换、全局状态拼装
Conversation / Timeline轮次、工具、子代理、失败卡
Composer输入、附件、模型、Agent 状态、斜杠命令
WorkbenchPanel文件树与预览
SettingsPanel真设置(LLM 槽位、工具、MCP、KB、搜索…)
hooksSSE、任务控制、设置、附件

API 只经 packages/web-ui/src/api/

视觉纪律

  • 浅色优先;主列限宽;用户右胶囊、交付左裸排。
  • Mist Teal 默认色板:--accent #3d7a6e(暗色 #6fb5a6);阴影/气泡/软底带绿相,避免纯灰底 + 近黑主按钮。
  • 主色贯穿:logo、选中态(--selection-bg)、Composer 聚焦环、发送钮、空态建议卡图标(同色系明度差);侧栏「新对话」与其它入口同款,不做特殊强调。
  • 字号、间距、圆角用 CSS token(含 --ui-radius-xl--composer-shadow--user-bubble-*)。
  • 动效克制:状态流 fade、流式光标;尊重 prefers-reduced-motion

验收(产品)

  • 离线/未配置模型不能「假聊」。
  • 审批与计划门禁可点且生效。
  • 编辑重试一步完成且可取消本地草稿。
  • 工作台能打开工作区文件与产物。
  • 无静态假工具列表、假记忆、假设置保存。

MIT License