docs: add comprehensive development documentation

This commit is contained in:
iven
2026-03-11 22:13:03 +08:00
parent 75ff195247
commit f75a2b798b

712
DEVELOPMENT.md Normal file
View File

@@ -0,0 +1,712 @@
# ZCLAW 完整开发文档
**版本**: v1.0
**日期**: 2026-03-11
**状态**: 开发前梳理
---
## 📋 项目概述
### 核心定位
**ZCLAW 是什么?**
- 基于 OpenClaw 的 AI 代理平台
- 不是重新造轮子,而是**扩展 OpenClaw 的能力**
- 目标:随时随地、一个 IM 入口搞定一切
### 与 OpenClaw 的关系
`
OpenClaw (基础能力层)
ZCLAW (增强层)
场景化解决方案
`
**关键理解**
- OpenClaw 提供:浏览器控制、文件操作、终端命令、记忆系统、技能系统
- ZCLAW 提供:远程执行、任务编排、多 Agent 协作、持续记忆、主动服务
- ZCLAW **复用 OpenClaw SDK**,不是重写
---
## 🎯 用户的核心需求
### 1. 远程操控
**场景**
`
用户在地铁上 → 手机发微信 → 家里电脑执行任务 → 结果返回微信
`
**痛点**
- 必须坐在电脑前才能用 OpenClaw
- 手机只能查看,不能操控
- 无法随时随地处理任务
**解决方案**
- IM 消息触达 → Gateway → 本地执行 → 结果回流 IM
### 2. 复杂任务自动化
**场景**
`
用户:"帮我做市场调研"
ZCLAW自动拆解 10 步 → 逐步执行 → 完整报告
`
**痛点**
- 单步命令无法完成复杂任务
- 需要人工拆解和协调
- 没有进度可视化
**解决方案**
- AI 规划任务
- 多步骤编排
- 进度实时推送
### 3. 持续记忆
**场景**
`
用户上次说"我喜欢简洁的回复"
ZCLAW 记住 → 下次自动简洁回复
`
**痛点**
- 每次对话都是新的,没有记忆
- 需要重复说明偏好
- 无法跨会话学习
**解决方案**
- 用户画像存储
- 行为模式学习
- 跨会话记忆
### 4. 主动服务
**场景**
`
设置每天 8 点推送天气
ZCLAW主动推送无需询问
`
**痛点**
- 只能被动响应
- 无法设置定时任务
- 缺少主动提醒
**解决方案**
- Cron 定时任务
- 主动消息推送
- 智能提醒
---
## 🏗️ 技术架构
### 整体架构
`
┌─────────────────────────────────────────────────────────────┐
│ 用户入口层 │
│ 飞书 | 企业微信 | Telegram | QQ | Tauri 桌面端 │
└────────────────────┬────────────────────────────────────────┘
┌────────────────────▼────────────────────────────────────────┐
│ ZCLAW 网关层 │
│ - 消息路由 │
│ - 认证授权 │
│ - 限流控制 │
└────────────────────┬────────────────────────────────────────┘
┌────────────────────▼────────────────────────────────────────┐
│ ZCLAW 核心系统层 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 远程执行系统 │ │ 任务编排引擎 │ │ 多Agent协作 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 持续记忆系统 │ │ 主动服务系统 │ │ 上下文回流 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└────────────────────┬────────────────────────────────────────┘
┌────────────────────▼────────────────────────────────────────┐
│ OpenClaw 基础能力层 │
│ 浏览器 | 文件系统 | 终端 | AI模型 | Skills | 记忆 │
└────────────────────┬────────────────────────────────────────┘
┌────────────────────▼────────────────────────────────────────┐
│ 数据存储层 │
│ SQLite (结构化) | sqlite-vec (向量) | Redis (缓存) │
└─────────────────────────────────────────────────────────────┘
`
### 核心系统详解
#### 1. 远程执行系统
**职责**
- 设备注册与管理
- 任务队列调度
- 执行状态同步
- 结果推送
**关键接口**
` ypescript
interface RemoteExecutionSystem {
// 设备管理
registerDevice(device: Device): Promise<void>;
heartbeat(deviceId: string): Promise<DeviceStatus>;
// 任务管理
submitTask(task: Task): Promise<string>;
cancelTask(taskId: string): Promise<void>;
// 状态同步
getStatus(taskId: string): Promise<TaskStatus>;
subscribe(taskId: string, handler: StatusHandler): void;
// 结果推送
pushResult(taskId: string, result: Result): Promise<void>;
}
`
**数据模型**
` ypescript
interface Device {
id: string;
name: string;
userId: string;
platform: 'macos' | 'windows' | 'linux';
capabilities: string[];
status: 'online' | 'offline' | 'busy';
lastHeartbeat: Date;
}
interface Task {
id: string;
userId: string;
deviceId: string;
channel: string; // 来源渠道(飞书/微信/...
type: 'immediate' | 'scheduled';
priority: 'high' | 'normal' | 'low';
payload: any;
status: TaskStatus;
result?: any;
createdAt: Date;
startedAt?: Date;
completedAt?: Date;
}
`
**实现要点**
- 使用 BullMQ 任务队列(支持优先级、重试、延迟)
- WebSocket 实时状态同步
- 多渠道结果推送(飞书/微信/...
#### 2. 任务编排引擎
**职责**
- 任务规划AI 拆解)
- 多步骤编排
- 依赖管理
- 进度可视化
- 错误恢复
**关键接口**
` ypescript
interface TaskOrchestrationEngine {
plan(goal: string, context: Context): Promise<TaskPlan>;
execute(plan: TaskPlan): Promise<ExecutionResult>;
getProgress(planId: string): Promise<Progress>;
pause(planId: string): Promise<void>;
resume(planId: string): Promise<void>;
cancel(planId: string): Promise<void>;
}
`
**AI 规划 Prompt**
`
你是一个任务规划专家。请将以下目标拆解为可执行步骤:
目标: {goal}
可用工具:
- browser: 浏览器操作(访问网页、截图、填表)
- file: 文件操作(读写、搜索、整理)
- terminal: 终端命令(代码执行、系统操作)
- api: API 调用(搜索、查询、推送)
上下文:
{context}
要求:
1. 每个步骤明确、可执行
2. 标注步骤之间的依赖关系
3. 标注每个步骤需要的工具
输出格式 (JSON):
{
"steps": [
{
"id": "step_1",
"description": "步骤描述",
"tool": "browser",
"params": {...},
"dependencies": []
}
]
}
`
**执行流程**
`
1. AI 规划 → 生成任务图
2. 拓扑排序 → 确定执行顺序
3. 检查依赖 → 等待前置步骤
4. 执行步骤 → 调用 OpenClaw 工具
5. 更新上下文 → 传递结果
6. 推送进度 → IM 渠道
7. 错误恢复 → 重试/跳过/失败
`
#### 3. 多 Agent 协作系统
**职责**
- Agent 生命周期管理
- 任务分配
- Agent 间通信
- 结果整合
**Agent 类型**
` ypescript
type AgentType =
| 'planner' // 规划 Agent
| 'browser' // 浏览器 Agent
| 'file' // 文件 Agent
| 'terminal' // 终端 Agent
| 'combiner' // 整合 Agent
| 'custom'; // 自定义 Agent
`
**协作模式**
`
用户:"做市场调研"
Planner Agent拆解任务
┌─────────┬─────────┬─────────┐
│Browser │ Browser │ Browser │ ← 并行执行
│Agent │ Agent │ Agent │
└─────────┴─────────┴─────────┘
Combiner Agent整合结果
最终报告 → 推送给用户
`
#### 4. 持续记忆系统
**职责**
- 用户画像管理
- 行为模式学习
- 长期记忆存储
- 关系图谱构建
- 主动推荐
**数据模型**
` ypescript
interface UserProfile {
userId: string;
// 偏好记忆
preferences: {
language: 'zh' | 'en';
model: string;
responseStyle: 'concise' | 'detailed';
timezone: string;
};
// 上下文记忆
contexts: {
lastTopic: string;
ongoingTasks: Task[];
recentFiles: string[];
};
// 行为模式
patterns: {
activeHours: number[];
frequentCommands: string[];
preferredChannels: string[];
};
}
`
**实现要点**
- SQLite 存储结构化数据
- sqlite-vec 向量搜索
- 定期分析用户行为模式
#### 5. 主动服务系统
**职责**
- 定时任务调度
- 智能提醒
- 主动推荐
- 异常预警
**关键接口**
` ypescript
interface ProactiveServiceSystem {
scheduleTask(task: ScheduledTask): Promise<void>;
cancelTask(taskId: string): Promise<void>;
listTasks(userId: string): Promise<ScheduledTask[]>;
// 智能提醒
smartReminder(): Promise<void>;
// 主动推荐
proactiveRecommendation(userId: string): Promise<void>;
}
`
**定时任务示例**
` ypescript
const task: ScheduledTask = {
id: 'daily_weather',
userId: 'user_123',
channel: 'feishu',
schedule: {
type: 'daily',
time: '08:00',
timezone: 'Asia/Shanghai',
},
task: {
type: 'weather',
prompt: '推送今天的天气',
},
status: 'active',
};
`
---
## 🎨 Tauri 桌面端设计
### 界面布局
`
┌────────────────────────────────────────────────────────────────┐
│ ZCLAW 🦞 [分身] [IM 频道] [定时任务] [—] [□] [×] │
├──────────────┬──────────────────────────┬─────────────────────┤
│ │ │ │
│ 左侧边栏 │ 中间对话区域 │ 右侧边栏 │
│ (240px) │ (自适应) │ (320px) │
│ │ │ │
│ ┌──────────┐ │ ┌──────────────────────┐ │ ┌─────────────────┐ │
│ │ Agent 列表│ │ │ 消息列表 │ │ │ 任务进度 │ │
│ │ │ │ │ │ │ │ │ │
│ │ 🦞 ZCLAW │ │ │ 🦞: 收到消息... │ │ │ ████████░░ 80% │ │
│ │ 🔍 沉思 │ │ │ │ │ │ │ │
│ │ 🌐 浏览器 │ │ │ 👤: 做市场调研 │ │ │ 今日统计 │ │
│ │ 📊 监控 │ │ │ │ │ │ • 任务: 8 │ │
│ └──────────┘ │ │ 🦞: 正在规划... │ │ │ • 成功: 6 │ │
│ │ │ │ │ │ │ │
│ ┌──────────┐ │ ┌──────────────────────┐ │ │ 下一步行动 │ │
│ │ 用户信息 │ │ │ 输入框 │ │ │ ☐ 初始化项目 │ │
│ └──────────┘ │ └──────────────────────┘ │ │ ☐ 集成 SDK │ │
│ │ │ └─────────────────┘ │
└──────────────┴──────────────────────────┴─────────────────────┘
`
### 技术栈
- **框架**: Tauri 2.0 (Rust + React)
- **前端**: React 18 + TypeScript
- **样式**: Tailwind CSS
- **图标**: Lucide React
- **状态**: Zustand
- **构建**: Vite
### 核心组件
#### 1. Sidebar (左侧边栏)
- Agent 列表
- IM 频道列表
- 定时任务列表
- 用户信息
#### 2. ChatArea (中间对话区域)
- 消息列表
- 消息气泡(用户/AI
- 输入框
- 模型选择器
#### 3. RightPanel (右侧边栏)
- 任务进度条
- 今日统计
- 下一步行动
- 文件预览
### 与 OpenClaw 的集成
` ypescript
// OpenClaw 客户端
class OpenClawClient {
private rpcUrl: string;
async send(message: string): Promise<Response> {
const response = await fetch(this.rpcUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message,
sessionId: this.sessionId,
}),
});
return response.json();
}
}
`
---
## 📅 开发计划
### 阶段 1: MVP (Week 1-2)
**目标**: 最小可用版本
| 功能 | 优先级 | 工作量 |
|------|--------|--------|
| 项目初始化 | P0 | 0.5 天 |
| 远程执行系统基础 | P0 | 2 天 |
| 飞书集成 | P0 | 1 天 |
| 基础 IM 消息处理 | P0 | 1 天 |
| Tauri 桌面端基础 | P0 | 2 天 |
| 持续记忆基础 | P0 | 1 天 |
| 测试 & 优化 | P0 | 1 天 |
**交付物**:
- ✅ 远程执行系统可用
- ✅ 飞书可发送消息并执行
- ✅ Tauri 桌面端可运行
- ✅ 基础记忆功能
### 阶段 2: 增强 (Week 3-4)
**目标**: 完善核心功能
| 功能 | 优先级 | 工作量 |
|------|--------|--------|
| 任务编排引擎 | P1 | 3 天 |
| 多 Agent 协作 | P1 | 3 天 |
| 企业微信集成 | P1 | 1 天 |
| Telegram 集成 | P1 | 1 天 |
| 主动服务系统 | P1 | 2 天 |
**交付物**:
- ✅ 复杂任务可拆解执行
- ✅ 多 Agent 可协作
- ✅ 多 IM 渠道支持
- ✅ 定时任务可用
### 阶段 3: 场景化 (Week 5-6)
**目标**: 场景解决方案
| 功能 | 优先级 | 工作量 |
|------|--------|--------|
| 社媒运营方案 | P2 | 3 天 |
| 学术研究方案 | P2 | 2 天 |
| 自动开发方案 | P2 | 3 天 |
| 文档 & 优化 | P2 | 2 天 |
**交付物**:
- ✅ 3 个场景化方案
- ✅ 完整文档
- ✅ 用户测试
---
## 🔧 技术栈详解
### 后端
| 类别 | 技术 | 版本 | 用途 |
|------|------|------|------|
| **语言** | TypeScript | 5.x | 类型安全 |
| **运行时** | Node.js | 22 LTS | 稳定 |
| **框架** | OpenClaw SDK | latest | 复用基础能力 |
| **数据库** | SQLite | 9.x | 本地存储 |
| **向量** | sqlite-vec | 0.1.x | 向量搜索 |
| **队列** | BullMQ | 5.x | 任务队列 |
| **缓存** | Redis (可选) | 7.x | 缓存 |
| **定时** | node-cron | 3.x | Cron 调度 |
| **IM** | Koishi | 4.x | IM 集成 |
### 前端 (Tauri)
| 类别 | 技术 | 版本 | 用途 |
|------|------|------|------|
| **框架** | Tauri | 2.0 | 桌面应用 |
| **前端** | React | 18 | UI 框架 |
| **样式** | Tailwind CSS | 4.x | 快速开发 |
| **图标** | Lucide React | latest | 图标库 |
| **状态** | Zustand | 5.x | 状态管理 |
| **构建** | Vite | 7.x | 构建工具 |
---
## 📂 项目结构
`
G:\ZClaw/
├── src/ # 后端代码
│ ├── core/ # 核心系统
│ │ ├── remote-execution/ # 远程执行
│ │ ├── task-orchestration/ # 任务编排
│ │ ├── multi-agent/ # 多 Agent 协作
│ │ ├── memory/ # 持续记忆
│ │ └── proactive/ # 主动服务
│ ├── im/ # IM 集成
│ │ ├── feishu/ # 飞书
│ │ ├── wecom/ # 企业微信
│ │ ├── telegram/ # Telegram
│ │ └── koishi/ # Koishi 适配器
│ ├── skills/ # 场景化 Skills
│ │ ├── social-media/ # 社媒运营
│ │ ├── research/ # 学术研究
│ │ └── development/ # 自动开发
│ ├── api/ # API 接口
│ ├── db/ # 数据库
│ └── index.ts # 入口
├── desktop/ # Tauri 桌面端
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── hooks/ # React Hooks
│ │ ├── store/ # Zustand Store
│ │ ├── utils/ # 工具函数
│ │ ├── App.tsx # 主应用
│ │ └── main.tsx # 入口
│ ├── src-tauri/ # Rust 后端
│ │ ├── src/
│ │ │ ├── main.rs # 入口
│ │ │ ├── commands.rs # Tauri 命令
│ │ │ └── openclaw.rs # OpenClaw 集成
│ │ ├── Cargo.toml
│ │ └── tauri.conf.json
│ ├── package.json
│ └── vite.config.ts
├── tests/ # 测试
├── docs/ # 文档
├── package.json # 后端依赖
├── tsconfig.json # TS 配置
├── README.md # 项目说明
└── PROGRESS.md # 开发进度
`
---
## 🚀 快速开始
### 后端开发
`ash
# 1. 安装依赖
cd G:\ZClaw
pnpm install
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 填入 API keys
# 3. 启动开发服务器
pnpm dev
# 4. 运行测试
pnpm test
`
### Tauri 桌面端
`ash
# 1. 安装依赖
cd G:\ZClaw\desktop
pnpm install
# 2. 启动开发服务器
pnpm tauri dev
# 3. 构建生产版本
pnpm tauri build
`
---
## 🎯 成功指标
### 技术指标
| 指标 | 目标 |
|------|------|
| 响应延迟 (P95) | < 3s |
| 可用性 (SLA) | > 99% |
| 任务成功率 | > 95% |
| 并发用户数 | > 100 |
### 产品指标
| 指标 | 目标 |
|------|------|
| DAU (MVP) | > 100 |
| 用户留存 (7日) | > 40% |
| 任务完成率 | > 90% |
| NPS | > 50 |
---
## 📝 关键决策
### 决策 1: 渐进式开发
- **理由**: 快速验证,降低风险
- **方案**: MVP → 增强 → 场景化
### 决策 2: 复用 OpenClaw
- **理由**: 不重复造轮子
- **方案**: 使用 OpenClaw SDK
### 决策 3: Tauri 桌面端
- **理由**: 跨平台、性能好
- **方案**: Tauri 2.0 + React
### 决策 4: Koishi IM 集成
- **理由**: 成熟的 IM 适配器
- **方案**: Koishi + 自定义插件
---
## ⚠️ 风险与缓解
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| OpenClaw SDK 不稳定 | 中 | 高 | 多 Provider fallback |
| IM 平台封号 | 中 | 高 | 使用官方 API、合规使用 |
| 性能瓶颈 | 中 | 中 | 异步处理、缓存优化 |
| 需求变更 | 高 | 中 | 敏捷开发、MVP 优先 |
---
## 📚 参考资料
- [OpenClaw 文档](C:\Program Files\AutoClaw\resources\gateway\openclaw\docs)
- [Tauri 文档](https://tauri.app)
- [Koishi 文档](https://koishi.chat)
- [BullMQ 文档](https://docs.bullmq.io)
---
**维护者**: ZCLAW 团队
**最后更新**: 2026-03-11 22:10