test: storyline 2/3/4 exploratory test results + BUG-009/010
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
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
Storyline 2 (Teacher): 3 PASS, 1 FAIL (BUG-008 confirmed) Storyline 3 (Tech user): SSE verified, model switch OK, BUG-009 middleware bypass Storyline 4 (Mom): 3 PASS, scene 4.3 anomalous BUG-008 behavior with kimi New findings: - BUG-009 (P1): SaaS Relay bypasses all 14 middleware layers - BUG-010 (P3): No cancel button during streaming
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
| BUG-006 | 启动 | P2 | WebMCP 注册失败 TypeError: Required member is undefined | KNOWN | 需 Chrome 146+ flag |
|
||||
| BUG-007 | Admin | P2 | Admin V2 authStore 测试 19 个失败 (113 passed) | OPEN | 测试代码与实现不同步 |
|
||||
| BUG-008 | 场景1.6 | P1 | SaaS Relay 模式只发送当前消息,不发送对话历史 (无上下文记忆) | FIXED | 9442471 |
|
||||
| BUG-009 | 场景3.6 | P1 | SaaS Relay 模式绕过全部14层中间件链 (DataMasking/ButlerRouter等) | OPEN | — |
|
||||
| BUG-010 | 场景3.4 | P3 | 流式响应无明确取消按钮 (用户无法中止长响应) | OPEN | — |
|
||||
|
||||
## BUG-001 详细
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
# 故事线2: 教师"王老师" — 测试结果
|
||||
|
||||
> 角色: 初中语文老师
|
||||
> 日期: 2026-04-09
|
||||
> 模型: kimi-for-coding (via SaaS Relay)
|
||||
> 连接模式: SaaS Relay (browser)
|
||||
|
||||
## 场景结果
|
||||
|
||||
| 场景 | 描述 | 结果 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 2.1 | 《背影》教学方案设计 | PASS | 2课时完整方案,含教学目标/重难点/活动设计/分层作业 |
|
||||
| 2.2 | 阅读理解选择题出题 | PASS | 5道高质量选择题,附参考答案和设计说明 |
|
||||
| 2.3 | PPT结构规划 | PASS | 15页完整PPT结构,4大部分,含设计建议 |
|
||||
| 2.4 | 上下文记忆测试 | FAIL (BUG-008) | AI无法记忆先前对话,将《背影》PPT误解为"高效沟通的艺术" |
|
||||
|
||||
## 场景2.1 详情
|
||||
|
||||
**输入**: "你好,我是初中语文老师王老师,下周要讲《背影》这篇课文,能帮我设计一个教学方案吗?"
|
||||
|
||||
**输出质量**:
|
||||
- 教学目标完整(知识/过程/情感三维)
|
||||
- 教学重难点明确
|
||||
- 2课时安排合理
|
||||
- "细节放大镜"活动设计有创意
|
||||
- 情感变化图引导到位
|
||||
- 分层作业设计考虑周全
|
||||
|
||||
## 场景2.2 详情
|
||||
|
||||
**输入**: "帮我出5道关于《背影》的阅读理解选择题,适合初二学生。"
|
||||
|
||||
**输出质量**:
|
||||
- 5题涵盖内容理解、细节把握、主题分析
|
||||
- 答案 C/C/A/B/C 正确
|
||||
- 干扰项设计合理
|
||||
- 附加设计说明
|
||||
|
||||
## 场景2.3 详情
|
||||
|
||||
**输入**: "帮我规划一下《背影》这课的PPT结构,列出每一页的标题和要点内容。"
|
||||
|
||||
**输出质量**:
|
||||
- 15页结构,分4部分
|
||||
- 从导入→品析→升华→练习的递进设计
|
||||
- 含视觉风格、配色、动画建议
|
||||
- 龙应台《目送》引文作封底升华
|
||||
|
||||
## 场景2.4 详情 (BUG-008 复现)
|
||||
|
||||
**输入**: "把刚才的PPT大纲整理一下,帮我把第一页封面和第二页学习目标的具体内容写出来,包括可以配什么图片"
|
||||
|
||||
**预期**: 基于《背影》PPT大纲生成封面和学习目标页内容
|
||||
|
||||
**实际**: AI回复"高效沟通的艺术与技巧"封面页内容,完全丢失《背影》上下文
|
||||
|
||||
**根因**: BUG-008 — `saas-relay-client.ts:125` 只发送当前消息,不发送对话历史:
|
||||
```typescript
|
||||
messages: [{ role: 'user', content: message }], // 只有当前消息
|
||||
```
|
||||
|
||||
## 质量评估
|
||||
|
||||
| 维度 | 评分 | 说明 |
|
||||
|------|------|------|
|
||||
| 内容质量 | 9/10 | 单轮对话质量极高,专业、详细、有创意 |
|
||||
| 响应速度 | 8/10 | SSE流式响应,首token约2-3秒 |
|
||||
| 格式呈现 | 9/10 | Markdown格式完善,标题/列表/加粗使用得当 |
|
||||
| 上下文记忆 | 0/10 | 完全无记忆 (BUG-008) |
|
||||
| 用户体验 | 6/10 | 单轮体验好,多轮交互断裂严重 |
|
||||
183
docs/test-results/2026-04-09-exploratory/storyline-3-jike.md
Normal file
183
docs/test-results/2026-04-09-exploratory/storyline-3-jike.md
Normal file
@@ -0,0 +1,183 @@
|
||||
# 故事线3: 技术用户"极客张" — 测试结果
|
||||
|
||||
> 角色: 30岁软件工程师,测试边缘和系统边界
|
||||
> 日期: 2026-04-09
|
||||
> 模型: kimi-for-coding → deepseek-chat (切换测试) → kimi-for-coding
|
||||
> 连接模式: SaaS Relay (browser)
|
||||
|
||||
## 场景结果
|
||||
|
||||
| 场景 | 描述 | 结果 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 3.1 | 多模型配置 | PASS | 模型选择器3模型可用,成功切换deepseek-chat并验证 |
|
||||
| 3.2 | Agent 创建与模板 | SKIP | 浏览器模式无Tauri invoke,仅验证"创建新Agent"按钮可见 |
|
||||
| 3.3 | Pipeline 编辑与执行 | SKIP | 浏览器模式无Pipeline UI入口 |
|
||||
| 3.4 | SaaS Relay 模式(关键缺口)| PASS | SSE流式正常,首token ~2s,delta/complete事件正确 |
|
||||
| 3.5 | Browser Hand | N/A (预期) | SaaS Relay模式下无法触发Hand,AI以文字回复代替 |
|
||||
| 3.6 | 中间件链验证 | PARTIAL | DataMasking在SaaS Relay下不生效(绕过本地中间件链)|
|
||||
| 3.7 | 记忆管道深度测试 | PARTIAL | 上下文记忆因BUG-008失效,kimi-for-coding部分场景异常PASS |
|
||||
| 3.8 | 多 Agent 身份切换 | PASS | 专业模式智能体tab正常,显示默认助手+创建入口 |
|
||||
|
||||
## 场景3.1 详情 — 多模型配置
|
||||
|
||||
**测试步骤**:
|
||||
1. 点击模型选择器 → 下拉列表显示3个模型:deepseek-chat / GLM-4.7 / kimi-for-coding
|
||||
2. 切换到 deepseek-chat → 发送"你是哪个AI模型?"
|
||||
3. AI回复"我是DeepSeek,由深度求索公司创造的AI助手" → 切换生效
|
||||
4. 切换回 kimi-for-coding → 后续消息正确路由
|
||||
|
||||
**设置页面验证**:
|
||||
- 通用设置:Gateway已连接(127.0.0.1:8080),版本saas-relay,Token已存储(掩码显示)
|
||||
- 模型与 API:内置模型 + 自定义模型(添加按钮) + Embedding模型(6选项)
|
||||
- Embedding选项:本地TF-IDF / OpenAI(1536D) / 智谱AI(1024D) / 火山引擎(1024D) / 百炼(1024D) / DeepSeek(1536D)
|
||||
- 22个设置分类全部可见,从"通用"到"高级"(技能管理/语义记忆/安全状态/审计日志/定时任务/心跳配置)
|
||||
|
||||
**输出质量**: 模型切换即时生效,UI反馈清晰,设置页面结构完整
|
||||
|
||||
## 场景3.2 详情 — Agent 创建与模板
|
||||
|
||||
**状态**: SKIP (浏览器模式限制)
|
||||
|
||||
**验证**: 专业模式下"智能体"tab显示:
|
||||
- "当前: 默认助手"
|
||||
- "创建新 Agent"链接可见
|
||||
|
||||
**无法测试**: Tauri invoke('agent_create')、SOUL.md写入、fetchAvailableTemplates() 在浏览器模式不可用
|
||||
|
||||
## 场景3.3 详情 — Pipeline 编辑与执行
|
||||
|
||||
**状态**: SKIP (浏览器模式限制)
|
||||
|
||||
Pipeline编辑器需要Tauri运行时支持,浏览器SaaS Relay模式下无UI入口。
|
||||
|
||||
## 场景3.4 详情 — SaaS Relay 模式(关键缺口)
|
||||
|
||||
**这是最大的测试缺口,本轮完成手动验证。**
|
||||
|
||||
**SSE 流式验证**:
|
||||
- HTTP POST → SaaS relay → SSE 流式返回:✅ 正常
|
||||
- SSE delta 解析:✅ 内容逐字显示,无乱码
|
||||
- SSE complete 事件:✅ 响应完成后无残留"发送中"
|
||||
- 首 token 延迟:~2-3秒(符合预期)
|
||||
- 长响应(>2000字):✅ 完整显示,无截断
|
||||
- 错误消息:✅ 中文友好("Relay error: 500")+ 重试按钮
|
||||
|
||||
**流式取消测试**:
|
||||
- 发送长问题后尝试取消
|
||||
- 未找到明确的取消按钮(简洁模式和专业模式下均未发现)
|
||||
- textarea 在流式期间显示"Agent 正在回复..."并禁用
|
||||
- **注意**: 可能需要键盘快捷键(Esc)或发送按钮变形来取消,但UI未提供明确指引
|
||||
|
||||
**Token 用量显示**:
|
||||
- 专业模式顶栏显示 "88.9K" token累计
|
||||
- "发送中 4 条" 错误消息计数器可见
|
||||
|
||||
**三级验证**:
|
||||
- Desktop (browser): saas-relay-client.ts SSE事件处理正常 ✅
|
||||
- SaaS: relay/handlers.rs 请求处理正常 ✅
|
||||
- Admin: 未验证(需要后续在Admin V2验证)
|
||||
|
||||
## 场景3.5 详情 — Browser Hand
|
||||
|
||||
**状态**: N/A(SaaS Relay浏览器模式预期行为)
|
||||
|
||||
**输入**: "帮我打开百度搜索一下 ZCLAW AI 桌面客户端"
|
||||
|
||||
**实际**: AI回复"我无法直接操作您的电脑或打开外部网站"并提供手动搜索步骤
|
||||
|
||||
**分析**: Hand系统需要Tauri运行时。在SaaS Relay浏览器模式下:
|
||||
1. LLM不接收Hand工具定义(因为前端未注册Hand处理程序)
|
||||
2. LLM正确识别无法执行浏览器操作并以文字回复
|
||||
3. 这不是bug,而是平台限制
|
||||
|
||||
## 场景3.6 详情 — 中间件链验证
|
||||
|
||||
**DataMasking 测试 (FAIL)**:
|
||||
- 输入: "患者张三,身份证号 110101199001011234"
|
||||
- 预期: 身份证号被 [REDACTED] 替换
|
||||
- 实际: AI响应中完整保留了"患者张三"和"110101199001011234"
|
||||
- **根因**: SaaS Relay模式下消息直接从浏览器→SaaS→LLM,绕过了本地中间件链(DataMasking@90、ButlerRouter、TrajectoryRecorder@650)
|
||||
- **影响**: 这意味着SaaS Relay模式下所有14层中间件均不生效
|
||||
|
||||
**ButlerRouter 测试 (无法验证)**:
|
||||
- 输入: "生成本月门诊量统计报告,按科室分组"
|
||||
- 预期: ButlerRouter分类为data_report域
|
||||
- 实际: AI正常回复报告模板,但无法确认中间件是否介入分类
|
||||
- **原因**: SaaS Relay模式下ButlerRouter不参与消息处理
|
||||
|
||||
**重要发现 (BUG-009)**: SaaS Relay模式绕过全部中间件链
|
||||
|
||||
| 中间件 | 本地模式 | SaaS Relay模式 |
|
||||
|--------|----------|----------------|
|
||||
| DataMasking@90 | ✅ 生效 | ❌ 不生效 |
|
||||
| ButlerRouter | ✅ 生效 | ❌ 不生效 |
|
||||
| TrajectoryRecorder@650 | ✅ 生效 | ❌ 不生效 |
|
||||
| MemoryInjection | ✅ 生效 | ❌ 不生效 |
|
||||
| Guardrail | ✅ 生效 | ❌ 不生效 |
|
||||
|
||||
## 场景3.7 详情 — 记忆管道深度测试
|
||||
|
||||
**状态**: PARTIAL
|
||||
|
||||
**上下文记忆 (BUG-008 确认)**:
|
||||
- 消息间完全无上下文——每次消息独立
|
||||
- 但kimi-for-coding模型在故事线4场景4.3中异常地保留了"三年级"信息
|
||||
- **推测**: kimi-for-coding可能有服务端会话管理,但不稳定
|
||||
|
||||
**FTS5/TF-IDF 记忆注入**:
|
||||
- SaaS Relay模式下无法验证——记忆注入通过中间件链执行,而中间件链被绕过
|
||||
- 本地Kernel模式下应正常工作(已有自动化测试覆盖)
|
||||
|
||||
## 场景3.8 详情 — 多 Agent 身份切换
|
||||
|
||||
**状态**: PASS (UI层面)
|
||||
|
||||
**验证**:
|
||||
- 专业模式侧边栏显示"对话"和"智能体"两个tab
|
||||
- "智能体"tab显示当前Agent为"默认助手"
|
||||
- "创建新 Agent"按钮可见
|
||||
- 快速切换到"对话"tab正常
|
||||
|
||||
**未测试**: 实际创建Agent、SOUL.md写入、身份切换后对话隔离(需要Tauri运行时)
|
||||
|
||||
## 质量评估
|
||||
|
||||
| 维度 | 评分 | 说明 |
|
||||
|------|------|------|
|
||||
| SaaS Relay SSE | 9/10 | 流式完整、解析正确、首token快速 |
|
||||
| 模型切换 | 10/10 | 即时生效、3模型可选、UI清晰 |
|
||||
| 设置页面 | 9/10 | 22分类完整、结构清晰、配置直观 |
|
||||
| 中间件链 | 2/10 | SaaS Relay下全部14层中间件不生效 |
|
||||
| Hands系统 | N/A | 浏览器模式无法触发,预期行为 |
|
||||
| 记忆管道 | 3/10 | BUG-008 + 中间件绕过双重影响 |
|
||||
| 流式取消 | 3/10 | 无明确取消按钮或UI指引 |
|
||||
|
||||
## 新发现 Bug
|
||||
|
||||
### BUG-009: SaaS Relay模式绕过全部中间件链 (P1)
|
||||
|
||||
**位置**: `desktop/src/lib/saas-relay-client.ts` → SaaS relay endpoint
|
||||
|
||||
**现象**: SaaS Relay模式下,消息直接从浏览器→HTTP→SaaS→LLM,不经过本地中间件链
|
||||
|
||||
**影响**:
|
||||
- DataMasking不生效 → PHI数据直接发送到第三方LLM
|
||||
- ButlerRouter不生效 → 管家模式在SaaS Relay下无法提供域分类
|
||||
- TrajectoryRecorder不生效 → 用户体验无法记录
|
||||
- MemoryInjection不生效 → 记忆管道断裂
|
||||
- Guardrail不生效 → 安全护栏缺失
|
||||
|
||||
**严重性**: P1(数据隐私合规风险)
|
||||
|
||||
**建议修复方向**:
|
||||
1. 在SaaS relay服务端实现中间件链(服务端DataMasking)
|
||||
2. 或在浏览器端实现DataMasking预处理后再发送
|
||||
3. ButlerRouter可在SaaS端实现域分类+system prompt增强
|
||||
|
||||
### BUG-010: 流式响应无明确取消按钮 (P3)
|
||||
|
||||
**现象**: 发送消息后textarea显示"Agent 正在回复..."并禁用,但无明确的停止/取消按钮
|
||||
|
||||
**影响**: 用户无法主动取消正在生成的长响应
|
||||
|
||||
**建议**: 在流式期间将发送按钮变为停止按钮,或添加浮动取消按钮
|
||||
62
docs/test-results/2026-04-09-exploratory/storyline-4-mama.md
Normal file
62
docs/test-results/2026-04-09-exploratory/storyline-4-mama.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 故事线4: 零基础"妈妈" — 测试结果
|
||||
|
||||
> 角色: 全职妈妈,孩子三年级,AI新手
|
||||
> 日期: 2026-04-09
|
||||
> 模型: kimi-for-coding (via SaaS Relay)
|
||||
> 连接模式: SaaS Relay (browser)
|
||||
|
||||
## 场景结果
|
||||
|
||||
| 场景 | 描述 | 结果 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 4.1 | 三年级语文学习求助 | PASS | 通俗友好,零基础指导+分步建议 |
|
||||
| 4.2 | 换季增强免疫力食谱 | PASS | 6道家常食谱,附营养原理+操作建议 |
|
||||
| 4.3 | 上下文记忆测试 | PASS (异常) | AI正确回忆"三年级",与BUG-008不一致 |
|
||||
|
||||
## 场景4.1 详情
|
||||
|
||||
**输入**: "你好,我想请问一下,我家小孩今年上三年级了,语文成绩不太好,有什么方法可以帮他提高吗?我是第一次用这个AI,不太会操作"
|
||||
|
||||
**输出质量**:
|
||||
- 友好欢迎,消除新手焦虑("操作很简单——您就像平时聊天一样")
|
||||
- 针对三年级承上启下阶段给出专业分析
|
||||
- 分步诊断法:基础/阅读/写作/习惯四维度
|
||||
- 实用方法:每日听写、大声朗读、亲子共读、脚手架写作
|
||||
- 主动教用户如何使用AI(提供具体问题模板)
|
||||
- 语言通俗,无专业术语堆砌
|
||||
|
||||
## 场景4.2 详情
|
||||
|
||||
**输入**: "谢谢!另外想问一下,最近换季孩子容易感冒,有什么增强免疫力的食谱推荐吗?最好是家常菜,简单好做的"
|
||||
|
||||
**输出质量**:
|
||||
- 先讲核心原则(蛋白质/维C/维A/锌/水分)
|
||||
- 6道食谱分三类:汤羹(2) + 主食(2) + 菜肴(2)
|
||||
- 每道菜列出食材、做法、免疫亮点
|
||||
- 实用贴士:让孩子参与、变换花样、不必强求完美
|
||||
- 语言风格适合家庭用户
|
||||
|
||||
## 场景4.3 详情 (上下文记忆 — 异常行为)
|
||||
|
||||
**输入**: "对了,我刚才问你小孩语文学习的事情,你还记得我家小孩几年级吗?"
|
||||
|
||||
**预期**: FAIL (基于BUG-008,SaaS Relay不发送对话历史)
|
||||
|
||||
**实际**: AI正确回答 **"上三年级"**,并补充说明"在我们当前这次连续的交流中,您提供的关键信息会保持在对话的上下文中"
|
||||
|
||||
**分析**: 这是与BUG-008矛盾的发现。可能原因:
|
||||
1. kimi-for-coding 模型可能有服务端会话管理机制
|
||||
2. 不同模型的BUG-008表现不一致(之前 deepseek-chat/GLM-4.7 确认FAIL)
|
||||
3. 需要进一步交叉验证
|
||||
|
||||
**注意**: 此结果不推翻BUG-008(已在故事线1和2中确认3次),但表明影响范围可能仅限特定模型。
|
||||
|
||||
## 质量评估
|
||||
|
||||
| 维度 | 评分 | 说明 |
|
||||
|------|------|------|
|
||||
| 内容质量 | 9/10 | 通俗、实用、有温度,适合零基础用户 |
|
||||
| 响应速度 | 8/10 | SSE流式响应,首token约2-3秒 |
|
||||
| 格式呈现 | 8/10 | 标题/列表清晰,食谱结构完整 |
|
||||
| 新手友好度 | 10/10 | 主动消除焦虑、提供AI使用教程 |
|
||||
| 上下文记忆 | ?/10 | 单次测试PASS,但与已知BUG矛盾 |
|
||||
Reference in New Issue
Block a user