Files
zclaw_openfang/plans/foamy-imagining-sun.md
iven ce562e8bfc feat: complete Phase 1-3 architecture optimization
Phase 1 - Security:
- Add AES-GCM encryption for localStorage fallback
- Enforce WSS protocol for non-localhost WebSocket connections
- Add URL sanitization to prevent XSS in markdown links

Phase 2 - Domain Reorganization:
- Create Intelligence Domain with Valtio store and caching
- Add unified intelligence-client for Rust backend integration
- Migrate from legacy agent-memory, heartbeat, reflection modules

Phase 3 - Core Optimization:
- Add virtual scrolling for ChatArea with react-window
- Implement LRU cache with TTL for intelligence operations
- Add message virtualization utilities

Additional:
- Add OpenFang compatibility test suite
- Update E2E test fixtures
- Add audit logging infrastructure
- Update project documentation and plans

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 22:11:50 +08:00

277 lines
6.8 KiB
Markdown
Raw Permalink 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.

# ZCLAW 端到端可用性验证计划
## 背景
ZCLAW 项目架构设计出色68个Skills、7个Hands、智能层lib但**端到端可用性未经验证**。317个单元测试通过不代表产品可用需要真实跑通核心闭环。
**目标**:验证从用户启动应用 → 连接后端 → 对话 → 触发自动化 → 记忆持久化的完整流程。
---
## 验证阶段概览
| 阶段 | 内容 | 预计时间 |
|------|------|----------|
| 1. 前置准备 | 环境检查、配置验证 | 15分钟 |
| 2. 基础验证 | Gateway连接、基础对话 | 25分钟 |
| 3. 功能验证 | Hands触发、记忆持久化 | 30分钟 |
| 4. 集成验证 | 飞书集成、端到端工作流 | 25分钟 |
| 5. 自动化验证 | E2E测试套件 | 60分钟 |
---
## Phase 1: 前置准备
### 1.1 环境检查
```powershell
# 检查依赖
pnpm --version # >= 8.x
pnpm tauri --version # 2.x
# 检查 OpenFang Runtime
dir desktop\src-tauri\resources\openfang-runtime\
# 检查 Playwright
cd desktop && pnpm playwright --version
```
### 1.2 配置验证
检查文件:
- `config/config.toml` - 端口4200、CORS配置
- `config/chinese-providers.toml` - API Keys可选
```powershell
# 验证配置
type config\config.toml | findstr /C:"port" /C:"cors_origins"
```
### 1.3 依赖安装
```powershell
cd desktop
pnpm install
pnpm playwright install chromium
```
**成功标准**:所有依赖安装完成,无错误
---
## Phase 2: 基础验证
### 2.1 Gateway 连接测试
**手动步骤**
1. 启动应用:`.\start-all.ps1 -Dev`
2. 等待 Tauri 窗口打开
3. 观察连接状态指示器(绿色=已连接)
**自动验证**
```powershell
cd desktop
pnpm playwright test --project=chromium --grep "GW-CONN"
```
**验证点**
| 测试ID | 描述 | 成功标准 |
|--------|------|----------|
| GW-CONN-01 | 健康检查 | `{ status: 'ok' }` |
| GW-CONN-02 | 连接状态 | Store显示`connected` |
| GW-CONN-03 | 模型列表 | 返回模型数组 |
| GW-CONN-04 | Agent列表 | 返回Agent数组 |
**连接参数**gateway-client.ts
- 心跳间隔30秒
- 最大丢失心跳3次
- 重连尝试最多10次指数退避
### 2.2 基础对话测试
**手动步骤**
1. 在输入框输入消息
2. 点击发送按钮
3. 观察流式响应
**自动验证**
```powershell
pnpm playwright test --project=chromium --grep "CHAT-MSG"
```
**验证点**
| 测试ID | 描述 | 成功标准 |
|--------|------|----------|
| CHAT-MSG-01 | 发送接收消息 | 用户+AI消息可见 |
| CHAT-MSG-02 | Store状态更新 | 消息计数增加 |
| CHAT-MSG-03 | 流式响应指示 | isStreaming正确切换 |
**成功标准**消息2秒内显示流式指示器正常无错误
---
## Phase 3: 功能验证
### 3.1 Hands 触发测试
**自动验证**
```powershell
pnpm playwright test --project=chromium --grep "HAND-TRIG"
```
**验证点**
| 测试ID | 描述 | 成功标准 |
|--------|------|----------|
| HAND-TRIG-01 | Hands列表加载 | 返回Hands数组 |
| HAND-TRIG-02 | 激活Hand | 返回runId |
| HAND-TRIG-03 | 审批流程 | 审批/拒绝正常 |
| HAND-TRIG-04 | 取消执行 | 状态变为cancelled |
**可用的Hands**
- Browser浏览器自动化
- Collector数据收集
- Researcher深度研究
- Predictor预测分析
### 3.2 记忆持久化测试
**自动验证**
```powershell
pnpm playwright test --project=chromium --grep "MEM-"
```
**验证点**
| 测试ID | 描述 | 成功标准 |
|--------|------|----------|
| MEM-PERSIST-01 | localStorage保存 | 数据持久化 |
| MEM-PERSIST-02 | 页面重载恢复 | 数据恢复 |
| MEM-PERSIST-03 | 会话切换 | 切换正常 |
| MEM-PERSIST-04 | 删除会话 | 正确移除 |
---
## Phase 4: 集成验证
### 4.1 飞书集成(可选)
**前置条件**:飞书应用已配置,`[channels.feishu].enabled = true`
**验证点**
- OAuth授权流程
- 消息接收
- Agent回复
### 4.2 端到端工作流
**测试场景**
1. 启动应用 → 2. 验证连接 → 3. 发送消息 → 4. 导航到Hands → 5. 触发Hand → 6. 验证执行 → 7. 返回聊天 → 8. 验证状态持久
**自动验证**
```powershell
pnpm playwright test --project=chromium --grep "INT-"
```
---
## Phase 5: 自动化验证
### 5.1 运行完整E2E测试
```powershell
cd desktop
# 运行所有测试
pnpm playwright test
# 生成HTML报告
pnpm playwright test --reporter=html
pnpm playwright show-report test-results/html-report
```
**测试文件**
| 文件 | 测试数 | 重点 |
|------|--------|------|
| core-features.spec.ts | 20+ | Gateway、聊天、Hands |
| data-flow.spec.ts | 25+ | 数据流验证 |
| store-state.spec.ts | 30+ | Store状态 |
| edge-cases.spec.ts | 25+ | 边界情况 |
| memory.spec.ts | 25+ | 记忆持久化 |
**成功标准**所有测试通过无flaky测试
---
## 关键文件
| 文件 | 用途 |
|------|------|
| [gateway-client.ts](desktop/src/lib/gateway-client.ts) | WebSocket/REST客户端1155行 |
| [connectionStore.ts](desktop/src/store/connectionStore.ts) | 连接状态管理 |
| [chatStore.ts](desktop/src/store/chatStore.ts) | 聊天状态和流式响应 |
| [handStore.ts](desktop/src/store/handStore.ts) | Hands触发和审批 |
| [core-features.spec.ts](desktop/tests/e2e/specs/core-features.spec.ts) | 核心E2E测试 |
| [start-all.ps1](start-all.ps1) | 启动脚本 |
| [config.toml](config/config.toml) | 主配置文件 |
---
## 故障排除
| 问题 | 可能原因 | 解决方案 |
|------|----------|----------|
| 连接超时 | OpenFang未运行 | 运行 `.\start-all.ps1 -Dev` |
| 健康检查失败 | 端口4200被占用 | 检查防火墙,终止占用进程 |
| 聊天不工作 | 无可用Agent | 检查 `/api/agents` 端点 |
| Hand不触发 | 依赖未满足 | 检查 `requirements_met` 字段 |
| 记忆不持久 | localStorage禁用 | 检查浏览器设置 |
---
## 验证清单总结
### Phase 1: 前置准备
- [ ] Node.js/pnpm 已安装
- [ ] Rust/Tauri CLI 已安装
- [ ] OpenFang runtime 存在
- [ ] Playwright 浏览器已安装
- [ ] 配置文件已验证
### Phase 2: 基础验证
- [ ] 健康检查返回 ok
- [ ] 连接状态正确转换
- [ ] 模型列表加载
- [ ] Agent列表加载
- [ ] 聊天消息发送接收
- [ ] 流式响应工作
### Phase 3: 功能验证
- [ ] Hands列表显示
- [ ] Hand激活工作
- [ ] 审批流程工作
- [ ] 取消执行工作
- [ ] 记忆跨重载持久
- [ ] 会话切换工作
### Phase 4: 集成验证
- [ ] (可选)飞书集成工作
- [ ] 完整工作流完成
- [ ] 状态跨导航持久
### Phase 5: 自动化验证
- [ ] 所有Playwright测试通过
- [ ] HTML报告生成
- [ ] 无flaky测试
---
## 预计总时间
| 阶段 | 时长 |
|------|------|
| Phase 1 | 15分钟 |
| Phase 2 | 25分钟 |
| Phase 3 | 30分钟 |
| Phase 4 | 25分钟 |
| Phase 5 | 60分钟 |
| **总计** | **2.5-3小时** |