fischer-agentkit/docs/brainstorms/2026-06-13-gui-productizati...

191 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: "2026-06-13"
topic: "gui-productization"
status: active
---
## Summary
对 Fischer AgentKit GUI 进行产品级提升,三线并行推进:布局重构为「左对话 + 右双栏」、建立双主题设计系统、增强交互体验。分 3 个迭代交付,每个迭代可独立部署。
## Problem Frame
当前 GUI 处于"功能可用但体验粗糙"状态:四象限等分布局让对话空间被压缩到 1/4 屏幕,终端面板大多时间空闲浪费空间;颜色/间距/圆角全部硬编码散落在 30+ 组件中视觉不统一无过渡动画、操作无反馈、空状态单调、加载态简陋。竞品Devin、Cursor、v0.dev已普遍采用 Agent-First 布局 + 统一设计系统AgentKit 需要对齐这一标准。
## Key Decisions
**左对话 + 右双栏布局。** 对话是用户 80% 时间停留的区域,应占据左半屏全部空间。右侧上下分割为代码/工作流(右上)和监控(右下),提供辅助信息。
**全面设计系统重构 + 双主题。** 建立 CSS 变量体系(颜色/间距/圆角/字体/阴影),所有组件统一引用。同时支持浅色极简和暗色科技两种主题,用户可一键切换。
**三线并行,分迭代交付。** 布局/视觉/交互三线并行推进,分 3 个迭代交付:迭代 1 布局骨架 + 设计 Token 基础,迭代 2 双主题 + 组件样式统一,迭代 3 交互增强。
## Actors
- A1. **开发者/运维工程师** — 通过对话面板与 Agent 交互,右侧面板提供工作流编辑、监控数据等辅助信息
## Requirements
### 迭代 1布局骨架 + 设计 Token 基础
#### R1. 左对话 + 右双栏布局
将 AgentLayout 从四象限等分布局重构为「左对话 + 右双栏」布局。
- 左半屏对话面板ChatView占满左侧全部高度
- 右半屏上半:代码/工作流面板Tab 切换代码(占位)/工作流/知识库
- 右半屏下半监控面板Tab 切换监控/技能/设置
- 左右分割线可拖拽调整宽度,默认比例 55:45
- 右侧上下分割线可拖拽调整高度,默认比例 60:40
- 分割比例保存到 localStorage刷新后恢复
- 最小比例 20%,最大比例 80%
#### R2. 面板折叠为 Tab 栏
每个面板可独立折叠,折叠后仅显示 Tab 栏(约 38px 高度)。
- 右上面板折叠后仅显示 Tab 栏(代码/工作流/知识库 图标+文字)
- 右下面板折叠后仅显示 Tab 栏(监控/技能/设置 图标+文字)
- 折叠状态保存到 localStorage
- 折叠/展开有平滑过渡动画200ms ease
- 两个面板可同时折叠,对话面板获得最大空间
#### R3. 侧边导航精简为图标模式
侧边导航栏精简为 32px 宽的图标导航,点击图标切换右侧面板 Tab 内容。
- 导航项:对话、工作流、知识库、技能、监控、设置
- 点击导航图标:对应面板切换到指定 Tab 并展开
- 当前激活的导航图标高亮显示
- 导航栏可通过 TopNav 按钮折叠/展开
#### R4. Design Token 体系基础
建立 CSS 变量体系,定义所有设计令牌。
- 创建 `src/styles/tokens.css`,定义浅色主题 Token颜色、间距、圆角、字体、阴影
- Ant Design Vue 主题通过 ConfigProvider 注入 Token 值
- 所有组件引用 Token 变量,不再硬编码颜色/间距值
- 主色统一为一种(消除 `#1677ff`/`#1890ff` 混用)
#### R5. 小屏幕适配
- 屏幕宽度 < 1024px 时显示提示"请使用更大的屏幕"
- 屏幕宽度 1024-1280px 时右侧下面板默认折叠
- 屏幕宽度 1280px 时完整展示所有面板
### 迭代 2双主题 + 组件样式统一
#### R6. 暗色主题
在浅色主题基础上新增暗色主题 Token 变体
- `src/styles/tokens-dark.css` 定义暗色主题 Token
- TopNav 增加主题切换按钮太阳/月亮图标
- 主题偏好保存到 localStorage
- 暗色主题配色深色背景#1a1a2e)、荧光强调色终端原生感
- 代码/终端区域在浅色主题下也使用深色背景One Dark Pro 配色
#### R7. 组件样式统一
所有组件统一引用 Design Token消除硬编码值
- 对话面板消息气泡工具调用标签流式输出样式
- 工作流面板节点卡片属性面板画布样式
- 监控面板指标卡片图表容器时间线样式
- 通用按钮输入框标签徽章模态框统一圆角和间距
- Ant Design 全局覆盖通过 Token 驱动而非逐组件 `!important`
### 迭代 3交互增强
#### R8. 过渡动画
为所有交互添加过渡动画
- 象限折叠/展开平滑过渡200ms ease
- Tab 切换淡入淡出150ms
- 列表项加载交错渐入stagger 50ms
- 路由切换淡入淡出200ms
#### R9. 操作反馈
为用户操作提供即时反馈
- 按钮点击波纹效果或缩放反馈
- 加载状态骨架屏替代 `<a-spin>`
- 成功/失败Toast 提示替代 `alert`
- WebSocket 断连顶部横幅提示
#### R10. 空状态设计
为所有空状态提供品牌化插图和引导文案
- 对话空状态引导用户输入第一条消息
- 工作流空状态引导创建第一个工作流
- 监控空状态说明数据来源和更新频率
- 知识库空状态引导上传文档或配置信息源
- 技能空状态说明如何注册技能
#### R11. 拖拽交互增强
优化拖拽操作的视觉反馈
- 分割线拖拽拖拽时高亮分割线显示当前比例百分比
- 工作流节点拖拽放置预览指示对齐网格
- 面板折叠折叠时显示缩略预览
## Key Flows
- F1. 对话为主的工作流
- **Trigger:** 用户打开 AgentKit
- **Steps:** 左侧对话面板占满左半屏 右侧显示工作流/监控 Tab 用户在对话面板输入 Agent 回复 右侧按需展示辅助信息
- **Covered by:** R1
- F2. 主题切换
- **Trigger:** 用户点击 TopNav 主题切换按钮
- **Steps:** 点击月亮图标 所有 Token 变量切换为暗色值 界面平滑过渡到暗色主题 偏好保存到 localStorage
- **Covered by:** R6
- F3. 面板折叠获取最大对话空间
- **Trigger:** 用户需要专注对话
- **Steps:** 点击右上面板折叠按钮 面板折叠为 Tab 200ms 动画)→ 点击右下面板折叠按钮 同样折叠 对话面板获得最大空间
- **Covered by:** R2, R8
## Scope Boundaries
**在范围内:**
- 布局重构左对话 + 右双栏
- Design Token 体系 + 双主题
- 组件样式统一
- 过渡动画操作反馈空状态拖拽增强
- 侧边导航精简
- 小屏幕适配
**延迟到后续迭代:**
- 代码 Diff 查看器实现右上代码Tab 仍为占位
- Cmd+K 内联编辑类似 Cursor
- @-mention 上下文引用
- 代码 Diff Accept/Reject 实际回滚功能
- 响应式移动端适配
**不在本产品身份内:**
- 多用户协作/实时协同编辑
- 插件市场
- 代码编辑器只读预览不提供编辑能力
## Success Criteria
1. **布局合理** 对话面板占左半屏右侧辅助信息可按需折叠
2. **视觉一致** 零硬编码颜色值所有样式通过 Design Token 引用
3. **双主题可用** 浅色/暗色一键切换所有组件在两种主题下正常显示
4. **交互流畅** 所有过渡动画 200ms操作有即时反馈
5. **渐进交付** 3 个迭代完成每个迭代可独立部署
## Dependencies / Assumptions
- 现有 SplitPane 组件支持水平和垂直分割可直接复用
- 现有 QuadrantPanel 组件支持 Tab 切换和折叠可直接复用
- Ant Design Vue 4.x ConfigProvider 支持 CSS 变量主题注入
- ChatView ChatSidebar 默认折叠collapsed = true不影响左侧对话面板的空间利用
- Vue 3 `<Transition>` `<TransitionGroup>` 组件可满足过渡动画需求