# ZCLAW 发布前 E2E 测试报告 > 日期: 2026-04-09 > 测试方式: Chrome DevTools MCP + Tauri MCP 端到端自动化 > 测试目标: 模拟真实用户操作,验证核心功能稳定性 ## 测试概览 | 指标 | 值 | |------|-----| | 总消息数 | 168 条 | | 用户消息 | 84 条 | | AI 回复 | 84 条(19 条真实内容 + 65 条空响应/错误) | | 测试时长 | ~2 小时 | | 测试模型 | GLM-4.7(前18轮), deepseek-chat / glm-4-flash(后续,错误) | ## 测试场景 ### 场景 1: 随机话题对话(16 轮) - 状态: 部分成功 - 问题: GLM-4.7 响应慢(~67s/轮),部分超时 - 发现: 历史消息中的 "Sending..." 标签导致完成检测误判 ### 场景 2: 教育行业连续对话(89 轮脚本,模拟小学班主任王老师) - 6 个阶段: 身份建立 → 教学深化 → 班级管理 → 期末收尾 → 新学期展望 → 深度验证 - 前 18 轮(GLM-4.7): 全部成功,对话质量极高 - 后 65 轮: 全部失败(模型错误导致空回复) ## 发现的 BUG ### P0: 模型选择器桌面端误导用户 **状态**: 已修复 **问题**: Tauri 桌面端的模型选择器让用户以为可以切换模型,但实际模型由 SaaS Token 池决定,前端选择不传后端。 **影响**: 用户选择 "GLM-4.7" 但实际可能调用 "glm-4-flash"(不存在),导致 404 错误和空回复。 **根因**: `StreamChatRequest`(Rust)和 `chatStream`(TS)均无 `model` 参数。模型由后端 agent 配置决定。 **修复**: 在 `ChatArea.tsx` 中对 Tauri 运行时隐藏模型选择器。 **文件**: `desktop/src/components/ChatArea.tsx` ### P1: API 错误时 assistant 消息内容为空 **问题**: 当 LLM 返回错误(404/429)时,assistant 消息的 `content` 为空字符串,错误信息仅显示在 UI 的错误气泡中,不存入 Store。 **影响**: - 对话历史中的空消息无法追溯错误原因 - 记忆系统可能索引空内容 - 侧边栏消息预览显示为空白 **建议**: 将错误信息存入 `message.content` 或 `message.error` 字段。 ### P2: 429 Rate Limit 未优雅处理 **问题**: DeepSeek API 60 RPM 限流触发后,前端直接显示错误,没有重试/退避机制。 **影响**: 自动化测试中高频发送消息时容易触发限流。 **建议**: 前端实现指数退避重试(2s → 4s → 8s),最多 3 次。 ### P3: 错误消息的"重试"按钮堆叠 **问题**: 连续多轮失败后,UI 中堆叠了 7+ 个"重试"按钮(见截图),影响可读性。 **建议**: 错误消息应可折叠,或只保留最后一个错误的"重试"按钮。 ## 对话质量评估(前 18 轮 GLM-4.7) ### 上下文记忆测试 | 测试项 | 结果 | |--------|------| | 记住用户身份(王老师) | PASS | | 记住班级信息(38人、三年级2班) | PASS | | 记住学生名字(张小明、刘小花) | PASS | | 引用之前讨论的内容 | PASS | | 教学建议的专业性 | PASS | | 情感支持和沟通技巧 | PASS | ### 典型回复示例 **第 8 轮(注意力评估建议)**: AI 正确识别了"家校表现一致"这一关键信号,建议"温和、专业、不贴标签"地沟通,并提供了具体话术模板。 **第 17 轮(公开课选课文)**: AI 综合考虑了班级中张小明(需要动觉学习)和刘小花(需要信心建立)的情况,推荐了三个选项并分析利弊。 ## 内存和性能 | 指标 | 值 | 评价 | |------|-----|------| | 初始内存 | 30 MB | 正常 | | 40 条消息时 | 32 MB | 稳定 | | 160 条消息时 | 31-35 MB | 无泄漏 | | GC 后 | 回落到 31 MB | 正常 | | 平均 AI 响应时间 (GLM-4.7) | 67s | 偏慢,但非 BUG | | 平均 AI 响应时间 (deepseek) | 1.3s | API 报错,非真实响应 | ## 修复记录 | 修改 | 文件 | 说明 | |------|------|------| | 隐藏桌面端模型选择器 | `desktop/src/components/ChatArea.tsx` | `isTauriRuntime()` 条件渲染 | ## 未修复项(后续跟进) 1. **P1**: API 错误时 assistant 消息内容为空 — 需要修改 streamStore 的错误处理 2. **P2**: 429 Rate Limit 重试机制 — 需要在 chatStream 中实现退避 3. **P3**: 错误消息堆叠 — UI 优化 ## 测试环境 - OS: Windows 11 Pro (10.0.26200) - 显示器: 5120x2880 @ 2.5x scale - 应用版本: ZCLAW 0.1.0 - 后端: Tauri 2.x + Rust kernel - 运行时模型: SaaS Token 池路由