cc工作前备份
712
docs/DEVELOPMENT.md
Normal 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
|
||||
263
docs/NEXT_SESSION.md
Normal file
@@ -0,0 +1,263 @@
|
||||
# ZCLAW v2 开发 - 新会话提示词
|
||||
|
||||
## 项目状态概览
|
||||
|
||||
ZCLAW v2 是基于 OpenClaw 的定制化 AI Agent 平台(类似 AutoClaw/QClaw),使用 Tauri 2.0 桌面 + OpenClaw Gateway 架构。
|
||||
|
||||
**当前进度**: Phase 1-3.5 已完成 ✅
|
||||
**下一步**: Phase 4 - OpenClaw 真实集成测试(QQ官方插件 + 飞书)
|
||||
|
||||
---
|
||||
|
||||
## Phase 1-3 已完成工作
|
||||
|
||||
### ✅ Phase 1: 后端 Gateway 层 + 插件 + Skills
|
||||
- **src/gateway/** — GatewayManager (子进程管理), GatewayWsClient (WebSocket Protocol v3)
|
||||
- **plugins/zclaw-chinese-models/** — 智谱GLM/通义千问/Kimi/MiniMax Provider 插件
|
||||
- **plugins/zclaw-feishu/** — 飞书 Channel 插件 (OAuth token 管理 + 消息发送)
|
||||
- **plugins/zclaw-ui/** — UI 扩展 RPC (分身CRUD/统计/配置/工作区)
|
||||
- **skills/** — chinese-writing + feishu-docs (SKILL.md 格式)
|
||||
- **config/** — openclaw.default.json + SOUL/AGENTS/IDENTITY/USER.md
|
||||
- **scripts/setup.ts** — 首次设置脚本 (检测OpenClaw → 复制配置 → 注册插件)
|
||||
|
||||
### ✅ Phase 2: 前端 Settings 页面体系
|
||||
- **desktop/src/components/Settings/** — 10个设置页面对标 AutoClaw
|
||||
- SettingsLayout (左侧导航 + 右侧内容)
|
||||
- General, UsageStats, ModelsAPI, MCPServices, Skills, IMChannels, Workspace, Privacy, About
|
||||
- **App.tsx** — main/settings 视图切换
|
||||
- **构建修复** — Tailwind v4, BOM 清除, TypeScript 0 errors
|
||||
|
||||
### ✅ Phase 3: 聊天对接 + 分身管理
|
||||
- **desktop/src/store/chatStore.ts** — Gateway WS 集成 (sendMessage → agent RPC, initStreamListener → delta/tool/lifecycle)
|
||||
- **desktop/src/components/ChatArea.tsx** — 流式输出 + 工具调用展示 + 模型选择器 + 连接状态
|
||||
- **desktop/src/components/CloneManager.tsx** — 分身 CRUD (创建表单 + 列表 + 删除)
|
||||
- **desktop/src/components/Sidebar.tsx** — 3标签 (分身/IM频道/定时任务) + CloneManager 集成
|
||||
|
||||
### ✅ Phase 3.5: 前端质量提升
|
||||
- **App.tsx** — Gateway 自动连接 (启动时 silent connect)
|
||||
- **RightPanel.tsx** — 重写为实时数据面板 (连接状态/会话统计/分身/用量/插件/系统信息)
|
||||
- **ChatArea.tsx** — 多行 textarea 输入 + Markdown 渲染 (代码块/粗体/斜体/链接) + 新对话按钮
|
||||
- **chatStore.ts** — 对话会话管理 + Zustand persist (localStorage 持久化对话历史 + currentModel)
|
||||
- **ConversationList.tsx** (新) — 对话历史列表 + 标题自动提取 + 相对时间
|
||||
- **Sidebar.tsx** — 四标签 (对话/分身/频道/任务), 全部使用真实组件
|
||||
- **ChannelList.tsx** (新) — IM 频道列表 (飞书/QQ 状态探测 + 配置入口)
|
||||
- **TaskList.tsx** (新) — Heartbeat 定时任务列表 (状态图标/cron 表达式/执行时间)
|
||||
- **gatewayStore.ts** — 新增 channels/scheduledTasks 状态 + loadChannels/loadScheduledTasks
|
||||
- **gateway-client.ts** — 新增 listChannels() + getFeishuStatus() + listScheduledTasks()
|
||||
- **Settings/General.tsx** — 接入真实 Gateway 连接数据 + 连接/断开按钮
|
||||
- **Settings/ModelsAPI.tsx** — 接入 chatStore 模型切换 + Gateway 连接状态
|
||||
|
||||
**编译状态**: TypeScript 0 errors, Vite build ✅ (1766 modules, 268KB JS + 26KB CSS)
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: OpenClaw 集成测试 (下一步工作)
|
||||
|
||||
### 重要提示:避免封号
|
||||
**前期只对接 QQ (官方插件) 和 飞书**,微信暂缓。
|
||||
|
||||
### 任务清单
|
||||
|
||||
#### 1. 安装 OpenClaw
|
||||
```bash
|
||||
# Windows
|
||||
iwr -useb https://openclaw.ai/install.ps1 | iex
|
||||
|
||||
# 验证安装
|
||||
openclaw --version
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
#### 2. 配置 QQ 机器人 (使用官方插件)
|
||||
```bash
|
||||
# 安装 OpenClaw 开源社区 QQBot 插件
|
||||
openclaw plugins install @tencent-connect/openclaw-qqbot@latest
|
||||
|
||||
# 配置绑定 QQ 机器人
|
||||
openclaw channels add --channel qqbot --token "1903376513:Z5UkttjPxLZbVFxW"
|
||||
|
||||
# 重启 Gateway
|
||||
openclaw gateway restart
|
||||
```
|
||||
|
||||
#### 3. 配置飞书 Channel
|
||||
```bash
|
||||
# 运行 ZCLAW 设置脚本
|
||||
cd g:\ZClaw
|
||||
pnpm setup
|
||||
|
||||
# 手动配置飞书插件 (如果 setup 脚本未自动注册)
|
||||
openclaw plugins register ./plugins/zclaw-feishu
|
||||
|
||||
# 编辑 ~/.openclaw/openclaw.json 添加飞书配置
|
||||
# channels.feishu.appId, appSecret, verificationToken, encryptKey
|
||||
```
|
||||
|
||||
#### 4. 注册 ZCLAW 自定义插件
|
||||
```bash
|
||||
cd g:\ZClaw
|
||||
|
||||
# 注册中文模型 Provider
|
||||
openclaw plugins register ./plugins/zclaw-chinese-models
|
||||
|
||||
# 注册 UI 扩展 RPC
|
||||
openclaw plugins register ./plugins/zclaw-ui
|
||||
|
||||
# 重启 Gateway
|
||||
openclaw gateway restart
|
||||
```
|
||||
|
||||
#### 5. 测试 Gateway 连接
|
||||
```bash
|
||||
# 启动 Gateway (如果未运行)
|
||||
openclaw gateway
|
||||
|
||||
# 在另一个终端启动 ZCLAW 前端
|
||||
cd g:\ZClaw\desktop
|
||||
pnpm dev
|
||||
|
||||
# 访问 http://localhost:1420
|
||||
# 点击右下角齿轮 → 设置 → 通用 → 查看 Gateway 连接状态
|
||||
```
|
||||
|
||||
#### 6. 测试中文模型调用
|
||||
- 在聊天区域发送消息
|
||||
- 点击模型选择器切换到 glm-5 / qwen3.5-plus / kimi-k2.5 / minimax-m2.5
|
||||
- 观察流式输出效果
|
||||
- 检查工具调用是否正常显示
|
||||
|
||||
#### 7. 测试飞书消息收发
|
||||
- 在飞书中 @机器人 发送消息
|
||||
- 观察 Gateway 日志和前端消息列表
|
||||
- 测试从前端发送消息到飞书
|
||||
|
||||
#### 8. 测试 QQ 消息收发
|
||||
- 在 QQ 中 @机器人 发送消息
|
||||
- 观察 Gateway 日志
|
||||
- 测试双向消息流
|
||||
|
||||
---
|
||||
|
||||
## 关键文件路径
|
||||
|
||||
### 配置文件
|
||||
- `g:\ZClaw\config\openclaw.default.json` — OpenClaw 默认配置模板
|
||||
- `~\.openclaw\openclaw.json` — OpenClaw 用户配置 (运行时生成)
|
||||
- `g:\ZClaw\config\SOUL.md` — ZCLAW 人格定义
|
||||
|
||||
### 插件目录
|
||||
- `g:\ZClaw\plugins\zclaw-chinese-models\` — 中文模型 Provider
|
||||
- `g:\ZClaw\plugins\zclaw-feishu\` — 飞书 Channel
|
||||
- `g:\ZClaw\plugins\zclaw-ui\` — UI 扩展 RPC
|
||||
|
||||
### 前端代码
|
||||
- `g:\ZClaw\desktop\src\store\gatewayStore.ts` — Gateway 状态管理
|
||||
- `g:\ZClaw\desktop\src\store\chatStore.ts` — 聊天状态管理
|
||||
- `g:\ZClaw\desktop\src\lib\gateway-client.ts` — Gateway WebSocket 客户端
|
||||
|
||||
### 后端代码
|
||||
- `g:\ZClaw\src\gateway\manager.ts` — Gateway 子进程管理
|
||||
- `g:\ZClaw\src\gateway\ws-client.ts` — Node.js WebSocket 客户端
|
||||
|
||||
---
|
||||
|
||||
## 常见问题排查
|
||||
|
||||
### Gateway 连接失败
|
||||
1. 检查 Gateway 是否运行: `openclaw status`
|
||||
2. 检查端口占用: `netstat -ano | findstr 18789`
|
||||
3. 查看 Gateway 日志: `openclaw gateway` (前台运行查看输出)
|
||||
4. 检查防火墙设置
|
||||
|
||||
### 插件未加载
|
||||
1. 验证插件注册: `openclaw plugins list`
|
||||
2. 检查插件 manifest: `g:\ZClaw\plugins\*/plugin.json`
|
||||
3. 查看 Gateway 启动日志中的插件加载信息
|
||||
4. 确认 `~\.openclaw\openclaw.json` 中 `plugins.load.paths` 包含插件路径
|
||||
|
||||
### 飞书消息收发失败
|
||||
1. 检查 `openclaw.json` 中飞书配置 (appId, appSecret, verificationToken)
|
||||
2. 验证 OAuth token 是否有效: 查看 Gateway 日志中的 token 刷新记录
|
||||
3. 检查飞书机器人权限配置
|
||||
4. 确认回调 URL 配置正确
|
||||
|
||||
### QQ 消息收发失败
|
||||
1. 验证 QQBot 插件安装: `openclaw plugins list | findstr qqbot`
|
||||
2. 检查 token 格式: `"botAppId:token"`
|
||||
3. 查看 Gateway 日志中的 QQ 连接状态
|
||||
4. 确认 QQ 机器人已启用并在线
|
||||
|
||||
---
|
||||
|
||||
## 开发命令速查
|
||||
|
||||
```bash
|
||||
# 后端 (Gateway 层)
|
||||
cd g:\ZClaw
|
||||
pnpm install
|
||||
pnpm setup # 运行设置脚本
|
||||
pnpm build # 编译 TypeScript
|
||||
npx tsc --noEmit # 类型检查
|
||||
|
||||
# 前端 (Tauri Desktop)
|
||||
cd g:\ZClaw\desktop
|
||||
pnpm install
|
||||
pnpm dev # 启动 Vite dev server (http://localhost:1420)
|
||||
pnpm build # 构建生产版本
|
||||
npx tsc --noEmit # 类型检查
|
||||
|
||||
# OpenClaw 命令
|
||||
openclaw gateway # 启动 Gateway (前台)
|
||||
openclaw gateway restart # 重启 Gateway
|
||||
openclaw status # 查看状态
|
||||
openclaw doctor # 诊断工具
|
||||
openclaw plugins list # 列出已安装插件
|
||||
openclaw plugins install <pkg> # 安装插件
|
||||
openclaw plugins register <path> # 注册本地插件
|
||||
openclaw channels add --channel <type> --token <token> # 添加 IM 频道
|
||||
openclaw configure # 交互式配置
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 参考文档
|
||||
|
||||
- **架构设计**: `g:\ZClaw\docs\architecture-v2.md`
|
||||
- **偏离分析**: `g:\ZClaw\docs\deviation-analysis.md`
|
||||
- **进度报告**: `g:\ZClaw\PROGRESS.md`
|
||||
- **AutoClaw 界面参考**: `g:\ZClaw\docs\autoclaw界面\` (13张截图)
|
||||
|
||||
---
|
||||
|
||||
## 预期成果
|
||||
|
||||
完成 Phase 4 后,应达到以下状态:
|
||||
|
||||
1. ✅ OpenClaw Gateway 正常运行并连接到前端
|
||||
2. ✅ QQ 机器人可以收发消息 (使用官方 @tencent-connect/openclaw-qqbot 插件)
|
||||
3. ✅ 飞书机器人可以收发消息 (使用自定义 zclaw-feishu 插件)
|
||||
4. ✅ 中文模型 (GLM/Qwen/Kimi/MiniMax) 可以正常调用
|
||||
5. ✅ 前端聊天区域显示流式输出 + 工具调用
|
||||
6. ✅ 分身管理功能正常 (创建/列表/删除)
|
||||
7. ✅ Settings 页面所有配置项可用
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **避免封号**: 前期只对接 QQ (官方插件) 和飞书,微信暂缓
|
||||
2. **QQ 使用官方插件**: `@tencent-connect/openclaw-qqbot@latest`,不要自己实现
|
||||
3. **飞书使用自定义插件**: `plugins/zclaw-feishu/` 已实现 OAuth + 消息发送
|
||||
4. **API Key 安全**: 不要在代码中硬编码 API Key,使用 `openclaw configure` 或环境变量
|
||||
5. **Gateway 日志**: 前台运行 `openclaw gateway` 可以实时查看日志,便于调试
|
||||
6. **插件热重载**: 修改插件代码后需要 `openclaw gateway restart`
|
||||
|
||||
---
|
||||
|
||||
## 后续 Phase 5 规划
|
||||
|
||||
- [ ] Tauri Rust sidecar (在 Tauri 中管理 Gateway 子进程)
|
||||
- [ ] 更多 Skills 开发 (代码生成、文档写作、数据分析等)
|
||||
- [ ] 微信 Channel Plugin (待 OpenClaw 官方支持或社区插件成熟后)
|
||||
- [ ] 打包发布 (Windows/macOS/Linux)
|
||||
- [ ] 性能优化 + 错误处理增强
|
||||
327
docs/architecture-v2.md
Normal file
@@ -0,0 +1,327 @@
|
||||
# ZCLAW v2 架构设计 — 基于 OpenClaw 定制化
|
||||
|
||||
**日期**: 2026-03-11
|
||||
**定位**: 像 AutoClaw 一样,对 OpenClaw 进行定制化封装,打造 Tauri 桌面版
|
||||
|
||||
---
|
||||
|
||||
## 一、架构总览
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ ZCLAW (Tauri App) │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ React 19 + TailwindCSS │ │
|
||||
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ │ │
|
||||
│ │ │ 分身Tab │ │IM频道 │ │定时任务│ │ 设置页面 │ │ │
|
||||
│ │ └────────┘ └────────┘ └────────┘ └──────────┘ │ │
|
||||
│ │ ┌──────────────────────────────────────────┐ │ │
|
||||
│ │ │ 聊天区域 + 工具调用展示 │ │ │
|
||||
│ │ └──────────────────────────────────────────┘ │ │
|
||||
│ └──────────────────────────────────────────────────┘ │
|
||||
│ │ Tauri Commands │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ Rust Sidecar / Bridge │ │
|
||||
│ │ • 管理 OpenClaw Gateway 子进程生命周期 │ │
|
||||
│ │ • WebSocket 客户端连接 Gateway │ │
|
||||
│ │ • 转发 Gateway 事件到前端 │ │
|
||||
│ └──────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│ WebSocket (ws://127.0.0.1:18789)
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ OpenClaw Gateway (Node.js daemon) │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
|
||||
│ │ Agent │ │ Skills │ │ Sessions │ │ Heartbeat │ │
|
||||
│ │ Runtime │ │ System │ │ Manager │ │ Engine │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
|
||||
│ │ Tools │ │ Memory │ │ MCP │ │ Provider │ │
|
||||
│ │ (bash/ │ │ (SQLite/ │ │ Server │ │ (models) │ │
|
||||
│ │ file/ │ │ LanceDB)│ │ │ │ │ │
|
||||
│ │ browse) │ │ │ │ │ │ │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ Channel Plugins (IM 渠道) │ │
|
||||
│ │ WhatsApp │ Telegram │ Discord │ Slack │ ... │ │
|
||||
│ └──────────────────────────────────────────────────┘ │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ ZCLAW Custom Plugins (我们的) │ │
|
||||
│ │ @zclaw/feishu │ @zclaw/wechat │ @zclaw/qq │ │
|
||||
│ │ @zclaw/chinese-models (GLM/Qwen/Kimi/MiniMax) │ │
|
||||
│ └──────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
┌──────────┴──────────┐
|
||||
│ Bootstrap Files │
|
||||
│ AGENTS.md │
|
||||
│ SOUL.md │
|
||||
│ IDENTITY.md │
|
||||
│ USER.md │
|
||||
│ TOOLS.md │
|
||||
└─────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、核心设计决策
|
||||
|
||||
### 1. OpenClaw 作为执行引擎
|
||||
|
||||
**不重新发明轮子**。OpenClaw 已经实现了:
|
||||
- ✅ 真实工具执行 (bash/file/browser)
|
||||
- ✅ Skills 系统 (SKILL.md + 渐进式披露)
|
||||
- ✅ MCP 协议支持
|
||||
- ✅ 心跳引擎 (Heartbeat)
|
||||
- ✅ 持久记忆 (SQLite + LanceDB)
|
||||
- ✅ Agent 运行时 (Session/Queue/Streaming)
|
||||
- ✅ 10+ IM 渠道适配器
|
||||
- ✅ 插件体系 (Channel/Tool/Memory/Provider)
|
||||
|
||||
我们只需要:**包装 + 定制 + 中文化**
|
||||
|
||||
### 2. Tauri 作为桌面壳
|
||||
|
||||
AutoClaw 用的是自己的桌面框架,QClaw 用 Electron。我们用 **Tauri 2.0** (Rust + React):
|
||||
- 更小体积 (~10MB vs Electron ~150MB)
|
||||
- 更好性能 (Rust native)
|
||||
- 系统级集成能力
|
||||
- 管理 OpenClaw Gateway 子进程
|
||||
|
||||
### 3. 自定义插件做差异化
|
||||
|
||||
通过 OpenClaw 的 Plugin API 添加中国特色功能:
|
||||
|
||||
| 插件 | 功能 |
|
||||
|------|------|
|
||||
| `@zclaw/feishu` | 飞书 Channel Plugin |
|
||||
| `@zclaw/wechat` | 微信 Channel Plugin (通过 WeCom API 或 itchat 桥接) |
|
||||
| `@zclaw/qq` | QQ Channel Plugin |
|
||||
| `@zclaw/chinese-models` | 中文模型 Provider (智谱GLM/通义千问/Kimi/MiniMax) |
|
||||
| `@zclaw/zclaw-ui` | 自定义 Gateway RPC 方法供 Tauri UI 调用 |
|
||||
|
||||
---
|
||||
|
||||
## 三、项目结构 (重构后)
|
||||
|
||||
```
|
||||
ZClaw/
|
||||
├── desktop/ # Tauri 2.0 桌面应用
|
||||
│ ├── src-tauri/ # Rust 后端
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── main.rs # Tauri 入口
|
||||
│ │ │ ├── gateway.rs # OpenClaw Gateway 子进程管理
|
||||
│ │ │ ├── ws_client.rs # WebSocket 客户端
|
||||
│ │ │ └── commands.rs # Tauri Commands (前端调用)
|
||||
│ │ ├── Cargo.toml
|
||||
│ │ └── tauri.conf.json
|
||||
│ ├── src/ # React 前端
|
||||
│ │ ├── App.tsx
|
||||
│ │ ├── main.tsx
|
||||
│ │ ├── index.css
|
||||
│ │ ├── components/
|
||||
│ │ │ ├── Sidebar.tsx # 左侧栏 (分身/IM/定时)
|
||||
│ │ │ ├── ChatArea.tsx # 聊天区域 + 工具调用展示
|
||||
│ │ │ ├── RightPanel.tsx # 右侧面板
|
||||
│ │ │ └── Settings/ # 设置页面 (对标 AutoClaw)
|
||||
│ │ │ ├── General.tsx # 通用设置
|
||||
│ │ │ ├── UsageStats.tsx # 用量统计
|
||||
│ │ │ ├── ModelsAPI.tsx # 模型与 API
|
||||
│ │ │ ├── MCPServices.tsx # MCP 服务管理
|
||||
│ │ │ ├── Skills.tsx # 技能管理
|
||||
│ │ │ ├── IMChannels.tsx # IM 频道管理
|
||||
│ │ │ ├── Workspace.tsx # 工作区设置
|
||||
│ │ │ ├── Privacy.tsx # 数据与隐私
|
||||
│ │ │ └── About.tsx # 关于
|
||||
│ │ ├── store/
|
||||
│ │ │ ├── chatStore.ts # 聊天状态
|
||||
│ │ │ ├── gatewayStore.ts # Gateway 连接状态
|
||||
│ │ │ └── settingsStore.ts # 设置状态
|
||||
│ │ └── lib/
|
||||
│ │ ├── gateway-client.ts # WebSocket 客户端封装
|
||||
│ │ └── protocol.ts # Gateway 协议类型定义
|
||||
│ └── package.json
|
||||
│
|
||||
├── plugins/ # ZCLAW 自定义 OpenClaw 插件
|
||||
│ ├── zclaw-feishu/ # 飞书频道插件
|
||||
│ │ ├── index.ts
|
||||
│ │ ├── plugin.json # 插件清单
|
||||
│ │ └── README.md
|
||||
│ ├── zclaw-wechat/ # 微信频道插件
|
||||
│ │ ├── index.ts
|
||||
│ │ └── plugin.json
|
||||
│ ├── zclaw-qq/ # QQ 频道插件
|
||||
│ │ ├── index.ts
|
||||
│ │ └── plugin.json
|
||||
│ ├── zclaw-chinese-models/ # 中文模型 Provider 插件
|
||||
│ │ ├── index.ts
|
||||
│ │ ├── providers/
|
||||
│ │ │ ├── zhipu.ts # 智谱 GLM
|
||||
│ │ │ ├── qwen.ts # 通义千问
|
||||
│ │ │ ├── kimi.ts # Moonshot Kimi
|
||||
│ │ │ └── minimax.ts # MiniMax
|
||||
│ │ └── plugin.json
|
||||
│ └── zclaw-ui/ # UI 扩展 RPC 插件
|
||||
│ ├── index.ts
|
||||
│ └── plugin.json
|
||||
│
|
||||
├── skills/ # ZCLAW 自定义 Skills
|
||||
│ ├── chinese-writing/ # 中文写作技能
|
||||
│ │ └── SKILL.md
|
||||
│ ├── weibo-automation/ # 微博自动化技能
|
||||
│ │ └── SKILL.md
|
||||
│ └── feishu-docs/ # 飞书文档操作技能
|
||||
│ └── SKILL.md
|
||||
│
|
||||
├── config/ # ZCLAW 默认配置
|
||||
│ ├── openclaw.default.json # 预设的 OpenClaw 配置
|
||||
│ ├── SOUL.md # 默认人格
|
||||
│ ├── AGENTS.md # 默认 Agent 指令
|
||||
│ ├── IDENTITY.md # 默认身份
|
||||
│ └── USER.md # 默认用户配置
|
||||
│
|
||||
├── scripts/ # 构建/安装脚本
|
||||
│ ├── setup.ts # 首次设置脚本
|
||||
│ ├── install-openclaw.ts # OpenClaw 安装检测
|
||||
│ └── register-plugins.ts # 注册自定义插件
|
||||
│
|
||||
├── docs/
|
||||
│ ├── architecture-v2.md # 本文件
|
||||
│ ├── deviation-analysis.md # 偏离分析报告
|
||||
│ ├── DEVELOPMENT.md
|
||||
│ └── autoclaw界面/ # AutoClaw 参考截图
|
||||
│
|
||||
├── package.json # 根项目管理
|
||||
├── tsconfig.json
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、与 AutoClaw 功能对标
|
||||
|
||||
### AutoClaw 设置页面 → ZCLAW 实现方式
|
||||
|
||||
| AutoClaw 功能 | ZCLAW 实现 |
|
||||
|---|---|
|
||||
| **通用** (账号/主题/开机启动/工具调用显示) | Tauri 窗口设置 + Gateway config |
|
||||
| **用量统计** (会话/消息/Token 按模型分) | 读取 OpenClaw sessions JSONL + 统计 |
|
||||
| **积分详情** | 自定义积分系统 (可选) |
|
||||
| **模型与API** (内置+自定义模型+Gateway URL) | `openclaw config` + Provider Plugin |
|
||||
| **MCP 服务** (File System/Web Fetch/+添加) | 读取 OpenClaw MCP 配置 + UI 管理 |
|
||||
| **技能** (SKILL.md 管理/额外目录) | 读取 Skills 目录 + UI 管理 |
|
||||
| **IM 频道** (添加/管理/快速添加飞书) | Channel Plugin 配置 UI |
|
||||
| **工作区** (项目目录/文件限制/上下文保存/文件监听) | `agents.defaults.workspace` + sandbox 配置 |
|
||||
| **数据与隐私** (本地路径/优化计划) | OpenClaw 数据目录 + 隐私配置 |
|
||||
| **提交反馈** | 自定义反馈表单 |
|
||||
| **关于** (版本/更新) | 显示 ZCLAW + OpenClaw 版本 |
|
||||
|
||||
### AutoClaw 主界面 → ZCLAW 对标
|
||||
|
||||
| 功能 | 实现 |
|
||||
|---|---|
|
||||
| **左侧 - 分身 Tab** | 通过 `agents.list` 配置管理多个 Agent |
|
||||
| **左侧 - IM 频道 Tab** | 通过 `channels.*` 配置显示已连接频道 |
|
||||
| **左侧 - 定时任务 Tab** | 通过 heartbeat + cron 事件显示 |
|
||||
| **中间 - 聊天区域** | WebSocket 订阅 `agent` stream 事件 |
|
||||
| **中间 - 模型选择器** | 通过 `agents.defaults.models` 配置 |
|
||||
| **右侧 - 代码/文件面板** | 显示 Agent 工具调用结果 (file/bash output) |
|
||||
| **快速配置弹窗** | 修改 IDENTITY.md + SOUL.md + USER.md |
|
||||
|
||||
---
|
||||
|
||||
## 五、WebSocket 通信协议
|
||||
|
||||
ZCLAW Tauri 客户端通过标准 OpenClaw Gateway 协议通信:
|
||||
|
||||
### 连接握手
|
||||
```json
|
||||
// 1. 服务器发送 challenge
|
||||
{"type": "event", "event": "connect.challenge", "payload": {"nonce": "...", "ts": 1737264000000}}
|
||||
|
||||
// 2. 客户端发送 connect
|
||||
{"type": "req", "id": "1", "method": "connect", "params": {
|
||||
"minProtocol": 3, "maxProtocol": 3,
|
||||
"client": {"id": "zclaw-tauri", "version": "0.1.0", "platform": "windows", "mode": "operator"},
|
||||
"role": "operator",
|
||||
"scopes": ["operator.read", "operator.write"],
|
||||
"auth": {"token": "..."}
|
||||
}}
|
||||
|
||||
// 3. 服务器回复 hello-ok
|
||||
{"type": "res", "id": "1", "ok": true, "payload": {"type": "hello-ok", "protocol": 3}}
|
||||
```
|
||||
|
||||
### 核心 RPC 方法
|
||||
```
|
||||
agent → 发送消息给 Agent (触发 Agent Loop)
|
||||
agent.wait → 等待 Agent 运行完成
|
||||
send → 通过 IM 频道发送消息
|
||||
health → 健康检查
|
||||
status → 获取 Gateway 状态
|
||||
system-presence → 系统状态
|
||||
```
|
||||
|
||||
### 事件订阅
|
||||
```
|
||||
agent → Agent 流式输出 (assistant/tool/lifecycle)
|
||||
chat → 聊天消息
|
||||
presence → 在线状态
|
||||
health → 健康状态
|
||||
heartbeat → 心跳
|
||||
cron → 定时任务
|
||||
tick → 定时心跳
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、开发分期
|
||||
|
||||
### Phase 1: 基础连通 (当前优先)
|
||||
1. 安装 OpenClaw 并验证 Gateway 可运行
|
||||
2. 创建 Tauri 项目结构 (保留现有 desktop/)
|
||||
3. 实现 Gateway 子进程管理 (Rust sidecar)
|
||||
4. 实现 WebSocket 客户端连接
|
||||
5. 前端显示 Gateway 状态 + 基础聊天
|
||||
|
||||
### Phase 2: 自定义插件
|
||||
1. 实现 `@zclaw/chinese-models` Provider Plugin (智谱GLM/Qwen/Kimi)
|
||||
2. 实现 `@zclaw/feishu` Channel Plugin
|
||||
3. 注册插件到 OpenClaw Gateway
|
||||
|
||||
### Phase 3: 完整 UI
|
||||
1. 实现设置页面体系 (对标 AutoClaw 10 个页面)
|
||||
2. 实现分身管理 UI
|
||||
3. 实现 Skills 管理 UI
|
||||
4. 实现 MCP 服务管理 UI
|
||||
|
||||
### Phase 4: 高级功能
|
||||
1. 微信/QQ Channel Plugin
|
||||
2. 自定义 Skills 开发
|
||||
3. 工作区管理
|
||||
4. 打包发布
|
||||
|
||||
---
|
||||
|
||||
## 七、与之前代码的关系
|
||||
|
||||
### 可复用
|
||||
- `desktop/` 前端组件 (需大幅扩展)
|
||||
- `plugins/zclaw-chinese-models/` 可复用之前的 AI Provider 代码 (zhipu.ts/openai.ts)
|
||||
- `plugins/zclaw-feishu/` 可复用之前的飞书适配器代码
|
||||
|
||||
### 废弃
|
||||
- `src/core/remote-execution/` → OpenClaw 自带工具执行
|
||||
- `src/core/task-orchestration/` → OpenClaw Agent Loop 自带
|
||||
- `src/core/multi-agent/` → 改为 OpenClaw agents.list 多 Agent
|
||||
- `src/core/memory/` → OpenClaw Memory Plugin 自带
|
||||
- `src/core/proactive/` → OpenClaw Heartbeat Engine 自带
|
||||
- `src/im/gateway.ts` → OpenClaw Channel 系统自带
|
||||
- `src/app.ts` → OpenClaw Gateway 就是 app
|
||||
- `src/api/` → 通过 WebSocket + Tauri Commands 替代
|
||||
- `src/db/` → OpenClaw 自带 SQLite
|
||||
- `src/config/` → OpenClaw 配置系统替代
|
||||
|
||||
---
|
||||
|
||||
*本架构设计基于对 OpenClaw 官方文档 (docs.openclaw.ai) 的深度研究,
|
||||
参考 AutoClaw v0.2.12 的 13 张界面截图进行功能对标。*
|
||||
BIN
docs/autoclaw界面/1.png
Normal file
|
After Width: | Height: | Size: 528 KiB |
BIN
docs/autoclaw界面/10.png
Normal file
|
After Width: | Height: | Size: 529 KiB |
BIN
docs/autoclaw界面/11.png
Normal file
|
After Width: | Height: | Size: 587 KiB |
BIN
docs/autoclaw界面/12.png
Normal file
|
After Width: | Height: | Size: 312 KiB |
BIN
docs/autoclaw界面/13.png
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
docs/autoclaw界面/2.png
Normal file
|
After Width: | Height: | Size: 624 KiB |
BIN
docs/autoclaw界面/3.png
Normal file
|
After Width: | Height: | Size: 382 KiB |
BIN
docs/autoclaw界面/4.png
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
docs/autoclaw界面/5.png
Normal file
|
After Width: | Height: | Size: 441 KiB |
BIN
docs/autoclaw界面/6.png
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
docs/autoclaw界面/7.png
Normal file
|
After Width: | Height: | Size: 373 KiB |
BIN
docs/autoclaw界面/8.png
Normal file
|
After Width: | Height: | Size: 399 KiB |
BIN
docs/autoclaw界面/9.png
Normal file
|
After Width: | Height: | Size: 303 KiB |
310
docs/deviation-analysis.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# ZCLAW 偏离分析报告
|
||||
|
||||
**日期**: 2026-03-11
|
||||
**目的**: 对标 QClaw / AutoClaw / OpenClaw,分析当前项目是否偏离初衷
|
||||
|
||||
---
|
||||
|
||||
## 一、三大产品深度理解
|
||||
|
||||
### 1. OpenClaw — 开源核心 (GitHub 28万+ Stars)
|
||||
|
||||
OpenClaw 是一个**本地优先的 AI 代理平台**,不是简单的聊天机器人,而是一个能真正操控电脑执行任务的系统。
|
||||
|
||||
**核心架构:**
|
||||
|
||||
| 组件 | 说明 |
|
||||
|------|------|
|
||||
| **Gateway** | Node.js 进程,是整个系统的**核心控制面板**,管理 sessions、channels、tools、events |
|
||||
| **Channel Plugins** | IM 渠道适配器 — WhatsApp, Telegram, Slack, Discord, iMessage 等 10+ 种 |
|
||||
| **心跳引擎 (Heartbeat)** | 定期唤醒,检查 HEARTBEAT.md 任务清单,**主动**执行预定任务 |
|
||||
| **持久化身份** | SOUL.md(性格)、MEMORY.md(长期记忆)、AGENTS.md(角色配置) — **纯文本,Git 可控** |
|
||||
| **Skills 系统** | SKILL.md 文件 + 脚本,三级渐进式披露,100+ 预配置技能 |
|
||||
| **MCP 支持** | 模型上下文协议,JSON-RPC 2.0,扩展外部工具 (File System, Web Fetch, DB 等) |
|
||||
| **核心工具** | bash(命令行)、read/write(文件系统)、browser(浏览器控制) |
|
||||
| **插件体系** | Channel / Memory / Tool / Provider 四类插件 |
|
||||
| **存储** | 默认 SQLite,支持向量存储、知识图谱 |
|
||||
|
||||
**关键设计哲学:**
|
||||
- **本地优先**: 所有数据和执行都在本地
|
||||
- **透明可控**: 纯文本配置,用户能完全掌控 AI 的"大脑"
|
||||
- **执行而非建议**: 不是只出主意,而是真正动手做事
|
||||
- **自我进化**: Agent 可修改自身指令、改进工作流
|
||||
|
||||
---
|
||||
|
||||
### 2. QClaw — 腾讯产品化封装
|
||||
|
||||
QClaw **不是**腾讯从零重写的框架,而是**围绕 OpenClaw 做的一次产品化封装**。
|
||||
|
||||
**核心卖点:**
|
||||
- **一键安装**: 下载即用,无需配置环境
|
||||
- **微信 + QQ 双端接入**: 腾讯核心优势,在微信/QQ中直接对话指挥电脑
|
||||
- **内置国产模型**: Kimi, MiniMax, GLM, DeepSeek + 自定义模型
|
||||
- **5000+ Skills 生态**: ClawHub、GitHub 等丰富生态
|
||||
- **持续记忆**: 记住偏好和上下文
|
||||
- **本地部署**: 操控文件、浏览器、邮件
|
||||
|
||||
**使用场景:**
|
||||
- 远程操作电脑文件/网页
|
||||
- 社媒自动运营
|
||||
- GitHub 项目自动开发
|
||||
- 学术论文自动整理
|
||||
- 每日天气定时提醒
|
||||
|
||||
---
|
||||
|
||||
### 3. AutoClaw — 智谱 AutoGLM 定制版 (v0.2.12)
|
||||
|
||||
基于 OpenClaw 的智谱定制版,核心是**飞书集成**。
|
||||
|
||||
**从 13 张界面截图提取的完整功能架构:**
|
||||
|
||||
#### 主界面布局
|
||||
- **左侧栏 3 个 Tab**: 分身 / IM频道 / 定时任务
|
||||
- **中间**: 聊天区域 + 发送框 + 模型选择器 (glm-5)
|
||||
- **右侧**: 代码/文件区域 + Agent 面板
|
||||
|
||||
#### 设置系统 (10 个页面)
|
||||
| 页面 | 功能 |
|
||||
|------|------|
|
||||
| 通用 | 账号安全、主题(白色/Neon Noir)、开机自启、显示工具调用 |
|
||||
| 用量统计 | 会话数/消息数/总Token,按模型分类统计 |
|
||||
| 积分详情 | 积分总量、消耗/获得明细 |
|
||||
| **模型与API** | 内置模型(Pony-Alpha-2) + 自定义模型(glm-5/qwen3.5-plus/kimi-k2.5/MiniMax-M2.5) + **Gateway URL** (ws://127.0.0.1:18789) |
|
||||
| **MCP 服务** | File System / Web Fetch + 快速添加(Brave Search, SQLite) |
|
||||
| **技能** | SKILL.md 文件管理,额外技能目录 (~/.opencode/skills) |
|
||||
| **IM 频道** | 添加/管理频道,快速添加飞书 |
|
||||
| **工作区** | 项目目录、文件访问限制、自动保存上下文、文件监听、从OpenClaw迁移 |
|
||||
| 数据与隐私 | 本地数据路径、优化计划 |
|
||||
| 提交反馈 / 关于 | 反馈表单、版本信息 |
|
||||
|
||||
#### 核心概念
|
||||
- **分身 (Clone)**: 每个分身是独立的 Agent 实例,有自己的配置和对话历史
|
||||
- **快速配置**: 名字、角色、昵称、使用场景(编程/写作/产品/数据分析/设计/运维/研发/营销)
|
||||
- **Gateway WebSocket 连接**: ws://127.0.0.1:18789 — 这是 OpenClaw Gateway 的连接方式
|
||||
- **工作区**: 默认 ~/.openclaw-autoclaw/workspace,文件访问沙盒
|
||||
|
||||
---
|
||||
|
||||
## 二、当前 ZCLAW 项目现状
|
||||
|
||||
### 已有的代码 (37 文件, 2378 行)
|
||||
|
||||
| 模块 | 内容 |
|
||||
|------|------|
|
||||
| src/config/ | Zod 配置管理 |
|
||||
| src/utils/ | Logger + ID 生成器 |
|
||||
| src/db/ | SQLite Schema (8表) + BaseDAO |
|
||||
| src/core/ai/ | 智谱GLM + OpenAI Provider + AIManager |
|
||||
| src/core/multi-agent/ | MessageBus + BaseAgent + Planner/Executor/Combiner + Orchestrator |
|
||||
| src/core/remote-execution/ | 并发队列 + 任务管理 |
|
||||
| src/core/task-orchestration/ | 拓扑排序 + 计划执行 |
|
||||
| src/core/memory/ | 内存记忆 + 用户画像 |
|
||||
| src/core/proactive/ | node-cron 定时任务 |
|
||||
| src/im/ | IM Gateway + 飞书适配器 |
|
||||
| src/api/ | ZClawAPI for Tauri |
|
||||
| src/app.ts | ZClawApp 主类 |
|
||||
| desktop/ | Tauri + React 三栏布局 |
|
||||
|
||||
---
|
||||
|
||||
## 三、偏离分析 — 核心问题
|
||||
|
||||
### 🔴 严重偏离
|
||||
|
||||
#### 1. 架构根本性偏离 — 没有基于 OpenClaw
|
||||
|
||||
**问题**: 项目初衷是"学习 QClaw 跟 AutoClaw,打造结合 Tauri + OpenClaw 的系统",但当前代码**完全没有 OpenClaw 的影子**。
|
||||
|
||||
- OpenClaw 的核心是 **Gateway** (Node.js 进程 + WebSocket)
|
||||
- QClaw 和 AutoClaw 都是**围绕 OpenClaw 做封装**
|
||||
- 我们的 ZCLAW 却从零自己发明了一套架构 (RemoteExecutionEngine / TaskOrchestrator / AgentOrchestrator)
|
||||
- 这些自创系统**不是 OpenClaw 的概念**,等于在重造轮子
|
||||
|
||||
**应该**: 直接集成 OpenClaw Gateway,或至少学习其架构模式来构建
|
||||
|
||||
#### 2. Skills 系统完全缺失
|
||||
|
||||
**问题**: Skills 是 OpenClaw/QClaw/AutoClaw 的**核心扩展机制**。
|
||||
|
||||
- OpenClaw 有 100+ 预配置技能
|
||||
- QClaw 有 5000+ Skills 生态
|
||||
- AutoClaw 截图显示有完整的技能管理界面
|
||||
- Skills 基于 SKILL.md 文件,三级渐进式披露,解决 Token 成本
|
||||
- 我们的 `src/skills/` 目录是**空的**,完全没有实现
|
||||
|
||||
#### 3. MCP (模型上下文协议) 完全缺失
|
||||
|
||||
**问题**: MCP 是现代 AI Agent 的标准工具扩展协议。
|
||||
|
||||
- AutoClaw 内置: File System、Web Fetch,可快速添加 Brave Search、SQLite
|
||||
- OpenClaw 原生支持 MCP
|
||||
- 我们完全没有 MCP 支持
|
||||
|
||||
#### 4. 工具执行层是"假的"
|
||||
|
||||
**问题**: OpenClaw 能**真正**操控电脑 — 执行 Shell 命令、读写文件、控制浏览器。
|
||||
|
||||
- 我们的 BrowserAgent / FileAgent / TerminalAgent 实际上是**用 AI 模拟输出结果**
|
||||
- 没有任何真实的命令执行、文件操作或浏览器控制能力
|
||||
- 用户期望"操控电脑完成任务",我们只能"假装操作然后编结果"
|
||||
|
||||
---
|
||||
|
||||
### 🟡 方向偏离
|
||||
|
||||
#### 5. "多Agent协作" vs "分身(Clone)"概念错位
|
||||
|
||||
**问题**:
|
||||
- AutoClaw 的"分身"是**独立的 Agent 实例**,每个分身有自己的名字、角色、记忆、对话
|
||||
- 我们的"多 Agent"是面向**任务拆解**的 (Planner → Executor → Combiner)
|
||||
- 这是两种完全不同的概念
|
||||
|
||||
**AutoClaw 的分身**: 像是雇了多个助手,每个负责不同领域
|
||||
**我们的多 Agent**: 像是一个任务流水线,Planner 规划 → Executor 执行 → Combiner 汇总
|
||||
|
||||
#### 6. 持久化方式偏离
|
||||
|
||||
**问题**:
|
||||
- OpenClaw 用**纯文本文件**: SOUL.md, MEMORY.md, AGENTS.md — 透明、Git 可控
|
||||
- 我们用 SQLite 数据库表
|
||||
- 数据库不是错的,但缺少 OpenClaw 的**透明可控**理念
|
||||
- 用户无法像 Git 那样管理 AI 的"大脑"
|
||||
|
||||
#### 7. 心跳引擎缺失
|
||||
|
||||
**问题**:
|
||||
- OpenClaw 的核心特色是**心跳引擎** — 定期唤醒,检查 HEARTBEAT.md,主动执行任务
|
||||
- 这是"主动服务"的真正含义
|
||||
- 我们的 ProactiveServiceSystem 只是简单的 node-cron 定时器包装
|
||||
|
||||
#### 8. 工作区 (Workspace) 概念缺失
|
||||
|
||||
**问题**:
|
||||
- AutoClaw 有完整的工作区管理: 项目目录、文件访问沙盒、上下文自动保存、文件监听
|
||||
- 这是 Agent 安全执行的基础
|
||||
- 我们完全没有工作区概念
|
||||
|
||||
---
|
||||
|
||||
### 🟢 方向正确
|
||||
|
||||
| 功能 | 评价 |
|
||||
|------|------|
|
||||
| 左侧栏三个 Tab (分身/IM频道/定时任务) | ✅ 与 AutoClaw 布局一致 |
|
||||
| 多模型 Provider 支持 | ✅ 但需加 Gateway WebSocket 连接 |
|
||||
| IM 网关 + 飞书适配器 | ✅ 但应更像 OpenClaw Channel Plugin |
|
||||
| 定时任务 | ✅ 需升级为心跳引擎模式 |
|
||||
| SQLite 数据库 | ✅ OpenClaw 也用 SQLite,但需补充纯文本文件 |
|
||||
| Tauri 桌面应用 | ✅ 与目标一致 (QClaw用Electron, 我们用Tauri更好) |
|
||||
| 配置管理 (.env) | ✅ 需要但方向对 |
|
||||
|
||||
---
|
||||
|
||||
## 四、偏离程度评估
|
||||
|
||||
```
|
||||
整体偏离程度: ████████░░ 75%
|
||||
```
|
||||
|
||||
**核心原因**: 项目从**"基于 OpenClaw 做 Tauri 封装"**变成了**"从零自建 AI Agent 框架"**。
|
||||
|
||||
这就像是:
|
||||
- 目标是造一辆"基于丰田平台的改装车"
|
||||
- 实际上在从零造发动机、底盘和变速箱
|
||||
- 造出来的还跟丰田的规格不兼容
|
||||
|
||||
---
|
||||
|
||||
## 五、修正建议
|
||||
|
||||
### 方案 A: 直接集成 OpenClaw(推荐)
|
||||
|
||||
```
|
||||
OpenClaw Gateway (npm install openclaw)
|
||||
↕ WebSocket (ws://127.0.0.1:18789)
|
||||
Tauri Desktop App (我们的前端)
|
||||
↕ Tauri Commands
|
||||
React UI (学习 AutoClaw 的界面设计)
|
||||
```
|
||||
|
||||
**步骤:**
|
||||
1. 安装 OpenClaw 作为依赖(或子进程启动)
|
||||
2. 通过 WebSocket 连接 OpenClaw Gateway
|
||||
3. Tauri 前端做 UI 封装(学 AutoClaw 的设计)
|
||||
4. 添加自定义 Channel Plugin (微信/QQ/飞书)
|
||||
5. 添加自定义 Skills
|
||||
6. 添加 MCP 服务管理
|
||||
|
||||
**优点**: 直接获得 OpenClaw 的全部能力 (真实工具执行、Skills 生态、MCP 等)
|
||||
**缺点**: 学习成本,依赖外部项目
|
||||
|
||||
### 方案 B: 学习架构重构(折中)
|
||||
|
||||
保留 Tauri + 自己的后端,但按 OpenClaw 的架构模式重构:
|
||||
|
||||
1. **重构为 Gateway 模式**: 把我们的后端重构为 OpenClaw 风格的 Gateway
|
||||
2. **实现 Skills 系统**: SKILL.md 文件 + 渐进式披露
|
||||
3. **实现 MCP 支持**: JSON-RPC 2.0 工具扩展协议
|
||||
4. **实现真实工具**: bash 命令执行、文件读写、浏览器控制 (Playwright)
|
||||
5. **实现分身系统**: 每个分身 = 独立 Agent 实例 + 独立配置/记忆
|
||||
6. **实现心跳引擎**: HEARTBEAT.md + 定期检查 + 主动执行
|
||||
7. **实现工作区**: 项目沙盒 + 文件监听 + 上下文保存
|
||||
8. **补充纯文本持久化**: SOUL.md + MEMORY.md + AGENTS.md
|
||||
|
||||
**优点**: 深度学习理解架构,自主可控
|
||||
**缺点**: 工作量大,可能重复造轮子
|
||||
|
||||
### 方案 C: 混合方案(务实)
|
||||
|
||||
- OpenClaw 作为执行引擎(子进程运行或 WebSocket 连接)
|
||||
- Tauri 做桌面 UI 封装(仿 AutoClaw 界面)
|
||||
- 自己实现差异化功能(微信接入、中文 Skills、国产模型优化)
|
||||
|
||||
---
|
||||
|
||||
## 六、需要保留 vs 需要重写 vs 需要新建
|
||||
|
||||
### ✅ 保留
|
||||
- `src/config/` — 配置管理(调整 key 名称对标 OpenClaw)
|
||||
- `src/utils/` — Logger + ID 生成器
|
||||
- `src/db/` — SQLite 层(OpenClaw 也用 SQLite)
|
||||
- `src/core/ai/` — 多模型 Provider(补充 Gateway 连接方式)
|
||||
- `src/im/` — IM 网关(重构为 Channel Plugin 模式)
|
||||
- `desktop/` — Tauri 前端(大幅扩展界面)
|
||||
|
||||
### 🔄 重写
|
||||
- `src/core/multi-agent/` → 重构为**分身 (Clone) 系统**
|
||||
- `src/core/remote-execution/` → 重构为**真实工具执行层** (bash/file/browser)
|
||||
- `src/core/task-orchestration/` → 简化,交给 LLM 自主规划
|
||||
- `src/core/proactive/` → 重构为**心跳引擎**
|
||||
- `src/core/memory/` → 补充纯文本文件 (MEMORY.md)
|
||||
- `src/app.ts` → 重构为 **Gateway 模式**
|
||||
|
||||
### 🆕 新建
|
||||
- `src/skills/` — Skills 系统(SKILL.md 加载/解析/注册)
|
||||
- `src/mcp/` — MCP 协议支持
|
||||
- `src/tools/` — 真实工具执行 (bash, file, browser via Playwright)
|
||||
- `src/workspace/` — 工作区管理(沙盒、文件监听、上下文保存)
|
||||
- `src/gateway/` — WebSocket Gateway 服务
|
||||
- 前端设置页面(通用/用量统计/模型API/MCP/技能/IM/工作区/隐私)
|
||||
|
||||
---
|
||||
|
||||
## 七、结论
|
||||
|
||||
**当前项目已经严重偏离了"学习 QClaw/AutoClaw + 基于 OpenClaw"的初衷。**
|
||||
|
||||
核心问题不在于代码质量(代码是可以编译的),而在于**架构方向**:我们在自己发明一套 AI Agent 框架,而不是基于 OpenClaw 做 Tauri 封装。
|
||||
|
||||
建议选择方案后,优先做以下事情:
|
||||
1. 深入研究 OpenClaw 源码和 Gateway 架构
|
||||
2. 确定是直接集成还是学习重构
|
||||
3. 实现 Skills 系统和 MCP 支持
|
||||
4. 实现真实工具执行能力
|
||||
5. 按 AutoClaw 界面设计前端
|
||||
|
||||
---
|
||||
|
||||
*本报告基于 QClaw 官网、AutoClaw 官网 + 13张界面截图、OpenClaw GitHub + 技术文章的深度分析*
|
||||