# 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 警告 - [ ] 内测用户无阻塞性问题反馈 --- ## 七、风险与缓解 | 风险 | 概率 | 影响 | 缓解措施 | |------|------|------|----------| | 流式响应实现复杂度超预期 | 高 | 高 | 先实现 SSE,WebSocket 可后续迭代 | | 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 | 初始版本,用户批准 |