Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
- Create docs/brainstorming/ with 5 discussion records (Mar 16 - Apr 7) - Archive ~30 outdated audit reports (V5-V11) to docs/archive/old-audits/ - Archive superseded analysis docs to docs/archive/old-analysis/ - Archive completed session plans to docs/archive/old-plans/ - Archive old test reports/validations to respective archive folders - Remove empty directories left after moves - Keep current docs: TRUTH.md, feature docs, deployment, knowledge-base, superpowers
15 KiB
15 KiB
ZCLAW 前端全面调试计划
调试目标
从用户角度全面验证 ZCLAW 桌面应用前端的功能完整性、可用性,确保所有交互流程正常工作,数据流正确,UI 响应符合预期。
调试环境
前端服务
- URL: http://localhost:1420
- 框架: React + Vite + Tauri
- 代理:
/api->http://127.0.0.1:50051(ZCLAW 后端)
启动步骤 (⚠️ 需要先启动服务)
步骤 0: 启动服务 (在测试前必须完成)
# 终端 1: 启动后端服务
cd g:\ZClaw_zclaw
pnpm dev
# 等待后端服务就绪 (看到 "Server started" 或类似消息)
# 终端 2: 启动前端开发服务器 (新开一个终端)
cd g:\ZClaw_zclaw\desktop
pnpm dev
# 等待 Vite 服务就绪 (看到 "Local: http://localhost:1420")
服务就绪标志:
- 后端: 控制台显示服务启动成功,监听端口 50051 或 4200
- 前端: Vite 显示
Local: http://localhost:1420/
调试范围
模块概览
| 模块 | 文件位置 | 优先级 |
|---|---|---|
| 聊天模块 | desktop/src/components/chat/ |
P0 |
| Agent/克隆管理 | desktop/src/components/agents/, desktop/src/store/agentStore.ts |
P0 |
| Hands 系统 | desktop/src/components/hands/, desktop/src/store/handStore.ts |
P1 |
| 工作流调度 | desktop/src/components/workflows/, desktop/src/store/ |
P1 |
| 团队协作 | desktop/src/components/team/, desktop/src/store/teamStore.ts |
P1 |
| 内存系统 | desktop/src/components/memory/, desktop/src/store/memoryStore.ts |
P1 |
| 设置管理 | desktop/src/components/settings/ |
P2 |
| 布局/导航 | desktop/src/components/layout/ |
P2 |
| 状态管理 | desktop/src/store/ | P2 |
详细测试用例
1. 聊天模块 (ChatArea.tsx) [P0]
1.1 消息发送
步骤:
-
打开应用,导航到聊天页面
-
在输入框中输入消息 "你好,请介绍一下你自己"
-
点击发送按钮
-
验证:
- 消息显示在聊天区域
- 发送后输入框被清空
- 消息状态更新为"已发送"
- 有响应返回(流式或完整)
网络请求验证:
- 检查是否发送
POST /api/chat请求 - 验证请求体格式:
{ message, agent_id?, session_id? }
1.2 流式响应
步骤:
-
发送一条消息
-
观察/验证流式响应:
- 逐字/逐块显示文本
- 有打字机效果
- 滚动区域自动滚动到底部
- 流式完成有正确标识
WebSocket 验证:
-
检查是否建立 WebSocket 连接
-
验证消息格式符合预期
-
检查是否有心跳/ping 机制
1.3 Agent 切换
步骤:
- 点击 Agent 选择下拉菜单
- 选择不同的 Agent
- 验证:
- 下拉菜单正确显示
- Agent 切换成功
- 后续消息使用新 Agent
- 状态正确更新 API 验证:
- 检查是否调用
/api/agents获取列表 - 验证切换时是否更新上下文
1.4 模型选择
步骤:
- 打开模型选择器
- 选择不同的模型 (如 GPT-4, Claude)
- 验证:
- 选择器更新
- 后续请求使用新模型
- 设置持久化 API 验证:
- 检查是否调用
/api/config或类似端点 - 验证配置是否保存到后端
1.5 会话管理
步骤:
- 发送多条消息
- 刷新页面
- 验证:
- 会话历史是否恢复
- 可以继续对话
- "新对话" 按钮可以开始新会话 持久化验证:
- 检查 localStorage 是否保存会话信息
- 验证刷新后的恢复逻辑
1.6 错误处理
步骤:
- 断开后端连接
- 尝试发送消息
- 验证:
- 显示错误消息
- 有重试机制
- 重连后恢复正常 错误边界:
- 验证网络超时处理
- 验证服务器错误响应
- 验证无效输入处理
1.7 Markdown/代码渲染
步骤:
- 发送包含 Markdown 格式的消息
- 代码块: ```code```
- 粗体: bold
- 列表: - item
- 验证:
- Markdown 正确渲染
- 代码语法高亮
- 列表格式正确 渲染库:
- 检查使用的渲染库 (react-markdown 或类似)
- 验证 XSS 防护
2. Agent/克隆管理 (AgentMemoryPanel.tsx, CloneManager.tsx)
2.1 Agent 列表
步骤:
- 导航到 Agent 管理页面
- 验证:
- 显示 Agent 列表
- 每个 Agent 显示名称、描述、状态
- 可以搜索/过滤 Agent API 验证:
- 检查是否调用
/api/agents获取列表 - 验证响应数据结构
2.2 创建 Agent
步骤:
- 点击"创建 Agent" 按钮
- 填写表单 (名称、描述、模型等)
- 提交表单
- 验证:
- 表单验证正确
- 创建成功
- 新 Agent 出现在列表中 API 验证:
- 检查是否发送
POST /api/agents请求 - 验证请求体格式
2.3 编辑 Agent
步骤:
- 选择一个 Agent
- 点击编辑按钮
- 修改信息
- 保存
- 验证:
- 编辑表单正确预填充
- 保存成功
- 更新反映在列表中 API 验证:
- 检查是否发送
PUT /api/agents/{id}请求
2.4 删除 Agent
步骤:
- 选择一个 Agent
- 点击删除按钮
- 确认删除
- 验证:
- 显示确认对话框
- 删除成功
- Agent 从列表中移除 API 验证:
- 检查是否发送
DELETE /api/agents/{id}请求
2.5 Agent 快速设置
步骤:
- 打开 Agent 快速设置面板
- 调整各种设置
- 验证:
- 设置项正确显示
- 修改立即生效
- 设置持久化 持久化验证:
- 检查设置是否保存到 localStorage
- 验证重启后设置保持
3. Hands 系统 (HandsPanel.tsx)
3.1 Hands 列表
步骤:
- 导航到 Hands 面板
- 验证:
- 显示 7 个 Hand 卡片
- 每个 Hand 显示名称、描述、状态
- 可以查看 Hand 详情 Hands 列表验证:
- Clip: 视频处理
- Lead: 销售线索发现
- Collector: 数据收集
- Predictor: 预测分析
- Researcher: 深度研究
- Twitter: Twitter 自动化
- Browser: 浏览器自动化
3.2 触发 Hand
步骤:
- 选择一个 Hand
- 点击"触发" 或 "执行" 按钮
- 验证:
- 显示执行参数表单 (如有)
- 执行开始
- 显示执行状态
- 完成后显示结果 API 验证:
- 检查是否调用
/api/hands/{name}/trigger请求 - 验证执行结果
3.3 Hand 审批流程
步骤:
- 触发需要审批的 Hand
- 验证:
- 显示审批请求
- 可以批准/拒绝
- 审批状态正确更新 API 验证:
- 检查是否调用
/api/hands/approvals获取列表 - 验证审批操作
3.4 Hand 执行历史
步骤:
- 查看 Hand 执行历史
- 验证:
- 显示历史记录列表
- 包含时间、状态、结果
- 可以筛选/过滤 API 验证:
- 检查是否调用
/api/hands/{name}/runs获取历史
4. 工作流调度 (WorkflowEditor.tsx)
4.1 工作流列表
步骤:
- 导航到工作流页面
- 验证:
- 显示工作流列表
- 每个工作流显示名称、状态、进度
- 可以搜索/过滤 API 验证:
- 检查是否调用
/api/workflows获取列表
4.2 创建工作流
步骤:
- 点击"创建工作流" 按钮
- 添加步骤/任务
- 配置触发器
- 保存
- 验证:
- 步骤可以拖拽排序
- 可以添加条件分支
- 触发器配置正确
- 保存成功 API 验证:
- 检查是否发送
POST /api/workflows请求 - 验证工作流定义格式
4.3 执行工作流
步骤:
- 选择一个工作流
- 点击"执行" 按钮
- 验证:
- 显示执行进度
- 步骤状态正确更新
- 完成后显示结果 WebSocket 验证:
- 检查是否收到工作流执行事件
- 验证进度更新
4.4 暂停/取消工作流
步骤:
- 执行一个工作流
- 中途点击"暂停" 或 "取消"
- 验证:
- 操作成功
- 状态正确更新
- 可以恢复执行 API 验证:
- 检查是否调用
/api/workflows/{id}/pause或/api/workflows/{id}/cancel请求
5. 团队协作 (TeamCollaborationView.tsx)
5.1 团队列表
步骤:
- 导航到团队页面
- 验证:
- 显示团队列表
- 每个团队显示成员数量、状态
- 可以搜索团队 API 验证:
- 检查是否调用
/api/teams获取列表
5.2 创建团队
步骤:
- 点击"创建团队" 按钮
- 添加成员
- 配置权限
- 保存
- 验证:
- 可以添加多个 Agent
- 权限配置正确
- 保存成功 API 验证:
- 棹查是否发送
POST /api/teams请求
5.3 协调 Agent
步骤:
- 选择一个团队
- 点击"协调" 按钮
- 分配任务
- 验证:
- 显示任务分配界面
- 可以选择 Agent
- 分配成功 API 验证:
- 检查是否调用协调相关 API
5.4 查看协作状态
步骤:
- 查看团队协作状态
- 验证:
- 显示各 Agent 状态
- 显示任务进度
- 可以发送消息 WebSocket 验证:
- 检查协作事件是否正确推送
6. 内存系统 (MemoryPanel.tsx, M/MemoryPanel.tsx)
6.1 内存列表
步骤:
- 导航到内存页面
- 验证:
- 显示记忆列表
- 每条记忆显示类型、时间、重要性
- 可以搜索记忆 API 验证:
- 检查是否调用
/api/memory获取列表
6.2 添加记忆
步骤:
- 点击"添加记忆" 按钮
- 输入记忆内容
- 设置标签/分类
- 保存
- 验证:
- 表单正确提交
- 保存成功
- 新记忆出现在列表中 API 验证:
- 检查是否发送
POST /api/memory请求
6.3 搜索记忆
步骤:
- 在搜索框中输入关键词
- 验证:
- 搜索结果正确显示
- 可以按相关性排序
- 高亮匹配关键词 API 验证:
- 检查是否调用
/api/memory/search请求
6.4 记忆分类
步骤:
- 查看记忆分类/标签
- 验证:
- 分类正确显示
- 可以按分类筛选
- 记忆数量统计正确 持久化验证:
- 检查分类数据结构
7. 设置管理 (GeneralSettings.tsx, ModelSettings.tsx)
7.1 通用设置
步骤:
- 打开设置页面
- 验证:
- 显示所有设置项
- 当前值正确显示
- 可以编辑并保存
- 设置分组清晰 API 验证:
- 检查是否调用
/api/config获取当前配置 - 验证保存时发送
PUT /api/config请求
7.2 模型设置
步骤:
- 导航到模型设置
- 验证:
- 显示可用模型列表
- 可以选择默认模型
- 可以配置模型参数
- API Key 配置 API 验证:
- 检查是否调用
/api/models获取列表 - 验证 API Key 保存安全
7.3 主题设置
步骤:
- 切换主题 (亮色/暗色)
- 验证:
- 主题正确切换
- 颜色/样式正确应用
- 设置持久化 持久化验证:
- 检查 localStorage 是否保存主题设置
7.4 语言设置
步骤:
- 切换语言 (中文/英文)
- 验证:
- 界面语言正确切换
- 日期/数字格式正确显示
- 设置持久化 国际化验证:
- 检查 i18n 是否正确工作
8. 布局/导航 (Header.tsx, Sidebar.tsx)
8.1 主导航
步骤:
- 检查顶部导航栏
- 验证:
- 显示应用名称/Logo
- 导航菜单正确
- 当前页面高亮
- 可以点击切换页面 路由验证:
- 检查路由配置是否正确
8.2 侧边栏
步骤:
- 点击侧边栏切换按钮
- 验证:
- 侧边栏正确展开/收起
- 菜单项正确显示
- 可以点击导航
- 动画流畅 响应式验证:
- 检查在不同屏幕尺寸下的表现
- 验证移动端适配
8.3 响应式布局
步骤:
- 调整浏览器窗口大小
- 验证:
- 布局正确适应
- 没有元素溢出
- 文字可读性良好
- 侧边栏自动收起 (移动端) CSS 验证:
- 检查媒体查询是否正确设置
9. 状态管理 (stores)
9.1 Zustand Stores
验证项目:
- 检查各个 store 的状态
- 验证:
- 初始状态正确
- actions 可以正确触发
- 状态更新正确
- 选择器返回正确数据
9.2 持久化
步骤:
- 修改状态
- 刷新页面
- 验证:
- 状态正确恢复
- 没有数据丢失 存储验证:
- 检查 localStorage/sessionStorage 数据
- 验证序列化/反序列化正确
10. 错误处理
10.1 全局错误处理
步骤:
- 触发各种错误场景
- 验证:
- 错误消息清晰
- 有恢复机制
- 可以重试操作
- 错误日志正确记录
10.2 网络错误
步骤:
- 断开网络
- 尝试操作
- 验证:
- 显示网络错误
- 自动重连
- 恢复后正常工作
10.3 表单验证
步骤:
- 输入无效数据
- 验证:
- 显示验证错误
- 不能提交无效表单
- 错误提示清晰
11. 性能测试
11.1 消息列表虚拟滚动
步骤:
- 发送大量消息
- 滚动消息列表
- 验证:
- 滚动流畅
- 没有卡顿
- 内存稳定 虚拟列表验证:
- 检查是否使用 react-window 或类似库
- 验证虚拟化实现
11.2 大数据集渲染
步骤:
- 加载大量 Agent/工作流
- 验证:
- 渲染流畅
- 分页/虚拟滚动正常
- 搜索/过滤响应快
12. 无障碍测试
12.1 键盘导航
步骤:
- 使用 Tab 键导航
- 验证:
- Tab 顺序正确
- 焦点可见
- 可以用 Enter 激活
12.2 屏幕阅读器
步骤:
- 使用屏幕阅读器
- 验证:
- 元素有正确的 aria 标签
- 图片有 alt 文本
- 表单有 label
测试工具配置
- Chrome DevTools MCP: 用于页面交互、快照、网络监控
- 控制台日志: 监控错误和警告
- 网络面板: 验证 API 请求/响应
- 性能面板: 监控渲染性能
訡拟用户场景
- 新用户首次使用: 从空白状态开始,无历史数据
- 日常使用: 有历史会话和配置
- 多任务场景: 同时操作多个功能
- 错误恢复: 处理各种错误情况
- 性能压力: 大数据量操作
预期产出
- 功能验证报告: 每个功能的测试结果
- 问题清单: 发现的 bug 和改进建议
- 性能报告: 渲染和网络性能数据
- 无障碍报告: 无障碍测试结果
- 建议: 优化和改进建议