192 lines
11 KiB
Markdown
192 lines
11 KiB
Markdown
---
|
||
date: "2026-06-13"
|
||
topic: "agentkit-platform-experience-upgrade"
|
||
---
|
||
|
||
## Summary
|
||
|
||
Fischer AgentKit 平台体验全面升级——布局重构为左对话+右双栏、对话体验深化(首 Token 即渲染+消息格式增强+@-mention 四类引用)、响应速度核心优化(启发式路由+合并 LLM 调用)、暗色主题与交互增强、Computer Use MVP——分三个冲击波迭代交付。
|
||
|
||
## Problem Frame
|
||
|
||
当前 AgentKit 处于"后端能力丰富、前端体验粗糙"的失衡状态。后端已实现 ReAct 推理、Skill 系统、Pipeline 编排、三层记忆、自进化、多 Agent 市场等完整能力,但 GUI 仍停留在功能可用层面:四象限等分布局让对话空间被压缩到 1/4 屏幕;消息仅支持纯文本渲染,代码块无高亮、工具调用无可视化;用户输入后需等待 5-10 秒才看到首个响应 Token;无暗色主题、无过渡动画、无操作反馈;Computer Use 前后端均为占位状态。
|
||
|
||
竞品(Devin、Cursor、v0.dev)已普遍采用 Agent-First 布局 + 统一设计系统 + 流式渲染 + 视觉操作能力。AgentKit 需要对齐这一标准,将"能用"升级为"好用"。
|
||
|
||
## Key Decisions
|
||
|
||
**冲击波迭代策略。** 三个迭代各聚焦一个体验质变:迭代 1 解决对话"快且宽敞"(布局+速度+格式),迭代 2 解决"丰富且精准"(双主题+@-mention+交互),迭代 3 解决"专业且全能"(Computer Use+剩余优化)。每个迭代交付后用户都能感受到明确的体验提升。
|
||
|
||
**四线并行。** GUI 产品化、Chat 体验深化、响应速度优化、Computer Use 四条线并行推进,每个迭代从每条线各取一部分,交叉组合为端到端可交付的体验升级。
|
||
|
||
**Computer Use MVP 先截屏后容器。** 先实现截屏查看+简单点击操作的前后端闭环,Docker 容器化隔离延后。MVP 让用户能通过对话让 Agent"看到"屏幕并执行简单操作,验证价值后再投入容器化成本。
|
||
|
||
**@-mention 四类全覆盖。** 支持 @文件、@技能、@工作流、@Agent 四类引用,在对话输入框中通过 autocomplete 下拉选择,选中后作为上下文注入 Agent 推理。
|
||
|
||
**Cmd+K 内联编辑延后。** AgentKit 当前没有代码编辑器,Cmd+K 的场景定义不清,延后到代码预览集成完成后再评估。
|
||
|
||
## Actors
|
||
|
||
- A1. **开发者/运维工程师** — 通过对话面板与 Agent 交互,使用 @-mention 引用上下文,通过 Computer Use 让 Agent 操作远程环境
|
||
- A2. **Agent** — 接收用户消息,执行推理和工具调用,流式返回结果,响应 @-mention 注入的上下文
|
||
|
||
## Requirements
|
||
|
||
### 迭代 1:对话体验质变
|
||
|
||
#### 布局重构
|
||
|
||
R1. 左对话 + 右双栏布局 — AgentLayout 从四象限等分布局重构为左半屏对话面板 + 右半屏上下双栏(上:代码/工作流/知识库,下:监控/技能/设置),左右分割默认 55:45,右侧上下分割默认 60:40,分割比例保存到 localStorage
|
||
|
||
R2. 面板折叠为 Tab 栏 — 每个面板可独立折叠为约 38px 的 Tab 栏,折叠状态保存到 localStorage,折叠/展开有 200ms ease 过渡动画
|
||
|
||
R3. 侧边导航精简为图标模式 — 32px 宽图标导航栏,点击图标切换右侧面板 Tab 并展开,当前激活图标高亮,导航栏可通过 TopNav 按钮折叠/展开
|
||
|
||
R4. 小屏幕适配 — <1024px 显示提示,1024-1280px 右下面板默认折叠,≥1280px 完整展示
|
||
|
||
#### 响应速度核心
|
||
|
||
R5. 启发式分类器替代 LLM quick_classify — 用零成本的本地启发式规则(消息长度、关键词密度、工具提示检测)替代 `CostAwareRouter.quick_classify()` 的 LLM 调用,通过配置开关可回退到 LLM 模式
|
||
|
||
R6. 合并路由 LLM 调用 — 当启发式不确定需要 LLM 路由时,将复杂度评分和意图分类合并为单次 LLM 调用,而非两次串行调用
|
||
|
||
R7. 首 Token 即渲染 — 前端 WebSocket 接收到首个流式 Token 即开始渲染,不等完整块;后端 ReActEngine 流式输出与前端渲染对齐
|
||
|
||
#### 消息格式增强
|
||
|
||
R8. 代码块语法高亮 — 消息中的代码块自动识别语言并语法高亮,支持复制按钮
|
||
|
||
R9. 工具调用可视化 — 工具调用显示为可折叠的步骤卡片,展示工具名称、参数摘要、执行状态、结果预览,替代当前的纯文本标签
|
||
|
||
R10. 图片和文件预览 — 消息中的图片内联显示缩略图,文件显示为可下载卡片(文件名+大小+类型图标)
|
||
|
||
### 迭代 2:专业感 + 精准度
|
||
|
||
#### 设计系统
|
||
|
||
R11. 暗色主题 — 在浅色 Token 基础上新增暗色主题 Token 变体,TopNav 增加主题切换按钮,偏好保存到 localStorage,暗色配色为深色背景+荧光强调色+终端原生感
|
||
|
||
R12. 组件样式统一 — 所有组件统一引用 Design Token,消除硬编码值,Ant Design 全局覆盖通过 Token 驱动
|
||
|
||
#### @-mention 上下文引用
|
||
|
||
R13. @-mention Autocomplete — 对话输入框中输入 `@` 触发下拉选择器,支持 @文件(知识库文档)、@技能(已注册技能)、@工作流(已有工作流)、@Agent(已配置 Agent),支持模糊搜索
|
||
|
||
R14. @-mention 上下文注入 — 选中的引用项作为结构化上下文注入 Agent 推理,后端解析引用类型和 ID,将对应内容(文档片段、技能描述、工作流定义、Agent 配置)加入对话上下文
|
||
|
||
R15. @-mention 引用标签 — 输入框中已选引用显示为可删除的标签(类似 ContextPill),发送后消息中显示为可点击的引用链接
|
||
|
||
#### 交互增强
|
||
|
||
R16. 过渡动画 — 面板折叠/展开 200ms ease、Tab 切换 150ms 淡入淡出、列表项交错渐入 stagger 50ms、路由切换 200ms 淡入淡出
|
||
|
||
R17. 操作反馈 — 按钮点击波纹/缩放反馈、加载状态骨架屏替代 `a-spin`、成功/失败 Toast 提示、WebSocket 断连顶部横幅
|
||
|
||
R18. 空状态设计 — 对话/工作流/监控/知识库/技能空状态各有品牌化插图和引导文案
|
||
|
||
### 迭代 3:能力扩展
|
||
|
||
#### Computer Use MVP
|
||
|
||
R19. 截屏查看 — Agent 可对目标环境执行截屏操作,截图实时显示在 Computer Use 面板中,支持缩放和滚动
|
||
|
||
R20. 简单点击操作 — Agent 可在截屏上执行点击操作(指定坐标),操作结果通过新的截屏反馈
|
||
|
||
R21. Computer Use 面板 — 右上面板新增 Computer Use Tab,展示截屏画面和操作历史,支持手动截屏触发
|
||
|
||
#### 响应速度剩余优化
|
||
|
||
R22. 并行工具执行 — ReActEngine 中多个独立 tool_calls 使用 `asyncio.gather()` 并行执行,结果按 tool_call_id 顺序追加,通过配置开关可回退串行模式
|
||
|
||
R23. 异步会话写入 — SessionManager 的 `append_message()` 改为非阻塞,使用写前缓冲区防止消息丢失,优雅关闭时 flush
|
||
|
||
#### 拖拽交互增强
|
||
|
||
R24. 分割线拖拽增强 — 拖拽时高亮分割线,显示当前比例百分比
|
||
|
||
R25. 面板折叠缩略预览 — 面板折叠时显示缩略内容预览
|
||
|
||
## Key Flows
|
||
|
||
- F1. 对话为主的工作流
|
||
- **Trigger:** 用户打开 AgentKit
|
||
- **Steps:** 左侧对话面板占满左半屏 → 用户输入消息 → 启发式分类器即时判断复杂度 → ReActEngine 流式推理 → 首 Token 即渲染 → 工具调用显示为步骤卡片 → 代码块语法高亮 → 右侧按需展示辅助信息
|
||
- **Covered by:** R1, R5, R7, R8, R9
|
||
|
||
- F2. @-mention 上下文引用
|
||
- **Trigger:** 用户在对话输入框输入 `@`
|
||
- **Steps:** 下拉选择器弹出 → 用户输入关键词模糊搜索 → 选择引用项 → 引用显示为标签 → 发送消息 → 后端解析引用 → 对应内容注入 Agent 上下文 → Agent 基于引用内容推理
|
||
- **Covered by:** R13, R14, R15
|
||
|
||
- F3. Computer Use 操作
|
||
- **Trigger:** 用户让 Agent 执行视觉操作(如"帮我点击屏幕上的保存按钮")
|
||
- **Steps:** Agent 调用截屏工具 → 截图显示在 Computer Use 面板 → Agent 分析截图定位目标 → 执行点击操作 → 新截屏反馈操作结果 → 用户可在面板中查看操作历史
|
||
- **Covered by:** R19, R20, R21
|
||
|
||
- F4. 主题切换
|
||
- **Trigger:** 用户点击 TopNav 主题切换按钮
|
||
- **Steps:** 点击月亮/太阳图标 → 所有 Token 变量切换 → 界面平滑过渡 → 偏好保存到 localStorage
|
||
- **Covered by:** R11
|
||
|
||
## Scope Boundaries
|
||
|
||
**在范围内:**
|
||
- 布局重构(左对话 + 右双栏)
|
||
- Design Token 体系 + 双主题
|
||
- 组件样式统一
|
||
- 首 Token 即渲染
|
||
- 消息格式增强(代码高亮、工具调用卡片、图片/文件预览)
|
||
- @-mention 四类引用(文件、技能、工作流、Agent)
|
||
- 响应速度优化(启发式路由、合并调用、并行工具、异步写入)
|
||
- Computer Use MVP(截屏+点击,不含 Docker 容器化)
|
||
- 过渡动画、操作反馈、空状态、拖拽增强
|
||
- 侧边导航精简
|
||
- 小屏幕适配
|
||
|
||
**延迟到后续迭代:**
|
||
- Cmd+K 内联编辑
|
||
- Computer Use Docker 容器化隔离
|
||
- 代码 Diff 查看器实现(右上「代码」Tab 仍为占位)
|
||
- 代码 Diff 的 Accept/Reject 实际回滚功能
|
||
- 响应式移动端适配
|
||
- httpx 连接池配置优化
|
||
- A/B 测试框架和性能基准 CI
|
||
|
||
**不在本产品身份内:**
|
||
- 多用户协作/实时协同编辑
|
||
- 插件市场
|
||
- 代码编辑器(只读预览,不提供编辑能力)
|
||
|
||
## Success Criteria
|
||
|
||
1. **布局合理** — 对话面板占左半屏,右侧辅助信息可按需折叠
|
||
2. **首 Token <1s** — 简单对话(问候、Q&A)首 Token 延迟低于 1 秒
|
||
3. **消息丰富** — 代码块有语法高亮,工具调用有可视化卡片,图片/文件有预览
|
||
4. **@-mention 可用** — 四类引用均可 autocomplete 选择并注入上下文
|
||
5. **双主题可用** — 浅色/暗色一键切换,所有组件在两种主题下正常显示
|
||
6. **Computer Use MVP** — Agent 能截屏查看并执行点击操作
|
||
7. **交互流畅** — 所有过渡动画 ≤200ms,操作有即时反馈
|
||
8. **渐进交付** — 分 3 个迭代完成,每个迭代可独立部署
|
||
|
||
## Dependencies / Assumptions
|
||
|
||
- 现有 SplitPane 和 QuadrantPanel 组件支持水平和垂直分割,可直接复用
|
||
- Ant Design Vue 4.x 的 ConfigProvider 支持 CSS 变量主题注入
|
||
- ChatView 的 ChatSidebar 默认折叠,不影响左侧对话面板的空间利用
|
||
- Vue 3 的 `<Transition>` 和 `<TransitionGroup>` 可满足过渡动画需求
|
||
- `CostAwareRouter` 已有 `_tokenize_content()` 和 `_match_layer0()` 规则基础,启发式分类器可复用
|
||
- `IntentRouter._classify_with_llm()` 的 prompt 结构可扩展为同时返回复杂度评分
|
||
- Computer Use MVP 不依赖 Docker,可直接在宿主环境执行截屏和点击
|
||
- 现有 `tools/computer_use_session.py` 的 TODO 占位需要替换为实际实现
|
||
- 响应速度优化已有详细实施计划(docs/plans/2026-06-12-021-feat-chat-response-speed-optimization-plan.md),U1-U6 可直接沿用
|
||
|
||
## Outstanding Questions
|
||
|
||
**Resolved:**
|
||
- Computer Use MVP 的截屏实现方式:使用 OpenCLI
|
||
|
||
**Deferred to Planning:**
|
||
- @-mention 后端解析的具体协议:引用项如何在 WebSocket 消息中编码,与现有 `chat` 消息类型如何兼容
|
||
- 工具调用步骤卡片的折叠/展开交互细节
|
||
- 骨架屏的具体形状和占位内容
|