Files
zclaw_openfang/docs/superpowers/specs/2026-03-23-v0.2.0-release-design.md
iven afb48f7b80 docs: add v0.2.0 release design spec
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 23:24:08 +08:00

308 lines
10 KiB
Markdown
Raw 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 v0.2.0 发布设计规格
> **版本**: 1.0
> **日期**: 2026-03-23
> **状态**: 已批准
> **作者**: Claude + 用户协作
---
## 一、概述
### 1.1 背景
ZCLAW 是一个面向中文用户的 AI Agent 桌面客户端,基于 Tauri 2 + React 19 + Rust workspace 技术栈。当前项目整体完成度约 70%,需要进行关键功能补全和发布准备工作。
### 1.2 目标
将 ZCLAW 打造成功能完整、可正式发布的 AI Agent 桌面客户端,通过内测 → 公测 → 正式的三阶段发布策略,确保产品质量和用户体验。
### 1.3 范围
- **包含**: 流式响应、核心 Hands、MCP 协议、i18n 架构、发布准备
- **不包含**: 其他 6 个通用 Hands、通道适配器、macOS/Linux 构建(推迟到后续版本)
---
## 二、关键决策
### 2.1 流式响应
**决策**: 必须实现真正流式
**理由**:
- 流式响应对用户体验至关重要
- 当前模拟方案无法接受
- 需要 SSE/WebSocket 实现
**实现要求**:
- 替换 `loop_runner.rs:125` 的 TODO 占位符
- 实现真正的 SSE 流式传输
- 前端 `KernelClient` 需要支持流式消费
### 2.2 Hands 系统
**决策**: 补充核心通用 Hands (Browser + Collector)
**理由**:
- 教育类 Hands (4个) 已完成
- Browser 和 Collector 是最常用的通用能力
- 其他 6 个 Hands 可后续迭代
**实现要求**:
- Browser Hand: 网页自动化(导航、点击、输入、截图)
- Collector Hand: 数据收集聚合网页抓取、API 调用、文件读取)
### 2.3 MCP 协议
**决策**: 必须实现
**理由**:
- MCP 是 Claude Code 等工具的生态标准
- 用户期望能接入外部工具
- 是差异化竞争力
**实现要求**:
- 完成 `mcp.rs:151,155` 的 TODO
- 实现工具调用和资源读取
- 至少能连接 1 个外部 MCP 服务器
### 2.4 国际化
**决策**: 搭建多语言基础架构v0.2.0 仅中文
**理由**:
- 当前硬编码无法维护
- 需要为国际化预留空间
- 先专注中文用户
**实现要求**:
- 集成 react-i18next
- 提取所有 UI 字符串
- v0.2.0 仅提供中文翻译
### 2.5 发布策略
**决策**: 内测 → 公测 → 正式
**阶段定义**:
1. **内测版 (v0.2.0-beta)**: 邀请 10-20 位种子用户
2. **公测版 (v0.2.0-rc)**: 开放下载,收集更多反馈
3. **正式版 (v0.2.0)**: 稳定后发布
### 2.6 时间线
**决策**: 灵活,功能完成即发布
**理由**:
- 不设硬性日期可减少压力
- 保证质量优先
- 便于应对意外情况
---
## 三、工作项清单
### 3.1 P0 - 必须完成
| ID | 工作项 | 复杂度 | 依赖 | 验收标准 |
|----|--------|--------|------|----------|
| P0-1 | 真正流式响应 | 高 | 无 | 用户能看到逐字输出 |
| P0-2 | Browser Hand | 高 | P0-1 | 能完成基础网页自动化 |
| P0-3 | Collector Hand | 中 | 无 | 能收集指定来源数据 |
| P0-4 | MCP 协议实现 | 高 | 无 | 能连接至少 1 个 MCP 服务器 |
### 3.2 P1 - 应该完成
| ID | 工作项 | 复杂度 | 依赖 | 验收标准 |
|----|--------|--------|------|----------|
| P1-1 | i18n 基础架构 | 中 | 无 | react-i18next 集成,中文可用 |
| P1-2 | 版本号统一 | 低 | 无 | 所有配置文件版本一致 |
| P1-3 | CHANGELOG.md | 低 | 无 | 记录所有变更 |
| P1-4 | 代码签名 | 中 | 无 | Windows 安装无警告 |
### 3.3 P2 - 可以完成
| ID | 工作项 | 复杂度 | 依赖 | 验收标准 |
|----|--------|--------|------|----------|
| P2-1 | 测试覆盖率提升 | 中 | 无 | 从 60% 提升到 75%+ |
| P2-2 | 无障碍支持 | 中 | 无 | 关键组件有 ARIA 属性 |
---
## 四、架构设计
### 4.1 流式响应架构
```
┌─────────────────┐ SSE/WS ┌─────────────────┐
│ React UI │ ◄──────────────►│ Tauri Backend │
│ ChatArea.tsx │ │ KernelClient │
└─────────────────┘ └────────┬────────┘
┌─────────────────┐
│ zclaw-runtime │
│ LlmDriver │
│ (stream mode) │
└─────────────────┘
```
**关键改动**:
1. `LlmDriver` trait 添加 `send_stream()` 方法
2. `Kernel` 添加 `send_message_stream()` 实现
3. 前端使用 Tauri 事件系统接收流式数据
### 4.2 Hands 系统架构
```
┌─────────────────────────────────────────────────────┐
│ zclaw-hands │
├─────────────────────────────────────────────────────┤
│ HandRegistry │
│ ├── WhiteboardHand (已实现) │
│ ├── SlideshowHand (已实现) │
│ ├── SpeechHand (已实现) │
│ ├── QuizHand (已实现) │
│ ├── BrowserHand (新增) ★ │
│ └── CollectorHand (新增) ★ │
└─────────────────────────────────────────────────────┘
```
**Browser Hand 能力**:
- `navigate(url)` - 导航到 URL
- `click(selector)` - 点击元素
- `input(selector, text)` - 输入文本
- `screenshot()` - 截图
- `wait(selector)` - 等待元素
**Collector Hand 能力**:
- `fetch_url(url)` - 抓取网页
- `call_api(url, method, body)` - API 调用
- `read_file(path)` - 读取文件
- `aggregate(sources)` - 聚合多个来源
### 4.3 MCP 协议架构
```
┌─────────────────────────────────────────────────────┐
│ zclaw-protocols │
├─────────────────────────────────────────────────────┤
│ McpClient (trait) │
│ └── HttpMcpClient (新增) ★ │
│ ├── connect() - 建立连接 │
│ ├── list_tools() - 获取工具列表 │
│ ├── call_tool() - 调用工具 │
│ ├── list_resources() - 获取资源列表 │
│ └── read_resource() - 读取资源 │
└─────────────────────────────────────────────────────┘
```
### 4.4 i18n 架构
```
desktop/src/
├── i18n/
│ ├── index.ts # i18n 配置
│ └── locales/
│ └── zh-CN/
│ ├── common.json
│ ├── chat.json
│ ├── hands.json
│ └── settings.json
└── components/
└── *.tsx # 使用 useTranslation()
```
---
## 五、文件改动清单
### 5.1 Rust 后端
| 文件 | 改动类型 | 说明 |
|------|----------|------|
| `crates/zclaw-runtime/src/loop_runner.rs` | 修改 | 实现流式响应 |
| `crates/zclaw-runtime/src/driver/mod.rs` | 修改 | 添加 stream 方法 |
| `crates/zclaw-kernel/src/kernel.rs` | 修改 | 流式消息处理 |
| `crates/zclaw-hands/src/hands/browser.rs` | 新增 | Browser Hand |
| `crates/zclaw-hands/src/hands/collector.rs` | 新增 | Collector Hand |
| `crates/zclaw-protocols/src/mcp.rs` | 修改 | MCP 协议实现 |
### 5.2 前端
| 文件 | 改动类型 | 说明 |
|------|----------|------|
| `desktop/src/i18n/` | 新增 | i18n 配置和翻译文件 |
| `desktop/src/components/ChatArea.tsx` | 修改 | 使用 i18n |
| `desktop/src/store/chatStore.ts` | 修改 | 流式消息处理 |
| `desktop/package.json` | 修改 | 版本号统一 |
### 5.3 配置文件
| 文件 | 改动类型 | 说明 |
|------|----------|------|
| `package.json` | 修改 | 版本号统一 |
| `Cargo.toml` | 修改 | 版本号统一 |
| `tauri.conf.json` | 修改 | 版本号统一 |
| `CHANGELOG.md` | 新增 | 变更日志 |
---
## 六、成功标准
### 6.1 功能验收
- [ ] 用户能正常进行流式对话,看到逐字输出
- [ ] Browser Hand 能完成:导航、点击、输入、截图
- [ ] Collector Hand 能完成网页抓取、API 调用、数据聚合
- [ ] MCP 能连接至少 1 个外部工具(如 filesystem-mcp
- [ ] i18n 框架可用,中文界面完整
### 6.2 质量验收
- [ ] 所有 Rust 单元测试通过
- [ ] 所有 E2E 测试通过
- [ ] 测试覆盖率 ≥ 75%
- [ ] TypeScript 类型检查无错误
### 6.3 发布验收
- [ ] 版本号所有位置一致
- [ ] CHANGELOG.md 记录完整
- [ ] Windows 安装包无 SmartScreen 警告
- [ ] 内测用户无阻塞性问题反馈
---
## 七、风险与缓解
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| 流式响应实现复杂度超预期 | 高 | 高 | 先实现 SSEWebSocket 可后续迭代 |
| Browser Hand 依赖问题 | 中 | 中 | 使用 headless-chrome 或 playwright |
| MCP 协议兼容性 | 中 | 中 | 先实现核心功能,边缘场景后续处理 |
| 代码签名成本 | 中 | 高 | 预算规划,或使用自签名(仅内测) |
| i18n 工作量 | 低 | 低 | 使用 i18next-scanner 自动提取 |
---
## 八、附录
### A. 参考文档
- [Tauri Events](https://tauri.app/v2/guides/features/events/)
- [MCP Specification](https://modelcontextprotocol.io/)
- [react-i18next](https://react.i18next.com/)
### B. 相关 Issue
- 流式响应 TODO: `crates/zclaw-runtime/src/loop_runner.rs:125`
- MCP TODO: `crates/zclaw-protocols/src/mcp.rs:151,155`
### C. 版本历史
| 版本 | 日期 | 变更 |
|------|------|------|
| 1.0 | 2026-03-23 | 初始版本,用户批准 |